• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • 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
        • Soft
        • C
        • Bv
        • Imp-language
        • Event-macros
        • Java
        • Bitcoin
        • Ethereum
        • Yul
        • Zcash
        • 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
              • Field-list->type-list
              • Field-list->name-list
              • Function-specification
                • Function-specification-fix
                • Function-specification-equiv
                • Make-function-specification
                • Function-specification->specifier
                • Function-specification->functions
                • Function-specification->name
                • Change-function-specification
                • Function-specificationp
              • 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
        • Lists-light
        • Axe
        • Builtins
        • Solidity
        • Helpers
        • Htclient
        • Typed-lists-light
        • Arithmetic-light
      • X86isa
      • Axe
      • Execloader
    • Math
    • Testing-utilities
  • Abstract-syntax

Function-specification

Fixtype of Syntheto function specifications.

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

Fields
name — identifier
functions — function-header-list
specifier — function-specifier

This is essentially a second-order predicate over Syntheto functions. A specification defines a set of possible choices for the functions: these are exactly the ones for which the second-order predicate is true. The synthesis process narrows down the set of choices, until a single choice is reached.

Thus, a function specification has a name (of the predicate), function headers (the arguments of the predicate), and a function specifier. The input/output function specifier may be used only if there is a single function.

The specifier may refer to the names of other specifications as if they were nullary Syntheto functions (because the function arguments are implicit). This is how these predicates are handled in ACL2.

Subtopics

Function-specification-fix
Fixing function for function-specification structures.
Function-specification-equiv
Basic equivalence relation for function-specification structures.
Make-function-specification
Basic constructor macro for function-specification structures.
Function-specification->specifier
Get the specifier field from a function-specification.
Function-specification->functions
Get the functions field from a function-specification.
Function-specification->name
Get the name field from a function-specification.
Change-function-specification
Modifying constructor for function-specification structures.
Function-specificationp
Recognizer for function-specification structures.