Proof automation based on the proof search on (modified) $\mathbf{LJpm}^*$ #
main reference: Grigori Mints, A Short Introduction to Intuitionistic Logic [Min00]
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
LO.Meta.IntProver.Theorems.to_twoSided
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{Γ Δ : List F}
(h : Entailment.Tableaux.Valid 𝓢 [{ antecedent := Γ, succedent := Δ }])
:
Entailment.TwoSided 𝓢 Γ Δ
theorem
LO.Meta.IntProver.Theorems.to_provable
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{φ : F}
(h : Entailment.Tableaux.Valid 𝓢 [{ antecedent := [], succedent := [φ] }])
:
theorem
LO.Meta.IntProver.Theorems.add_hyp
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{𝒯 : S}
(s : 𝒯 ⪯ 𝓢)
{Γ Δ : List F}
{φ : F}
(hφ : 𝒯 ⊢ φ)
:
theorem
LO.Meta.IntProver.Theorems.right_closed
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
(h : φ ∈ Γ)
:
Entailment.Tableaux.Valid 𝓢 ({ antecedent := Γ, succedent := φ :: Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.left_closed
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
(h : φ ∈ Δ)
:
Entailment.Tableaux.Valid 𝓢 ({ antecedent := φ :: Γ, succedent := Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.remove
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : Entailment.Tableaux F}
{Γ Δ : List F}
:
Entailment.Tableaux.Valid 𝓢 T → Entailment.Tableaux.Valid 𝓢 ({ antecedent := Γ, succedent := Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.rotate
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
:
Entailment.Tableaux.Valid 𝓢 (T ++ [{ antecedent := Γ, succedent := Δ }]) →
Entailment.Tableaux.Valid 𝓢 ({ antecedent := Γ, succedent := Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.remove_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
theorem
LO.Meta.IntProver.Theorems.rotate_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
theorem
LO.Meta.IntProver.Theorems.verum_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
:
theorem
LO.Meta.IntProver.Theorems.falsum_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
:
theorem
LO.Meta.IntProver.Theorems.and_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.or_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.neg_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
theorem
LO.Meta.IntProver.Theorems.imply_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.iff_right
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.remove_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
Entailment.Tableaux.Valid 𝓢 ({ antecedent := Γ, succedent := Δ } :: T) →
Entailment.Tableaux.Valid 𝓢 ({ antecedent := φ :: Γ, succedent := Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.rotate_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
theorem
LO.Meta.IntProver.Theorems.verum_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
:
Entailment.Tableaux.Valid 𝓢 ({ antecedent := Γ, succedent := Δ } :: T) →
Entailment.Tableaux.Valid 𝓢 ({ antecedent := ⊤ :: Γ, succedent := Δ } :: T)
theorem
LO.Meta.IntProver.Theorems.falsum_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
:
theorem
LO.Meta.IntProver.Theorems.or_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.and_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.neg_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ : F}
:
theorem
LO.Meta.IntProver.Theorems.imply_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
theorem
LO.Meta.IntProver.Theorems.iff_left
{F : Type u_1}
[LogicalConnective F]
[DecidableEq F]
{S : Type u_2}
[Entailment S F]
{𝓢 : S}
[Entailment.Int 𝓢]
{T : List (Entailment.Tableaux.Sequent F)}
{Γ Δ : List F}
{φ ψ : F}
:
- levelF : Lean.Level
- levelS : Lean.Level
- levelE : Lean.Level
- F : Q(Type udummy._uniq.39)
- instLC : Q(LogicalConnective unknown_1)
- instDE : Q(DecidableEq unknown_1)
- S : Q(Type udummy._uniq.45)
- E : Q(Entailment unknown_1 unknown_2)
- 𝓢 : Q(unknown_1)
- instInt : Q(Entailment.Int unknown_5)
Instances For
@[reducible, inline]
The monad for int_prover contains.
Instances For
Instances For
def
LO.Meta.IntProver.getGoalProvable
(e : Q(Prop))
:
Lean.MetaM
((c : Context) ×
have a := c.F;
Q(«$a»))
Instances For
@[reducible, inline]
Equations
Instances For
@[reducible, inline]
Instances For
Equations
- LO.Meta.IntProver.«term_⟶_» = Lean.ParserDescr.trailingNode `LO.Meta.IntProver.«term_⟶_» 0 45 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⟶ ") (Lean.ParserDescr.cat `term 46))
Instances For
Equations
- LO.Meta.IntProver.litToExpr φ = do let c ← read pure (LO.Meta.Litform.toExpr c.instLC φ)
Instances For
Equations
- LO.Meta.IntProver.exprToLit e = do let c ← read liftM (LO.Meta.Litform.denote c.instLC e)
Instances For
Equations
- Γ.toExprList = do let c ← read pure (List.map (LO.Meta.Litform.toExpr c.instLC) Γ)
Instances For
Equations
- LO.Meta.IntProver.exprListToLitList l = do let c ← read liftM (List.mapM (LO.Meta.Litform.denote c.instLC) l)
Instances For
Equations
- Γ.toExpr = do let c ← read pure (Qq.toQList (List.map (LO.Meta.Litform.toExpr c.instLC) Γ))
Instances For
def
LO.Meta.IntProver.mkTableauSequentQ
{u_1 : Lean.Level}
(F : Q(Type u_1))
(Γ Δ : Q(List «$F»))
:
Q(Entailment.Tableaux.Sequent «$F»)
Equations
- LO.Meta.IntProver.mkTableauSequentQ F Γ Δ = q({ antecedent := «$Γ», succedent := «$Δ» })
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- LO.Meta.IntProver.prover 0 b T = do let __do_lift ← T.toExpr Lean.throwError (Lean.toMessageData "Proof search failed: " ++ Lean.toMessageData __do_lift)
- LO.Meta.IntProver.prover k_2.succ false [] = Lean.throwError (Lean.toMessageData "Proof search failed: empty tableaux reached.")
- LO.Meta.IntProver.prover k_2.succ true [] = Lean.throwError (Lean.toMessageData "Proof search failed: empty tableaux reached.")
Instances For
- levelF : Lean.Level
- levelS : Lean.Level
- levelE : Lean.Level
- F : Q(Type udummy._uniq.28)
- S : Q(Type udummy._uniq.29)
- E : Q(Entailment unknown_1 unknown_2)
- 𝓢 : Q(unknown_1)
- φ : Q(unknown_1)
- proof : Q(unknown_4 ⊢ unknown_5)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LO.Meta.IntProver.toProvable φ e = LO.Meta.IntProver.iapp `LO.Meta.IntProver.Theorems.to_provable #[φ, e]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.