Parse a label declaration.
(parse-label-declaration parstate) → (mv erp idents span new-parstate)
This is called after the
Function:
(defun parse-label-declaration (parstate) (declare (xargs :stobjs (parstate))) (declare (xargs :guard (parstatep parstate))) (let ((__function__ 'parse-label-declaration)) (declare (ignorable __function__)) (b* (((reterr) nil (irr-span) parstate) ((erp label span parstate) (read-identifier parstate)) ((erp labels & parstate) (parse-*-comma-identifier parstate)) ((erp last-span parstate) (read-punctuator ";" parstate))) (retok (cons label labels) (span-join span last-span) parstate))))
Theorem:
(defthm ident-listp-of-parse-label-declaration.idents (b* (((mv acl2::?erp ?idents ?span ?new-parstate) (parse-label-declaration parstate))) (ident-listp idents)) :rule-classes :rewrite)
Theorem:
(defthm spanp-of-parse-label-declaration.span (b* (((mv acl2::?erp ?idents ?span ?new-parstate) (parse-label-declaration parstate))) (spanp span)) :rule-classes :rewrite)
Theorem:
(defthm parstatep-of-parse-label-declaration.new-parstate (implies (parstatep parstate) (b* (((mv acl2::?erp ?idents ?span ?new-parstate) (parse-label-declaration parstate))) (parstatep new-parstate))) :rule-classes :rewrite)
Theorem:
(defthm parsize-of-parse-label-declaration-uncond (b* (((mv acl2::?erp ?idents ?span ?new-parstate) (parse-label-declaration parstate))) (<= (parsize new-parstate) (parsize parstate))) :rule-classes :linear)
Theorem:
(defthm parsize-of-parse-label-declaration-cond (b* (((mv acl2::?erp ?idents ?span ?new-parstate) (parse-label-declaration parstate))) (implies (not erp) (<= (parsize new-parstate) (1- (parsize parstate))))) :rule-classes :linear)