• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
          • Implementation
            • Jenkins-hash
            • Binary-tree
            • Tree-split
            • Heap<
            • Tree-join
            • Tree-delete
            • Rotations
            • Tree-insert
            • Tree-intersect
            • Tree-join-at
            • Tree-union
            • Hash
            • Tree-in
              • Tree-diff
              • Tree-nodes-count
            • Setp
            • Right
            • Left
            • Head
            • Double-containment
            • Subset
            • Intersect
            • Insert
            • In
            • Delete
            • Union
            • Diff
            • From-list
            • To-list
            • Set-equiv
            • Sfix
            • Pick-a-point
            • Cardinality
            • Set-induct
            • Set-bi-induct
            • Emptyp
          • Soft
          • C
          • Bv
          • Imp-language
          • Event-macros
          • Java
          • Bitcoin
          • Ethereum
          • Yul
          • Zcash
          • ACL2-programming-language
          • Prime-fields
          • Json
          • Syntheto
          • File-io-light
          • Cryptography
          • Number-theory
          • Lists-light
          • Axe
          • Builtins
          • Solidity
          • Helpers
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Axe
        • Execloader
      • Math
      • Testing-utilities
    • Implementation

    Tree-in

    Determine if a value appears in the tree.

    Signature
    (tree-in x tree) → *
    Arguments
    tree — Guard (binary-tree-p tree).

    No assumptions are made about the structure of the tree, so this search takes linear time. In practice, this function is only used as part of the logical definition of in (which is provided a more efficient implementation with mbe).

    Definitions and Theorems

    Function: tree-in

    (defun tree-in (x tree)
      (declare (xargs :guard (binary-tree-p tree)))
      (declare (xargs :type-prescription (booleanp (tree-in x tree))))
      (let ((__function__ 'tree-in))
        (declare (ignorable __function__))
        (and (not (tree-emptyp tree))
             (or (equal x (tree-head tree))
                 (tree-in x (tree-left tree))
                 (tree-in x (tree-right tree))))))