• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Community
    • Std
    • Proof-automation
    • Macro-libraries
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
      • Kestrel-books
        • Crypto-hdwallet
        • Apt
        • Error-checking
        • Fty-extensions
        • Isar
        • Kestrel-utilities
        • Set
        • C
        • Soft
        • Bv
        • Imp-language
        • Ethereum
        • Event-macros
        • Java
        • Riscv
        • Bitcoin
        • Zcash
        • Yul
        • ACL2-programming-language
        • Prime-fields
        • Json
        • Syntheto
          • Process-syntheto-toplevel-fn
          • Translation
          • Language
            • Static-semantics
            • Abstract-syntax
              • Expression
              • Expression-sum-field-list
              • Type
              • Binary-op
              • Expression-product-field-list
              • Abstract-syntax-operations
              • Function-definition-list->header-list
              • Type-definition-list->name-list
              • Initializer-list->value-list
              • Function-header-list->name-list
              • Typed-variable-list->type-list
              • Typed-variable-list->name-list
              • Branch-list->condition-list
              • Alternative-list->name-list
              • Function-specifier
              • Expression-variable-list
              • Type-subset
                • Type-subset-fix
                • Type-subset-equiv
                • Make-type-subset
                • Type-subset->restriction
                • Type-subset->witness
                • Type-subset->variable
                • Type-subset->supertype
                • Change-type-subset
                • Type-subsetp
              • Field-list->type-list
              • Field-list->name-list
              • Function-specification
              • Identifier
              • Toplevel
              • Function-definer
              • Function-header
              • Type-definer
              • Literal
              • Type-product
              • Function-definition
              • Type-sum
              • Maybe-expression
              • Transform-argument-value
              • Transform
              • Theorem
              • Quantifier
              • Maybe-function-specification
              • Maybe-typed-variable
              • Maybe-type-definition
              • Maybe-function-header
              • Maybe-function-definition
              • Maybe-type-sum
              • Maybe-type-subset
              • Maybe-type-product
              • Maybe-type-definer
              • Maybe-theorem
              • Maybe-type
              • Initializer
              • Type-definition
              • Alternative
              • Unary-op
              • Typed-variable
              • Branch
              • Field
              • Transform-argument
              • Type-recursion
              • Program
              • Function-recursion
              • Typed-variable-list
              • Toplevel-name
              • Toplevel-list
              • Initializer-list
              • Expression-fixtypes
              • Toplevel-fn-names
              • Lookup-transform-argument
              • Function-definition-names
              • Type-definition-list
              • Transform-argument-list
              • Function-header-list
              • Function-definition-list
              • Alternative-list
              • Type-list
              • Identifier-set
              • Identifier-list
              • Field-list
              • Expression-list
              • Branch-list
              • Extract-default-param-alist
              • Create-arg-defaults-table
            • Outcome
            • Abstract-syntax-operations
            • Outcome-list
            • Outcomes
          • Process-syntheto-toplevel
          • Shallow-embedding
        • File-io-light
        • Cryptography
        • Number-theory
        • Axe
        • Lists-light
        • Builtins
        • Solidity
        • Helpers
        • Htclient
        • Typed-lists-light
        • Arithmetic-light
      • X86isa
      • Axe
      • Execloader
    • Math
    • Testing-utilities
  • Abstract-syntax

Type-subset

Fixtype of Syntheto type subsets.

This is a product type introduced by fty::defprod.

Fields
supertype — type
variable — identifier
restriction — expression
witness — maybe-expression

This is a subset of another type. It consists, syntactically, of the supertype and an expression that must be boolean-valued and must have a single free variable of the supertype.

This is related to the invariants of type products, but it is convenient to have (optional) invariants in the type products, rather than forcing the user to give a name to the product without invariant and then define the subtype of the product type.

The field variable must match the free variable in restriction.

A type subset also includes an optional witness expression. If present, this must be a ground expression that evaluates to a value satisfying the restriction. If absent, such an expression must be inferred in some way. This witness is needed to show that the subtype is inhabited, which is used to defined the fixer of the ACL2 fixtype generated for the Syntheto fixtype.

Subtopics

Type-subset-fix
Fixing function for type-subset structures.
Type-subset-equiv
Basic equivalence relation for type-subset structures.
Make-type-subset
Basic constructor macro for type-subset structures.
Type-subset->restriction
Get the restriction field from a type-subset.
Type-subset->witness
Get the witness field from a type-subset.
Type-subset->variable
Get the variable field from a type-subset.
Type-subset->supertype
Get the supertype field from a type-subset.
Change-type-subset
Modifying constructor for type-subset structures.
Type-subsetp
Recognizer for type-subset structures.