• Top
    • Documentation
    • Books
    • Boolean-reasoning
    • Projects
    • Debugging
    • Std
    • Proof-automation
    • Macro-libraries
      • B*
      • Defunc
      • Fty
      • Apt
      • Std/util
      • Defdata
      • Defrstobj
      • Seq
      • Match-tree
      • Defrstobj
      • With-supporters
      • Def-partial-measure
      • Template-subst
      • Soft
        • Soft-future-work
        • Soft-macros
        • Updates-to-workshop-material
        • Soft-implementation
        • Soft-notions
      • Defthm-domain
      • Event-macros
      • Def-universal-equiv
      • Def-saved-obligs
      • With-supporters-after
      • Definec
      • Sig
      • Outer-local
      • Data-structures
    • ACL2
    • Interfacing-tools
    • Hardware-verification
    • Software-verification
    • Math
    • Testing-utilities
  • Kestrel-books
  • Macro-libraries
  • Projects

Soft

SOFT (Second-Order Functions and Theorems) is a tool to mimic second-order functions and theorems in the first-order logic of ACL2.

In SOFT, second-order functions are mimicked by first-order functions that depend on explicitly designated uninterpreted functions that mimic function variables. First-order theorems over these second-order functions mimic second-order theorems universally quantified over function variables. Instances of second-order functions and theorems are systematically generated by replacing function variables with functions. Theorem instances are proved automatically, via automatically generated functional instantiations.

SOFT does not extend the ACL2 logic. It is a library that provides macros to introduce function variables, second-order functions, second-order theorems, and instances thereof. The macros modify the ACL2 state only by submitting sound and conservative events; they cannot introduce unsoundness or inconsistency on their own.

The ACL2-2015 Workshop paper on SOFT provides an overview of the SOFT macros and some simple examples of their use, a description of the use of SOFT in program refinement, and a discussion of related and future work. The presentation of the Workshop talk is available here. The examples from the paper are in community book kestrel/soft/workshop-paper-examples.lisp; the examples from the talk that are not in the paper are in community book kestrel/soft/workshop-talk-examples.lisp. As SOFT is being extended and improved over time, some of the contents of the paper and presentation are becoming outdated. This manual provides up-to-date information about SOFT. The differences between the current version of SOFT and the contents of the Workshop paper and presentation are described here. Also see here for an up-to-date description of future work.

Subtopics

Soft-future-work
Some possible improvements and extensions to SOFT.
Soft-macros
Macros provided by SOFT.
Updates-to-workshop-material
Updates to SOFT since the ACL2-2015 Workshop.
Soft-implementation
Implementation of SOFT.
Soft-notions
Notions that the SOFT macros are based on.