• Top
    • Documentation
    • Books
    • Recursion-and-induction
    • Boolean-reasoning
    • Projects
    • Debugging
    • 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
        • Prime-field-constraint-systems
        • Soft
          • Soft-future-work
          • Soft-macros
          • Updates-to-workshop-material
            • Soft-implementation
            • Soft-notions
          • 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
    • Soft

    Updates-to-workshop-material

    Updates to SOFT since the ACL2-2015 Workshop.

    Nullary Function Variables

    Nullary function variables (i.e. function variables with arity 0) are now allowed.

    Naming Conventions

    For second-order functions and theorems that depend on two or more function variables, the Workshop paper suggests to use underscores to separate the function variables inside the square brackets, e.g. sofun[?f_?g_?h]. This manual instead suggests to enclose each function variable in square brackets, e.g. sofun[?f][?g][?h].

    Implicit Function Parameters

    The defun2, defchoose2, defun-sk2, and defun-inst macros no longer include an explicit list of function parameters. The function is implicitly parameterized over the function variables that it depends on. This simplifies the implementation. It also avoids the repetition of the function variables when using the naming convention of including, in the name of a second-order function, the function variables that it depends on (enclosed in square brackets).