The OPAM repository for the Coq packages. Activate:

opam repo add coq-released https://coq.inria.fr/opam/released

Go to get started to start using OPAM with Coq.

Name |
Description |

coq-aac-tactics | Coq plugin providing tactics for rewriting universally quantified equations, modulo associative (and possibly commutative) operators |

coq-abp | A verification of the alternating bit protocol expressed in CBS |

coq-addition-chains | Exponentiation algorithms following addition chains |

coq-additions | Addition Chains |

coq-ails | Proof of AILS algorithm |

coq-alea | Coq library for reasoning on randomized algorithms |

coq-algebra | Basics notions of algebra |

coq-algorand | A verified model of the Algorand consensus protocol in Coq |

coq-almost-full | Almost-full relations in Coq for proving termination |

coq-amm11262 | Problem 11262 of The American Mathematical Monthly |

coq-angles | Formalization of the oriented angles theory |

coq-antivalence | A Coq plugin to generate type-inequality axioms for inductive definitions |

coq-approx-models | Rigorous approximations with a posteriori verified operations |

coq-area-method | The Chou, Gao and Zhang area method |

coq-atbr | Coq library and tactic for deciding Kleene algebras |

coq-automata | Beginning of formal language theory |

coq-autosubst | Coq library for parallel de Bruijn substitutions |

coq-axiomatic-abp | Verification of an axiomatisation of the Alternating Bit Protocol |

coq-bbv | An implementation of bitvectors in Coq. |

coq-bdds | BDD algorithms and proofs in Coq, by reflection |

coq-bellantonicook | Deep embedding of Bellantoni and Cook's syntactic characterization of polytime functions |

coq-bertrand | Correctness of Knuth's algorithm for prime numbers |

coq-bignums | Bignums, the Coq library of arbitrary large numbers |

coq-bits | A bit vector library |

coq-buchberger | Verified implementation in Coq of Buchberger's algorithm for computing Gröbner bases |

coq-bytestring | A simple string library built around byte instead of Ascii |

coq-canon-bdds | Canonicity of Binary Decision Dags |

coq-cantor | On Ordinal Notations |

coq-cats-in-zfc | Category theory in ZFC |

coq-ccs | Equivalence notions on labelled transitions systems |

coq-cecoa | Implicit-complexity Coq library to prove that some programs are computable in polynomial time |

coq-ceramist | Coq library for reasoning about probabilistic algorithms |

coq-ceres | Library for serialization to S-expressions |

coq-cfgv | Generic Proofs about Alpha Equality and Substitution |

coq-cfml | A tool for proving OCaml programs in Separation Logic |

coq-chapar | A framework for verification of causal consistency for distributed key-value stores and their clients in Coq |

coq-charge-core | A framework of typeclasses for shallow embeddings of intuitionistic |

coq-checker | The Mutilated Checkerboard |

coq-chick-blog | A blog engine written and proven in Coq |

coq-chinese | A proof of the Chinese Remainder Lemma |

coq-circuits | Some proofs of hardware (adder, multiplier, memory block instruction) |

coq-classical-realizability | Krivine's classical realizability |

coq-coalgebras | Coalgebras, bisimulation and lambda-coiteration |

coq-coinduction | A library and plugin for doing proofs by (enhanced) coinduction |

coq-coinductive-examples | Some simple examples about co-inductive types and co-induction |

coq-coinductive-reals | Real numbers as coinductive ternary streams |

coq-color | A library on rewriting theory and termination |

coq-comp-dec-modal | Constructive proofs of soundness and completeness for K, K*, CTL, PDL, and PDL with converse |

coq-compcert | The CompCert C compiler (64 bit) |

coq-compcert-32 | The CompCert C compiler (32 bit) |

coq-compcert-64 | The CompCert C compiler (64 bit, using coq-platform supplied version of Flocq) |

coq-concat | Constructive Category Theory |

coq-concurrency-pluto | A web server written in Coq |

coq-concurrency-proxy | A proxy to interface concurrent Coq programs with the operating system |

coq-concurrency-system | Experimental library to write concurrent applications in Coq |

coq-constructive-geometry | Elements of Constructive Geometry |

coq-constructors | An example Coq plugin, defining a tactic to get the constructors of an inductive type in a list |

