• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
      • Std/lists
      • Std/alists
        • Alist-keys
        • Remove-assocs
        • Alist-vals
        • Alist-map-vals
        • Std/alists/strip-cdrs
        • Hons-rassoc-equal
        • Alist-map-keys
        • Std/alists/hons-assoc-equal
        • Fal-extract
        • Std/alists/strip-cars
        • Fal-find-any
        • Fal-extract-vals
        • Std/alists/abstract
          • Keyval-alist-p
          • Valtype-p
          • Keytype-p
          • Def-alistp-rule
        • Fal-all-boundp
        • Std/alists/alistp
        • Append-alist-vals
        • Append-alist-keys
        • Alist-equiv
        • Hons-remove-assoc
        • Std/alists/pairlis$
        • Alists-agree
        • Worth-hashing
        • Sub-alistp
        • Alist-fix
        • Std/alists/remove-assoc-equal
        • Std/alists/assoc-equal
      • Obags
      • Std/util
      • Std/strings
      • Std/io
      • Std/osets
      • Std/system
      • Std/basic
      • Std/typed-lists
      • Std/bitsets
      • Std/testing
      • Std/typed-alists
      • Std/stobjs
      • Std-extensions
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Testing-utilities
    • Math
  • Std/alists

Std/alists/abstract

Abstract theories for alist predicates

This book works similarly to std/lists/abstract, defining a set of theorems about a generic alist using functions:

  • keytype-p
  • valtype-p
  • keyval-alist-p

See std/lists/abstract for documentation of the general idea.

List of requirement variables recognized by std::deflist

Note: All of these are symbols in the ACL2 package.

  • keytype-p-of-nil, valtype-p-of-nil, respectively, are true if NIL is known to be a key/value
  • not-keytype-p-of-nil, not-valtype-p-of-nil are true if NIL is known not to be a key/value. ***-of-nil and not-***-of-nil may not both be true, but may both be false in cases where the status of NIL is unknown or depends on extra input parameters.
  • key-negatedp, val-negatedp are true if we are creating an alist that recognizes elements defined by NOT of the predicate, which may affect the correct formulation of rewrite rules
  • true-listp is true if the alist recognizer is strict, i.e., implies true-listp
  • single-var is true if the alist recognizer has no extra parameters
  • cheap is true if the user gave an extra option requesting cheaper versions of some rules.

Subtopics

Keyval-alist-p
Generic typed list recognizer function.
Valtype-p
Generic typed list valtype recognizer.
Keytype-p
Generic typed list keytype recognizer.
Def-alistp-rule
Define a theorem and save it in a table, denoting that it is a rule about keyval-alistp.