Generate the information for a concatenation in the alternation that defines a rule name.
(deftreeops-gen-conc-info conc i discriminant-term check-conc-fn alt-singletonp rulename-upstring prefix) → info
Function:
(defun deftreeops-gen-conc-info (conc i discriminant-term check-conc-fn alt-singletonp rulename-upstring prefix) (declare (xargs :guard (and (concatenationp conc) (posp i) (common-lisp::symbolp check-conc-fn) (booleanp alt-singletonp) (common-lisp::stringp rulename-upstring) (common-lisp::symbolp prefix)))) (let ((__function__ 'deftreeops-gen-conc-info)) (declare (ignorable __function__)) (b* ((conc-singletonp (and (consp conc) (not (consp (cdr conc))))) (matching-thm (and conc-singletonp (if alt-singletonp (packn-pos (list prefix '- rulename-upstring '-conc-matching) prefix) (packn-pos (list prefix '- rulename-upstring '-conc i '-matching) prefix)))) (check-conc-fn-equiv-thm (and check-conc-fn (packn-pos (list check-conc-fn '- i '-iff-match-conc) check-conc-fn))) (get-tree-list-list-fn (if alt-singletonp (packn-pos (list prefix '- rulename-upstring '-conc) prefix) (and check-conc-fn (packn-pos (list prefix '- rulename-upstring '-conc i) prefix)))) (rep-infos (and conc-singletonp (deftreeops-gen-rep-info-list conc i check-conc-fn alt-singletonp rulename-upstring prefix))) (info (make-deftreeops-conc-info :conc conc :discriminant-term discriminant-term :matching-thm matching-thm :check-conc-fn-equiv-thm check-conc-fn-equiv-thm :get-tree-list-list-fn get-tree-list-list-fn :rep-infos rep-infos))) info)))
Theorem:
(defthm deftreeops-conc-infop-of-deftreeops-gen-conc-info (b* ((info (deftreeops-gen-conc-info conc i discriminant-term check-conc-fn alt-singletonp rulename-upstring prefix))) (deftreeops-conc-infop info)) :rule-classes :rewrite)