coq-containers | Containers: a typeclass-based library of finite sets/maps |

coq-continuations | A toolkit to reason with programs raising exceptions |

coq-coq-in-coq | A formalisation of the Calculus of Construction |

coq-coq2html | Generates HTML documentation from Coq source files. Alternative to coqdoc |

coq-coqeal | CoqEAL - The Coq Effective Algebra Library |

coq-coqeal-refinements | A refinement framework (for algebra) |

coq-coqeal-theory | The theory needed by the CoqEAL refinement framework library |

coq-coqffi | Tool for generating Coq FFI bindings to OCaml libraries |

coq-coqoban | Coqoban (Sokoban in Coq) |

coq-coqprime | Certifying prime numbers in Coq |

coq-coqrel | Binary logical relations library for the Coq proof assistant |

coq-coqtail | Library of mathematical theorems and tools proved inside the Coq |

coq-coquelicot | A Coq formalization of real analysis compatible with the standard library |

coq-corn | The Coq Constructive Repository at Nijmegen |

coq-counting | Counting: a Coq plugin for measuring definitions/proofs |

coq-cours-de-coq | Various examples of Coq proofs |

coq-ctltctl | Computation Tree Logic for Reactive Systems and Timed Computation Tree Logic for Real Time Systems |

coq-cunit | Convenience functions for unit testing in Coq |

coq-cybele | A Coq plugin for simpler proofs by reflection or OCaml certificates |

coq-dblib | Dblib |

coq-demos | Demos of some Coq tools appeared in version V6.0 |

coq-dep-map | Dependent Maps |

coq-deriving | Generic instances of MathComp classes |

coq-descente-infinie | The Descente Infinie Tactic |

coq-dictionaries | Dictionaries (with modules) |

coq-dijkstra | A Verified Implementation of Dijkstra's Algorithm |

coq-disel | Core framework files for Disel, a separation-style logic for compositional verification of distributed systems in Coq |

coq-disel-examples | Example systems for Disel, a separation-style logic for compositional verification of distributed systems in Coq |

coq-distributed-reference-counting | A Construction of Distributed Reference Counting |

coq-domain-theory | Elements of Domain Theory |

coq-dpdgraph | Compute dependencies between Coq objects (definitions, theorems) and produce graphs |

coq-elpi | Elpi extension language for Coq |

coq-equations | A function definition package for Coq |

coq-ergo | Ergo: a Coq plugin for reification of term with arbitrary signature |

coq-error-handlers | Simple and robust error handling functions |

coq-euclidean-geometry | Basis of the Euclid's plane geometry |

coq-euler-formula | Hypermaps, Genus Theorem and Euler Formula |

coq-exact-real-arithmetic | Exact Real Arithmetic |

coq-exceptions | Pro[gramm,v]ing with continuations:A development in Coq |

coq-ext-lib | A library of Coq definitions, theorems, and tactics |

coq-extensible-records | Definitional (canonical) extensible records in Coq with string keys and arbitrary (non-dependent) types |

coq-extructures | Finite sets, maps, and other data structures with extensional reasoning |

coq-fairisle | Proof of the Fairisle 4x4 Switch Element |

coq-fcsl-pcm | Partial Commutative Monoids |

coq-fermat4 | Diophantus' 20th Problem and Fermat's Last Theorem for n = 4 |

coq-finger-tree | Dependent Finger Trees |

coq-firing-squad | Firing Squad Synchronization Problem |

coq-float | Library for floating-point numbers |

coq-flocq | A formalization of floating-point arithmetic for the Coq system |

coq-flocq-quickchick | Flocq binary_float generators for QuickChick testing framework |

coq-founify | Correctness and extraction of the unification algorithm |

coq-fourcolor | Mechanization of the Four Color Theorem |

coq-fpmods | A short constructive formalization of finitely presented modules |

coq-free-groups | Free Groups |

coq-freespec-core | A framework for implementing and certifying impure computations in Coq |

coq-freespec-exec | A framework for implementing and certifying impure computations in Coq |

coq-freespec-ffi | A framework for implementing and certifying impure computations in Coq |

coq-fsets | Finite Sets overs Ordered Types |

coq-fssec-model | Formal verification of an extension of a UNIX compatible, secure filesystem |

