Defining GL-proof systems. #
Here we define the GL-proof system along with finitization and basic properties.
Basic components of the GL-proof system. #
Rule applications for the GL-proof system.
- top (Δ : Sequent) : ⊤ ∈ Δ → RuleApp
- ax (Δ : Sequent) (n : ℕ) : at n ∈ Δ ∧ na n ∈ Δ → RuleApp
- and (Δ : Sequent) (φ ψ : Formula) : (φ&ψ) ∈ Δ → RuleApp
- or (Δ : Sequent) (φ ψ : Formula) : (φ v ψ) ∈ Δ → RuleApp
- box (Δ : Sequent) (φ : Formula) : □φ ∈ Δ → RuleApp
Instances For
Endofunctor for the GL-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.fₚ (Lean4GlCoalgebras.RuleApp.top Δ a) = {⊤}
- Lean4GlCoalgebras.fₚ (Lean4GlCoalgebras.RuleApp.ax Δ n a) = {at n, na n}
- Lean4GlCoalgebras.fₚ (Lean4GlCoalgebras.RuleApp.and Δ A B a) = {A&B}
- Lean4GlCoalgebras.fₚ (Lean4GlCoalgebras.RuleApp.or Δ A B a) = {A v B}
- Lean4GlCoalgebras.fₚ (Lean4GlCoalgebras.RuleApp.box Δ A a) = {□A}
Instances For
Given a RuleApp, obtain the sequent.
Equations
- Lean4GlCoalgebras.f (Lean4GlCoalgebras.RuleApp.top Δ a) = Δ
- Lean4GlCoalgebras.f (Lean4GlCoalgebras.RuleApp.ax Δ n a) = Δ
- Lean4GlCoalgebras.f (Lean4GlCoalgebras.RuleApp.and Δ A B a) = Δ
- Lean4GlCoalgebras.f (Lean4GlCoalgebras.RuleApp.or Δ A B a) = Δ
- Lean4GlCoalgebras.f (Lean4GlCoalgebras.RuleApp.box Δ A a) = Δ
Instances For
Given a RuleApp, obtain the non-principal formulas.
Equations
Instances For
Relating principal formulas, non-principal formulas, and sequent.
Edge relation induced by p.
Equations
- Lean4GlCoalgebras.edge α x y = (y ∈ Lean4GlCoalgebras.p α x)
Instances For
Definition of GL-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.ax Δ n a => p self.α x = [] | RuleApp.and Δ φ ψ a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {φ}, fₙ (r self.α x) ∪ {ψ}] | RuleApp.or Δ φ ψ a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [fₙ (r self.α x) ∪ {φ, ψ}] | RuleApp.box Δ φ a => List.map (fun (x : self.X) => f (r self.α x)) (p self.α x) = [(fₙ (r self.α x)).D ∪ {φ}]
Instances For
GL-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
A proof 𝕏 proves sequent Δ if some node of 𝕏 has sequent Δ as its sequent.
Equations
- (𝕏⊢Δ) = ∃ (x : 𝕏.X), Lean4GlCoalgebras.f (Lean4GlCoalgebras.r 𝕏.α x) = Δ
Instances For
A sequent is provable if there exists a GL-proof of it.
Equations
- (⊢Δ) = ∃ (𝕏 : Lean4GlCoalgebras.Proof), 𝕏⊢Δ
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.«term_⊢_» = Lean.ParserDescr.trailingNode `Lean4GlCoalgebras.«term_⊢_» 6 7 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 6))
Instances For
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.«term⊢_» = Lean.ParserDescr.node `Lean4GlCoalgebras.«term⊢_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⊢") (Lean.ParserDescr.cat `term 40))
Instances For
Fischer-Ladner properties of GL-proofs #
Point Generated GL-Proofs #
Structure morphism for Point Generation.
Equations
- Lean4GlCoalgebras.αPoint 𝕐 x y = ((𝕐.α ↑y).1, List.pmap (fun (x_1 : 𝕐.X) (y : Relation.ReflTransGen (Lean4GlCoalgebras.edge 𝕐.α) x x_1) => ⟨x_1, y⟩) (𝕐.α ↑y).2 ⋯)
Instances For
Point Generated Proof.
Equations
- Lean4GlCoalgebras.pointGeneratedProof 𝕐 x = { X := { y : 𝕐.X // Relation.ReflTransGen (Lean4GlCoalgebras.edge 𝕐.α) x y }, α := Lean4GlCoalgebras.αPoint 𝕐 x, step := ⋯ }
Instances For
Filtration of GL-Proofs #
Equivalence relation used for Filtration.
Equations
- Lean4GlCoalgebras.fEqEquiRel 𝕏 = { r := fun (x y : 𝕏.X) => Lean4GlCoalgebras.f (Lean4GlCoalgebras.r 𝕏.α x) = Lean4GlCoalgebras.f (Lean4GlCoalgebras.r 𝕏.α y), iseqv := ⋯ }
Structure morphism for Filtration.
Equations
- Lean4GlCoalgebras.αQuot 𝕐 x = ((𝕐.α x.out).1, List.map (Quotient.mk (Lean4GlCoalgebras.fEqEquiRel 𝕐)) (𝕐.α x.out).2)
Instances For
Filtration of a GL-Proof is a GL-proof.
Equations
- Lean4GlCoalgebras.filtration 𝕐 = { X := Quotient (Lean4GlCoalgebras.fEqEquiRel 𝕐), α := Lean4GlCoalgebras.αQuot 𝕐, step := ⋯ }
Instances For
Finite Proof Property #
Properties of (infinite) paths #
Auxiliary declaration used in the GL coalgebra development.
Equations
- Lean4GlCoalgebras.nbEdge α x y = (y ∈ Lean4GlCoalgebras.p α x ∧ ¬(Lean4GlCoalgebras.r α x).isBox = true)