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