Prove that two items (DAGs or terms) are equivalent for all values of all of their variables.
(prove-equivalence dag-or-term1 dag-or-term2 &key :assumptions ; default nil :types ; default nil :tactic ; default :rewrite-and-sweep :tests ; default 100 :print ; default :brief :name ; default :auto :debug ; default nil :max-conflicts ; default :auto :extra-rules ; default nil :initial-rule-sets ; default :auto :monitor ; default nil :use-context-when-miteringp ; default nil :normalize-xors ; default t :interpreted-function-alist ; default nil :check-vars ; default t :prove-theorem ; default nil :local ; default t )
The first DAG or term to compare
The second DAG or term to compare
Assumptions to use when proving equivalence, a list of terms (not necessarily translated)
A test-case-type-alist (alist mapping variables to their test-case-types), or one of the special values :bits or :bytes.
Proof tactic to use for the proof (either :rewrite or :rewrite-and-sweep)
How many tests to use to find internal equivalences (a natp)
Print verbosity (allows nil, :brief, t, and :verbose)
A name to assign to the equivalence term, if desired
Whether to leave temp files in place, for debugging
Initial value of STP max-conflicts (number of conflicts), or :auto (meaning use the default of 60000), or nil (meaning no maximum).
The names of extra rules to use when simplifying (a symbol list)
Sequence of rule-sets to apply initially to simplify the miter (:auto means used phased-bv-axe-rule-sets)
Rule names (symbols) to monitor when rewriting
Whether to use over-arching context when rewriting nodes (causes memoization to be turned off)
Whether to normalize XOR nests when simplifying
Provides definitions for non-built-in functions
Whether to check that the two DAGs/terms have exactly the same vars
Whether to produce an ACL2 theorem stating the equivalence (using skip-proofs, currently)
whether to make the generated events local
If the call to
Usually, the two items (DAGs or terms) have the same set of free variables.
See also prove-equiality, for a variant that supports more exotic options.