• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
        • Transforms
        • Lint
        • Mlib
          • Scopestack
          • Filtering-by-name
          • Vl-namefactory
          • Substitution
            • Vl-packeddimensionlist-subst
            • Vl-namedparamvaluelist-subst
            • Vl-paramvaluelist-subst
            • Vl-paramdecllist-subst
            • Vl-portdecllist-subst
            • Vl-plainarglist-subst
            • Vl-namedarglist-subst
            • Vl-gateinstlist-subst
            • Vl-enumitemlist-subst
            • Vl-vardecllist-subst
            • Vl-modinstlist-subst
            • Vl-initiallist-subst
            • Vl-fundecllist-subst
            • Vl-expr-subst
            • Vl-modulelist-subst
            • Vl-evatomlist-subst
            • Vl-assignlist-subst
            • Vl-alwayslist-subst
            • Vl-rangelist-subst
            • Vl-portlist-subst
            • Vl-stmt-subst
              • Vl-stmtlist-subst
            • Vl-maybe-delayoreventcontrol-subst
            • Vl-repeateventcontrol-subst
            • Vl-maybe-packeddimension-subst
            • Vl-delayoreventcontrol-subst
            • Vl-packeddimension-subst
            • Vl-namedparamvalue-subst
            • Vl-module-subst
            • Vl-maybe-paramvalue-subst
            • Vl-paramvalue-subst
            • Vl-paramtype-subst
            • Vl-modinst-subst
            • Vl-maybe-gatedelay-subst
            • Vl-maybe-datatype-subst
            • Vl-interfaceport-subst
            • Vl-gateinst-subst
            • Vl-fundecl-subst
            • Vl-eventcontrol-subst
            • Vl-enumbasetype-subst
            • Vl-delaycontrol-subst
            • Vl-vardecl-subst
            • Vl-regularport-subst
            • Vl-portdecl-subst
            • Vl-plainarg-subst
            • Vl-paramdecl-subst
            • Vl-paramargs-subst
            • Vl-namedarg-subst
            • Vl-maybe-range-subst
            • Vl-gatedelay-subst
            • Vl-enumitem-subst
            • Vl-assign-subst
            • Vl-arguments-subst
            • Vl-range-subst
            • Vl-maybe-expr-subst
            • Vl-initial-subst
            • Vl-evatom-subst
            • Vl-always-subst
            • Vl-port-subst
            • Vl-sigma-count
            • Vl-sigma
          • Allexprs
          • Hid-tools
          • Vl-consteval
          • Range-tools
          • Lvalexprs
          • Hierarchy
          • Finding-by-name
          • Expr-tools
          • Expr-slicing
          • Stripping-functions
          • Stmt-tools
          • Modnamespace
          • Vl-parse-expr-from-str
          • Welltyped
          • Reordering-by-name
          • Flat-warnings
          • Genblob
          • Expr-building
          • Datatype-tools
          • Syscalls
          • Relocate
          • Expr-cleaning
          • Namemangle
          • Caremask
          • Port-tools
          • Lvalues
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Substitution

Vl-stmt-subst

Substitute into a vl-stmt-p

Signature
(vl-stmt-subst x sigma) → new-x
Arguments
x — Guard (vl-stmt-p x).
sigma — Guard (vl-sigma-p sigma).
Returns
new-x — Type (vl-stmt-p new-x).

Theorem: return-type-of-vl-stmt-subst.new-x

(defthm return-type-of-vl-stmt-subst.new-x
  (b* ((?new-x (vl-stmt-subst x sigma)))
    (vl-stmt-p new-x))
  :rule-classes :rewrite)

Theorem: return-type-of-vl-stmtlist-subst.new-x

(defthm return-type-of-vl-stmtlist-subst.new-x
  (b* ((?new-x (vl-stmtlist-subst x sigma)))
    (and (vl-stmtlist-p new-x)
         (equal (len new-x) (len x))))
  :rule-classes :rewrite)

Theorem: vl-stmtlist-subst-of-update-nth

