• 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-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)