• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
      • Std/lists
      • Std/alists
      • Obags
      • Std/util
      • Std/strings
      • Std/osets
        • Omaps
          • Defomap
          • Update
          • Mapp
          • Assoc
          • Update*
          • Size
          • Keys
          • From-lists
          • Update-induction-on-maps
          • Compatiblep
          • Tail
          • Head
          • Restrict
          • Submap
          • Map
            • Rlookup
            • Emptyp
            • Rlookup*
            • Lookup*
            • Delete*
            • Values
            • In*
            • Lookup
            • Delete
            • Mfix
            • Head-val
            • Head-key
            • Omap-induction2
            • Omap-order-rules
          • All-by-membership
          • Defset
          • In
          • Primitives
          • Subset
          • Mergesort
          • Intersect
          • Union
          • Pick-a-point-subset-strategy
          • Delete
          • Double-containment
          • Difference
          • Cardinality
          • Set
          • Intersectp
        • Std/io
        • Std/basic
        • Std/system
        • Std/typed-lists
        • Std/bitsets
        • Std/testing
        • Std/typed-alists
        • Std/stobjs
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Fty-extensions
    • Specific-types
    • Omaps

    Map

    A fixtype of omaps.

    This is similar to the fixtype set::set of osets.

    Definitions and Theorems

    Function: mequiv$inline

    (defun mequiv$inline (acl2::x acl2::y)
      (declare (xargs :guard (and (mapp acl2::x) (mapp acl2::y))))
      (equal (mfix acl2::x) (mfix acl2::y)))

    Theorem: mequiv-is-an-equivalence

    (defthm mequiv-is-an-equivalence
      (and (booleanp (mequiv x y))
           (mequiv x x)
           (implies (mequiv x y) (mequiv y x))
           (implies (and (mequiv x y) (mequiv y z))
                    (mequiv x z)))
      :rule-classes (:equivalence))

    Theorem: mequiv-implies-equal-mfix-1

    (defthm mequiv-implies-equal-mfix-1
      (implies (mequiv acl2::x x-equiv)
               (equal (mfix acl2::x) (mfix x-equiv)))
      :rule-classes (:congruence))

    Theorem: mfix-under-mequiv

    (defthm mfix-under-mequiv
      (mequiv (mfix acl2::x) acl2::x)
      :rule-classes (:rewrite :rewrite-quoted-constant))

    Theorem: equal-of-mfix-1-forward-to-mequiv

    (defthm equal-of-mfix-1-forward-to-mequiv
      (implies (equal (mfix acl2::x) acl2::y)
               (mequiv acl2::x acl2::y))
      :rule-classes :forward-chaining)

    Theorem: equal-of-mfix-2-forward-to-mequiv

    (defthm equal-of-mfix-2-forward-to-mequiv
      (implies (equal acl2::x (mfix acl2::y))
               (mequiv acl2::x acl2::y))
      :rule-classes :forward-chaining)

    Theorem: mequiv-of-mfix-1-forward

    (defthm mequiv-of-mfix-1-forward
      (implies (mequiv (mfix acl2::x) acl2::y)
               (mequiv acl2::x acl2::y))
      :rule-classes :forward-chaining)

    Theorem: mequiv-of-mfix-2-forward

    (defthm mequiv-of-mfix-2-forward
      (implies (mequiv acl2::x (mfix acl2::y))
               (mequiv acl2::x acl2::y))
      :rule-classes :forward-chaining)