Previous Up Next

5  The Kettle Architecture

Kettle can parse input files in the LF or CVC format.

The code for the main proving engine is in Engine. The engine is given a thunk that when invoked will return the next input fragment. Input fragments are things like a literal to prove in the current context, an assumption to add to the current context, an indication to pop the last assumption, etc. The data type for the input language is described in the Input file. This architecture was essential for proving very large sequences of literals, what would not all fit in memory at once.

The actual inputs are written in terms of logical expressions and formulas, defined in Logic. Proofs of formulas can be written using the language defined in Proof. The same module also defines a proof checker that is enabled when you pass the --checkproofs argument on the command line.

The Engine module is initialized with a list of satisfiability procedures to use, and a proof generator. A satisfiability procedure consists of one or more ML modules, one of which exports a structure of type Satproc.entries. That structure contains entry points to the main operations that a satisfiability procedure supports.

In order to add a satisfiability procedure you can take the following steps: Also, before starting the engine, you must set the current UI to use. If you pass the --gui argument to Kettle, you will use the GUI, otherwise you use a text user interface.


Previous Up Next