• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
        • Warnings
        • Primitives
        • Use-set
        • Syntax
        • Getting-started
        • Utilities
        • Loader
          • Preprocessor
          • Vl-loadconfig
          • Lexer
          • Vl-loadstate
          • Parser
          • Vl-load-merge-descriptions
          • Scope-of-defines
          • Vl-load-file
          • Vl-flush-out-descriptions
          • Vl-description
          • Vl-loadresult
          • Vl-read-file
          • Vl-find-basename/extension
          • Vl-find-file
          • Vl-read-files
          • Extended-characters
          • Vl-load
          • Vl-load-main
          • Vl-load-description
          • Vl-descriptions-left-to-load
          • Inject-warnings
          • Vl-load-descriptions
          • Vl-load-files
          • Vl-load-summary
          • Vl-collect-modules-from-descriptions
          • Vl-descriptionlist
            • Vl-descriptionlist-fix
            • Vl-descriptionlist-p
              • Vl-descriptionlist-p-basics
              • Vl-descriptionlist->names
                • Vl-descriptionlist->names-nrev
            • Vl-descriptionlist-equiv
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • 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
        (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