- 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
Equations
- CutPre.fₚ (CutPre.RuleApp.pre y a) = ∅
- CutPre.fₚ (CutPre.RuleApp.cutₗ Δ A) = ∅
- CutPre.fₚ (CutPre.RuleApp.cutᵣ Δ A) = ∅
- CutPre.fₚ (CutPre.RuleApp.wkₗ Δ A a) = {Sum.inl A}
- CutPre.fₚ (CutPre.RuleApp.wkᵣ Δ A a) = {Sum.inr A}
- CutPre.fₚ (CutPre.RuleApp.topₗ Δ a) = {Sum.inl ⊤}
- CutPre.fₚ (CutPre.RuleApp.topᵣ Δ a) = {Sum.inr ⊤}
- CutPre.fₚ (CutPre.RuleApp.axₗₗ Δ n a) = {Sum.inl (at n), Sum.inl (na n)}
- CutPre.fₚ (CutPre.RuleApp.axₗᵣ Δ n a) = {Sum.inl (at n), Sum.inr (na n)}
- CutPre.fₚ (CutPre.RuleApp.axᵣₗ Δ n a) = {Sum.inr (at n), Sum.inl (na n)}
- CutPre.fₚ (CutPre.RuleApp.axᵣᵣ Δ n a) = {Sum.inr (at n), Sum.inr (na n)}
- CutPre.fₚ (CutPre.RuleApp.andₗ Δ A B a) = {Sum.inl (A&B)}
- CutPre.fₚ (CutPre.RuleApp.andᵣ Δ A B a) = {Sum.inr (A&B)}
- CutPre.fₚ (CutPre.RuleApp.orₗ Δ A B a) = {Sum.inl (A v B)}
- CutPre.fₚ (CutPre.RuleApp.orᵣ Δ A B a) = {Sum.inr (A v B)}
- CutPre.fₚ (CutPre.RuleApp.boxₗ Δ A a) = {Sum.inl (□A)}
- CutPre.fₚ (CutPre.RuleApp.boxᵣ Δ A a) = {Sum.inr (□A)}
Instances For
Equations
- CutPre.f (CutPre.RuleApp.pre y a) = τ y
- CutPre.f (CutPre.RuleApp.cutₗ Δ A) = Δ
- CutPre.f (CutPre.RuleApp.cutᵣ Δ A) = Δ
- CutPre.f (CutPre.RuleApp.wkₗ Δ A a) = Δ
- CutPre.f (CutPre.RuleApp.wkᵣ Δ A a) = Δ
- CutPre.f (CutPre.RuleApp.topₗ Δ a) = Δ
- CutPre.f (CutPre.RuleApp.topᵣ Δ a) = Δ
- CutPre.f (CutPre.RuleApp.axₗₗ Δ n a) = Δ
- CutPre.f (CutPre.RuleApp.axₗᵣ Δ n a) = Δ
- CutPre.f (CutPre.RuleApp.axᵣₗ Δ n a) = Δ
- CutPre.f (CutPre.RuleApp.axᵣᵣ Δ n a) = Δ
- CutPre.f (CutPre.RuleApp.andₗ Δ A B a) = Δ
- CutPre.f (CutPre.RuleApp.andᵣ Δ A B a) = Δ
- CutPre.f (CutPre.RuleApp.orₗ Δ A B a) = Δ
- CutPre.f (CutPre.RuleApp.orᵣ Δ A B a) = Δ
- CutPre.f (CutPre.RuleApp.boxₗ Δ A a) = Δ
- CutPre.f (CutPre.RuleApp.boxᵣ Δ A a) = Δ
Instances For
Instances For
theorem
CutPre.fₙ_alternate
{𝕏 : Split.Proof}
{x : 𝕏.X}
{τ : 𝕏.X → SplitSequent}
(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)}
def
CutPre.T
{𝕏 : Split.Proof}
(x : 𝕏.X)
(τ : 𝕏.X → SplitSequent)
:
CategoryTheory.Functor (Type u) (Type u)
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
CutPre.edge
{X : Type u}
{𝕏 : Split.Proof}
{x : 𝕏.X}
{τ : 𝕏.X → SplitSequent}
(α : X → (T x τ).obj X)
:
X → (y : X) → Prop
Equations
- CutPre.edge α x y = (y ∈ CutPre.p α x)
Instances For
Equations
Instances For
Equations
- (CutPre.RuleApp.pre y a).isNonAxLeaf = (true = true)
- x✝.isNonAxLeaf = (false = true)
Instances For
- X : Type
- root : self.X
- 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
def
Split.CutPre.Proves
{𝕏 : Proof}
(x : 𝕏.X)
{σ : 𝕏.X → SplitSequent}
(𝕐 : CutPre.CutProofFromPremises x σ)
(Δ : SplitSequent)
:
Instances For
def
Split.ProofTransformationMap
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
:
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
Split.ProofTransformation_f
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
(y : 𝕏.X)
(z_in_Cy : (PartialProof y).X)
:
SplitCut.f (SplitCut.r (ProofTransformationMap PartialProof) ⟨y, z_in_Cy⟩) = CutPre.f (CutPre.r (PartialProof y).α z_in_Cy)
@[simp]
theorem
Split.ProofTransformation_fₚ
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
(y : 𝕏.X)
(z_in_Cy : (PartialProof y).X)
:
SplitCut.fₚ (SplitCut.r (ProofTransformationMap PartialProof) ⟨y, z_in_Cy⟩) = CutPre.fₚ (CutPre.r (PartialProof y).α z_in_Cy)
@[simp]
theorem
Split.ProofTransformation_fₙ
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
(y : 𝕏.X)
(z_in_Cy : (PartialProof y).X)
:
SplitCut.fₙ (SplitCut.r (ProofTransformationMap PartialProof) ⟨y, z_in_Cy⟩) = CutPre.fₙ (CutPre.r (PartialProof y).α z_in_Cy)
theorem
Split.ProofTransformation_isBox
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
(z_in_Cy : (y : 𝕏.X) × (PartialProof y).X)
:
(SplitCut.r (ProofTransformationMap PartialProof) z_in_Cy).isBox ↔ (CutPre.r (PartialProof z_in_Cy.fst).α z_in_Cy.snd).isBox
theorem
Split.fst_same_in_range
{α : Type}
{β : α → Type}
{f : ℕ → (a : α) × β a}
{Q : (a : α) → β a → β a → Prop}
(h : ∀ (n : ℕ), ∃ m ≥ n, ∀ (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
Split.infinite_dep_sum_chain
{α : Type}
{β : α → Type}
{f : ℕ → (a : α) × β a}
{R : α → α → Prop}
{Q : (a : α) → β a → β a → Prop}
(h : ∀ (n : ℕ), ∃ m ≥ n, ∀ (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
Split.infinite_dep_sum_chain_finite_subchain
{α : Type}
{β : α → Type}
{f : ℕ → (a : α) × β a}
{Q : (a : α) → β a → β a → Prop}
(h : ∀ (n : ℕ), ∃ m ≥ n, ∀ (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
- Split.infinite_dep_sum_chain_finite_subchain h m ⟨n, n_prop⟩ = ⋯ ▸ (f ((Split.dep_sum_seq_proj h m).2 + n)).snd
Instances For
theorem
Split.infinite_dep_sum_chain_finite_subchain_prop
{α : Type}
{β : α → Type}
{f : ℕ → (a : α) × β a}
{Q : (a : α) → β a → β a → Prop}
(h : ∀ (n : ℕ), ∃ m ≥ n, ∀ (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))
:
Q (dep_sum_seq_proj h m).1 (infinite_dep_sum_chain_finite_subchain h m k.castSucc)
(infinite_dep_sum_chain_finite_subchain h m k.succ)
theorem
Split.infinite_dep_sum_chain_inf
{α : Type}
{β : α → Type}
{f : ℕ → (a : α) × β a}
{Q : (a : α) → β a → β a → Prop}
(h : ∀ (n : ℕ), ∃ m ≥ n, ∀ (h : (f m).fst = (f (m + 1)).fst), ¬Q (f m).fst (f m).snd (⋯ ▸ (f (m + 1)).snd))
(p : α → Prop)
(q : (a : α) × β a → Prop)
(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 : ℕ)
:
noncomputable def
Split.ProofTransformation
{𝕏 : Proof}
{σ : 𝕏.X → SplitSequent}
(PartialProof : (x : 𝕏.X) → CutPre.CutProofFromPremises x σ)
(root_proves : ∀ (x : 𝕏.X), CutPre.Proves x (PartialProof x) (σ x))
(box_prop :
∀ (x : 𝕏.X),
(r 𝕏.α x).isBox →
∀ (n : ℕ) (f : Fin (n + 1) → (PartialProof x).X),
f 0 = (PartialProof x).root →
(CutPre.r (PartialProof x).α (f ⟨n, ⋯⟩)).isNonAxLeaf →
(∀ (m : Fin n), CutPre.edge (PartialProof x).α (f m.castSucc) (f m.succ)) →
∃ (m : Fin (n + 1)), (CutPre.r (PartialProof x).α (f m)).isBox)
:
Equations
- Split.ProofTransformation PartialProof root_proves box_prop = { X := (y : 𝕏.X) × (PartialProof y).X, α := Split.ProofTransformationMap PartialProof, step := ⋯, path := ⋯ }