coq-function-ninjas | Simple functional combinators |

coq-functional-algebra | This package provides a Coq formalization of abstract algebra using |

coq-functions-in-zfc | Functions in classical ZFC |

coq-fundamental-arithmetics | Fundamental theorems of arithmetic |

coq-gaia | Implementation of books from Bourbaki's Elements of Mathematics in Coq |

coq-games | A library for algorithmic game theory in Ssreflect/Coq |

coq-gappa | A Coq tactic for discharging goals about floating-point arithmetic and round-off errors using the Gappa prover |

coq-gc | Formal Verification of an Incremental Garbage Collector |

coq-generic-environments | Generic Environments is a library that provides an abstract data type for environments |

coq-geocoq | A formalization of foundations of geometry in Coq |

coq-geocoq-axioms | A formalization of foundations of geometry in Coq |

coq-geocoq-coinc | A formalization of foundations of geometry in Coq |

coq-geocoq-elements | A formalization of foundations of geometry in Coq |

coq-geocoq-main | A formalization of foundations of geometry in Coq |

coq-geocoq-pof | A formalization of foundations of geometry in Coq |

coq-geometric-algebra | Grassman Cayley and Clifford formalisations |

coq-giskard | Verified model of the Giskard consensus protocol in Coq |

coq-goedel | Coq proof of the Gödel-Rosser 1st incompleteness theorem |

coq-graph-basics | a Coq toolkit for graph theory |

coq-graph-theory | Graph theory results in Coq and MathComp |

coq-graphs | Satisfiability of inequality constraints and detection of cycles with negative weight in graphs |

coq-group-theory | Elements of Group Theory |

coq-groups | An exercise on groups |

coq-hammer | General-purpose automated reasoning hammer tool for Coq |

coq-hammer-tactics | Reconstruction tactics for the hammer for Coq |

coq-hardware | Verification and synthesis of hardware linear arithmetic structures |

coq-hedges | Some properties of hedges used by hedged bisimulation |

coq-hierarchy-builder | High level commands to declare and evolve a hierarchy based on packed classes |

coq-hierarchy-builder-shim | Shim package for HB |

coq-high-school-geometry | Geometry in Coq for French high school |

coq-higman-cf | A direct constructive proof of Higman's Lemma |

coq-higman-nw | A program from an A-translated impredicative proof of Higman's Lemma |

coq-higman-s | Higman's lemma on an unrestricted alphabet |

coq-historical-examples | Historical examples developed in the (pure) Calculus of Constructions |

coq-hoare-tut | A Tutorial on Reflecting in Coq the generation of Hoare proof obligations |

coq-hott | The Homotopy Type Theory library |

coq-http | HTTP in Coq |

coq-huffman | Coq proof of the correctness of the Huffman coding algorithm |

coq-hydra-battles | Exploration of some properties of Kirby and Paris' hydra battles, with the help of Coq |

coq-icharate | Icharate: A logical Toolkit for Multimodal Categorial Grammars |

coq-idxassoc | Associative Arrays |

coq-ieee754 | A formalisation of the IEEE754 norm on floating-point arithmetic |

coq-improper-integrals | Additions to the coquelicot library for handling improper integrals |

coq-infotheo | Discrete probabilities and information theory for Coq |

coq-int-map | Maps indexed by binary integers : IntMap |

coq-interval | A Coq tactic for proving bounds on real-valued expressions automatically |

coq-intuitionistic-nuprl | An Impredicative Model of Nuprl's Constructive Type Theory |

coq-io | A library for effects in Coq |

coq-io-evaluate | Generic functions to run effects |

coq-io-exception | Abstract your errors into exceptions |

coq-io-hello-world | A Hello World program in Coq |

coq-io-list | Generic functions on lists with effects |

coq-io-system | System effects for Coq |

coq-io-system-ocaml | Extraction to OCaml of system effects |

coq-ipc | Intuitionistic Propositional Checker |

coq-iris | Iris is a Higher-Order Concurrent Separation Logic Framework with support for interactive proofs |

coq-iris-heap-lang | HeapLang is the canonical example language for Iris |

coq-iris-string-ident | Add support for Gallina names in intro patterns to the Iris Proof Mode |

coq-itauto | 'itauto' is a reflexive SAT solver parameterised by a leaf tactic |

