• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Vwsim
      • 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-vardecl-enumname-declarations
                • Vl-typedef-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-paramdecl-enumname-declarations

    Signature
    (vl-paramdecl-enumname-declarations x seen) 
      → 
    (mv new-x warnings paramdecls seen-out)
    Arguments
    x — Guard (vl-paramdecl-p x).
    seen — Guard (vl-datatype-map-p seen).
    Returns
    new-x — Type (vl-paramdecl-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-paramdecl-enumname-declarations

    (defun vl-paramdecl-enumname-declarations (x seen)
     (declare (xargs :guard (and (vl-paramdecl-p x)
                                 (vl-datatype-map-p seen))))
     (let ((__function__ 'vl-paramdecl-enumname-declarations))
      (declare (ignorable __function__))
      (b*
       (((vl-paramdecl x))
        ((mv new-type warnings paramdecls seen)
         (vl-paramtype-case
            x.type :vl-typeparam
            (b* (((mv type warnings paramdecls seen)
                  (if x.type.default (vl-datatype-enumname-declarations
                                          x.type.default nil x.loc seen)
                    (mv nil
                        nil nil (vl-datatype-map-fix seen)))))
              (mv (change-vl-typeparam x.type
                                       :default type)
                  warnings paramdecls seen))
            :vl-explicitvalueparam
            (b* (((mv type warnings paramdecls seen)
                  (vl-datatype-enumname-declarations
                       x.type.type nil x.loc seen)))
              (mv (change-vl-explicitvalueparam x.type
                                                :type type)
                  warnings paramdecls seen))
            :otherwise (mv x.type
                           nil nil (vl-datatype-map-fix seen)))))
       (mv (change-vl-paramdecl x :type new-type)
           warnings paramdecls seen))))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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