Defining GL-split proof systems. #
Here we define the GL-split-proof system along with finitization and basic properties. We use the namespace Split to distinguish from our general GL-proofs.
Basic components of the GL-split proof system. #
Rule applications for the GL-split proof system.
- topₗ (Δ : SplitSequent) : Sum.inl ⊤ ∈ Δ → RuleApp
- topᵣ (Δ : SplitSequent) : Sum.inr ⊤ ∈ Δ → RuleApp
- axₗₗ (Δ : SplitSequent) (n : ℕ) : Sum.inl (at n) ∈ Δ ∧ Sum.inl (na n) ∈ Δ → RuleApp
- axₗᵣ (Δ : SplitSequent) (n : ℕ) : Sum.inl (at n) ∈ Δ ∧ Sum.inr (na n) ∈ Δ → RuleApp
- axᵣₗ (Δ : SplitSequent) (n : ℕ) : Sum.inr (at n) ∈ Δ ∧ Sum.inl (na n) ∈ Δ → RuleApp
- axᵣᵣ (Δ : SplitSequent) (n : ℕ) : Sum.inr (at n) ∈ Δ ∧ Sum.inr (na n) ∈ Δ → RuleApp
- andₗ (Δ : SplitSequent) (A B : Formula) : Sum.inl (A&B) ∈ Δ → RuleApp
- andᵣ (Δ : SplitSequent) (A B : Formula) : Sum.inr (A&B) ∈ Δ → RuleApp
- orₗ (Δ : SplitSequent) (A B : Formula) : Sum.inl (A v B) ∈ Δ → RuleApp
- orᵣ (Δ : SplitSequent) (A B : Formula) : Sum.inr (A v B) ∈ Δ → RuleApp
- boxₗ (Δ : SplitSequent) (A : Formula) : Sum.inl (□A) ∈ Δ → RuleApp
- boxᵣ (Δ : SplitSequent) (A : Formula) : Sum.inr (□A) ∈ Δ → RuleApp
Instances For
Endofunctor for the GL-split proof system.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a RuleApp, obtain the principal formulas.
Equations
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.topₗ Δ a) = {Sum.inl ⊤}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.topᵣ Δ a) = {Sum.inr ⊤}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.axₗₗ Δ n a) = {Sum.inl (at n), Sum.inl (na n)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.axₗᵣ Δ n a) = {Sum.inl (at n), Sum.inr (na n)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.axᵣₗ Δ n a) = {Sum.inr (at n), Sum.inl (na n)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.axᵣᵣ Δ n a) = {Sum.inr (at n), Sum.inr (na n)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.andₗ Δ A B a) = {Sum.inl (A&B)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.andᵣ Δ A B a) = {Sum.inr (A&B)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.orₗ Δ A B a) = {Sum.inl (A v B)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.orᵣ Δ A B a) = {Sum.inr (A v B)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.boxₗ Δ A a) = {Sum.inl (□A)}
- Lean4GlCoalgebras.Split.fₚ (Lean4GlCoalgebras.Split.RuleApp.boxᵣ Δ A a) = {Sum.inr (□A)}
Instances For
Given a RuleApp, obtain the split sequent.
Equations
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.topₗ Δ a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.topᵣ Δ a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.axₗₗ Δ n a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.axₗᵣ Δ n a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.axᵣₗ Δ n a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.axᵣᵣ Δ n a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.andₗ Δ A B a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.andᵣ Δ A B a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.orₗ Δ A B a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.orᵣ Δ A B a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.boxₗ Δ A a) = Δ
- Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.RuleApp.boxᵣ Δ A a) = Δ
Instances For
Given a RuleApp, obtain the non-principal formulas.
Instances For
Relating principal formulas, non-principal formulas, and the sequent.
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Get RuleApp of a node (first projection).
Equations
- Lean4GlCoalgebras.Split.r α x = (α x).1
Instances For
Get premises of a node (second projection).
Equations
- Lean4GlCoalgebras.Split.p α x = (α x).2
Instances For
Edge relation induced by p.
Equations
- Lean4GlCoalgebras.Split.edge α x y = (y ∈ Lean4GlCoalgebras.Split.p α x)
Instances For
Definition of GL-split proof.
- X : Type
Auxiliary declaration used in the GL coalgebra development.
Auxiliary declaration used in the GL coalgebra development.
- step (x : self.X) : match r self.α x with | RuleApp.topₗ Δ a => p self.α x = ∅ | RuleApp.topᵣ Δ a => p self.α x = ∅ | RuleApp.axₗₗ Δ n a => p self.α x = ∅ | RuleApp.axₗᵣ Δ n a => p self.α x = ∅ | RuleApp.axᵣₗ Δ n a => p self.α x = ∅ | RuleApp.axᵣᵣ Δ n a => p self.α x = ∅ | RuleApp.andₗ Δ A B a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inl A}, fₙ (r self.α x) ∪ {Sum.inl B}] | RuleApp.andᵣ Δ A B a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inr A}, fₙ (r self.α x) ∪ {Sum.inr B}] | RuleApp.orₗ Δ A B a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inl A, Sum.inl B}] | RuleApp.orᵣ Δ A B a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inr A, Sum.inr B}] | RuleApp.boxₗ Δ A a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [(fₙ (r self.α x)).D ∪ {Sum.inl A}] | RuleApp.boxᵣ Δ A a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [(fₙ (r self.α x)).D ∪ {Sum.inr A}]
Instances For
GL-split proofs are coalgebras. Note: we can do this the other way around, i.e. Proof extends CategoryTheory.Endofunctor.Coalgebra T, however I find X and α more explicative than V and str
Equations
- 𝕏.toCoalgebra = { V := 𝕏.X, str := TypeCat.ofHom 𝕏.α }
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- (𝕏⊢Δ) = ∃ (x : 𝕏.X), Lean4GlCoalgebras.Split.f (Lean4GlCoalgebras.Split.r 𝕏.α x) = Δ
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- (⊢Δ) = ∃ (𝕏 : Lean4GlCoalgebras.Split.Proof), 𝕏⊢Δ
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Split.«term⊢_» = Lean.ParserDescr.node `Lean4GlCoalgebras.Split.«term⊢_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 40))
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fischer-Ladner properties of GL-split proofs #
Point Generated GL-split Proofs #
Structure morphism for Point Generation.
Equations
- Lean4GlCoalgebras.Split.αPoint 𝕐 x y = ((𝕐.α ↑y).1, List.pmap (fun (x_1 : 𝕐.X) (y : Relation.ReflTransGen (Lean4GlCoalgebras.Split.edge 𝕐.α) x x_1) => ⟨x_1, y⟩) (𝕐.α ↑y).2 ⋯)
Instances For
Point Generated Split Proof.
Equations
- Lean4GlCoalgebras.Split.pointGeneratedProof 𝕐 x = { X := { y : 𝕐.X // Relation.ReflTransGen (Lean4GlCoalgebras.Split.edge 𝕐.α) x y }, α := Lean4GlCoalgebras.Split.αPoint 𝕐 x, step := ⋯ }
Instances For
Filtration of GL-Proofs #
Equivalence relation used for Filtration.
Equations
- One or more equations did not get rendered due to their size.
Structure morphism for Filtration.
Equations
- Lean4GlCoalgebras.Split.αQuot 𝕐 x = ((𝕐.α x.out).1, List.map (Quotient.mk (Lean4GlCoalgebras.Split.fEqEquiRel 𝕐)) (𝕐.α x.out).2)
Instances For
Filtration of a GL-split Proof is a GL-split proof.
Equations
- Lean4GlCoalgebras.Split.filtration 𝕐 = { X := Quotient (Lean4GlCoalgebras.Split.fEqEquiRel 𝕐), α := Lean4GlCoalgebras.Split.αQuot 𝕐, step := ⋯ }
Instances For
Finite Proof Property #
Properties of (infinite) paths #
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Split.nbEdge α x y = (y ∈ Lean4GlCoalgebras.Split.p α x ∧ ¬(Lean4GlCoalgebras.Split.r α x).isBox)
Instances For
Non box paths do not loop.
Every path of increasing size has a box rule application.
Every loop has a box edge.
Edge relation restricted to nodes satisfying predicate p.
Equations
- Lean4GlCoalgebras.Split.edgeRestr p x y = (Lean4GlCoalgebras.Split.edge 𝕏.α x y ∧ p x ∧ p y)
Instances For
Every restricted path of increasing size has a box rule application.