coq-iterable | Generic definition of iterators |

coq-itree | A Library for Representing Recursive and Impure Programs in Coq |

coq-itree-io | Run interaction trees in IO |

coq-izf | Intuitionistic Zermelo-Fraenkel Set Theory in Coq |

coq-jmlcoq | Coq definition of the JML specification language and a verified runtime assertion checker for JML |

coq-jordan-curve-theorem | Hypermaps, planarity and discrete Jordan curve theorem |

coq-jprover | A theorem prover for first-order intuitionistic logic |

coq-jsast | A minimal JavaScript syntax tree carved out of the JsCert project |

coq-karatsuba | Karatsuba's Multiplication |

coq-kildall | Application of the Generic kildall's Data Flow Analysis Algorithm to a Type and Shape Static Analyses of Bytecode |

coq-label | 'label' is a Coq plugin for referring to Propositional hypotheses by their type |

coq-lambda | Residual Theory in Lambda-Calculus |

coq-lambek | A Coq Toolkit for Lambek Calculus |

coq-lazy-pcf | Subject Reduction for Lazy-PCF |

coq-lc | Modules over monads and lambda-calculi |

coq-legacy-ring | The former implementation of the ring tactic |

coq-lemma-overloading | Libraries demonstrating design patterns for programming and proving with canonical structures in Coq |

coq-lens | Generation of lenses for record datatypes |

coq-lesniewski-mereology | Knowledge-based Dependently Typed Language (KDTL) |

coq-libhyps | Hypotheses manipulation library |

coq-library-undecidability | A Coq Library of Undecidability Proofs |

coq-libvalidsdp | LibValidSDP |

coq-lin-alg | Linear Algebra |

coq-list-plus | More functions on lists |

coq-list-string | Strings implemented as lists |

coq-ltac-iter | Access hint databases from tactics |

coq-ltac2 | A tactic language for Coq |

coq-ltl | Linear Temporal Logic |

coq-maple-mode | A Maple Mode for Coq |

coq-markov | Markov's inequality |

coq-math-classes | A library of abstract interfaces for mathematical structures in Coq |

coq-mathcomp-abel | Abel - Ruffini's theorem |

coq-mathcomp-algebra | Mathematical Components Library on Algebra |

coq-mathcomp-analysis | An analysis library for mathematical components |

coq-mathcomp-bigenough | A small library to do epsilon - N reasonning |

coq-mathcomp-character | Mathematical Components Library on character theory |

coq-mathcomp-dioid | Dioid |

coq-mathcomp-field | Mathematical Components Library on Fields |

coq-mathcomp-field-extra | Extra Mathematical Components Library on Fields |

coq-mathcomp-fingroup | Mathematical Components Library on finite groups |

coq-mathcomp-finmap | Finite sets, finite maps, finitely supported functions |

coq-mathcomp-multinomials | A Multivariate polynomial Library for the Mathematical Components Library |

coq-mathcomp-odd-order | The formal proof of the Feit-Thompson theorem |

coq-mathcomp-real-closed | Mathematical Components Library on real closed fields |

coq-mathcomp-solvable | Mathematical Components Library on finite groups (II) |

coq-mathcomp-ssreflect | Small Scale Reflection |

coq-mathcomp-sum-of-two-square | A proof of Fermat's theorem on sum of two squares. It is the proof that uses gaussian integers. This is done in ssreflect. It contains two file : |

coq-mathcomp-zify | Micromega tactics for Mathematical Components |

coq-maths | Basic mathematics |

coq-matrices | Ring properties for square matrices |

coq-menhirlib | A support library for verified Coq parsers produced by Menhir |

coq-metacoq | A meta-programming framework for Coq |

coq-metacoq-checker | Specification of Coq's type theory and reference checker implementation |

coq-metacoq-erasure | Implementation and verification of an erasure procedure for Coq |

coq-metacoq-pcuic | A type system equivalent to Coq's and its metatheory |

coq-metacoq-safechecker | Implementation and verification of safe conversion and typechecking algorithms for Coq |

coq-metacoq-template | A quoting and unquoting library for Coq in Coq |

coq-metacoq-translations | Translations built on top of MetaCoq |

