• Top
    • Documentation
      • Xdoc
      • ACL2-doc
      • Pointers
        • Plist-worldp
        • Type
          • Community-book
          • Member-equal
          • Event
          • Stobjs-out
          • Member-eq
          • Stobj-let
          • Assoc-equal
          • Open-input-channel
          • Show-accumulated-persistence
          • Value
          • Multiple-value
          • Boolean-convention
          • Ignore
          • Array
          • Stobjs-in
          • Memoization
          • Cons-term
          • Set-ld-skip-proofsp
          • Non-executable
          • Fcons-term
          • Declaration
          • Subsetp-equal
          • No-duplicatesp-equal
          • Genvar
          • Function-symbolp
          • Keyword
          • Set-fast-cert
          • Iprinting
          • Formals
          • Expand
          • Default-verify-guards-eagerness
          • Trust-tag
          • Redundant
          • Pe-table
          • Open-output-channel
          • Normalization
          • Meta-extract-global-fact
          • Fast-alist
          • Close-output-channel
          • Body
          • Inline
          • Table-alist
          • Sublis-var
          • Recursivep
          • Read-char$
          • Read-byte$
          • Observation-cw
          • Fmt-to-string
          • Assoc-eq
          • All-vars
          • Add-suffix-to-fn
          • Add-suffix
          • Abstract-stobj
          • Optimize
          • Waterfall
          • Untranslate-preprocess
          • Union-eq
          • Stobjs
          • Set-serialize-character
          • Remove-duplicates-equal
          • Read-object
          • Position-equal
          • Mfc-rw
          • Iprint
          • Er-let*
          • Close-input-channel
          • All-fnnames1
          • Package
          • Ignorable
          • Write-byte$
          • Use
          • Time-limit
          • Tamep
          • Subsetp-eq
          • Step-limit
          • Split-types
          • Remove-equal
          • Quotep
          • Put-assoc-equal
          • Position-eq
          • Open-input-channel-p
          • No-duplicatesp-eq
          • Mfc-ts
          • Mfc-rw+
          • Mfc-ap
          • Ld-history-entry-error-flg
          • Intersectp-equal
          • Intersectp-eq
          • Induct
          • Get-check-invariant-risk
          • Fmt-soft-right-margin
          • Defpm
          • All-fnnames
          • Adjust-ld-history
          • Accumulated-persistence-oops
          • Vl-packeddimension
          • Error
          • Unknown-constraints
          • Union-equal
          • Typespec-check
          • Trans-eval-default-warning
          • Tamep-lambdap
          • Tag-tree
          • Symbol-class
          • Sublis-fn-simple
          • Sublis-fn-lst-simple
          • Sublis-fn
          • Stable-under-simplificationp
          • Set-slow-alist-action
          • Set-ruler-extenders
          • Set-ld-skip-proofs
          • Set-ld-redefinition-action
          • Set-ld-prompt
          • Set-ld-pre-eval-print
          • Set-ld-keyword-aliases
          • Set-ld-always-skip-top-level-locals
          • Set-difference-eq
          • Rw-cache-state
          • Restrict
          • Reorder
          • Remove1-equal
          • Remove-eq
          • Remove-assoc-equal
          • Regression
          • Raw-mode
          • Rassoc-equal
          • Rassoc-eq
          • Prettyify-clause
          • Peek-char$
          • Partition-rest-and-keyword-args
          • Open-output-channel-p
          • Mode
          • Mfc-world
          • Mfc-relieve-hyp
          • Mfc-rdepth
          • Mfc-ancestors
          • Mfc
          • Meta-extract-global-fact+
          • Meta-extract-formula
          • Meta-extract-contextual-fact
          • Maybe-convert-to-mv
          • Logicp
          • Legal-constantp
          • Ld-history-entry-user-data
          • Ld-history-entry-input
          • Intersection-eq
          • Guard-hints
          • Guard-checking
          • Get-skipped-proofs-p
          • Get-register-invariant-risk
          • Get-in-theory-redundant-okp
          • Flatten-ands-in-lit
          • Ffn-symb
          • Fargs
          • Ev$-list
          • Er-let*-cmp
          • Enabled-runep
          • Enabled-numep
          • Dumb-occur-var
          • Dumb-negate-lit
          • Doublet-listp
          • Disjoin
          • Context
          • Cons-term*
          • Conjoin2
          • Conjoin
          • Cases
          • Backchain-limit-rw
          • Arglistp
          • All-fnnames-lst
          • All-attachments
          • Add-to-set-eq
          • Add-ld-keyword-alias!
          • Add-ld-keyword-alias
          • Pbkdf2-hmac-sha-512
          • Show-simplify-term
          • Show-simplify-defun-sk
          • Show-simplify-defun
          • With-output!
          • Weak-ld-history-entry-p
          • Verify-guards-eagerness
          • Variablep
          • Value-cmp
          • Undoing
          • Trivial-ancestors-check
          • Translate-hints
          • Translate
          • Trans-eval-no-warning
          • Too-many-ifs
          • Tamep-functionp
          • Symbol-doublet-listp
          • Sum$+
          • Suitably-tamep-listp
          • Subst-var
          • Subst-expr
          • Subsequencep
          • Subcor-var
          • Stv
          • Stobjp
          • Set-standard-oi
          • Set-standard-co
          • Set-proofs-co
          • Set-non-linear
          • Set-let*-abstraction
          • Set-ld-verbose
          • Set-ld-user-stobjs-modified-warning
          • Set-ld-query-control-alist
          • Set-ld-pre-eval-filter
          • Set-ld-post-eval-print
          • Set-ld-missing-input-ok
          • Set-ld-keyword-aliases!
          • Set-ld-evisc-tuple
          • Set-ld-error-triples
          • Set-ld-error-action
          • Set-difference-equal
          • Set-accumulated-persistence
          • Saving-and-restoring
          • Rewrite-cache
          • Reset-print-control
          • Remove1-eq
          • Remove1-assoc-equal
          • Remove1-assoc-eq
          • Remove-duplicates-eq
          • Remove-assoc-eq
          • Put-assoc-eq
          • Proof-supporters-alist
          • Programp
          • Print-object$-preserving-case
          • Nvariablep
          • Nonlinearp
          • No-thanks
          • No-op
          • Mfc-unify-subst
          • Mfc-type-alist
          • Mfc-clause
          • Match-free
          • Make-lambda-term
          • Make-lambda-application
          • Make-lambda
          • Lisp-programmer-introduction
          • Let-mbe
          • Legal-variablep
          • Ld-user-stobjs-modified-warning
          • Ld-history-entry-value
          • Ld-history-entry-stobjs-out/value
          • Ld-history-entry-stobjs-out
          • Lambda-formals
          • Lambda-body
          • Lambda-applicationp
          • Known-package-alist
          • Io?
          • Intersection-equal
          • Implicate
          • If-intro
          • Hands-off
          • Guards
          • Guard-holder
          • Get-serialize-character
          • Get-output-stream-string$
          • Get-event
          • Get-defun-event
          • Get-brr-local
          • Gcs
          • Fsubcor-var
          • Fquotep
          • Fncall-term
          • Fn-symb
          • Fn-rune-nume
          • Fn-check-def
          • Fmx!-cw
          • Fmt-hard-right-margin
          • Flambdap
          • Flambda-applicationp
          • Fix-pkg
          • Ffnnamep-lst
          • Ffnnamep
          • Ffn-symb-p
          • Fdefun-mode
          • Fcons-term*
          • Fargn
          • Fake-rune
          • Er-progn-cmp
          • Er-cmp
          • Dumb-occur
          • Do-not-induct
          • Disjoin2
          • Defined-constant
          • Default-state-vars
          • Computed-hint
          • Collect$+
          • Collect$
          • Check-invariant-risk
          • Ccl-updates
          • By
          • Backtrack
          • Always$+
          • All-calls
          • Add-to-set-equal
          • Add-to-set-eql
          • ACL2s
          • ACL2-unwind-protect
          • Syntax
          • Build-the-manual
          • Sha-512
          • Sha-384
          • Sha-256
          • Sha-224
          • Pad-to-896
          • Pad-to-448
          • Mimcsponge-semaphore
          • Mimcsponge
          • Keccak-512-bytes
          • Keccak-512
          • Keccak-384-bytes
          • Keccak-384
          • Keccak-256-bytes
          • Keccak-256
          • Keccak-224-bytes
          • Keccak-224
          • Pbkdf2-hmac-sha-512-from-strings
          • Hmac-sha-512
          • Hmac-sha-256
          • &whole
          • &rest
          • &optional
          • &key
          • &body
          • &allow-other-keys
          • Apropos
          • Uses-stp
          • Uses-smtlink
          • Uses-quicklisp
          • Uses-ipasir
          • Uses-glucose
          • Uses-ACL2r
          • Uses-abc
          • Reloc-stub
          • Pcert
          • Non-sbcl
          • Non-lispworks
          • Non-gcl
          • Non-cmucl
          • Non-allegro
          • Non-ACL2r
          • Ccl-only
          • Ansi-only
          • ACL2xskip
          • ACL2x
          • Show-simplify-defun+
          • With-prover-step-limit!
          • When$+
          • When$
          • Untouchable-marker
          • Until$+
          • Until$
          • Ttag
          • Translate11
          • Translate1-cmp
          • Translate1
          • Translate-cmp
          • Thereis$+
          • Thereis$
          • Sum$
          • Single-threaded-objects
          • Set-temp-touchable-vars
          • Set-temp-touchable-fns
          • Set-print-right-margin
          • Set-print-readably
          • Set-print-lines
          • Set-print-level
          • Set-print-length
          • Set-print-escape
          • Set-print-circle
          • Rw-cache
          • Ruler
          • Remove-guard-holders
          • Redefining
          • Redefine
          • Read-object-with-case
          • Read-object-suppress
          • Put-assoc-eql
          • Print-summary-user
          • Pound-u-reader
          • Pound-dot-reader
          • Pound-bang-reader
          • Plev-min
          • Plev-mid
          • Plev-max
          • Plev-info
          • Note9
          • Note8-update
          • Note8
          • Note7
          • Note6
          • Note5
          • Note4
          • Note3
          • Note2
          • Note1
          • Nfix-list
          • Meta-extract-rw+-term
          • Memoize-prover-fns
          • Measure-theorem
          • Make-list-ac
          • Loop$-for
          • Loop$-do
          • Lexp
          • Lex-fix
          • Interrupts
          • Install-skip-in-book
          • Immed-forced
          • Ilks
          • Guard-msg-table
          • Getting-started
          • Forced
          • Fmt!-to-string
          • Fmt1!-to-string
          • Fmt1-to-string
          • Fms!-to-string
          • Fms-to-string
          • First-n-ac
          • First-keyword
          • Fast-alist-discipline
          • External-format
          • Extended-syntaxp
          • Execution
          • D<
          • Dynamically-monitor-rewrites
          • Defthmdr
          • ACL2::counter-example-generation
          • Comma-atsign
          • Comma
          • Check-sum
          • Certifying-books
          • Certify-book-failure
          • Book-makefiles
          • Auto-termination
          • Auto-instance
          • Assocs
          • Assertions
          • Append$+
          • Append$
          • Always$
        • Doc
        • Documentation-copyright
        • Args
        • ACL2-doc-summary
        • Finding-documentation
        • Broken-link
      • Books
      • Recursion-and-induction
      • Boolean-reasoning
      • Projects
      • Debugging
      • Std
      • Proof-automation
      • Macro-libraries
      • ACL2
      • Interfacing-tools
      • Hardware-verification
      • Software-verification
      • Testing-utilities
      • Math
    • Pointers

    Type

    Disambiguation page for type-related concepts.

    The word type might mean many things in ACL2.

    Built-in Types
    ACL2 can reason about and compute with certain different kinds of objects, such as numbers, strings, characters, and conses. See About Types for basic background on the different kinds of ACL2 objects.
    User-Defined Types
    When modeling systems with ACL2, you may often want to introduce certain concepts as new data types. For instance, if you are modeling a network, you might want host and connection objects. ACL2 does not directly support introducing new types. Instead, such types are usually ``emulated'' by introducing a new recognizer function, say hostp, and perhaps some related constructor and accessor functions, say make-host and host->name. Macro libraries can help to assist with introducing common types. See for instance std/util, defdata, or fty.
    Type Declarations
    For more efficient Common Lisp execution, ACL2 functions can be annotated with Common Lisp type specifiers (see type-spec) that may boost performance by reducing run-time type checking. This mechanism is integrated with ACL2's guard mechanism, so you can prove your type declarations are correct. See also declare and the, and also patbind-the.
    Type Prescriptions
    ACL2 includes a limited but efficient ``type-set reasoning engine for determining whether objects are of certain built-in types. This engine can be extended with type-prescription rules. Such rules are often inferred automatically when new functions are introduced with defun. Type-set reasoning can assist other reasoning engines like forward-chaining, linear-arithmetic, and rewriting. Type-set information is stored in a type-alist data structure.
    Tau
    ACL2 includes another reasoning engine, the tau-system, for reasoning about type-like predicates. Unlike type-set, Tau can also be used for reasoning about user-defined types, and can also carry out certain interval arithmetic reasoning. See the introduction-to-the-tau-system for more information about Tau.