Defining GL-ext+pre proof system. #
Here we define the GL-ext+pre system. This system is different from the paper, where we build in
how we connect non-axiomatic leaf nodes into RuleApp directly.
Rule applications for the GL-ext+pre proof system.
- pre {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (y : 𝕏.X) : y ∈ Split.p 𝕏.α x → RuleApp x τ
- cutₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : RuleApp x τ
- cutᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : RuleApp x τ
- wkₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : Sum.inl A ∈ Δ → RuleApp x τ
- wkᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : Sum.inr A ∈ Δ → RuleApp x τ
- topₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) : Sum.inl ⊤ ∈ Δ → RuleApp x τ
- topᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) : Sum.inr ⊤ ∈ Δ → RuleApp x τ
- axₗₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (n : ℕ) : Sum.inl (at n) ∈ Δ ∧ Sum.inl (na n) ∈ Δ → RuleApp x τ
- axₗᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (n : ℕ) : Sum.inl (at n) ∈ Δ ∧ Sum.inr (na n) ∈ Δ → RuleApp x τ
- axᵣₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (n : ℕ) : Sum.inr (at n) ∈ Δ ∧ Sum.inl (na n) ∈ Δ → RuleApp x τ
- axᵣᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (n : ℕ) : Sum.inr (at n) ∈ Δ ∧ Sum.inr (na n) ∈ Δ → RuleApp x τ
- andₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A B : Formula) : Sum.inl (A&B) ∈ Δ → RuleApp x τ
- andᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A B : Formula) : Sum.inr (A&B) ∈ Δ → RuleApp x τ
- orₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A B : Formula) : Sum.inl (A v B) ∈ Δ → RuleApp x τ
- orᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A B : Formula) : Sum.inr (A v B) ∈ Δ → RuleApp x τ
- boxₗ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : Sum.inl (□A) ∈ Δ → RuleApp x τ
- boxᵣ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.X → SplitSequent} (Δ : SplitSequent) (A : Formula) : Sum.inr (□A) ∈ Δ → RuleApp x τ
Instances For
Given a RuleApp, obtain the principal formulas.
Equations
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.pre y a) = ∅
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.cutₗ Δ A) = ∅
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.cutᵣ Δ A) = ∅
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.wkₗ Δ A a) = {Sum.inl A}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.wkᵣ Δ A a) = {Sum.inr A}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.topₗ Δ a) = {Sum.inl ⊤}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.topᵣ Δ a) = {Sum.inr ⊤}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.axₗₗ Δ n a) = {Sum.inl (at n), Sum.inl (na n)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.axₗᵣ Δ n a) = {Sum.inl (at n), Sum.inr (na n)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.axᵣₗ Δ n a) = {Sum.inr (at n), Sum.inl (na n)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.axᵣᵣ Δ n a) = {Sum.inr (at n), Sum.inr (na n)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.andₗ Δ A B a) = {Sum.inl (A&B)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.andᵣ Δ A B a) = {Sum.inr (A&B)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.orₗ Δ A B a) = {Sum.inl (A v B)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.orᵣ Δ A B a) = {Sum.inr (A v B)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.boxₗ Δ A a) = {Sum.inl (□A)}
- Lean4GlCoalgebras.Ext.fₚ (Lean4GlCoalgebras.Ext.RuleApp.boxᵣ Δ A a) = {Sum.inr (□A)}
Instances For
Given a RuleApp, obtain the split sequent.
Equations
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.pre y a) = τ y
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.cutₗ Δ A) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.cutᵣ Δ A) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.wkₗ Δ A a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.wkᵣ Δ A a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.topₗ Δ a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.topᵣ Δ a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.axₗₗ Δ n a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.axₗᵣ Δ n a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.axᵣₗ Δ n a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.axᵣᵣ Δ n a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.andₗ Δ A B a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.andᵣ Δ A B a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.orₗ Δ A B a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.orᵣ Δ A B a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.boxₗ Δ A a) = Δ
- Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.RuleApp.boxᵣ Δ A a) = Δ
Instances For
Given a RuleApp, obtain the non-principal formulas.
Equations
Instances For
Relating principal formulas, non-principal formulas, and the split sequent.
Auxiliary declaration used in the GL coalgebra development.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get RuleApp of a node (first projection).
Equations
- Lean4GlCoalgebras.Ext.r α x = (α x).1
Instances For
Get premises of a node (second projection).
Equations
- Lean4GlCoalgebras.Ext.p α x = (α x).2
Instances For
Edge relation induced by p.
Equations
- Lean4GlCoalgebras.Ext.edge α x y = (y ∈ Lean4GlCoalgebras.Ext.p α x)
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- (Lean4GlCoalgebras.Ext.RuleApp.pre y a).isNonAxLeaf = (true = true)
- x✝.isNonAxLeaf = (false = true)
Instances For
Auxiliary declaration used in the GL coalgebra development.
- X : Type
Auxiliary declaration used in the GL coalgebra development.
Auxiliary declaration used in the GL coalgebra development.
- root : self.X
Auxiliary declaration used in the GL coalgebra development.
- step (x : self.X) : match r self.α x with | RuleApp.pre y a => p self.α x = [] | RuleApp.cutₗ Δ A => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [(fₙ (r self.α x)).filterRight ∪ {Sum.inl A}, (fₙ (r self.α x)).filterLeft ∪ {Sum.inr (~A)}] | RuleApp.cutᵣ Δ A => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [(fₙ (r self.α x)).filterLeft ∪ {Sum.inr A}, (fₙ (r self.α x)).filterRight ∪ {Sum.inl (~A)}] | RuleApp.wkₗ Δ A a => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [fₙ (r self.α x)] | RuleApp.wkᵣ Δ A a => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [fₙ (r self.α x)] | 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_1 : self.X) => f (r self.α x_1)) (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_1 : self.X) => f (r self.α x_1)) (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_1 : self.X) => f (r self.α x_1)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inl A, Sum.inl B}] | RuleApp.orᵣ Δ A B a => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [fₙ (r self.α x) ∪ {Sum.inr A, Sum.inr B}] | RuleApp.boxₗ Δ A a => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [(fₙ (r self.α x)).D ∪ {Sum.inl A}] | RuleApp.boxᵣ Δ A a => List.map (fun (x_1 : self.X) => f (r self.α x_1)) (p self.α x) = [(fₙ (r self.α x)).D ∪ {Sum.inr A}]
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.Ext.Proves x 𝕐 Δ = (Lean4GlCoalgebras.Ext.f (Lean4GlCoalgebras.Ext.r 𝕐.α 𝕐.root) = Δ)
Instances For
Structure morphism of a proof transformation!
Equations
- One or more equations did not get rendered due to their size.
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.infiniteDepSumChainFiniteSubchain h m ⟨n, n_prop⟩ = ⋯ ▸ (f ((Lean4GlCoalgebras.depSumSeqProj h m).2 + n)).snd
Instances For
Provides the proof transformation from local pre-proofs and its path witnesses.
Equations
- Lean4GlCoalgebras.proofTransformation partialProof root_prop box_prop = { X := (y : 𝕏.X) × (partialProof y).X, α := Lean4GlCoalgebras.proofTransformationMap partialProof, step := ⋯, path := ⋯ }