Parse a
(lex-repetition-*-lexeme abnf::input) → (mv abnf::trees abnf::rest-input)
Function:
(defun lex-repetition-*-lexeme (abnf::input) (declare (xargs :guard (nat-listp abnf::input))) (let ((__function__ 'lex-repetition-*-lexeme)) (declare (ignorable __function__)) (b* (((mv abnf::tree abnf::input) (lex-lexeme abnf::input)) ((when (reserrp abnf::tree)) (mv nil abnf::input)) ((mv abnf::trees abnf::input) (lex-repetition-*-lexeme abnf::input))) (mv (cons abnf::tree abnf::trees) abnf::input))))
Theorem:
(defthm tree-listp-of-lex-repetition-*-lexeme.trees (b* (((mv abnf::?trees abnf::?rest-input) (lex-repetition-*-lexeme abnf::input))) (abnf::tree-listp abnf::trees)) :rule-classes :rewrite)
Theorem:
(defthm nat-listp-of-lex-repetition-*-lexeme.rest-input (b* (((mv abnf::?trees abnf::?rest-input) (lex-repetition-*-lexeme abnf::input))) (nat-listp abnf::rest-input)) :rule-classes :rewrite)
Theorem:
(defthm len-of-lex-repetition-*-lexeme (b* (((mv abnf::?trees abnf::?rest-input) (lex-repetition-*-lexeme abnf::input))) (<= (len abnf::rest-input) (len abnf::input))) :rule-classes :linear)
Theorem:
(defthm lex-repetition-*-lexeme-of-nat-list-fix-input (equal (lex-repetition-*-lexeme (acl2::nat-list-fix abnf::input)) (lex-repetition-*-lexeme abnf::input)))
Theorem:
(defthm lex-repetition-*-lexeme-nat-list-equiv-congruence-on-input (implies (acl2::nat-list-equiv abnf::input input-equiv) (equal (lex-repetition-*-lexeme abnf::input) (lex-repetition-*-lexeme input-equiv))) :rule-classes :congruence)