• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
      • Theories
      • Rule-classes
      • Proof-builder
      • Hons-and-memoization
      • Events
      • History
      • Parallelism
      • Programming
      • Start-here
      • Real
      • Debugging
      • Miscellaneous
      • Output-controls
      • Macros
        • Make-event
        • Defmacro
        • Untranslate-patterns
        • Tc
        • Macro-aliases-table
        • Macro-args
        • Defabbrev
        • User-defined-functions-table
        • Untranslate-for-execution
          • Convert-subexpression-to-mv
          • Ute-term-p
          • Reincarnate-mvs
            • Reincarnate-mvs-list
          • Match-cons-nest
        • Trans
        • Add-macro-fn
        • Check-vars-not-free
        • Safe-mode
        • Macro-libraries
        • Defmacro-untouchable
        • Trans1
        • Set-duplicate-keys-action
        • Add-macro-alias
        • Magic-macroexpand
        • Defmacroq
        • Remove-macro-fn
        • Remove-macro-alias
        • Add-binop
        • Untrans-table
        • Trans!
        • Remove-binop
        • Tcp
        • Tca
      • Interfacing-tools
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Testing-utilities
    • Math
  • Untranslate-for-execution

Reincarnate-mvs

Try to convert translated MV forms back into their MV-LET/MV form.

Signature
(reincarnate-mvs x world) → (mv errmsg new-x)
Arguments
x — The term to try to untranslate.
    Guard (ute-term-p x).
world — The world, needed for stobjs-out lookups.
    Guard (plist-worldp world).
Returns
errmsg — NIL on success or an error msg on failure.
new-x — New version of x with MVs restored.
    Type (implies (ute-term-p x) (ute-term-p new-x)).

Theorem: return-type-of-reincarnate-mvs.new-x

(defthm return-type-of-reincarnate-mvs.new-x
        (b* (((mv ?errmsg ?new-x)
              (reincarnate-mvs x world)))
            (implies (ute-term-p x)
                     (ute-term-p new-x)))
        :rule-classes :rewrite)

Theorem: return-type-of-reincarnate-mvs-list.new-x

(defthm return-type-of-reincarnate-mvs-list.new-x
        (b* (((mv ?errmsg ?new-x)
              (reincarnate-mvs-list x world)))
            (and (implies (ute-termlist-p x)
                          (ute-termlist-p new-x))
                 (equal (len new-x) (len x))))
        :rule-classes :rewrite)

Subtopics

Reincarnate-mvs-list