An LKProof ending with a conjunction on the left:
(π) A, B, Γ :- Δ -------------- A ∧ B, Γ :- Δ
An LKProof ending with a conjunction on the left:
(π) A, B, Γ :- Δ -------------- A ∧ B, Γ :- Δ
The subproof π.
The index of A.
The index of B.
An LKProof ending with a conjunction on the right:
(π1) (π2) Γ :- Δ, A Π :- Λ, B -------------------------- Γ, Π :- Δ, Λ, A∧B
An LKProof ending with a conjunction on the right:
(π1) (π2) Γ :- Δ, A Π :- Λ, B -------------------------- Γ, Π :- Δ, Λ, A∧B
The proof π1.
The index of A.
The proof π2
The index of B.
An LKProof deriving a sequent from two other sequents:
(π1) (π2) Γ :- Δ Γ' :- Δ' ------------------ Π :- Λ
An LKProof deriving a sequent from two other sequents:
(π1) (π2) Γ :- Δ Γ' :- Δ' ------------------ Π :- Λ
An LKProof ending with a left contraction:
(π) A, A, Γ :- Δ -------------- A, Γ :- Δ
An LKProof ending with a left contraction:
(π) A, A, Γ :- Δ -------------- A, Γ :- Δ
The subproof π.
The index of one occurrence of A.
The index of the other occurrence of A.
An LKProof ending with a right contraction:
(π) Γ :- Δ, A, A -------------- Γ :- Δ, A
An LKProof ending with a right contraction:
(π) Γ :- Δ, A, A -------------- Γ :- Δ, A
The subproof π.
The index of one occurrence of A.
The index of the other occurrence of A.
Class for reducing boilerplate code in LK companion objects.
An LKProof ending with a cut:
(π1) (π2) Γ :- Δ, A A, Π :- Λ ------------------------ Γ, Π :- Δ, Λ
An LKProof ending with a cut:
(π1) (π2) Γ :- Δ, A A, Π :- Λ ------------------------ Γ, Π :- Δ, Λ
The proof π1.
The index of A in π1.
The proof π2.
The index of A in π2.
An LKProof ending with a definition on the left:
An LKProof ending with a definition on the left:
(π) A, Γ :- Δ -----------d:l B, Γ :- Δ
Currently, the formulas A and B can be completely arbitrary.
The proof π.
The index of A in the antecedent.
The formula B that A is to be replaced with.
An LKProof ending with a definition on the right:
An LKProof ending with a definition on the right:
(π) Γ :- Δ, A -----------d:l Γ :- Δ, B
Currently, the formulas A and B can be completely arbitrary.
The proof π.
The index of A in the succedent.
The formula B that A is to be replaced with.
Use this trait for rules that use eigenvariables.
An LKProof ending with a left equality rule.
An LKProof ending with a left equality rule. There are two possible cases according to which direction the rule is applied in:
(π) (π) A[s], s = t, Γ :- Δ A[t], s = t, Γ :- Δ ---------------------eq:l ---------------------eq:l A[t], s = t, Γ :- Δ A[s], s = t, Γ :- Δ
In either case, the rule only replaces term occurrences at parallel positions. These positions are given by the positions argument.
The subproof π.
The index of s = t.
The index of the formula in which the replacement is to be performed.
A term λx.A[x] that designates the positions to be replaced.
An LKProof ending with a right equality rule.
An LKProof ending with a right equality rule. There are two possible cases according to which direction the rule is applied in:
(π) (π) s = t, Γ :- Δ, A[s] s = t, Γ :- Δ, A[t] ---------------------eq:r ---------------------eq:r s = t, Γ :- Δ, A[t] s = t, Γ :- Δ, A[s]
In either case, the rule only replaces term occurrences at parallel positions. These positions are given by the positions argument.
The subproof π.
The index of s = t.
The index of the formula in which the replacement is to be performed.
A term λx.A[x] that designates the positions to be replaced.
Abstract class that performs most of the construction of left and right equality rules.
An LKProof ending with an existential quantifier on the left:
(π) A[x\α], Γ :- Δ ---------------∀:r ∃x.A Γ :- ΔThis rule is only applicable if the eigenvariable condition is satisfied: α must not occur freely in Γ :- Δ.
An LKProof ending with an existential quantifier on the left:
(π) A[x\α], Γ :- Δ ---------------∀:r ∃x.A Γ :- ΔThis rule is only applicable if the eigenvariable condition is satisfied: α must not occur freely in Γ :- Δ.
The proof π.
The index of A[x\α].
The variable α.
The variable x.
An LKProof ending with an existential quantifier on the right:
(π) Γ :- Δ, A[x\t] ----------------∃:r Γ :- Δ, ∃x.A
An LKProof ending with an existential quantifier on the right:
(π) Γ :- Δ, A[x\t] ----------------∃:r Γ :- Δ, ∃x.A
The proof π.
The index of A[x\t].
The formula A.
The term t.
The variable x.
An LKProof ending with an existential quantifier on the left:
(π) A[x\s(...)], Γ :- Δ --------------- ∃sk:l ∃x.A Γ :- ΔThis rule requires a Skolem function s(...)
An LKProof ending with an existential quantifier on the left:
(π) A[x\s(...)], Γ :- Δ --------------- ∃sk:l ∃x.A Γ :- ΔThis rule requires a Skolem function s(...)
The proof π.
The index of A[x\s(...)].
The main formula A[x\s(...)]
The Skolem term s(...)
The Skolem definition, see at.logic.gapt.expr.hol.SkolemFunctions
An LKProof ending with a universal quantifier on the left:
(π) A[x\t], Γ :- Δ ----------------∀:l ∀x.A, Γ :- Δ
An LKProof ending with a universal quantifier on the left:
(π) A[x\t], Γ :- Δ ----------------∀:l ∀x.A, Γ :- Δ
The proof π.
The index of A[x\t].
The formula A.
The term t.
The variable x.
An LKProof ending with a universal quantifier on the right:
(π) Γ :- Δ, A[x\α] ---------------∀:r Γ :- Δ, ∀x.AThis rule is only applicable if the eigenvariable condition is satisfied: α must not occur freely in Γ :- Δ.
An LKProof ending with a universal quantifier on the right:
(π) Γ :- Δ, A[x\α] ---------------∀:r Γ :- Δ, ∀x.AThis rule is only applicable if the eigenvariable condition is satisfied: α must not occur freely in Γ :- Δ.
The proof π.
The index of A[x\α].
The variable α.
The variable x.
An LKProof ending with a universal quantifier on the right:
(π) Γ :- Δ, A[x\s(...)] ---------------∀:r Γ :- Δ, ∀x.AThis rule requires a Skolem function s(...)
An LKProof ending with a universal quantifier on the right:
(π) Γ :- Δ, A[x\s(...)] ---------------∀:r Γ :- Δ, ∀x.AThis rule requires a Skolem function s(...)
The proof π.
The index of A[x\α].
The main formula A[x\s(...)]
The Skolem term s(...)
The Skolem definition, see at.logic.gapt.expr.hol.SkolemFunctions
An LKProof ending with an implication on the left:
(π1) (π2) Γ :- Δ, A B, Π :- Λ -------------------------- A→B, Γ, Π :- Δ, Λ
An LKProof ending with an implication on the left:
(π1) (π2) Γ :- Δ, A B, Π :- Λ -------------------------- A→B, Γ, Π :- Δ, Λ
The proof π1.
The index of A.
The proof π2
The index of B.
An LKProof ending with an implication on the right:
(π) A, Γ :- Δ, B -------------- Γ :- Δ, A → B
An LKProof ending with an implication on the right:
(π) A, Γ :- Δ, B -------------- Γ :- Δ, A → B
The subproof π.
The index of A.
The index of B.
Proof that a given data type constructor c preserves a formula F:
Proof that a given data type constructor c preserves a formula F:
(π) F(x,,1,,), F(x,,2,,), ..., F(x,,n,,), Γ :- Δ, F(c(x,,1,,,...,x,,n,,,y,,1,,,...,y,,n,,))
The variables xi and yi are eigenvariables; xi are the eigenvariables of the same type as the inductive data type, yi are the other arguments of the constructor c. They can come in any order in the constructor.
The LKProof ending in the sequent of this case.
The constructor c of the inductive data type that we're considering.
Indices of F(x1), ..., F(xn)
The eigenvariables of this case: x1, ..., xn, y1, ..., yn (these need to correspond to the order in c)
Index of F(c(x1,...,xn,y1,...,yn))
An LKProof ending with an induction rule:
(π,,1,,) (π,,2,,) (π,,n,,) case 1 case 2 ... case n -------------------------------------(ind) Γ :- Δ, ∀x: indTy, F(x)
An LKProof ending with an induction rule:
(π,,1,,) (π,,2,,) (π,,n,,) case 1 case 2 ... case n -------------------------------------(ind) Γ :- Δ, ∀x: indTy, F(x)
This induction rule can handle inductive data types. The cases are proofs that the various type constructors preserve the formula we want to prove. They are provided via the InductionCase class.
A sequence of proofs showing that each type constructor preserves the validity of the main formula.
The formula we want to prove via induction.
An LKProof consisting of a single sequent:
--------ax Γ :- Δ
An LKProof consisting of a single sequent:
--------ax Γ :- Δ
Class that describes how LKProofs can be substituted.
Implementation of the visitor pattern for at.logic.gapt.proofs.lk.LKProof.
Implementation of the visitor pattern for at.logic.gapt.proofs.lk.LKProof. Proof transformations can implement this trait to reduce boilerplate code.
Type of additional arguments that may be used in the transformation.
An LKProof consisting of a logical axiom:
--------ax A :- Awith A atomic.
An LKProof consisting of a logical axiom:
--------ax A :- Awith A atomic.
The atom A.
Index of the left cut formula or the formula itself.
Index of the left cut formula or the formula itself. An LKProof ending with a negation on the left:
(π) Γ :- Δ, A -----------¬:l ¬A, Γ :- Δ
The proof π.
The index of A in the succedent.
An LKProof ending with a negation on the right:Index of the left cut formula or the formula itself.
An LKProof ending with a negation on the right:Index of the left cut formula or the formula itself.
(π) A, Γ :- Δ -----------¬:r Γ :- Δ, ¬A
The proof π.
The index of A in the antecedent.
An LKProof ending with a disjunction on the left:
(π1) (π2) A, Γ :- Δ B, Π :- Λ -------------------------- A∨B, Γ, Π :- Δ, Λ
An LKProof ending with a disjunction on the left:
(π1) (π2) A, Γ :- Δ B, Π :- Λ -------------------------- A∨B, Γ, Π :- Δ, Λ
The proof π1.
The index of A.
The proof π2
The index of B.
An LKProof ending with a disjunction on the right:
(π) Γ :- Δ, A, B -------------- Γ :- Δ, A ∨ B
An LKProof ending with a disjunction on the right:
(π) Γ :- Δ, A, B -------------- Γ :- Δ, A ∨ B
The subproof π.
The index of A.
The index of B.
Class for convenient construction of proofs.
Class for convenient construction of proofs. Allows you to write proofs post-order style (à la Bussproofs). Example:
(ProofBuilder c LogicalAxiom(A) c LogicalAxiom(B) u (WeakeningLeftRule(_, C)) b (AndRightRule(_,_, And(A, B)) qed)The constructor is private, so the only way to instantiate this class is by using the ProofBuilder object. This means that the stack will always be empty in the beginning.
An LKProof consisting of a reflexivity axiom:
------------ax :- s = swith s a term.
An LKProof consisting of a reflexivity axiom:
------------ax :- s = swith s a term.
The term s.
An LKProof deriving a sequent from another sequent:
(π) Γ :- Δ ---------- Γ' :- Δ'
An LKProof deriving a sequent from another sequent:
(π) Γ :- Δ ---------- Γ' :- Δ'
An LKProof ending with a left weakening:
(π) Γ :- Δ ---------w:l A, Γ :- Δ
An LKProof ending with a left weakening:
(π) Γ :- Δ ---------w:l A, Γ :- Δ
The subproof π.
The formula A.
An LKProof ending with a right weakening:
(π) Γ :- Δ ---------w:r Γ :- Δ, A
An LKProof ending with a right weakening:
(π) Γ :- Δ ---------w:r Γ :- Δ, A
The subproof π.
The formula A.
Convenience object for constructing Axioms.
An LKProof introducing ⊥ on the left:
--------⊥:l ⊥ :-
An LKProof introducing ⊥ on the left:
--------⊥:l ⊥ :-
This macro rule simulates a series of contractions in the antecedent.
This macro rule simulates a series of contractions in both cedents.
This macro rule simulates a series of contractions in the succedent.
Move a formula to the beginning of the antecedent, where the main formula is customarily placed.
Move a formula to the beginning of the antecedent, where the main formula is customarily placed.
(π) Γ, A, Γ' :- Δ -------------- A, Γ, Γ' :- Δ
Move a formula to the end of the succedent, where the main formula is customarily placed.
Move a formula to the end of the succedent, where the main formula is customarily placed.
(π) Γ :- Δ, A, Δ' -------------- Γ :- Δ, Δ', A
This object implements a version of Gentzen's cut-elimination proof for our sequent calculus LK.
This object implements a version of Gentzen's cut-elimination proof for our sequent calculus LK. For details, please refer to the documentation of the apply methods.
An LKProof introducing ⊤ on the right:
--------⊤:r :- ⊤
An LKProof introducing ⊤ on the right:
--------⊤:r :- ⊤
This macro rule simulates multiple weakenings and contractions in both cedents.
This macro rule simulates a series of weakenings in the antecedent.
This macro rule simulates a series of weakenings in both cedents.
This macro rule simulates a series of weakenings in the succedent.
Algorithm that removes some unnecessary cuts.
Algorithm that removes some unnecessary cuts. At the moment it only removes cuts where one of the premises is a logical axiom.
Object for calling the eliminateTheoryAxiom
transformation.
Modifies an LK proof to introduce strong quantifiers as soon as possible.
Computes a proof of F from a proof of some instances of F
Proof regularization
Bottom-up construction of sequent calculus proofs.
Bottom-up construction of sequent calculus proofs.
Currently supports propositional logic as well as proof construction using expansion trees.