coq-mi-cho-coq | A specification of Michelson in Coq to prove properties about smart contracts in Tezos |

coq-min-imports | This script will try to remove unnecessary module imports from Coq |

coq-mini-compiler | Correctness of a tiny compiler for arithmetic expressions |

coq-minic | Semantics of a subset of the C language |

coq-miniml | Correctness of the compilation of Mini-ML into the Categorical Abstract Machine |

coq-mirror-core | A framework for computational reflection |

coq-mod-red | Efficient Reduction of Large Integers by Small Moduli |

coq-moment | Parse, manipulate and pretty-print times and dates in Coq |

coq-monae | Monads and equational reasoning in Coq |

coq-msets-extra | Extensions of MSets for Efficient Execution |

coq-mtac | Typed Tactics for Coq 8.5 |

coq-mtac2 | Mtac2: Typed Tactics for Coq |

coq-multiplier | Proof of a multiplier circuit |

coq-mutual-exclusion | A certification of Peterson's algorithm for managing mutual exclusion |

coq-native | Package flag enabling coq's native-compiler flag |

coq-nfix | Nfix: a Coq extension for fixpoints on nested inductives |

coq-of-ocaml | Compile a subset of OCaml to Coq |

coq-ollibs | OL libraries |

coq-opam-website | Generation of a Coq website for OPAM: http://coq.io/opam/ |

coq-orb-stab | Finite orbit-stabilizer theorem |

coq-ordinal | Ordinal Numbers in Coq |

coq-ott | Auxiliary Coq library for Ott, a tool for writing definitions of programming languages and calculi |

coq-otway-rees | Otway-Rees cryptographic protocol |

coq-paco | Coq library implementing parameterized coinduction |

coq-paradoxes | Paradoxes in Set Theory and Type Theory |

coq-param-pi | Coding of a typed monadic pi-calculus using parameters for free names |

coq-paramcoq | Plugin for generating parametricity statements to perform refinement proofs |

coq-parsec | Monadic parser combinator library in Coq |

coq-pautomata | Parameterized automata |

coq-persistent-union-find | Persistent Union Find |

coq-pi-agm | Computing thousands or millions of digits of PI with arithmetic-geometric means |

coq-pi-calc | Pi-calculus in Coq |

coq-plouffe | A Coq formalization of Plouffe formula |

coq-plugin-utils | Utility functions for implementing Coq plugins, e.g. building natural |

coq-pocklington | Pocklington's criterion in Coq |

coq-poltac | A set of tactics to deal with inequalities in Coq over N, Z and R: |

coq-ppsimpl | Ppsimpl is a reflexive tactic for canonising (arithmetic) goals |

coq-presburger | Presburger's algorithm |

coq-prfx | Proof Reflection in Coq |

coq-printf | Implementation of sprintf for Coq |

coq-procrastination | A small library for collecting side conditions and deferring their proof |

coq-projective-geometry | Projective Geometry |

coq-propcalc | Propositional Calculus |

coq-prosa | A Foundation for Formally Proven Schedulability Analysis |

coq-pts | A formalisation of Pure Type Systems |

coq-ptsatr | PTSATR |

coq-ptsf | Explicit Convertibility Proofs in Pure Type Systems |

coq-qarith | A Library for Rational Numbers (QArith) |

coq-qarith-stern-brocot | Binary rational numbers |

coq-qcert | Verified compiler for data-centric languages |

coq-quickchick | Randomized Property-Based Testing Plugin for Coq |

coq-quicksort-complexity | Proofs of Quicksort's worst- and average-case complexity |

coq-railroad-crossing | The Railroad Crossing Example |

coq-ramsey | Ramsey Theory |

coq-random | Interpretation of random programs |

coq-rational | A definition of rational numbers |

coq-record-update | Generic support for updating record fields in Coq |

coq-recursive-definition | ML-like recursive definitions |

coq-reduction-effects | A Coq plugin to add reduction side effects to some Coq reduction strategies |

coq-reflexive-first-order | Reflexive first-order proof interpreter |

coq-regexp | Regular Expression |

coq-reglang | Representations of regular languages (i.e., regexps, various types of automata, and WS1S) with equivalence proofs, in Coq and MathComp |

coq-relation-algebra | Relation Algebra and KAT in Coq |

