• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
      • Ipasir
      • Aignet
      • Aig
      • Satlink
      • Truth
      • Ubdds
      • Bdd
      • Faig
      • Bed
      • 4v
        • 4v-sexprs
          • 4v-sexpr-vars
          • 4v-sexpr-eval
          • 4v-sexpr-to-faig
          • 4v-sexpr-restrict-with-rw
          • 4vs-constructors
          • 4v-sexpr-compose-with-rw
          • 4v-sexpr-restrict
          • 4v-sexpr-alist-extract
          • 4v-sexpr-compose
          • 4v-nsexpr-p
          • 4v-sexpr-purebool-p
          • 4v-sexpr-<=
          • Sfaig
          • Sexpr-equivs
          • 3v-syntax-sexprp
          • Sexpr-rewriting
          • 4v-sexpr-ind
          • 4v-alist-extract
          • 4v-monotonicity
          • 4v-operations
          • Why-4v-logic
          • 4v-<=
          • 4vp
          • 4vcases
          • 4v-fix
          • 4v-lookup
      • Projects
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • 4v-sexprs

    4v-alist-extract

    Gather up a sub-alist from some 4v environment.

    Definitions and Theorems

    Function: 4v-alist-extract

    (defun 4v-alist-extract (keys al)
           (declare (xargs :guard t))
           (if (atom keys)
               nil
               (cons (cons (car keys)
                           (4v-lookup (car keys) al))
                     (4v-alist-extract (cdr keys) al))))

    Theorem: alist-keys-4v-alist-extract

    (defthm alist-keys-4v-alist-extract
            (equal (alist-keys (4v-alist-extract keys alist))
                   (append keys nil)))

    Theorem: hons-assoc-equal-4v-alist-extract

    (defthm
         hons-assoc-equal-4v-alist-extract
         (equal (hons-assoc-equal key (4v-alist-extract keys al))
                (and (member-equal key keys)
                     (cons key
                           (4v-fix (cdr (hons-assoc-equal key al)))))))

    Theorem: set-equiv-implies-key-and-env-equiv-4v-alist-extract-1

    (defthm
         set-equiv-implies-key-and-env-equiv-4v-alist-extract-1
         (implies (set-equiv keys keys-equiv)
                  (key-and-env-equiv (4v-alist-extract keys al)
                                     (4v-alist-extract keys-equiv al)))
         :rule-classes (:congruence))