• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Fgl
      • Vl
        • Syntax
        • Loader
        • Warnings
        • Getting-started
        • Utilities
        • Printer
        • Kit
        • Mlib
        • Transforms
          • Unparameterization
          • Elaborate
          • Addnames
          • Annotate
            • Increment-elim
            • Make-implicit-wires
            • Basic-bind-elim
            • Argresolve
            • Basicsanity
            • Portdecl-sign
            • Enum-names
              • Vl-enumname-range-declarations
              • Vl-interfacelist-add-enumname-declarations
              • Vl-packagelist-add-enumname-declarations
              • Vl-modulelist-add-enumname-declarations
              • Vl-classlist-add-enumname-declarations
              • Vl-enumitemlist-enumname-declarations
              • Vl-enumname-declarations
              • Vl-paramdecl-enumname-declarations
              • Vl-paramdecllist-enumname-declarations
              • Vl-vardecllist-enumname-declarations
              • Vl-typedeflist-enumname-declarations
              • Vl-typedef-enumname-declarations
              • Vl-vardecl-enumname-declarations
                • Vl-package-add-enumname-declarations
                • Vl-design-add-enumname-declarations
                • Vl-interface-add-enumname-declarations
                • Vl-class-add-enumname-declarations
                • Vl-module-add-enumname-declarations
                • Vl-datatype-map
              • Port-resolve
              • Udp-elim
              • Vl-annotate-design
              • Vl-annotate-module
            • Clean-warnings
            • Eliminitial
            • Custom-transform-hooks
            • Problem-modules
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Testing-utilities
      • Math
    • Enum-names

    Vl-vardecl-enumname-declarations

    Signature
    (vl-vardecl-enumname-declarations x seen) 
      → 
    (mv new-x warnings paramdecls seen-out)
    Arguments
    x — Guard (vl-vardecl-p x).
    seen — Guard (vl-datatype-map-p seen).
    Returns
    new-x — Type (vl-vardecl-p new-x).
    warnings — Type (vl-warninglist-p warnings).
    paramdecls — Type (vl-paramdecllist-p paramdecls).
    seen-out — Type (vl-datatype-map-p seen-out).

    Definitions and Theorems

    Function: vl-vardecl-enumname-declarations

    (defun
     vl-vardecl-enumname-declarations
     (x seen)
     (declare (xargs :guard (and (vl-vardecl-p x)
                                 (vl-datatype-map-p seen))))
     (let
       ((__function__ 'vl-vardecl-enumname-declarations))
       (declare (ignorable __function__))
       (b* (((vl-vardecl x))
            ((mv new-type warnings paramdecls seen)
             (vl-datatype-enumname-declarations x.type nil x.loc seen)))
           (mv (change-vl-vardecl x :type new-type)
               warnings paramdecls seen))))

    Theorem: vl-vardecl-p-of-vl-vardecl-enumname-declarations.new-x

    (defthm vl-vardecl-p-of-vl-vardecl-enumname-declarations.new-x
            (b* (((mv ?new-x ?warnings ?paramdecls ?seen-out)
                  (vl-vardecl-enumname-declarations x seen)))
                (vl-vardecl-p new-x))
            :rule-classes :rewrite)

    Theorem: vl-warninglist-p-of-vl-vardecl-enumname-declarations.warnings

    (defthm
         vl-warninglist-p-of-vl-vardecl-enumname-declarations.warnings
         (b* (((mv ?new-x ?warnings ?paramdecls ?seen-out)
               (vl-vardecl-enumname-declarations x seen)))
             (vl-warninglist-p warnings))
         :rule-classes :rewrite)

    Theorem: vl-paramdecllist-p-of-vl-vardecl-enumname-declarations.paramdecls

    (defthm
       vl-paramdecllist-p-of-vl-vardecl-enumname-declarations.paramdecls
       (b* (((mv ?new-x ?warnings ?paramdecls ?seen-out)
             (vl-vardecl-enumname-declarations x seen)))
           (vl-paramdecllist-p paramdecls))
       :rule-classes :rewrite)

    Theorem: vl-datatype-map-p-of-vl-vardecl-enumname-declarations.seen-out

    (defthm
         vl-datatype-map-p-of-vl-vardecl-enumname-declarations.seen-out
         (b* (((mv ?new-x ?warnings ?paramdecls ?seen-out)
               (vl-vardecl-enumname-declarations x seen)))
             (vl-datatype-map-p seen-out))
         :rule-classes :rewrite)

    Theorem: vl-vardecl-enumname-declarations-of-vl-vardecl-fix-x

    (defthm vl-vardecl-enumname-declarations-of-vl-vardecl-fix-x
            (equal (vl-vardecl-enumname-declarations (vl-vardecl-fix x)
                                                     seen)
                   (vl-vardecl-enumname-declarations x seen)))

    Theorem: vl-vardecl-enumname-declarations-vl-vardecl-equiv-congruence-on-x

    (defthm
       vl-vardecl-enumname-declarations-vl-vardecl-equiv-congruence-on-x
       (implies (vl-vardecl-equiv x x-equiv)
                (equal (vl-vardecl-enumname-declarations x seen)
                       (vl-vardecl-enumname-declarations x-equiv seen)))
       :rule-classes :congruence)

    Theorem: vl-vardecl-enumname-declarations-of-vl-datatype-map-fix-seen

    (defthm
     vl-vardecl-enumname-declarations-of-vl-datatype-map-fix-seen
     (equal
         (vl-vardecl-enumname-declarations x (vl-datatype-map-fix seen))
         (vl-vardecl-enumname-declarations x seen)))

    Theorem: vl-vardecl-enumname-declarations-vl-datatype-map-equiv-congruence-on-seen

    (defthm
     vl-vardecl-enumname-declarations-vl-datatype-map-equiv-congruence-on-seen
     (implies (vl-datatype-map-equiv seen seen-equiv)
              (equal (vl-vardecl-enumname-declarations x seen)
                     (vl-vardecl-enumname-declarations x seen-equiv)))
     :rule-classes :congruence)