• 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
        • 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
    • Std/alists

    Alist-fix

    Basic fixing function for "modern" alists that respects the behavior of hons-assoc-equal.

    Definitions and Theorems

    Function: alist-fix

    (defun alist-fix (x)
           (declare (xargs :guard t))
           (if (atom x)
               nil
               (if (consp (car x))
                   (cons (car x) (alist-fix (cdr x)))
                   (alist-fix (cdr x)))))

    Theorem: alistp-of-alist-fix

    (defthm alistp-of-alist-fix
            (alistp (alist-fix x)))

    Theorem: alist-fix-when-alistp

    (defthm alist-fix-when-alistp
            (implies (alistp x)
                     (equal (alist-fix x) x)))

    Theorem: hons-assoc-equal-of-alist-fix

    (defthm hons-assoc-equal-of-alist-fix
            (equal (hons-assoc-equal k (alist-fix x))
                   (hons-assoc-equal k x)))

    Theorem: alist-fix-of-cons

    (defthm alist-fix-of-cons
            (equal (alist-fix (cons a b))
                   (if (consp a)
                       (cons a (alist-fix b))
                       (alist-fix b))))

    Theorem: alist-fix-of-atom

    (defthm alist-fix-of-atom
            (implies (not (consp x))
                     (equal (alist-fix x) nil))
            :rule-classes ((:rewrite :backchain-limit-lst 0)))