[ home | schedule | assignments | projects | resources | handouts | overview | links ]

15-815 Automated Theorem Proving


Project Week 2: Focusing

Red Group

Green Group

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

Blue Group

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

Grammar

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 Tools

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.

  1. Total number of sequents generated
  2. Total number of sequents kept (not forward subsumed)
  3. Number of sequents in the proof
  4. Maximal size of sequents (counting assumptions, or symbols)
  1. Total number of goals considered
  2. Depth or size of proof found
  3. Average conjunctive and disjunctive branching factors
  4. Number of subgoals cut of by loop detection

Benchmarks

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.

Reading

See under additional reading on the handouts page.

Links

[ home | schedule | assignments | projects | resources | handouts | overview | links ]


Frank Pfenning
fp@cs