Included Books
other
(in-package "ACL2")
include-book
(include-book "std/util/define" :dir :system)
include-book
(include-book "std/util/defaggrify-defrec" :dir :system)
other
(defaggrify-defrec rewrite-rule)
other
(define drw-get-rules ((fn symbolp) (world plist-worldp)) :returns rules (fgetprop fn 'lemmas nil world))
in-theory
(in-theory (disable rewrite-rule->rune rewrite-rule->nume rewrite-rule->hyps rewrite-rule->lhs rewrite-rule->rhs rewrite-rule->equiv rewrite-rule->subclass rewrite-rule->heuristic-info))
make-rewrite-rulemacro
(defmacro make-rewrite-rule (&key rune nume hyps equiv lhs rhs subclass heuristic-info backchain-limit-lst var-info match-free) `(make-rewrite-rule-fn ,RUNE ,NUME ,HYPS ,EQUIV ,LHS ,RHS ,SUBCLASS ,HEURISTIC-INFO ,BACKCHAIN-LIMIT-LST ,VAR-INFO ,MATCH-FREE))
other
(define make-rewrite-rule-fn
(rune nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free)
:inline t
(make rewrite-rule
:rune rune
:nume nume
:hyps hyps
:equiv equiv
:lhs lhs
:rhs rhs
:subclass subclass
:heuristic-info heuristic-info
:backchain-limit-lst backchain-limit-lst
:var-info var-info
:match-free match-free)
///
(defthm weak-rewrite-rule-p-of-make-rewrite-rule-fn
(weak-rewrite-rule-p (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free)))
(defthm rewrite-rule->hyps-of-make-rewrite-rule-fn
(equal (rewrite-rule->hyps (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
hyps)
:hints (("Goal" :in-theory (enable rewrite-rule->hyps))))
(defthm rewrite-rule->lhs-of-make-rewrite-rule-fn
(equal (rewrite-rule->lhs (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
lhs)
:hints (("Goal" :in-theory (enable rewrite-rule->lhs))))
(defthm rewrite-rule->rhs-of-make-rewrite-rule-fn
(equal (rewrite-rule->rhs (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
rhs)
:hints (("Goal" :in-theory (enable rewrite-rule->rhs))))
(defthm rewrite-rule->equiv-of-make-rewrite-rule-fn
(equal (rewrite-rule->equiv (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
equiv)
:hints (("Goal" :in-theory (enable rewrite-rule->equiv))))
(defthm rewrite-rule->subclass-of-make-rewrite-rule-fn
(equal (rewrite-rule->subclass (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
subclass)
:hints (("Goal" :in-theory (enable rewrite-rule->subclass))))
(defthm rewrite-rule->heuristic-info-of-make-rewrite-rule-fn
(equal (rewrite-rule->heuristic-info (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
heuristic-info)
:hints (("Goal" :in-theory (enable rewrite-rule->heuristic-info))))
(defthm rewrite-rule->rune-of-make-rewrite-rule-fn
(equal (rewrite-rule->rune (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
rune)
:hints (("Goal" :in-theory (enable rewrite-rule->rune))))
(defthm rewrite-rule->nume-of-make-rewrite-rule-fn
(equal (rewrite-rule->nume (make-rewrite-rule-fn rune
nume
hyps
equiv
lhs
rhs
subclass
heuristic-info
backchain-limit-lst
var-info
match-free))
nume)
:hints (("Goal" :in-theory (enable rewrite-rule->nume)))))