• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • 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-find-basename/extension-aux
              • Vl-find-highest-priority-extension
              • Vl-split-filename
              • Vl-dirxcache
              • Vl-dirxlist-cache
            • 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
          • Warnings
          • Getting-started
          • Utilities
          • Printer
          • Kit
          • Mlib
          • Transforms
        • X86isa
        • Svl
        • Rtl
      • Software-verification
      • Math
      • Testing-utilities
    • Vl-find-basename/extension

    Vl-find-basename/extension-aux

    Search for a filename with any of a list of extensions.

    Signature
    (vl-find-basename/extension-aux filename 
                                    extensions dir dirxcache warnings) 
     
      → 
    (mv realfile warnings)
    Arguments
    filename — Base filename to search for.
        Guard (stringp filename).
    extensions — Possible extensions to add to it.
        Guard (string-listp extensions).
    dir — Directory to search in.
        Guard (stringp dir).
    dirxcache — Cache for this directory and extensions.
        Guard (vl-dirxcache-p dirxcache).
    warnings — Warnings accumulator.
        Guard (vl-warninglist-p warnings).
    Returns
    realfile — In case of a match, the full dirname/filename.ext path to load. Otherwise nil.
        Type (maybe-stringp realfile).
    warnings — Possibly extended with ambiguity warnings.
        Type (vl-warninglist-p warnings).

    Definitions and Theorems

    Function: vl-find-basename/extension-aux

    (defun vl-find-basename/extension-aux
           (filename extensions dir dirxcache warnings)
     (declare (xargs :guard (and (stringp filename)
                                 (string-listp extensions)
                                 (stringp dir)
                                 (vl-dirxcache-p dirxcache)
                                 (vl-warninglist-p warnings))))
     (let ((__function__ 'vl-find-basename/extension-aux))
      (declare (ignorable __function__))
      (b*
       ((filename (string-fix filename))
        (dir (string-fix dir))
        (dirxcache (vl-dirxcache-fix dirxcache))
        (found-exts (cdr (hons-get filename dirxcache)))
        ((when (atom found-exts)) (mv nil (ok)))
        (winner
          (if (atom (cdr found-exts))
              (first found-exts)
            (vl-find-highest-priority-extension extensions found-exts)))
        (realfile (vl-extend-pathname dir (cat filename "." winner)))
        (warnings
         (if (atom (cdr found-exts))
             (ok)
          (warn
           :type :vl-ambiguous-load
           :msg
           "Loading ~x0 based on extension order, but ~
                                   there are also other matching files in this ~
                                   directory.  Directory ~x0.  Matching ~
                                   extensions: ~&1."
           :args (list realfile found-exts)))))
       (mv realfile warnings))))

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

    (defthm maybe-stringp-of-vl-find-basename/extension-aux.realfile
      (b* (((mv ?realfile ?warnings)
            (vl-find-basename/extension-aux
                 filename
                 extensions dir dirxcache warnings)))
        (maybe-stringp realfile))
      :rule-classes :rewrite)

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

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

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

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

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

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

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

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

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

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

    Theorem: vl-find-basename/extension-aux-of-str-fix-dir

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

    Theorem: vl-find-basename/extension-aux-streqv-congruence-on-dir

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

    Theorem: vl-find-basename/extension-aux-of-vl-dirxcache-fix-dirxcache

    (defthm vl-find-basename/extension-aux-of-vl-dirxcache-fix-dirxcache
     (equal
        (vl-find-basename/extension-aux filename extensions
                                        dir (vl-dirxcache-fix dirxcache)
                                        warnings)
        (vl-find-basename/extension-aux
             filename
             extensions dir dirxcache warnings)))

    Theorem: vl-find-basename/extension-aux-vl-dirxcache-equiv-congruence-on-dirxcache

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

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

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

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

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