• 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
        • Defun
        • Verify-guards
        • Table
        • Memoize
        • Make-event
        • Include-book
        • Encapsulate
        • Defun-sk
        • Defttag
        • Defpkg
        • Mutual-recursion
        • Defattach
        • Defstobj
        • Defchoose
        • Progn
        • Defabsstobj
        • Verify-termination
        • Redundant-events
        • Defmacro
        • In-theory
        • Embedded-event-form
        • Defconst
        • Skip-proofs
        • Value-triple
        • Comp
        • Local
        • Defthm
        • Progn!
        • Defevaluator
        • Theory-invariant
        • Assert-event
        • Defun-inline
        • Project-dir-alist
        • Define-trusted-clause-processor
        • Partial-encapsulate
        • Defproxy
        • Defexec
        • Defun-nx
        • Defthmg
        • Defpun
        • Defabbrev
        • Add-custom-keyword-hint
        • Defrec
        • Name
        • Regenerate-tau-database
        • Deftheory
        • Deftheory-static
        • Defcong
        • Defaxiom
        • Defund
        • Evisc-table
        • Verify-guards+
        • Logical-name
        • Profile
        • Defequiv
        • Defmacro-untouchable
        • Defthmr
        • Defstub
        • Deflabel
        • Defrefinement
          • In-arithmetic-theory
          • Defabsstobj-missing-events
          • Defthmd
          • Set-body
          • Unmemoize
          • Defun-notinline
          • Dump-events
          • Defund-nx
          • Defun$
          • Remove-custom-keyword-hint
          • Dft
          • Defthy
          • Defund-notinline
          • Defnd
          • Defn
          • Defund-inline
          • Defmacro-last
        • History
        • Parallelism
        • Programming
        • Start-here
        • Real
        • Debugging
        • Miscellaneous
        • Output-controls
        • Macros
        • Interfacing-tools
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Events

    Defrefinement

    Prove that equiv1 refines equiv2

    Example:
    (defrefinement equiv1 equiv2)
    
    is an abbreviation for
    (defthm equiv1-refines-equiv2
      (implies (equiv1 x y) (equiv2 x y))
      :rule-classes (:refinement))

    See refinement.

    General Form:
    (defrefinement equiv1 equiv2
      :package package
      :event-name event-name
      :rule-classes rule-classes
      :instructions instructions
      :hints hints
      :otf-flg otf-flg)

    where equiv1 and equiv2 are known equivalence relations; package, if supplied, is one of :current, :equiv1, :equiv2 or :legacy; event-name, if supplied, is a symbol; and all other arguments are as specified in the documentation for defthm. The defrefinement macro expands into a call of defthm. The name of the defthm event is equiv1-refines-equiv2, unless an :event-name keyword argument is supplied, in which case event-name is used as the name. The package of symbols generated, such as variables and defthm names, is determined by the package argument: if it is not supplied or its value is :current, then the current-package is used; if its value is :equiv1 or :legacy, then the package of :equiv1 is used; if its value is :equiv2, then the package of :equiv2 is used. The rule-class :refinement is added to the rule-classes specified, if it is not already there. All other arguments to the generated defthm form are as specified by the other keyword arguments above. The term generated for the defthm event states that equiv1 refines equiv2.