• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Fgl
      • Vwsim
      • Vl
        • Syntax
        • Loader
        • Warnings
        • Getting-started
        • Utilities
        • Printer
        • Kit
        • Mlib
        • Transforms
          • Unparameterization
          • Elaborate
          • Addnames
          • Annotate
            • Increment-elim
              • Vl-expr-increwrite-aux
              • Vl-maybe-exprlist-increwrite-aux
              • Vl-maybe-expr-increwrite-aux
                • Vl-exprlist-increwrite
                • Vl-expr-increwrite
                • Vl-modelement-prohibit-incexprs
                • Vl-interface-prohibit-incexprs-aux
                • Vl-module-prohibit-incexprs-aux
                • Vl-portdecl-or-blockitem-list-prohibit-incexprs
                • Vl-maybe-exprlist-increwrite
                • Vl-function-specialization-map-prohibit-incexprs
                • Vl-rhs-increwrite
                • Vl-maybe-expr-increwrite
                • Vl-maybe-delayoreventcontrol-prohibit-incexprs
                • Vl-delayoreventcontrol-prohibit-incexprs
                • Vl-portdecl-or-blockitem-prohibit-incexprs
                • Vl-function-specialization-prohibit-incexprs
                • Vl-design-prohibit-incexprs-aux
                • Vl-defaultdisablelist-prohibit-incexprs
                • Vl-taskdecl-prohibit-incexprs-aux
                • Vl-repeateventcontrol-prohibit-incexprs
                • Vl-package-prohibit-incexprs-aux
                • Vl-modport-portlist-prohibit-incexprs
                • Vl-maybe-exprlist-prohibit-incexprs
                • Vl-fundecl-prohibit-incexprs-aux
                • Vl-cassertionlist-prohibit-incexprs
                • Vl-vardecllist-prohibit-incexprs
                • Vl-typedeflist-prohibit-incexprs
                • Vl-taskdecllist-prohibit-incexprs
                • Vl-sequencelist-prohibit-incexprs
                • Vl-propportlist-prohibit-incexprs
                • Vl-propertylist-prohibit-incexprs
                • Vl-portdecllist-prohibit-incexprs
                • Vl-plainarglist-prohibit-incexprs
                • Vl-paramtype-prohibit-incexprs
                • Vl-paramdecllist-prohibit-incexprs
                • Vl-namedarglist-prohibit-incexprs
                • Vl-modportlist-prohibit-incexprs
                • Vl-modinstlist-prohibit-incexprs
                • Vl-maybe-gatedelay-prohibit-incexprs
                • Vl-maybe-exprdist-prohibit-incexprs
                • Vl-initiallist-prohibit-incexprs
                • Vl-gateinstlist-prohibit-incexprs
                • Vl-fundecllist-prohibit-incexprs
                • Vl-exprdistlist-prohibit-incexprs
                • Vl-elabtasklist-prohibit-incexprs
                • Vl-dpiimportlist-prohibit-incexprs
                • Vl-defaultdisable-prohibit-incexprs
                • Vl-clkdecllist-prohibit-incexprs
                • Vl-clkassignlist-prohibit-incexprs
                • Vl-blockitemlist-prohibit-incexprs
                • Vl-blockitem-prohibit-incexprs
                • Vl-assertionlist-prohibit-incexprs
                • Vl-vardecl-prohibit-incexprs-aux
                • Vl-portdecl-prohibit-incexprs-aux
                • Vl-modport-port-prohibit-incexprs
                • Vl-modinst-prohibit-incexprs-aux
                • Vl-maybe-clkskew-prohibit-incexprs
                • Vl-interfaceport-prohibit-incexprs
                • Vl-incexpr->rhsexpr
                • Vl-gateinst-prohibit-incexprs-aux
                • Vl-finallist-prohibit-incexprs
                • Vl-delaycontrol-prohibit-incexprs
                • Vl-clkdecl-prohibit-incexprs
                • Vl-classlist-prohibit-incexprs
                • Vl-assignlist-prohibit-incexprs
                • Vl-alwayslist-prohibit-incexprs
                • Vl-aliaslist-prohibit-incexprs
                • Vl-udplist-prohibit-incexprs
                • Vl-typedef-prohibit-incexprs-aux
                • Vl-taskdecl-prohibit-incexprs
                • Vl-sequence-prohibit-incexprs
                • Vl-repetition-prohibit-incexprs
                • Vl-regularport-prohibit-incexprs
                • Vl-propspec-prohibit-incexprs
                • Vl-property-prohibit-incexprs
                • Vl-portlist-prohibit-incexprs
                • Vl-portdecl-prohibit-incexprs
                • Vl-port-prohibit-incexprs-aux
                • Vl-paramdecl-prohibit-incexprs-aux
                • Vl-paramdecl-prohibit-incexprs
                • Vl-maybe-rhs-prohibit-incexprs
                • Vl-initial-prohibit-incexprs-aux
                • Vl-gateinst-prohibit-incexprs
                • Vl-gatedelay-prohibit-incexprs
                • Vl-dpiimport-prohibit-incexprs
                • Vl-distlist-prohibit-incexprs
                • Vl-distitem-prohibit-incexprs
                • Vl-clkassign-prohibit-incexprs
                • Vl-class-prohibit-incexprs
                • Vl-bindlist-prohibit-incexprs
                • Vl-assign-prohibit-incexprs-aux
                • Vl-arguments-prohibit-incexprs
                • Vl-always-prohibit-incexprs-aux
                • Vl-alias-prohibit-incexprs-aux
                • Vl-vardecl-prohibit-incexprs
                • Vl-typedef-prohibit-incexprs
                • Vl-propport-prohibit-incexprs
                • Vl-port-prohibit-incexprs
                • Vl-plainarg-prohibit-incexprs
                • Vl-namedarg-prohibit-incexprs
                • Vl-modport-prohibit-incexprs
                • Vl-modinst-prohibit-incexprs
                • Vl-letdecl-prohibit-incexprs
                • Vl-initial-prohibit-incexprs
                • Vl-fundecl-prohibit-incexprs
                • Vl-exprdist-prohibit-incexprs
                • Vl-elabtask-prohibit-incexprs
                • Vl-clkskew-prohibit-incexprs
                • Vl-assign-prohibit-incexprs
                • Vl-always-prohibit-incexprs
                • Vl-alias-prohibit-incexprs
                • Vl-udp-prohibit-incexprs
                • Vl-rhs-prohibit-incexprs
                • Vl-modelement-increwrite
                • Vl-final-prohibit-incexprs
                • Vl-expr-prohibit-incexprs
                • Vl-bind-prohibit-incexprs
                • Vl-function-specialization-map-increwrite
                • Vl-expr-incexprs
                • Vl-incexpr-post-p
                • Vl-incexpr-p
                • Vl-function-specialization-increwrite
                • Vl-interface-increwrite
                • Vl-module-increwrite
                • Vl-packagelist-prohibit-incexprs
                • Vl-interfacelist-prohibit-incexprs
                • Vl-design-prohibit-incexprs-top-aux
                • Vl-design-increwrite
                • Vl-taskdecllist-increwrite
                • Vl-packagelist-increwrite
                • Vl-package-increwrite
                • Vl-modulelist-prohibit-incexprs
                • Vl-interfacelist-increwrite
                • Vl-interface-prohibit-incexprs
                • Vl-initiallist-increwrite
                • Vl-incexpr->lhsexpr
                • Vl-fundecllist-increwrite
                • Vl-elabtasklist-increwrite
                • Vl-design-prohibit-incexprs
                • Vl-package-prohibit-incexprs
                • Vl-modulelist-increwrite
                • Vl-module-prohibit-incexprs
                • Vl-fundecl-increwrite
                • Vl-finallist-increwrite
                • Vl-design-increment-elim
                • Vl-classlist-increwrite
                • Vl-alwayslist-increwrite
                • Vl-taskdecl-increwrite
                • Vl-initial-increwrite
                • Vl-incexprlist-p
                • Vl-elabtask-increwrite
                • Vl-class-increwrite
                • Vl-always-increwrite
                • Vl-maybe-exprlist-has-incexprs-p
                • Vl-final-increwrite
                • Vl-maybe-expr-has-incexprs-p
                • Vl-expr-has-incexprs-p
              • Make-implicit-wires
              • Basic-bind-elim
              • Argresolve
              • Basicsanity
              • Portdecl-sign
              • Enum-names
              • Port-resolve
              • Udp-elim
              • Vl-annotate-design
              • Vl-annotate-module
            • Clean-warnings
            • Eliminitial
            • Custom-transform-hooks
            • Problem-modules
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Increment-elim

    Vl-maybe-expr-increwrite-aux

    Signature
    (vl-maybe-expr-increwrite-aux x pre post loc) 
      → 
    (mv new-x pre post)
    Arguments
    x — Guard (vl-maybe-expr-p x).
    pre — Guard (vl-stmtlist-p pre).
    post — Guard (vl-stmtlist-p post).
    loc — Guard (vl-location-p loc).
    Returns
    new-x — Type (vl-maybe-expr-p new-x).
    pre — Type (vl-stmtlist-p pre).
    post — Type (vl-stmtlist-p post).

    Definitions and Theorems

    Function: vl-maybe-expr-increwrite-aux

    (defun vl-maybe-expr-increwrite-aux (x pre post loc)
      (declare (xargs :guard (and (vl-maybe-expr-p x)
                                  (vl-stmtlist-p pre)
                                  (vl-stmtlist-p post)
                                  (vl-location-p loc))))
      (let ((__function__ 'vl-maybe-expr-increwrite-aux))
        (declare (ignorable __function__))
        (if x (vl-expr-increwrite-aux x pre post loc)
          (mv nil (vl-stmtlist-fix pre)
              (vl-stmtlist-fix post)))))

    Theorem: vl-maybe-expr-p-of-vl-maybe-expr-increwrite-aux.new-x

    (defthm vl-maybe-expr-p-of-vl-maybe-expr-increwrite-aux.new-x
      (b* (((mv ?new-x ?pre ?post)
            (vl-maybe-expr-increwrite-aux x pre post loc)))
        (vl-maybe-expr-p new-x))
      :rule-classes :rewrite)

    Theorem: vl-stmtlist-p-of-vl-maybe-expr-increwrite-aux.pre

    (defthm vl-stmtlist-p-of-vl-maybe-expr-increwrite-aux.pre
      (b* (((mv ?new-x ?pre ?post)
            (vl-maybe-expr-increwrite-aux x pre post loc)))
        (vl-stmtlist-p pre))
      :rule-classes :rewrite)

    Theorem: vl-stmtlist-p-of-vl-maybe-expr-increwrite-aux.post

    (defthm vl-stmtlist-p-of-vl-maybe-expr-increwrite-aux.post
      (b* (((mv ?new-x ?pre ?post)
            (vl-maybe-expr-increwrite-aux x pre post loc)))
        (vl-stmtlist-p post))
      :rule-classes :rewrite)

    Theorem: vl-maybe-expr-increwrite-aux-of-vl-maybe-expr-fix-x

    (defthm vl-maybe-expr-increwrite-aux-of-vl-maybe-expr-fix-x
      (equal (vl-maybe-expr-increwrite-aux (vl-maybe-expr-fix x)
                                           pre post loc)
             (vl-maybe-expr-increwrite-aux x pre post loc)))

    Theorem: vl-maybe-expr-increwrite-aux-vl-maybe-expr-equiv-congruence-on-x

    (defthm
       vl-maybe-expr-increwrite-aux-vl-maybe-expr-equiv-congruence-on-x
      (implies
           (vl-maybe-expr-equiv x x-equiv)
           (equal (vl-maybe-expr-increwrite-aux x pre post loc)
                  (vl-maybe-expr-increwrite-aux x-equiv pre post loc)))
      :rule-classes :congruence)

    Theorem: vl-maybe-expr-increwrite-aux-of-vl-stmtlist-fix-pre

    (defthm vl-maybe-expr-increwrite-aux-of-vl-stmtlist-fix-pre
      (equal (vl-maybe-expr-increwrite-aux x (vl-stmtlist-fix pre)
                                           post loc)
             (vl-maybe-expr-increwrite-aux x pre post loc)))

    Theorem: vl-maybe-expr-increwrite-aux-vl-stmtlist-equiv-congruence-on-pre

    (defthm
       vl-maybe-expr-increwrite-aux-vl-stmtlist-equiv-congruence-on-pre
      (implies
           (vl-stmtlist-equiv pre pre-equiv)
           (equal (vl-maybe-expr-increwrite-aux x pre post loc)
                  (vl-maybe-expr-increwrite-aux x pre-equiv post loc)))
      :rule-classes :congruence)

    Theorem: vl-maybe-expr-increwrite-aux-of-vl-stmtlist-fix-post

    (defthm vl-maybe-expr-increwrite-aux-of-vl-stmtlist-fix-post
      (equal (vl-maybe-expr-increwrite-aux x pre (vl-stmtlist-fix post)
                                           loc)
             (vl-maybe-expr-increwrite-aux x pre post loc)))

    Theorem: vl-maybe-expr-increwrite-aux-vl-stmtlist-equiv-congruence-on-post

    (defthm
      vl-maybe-expr-increwrite-aux-vl-stmtlist-equiv-congruence-on-post
      (implies
           (vl-stmtlist-equiv post post-equiv)
           (equal (vl-maybe-expr-increwrite-aux x pre post loc)
                  (vl-maybe-expr-increwrite-aux x pre post-equiv loc)))
      :rule-classes :congruence)

    Theorem: vl-maybe-expr-increwrite-aux-of-vl-location-fix-loc

    (defthm vl-maybe-expr-increwrite-aux-of-vl-location-fix-loc
     (equal
         (vl-maybe-expr-increwrite-aux x pre post (vl-location-fix loc))
         (vl-maybe-expr-increwrite-aux x pre post loc)))

    Theorem: vl-maybe-expr-increwrite-aux-vl-location-equiv-congruence-on-loc

    (defthm
       vl-maybe-expr-increwrite-aux-vl-location-equiv-congruence-on-loc
      (implies
           (vl-location-equiv loc loc-equiv)
           (equal (vl-maybe-expr-increwrite-aux x pre post loc)
                  (vl-maybe-expr-increwrite-aux x pre post loc-equiv)))
      :rule-classes :congruence)