Documentation

GL.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 Ext.RuleApp {𝕏 : Split.Proof} (x : 𝕏.X) (τ : 𝕏.XSplitSequent) :

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

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

    Given a RuleApp, obtain the split sequent.

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

      Given a RuleApp, obtain the non-principal formulas.

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

        def Ext.T {𝕏 : Split.Proof} (x : 𝕏.X) (τ : 𝕏.XSplitSequent) :
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def 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 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 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 Ext.RuleApp.isBox {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :
                RuleApp x τProp
                Equations
                Instances For
                  def Ext.RuleApp.isNonAxLeaf {𝕏 : Split.Proof} {x : 𝕏.X} {τ : 𝕏.XSplitSequent} :
                  RuleApp x τProp
                  Equations
                  Instances For
                    structure Ext.PreProof {𝕏 : Split.Proof} (x : 𝕏.X) (τ : 𝕏.XSplitSequent) :
                    Instances For
                      def Ext.Proves {𝕏 : Split.Proof} (x : 𝕏.X) {σ : 𝕏.XSplitSequent} (𝕐 : PreProof x σ) (Δ : SplitSequent) :
                      Equations
                      Instances For
                        def 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 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 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 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 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 dep_sum_seq_proj {α : 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)) :
                          α ×
                          Equations
                          Instances For
                            theorem 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 : ) :
                            theorem 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 : ) :
                            theorem 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 (dep_sum_seq_proj h m).2(f (dep_sum_seq_proj h m).2).fst = (f n).fst
                            theorem 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 (dep_sum_seq_proj h n).1 (dep_sum_seq_proj h (n + 1)).1
                            noncomputable def infinite_dep_sum_chain_finite_subchain {α : 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 - (dep_sum_seq_proj h m).2 + 1)β (dep_sum_seq_proj h m).1
                            Equations
                            Instances For
                              theorem 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 - (dep_sum_seq_proj h m).2)) :
                              theorem 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 (dep_sum_seq_proj h (n + m)).1) (conv : ∀ (n : ), p (dep_sum_seq_proj h n).1∃ (m : ), q (f ((dep_sum_seq_proj h n).2 + m))) (n : ) :
                              ∃ (m : ), q (f (n + m))
                              noncomputable def 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 and proves it is a proof if it satisfies box_prop and root_prop.

                              Equations
                              Instances For