• 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
          • Preprocessor
          • Vl-loadconfig
          • Vl-loadstate
          • Lexer
          • Parser
          • Vl-load-merge-descriptions
          • Vl-find-basename/extension
          • Vl-load-file
          • Vl-loadresult
          • Scope-of-defines
          • Vl-find-file
          • Vl-flush-out-descriptions
          • Vl-description
          • Vl-read-file
          • Vl-includeskips-report-gather
          • Vl-load-main
          • Extended-characters
          • Vl-load
          • Vl-load-description
          • Vl-descriptions-left-to-load
          • Inject-warnings
          • Vl-preprocess-debug
          • Vl-write-preprocessor-debug-file
          • Vl-read-file-report-gather
          • Vl-load-descriptions
          • Vl-load-files
          • Translate-off
          • Vl-load-read-file-hook
          • Vl-read-file-report
          • Vl-loadstate-pad
          • Vl-load-summary
          • Vl-collect-modules-from-descriptions
          • Vl-loadstate->warnings
          • Vl-iskips-report
          • Vl-descriptionlist
            • Vl-descriptionlist-fix
            • Vl-descriptionlist-p
              • Vl-descriptionlist-p-basics
              • Vl-descriptionlist->orignames
              • Vl-descriptionlist->names
                • Vl-descriptionlist->names-nrev
            • Vl-descriptionlist-equiv
        • Warnings
        • Getting-started
        • Utilities
        • Printer
        • Kit
        • Mlib
        • Transforms
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Vl-descriptionlist-p

Vl-descriptionlist->names

Collect all names introduced by a vl-descriptionlist-p.

Signature
(vl-descriptionlist->names x) → *
Arguments
x — Guard (vl-descriptionlist-p x).

Note that descriptions may not have names, in which case we don't add anything. In other words, the list of names returned may be shorter than the number of descriptions in the list.

Definitions and Theorems

Function: vl-descriptionlist->names

(defun vl-descriptionlist->names (x)
 (declare (xargs :guard (vl-descriptionlist-p x)))
 (let ((__function__ 'vl-descriptionlist->names))
  (declare (ignorable __function__))
  (mbe
     :logic
     (if (consp x)
         (if (vl-description->name (car x))
             (cons (vl-description->name (car x))
                   (vl-descriptionlist->names (cdr x)))
           (vl-descriptionlist->names (cdr x)))
       nil)
     :exec
     (if (atom x)
         nil
       (with-local-nrev (vl-descriptionlist->names-nrev x nrev))))))

Theorem: vl-descriptionlist->names-nrev-removal

(defthm vl-descriptionlist->names-nrev-removal
  (equal (vl-descriptionlist->names-nrev x nrev)
         (append nrev (vl-descriptionlist->names x))))

Theorem: vl-descriptionlist->names-when-not-consp

(defthm vl-descriptionlist->names-when-not-consp
  (implies (not (consp x))
           (equal (vl-descriptionlist->names x)
                  nil)))

Theorem: vl-descriptionlist->names-of-cons

(defthm vl-descriptionlist->names-of-cons
  (equal (vl-descriptionlist->names (cons a x))
         (if (vl-description->name a)
             (cons (vl-description->name a)
                   (vl-descriptionlist->names x))
           (vl-descriptionlist->names x))))

Theorem: vl-descriptionlist->names-of-list-fix

(defthm vl-descriptionlist->names-of-list-fix
  (equal (vl-descriptionlist->names (list-fix x))
         (vl-descriptionlist->names x)))

Theorem: vl-descriptionlist->names-preserves-list-equiv

(defthm vl-descriptionlist->names-preserves-list-equiv
  (implies (list-equiv x x-equiv)
           (equal (vl-descriptionlist->names x)
                  (vl-descriptionlist->names x-equiv)))
  :rule-classes (:congruence))

Theorem: vl-descriptionlist->names-of-append

(defthm vl-descriptionlist->names-of-append
  (equal (vl-descriptionlist->names (append x y))
         (append (vl-descriptionlist->names x)
                 (vl-descriptionlist->names y))))

Theorem: vl-descriptionlist->names-of-rev

(defthm vl-descriptionlist->names-of-rev
  (equal (vl-descriptionlist->names (rev x))
         (rev (vl-descriptionlist->names x))))

Theorem: string-listp-of-vl-descriptionlist->names

(defthm string-listp-of-vl-descriptionlist->names
  (string-listp (vl-descriptionlist->names x)))

Theorem: no-nil-in-vl-descriptionlist->names

(defthm no-nil-in-vl-descriptionlist->names
  (not (member nil (vl-descriptionlist->names x))))

Theorem: vl-descriptionlist->names-of-vl-descriptionlist-fix-x

(defthm vl-descriptionlist->names-of-vl-descriptionlist-fix-x
  (equal (vl-descriptionlist->names (vl-descriptionlist-fix x))
         (vl-descriptionlist->names x)))

Theorem: vl-descriptionlist->names-vl-descriptionlist-equiv-congruence-on-x

(defthm
 vl-descriptionlist->names-vl-descriptionlist-equiv-congruence-on-x
 (implies (vl-descriptionlist-equiv x x-equiv)
          (equal (vl-descriptionlist->names x)
                 (vl-descriptionlist->names x-equiv)))
 :rule-classes :congruence)

Subtopics

Vl-descriptionlist->names-nrev