• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • 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
            • Vl-loadconfig-p
            • Vl-loadconfig-fix
            • Make-vl-loadconfig
            • Vl-loadconfig-clean
              • Vl-clean-search-extensions-aux
              • Vl-clean-search-extension
              • Vl-clean-search-extensions
            • Vl-loadconfig-equiv
            • Change-vl-loadconfig
            • Vl-loadconfig->include-dirs
            • Vl-loadconfig->start-names
            • Vl-loadconfig->start-files
            • Vl-loadconfig->search-path
            • Vl-loadconfig->search-exts
            • Vl-loadconfig->flush-tries
            • Vl-loadconfig->strictp
            • Vl-loadconfig->mintime
            • Vl-loadconfig->filemapp
            • Vl-loadconfig->edition
            • Vl-loadconfig->defines
          • 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
        • Transforms
        • Lint
        • Mlib
        • Server
        • Kit
        • Printer
        • Esim-vl
        • Well-formedness
      • Sv
      • Fgl
      • Vwsim
      • Vl
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Math
    • Testing-utilities
  • Vl-loadconfig

Vl-loadconfig-clean

Normalize a load configuration to avoid, e.g., redundant search paths and extensions.

Signature
(vl-loadconfig-clean config) → new-config
Arguments
config — Guard (vl-loadconfig-p config).
Returns
new-config — Type (vl-loadconfig-p new-config).

We clean up the load configuration in a couple of ways. This is partially an optimization that will help us to avoid looking in the same directories multiple times. It also helps to prevent spurious "ambiguous load" warnings that could arise if someone gives the same search extensions multiple times.

Definitions and Theorems

Function: vl-loadconfig-clean

(defun vl-loadconfig-clean (config)
 (declare (xargs :guard (vl-loadconfig-p config)))
 (let ((__function__ 'vl-loadconfig-clean))
  (declare (ignorable __function__))
  (b* (((vl-loadconfig config)))
   (change-vl-loadconfig
     config
     :start-names (mergesort config.start-names)
     :search-path (remove-duplicates-equal config.search-path)
     :search-exts (vl-clean-search-extensions config.search-exts)
     :include-dirs (remove-duplicates-equal config.include-dirs)))))

Theorem: vl-loadconfig-p-of-vl-loadconfig-clean

(defthm vl-loadconfig-p-of-vl-loadconfig-clean
  (b* ((new-config (vl-loadconfig-clean config)))
    (vl-loadconfig-p new-config))
  :rule-classes :rewrite)

Subtopics

Vl-clean-search-extensions-aux
(vl-clean-search-extensions-aux x) maps vl-clean-search-extension across a list.
Vl-clean-search-extension
Normalize search extensions so that they don't have leading dots.
Vl-clean-search-extensions