coq-relation-extraction | Functions extraction from inductive relations |

coq-rem | Rem Theorem in Baire space |

coq-robot | Formal Foundations for Modeling Robot Manipulators |

coq-rsa | Correctness of RSA algorithm |

coq-ruler-compass-geometry | Ruler and compass geometry axiomatization |

coq-scev | Proofs and simplification lemmas of an algebraic theory of recurrences |

coq-schroeder | The Theorem of Schroeder-Bernstein |

coq-search-trees | Binary Search Trees |

coq-semantics | A survey of semantics styles, from natural semantics through structural operational, axiomatic, and denotational semantics, to abstract interpretation |

coq-serapi | Serialization library and protocol for machine interaction with the Coq proof assistant |

coq-shell | Simplified OPAM shell for Coq |

coq-shuffle | Gilbreath's card trick |

coq-simple-io | IO monad for Coq |

coq-smc | BDD based symbolic model checker for the modal mu-calculus |

coq-smpl | Smpl: An Extensible Tactic for Coq |

coq-smt-check | Invoke SMT solvers to check goals |

coq-square-matrices | From Fast Exponentiation to Square Matrices |

coq-squiggle-eq | An abstract formalization of variable bindings (both named and de-bruijn), |

coq-ssreflect | The Small Scale Reflection extension |

coq-stalmarck | Correctness proof of Stålmarck's algorithm in Coq |

coq-stalmarck-tactic | Coq tactic and verified tool for proving tautologies using Stålmarck's algorithm |

coq-stdpp | std++ is an extended "Standard Library" for Coq |

coq-streams | Specification of Eratosthene Sieve |

coq-string | Definition of strings in Coq |

coq-subst | The confluence of Hardin-Lévy lambda-sigma-lift-calcul |

coq-sudoku | A certified Sudoku solver |

coq-sum-of-two-square | Numbers equal to the sum of two square numbers |

coq-switch | A plugin to implement functionality similar to `switch` statement in C language |

coq-tactician | Tactician: A Seamless, Interactive Tactic Learner and Prover for Coq |

coq-tactician-dummy | A dummy implementation of Tactician |

coq-tactician-stdlib | Recompiles Coq's standard libary with Tactician's instrumentation loaded |

coq-tait | A normalization proof a la Tait for simply-typed lambda-calculus |

coq-tarski-geometry | Tarski's geometry |

coq-template-coq | A quoting and unquoting library for Coq in Coq |

coq-three-gap | A Proof of the Three Gap Theorem (Steinhaus Conjecture) |

coq-tlc | TLC: A Library for Classical Coq |

coq-topology | General topology in Coq |

coq-tortoise-hare-algorithm | Tortoise and the hare algorithm |

coq-traversable-fincontainer | Traversable Functors are Finitary Containers |

coq-tree-automata | Tree automatas |

coq-tree-calculus | A Coq library for tree calculus |

coq-tree-diameter | Diameter of a binary tree |

coq-type-infer | A formal verification of algorithm W |

coq-typing-flags | A Coq plugin to disable positivity check, guard check and termination check |

coq-unicoq | An enhanced unification algorithm for Coq |

coq-unimath | Library of Univalent Mathematics |

coq-unimath-category-theory | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-unimath-dedekind | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-unimath-foundations | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-unimath-ktheory | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-unimath-substitution-systems | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-unimath-tactics | Aims to formalize a substantial body of mathematics using the univalent point of view |

coq-universe-comparator | A tool to compare universe levels in Coq |

coq-validsdp | ValidSDP |

coq-void | MathComp instances for the empty type (Empty_set) |

coq-vst | Verified Software Toolchain |

coq-vst-32 | Verified Software Toolchain |

coq-vst-64 | Verified Software Toolchain |

coq-waterproof | Waterproof library |

coq-weak-up-to | New Up-to Techniques for Weak Bisimulation |

coq-yalla | Yalla library |

coq-zchinese | A proof of the Chinese Remainder Lemma |

coq-zf | An axiomatisation of intuitionistic Zermelo-Fraenkel set theory |

coq-zfc | An encoding of Zermelo-Fraenkel Set Theory in Coq |

coq-zorns-lemma | This library develops some basic set theory in Coq |

coq-zsearch-trees | Binary Search Trees |