• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
      • Std/lists
      • Std/alists
      • 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
        • Stobj-updater-independence
          • Range-equal
          • Def-updater-independence-thm
          • Def-1d-arr
          • Defstobj-clone
          • Def-2d-arr
          • Defabsstobj-events
          • Bitarr
          • Natarr
        • Std-extensions
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Stobj-updater-independence

    Def-updater-independence-thm

    Prove an updater independence theorem, as discussed in stobj-updater-independence.

    This just adds the appropriate bind-free form to your theorem, which should use the variables new and old (from the ACL2 package). For example:

    (def-updater-independence-thm access-3rd-updater-independence
      (implies (equal (nth 3 new) (nth 3 old))
               (equal (access-3rd new) (access-3rd old)))
      :hints(("Goal" :in-theory (enable access-3rd))))

    Note new should appear in the LHS and old should not.