Documentation

LeanPool.Lean4GlCoalgebras.Split.ProofTransformations

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.

inductive Lean4GlCoalgebras.Ext.RuleApp {𝕏 : Split.Proof} (x : 𝕏.X) (τ : 𝕏.XSplitSequent) :

Rule applications for the GL-ext+pre proof system.

Instances For
    def Lean4GlCoalgebras.Ext.fₚ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :

    Given a RuleApp, obtain the principal formulas.

    Equations
    Instances For
      def Lean4GlCoalgebras.Ext.fₙ {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :

      Given a RuleApp, obtain the non-principal formulas.

      Equations
      Instances For
        theorem Lean4GlCoalgebras.Ext.fₙ_alternate {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} (r : RuleApp x τ) :
        fₙ r = match r with | RuleApp.pre y a => τ y | RuleApp.cutₗ Δ A => Δ | RuleApp.cutᵣ Δ A => Δ | RuleApp.wkₗ Δ A a => Δ \ {Sum.inl A} | RuleApp.wkᵣ Δ A a => Δ \ {Sum.inr A} | 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 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
          def Lean4GlCoalgebras.Ext.r {X : Type} {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} (α : X(T x τ).obj X) :
          XRuleApp x τ

          Get RuleApp of a node (first projection).

          Equations
          Instances For
            def Lean4GlCoalgebras.Ext.p {X : Type} {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} (α : X(T x τ).obj X) :
            XList X

            Get premises of a node (second projection).

            Equations
            Instances For
              def Lean4GlCoalgebras.Ext.edge {X : Type} {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} (α : X(T x τ).obj X) :
              X(y : X) → Prop

              Edge relation induced by p.

              Equations
              Instances For
                def Lean4GlCoalgebras.Ext.RuleApp.isBox {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :
                RuleApp x τProp

                Auxiliary declaration used in the GL coalgebra development.

                Equations
                Instances For
                  def Lean4GlCoalgebras.Ext.RuleApp.isNonAxLeaf {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :
                  RuleApp x τProp

                  Auxiliary declaration used in the GL coalgebra development.

                  Equations
                  Instances For
                    structure Lean4GlCoalgebras.Ext.PreProof {𝕏 : Split.Proof} (x : 𝕏.X) (τ : 𝕏.XSplitSequent) :

                    Auxiliary declaration used in the GL coalgebra development.

                    Instances For
                      def Lean4GlCoalgebras.Ext.Proves {𝕏 : Split.Proof} (x : 𝕏.X) {σ : 𝕏.XSplitSequent} (𝕐 : PreProof x σ) (Δ : SplitSequent) :

                      Auxiliary declaration used in the GL coalgebra development.

                      Equations
                      Instances For
                        def Lean4GlCoalgebras.proofTransformationMap {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) :
                        (y : 𝕏.X) × (partialProof y).XExtSkip.T.obj ((y : 𝕏.X) × (partialProof y).X)

                        Structure morphism of a proof transformation!

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem Lean4GlCoalgebras.proofTransformation_f {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) (y : 𝕏.X) (z_in_Cy : (partialProof y).X) :
                          ExtSkip.f (ExtSkip.r (proofTransformationMap partialProof) y, z_in_Cy) = Ext.f (Ext.r (partialProof y).α z_in_Cy)
                          @[simp]
                          theorem Lean4GlCoalgebras.proofTransformation_fₚ {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) (y : 𝕏.X) (z_in_Cy : (partialProof y).X) :
                          ExtSkip.fₚ (ExtSkip.r (proofTransformationMap partialProof) y, z_in_Cy) = Ext.fₚ (Ext.r (partialProof y).α z_in_Cy)
                          @[simp]
                          theorem Lean4GlCoalgebras.proofTransformation_fₙ {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) (y : 𝕏.X) (z_in_Cy : (partialProof y).X) :
                          ExtSkip.fₙ (ExtSkip.r (proofTransformationMap partialProof) y, z_in_Cy) = Ext.fₙ (Ext.r (partialProof y).α z_in_Cy)
                          theorem Lean4GlCoalgebras.proofTransformation_isBox {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) (z_in_Cy : (y : 𝕏.X) × (partialProof y).X) :
                          (ExtSkip.r (proofTransformationMap partialProof) z_in_Cy).isBox (Ext.r (partialProof z_in_Cy.fst).α z_in_Cy.snd).isBox
                          noncomputable def Lean4GlCoalgebras.depSumSeqProj {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) :
                          α ×

                          Auxiliary declaration used in the GL coalgebra development.

                          Equations
                          Instances For
                            theorem Lean4GlCoalgebras.sigmaMemOfMemMap {α : Type} {β : αType} {a : α} {xs : List (β a)} {u : (a' : α) × β a'} (hmem : u List.map (fun (b : β a) => a, b) xs) :
                            ∃ (h : a = u.fst), u.snd xs
                            theorem Lean4GlCoalgebras.sigmaCastApplyHEq {α : Type} {β : αType} {ρ : (a : α) → β aType} (r : (a : α) → (b : β a) → ρ a b) {a : α} {s t : (x : α) × β x} (ha : s.fst = a) (hst : s = t) :
                            r a (ha s.snd) r t.fst t.snd
                            theorem Lean4GlCoalgebras.sigmaMkCastEq {α : Type} {β : αType} {s t : (a : α) × β a} {a : α} (ha : s.fst = a) (hst : s = t) :
                            a, ha s.snd = t
                            theorem Lean4GlCoalgebras.sigmaPredicateOfEq {α : Type} {β : αType} {ρ : (a : α) → β aProp} {s t : (a : α) × β a} (hst : s = t) (h : ρ t.fst t.snd) :
                            ρ s.fst s.snd
                            theorem Lean4GlCoalgebras.sigmaRootOfEq {α : Type} {β : αType} (root : (a : α) → β a) {s : (a : α) × β a} {a : α} (hst : s = a, root a) :
                            s.snd = root s.fst
                            theorem Lean4GlCoalgebras.transformedSuccessorRoot {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} {partialProof : (x : 𝕏.X) → Ext.PreProof x σ} {f : (y : 𝕏.X) × (partialProof y).X} (f_succ : ∀ (n : ), ExtSkip.edge (proofTransformationMap partialProof) (f n) (f (n + 1))) (i : ) (hnot : ∀ (h : (f i).fst = (f (i + 1)).fst), ¬Ext.edge (partialProof (f i).fst).α (f i).snd ( (f (i + 1)).snd)) :
                            (f (i + 1)).snd = (partialProof (f (i + 1)).fst).root
                            theorem Lean4GlCoalgebras.transformedFinderIsNonAxLeaf {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} {partialProof : (x : 𝕏.X) → Ext.PreProof x σ} {f : (y : 𝕏.X) × (partialProof y).X} (f_succ : ∀ (n : ), ExtSkip.edge (proofTransformationMap partialProof) (f n) (f (n + 1))) (i : ) (hnot : ∀ (h : (f i).fst = (f (i + 1)).fst), ¬Ext.edge (partialProof (f i).fst).α (f i).snd ( (f (i + 1)).snd)) :
                            (Ext.r (partialProof (f i).fst).α (f i).snd).isNonAxLeaf
                            theorem Lean4GlCoalgebras.infinite_dep_sum_sequence_proj_eq {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (n : ) :
                            (f (depSumSeqProj h n).2).fst = (depSumSeqProj h n).1
                            theorem Lean4GlCoalgebras.dep_sum_seq_proj_leq {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (n : ) :
                            n (depSumSeqProj h n).2
                            theorem Lean4GlCoalgebras.fst_same_in_range {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (n m : ) :
                            n Nat.find n (depSumSeqProj h m).2(f (depSumSeqProj h m).2).fst = (f n).fst
                            theorem Lean4GlCoalgebras.infinite_dep_sum_chain {α : Type} {β : αType} {f : (a : α) × β a} {R : ααProp} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (f_chain : ∀ (n : ), Sigma.Lex R Q (f n) (f (n + 1))) (n : ) :
                            R (depSumSeqProj h n).1 (depSumSeqProj h (n + 1)).1
                            noncomputable def Lean4GlCoalgebras.infiniteDepSumChainFiniteSubchain {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (m : ) :
                            Fin (Nat.find - (depSumSeqProj h m).2 + 1)β (depSumSeqProj h m).1

                            Auxiliary declaration used in the GL coalgebra development.

                            Equations
                            Instances For
                              theorem Lean4GlCoalgebras.infinite_dep_sum_chain_finite_subchain_prop {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (m : ) (k : Fin (Nat.find - (depSumSeqProj h m).2)) :
                              theorem Lean4GlCoalgebras.infinite_dep_sum_chain_inf {α : Type} {β : αType} {f : (a : α) × β a} {Q : (a : α) → β aβ aProp} (h : ∀ (n : ), mn, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd ( (f (m + 1)).snd)) (p : αProp) (q : (a : α) × β aProp) (inf : ∀ (n : ), ∃ (m : ), p (depSumSeqProj h (n + m)).1) (conv : ∀ (n : ), p (depSumSeqProj h n).1∃ (m : ), q (f ((depSumSeqProj h n).2 + m))) (n : ) :
                              ∃ (m : ), q (f (n + m))
                              noncomputable def Lean4GlCoalgebras.proofTransformation {𝕏 : Split.Proof} {σ : 𝕏.XSplitSequent} (partialProof : (x : 𝕏.X) → Ext.PreProof x σ) (root_prop : ∀ (x : 𝕏.X), Ext.Proves x (partialProof x) (σ x)) (box_prop : ∀ (x : 𝕏.X), (Split.r 𝕏.α x).isBox∀ (n : ) (f : Fin (n + 1)(partialProof x).X), f 0 = (partialProof x).root(Ext.r (partialProof x).α (f n, )).isNonAxLeaf(∀ (m : Fin n), Ext.edge (partialProof x).α (f m.castSucc) (f m.succ))∃ (m : Fin (n + 1)), (Ext.r (partialProof x).α (f m)).isBox) :

                              Provides the proof transformation from local pre-proofs and its path witnesses.

                              Equations
                              Instances For