• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Community
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
      • Io
      • Defttag
      • Sys-call
      • Save-exec
      • Quicklisp
      • Std/io
      • Oslib
      • Bridge
      • Clex
      • Tshell
      • Unsound-eval
      • Hacker
      • ACL2s-interface
      • Startup-banner
      • Command-line
        • Save-exec
        • Argv
        • Getopt
          • Demo-p
          • Defoptions
          • Demo2
            • Demo2-opts-p
              • Parse-demo2-opts
                • Parse-demo2-opts-long
                • Parse-demo2-opts-aux
                • Parse-demo2-opts-bundle
                  • Parse-demo2-opts-short->long-list
                  • Parse-demo2-opts-short->long
                • Demo2-opts
                • Make-demo2-opts
                • Change-demo2-opts
                • Make-honsed-demo2-opts
                • Honsed-demo2-opts
                • *demo2-opts-usage*
                • Demo2-opts->version
                • Demo2-opts->help
                • Demo2-opts->fail
              • Demo2-main
            • Parsers
            • Sanity-check-formals
            • Formal->parser
            • Formal->argname
            • Formal->longname
            • Formal->alias
            • Formal->usage
            • Formal->merge
            • Formal->hiddenp
      • Hardware-verification
      • Software-verification
      • Math
      • Testing-utilities
    • Parse-demo2-opts

    Parse-demo2-opts-bundle

    Signature
    (parse-demo2-opts-bundle getopt::longnames 
                             args getopt::acc getopt::seen) 
     
      → 
    (mv getopt::errmsg getopt::acc getopt::seen rest)
    Arguments
    getopt::longnames — The already-expanded out names of the bundled options, with no dashes.
        Guard (string-listp getopt::longnames).
    args — Remaining arguments past longname.
        Guard (string-listp args).
    getopt::acc — Structure we're updating.
        Guard (demo2-opts-p getopt::acc).
    getopt::seen — List of longnames that we've seen so far.
        Guard (string-listp getopt::seen).
    Returns
    getopt::errmsg — NIL on success or an error message.
    getopt::acc — Type (demo2-opts-p getopt::acc), given (force (demo2-opts-p getopt::acc)).
    getopt::seen — Type (string-listp getopt::seen), given (and (force (string-listp getopt::longnames)) (force (string-listp getopt::seen))) .
    rest — Type (string-listp rest), given (force (string-listp args)).

    Definitions and Theorems

    Function: parse-demo2-opts-bundle

    (defun parse-demo2-opts-bundle
           (getopt::longnames args getopt::acc getopt::seen)
      (declare (xargs :guard (and (string-listp getopt::longnames)
                                  (string-listp args)
                                  (demo2-opts-p getopt::acc)
                                  (string-listp getopt::seen))))
      (let ((acl2::__function__ 'parse-demo2-opts-bundle))
        (declare (ignorable acl2::__function__))
        (b* (((when (atom getopt::longnames))
              (mv nil getopt::acc getopt::seen args))
             ((mv getopt::err getopt::acc rest)
              (parse-demo2-opts-long (car getopt::longnames)
                                     nil args getopt::acc getopt::seen))
             ((when getopt::err)
              (mv getopt::err
                  getopt::acc getopt::seen rest))
             (getopt::seen (cons (car getopt::longnames)
                                 getopt::seen)))
          (parse-demo2-opts-bundle (cdr getopt::longnames)
                                   rest getopt::acc getopt::seen))))

    Theorem: demo2-opts-p-of-parse-demo2-opts-bundle.acc

    (defthm demo2-opts-p-of-parse-demo2-opts-bundle.acc
     (implies
         (force (demo2-opts-p getopt::acc))
         (b* (((mv getopt::?errmsg getopt::?acc
                   getopt::?seen common-lisp::?rest)
               (parse-demo2-opts-bundle getopt::longnames
                                        args getopt::acc getopt::seen)))
           (demo2-opts-p getopt::acc)))
     :rule-classes :rewrite)

    Theorem: string-listp-of-parse-demo2-opts-bundle.seen

    (defthm string-listp-of-parse-demo2-opts-bundle.seen
     (implies
         (and (force (string-listp getopt::longnames))
              (force (string-listp getopt::seen)))
         (b* (((mv getopt::?errmsg getopt::?acc
                   getopt::?seen common-lisp::?rest)
               (parse-demo2-opts-bundle getopt::longnames
                                        args getopt::acc getopt::seen)))
           (string-listp getopt::seen)))
     :rule-classes :rewrite)

    Theorem: string-listp-of-parse-demo2-opts-bundle.rest

    (defthm string-listp-of-parse-demo2-opts-bundle.rest
     (implies
         (force (string-listp args))
         (b* (((mv getopt::?errmsg getopt::?acc
                   getopt::?seen common-lisp::?rest)
               (parse-demo2-opts-bundle getopt::longnames
                                        args getopt::acc getopt::seen)))
           (string-listp rest)))
     :rule-classes :rewrite)

    Theorem: parse-demo2-opts-bundle-makes-progress

    (defthm parse-demo2-opts-bundle-makes-progress
     (<=
      (len
       (mv-nth 3
               (parse-demo2-opts-bundle getopt::longnames
                                        args getopt::acc getopt::seen)))
      (len args))
     :rule-classes ((:rewrite) (:linear)))