Documentation

LeanPool.Lean4GlCoalgebras.Split.Proof

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.

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 non-principal formulas.

      Equations
      Instances For
        theorem Lean4GlCoalgebras.Split.fₙ_alternate (r : RuleApp) :
        fₙ r = match r with | RuleApp.topₗ Δ a => Δ \ {Sum.inl } | RuleApp.topᵣ Δ a => Δ \ {Sum.inr } | RuleApp.axₗₗ Δ n a => Δ \ {Sum.inl (at n), Sum.inl (na n)} | RuleApp.axₗᵣ Δ n a => Δ \ {Sum.inl (at n), Sum.inr (na n)} | RuleApp.axᵣₗ Δ n a => Δ \ {Sum.inr (at n), Sum.inl (na n)} | RuleApp.axᵣᵣ Δ n a => Δ \ {Sum.inr (at n), Sum.inr (na n)} | RuleApp.andₗ Δ A B a => Δ \ {Sum.inl (A&B)} | RuleApp.andᵣ Δ A B a => Δ \ {Sum.inr (A&B)} | RuleApp.orₗ Δ A B a => Δ \ {Sum.inl (A v B)} | RuleApp.orᵣ Δ A B a => Δ \ {Sum.inr (A v B)} | RuleApp.boxₗ Δ A a => Δ \ {Sum.inl (A)} | RuleApp.boxᵣ Δ A a => Δ \ {Sum.inr (A)}

        Relating principal formulas, non-principal formulas, and the sequent.

        Auxiliary declaration used in the GL coalgebra development.

        Equations
        Instances For
          def Lean4GlCoalgebras.Split.r {X : Type} (α : XT.obj X) (x : X) :

          Get RuleApp of a node (first projection).

          Equations
          Instances For
            def Lean4GlCoalgebras.Split.p {X : Type} (α : XT.obj X) (x : X) :

            Get premises of a node (second projection).

            Equations
            Instances For
              def Lean4GlCoalgebras.Split.edge {X : Type} (α : XT.obj X) (x y : X) :

              Edge relation induced by p.

              Equations
              Instances For

                Definition of GL-split proof.

                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
                  Instances For

                    Auxiliary declaration used in the GL coalgebra development.

                    Equations
                    Instances For

                      Auxiliary declaration used in the GL coalgebra development.

                      Equations
                      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
                          Instances For

                            Auxiliary declaration used in the GL coalgebra development.

                            Equations
                            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 #

                                theorem Lean4GlCoalgebras.Split.edge_in_FL {𝕏 : Proof} {x y : 𝕏.X} (x_y : edge 𝕏.α x y) :
                                f (r 𝕏.α y) (f (r 𝕏.α x)).FL

                                Every edge is contained in FL closure.

                                theorem Lean4GlCoalgebras.Split.path_in_FL {𝕏 : Proof} {x y : 𝕏.X} (x_y : Relation.ReflTransGen (edge 𝕏.α) x y) :
                                f (r 𝕏.α y) (f (r 𝕏.α x)).FL

                                Every path is contained in FL closure.

                                Point Generated GL-split Proofs #

                                def Lean4GlCoalgebras.Split.αPoint (𝕐 : Proof) (x : 𝕐.X) :
                                { y : 𝕐.X // Relation.ReflTransGen (edge 𝕐.α) x y }T.obj { y : 𝕐.X // Relation.ReflTransGen (edge 𝕐.α) x y }

                                Structure morphism for Point Generation.

                                Equations
                                Instances For

                                  Point Generated Split Proof.

                                  Equations
                                  Instances For
                                    theorem Lean4GlCoalgebras.Split.node_in_pg_sequent_in_FL (𝕏 : Proof) (x : 𝕏.X) (y : (pointGeneratedProof 𝕏 x).X) :
                                    f (r (αPoint 𝕏 x) y) (f (r 𝕏.α x)).FL

                                    Filtration of GL-Proofs #

                                    @[implicit_reducible]

                                    Equivalence relation used for Filtration.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    noncomputable def Lean4GlCoalgebras.Split.αQuot (𝕐 : Proof) (x : Quotient (fEqEquiRel 𝕐)) :

                                    Structure morphism for Filtration.

                                    Equations
                                    Instances For
                                      noncomputable def Lean4GlCoalgebras.Split.filtration (𝕐 : Proof) :

                                      Filtration of a GL-split Proof is a GL-split proof.

                                      Equations
                                      Instances For

                                        Finite Proof Property #

                                        theorem Lean4GlCoalgebras.Split.finite_proof_of_proof (𝕏 : Proof) (Δ : SplitSequent) :
                                        (𝕏Δ) → ∃ (𝕐 : Proof), Finite 𝕐.X (𝕐Δ)

                                        Given a split proof of Δ there exists a finite split proof of Δ.

                                        Properties of (infinite) paths #

                                        def Lean4GlCoalgebras.Split.nbEdge {X : Type} (α : XT.obj X) (x y : X) :

                                        Auxiliary declaration used in the GL coalgebra development.

                                        Equations
                                        Instances For
                                          theorem Lean4GlCoalgebras.Split.lt_if_not_box_edge {𝕏 : Proof} {x y : 𝕏.X} (x_y : nbEdge 𝕏.α x y) :
                                          (f (r 𝕏.α y)).length < (f (r 𝕏.α x)).length

                                          Non box edges reduce sequent size.

                                          theorem Lean4GlCoalgebras.Split.lt_if_not_box_path {𝕏 : Proof} {x y : 𝕏.X} :
                                          Relation.TransGen (nbEdge 𝕏.α) x y(f (r 𝕏.α y)).length < (f (r 𝕏.α x)).length

                                          Non box paths reduce sequent size.

                                          Non box paths do not loop.

                                          theorem Lean4GlCoalgebras.Split.exists_box_on_le_path {𝕏 : Proof} (x y : 𝕏.X) :
                                          Relation.TransGen (edge 𝕏.α) x y(f (r 𝕏.α x)).length (f (r 𝕏.α y)).length∃ (z : 𝕏.X), Relation.ReflTransGen (edge 𝕏.α) x z Relation.ReflTransGen (edge 𝕏.α) z y (r 𝕏.α z).isBox

                                          Every path of increasing size has a box rule application.

                                          theorem Lean4GlCoalgebras.Split.exists_box_on_loop {𝕏 : Proof} (x : 𝕏.X) :
                                          Relation.TransGen (edge 𝕏.α) x x∃ (z : 𝕏.X), Relation.ReflTransGen (edge 𝕏.α) x z Relation.ReflTransGen (edge 𝕏.α) z x (r 𝕏.α z).isBox

                                          Every loop has a box edge.

                                          def Lean4GlCoalgebras.Split.edgeRestr {𝕏 : Proof} (p : 𝕏.XProp) :
                                          𝕏.X𝕏.XProp

                                          Edge relation restricted to nodes satisfying predicate p.

                                          Equations
                                          Instances For
                                            theorem Lean4GlCoalgebras.Split.exists_box_on_le_restr_path {𝕏 : Proof} (x y : 𝕏.X) (p : 𝕏.XProp) :
                                            Relation.TransGen (edgeRestr p) x y(f (r 𝕏.α x)).length (f (r 𝕏.α y)).length∃ (z : 𝕏.X), Relation.ReflTransGen (edgeRestr p) x z Relation.TransGen (edgeRestr p) z y (r 𝕏.α z).isBox

                                            Every restricted path of increasing size has a box rule application.

                                            theorem Lean4GlCoalgebras.Split.exists_box_on_restr_loop {𝕏 : Proof} (x : 𝕏.X) (p : 𝕏.XProp) :
                                            Relation.TransGen (edgeRestr p) x x∃ (z : 𝕏.X), (r 𝕏.α z).isBox p z Relation.TransGen (edgeRestr p) z z

                                            Every restricted loop has a box edge.

                                            theorem Lean4GlCoalgebras.Split.inf_path_has_inf_boxes {𝕏 : Proof} (g : 𝕏.X) (h : ∀ (n : ), edge 𝕏.α (g n) (g (n + 1))) (n : ) :
                                            ∃ (m : ), (r 𝕏.α (g (n + m))).isBox

                                            Every infinite path has an infinite number of nodes which are box rule applications.

                                            theorem Lean4GlCoalgebras.Split.finite_and_no_loop_implies_exists_leaf {𝕏 : Proof} [Finite 𝕏.X] (h : 𝕏.XProp) (x : 𝕏.X) (x_sat : h x) :
                                            (¬∃ (y : 𝕏.X), Relation.TransGen (edgeRestr h) y y) → ∃ (y : 𝕏.X), h y zp 𝕏.α y, ¬h z

                                            If a finite proof has no restricted loops, then there must exist a leaf.

                                            theorem Lean4GlCoalgebras.Split.in_vocab_of_path_left {𝕏 : Proof} {x y : 𝕏.X} (x_y : Relation.ReflTransGen (edge 𝕏.α) x y) {n : } (n_in : n (f (r 𝕏.α y)).left.vocab) :
                                            n (f (r 𝕏.α x)).left.vocab
                                            theorem Lean4GlCoalgebras.Split.in_vocab_of_path_right {𝕏 : Proof} {x y : 𝕏.X} (x_y : Relation.ReflTransGen (edge 𝕏.α) x y) {n : } (n_in : n (f (r 𝕏.α y)).right.vocab) :
                                            n (f (r 𝕏.α x)).right.vocab