Filtering...

aig-equivs

books/centaur/aig/aig-equivs

Included Books

other
(in-package "ACL2")
include-book
(include-book "aig-base")
include-book
(include-book "centaur/misc/witness-cp" :dir :system)
include-book
(include-book "centaur/misc/universal-equiv" :dir :system)
include-book
(include-book "centaur/misc/fast-alists" :dir :system)
other
(set-verify-guards-eagerness 0)
other
(def-universal-equiv aig-equiv
  :qvars env
  :equiv-terms ((equal (aig-eval x env)))
  :defquant t
  :witness-dcls ((declare (xargs :guard t)))
  :parents (aig-semantics)
  :short "We say the AIGs @('X') and @('Y') are equivalent when they always
evaluate to the same value, per @(see aig-eval).")
other
(verify-guards aig-equiv)
other
(def-universal-equiv aig-alist-equiv
  :qvars k
  :equiv-terms ((iff (hons-assoc-equal k x)) (aig-equiv (cdr (hons-assoc-equal k x))))
  :defquant t
  :witness-dcls ((declare (xargs :guard t)))
  :parents (aig-semantics)
  :short "We say the AIG Alists @('X') and @('Y') are equivalent when they bind
the same keys to equivalent AIGs, in the sense of @(see aig-equiv).")
other
(verify-guards aig-alist-equiv)
other
(defsection aig-alist-equiv-thms
  :extension aig-alist-equiv
  (defrefinement alist-equiv
    aig-alist-equiv
    :hints ((witness))))
other
(def-universal-equiv aig-env-equiv
  :qvars key
  :equiv-terms ((iff (aig-env-lookup key x)))
  :defquant t
  :witness-dcls ((declare (xargs :guard t)))
  :parents (aig-semantics)
  :short "We say the environments @('X') and @('Y') are equivalent when they
give equivalent values to variables looked up with @(see aig-env-lookup).")
other
(verify-guards aig-env-equiv)
other
(defsection aig-env-equiv-thms
  :extension aig-env-equiv
  (defcong aig-env-equiv
    equal
    (aig-env-lookup key x)
    2
    :hints (("goal" :cases ((aig-env-lookup key x))
       :use ((:instance aig-env-equiv-necc (y x-equiv))))))
  (defrefinement alist-equiv aig-env-equiv :hints ((witness))))