• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Debugging
    • Projects
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Error-checking
        • Apt
        • Abnf
        • Fty-extensions
        • Isar
        • Kestrel-utilities
          • Omaps
          • Directed-untranslate
          • Include-book-paths
          • Ubi
          • Checkpoint-list
          • Digits-any-base
          • Context-message-pair
          • Numbered-names
          • With-auto-termination
          • Theorems-about-true-list-lists
          • Make-termination-theorem
          • Sublis-expr+
          • Prove$
          • Defthm<w
          • System-utilities-non-built-in
          • Integer-range-fix
          • Add-const-to-untranslate-preprocess
          • Integers-from-to
          • Minimize-ruler-extenders
          • Unsigned-byte-fix
          • Signed-byte-fix
          • Defthmr
          • Paired-names
          • Unsigned-byte-list-fix
          • Signed-byte-list-fix
          • Show-books
          • Checkpoint-list-pretty
          • List-utilities
          • Skip-in-book
          • Typed-tuplep
          • Defunt
          • Keyword-value-list-to-alist
            • Magic-macroexpand
            • Top-command-number-fn
            • Bits-as-digits-in-base-2
            • Show-checkpoint-list
            • Ubyte11s-as-digits-in-base-2048
            • Named-formulas
            • Bytes-as-digits-in-base-256
            • String-utilities
            • Make-keyword-value-list-from-keys-and-value
            • Integer-range-listp
            • Defmacroq
            • Apply-fn-if-known
            • Trans-eval-error-triple
            • Checkpoint-info-list
            • Previous-subsumer-hints
            • Fms!-lst
            • Zp-listp
            • Doublets-to-alist
            • Trans-eval-state
            • Injections
            • Theorems-about-osets
            • Typed-list-utilities
            • Book-runes-alist
            • User-interface
            • Bits/ubyte11s-digit-grouping
            • Bits/bytes-digit-grouping
            • Message-utilities
            • Subsetp-eq-linear
            • Strict-merge-sort-<
            • Miscellaneous-enumerations
            • Maybe-unquote
            • Oset-utilities
            • Thm<w
            • Defthmd<w
          • Prime-field-constraint-systems
          • Soft
          • Bv
          • Imp-language
          • Event-macros
          • Bitcoin
          • Ethereum
          • Yul
          • Zcash
          • ACL2-programming-language
          • Prime-fields
          • Java
          • C
          • Syntheto
          • Number-theory
          • Cryptography
          • Lists-light
          • File-io-light
          • Json
          • Built-ins
          • Solidity
          • Axe
          • Std-extensions
          • Htclient
          • Typed-lists-light
          • Arithmetic-light
        • X86isa
        • Execloader
        • Axe
      • Testing-utilities
      • Math
    • Kestrel-utilities

    Keyword-value-list-to-alist

    Turn a true list of even length with keywords at its even-numbered positions (counting from 0), into the corresponding alist.

    Signature
    (keyword-value-list-to-alist kvlist) → alist
    Arguments
    kvlist — Guard (keyword-value-listp kvlist).
    Returns
    alist — Type (alistp alist).

    The alist associates each of the keywords at the even positions with the immediately following element in the list. The keywords in the alist are in the same order as in the original list.

    Definitions and Theorems

    Function: keyword-value-list-to-alist-aux

    (defun keyword-value-list-to-alist-aux
           (kvlist rev-alist)
           (declare (xargs :guard (and (keyword-value-listp kvlist)
                                       (alistp rev-alist))))
           (let ((__function__ 'keyword-value-list-to-alist-aux))
                (declare (ignorable __function__))
                (if (endp kvlist)
                    (rev rev-alist)
                    (keyword-value-list-to-alist-aux
                         (cddr kvlist)
                         (cons (cons (car kvlist) (cadr kvlist))
                               rev-alist)))))

    Function: keyword-value-list-to-alist

    (defun
     keyword-value-list-to-alist (kvlist)
     (declare (xargs :guard (keyword-value-listp kvlist)))
     (let
      ((__function__ 'keyword-value-list-to-alist))
      (declare (ignorable __function__))
      (mbe
          :logic (if (endp kvlist)
                     nil
                     (cons (cons (car kvlist) (cadr kvlist))
                           (keyword-value-list-to-alist (cddr kvlist))))
          :exec (keyword-value-list-to-alist-aux kvlist nil))))

    Theorem: alistp-of-keyword-value-list-to-alist

    (defthm alistp-of-keyword-value-list-to-alist
            (b* ((alist (keyword-value-list-to-alist kvlist)))
                (alistp alist))
            :rule-classes :rewrite)

    Theorem: symbol-alistp-of-keyword-value-list-to-alist

    (defthm symbol-alistp-of-keyword-value-list-to-alist
            (implies (keyword-value-listp kvlist)
                     (b* ((alist (keyword-value-list-to-alist kvlist)))
                         (symbol-alistp alist)))
            :rule-classes :rewrite)