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

# Project Week 1: Propositional Reasoning

### Green Group (Inverse Method)

Work on the inverse method in the first week focuses on establishing the basic inference mechanism, including subformula labelling and forward subsumption in the propositional case.

1 Interface
Parsing and printing of propositions (see grammar)
Subterm labeling
2 Validation
Proof term calculus
Checker for proof terms
3 Search
Applying inference rules
Saturating clause space
4 Redundancy Elimination
Ordering of propositions
Forward subsumption
5 Coordination
Creating initial regression testing suite
Signature coordination
Summary progress report

### Blue Group (Backward Reasoning)

Work on the backwards method in the first week focuses on taking the implementations of backward reasoning presented in class so far and adding parsing, printing, and proof terms for the propositional case. Also, we aim to improve efficiency of loop detection via subformula labeling as in the inverse method.

1 Interface
Parsing and printing of propositions (see grammar)
Subterm labeling
2 Validation
Proof term calculus
Checker for proof terms
3 Search
Applying focusing rules
4 Redundancy Elimination
Ordering of propositions
Loop detection
5 Coordination
Creating initial regression testing suite
Signature coordination
Summary progress report

### 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

Atomic Proposition
P  identifiers starting with letter A-Z or a-z
followed by letters A-Z or a-z or digits 0-9
identifiers are case-sensitive

Proposition
A ::= P
| ~ A         % negation
| A & A       % conjunction
| A v A       % disjunction
| A => A      % implication
| T           % truth
| F           % falsehood
| (A)         % parentheses to override precedence
Operator Precedence  ~ > & > v > =>
& v are left associative
=> is right associative

Declaration
D ::= prove A.    % prove A
| refute A.   % refute A

File Contents
F ::=             % empty
| D F         % declaration
```

Note that disjunction (v) may require surrounding whitespace for a correct parse since it is represent by a letter.