(defthm vl-stmtlist-subst-of-update-nth
 (implies
      (<= (nfix acl2::n) (len acl2::x))
      (equal (vl-stmtlist-subst (update-nth acl2::n acl2::v acl2::x)
                                sigma)
             (update-nth acl2::n (vl-stmt-subst acl2::v sigma)
                         (vl-stmtlist-subst acl2::x sigma))))
 :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-revappend

(defthm vl-stmtlist-subst-of-revappend
  (equal (vl-stmtlist-subst (revappend acl2::x acl2::y)
                            sigma)
         (revappend (vl-stmtlist-subst acl2::x sigma)
                    (vl-stmtlist-subst acl2::y sigma)))
  :rule-classes ((:rewrite)))

Theorem: nthcdr-of-vl-stmtlist-subst

(defthm nthcdr-of-vl-stmtlist-subst
  (equal (nthcdr acl2::n
                 (vl-stmtlist-subst acl2::x sigma))
         (vl-stmtlist-subst (nthcdr acl2::n acl2::x)
                            sigma))
  :rule-classes ((:rewrite)))

Theorem: nth-of-vl-stmtlist-subst

(defthm nth-of-vl-stmtlist-subst
  (equal (nth acl2::n
              (vl-stmtlist-subst acl2::x sigma))
         (and (< (nfix acl2::n) (len acl2::x))
              (vl-stmt-subst (nth acl2::n acl2::x)
                             sigma)))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-take

(defthm vl-stmtlist-subst-of-take
  (implies (<= (nfix acl2::n) (len acl2::x))
           (equal (vl-stmtlist-subst (take acl2::n acl2::x)
                                     sigma)
                  (take acl2::n
                        (vl-stmtlist-subst acl2::x sigma))))
  :rule-classes ((:rewrite)))

Theorem: set-equiv-congruence-over-vl-stmtlist-subst

(defthm set-equiv-congruence-over-vl-stmtlist-subst
  (implies (set-equiv acl2::x acl2::y)
           (set-equiv (vl-stmtlist-subst acl2::x sigma)
                      (vl-stmtlist-subst acl2::y sigma)))
  :rule-classes ((:congruence)))

Theorem: subsetp-of-vl-stmtlist-subst-when-subsetp

(defthm subsetp-of-vl-stmtlist-subst-when-subsetp
  (implies (subsetp acl2::x acl2::y)
           (subsetp (vl-stmtlist-subst acl2::x sigma)
                    (vl-stmtlist-subst acl2::y sigma)))
  :rule-classes ((:rewrite)))

Theorem: member-of-vl-stmt-subst-in-vl-stmtlist-subst

(defthm member-of-vl-stmt-subst-in-vl-stmtlist-subst
  (implies (member acl2::k acl2::x)
           (member (vl-stmt-subst acl2::k sigma)
                   (vl-stmtlist-subst acl2::x sigma)))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-rev

(defthm vl-stmtlist-subst-of-rev
  (equal (vl-stmtlist-subst (rev acl2::x) sigma)
         (rev (vl-stmtlist-subst acl2::x sigma)))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-list-fix

(defthm vl-stmtlist-subst-of-list-fix
  (equal (vl-stmtlist-subst (list-fix acl2::x)
                            sigma)
         (vl-stmtlist-subst acl2::x sigma))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-append

(defthm vl-stmtlist-subst-of-append
  (equal (vl-stmtlist-subst (append acl2::a acl2::b)
                            sigma)
         (append (vl-stmtlist-subst acl2::a sigma)
                 (vl-stmtlist-subst acl2::b sigma)))
  :rule-classes ((:rewrite)))

Theorem: cdr-of-vl-stmtlist-subst

(defthm cdr-of-vl-stmtlist-subst
  (equal (cdr (vl-stmtlist-subst acl2::x sigma))
         (vl-stmtlist-subst (cdr acl2::x) sigma))
  :rule-classes ((:rewrite)))

Theorem: car-of-vl-stmtlist-subst

(defthm car-of-vl-stmtlist-subst
  (equal (car (vl-stmtlist-subst acl2::x sigma))
         (and (consp acl2::x)
              (vl-stmt-subst (car acl2::x) sigma)))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-under-iff

(defthm vl-stmtlist-subst-under-iff
  (iff (vl-stmtlist-subst acl2::x sigma)
       (consp acl2::x))
  :rule-classes ((:rewrite)))

Theorem: consp-of-vl-stmtlist-subst

(defthm consp-of-vl-stmtlist-subst
  (equal (consp (vl-stmtlist-subst acl2::x sigma))
         (consp acl2::x))
  :rule-classes ((:rewrite)))

Theorem: len-of-vl-stmtlist-subst

(defthm len-of-vl-stmtlist-subst
  (equal (len (vl-stmtlist-subst acl2::x sigma))
         (len acl2::x))
  :rule-classes ((:rewrite)))

Theorem: true-listp-of-vl-stmtlist-subst

(defthm true-listp-of-vl-stmtlist-subst
  (true-listp (vl-stmtlist-subst acl2::x sigma))
  :rule-classes :type-prescription)

Theorem: vl-stmtlist-subst-when-not-consp

(defthm vl-stmtlist-subst-when-not-consp
  (implies (not (consp acl2::x))
           (equal (vl-stmtlist-subst acl2::x sigma)
                  nil))
  :rule-classes ((:rewrite)))

Theorem: vl-stmtlist-subst-of-cons

(defthm vl-stmtlist-subst-of-cons
  (equal (vl-stmtlist-subst (cons acl2::a acl2::b)
                            sigma)
         (cons (vl-stmt-subst acl2::a sigma)
               (vl-stmtlist-subst acl2::b sigma)))
  :rule-classes ((:rewrite)))

Theorem: vl-stmt-subst-of-vl-stmt-fix-x

(defthm vl-stmt-subst-of-vl-stmt-fix-x
  (equal (vl-stmt-subst (vl-stmt-fix x) sigma)
         (vl-stmt-subst x sigma)))

Theorem: vl-stmt-subst-of-vl-sigma-fix-sigma

(defthm vl-stmt-subst-of-vl-sigma-fix-sigma
  (equal (vl-stmt-subst x (vl-sigma-fix sigma))
         (vl-stmt-subst x sigma)))

Theorem: vl-stmtlist-subst-of-vl-stmtlist-fix-x

(defthm vl-stmtlist-subst-of-vl-stmtlist-fix-x
  (equal (vl-stmtlist-subst (vl-stmtlist-fix x)
                            sigma)
         (vl-stmtlist-subst x sigma)))

Theorem: vl-stmtlist-subst-of-vl-sigma-fix-sigma

(defthm vl-stmtlist-subst-of-vl-sigma-fix-sigma
  (equal (vl-stmtlist-subst x (vl-sigma-fix sigma))
         (vl-stmtlist-subst x sigma)))

Theorem: vl-stmt-subst-vl-stmt-equiv-congruence-on-x

(defthm vl-stmt-subst-vl-stmt-equiv-congruence-on-x
  (implies (vl-stmt-equiv x x-equiv)
           (equal (vl-stmt-subst x sigma)
                  (vl-stmt-subst x-equiv sigma)))
  :rule-classes :congruence)

Theorem: vl-stmt-subst-vl-sigma-equiv-congruence-on-sigma

(defthm vl-stmt-subst-vl-sigma-equiv-congruence-on-sigma
  (implies (vl-sigma-equiv sigma sigma-equiv)
           (equal (vl-stmt-subst x sigma)
                  (vl-stmt-subst x sigma-equiv)))
  :rule-classes :congruence)

Theorem: vl-stmtlist-subst-vl-stmtlist-equiv-congruence-on-x

(defthm vl-stmtlist-subst-vl-stmtlist-equiv-congruence-on-x
  (implies (vl-stmtlist-equiv x x-equiv)
           (equal (vl-stmtlist-subst x sigma)
                  (vl-stmtlist-subst x-equiv sigma)))
  :rule-classes :congruence)

Theorem: vl-stmtlist-subst-vl-sigma-equiv-congruence-on-sigma

(defthm vl-stmtlist-subst-vl-sigma-equiv-congruence-on-sigma
  (implies (vl-sigma-equiv sigma sigma-equiv)
           (equal (vl-stmtlist-subst x sigma)
                  (vl-stmtlist-subst x sigma-equiv)))
  :rule-classes :congruence)

Subtopics

Vl-stmtlist-subst