• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
      • Io
      • Defttag
      • Sys-call
      • Save-exec
      • Quicklisp
      • Oslib
        • File-types
        • Argv
        • Copy
        • Catpath
        • Universal-time
        • Ls
        • Basename
        • Tempfile
        • Dirname
        • Copy!
        • Mkdir
        • Ls-files
        • Lisp-version
        • Rmtree
        • Ls-subdirs
        • Lisp-type
        • Date
        • Getpid
        • Basenames
        • Dirnames
        • Ls-subdirs!
        • Ls-files!
        • Dirname!
        • Basename!
          • Catpaths
          • Mkdir!
          • Ls!
          • Rmtree!
          • Remove-nonstrings
        • Std/io
        • Bridge
        • Clex
        • Tshell
        • Unsound-eval
        • Hacker
        • Startup-banner
        • Command-line
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Oslib

    Basename!

    Remove the leading directory part of a path, or cause a hard error if there is any problem.

    Signature
    (basename! path &key (state 'state)) → (mv basename state)
    Arguments
    path — Guard (stringp path).
    Returns
    basename — Type (stringp basename).
    state — Type (state-p1 state), given (force (state-p1 state)).

    This is just a wrapper for basename that causes an error on any failure.

    Definitions and Theorems

    Function: basename!-fn

    (defun basename!-fn (path state)
           (declare (xargs :stobjs (state)))
           (declare (xargs :guard (stringp path)))
           (let ((__function__ 'basename!))
                (declare (ignorable __function__))
                (b* (((mv err basename state)
                      (basename path))
                     ((when err)
                      (raise "Basename failed: ~@0" err)
                      (mv "" state)))
                    (mv basename state))))

    Theorem: stringp-of-basename!.basename

    (defthm stringp-of-basename!.basename
            (b* (((mv ?basename acl2::?state)
                  (basename!-fn path state)))
                (stringp basename))
            :rule-classes :type-prescription)

    Theorem: state-p1-of-basename!.state

    (defthm state-p1-of-basename!.state
            (implies (force (state-p1 state))
                     (b* (((mv ?basename acl2::?state)
                           (basename!-fn path state)))
                         (state-p1 state)))
            :rule-classes :rewrite)