Moves an assertion back to the sequent.
Moves an assertion back to the sequent.
S <- A ------------ S ++ ¬A <-
Clause component together with its associated propositional atom.
Removes a clause component.
Removes a clause component.
S ++ C <- A ---------------- S <- A ∧ ¬a
Introduces a clause component.
Introduces a clause component.
------
C <- a
Definition introduction.
Definition introduction.
Γ :- Δ, φ(x) -------- Γ :- Δ, D(x)
This is then used together with Taut in order to use the introduced definitions in other parts of the proof:
------------ Taut φ(x) :- φ(x) ------------ DefIntro D(x) :- φ(x)
Factoring.
Factoring.
l, l, Γ :- Δ ----------- l, Γ :- Δ
Input sequent.
Input sequent.
------- sequent
Paramodulation.
Paramodulation.
Γ :- Δ, t=s Π :- Λ, l[t] ---------------------------- Γ, Π :- Δ, Λ, l[s]
Reflexivity.
Reflexivity.
-------------- :- term = term
Resolution.
Resolution.
Γ :- Δ, a a, Π :- Λ ---------------------- Γ, Π :- Δ, Λ
A converter from resolution proofs to Ral proofs, which reintroduces the lambda abstractions which we removed for the fol export.
Proof using resolution.
Proof using resolution.
Our resolution calculus integrates higher-order reasoning, structural clausification, and Avatar-style splitting as in [Vor14].
The judgments of this calculus are A-sequents. An A-sequent is a pair of a sequent of HOL formulas, and a conjunction of propositional literals---the assertion (that's where the "A" comes from).
Γ :- Δ <- A
We store the sequent as a HOLSequent in ResolutionProof#conclusion, and the negation of the assertion as a HOLClause in ResolutionProof#assertions (as the negation of a conjunction of literals is a clause). The judgment is interpreted as one of the following equivalent formulas:
assertions.toNegConjunction --> conclusion.toDisjunction
(conclusion ++ assertions).toDisjunction // equivalent to the first one
Inferences such as Resolution or Paramod do not operate on the assertions. Unless specified otherwise, assertions are inherited by default:
Γ :- Δ, a <- A a, Π :- Λ <- B -------------------------------- Γ, Π :- Δ, Λ <- A ∧ B
There is no factoring on assertions, duplicate assertions are automatically removed.
Reading from top to bottom, a resolution proof is usually structured as follows:
Substitutions are not absorbed into resolution, factoring, and paramodulation; they are explicitly represented using Subst.
[Vor14] Andrei Voronkov, AVATAR: The Architecture for First-Order Theorem Provers. CAV 2014: pp. 696-710
Substitution.
Substitution.
Γ :- Δ ---------------------- substitution(Γ :- Δ)
Tautology.
Tautology.
------------------- formula :- formula
Converts an expansion proof to a resolution proof.
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.
Converts a resolution proof to an expansion proof.
Eliminate AvatarComponentElim, AvatarComponentIntro, AvatarAbsurd splitting inferences from a resolution proof.
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.