• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Fgl
      • Vwsim
      • 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
            • Port-resolve
              • Vl-modulelist-resolve-nonansi-interfaceports
              • Vl-interfacelist-resolve-nonansi-interfaceports
              • Vl-ansi-portdecl-resolve
              • Vl-interfacelist-resolve-ansi-portdecls
              • Vl-modulelist-resolve-ansi-portdecls
              • Vl-ansi-portdecl-to-regularport
              • Vl-ansi-portdecl-to-regularport-from-previous-regularport
              • Vl-resolve-ansi-portdecls
                • Vl-nettype-for-parsed-ansi-port
                • Vl-loaditems-remove-interfaceport-decls
                • Vl-vardecl-is-really-interfaceport
                • Vl-name-is-interface-or-type
                • Vl-interface/type-warn-about-unexpected-lookup
                • Vl-interface-resolve-nonansi-interfaceports
                • Vl-module-resolve-nonansi-interfaceports
                • Vl-interface-resolve-ansi-portdecls
                • Vl-ports-resolve-interfaces
                • Vl-module-resolve-ansi-portdecls
                • Vl-ansi-portdecl-consistency-check
                • Vl-design-resolve-nonansi-interfaceports
                • Vl-ansi-portdecl-to-interfaceport
                • Vl-ansi-portdecl-regularport-type
                • Vl-design-resolve-ansi-portdecls
              • Udp-elim
              • Vl-annotate-design
              • Vl-annotate-module
            • Clean-warnings
            • Eliminitial
            • Custom-transform-hooks
            • Problem-modules
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Port-resolve

    Vl-resolve-ansi-portdecls

    Signature
    (vl-resolve-ansi-portdecls x 
                               ports-acc portdecls-acc vardecls-acc ss) 
     
      → 
    (mv warnings ports portdecls vardecls)
    Arguments
    x — Guard (vl-ansi-portdecllist-p x).
    ports-acc — Guard (vl-portlist-p ports-acc).
    portdecls-acc — Guard (vl-portdecllist-p portdecls-acc).
    vardecls-acc — Guard (vl-vardecllist-p vardecls-acc).
    ss — Guard (vl-scopestack-p ss).
    Returns
    warnings — Type (vl-warninglist-p warnings).
    ports — Type (vl-portlist-p ports).
    portdecls — Type (vl-portdecllist-p portdecls).
    vardecls — Type (vl-vardecllist-p vardecls).

    Definitions and Theorems

    Function: vl-resolve-ansi-portdecls

    (defun vl-resolve-ansi-portdecls
           (x ports-acc portdecls-acc vardecls-acc ss)
     (declare (xargs :guard (and (vl-ansi-portdecllist-p x)
                                 (vl-portlist-p ports-acc)
                                 (vl-portdecllist-p portdecls-acc)
                                 (vl-vardecllist-p vardecls-acc)
                                 (vl-scopestack-p ss))))
     (declare
      (xargs
       :guard (and (equal (len portdecls-acc)
                          (len (vl-collect-regular-ports ports-acc)))
                   (equal (len vardecls-acc)
                          (len (vl-collect-regular-ports ports-acc))))))
     (let ((__function__ 'vl-resolve-ansi-portdecls))
       (declare (ignorable __function__))
       (b* (((when (atom x))
             (mv nil (rev (vl-portlist-fix ports-acc))
                 (rev (vl-portdecllist-fix portdecls-acc))
                 (rev (vl-vardecllist-fix vardecls-acc))))
            ((mv warnings1 port1 portdecls1 vardecls1)
             (vl-ansi-portdecl-resolve (car x)
                                       ports-acc
                                       portdecls-acc vardecls-acc ss))
            ((mv warnings-rest ports portdecls vardecls)
             (vl-resolve-ansi-portdecls
                  (cdr x)
                  (cons port1 ports-acc)
                  (append-without-guard portdecls1 portdecls-acc)
                  (append-without-guard vardecls1 vardecls-acc)
                  ss)))
         (mv (append-without-guard warnings1 warnings-rest)
             ports portdecls vardecls))))

    Theorem: vl-warninglist-p-of-vl-resolve-ansi-portdecls.warnings

    (defthm vl-warninglist-p-of-vl-resolve-ansi-portdecls.warnings
      (b* (((mv ?warnings ?ports ?portdecls ?vardecls)
            (vl-resolve-ansi-portdecls x ports-acc
                                       portdecls-acc vardecls-acc ss)))
        (vl-warninglist-p warnings))
      :rule-classes :rewrite)

    Theorem: vl-portlist-p-of-vl-resolve-ansi-portdecls.ports

    (defthm vl-portlist-p-of-vl-resolve-ansi-portdecls.ports
      (b* (((mv ?warnings ?ports ?portdecls ?vardecls)
            (vl-resolve-ansi-portdecls x ports-acc
                                       portdecls-acc vardecls-acc ss)))
        (vl-portlist-p ports))
      :rule-classes :rewrite)

    Theorem: vl-portdecllist-p-of-vl-resolve-ansi-portdecls.portdecls

    (defthm vl-portdecllist-p-of-vl-resolve-ansi-portdecls.portdecls
      (b* (((mv ?warnings ?ports ?portdecls ?vardecls)
            (vl-resolve-ansi-portdecls x ports-acc
                                       portdecls-acc vardecls-acc ss)))
        (vl-portdecllist-p portdecls))
      :rule-classes :rewrite)

    Theorem: vl-vardecllist-p-of-vl-resolve-ansi-portdecls.vardecls

    (defthm vl-vardecllist-p-of-vl-resolve-ansi-portdecls.vardecls
      (b* (((mv ?warnings ?ports ?portdecls ?vardecls)
            (vl-resolve-ansi-portdecls x ports-acc
                                       portdecls-acc vardecls-acc ss)))
        (vl-vardecllist-p vardecls))
      :rule-classes :rewrite)

    Theorem: vl-resolve-ansi-portdecls-of-vl-ansi-portdecllist-fix-x

    (defthm vl-resolve-ansi-portdecls-of-vl-ansi-portdecllist-fix-x
      (equal (vl-resolve-ansi-portdecls
                  (vl-ansi-portdecllist-fix x)
                  ports-acc portdecls-acc vardecls-acc ss)
             (vl-resolve-ansi-portdecls x ports-acc
                                        portdecls-acc vardecls-acc ss)))

    Theorem: vl-resolve-ansi-portdecls-vl-ansi-portdecllist-equiv-congruence-on-x

    (defthm
     vl-resolve-ansi-portdecls-vl-ansi-portdecllist-equiv-congruence-on-x
     (implies
      (vl-ansi-portdecllist-equiv x x-equiv)
      (equal (vl-resolve-ansi-portdecls
                  x
                  ports-acc portdecls-acc vardecls-acc ss)
             (vl-resolve-ansi-portdecls x-equiv ports-acc
                                        portdecls-acc vardecls-acc ss)))
     :rule-classes :congruence)

    Theorem: vl-resolve-ansi-portdecls-of-vl-portlist-fix-ports-acc

    (defthm vl-resolve-ansi-portdecls-of-vl-portlist-fix-ports-acc
      (equal (vl-resolve-ansi-portdecls x (vl-portlist-fix ports-acc)
                                        portdecls-acc vardecls-acc ss)
             (vl-resolve-ansi-portdecls x ports-acc
                                        portdecls-acc vardecls-acc ss)))

    Theorem: vl-resolve-ansi-portdecls-vl-portlist-equiv-congruence-on-ports-acc

    (defthm
     vl-resolve-ansi-portdecls-vl-portlist-equiv-congruence-on-ports-acc
     (implies
      (vl-portlist-equiv ports-acc ports-acc-equiv)
      (equal (vl-resolve-ansi-portdecls
                  x
                  ports-acc portdecls-acc vardecls-acc ss)
             (vl-resolve-ansi-portdecls x ports-acc-equiv
                                        portdecls-acc vardecls-acc ss)))
     :rule-classes :congruence)

    Theorem: vl-resolve-ansi-portdecls-of-vl-portdecllist-fix-portdecls-acc

    (defthm
         vl-resolve-ansi-portdecls-of-vl-portdecllist-fix-portdecls-acc
     (equal
          (vl-resolve-ansi-portdecls x ports-acc
                                     (vl-portdecllist-fix portdecls-acc)
                                     vardecls-acc ss)
          (vl-resolve-ansi-portdecls x ports-acc
                                     portdecls-acc vardecls-acc ss)))

    Theorem: vl-resolve-ansi-portdecls-vl-portdecllist-equiv-congruence-on-portdecls-acc

    (defthm
     vl-resolve-ansi-portdecls-vl-portdecllist-equiv-congruence-on-portdecls-acc
     (implies
      (vl-portdecllist-equiv portdecls-acc portdecls-acc-equiv)
      (equal
       (vl-resolve-ansi-portdecls
            x
            ports-acc portdecls-acc vardecls-acc ss)
       (vl-resolve-ansi-portdecls x ports-acc
                                  portdecls-acc-equiv vardecls-acc ss)))
     :rule-classes :congruence)

    Theorem: vl-resolve-ansi-portdecls-of-vl-vardecllist-fix-vardecls-acc

    (defthm vl-resolve-ansi-portdecls-of-vl-vardecllist-fix-vardecls-acc
     (equal (vl-resolve-ansi-portdecls x ports-acc portdecls-acc
                                       (vl-vardecllist-fix vardecls-acc)
                                       ss)
            (vl-resolve-ansi-portdecls x ports-acc
                                       portdecls-acc vardecls-acc ss)))

    Theorem: vl-resolve-ansi-portdecls-vl-vardecllist-equiv-congruence-on-vardecls-acc

    (defthm
     vl-resolve-ansi-portdecls-vl-vardecllist-equiv-congruence-on-vardecls-acc
     (implies
      (vl-vardecllist-equiv vardecls-acc vardecls-acc-equiv)
      (equal
       (vl-resolve-ansi-portdecls
            x
            ports-acc portdecls-acc vardecls-acc ss)
       (vl-resolve-ansi-portdecls x ports-acc
                                  portdecls-acc vardecls-acc-equiv ss)))
     :rule-classes :congruence)

    Theorem: vl-resolve-ansi-portdecls-of-vl-scopestack-fix-ss

    (defthm vl-resolve-ansi-portdecls-of-vl-scopestack-fix-ss
     (equal
         (vl-resolve-ansi-portdecls x ports-acc portdecls-acc
                                    vardecls-acc (vl-scopestack-fix ss))
         (vl-resolve-ansi-portdecls x ports-acc
                                    portdecls-acc vardecls-acc ss)))

    Theorem: vl-resolve-ansi-portdecls-vl-scopestack-equiv-congruence-on-ss

    (defthm
         vl-resolve-ansi-portdecls-vl-scopestack-equiv-congruence-on-ss
     (implies
      (vl-scopestack-equiv ss ss-equiv)
      (equal
       (vl-resolve-ansi-portdecls
            x
            ports-acc portdecls-acc vardecls-acc ss)
       (vl-resolve-ansi-portdecls x ports-acc
                                  portdecls-acc vardecls-acc ss-equiv)))
     :rule-classes :congruence)