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
- Split.fₚ (Split.RuleApp.topₗ Δ a) = {Sum.inl ⊤}
- Split.fₚ (Split.RuleApp.topᵣ Δ a) = {Sum.inr ⊤}
- Split.fₚ (Split.RuleApp.axₗₗ Δ n a) = {Sum.inl (at n), Sum.inl (na n)}
- Split.fₚ (Split.RuleApp.axₗᵣ Δ n a) = {Sum.inl (at n), Sum.inr (na n)}
- Split.fₚ (Split.RuleApp.axᵣₗ Δ n a) = {Sum.inr (at n), Sum.inl (na n)}
- Split.fₚ (Split.RuleApp.axᵣᵣ Δ n a) = {Sum.inr (at n), Sum.inr (na n)}
- Split.fₚ (Split.RuleApp.andₗ Δ A B a) = {Sum.inl (A&B)}
- Split.fₚ (Split.RuleApp.andᵣ Δ A B a) = {Sum.inr (A&B)}
- Split.fₚ (Split.RuleApp.orₗ Δ A B a) = {Sum.inl (A v B)}
- Split.fₚ (Split.RuleApp.orᵣ Δ A B a) = {Sum.inr (A v B)}
- Split.fₚ (Split.RuleApp.boxₗ Δ A a) = {Sum.inl (□A)}
- Split.fₚ (Split.RuleApp.boxᵣ Δ A a) = {Sum.inr (□A)}
Instances For
Given a RuleApp, obtain the split sequent.
Equations
- Split.f (Split.RuleApp.topₗ Δ a) = Δ
- Split.f (Split.RuleApp.topᵣ Δ a) = Δ
- Split.f (Split.RuleApp.axₗₗ Δ n a) = Δ
- Split.f (Split.RuleApp.axₗᵣ Δ n a) = Δ
- Split.f (Split.RuleApp.axᵣₗ Δ n a) = Δ
- Split.f (Split.RuleApp.axᵣᵣ Δ n a) = Δ
- Split.f (Split.RuleApp.andₗ Δ A B a) = Δ
- Split.f (Split.RuleApp.andᵣ Δ A B a) = Δ
- Split.f (Split.RuleApp.orₗ Δ A B a) = Δ
- Split.f (Split.RuleApp.orᵣ Δ A B a) = Δ
- Split.f (Split.RuleApp.boxₗ Δ A a) = Δ
- Split.f (Split.RuleApp.boxᵣ Δ A a) = Δ
Instances For
Relating principal formulas, non-principal formulas, and the sequent.
Defininion of GL-split proof.
- X : Type
- 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
Equations
- (⊢Δ) = ∃ (𝕏 : Split.Proof), 𝕏⊢Δ
Instances For
Equations
- Split.«term_⊢_» = Lean.ParserDescr.trailingNode `Split.«term_⊢_» 6 7 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 6))
Instances For
Equations
- Split.«term⊢_» = Lean.ParserDescr.node `Split.«term⊢_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 40))
Instances For
Equations
- Split.«term_≅_» = Lean.ParserDescr.trailingNode `Split.«term_≅_» 7 8 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "≅") (Lean.ParserDescr.cat `term 7))
Instances For
Fischer-Ladner properties of GL-split proofs #
Point Generated GL-split Proofs #
Structure morphism for Point Generation.
Equations
- Split.αPoint 𝕐 x y = ((𝕐.α ↑y).1, List.pmap (fun (x_1 : 𝕐.X) (y : Relation.ReflTransGen (Split.edge 𝕐.α) x x_1) => ⟨x_1, y⟩) (𝕐.α ↑y).2 ⋯)
Instances For
Point Generated Split Proof.
Equations
- Split.pointGeneratedProof 𝕐 x = { X := { y : 𝕐.X // Relation.ReflTransGen (Split.edge 𝕐.α) x y }, α := Split.αPoint 𝕐 x, step := ⋯ }
Instances For
Filtration of GL-Proofs #
Structure morphism for Filtration.
Equations
- Split.αQuot 𝕐 x = Split.T.map (Quotient.mk (Split.instSetoidX 𝕐)) (𝕐.α x.out)
Instances For
Filtration of a GL-split Proof is a GL-split proof.
Equations
- Split.filtration 𝕐 = { X := Quotient (Split.instSetoidX 𝕐), α := Split.αQuot 𝕐, step := ⋯ }
Instances For
Finite Model Property #
Given a split proof of Δ there exists a finite split proof of Δ
Properties of (infinite) paths #
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
- Split.edgeRestr p x y = (Split.edge 𝕏.α x y ∧ p x ∧ p y)
Instances For
Every restricted path of increasing size has a box rule application.