• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
      • Gl
      • Esim
      • Vl2014
      • Sv
      • Vwsim
      • Fgl
      • Vl
        • Syntax
        • Loader
          • Preprocessor
          • Vl-loadconfig
          • Vl-loadstate
          • Lexer
          • Parser
          • Vl-load-merge-descriptions
          • Vl-find-basename/extension
            • Vl-find-basename/extension-aux
            • Vl-find-highest-priority-extension
            • Vl-split-filename
            • Vl-dirxcache
            • Vl-dirxlist-cache
          • Vl-load-file
          • Vl-loadresult
          • Vl-find-file
          • Scope-of-defines
          • Vl-flush-out-descriptions
          • Vl-description
          • Vl-read-file
          • Vl-includeskips-report-gather
          • Vl-load-main
          • Extended-characters
          • Vl-load
          • Vl-load-description
          • Vl-preprocess-debug
          • Vl-descriptions-left-to-load
          • Inject-warnings
          • Vl-read-file-report-gather
          • Vl-write-preprocessor-debug-file
          • Vl-load-descriptions
          • Vl-load-files
          • Translate-off
          • Vl-load-read-file-hook
          • Vl-loadstate-pad
          • Vl-read-file-report
          • Vl-load-summary
          • Vl-collect-modules-from-descriptions
          • Vl-loadstate->warnings
          • Vl-iskips-report
          • Vl-descriptionlist
        • Warnings
        • Getting-started
        • Utilities
        • Printer
        • Kit
        • Mlib
        • Transforms
      • X86isa
      • Svl
      • Rtl
    • Software-verification
    • Testing-utilities
    • Math
  • Loader

Vl-find-basename/extension

Alternative to vl-find-file that can take a list of extensions.

Signature
(vl-find-basename/extension filename 
                            extensions searchcache warnings) 
 
  → 
(mv realpath warnings)
Arguments
filename — Base file name to look for (no extension).
    Guard (stringp filename).
extensions — List of extensions to try.
    Guard (string-listp extensions).
searchcache — Directories to search, with cached file lists.
    Guard (vl-dirxlist-cache-p searchcache).
warnings — Warnings accumulator.
    Guard (vl-warninglist-p warnings).
Returns
realpath — Real dirname/filename.ext path to use, if found.
    Type (maybe-stringp realpath).
warnings — Possibly extended with warnings about ambiguous files.
    Type (vl-warninglist-p warnings).

Definitions and Theorems

Function: vl-find-basename/extension

(defun
 vl-find-basename/extension
 (filename extensions searchcache warnings)
 (declare (xargs :guard (and (stringp filename)
                             (string-listp extensions)
                             (vl-dirxlist-cache-p searchcache)
                             (vl-warninglist-p warnings))))
 (let
  ((__function__ 'vl-find-basename/extension))
  (declare (ignorable __function__))
  (b*
   ((searchcache (vl-dirxlist-cache-fix searchcache))
    ((when (atom searchcache))
     (mv nil (ok)))
    ((cons dir dirxcache) (car searchcache))
    ((mv realfile warnings)
     (vl-find-basename/extension-aux
          filename
          extensions dir dirxcache warnings))
    ((when realfile)
     (mv realfile warnings)))
   (vl-find-basename/extension filename extensions (cdr searchcache)
                               warnings))))

Theorem: maybe-stringp-of-vl-find-basename/extension.realpath

(defthm
 maybe-stringp-of-vl-find-basename/extension.realpath
 (b*
    (((mv ?realpath ?warnings)
      (vl-find-basename/extension filename
                                  extensions searchcache warnings)))
    (maybe-stringp realpath))
 :rule-classes :type-prescription)

Theorem: vl-warninglist-p-of-vl-find-basename/extension.warnings

(defthm
 vl-warninglist-p-of-vl-find-basename/extension.warnings
 (b*
    (((mv ?realpath ?warnings)
      (vl-find-basename/extension filename
                                  extensions searchcache warnings)))
    (vl-warninglist-p warnings))
 :rule-classes :rewrite)

Theorem: vl-find-basename/extension-of-str-fix-filename

(defthm
 vl-find-basename/extension-of-str-fix-filename
 (equal
      (vl-find-basename/extension (str-fix filename)
                                  extensions searchcache warnings)
      (vl-find-basename/extension filename
                                  extensions searchcache warnings)))

Theorem: vl-find-basename/extension-streqv-congruence-on-filename

(defthm
 vl-find-basename/extension-streqv-congruence-on-filename
 (implies
  (streqv filename filename-equiv)
  (equal
      (vl-find-basename/extension filename
                                  extensions searchcache warnings)
      (vl-find-basename/extension filename-equiv
                                  extensions searchcache warnings)))
 :rule-classes :congruence)

Theorem: vl-find-basename/extension-of-string-list-fix-extensions

(defthm
 vl-find-basename/extension-of-string-list-fix-extensions
 (equal
   (vl-find-basename/extension filename (string-list-fix extensions)
                               searchcache warnings)
   (vl-find-basename/extension filename
                               extensions searchcache warnings)))

Theorem: vl-find-basename/extension-string-list-equiv-congruence-on-extensions

(defthm
 vl-find-basename/extension-string-list-equiv-congruence-on-extensions
 (implies
   (str::string-list-equiv extensions extensions-equiv)
   (equal
        (vl-find-basename/extension filename
                                    extensions searchcache warnings)
        (vl-find-basename/extension
             filename
             extensions-equiv searchcache warnings)))
 :rule-classes :congruence)

Theorem: vl-find-basename/extension-of-vl-dirxlist-cache-fix-searchcache

(defthm
 vl-find-basename/extension-of-vl-dirxlist-cache-fix-searchcache
 (equal
     (vl-find-basename/extension filename extensions
                                 (vl-dirxlist-cache-fix searchcache)
                                 warnings)
     (vl-find-basename/extension filename
                                 extensions searchcache warnings)))

Theorem: vl-find-basename/extension-vl-dirxlist-cache-equiv-congruence-on-searchcache

(defthm
 vl-find-basename/extension-vl-dirxlist-cache-equiv-congruence-on-searchcache
 (implies
   (vl-dirxlist-cache-equiv searchcache searchcache-equiv)
   (equal
        (vl-find-basename/extension filename
                                    extensions searchcache warnings)
        (vl-find-basename/extension
             filename
             extensions searchcache-equiv warnings)))
 :rule-classes :congruence)

Theorem: vl-find-basename/extension-of-vl-warninglist-fix-warnings

(defthm
 vl-find-basename/extension-of-vl-warninglist-fix-warnings
 (equal
      (vl-find-basename/extension filename extensions searchcache
                                  (vl-warninglist-fix warnings))
      (vl-find-basename/extension filename
                                  extensions searchcache warnings)))

Theorem: vl-find-basename/extension-vl-warninglist-equiv-congruence-on-warnings

(defthm
 vl-find-basename/extension-vl-warninglist-equiv-congruence-on-warnings
 (implies
   (vl-warninglist-equiv warnings warnings-equiv)
   (equal
        (vl-find-basename/extension filename
                                    extensions searchcache warnings)
        (vl-find-basename/extension
             filename
             extensions searchcache warnings-equiv)))
 :rule-classes :congruence)

Subtopics

Vl-find-basename/extension-aux
Search for a filename with any of a list of extensions.
Vl-find-highest-priority-extension
Vl-split-filename
Split a filename into its basename and extension.
Vl-dirxcache
Fast alist mapping file prefixes to lists of extensions.
Vl-dirxlist-cache
Slow alist mapping directories names to their vl-dirxcaches.