• 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-paramdecllist-enumname-declarations

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

    (defun vl-paramdecllist-enumname-declarations
           (x seen)
           (declare (xargs :guard (and (vl-paramdecllist-p x)
                                       (vl-datatype-map-p seen))))
           (let ((__function__ 'vl-paramdecllist-enumname-declarations))
                (declare (ignorable __function__))
                (b* (((when (atom x))
                      (mv nil nil nil (vl-datatype-map-fix seen)))
                     ((mv new-x1 warnings1 decls1 seen)
                      (vl-paramdecl-enumname-declarations (car x)
                                                          seen))
                     ((mv new-x2 warnings2 decls2 seen)
                      (vl-paramdecllist-enumname-declarations (cdr x)
                                                              seen)))
                    (mv (cons new-x1 new-x2)
                        (append-without-guard warnings1 warnings2)
                        (append-without-guard decls1 decls2)
                        seen))))

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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