• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
          • Vl-module
          • Vl-vardecl
          • Expressions
          • Vl-fundecl
          • Vl-assign
          • Vl-gateinst
          • Vl-modinst
          • Vl-commentmap
          • Vl-portdecl
          • Vl-taskdecl
          • Vl-design
          • Vl-interface
          • Vl-plainarglist->exprs
          • Vl-taskdecllist->names
          • Vl-fundecllist->names
          • Vl-package
          • Vl-port
          • Vl-udp
          • Vl-paramdecl
          • Vl-genelement
          • Vl-cycledelayrange
          • Vl-namedarg
          • Vl-sort-blockitems-aux
          • Vl-distitem
          • Vl-gatedelay
          • Vl-repetition
          • Vl-typedef
          • Vl-range
            • Vl-range-p
              • Vl-maybe-range
                • Vl-maybe-range-p
                • Vl-maybe-range-fix
                  • Vl-maybe-range-case
                  • Vl-maybe-range-equiv
                  • Vl-maybe-range-some
                  • Vl-maybe-range-none
              • Vl-range-fix
              • Vl-range-equiv
              • Make-vl-range
              • Vl-range->msb
              • Vl-range->lsb
              • Change-vl-range
            • Vl-gatestrength
            • Vl-program
            • Vl-config
            • Vl-always
            • Vl-datatype-update-dims
            • Vl-import
            • Vl-enumbasetype
            • Vl-repeateventcontrol
            • Vl-paramargs
            • Vl-initial
            • Vl-eventcontrol
            • Vl-udpsymbol-p
            • Vl-maybe-range
              • Vl-maybe-range-p
              • Vl-maybe-range-fix
                • Vl-maybe-range-case
                • Vl-maybe-range-equiv
                • Vl-maybe-range-some
                • Vl-maybe-range-none
              • Vl-maybe-nettypename
              • Vl-maybe-gatestrength
              • Vl-maybe-gatedelay
              • Vl-maybe-delayoreventcontrol
              • Vl-alias
              • Maybe-string-fix
              • Vl-maybe-packeddimension
              • Vl-fwdtypedef
              • Vl-evatom
              • Vl-packeddimension-p
              • Vl-maybe-udpsymbol
              • Vl-maybe-module
              • Vl-maybe-direction
              • Vl-maybe-datatype
              • Vl-maybe-cstrength
              • Vl-direction-p
              • Vl-arguments
              • Vl-maybe-design
              • Vl-udpline
              • Vl-exprdist
              • Vl-context1
              • Vl-genvar
              • Vl-enumitem
              • Vl-datatype-update-udims
              • Vl-datatype-update-pdims
              • Vl-modelement
              • Vl-udpedge
              • Vl-delaycontrol
              • Vl-context
              • Vl-sort-blockitems
              • Vl-distweighttype-p
              • Vl-ctxelement->loc
              • Vl-blockitem
              • Vl-vardecllist
              • Vl-module->ifports
              • Vl-modelement->loc
              • Vl-ctxelement
              • Vl-coretypename-p
              • Vl-packeddimensionlist
              • Vl-modelementlist->genelements
              • Vl-gatetype-p
              • Vl-paramdecllist
              • Vl-lifetime-p
              • Vl-datatype->udims
              • Vl-datatype->pdims
              • Vl-timeunit-p
              • Vl-repetitiontype-p
              • Vl-port->name
              • Vl-importlist
              • Vl-genelement->loc
              • Vl-delayoreventcontrol
              • Vl-cstrength-p
              • Statements
              • Vl-udpentry-p
              • Vl-packeddimension-fix
              • Vl-nettypename-p
              • Vl-portdecllist
              • Vl-port->loc
              • Vl-enumbasekind-fix
              • Vl-arguments->args
              • Vl-taskdecllist
              • Vl-portlist
              • Vl-importpart-p
              • Vl-importpart-fix
              • Vl-fundecllist
              • Vl-blockstmt-p
              • Vl-assignlist
              • Vl-alwaystype-p
              • Vl-typedeflist
              • Vl-syntaxversion-p
              • Vl-randomqualifier-p
              • Vl-modinstlist
              • Vl-gateinstlist
              • Vl-blockitemlist
              • Vl-udptable
              • Vl-udplist
              • Vl-udpentrylist
              • Vl-programlist
              • Vl-paramvaluelist
              • Vl-packagelist
              • Vl-namedparamvaluelist
              • Vl-namedarglist
              • Vl-modulelist
              • Vl-modportlist
              • Vl-modport-portlist
              • Vl-interfacelist
              • Vl-initiallist
              • Vl-genvarlist
              • Vl-fwdtypedeflist
              • Vl-evatomlist
              • Vl-enumitemlist
              • Vl-distlist
              • Vl-configlist
              • Vl-alwayslist
              • Vl-aliaslist
              • Vl-regularportlist
              • Vl-rangelist-list
              • Vl-rangelist
              • Vl-paramdecllist-list
              • Vl-modelementlist
              • Vl-maybe-range-list
              • Vl-interfaceportlist
              • Vl-argumentlist
              • Data-types
            • Getting-started
            • Utilities
            • Loader
            • Transforms
            • Lint
            • Mlib
            • Server
            • Kit
            • Printer
            • Esim-vl
            • Well-formedness
          • Sv
          • Fgl
          • Vwsim
          • Vl
          • X86isa
          • Svl
          • Rtl
        • Software-verification
        • Math
        • Testing-utilities
      • Vl-maybe-range

      Vl-maybe-range-fix

      Fixing function for vl-maybe-range structures.

      Signature
      (vl-maybe-range-fix x) → new-x
      Arguments
      x — Guard (vl-maybe-range-p x).
      Returns
      new-x — Type (vl-maybe-range-p new-x).

      Definitions and Theorems

      Function: vl-maybe-range-fix$inline

      (defun vl-maybe-range-fix$inline (x)
        (declare (xargs :guard (vl-maybe-range-p x)))
        (let ((__function__ 'vl-maybe-range-fix))
          (declare (ignorable __function__))
          (mbe :logic (cond ((not x) nil)
                            (t (b* ((fty::val (vl-range-fix x)))
                                 fty::val)))
               :exec x)))

      Theorem: vl-maybe-range-p-of-vl-maybe-range-fix

      (defthm vl-maybe-range-p-of-vl-maybe-range-fix
        (b* ((new-x (vl-maybe-range-fix$inline x)))
          (vl-maybe-range-p new-x))
        :rule-classes :rewrite)

      Theorem: vl-maybe-range-fix-when-vl-maybe-range-p

      (defthm vl-maybe-range-fix-when-vl-maybe-range-p
        (implies (vl-maybe-range-p x)
                 (equal (vl-maybe-range-fix x) x)))

      Function: vl-maybe-range-equiv$inline

      (defun vl-maybe-range-equiv$inline (acl2::x acl2::y)
        (declare (xargs :guard (and (vl-maybe-range-p acl2::x)
                                    (vl-maybe-range-p acl2::y))))
        (equal (vl-maybe-range-fix acl2::x)
               (vl-maybe-range-fix acl2::y)))

      Theorem: vl-maybe-range-equiv-is-an-equivalence

      (defthm vl-maybe-range-equiv-is-an-equivalence
        (and (booleanp (vl-maybe-range-equiv x y))
             (vl-maybe-range-equiv x x)
             (implies (vl-maybe-range-equiv x y)
                      (vl-maybe-range-equiv y x))
             (implies (and (vl-maybe-range-equiv x y)
                           (vl-maybe-range-equiv y z))
                      (vl-maybe-range-equiv x z)))
        :rule-classes (:equivalence))

      Theorem: vl-maybe-range-equiv-implies-equal-vl-maybe-range-fix-1

      (defthm vl-maybe-range-equiv-implies-equal-vl-maybe-range-fix-1
        (implies (vl-maybe-range-equiv acl2::x x-equiv)
                 (equal (vl-maybe-range-fix acl2::x)
                        (vl-maybe-range-fix x-equiv)))
        :rule-classes (:congruence))

      Theorem: vl-maybe-range-fix-under-vl-maybe-range-equiv

      (defthm vl-maybe-range-fix-under-vl-maybe-range-equiv
        (vl-maybe-range-equiv (vl-maybe-range-fix acl2::x)
                              acl2::x)
        :rule-classes (:rewrite :rewrite-quoted-constant))

      Theorem: equal-of-vl-maybe-range-fix-1-forward-to-vl-maybe-range-equiv

      (defthm
            equal-of-vl-maybe-range-fix-1-forward-to-vl-maybe-range-equiv
        (implies (equal (vl-maybe-range-fix acl2::x)
                        acl2::y)
                 (vl-maybe-range-equiv acl2::x acl2::y))
        :rule-classes :forward-chaining)

      Theorem: equal-of-vl-maybe-range-fix-2-forward-to-vl-maybe-range-equiv

      (defthm
            equal-of-vl-maybe-range-fix-2-forward-to-vl-maybe-range-equiv
        (implies (equal acl2::x (vl-maybe-range-fix acl2::y))
                 (vl-maybe-range-equiv acl2::x acl2::y))
        :rule-classes :forward-chaining)

      Theorem: vl-maybe-range-equiv-of-vl-maybe-range-fix-1-forward

      (defthm vl-maybe-range-equiv-of-vl-maybe-range-fix-1-forward
        (implies (vl-maybe-range-equiv (vl-maybe-range-fix acl2::x)
                                       acl2::y)
                 (vl-maybe-range-equiv acl2::x acl2::y))
        :rule-classes :forward-chaining)

      Theorem: vl-maybe-range-equiv-of-vl-maybe-range-fix-2-forward

      (defthm vl-maybe-range-equiv-of-vl-maybe-range-fix-2-forward
        (implies
             (vl-maybe-range-equiv acl2::x (vl-maybe-range-fix acl2::y))
             (vl-maybe-range-equiv acl2::x acl2::y))
        :rule-classes :forward-chaining)