• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • 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
              • Vl-convert-namedargs
              • Vl-unhierarchicalize-interfaceport
              • Vl-interfacelist-argresolve
              • Vl-modulelist-argresolve
              • Vl-gateinst-dirassign
                • Vl-plainarglist-assign-last-dir
                  • Vl-plainarglist-assign-dir
                • Vl-arguments-argresolve
                • Vl-unhierarchicalize-interfaceports
                • Vl-check-blankargs
                • Vl-annotate-plainargs
                • Vl-modinst-maybe-argresolve
                • Vl-modinst-argresolve
                • Vl-modinstlist-argresolve
                • Vl-gateinstlist-dirassign
                • Vl-interface-argresolve
                • Vl-module-argresolve
                • Vl-namedarglist-alist
                • Vl-make-namedarg-alist
                • Vl-design-argresolve
                • Vl-fast-find-namedarg
                • Vl-namedarg-alist
                • Vl-scopeitem-modport-p
                • Vl-scopeitem-modinst-p
                • Vl-scopeitem-interfaceport-p
                • Vl-port-interface-p
              • Basicsanity
              • Portdecl-sign
              • Enum-names
              • Port-resolve
              • Udp-elim
              • Vl-annotate-design
              • Vl-annotate-module
            • Clean-warnings
            • Eliminitial
            • Custom-transform-hooks
            • Problem-modules
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Vl-gateinst-dirassign

    Vl-plainarglist-assign-last-dir

    Assign DIR to the last argument in the list X, leave the other arguments unchanged.

    Signature
    (vl-plainarglist-assign-last-dir dir x) → new-x
    Arguments
    dir — Guard (vl-direction-p dir).
    x — Guard (vl-plainarglist-p x).
    Returns
    new-x — Type (vl-plainarglist-p new-x).

    Definitions and Theorems

    Function: vl-plainarglist-assign-last-dir

    (defun vl-plainarglist-assign-last-dir (dir x)
     (declare (xargs :guard (and (vl-direction-p dir)
                                 (vl-plainarglist-p x))))
     (let ((__function__ 'vl-plainarglist-assign-last-dir))
       (declare (ignorable __function__))
       (cond ((atom x) nil)
             ((atom (cdr x))
              (list (change-vl-plainarg (car x)
                                        :dir (vl-direction-fix dir))))
             (t (cons (vl-plainarg-fix (car x))
                      (vl-plainarglist-assign-last-dir dir (cdr x)))))))

    Theorem: vl-plainarglist-p-of-vl-plainarglist-assign-last-dir

    (defthm vl-plainarglist-p-of-vl-plainarglist-assign-last-dir
      (b* ((new-x (vl-plainarglist-assign-last-dir dir x)))
        (vl-plainarglist-p new-x))
      :rule-classes :rewrite)

    Theorem: vl-plainarglist-assign-last-dir-of-vl-direction-fix-dir

    (defthm vl-plainarglist-assign-last-dir-of-vl-direction-fix-dir
      (equal (vl-plainarglist-assign-last-dir (vl-direction-fix dir)
                                              x)
             (vl-plainarglist-assign-last-dir dir x)))

    Theorem: vl-plainarglist-assign-last-dir-vl-direction-equiv-congruence-on-dir

    (defthm
     vl-plainarglist-assign-last-dir-vl-direction-equiv-congruence-on-dir
     (implies (vl-direction-equiv dir dir-equiv)
              (equal (vl-plainarglist-assign-last-dir dir x)
                     (vl-plainarglist-assign-last-dir dir-equiv x)))
     :rule-classes :congruence)

    Theorem: vl-plainarglist-assign-last-dir-of-vl-plainarglist-fix-x

    (defthm vl-plainarglist-assign-last-dir-of-vl-plainarglist-fix-x
      (equal
           (vl-plainarglist-assign-last-dir dir (vl-plainarglist-fix x))
           (vl-plainarglist-assign-last-dir dir x)))

    Theorem: vl-plainarglist-assign-last-dir-vl-plainarglist-equiv-congruence-on-x

    (defthm
     vl-plainarglist-assign-last-dir-vl-plainarglist-equiv-congruence-on-x
     (implies (vl-plainarglist-equiv x x-equiv)
              (equal (vl-plainarglist-assign-last-dir dir x)
                     (vl-plainarglist-assign-last-dir dir x-equiv)))
     :rule-classes :congruence)