Included Books
other
(in-package "ACL2")
include-book
(include-book "defmapping")
include-book
(include-book "std/system/rune-disabledp" :dir :system)
include-book
(include-book "std/system/rune-enabledp" :dir :system)
include-book
(include-book "std/system/theorem-symbolp" :dir :system)
include-book
(include-book "std/testing/assert-bang" :dir :system)
include-book
(include-book "std/testing/must-be-redundant" :dir :system)
include-book
(include-book "std/testing/must-be-table-key" :dir :system)
include-book
(include-book "std/testing/must-not-be-table-key" :dir :system)
test-titlemacro
(defmacro test-title (str) `(cw-event (concatenate 'string "~%~%~%********** " ,STR "~%~%")))
must-be-theoremmacro
(defmacro must-be-theorem (name) (declare (xargs :guard (symbolp name))) `(assert! (theorem-symbolp ',NAME (w state))))
other
(define must-be-theorems-fn ((names symbol-listp)) :returns (events pseudo-event-form-listp) (cond ((endp names) nil) (t (cons `(must-be-theorem ,(CAR NAMES)) (must-be-theorems-fn (cdr names))))))
must-be-theoremsmacro
(defmacro must-be-theorems (&rest names) (declare (xargs :guard (symbol-listp names))) `(progn ,@(MUST-BE-THEOREMS-FN NAMES)))
must-not-be-theoremmacro
(defmacro must-not-be-theorem (name) (declare (xargs :guard (symbolp name))) `(assert! (not (theorem-symbolp ',NAME (w state)))))
other
(define must-not-be-theorems-fn ((names symbol-listp)) :returns (events pseudo-event-form-listp) (cond ((endp names) nil) (t (cons `(must-not-be-theorem ,(CAR NAMES)) (must-not-be-theorems-fn (cdr names))))))
must-not-be-theoremsmacro
(defmacro must-not-be-theorems (&rest names) (declare (xargs :guard (symbol-listp names))) `(progn ,@(MUST-NOT-BE-THEOREMS-FN NAMES)))
must-be-enabled-rewrite-rulemacro
(defmacro must-be-enabled-rewrite-rule (name yes/no) (if yes/no `(assert! (rune-enabledp '(:rewrite ,NAME) state)) `(assert! (rune-disabledp '(:rewrite ,NAME) state))))
must-not-be-defmapping-entrymacro
(defmacro must-not-be-defmapping-entry (&key (name 'map)) (declare (xargs :guard (symbolp name))) `(must-not-be-table-key ,NAME ,*DEFMAPPING-TABLE-NAME*))
must-be-defmapping-entrymacro
(defmacro must-be-defmapping-entry (&key (name 'map) (doma 'doma) (domb 'domb) (alpha 'alpha) (beta 'beta) unconditional (alpha-image 'map.alpha-image) (beta-image 'map.beta-image) (beta-of-alpha 'map.beta-of-alpha) (alpha-of-beta 'map.alpha-of-beta) (alpha-injective 'map.alpha-injective) (beta-injective 'map.beta-injective) (doma-guard 'map.doma-guard) (domb-guard 'map.domb-guard) (alpha-guard 'map.alpha-guard) (beta-guard 'map.beta-guard)) `(assert! (b* ((table (table-alist *defmapping-table-name* (w state))) (pair (assoc-eq ',NAME table)) ((unless pair) nil) (info (cdr pair)) ((unless (defmapping-infop info)) nil)) (and (equal (defmapping-info->doma info) ',DOMA) (equal (defmapping-info->domb info) ',DOMB) (equal (defmapping-info->alpha info) ',ALPHA) (equal (defmapping-info->beta info) ',BETA) (equal (defmapping-info->alpha-image info) ',ALPHA-IMAGE) (equal (defmapping-info->beta-image info) ',BETA-IMAGE) (equal (defmapping-info->beta-of-alpha info) ',BETA-OF-ALPHA) (equal (defmapping-info->alpha-of-beta info) ',ALPHA-OF-BETA) (equal (defmapping-info->alpha-injective info) ',ALPHA-INJECTIVE) (equal (defmapping-info->beta-injective info) ',BETA-INJECTIVE) (equal (defmapping-info->doma-guard info) ',DOMA-GUARD) (equal (defmapping-info->domb-guard info) ',DOMB-GUARD) (equal (defmapping-info->alpha-guard info) ',ALPHA-GUARD) (equal (defmapping-info->beta-guard info) ',BETA-GUARD) (equal (defmapping-info->unconditional info) ,UNCONDITIONAL)))))
must-be-defmapping-theoremsmacro
(defmacro must-be-defmapping-theorems (&key (doma 'doma) (domb 'domb) (alpha 'alpha) (beta 'beta) unconditional (alpha-image 'map.alpha-image) (beta-image 'map.beta-image) (beta-of-alpha 'map.beta-of-alpha) (alpha-of-beta 'map.alpha-of-beta) (alpha-injective 'map.alpha-injective) (beta-injective 'map.beta-injective) (doma-guard 'map.doma-guard) (domb-guard 'map.domb-guard) (alpha-guard 'map.alpha-guard) (beta-guard 'map.beta-guard) (g-doma 'g-doma) (g-domb 'g-domb) (g-alpha 'g-alpha) (g-beta 'g-beta) (a1...an '(a)) (b1...bm '(b)) (aa1...aan '(a$)) (bb1...bbm '(b$))) `(must-be-redundant (defthm-all :alpha-image ,ALPHA-IMAGE :beta-image ,BETA-IMAGE :beta-of-alpha ,BETA-OF-ALPHA :alpha-of-beta ,ALPHA-OF-BETA :alpha-injective ,ALPHA-INJECTIVE :beta-injective ,BETA-INJECTIVE :doma-guard ,DOMA-GUARD :domb-guard ,DOMB-GUARD :alpha-guard ,ALPHA-GUARD :beta-guard ,BETA-GUARD :unconditional ,UNCONDITIONAL :doma ,DOMA :domb ,DOMB :alpha ,ALPHA :beta ,BETA :g-doma ,G-DOMA :g-domb ,G-DOMB :g-alpha ,G-ALPHA :g-beta ,G-BETA :a1...an ,A1...AN :b1...bm ,B1...BM :aa1...aan ,AA1...AAN :bb1...bbm ,BB1...BBM)))
must-be-before-defmappingmacro
(defmacro must-be-before-defmapping (&key (name 'map) beta-of-alpha-thm alpha-of-beta-thm (guard-thms 't) (alpha-image 'map.alpha-image) (beta-image 'map.beta-image) (beta-of-alpha 'map.beta-of-alpha) (alpha-of-beta 'map.alpha-of-beta) (alpha-injective 'map.alpha-injective) (beta-injective 'map.beta-injective) (doma-guard 'map.doma-guard) (domb-guard 'map.domb-guard) (alpha-guard 'map.alpha-guard) (beta-guard 'map.beta-guard)) `(progn (must-not-be-defmapping-entry :name ,NAME) (must-not-be-theorems ,ALPHA-IMAGE ,BETA-IMAGE ,@(AND BETA-OF-ALPHA-THM (LIST BETA-OF-ALPHA)) ,@(AND ALPHA-OF-BETA-THM (LIST ALPHA-OF-BETA)) ,@(AND BETA-OF-ALPHA-THM (LIST ALPHA-INJECTIVE)) ,@(AND ALPHA-OF-BETA-THM (LIST BETA-INJECTIVE)) ,@(AND GUARD-THMS (LIST DOMA-GUARD)) ,@(AND GUARD-THMS (LIST DOMB-GUARD)) ,@(AND GUARD-THMS (LIST ALPHA-GUARD)) ,@(AND GUARD-THMS (LIST BETA-GUARD)))))
must-be-after-defmappingmacro
(defmacro must-be-after-defmapping (&key (name 'map) (doma 'doma) (domb 'domb) (alpha 'alpha) (beta 'beta) beta-of-alpha-thm alpha-of-beta-thm (guard-thms 't) unconditional (alpha-image 'map.alpha-image) (beta-image 'map.beta-image) (beta-of-alpha 'map.beta-of-alpha) (alpha-of-beta 'map.alpha-of-beta) (alpha-injective 'map.alpha-injective) (beta-injective 'map.beta-injective) (doma-guard 'map.doma-guard) (domb-guard 'map.domb-guard) (alpha-guard 'map.alpha-guard) (beta-guard 'map.beta-guard) (alpha-image-enable 'nil) (beta-image-enable 'nil) (beta-of-alpha-enable 'nil) (alpha-of-beta-enable 'nil) (alpha-injective-enable 'nil) (beta-injective-enable 'nil) (doma-guard-enable 'nil) (domb-guard-enable 'nil) (alpha-guard-enable 'nil) (beta-guard-enable 'nil) (g-doma 'g-doma) (g-domb 'g-domb) (g-alpha 'g-alpha) (g-beta 'g-beta) (a1...an '(a)) (b1...bm '(b)) (aa1...aan '(a$)) (bb1...bbm '(b$))) `(progn (must-be-defmapping-entry :name ,NAME :doma ,DOMA :domb ,DOMB :alpha ,ALPHA :beta ,BETA :alpha-image ,ALPHA-IMAGE :beta-image ,BETA-IMAGE :beta-of-alpha ,(AND BETA-OF-ALPHA-THM BETA-OF-ALPHA) :alpha-of-beta ,(AND ALPHA-OF-BETA-THM ALPHA-OF-BETA) :alpha-injective ,(AND BETA-OF-ALPHA-THM ALPHA-INJECTIVE) :beta-injective ,(AND ALPHA-OF-BETA-THM BETA-INJECTIVE) :doma-guard ,(AND GUARD-THMS DOMA-GUARD) :domb-guard ,(AND GUARD-THMS DOMB-GUARD) :alpha-guard ,(AND GUARD-THMS ALPHA-GUARD) :beta-guard ,(AND GUARD-THMS BETA-GUARD) :unconditional ,UNCONDITIONAL) (must-be-defmapping-theorems :alpha-image ,ALPHA-IMAGE :beta-image ,BETA-IMAGE :beta-of-alpha ,(AND BETA-OF-ALPHA-THM BETA-OF-ALPHA) :alpha-of-beta ,(AND ALPHA-OF-BETA-THM ALPHA-OF-BETA) :alpha-injective ,(AND BETA-OF-ALPHA-THM ALPHA-INJECTIVE) :beta-injective ,(AND ALPHA-OF-BETA-THM BETA-INJECTIVE) :doma-guard ,(AND GUARD-THMS DOMA-GUARD) :domb-guard ,(AND GUARD-THMS DOMB-GUARD) :alpha-guard ,(AND GUARD-THMS ALPHA-GUARD) :beta-guard ,(AND GUARD-THMS BETA-GUARD) :unconditional ,UNCONDITIONAL :doma ,DOMA :domb ,DOMB :alpha ,ALPHA :beta ,BETA :g-doma ,G-DOMA :g-domb ,G-DOMB :g-alpha ,G-ALPHA :g-beta ,G-BETA :a1...an ,A1...AN :b1...bm ,B1...BM :aa1...aan ,AA1...AAN :bb1...bbm ,BB1...BBM) (must-not-be-theorems ,@(AND (NOT BETA-OF-ALPHA-THM) (LIST BETA-OF-ALPHA)) ,@(AND (NOT ALPHA-OF-BETA-THM) (LIST ALPHA-OF-BETA)) ,@(AND (NOT BETA-OF-ALPHA-THM) (LIST ALPHA-INJECTIVE)) ,@(AND (NOT ALPHA-OF-BETA-THM) (LIST BETA-INJECTIVE)) ,@(AND (NOT GUARD-THMS) (LIST DOMA-GUARD)) ,@(AND (NOT GUARD-THMS) (LIST DOMB-GUARD)) ,@(AND (NOT GUARD-THMS) (LIST ALPHA-GUARD)) ,@(AND (NOT GUARD-THMS) (LIST BETA-GUARD))) (must-be-enabled-rewrite-rule ,ALPHA-IMAGE ,ALPHA-IMAGE-ENABLE) (must-be-enabled-rewrite-rule ,BETA-IMAGE ,BETA-IMAGE-ENABLE) ,@(AND BETA-OF-ALPHA-THM `((MUST-BE-ENABLED-REWRITE-RULE ,BETA-OF-ALPHA ,BETA-OF-ALPHA-ENABLE))) ,@(AND ALPHA-OF-BETA-THM `((MUST-BE-ENABLED-REWRITE-RULE ,ALPHA-OF-BETA ,ALPHA-OF-BETA-ENABLE))) ,@(AND BETA-OF-ALPHA-THM `((MUST-BE-ENABLED-REWRITE-RULE ,ALPHA-INJECTIVE ,ALPHA-INJECTIVE-ENABLE))) ,@(AND ALPHA-OF-BETA-THM `((MUST-BE-ENABLED-REWRITE-RULE ,BETA-INJECTIVE ,BETA-INJECTIVE-ENABLE))) ,@(AND GUARD-THMS `((MUST-BE-ENABLED-REWRITE-RULE ,DOMA-GUARD ,DOMA-GUARD-ENABLE))) ,@(AND GUARD-THMS `((MUST-BE-ENABLED-REWRITE-RULE ,DOMB-GUARD ,DOMB-GUARD-ENABLE))) ,@(AND GUARD-THMS `((MUST-BE-ENABLED-REWRITE-RULE ,ALPHA-GUARD ,ALPHA-GUARD-ENABLE))) ,@(AND GUARD-THMS `((MUST-BE-ENABLED-REWRITE-RULE ,BETA-GUARD ,BETA-GUARD-ENABLE)))))