Tau synthesizes software from formal specifications: instead of machine instructions, simply say what conditions must hold.
A declarative, decidable, and executable formal language. You write sentences that must hold over time. Tau synthesizes correct-by-construction programs from realizable specifications. Programs can reason over one another, this is unique to Tau.
Development is like writing the tests a program must pass, and automatically getting the program that passes them.
Satisfiability is logically inferred rather than sampled, so the solver's output is fully guaranteed to be correct. Testing covers the cases written as tests; a decision procedure answers over the model as a whole.
Tau Language has a type whose values are specifications, so a rule can set update conditions on the rules that may replace it. In other languages, a smart contract cannot hold another contract’s meaning, however they can with Tau.
An update can be given as just an additional requirement. Tau can merge an update into a running specification, retain requirements that do not contradict the specification, and modify the update according to the specification before applying it.
A few examples of what is possible.
The differences below come from Tau's specification-first design, decidable reasoning, and runtime revision mechanisms.
Start writing specifications with Tau Language now.
Much of the research on Tau Language and its solver is public. Here are a few of the papers.