# 15-815 Automated Theorem Proving Assignment 4: Implementing the Inverse Method

The assignment is worth 80 pts, due Thu Feb 26. You are encouraged to collaborate in groups of two.

In this assignment we explore an implementation of the inverse method for intuitionistic propositional logic as an alternative decision procedure. You should hand in an implementation and a short explanation as specified below.

## Programming Part

Implement the inverse method for intuitionistic propositional logic for the same connectives as in Assignment 2 (conjunction, truth, implication, disjunction, and falsehood, with negation a notational definition). Put all your code in a single file that depends only on asst2.sml and defines a structure Inv_yourid :> G4IP_CERT. Note that the treatment of falsehood and negation was not discussed in lecture, but is treated in Chapter 5 of the lecture notes.

Your implementation should be a decision procedure, returning a proof if there is one and fail otherwise, as specified in the G4IP_CERT signature. You may take advantage of your (and others) test structures from Assignment 2.

Please note: efficiency is not a criterion, only correctness. Please try to make your code as elegant and transparent as possible!

## Written Part

Explain your implementation strategy (data structures, algorithms) in response to each of the following questions. You do not need to be formal, and you should cross-reference the code only sparingly to make the explanation self-contained, yet helpful in understanding your implementation.

1. Subformula naming: explain how you name subformulas and how you maintain or store this information.
2. Rules and rule application: explain how you represent rules, how you implement rule application, and what strategy you use to decide which rules to apply.
3. Subsumption: explain how you implement subsumption between sequents.
4. Termination: explain how initialize the search procedure and how you detect termination, both upon success (theorem is proven) and failure (search space is saturated without deriving the proposed theorem).
5. Proof terms: explain how you implement proof term assignment.

fp@cs
Frank Pfenning