Factoring.
Factoring.
This rule merges two literals that have the same polarity, i.e. which are on the same side of the sequent.
(subProof) premise \/ literal1 \/ literal2 ------------------------------- premise \/ literal1
Initial clause of a resolution proof.
Initial clause of a resolution proof.
This also includes some initial clauses which arise during proof transformations, e.g. ReflexivityClause or TautologyClause.
Clauses that come from the input CNF we're refuting are stored as InputClause.
Input clause from the CNF that we're refuting, or an assumption from a Splitting inference that is discharged later.
Input clause from the CNF that we're refuting, or an assumption from a Splitting inference that is discharged later.
---------- conclusion
Instantiation.
Instantiation.
(subProof) premise --------------------- substitution(premise)
Paramodulation.
Paramodulation.
We allow rewriting any number of positions inside a single literal.
(subProof1) (subProof2) premise1 \/ t=s premise2 \/ literal[t] ------------------------------------------- premise1 \/ premise2 \/ literal[s]
Reflexivity.
Reflexivity.
----------- term = term
Resolution.
Resolution.
The positive literal must be in the first sub-proof.
(subProof1) (subProof2) premise1 \/ literal -literal \/ premise2 -------------------------------------------- premise1 \/ premise2
First-order resolution proof.
First-order resolution proof.
Clauses are stored as sequents of HOLAtoms; the succedent consists of the positive literals, the antecedent of the negative literals.
Substitutions are not absorbed into resolution, factoring, and paramodulation; they are explicitly represented using Instance.
A converter from Robinson resolution proofs to Ral proofs, which reintroduces the lambda abstractions which we removed for the fol export.
DPLL-style splitting as used in SPASS.
DPLL-style splitting as used in SPASS.
This inference is very similar to an or-elimination rule in natural deduction; splittingClause is the proof of a disjunction, and then we do a case analysis: first, we consider the case that part1 is true and derive a contradiction. Second, we consider the case that part2 is true and part1 is false.
(splittingClause) (case1) (case2) [part1] [part2] [¬part1] part1 ∨ part2 ⊥ ⊥ ----------------------------------------------------- ⊥
Tautology.
Tautology.
------------- -atom \/ atom
Given a sequent s and a clause a in CNF(-s), PCNF computes an LK proof of a subsequent of s ++ a containing at least a
A converter from Robinson resolution proofs to Ral proofs, which reintroduces the lambda abstractions which we removed for the fol export.
Sometimes, we have a resolution refutation R of a set of clauses C and want a refutation R' of a set C' such that C implies C'.
Sometimes, we have a resolution refutation R of a set of clauses C and want a refutation R' of a set C' such that C implies C'.
This algorithm tries to obtain R' by trying to replace clauses c from C in R by derivations of C from C'.
In general, if R is a derivation of a clause c, the result R' of fixDerivation(R) is a derivation of a subclause of c.