- 1 Interface
- Parsing and printing of first-order propositions (see grammar)
- Extension of theory language
- Arity checking
- 2 Validation
- Extension to theory language
- Extend proof terms to handle first-order case
- 3 Search
- Extend search to use active and focus sequents (propositional case only)
- Account for theories (propositional case only)
- Improvements in inference mechanism (for example, lookahead or reduction strategy)
- 4 Redundancy Elimination
- Implement simple measurement tools (see measures below)
- Participate in inference mechanism improvement as appropriate
- Consider and possibly implement backwards subsumption
- 5 Coordination
- Extending propositional regression testing suite for measurement purposes (see benchmarks below)
- Build first-order regression testing suite for following week
- Build some interesting intuitionistc theories
- Signature coordination
- Group summary progress report
- Task assignment for next week

- 1 Interface
- Parsing and printing of first-order propositions (see grammar)
- Extension of theory language
- Arity checking
- 2 Validation
- Extension to theory language
- Extend proof terms to handle first-order case
- 3 Search
- Extend the propositional prover to the first-order case, using a Prolog style backtracking engine, probably in continuation-passing style and trailing
- Limit search space either by depth bound, or by number of times each assumption may be used
- 4 Redundancy Elimination
- Implement or adapt unification from the code shown in class
- Extend simple loop checking to the first-order case (this may just be design, not yet implementation)
- Implement simple measurement tools (see measures below)
- 5 Coordination
- Extending propositional regression testing suite for measurement purposes (see benchmarks below)
- Build first-order regression testing suite
- Build some interesting intuitionistc theories
- Signature coordination
- Group summary progress report
- Task assignment for next week

All projects will use the same grammar and precedence rules. As the course proceeds, we will enlarge this grammar.

Whitespace space ( ) tab (\t) newline (\n) form feed (\f) other characters not listed below are illegal Comment % to newline (\n) all characters except newline (\n) are allowed in comment Identifiers id start with a letter A-Z or a-z followed by letters A-Z or a-z or digits 0-9 keywords `prove', `refute', `axiom', `lemma', `theorem', `T', `F' are ruled out. Number num sequence of digits 0-9 Terms t ::= id % constant or variable | id(tseq) % function with arguments tseq ::= t % single term | t,tseq % term sequence Atomic Propositions P ::= id % propositional constant | id(tseq) % predicate with arguments Propositions A ::= P | ~ A % negation | A & A % conjunction | A v A % disjunction | A => A % implication | T % truth | F % falsehood | {id} A % universal quantification | <id> A % existential quantification | (A) % parentheses to override precedence Operator Precedence ~ > & > v > => & v are left associative => is right associative {} <> are prefix operators weaker than => {x} and <x> bind x, shadowing previous bindings Identifer declaration iddec ::= % empty | id/num iddec % declaration of id with arity num Declaration D ::= constant iddec. % constant declarations | predicate iddec. % predicate declaration | prove A. % prove A | refute A. % refute A | axiom id : A. % assume A | lemma id : A. % prove and then assume A | theorem id : A. % synonym for lemma Identifiers are names of assumptions for further reference and to build proof terms. Constants, predicates, and axiom/theorem identifiers share the same name space. Redeclaration of constants is an error. Declarations may not contain free variables. File Contents F ::= % empty | D F % declaration

Measurement this week is only concerned with qualitative measures. Below are some examples for the two styles of prover. These could be refined into different kinds of sequents (active or focus). Make the kind of measurement your find helpful to characterize or analyze the prover.

- Total number of sequents generated
- Total number of sequents kept (not forward subsumed)
- Number of sequents in the proof
- Maximal size of sequents (counting assumptions, or symbols)

- Total number of goals considered
- Depth or size of proof found
- Average conjunctive and disjunctive branching factors
- Number of subgoals cut of by loop detection

Tanel Tammet has provided me with some first-order benchmarks he used in the intuitionistic version of the Gandalf prover, mostly using Lisp/Scheme syntax.

Chad Brown has converted these to conform to our grammar and collected them into the file tammet.thy.

Jacob Howe has provided me with some propositional benchmarks used in his investigation of provers for intuitionistic propositional calculus, plus a Prolog program by Roy Dyckhoff to generate decision problems (some of them hard). Again, if you convert some of these, please let me and the other groups know.

Brigitte Pientka has converted Roy Dyckhoff's program to generate difficult cases for the propositional decision procedure from Prolog to ML. You can find it in dyckhoff.sml.

See under additional reading on the handouts page.

- Previous week: Propositional Reasoning
- Next week: Resolution

Frank Pfenning fp@cs