• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
      • Std/lists
      • Std/alists
        • Alist-keys
        • Remove-assocs
        • Alist-vals
        • Alist-map-vals
        • Std/alists/strip-cdrs
        • Hons-rassoc-equal
        • Alist-map-keys
          • Alist-map-keys-functions-and-macros
            • Alist-map-keys-theorems
          • Std/alists/hons-assoc-equal
          • Fal-extract
          • Std/alists/strip-cars
          • Fal-find-any
          • Fal-extract-vals
          • Std/alists/abstract
          • Fal-all-boundp
          • Std/alists/alistp
          • Append-alist-vals
          • Append-alist-keys
          • Alist-equiv
          • Hons-remove-assoc
          • Std/alists/pairlis$
          • Alists-agree
          • Worth-hashing
          • Sub-alistp
          • Alist-fix
          • Std/alists/remove-assoc-equal
          • Std/alists/assoc-equal
        • Obags
        • Std/util
        • Std/strings
        • Std/io
        • Std/osets
        • Std/system
        • Std/basic
        • Std/typed-lists
        • Std/bitsets
        • Std/testing
        • Std/typed-alists
        • Std/stobjs
        • Std-extensions
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Alist-map-keys

    Alist-map-keys-functions-and-macros

    Definitions of the alist-map-keys functions and macros, and basic theorems about them.

    Definitions and Theorems

    Function: alist-map-keys-equal

    (defun
     alist-map-keys-equal (alist)
     (declare (xargs :guard (alistp alist)))
     (cond ((endp alist) nil)
           (t (let ((key (caar alist)))
                   (cons key
                         (alist-map-keys-equal
                              (remove-assoc-equal key (cdr alist))))))))

    Function: alist-map-keys-eq-exec$guard-check

    (defun alist-map-keys-eq-exec$guard-check
           (alist)
           (declare (xargs :guard (symbol-alistp alist)))
           (declare (ignore alist))
           t)

    Function: alist-map-keys-eq-exec

    (defun
     alist-map-keys-eq-exec (alist)
     (declare (xargs :guard (symbol-alistp alist)))
     (cond
      ((endp alist) nil)
      (t
       (let
        ((key (caar alist)))
        (cons
         key
         (alist-map-keys-eq-exec (remove-assoc-eq key (cdr alist))))))))

    Function: alist-map-keys-eql-exec$guard-check

    (defun alist-map-keys-eql-exec$guard-check
           (alist)
           (declare (xargs :guard (eqlable-alistp alist)))
           (declare (ignore alist))
           t)

    Function: alist-map-keys-eql-exec

    (defun
     alist-map-keys-eql-exec (alist)
     (declare (xargs :guard (eqlable-alistp alist)))
     (cond
        ((endp alist) nil)
        (t (let ((key (caar alist)))
                (cons key
                      (alist-map-keys-eql-exec
                           (remove-assoc-eql-exec key (cdr alist))))))))

    Theorem: alist-map-keys-eq-exec-is-alist-map-keys-equal

    (defthm alist-map-keys-eq-exec-is-alist-map-keys-equal
            (equal (alist-map-keys-eq-exec alist)
                   (alist-map-keys-equal alist)))

    Theorem: alist-map-keys-eql-exec-is-alist-map-keys-equal

    (defthm alist-map-keys-eql-exec-is-alist-map-keys-equal
            (equal (alist-map-keys-eql-exec alist)
                   (alist-map-keys-equal alist)))