Theorem: LO.FirstOrder.Derivation.ProofList.derivable_iff_isProper (Logic/FirstOrder/Computability/Calculus.lean)

State before:
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
⊢ Nonempty ( ⊢¹ Γ) → ∃ l, l.isProper = true ∧ Γ ∈ l.sequents
Tactic:
rintro h
State after:
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
h : Nonempty ( ⊢¹ Γ)
⊢ ∃ l, l.isProper = true ∧ Γ ∈ l.sequents

State before:
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
h : Nonempty ( ⊢¹ Γ)
⊢ ∃ l, l.isProper = true ∧ Γ ∈ l.sequents
Tactic:
rcases iff_cut.mpr h with ⟨b⟩
State after:
case intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
h : Nonempty ( ⊢¹ Γ)
b : { d // CutFree d }
⊢ ∃ l, l.isProper = true ∧ Γ ∈ l.sequents

State before:
case intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
h : Nonempty ( ⊢¹ Γ)
b : { d // CutFree d }
⊢ ∃ l, l.isProper = true ∧ Γ ∈ l.sequents
Tactic:
exact ⟨ofDerivation b, isProper_ofDerivation b, mem_ofDerivation b⟩
State after:
no goals

State before:
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
⊢ (∃ l, l.isProper = true ∧ Γ ∈ l.sequents) → Nonempty ( ⊢¹ Γ)
Tactic:
rintro ⟨l, hl⟩
State after:
case intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
l : ProofList L
hl : l.isProper = true ∧ Γ ∈ l.sequents
⊢ Nonempty ( ⊢¹ Γ)

State before:
case intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
l : ProofList L
hl : l.isProper = true ∧ Γ ∈ l.sequents
⊢ Nonempty ( ⊢¹ Γ)
Tactic:
rcases derivation_of_isProper l hl.1 _ hl.2 with ⟨d⟩
State after:
case intro.intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
l : ProofList L
hl : l.isProper = true ∧ Γ ∈ l.sequents
d :  ⊢¹ Γ
⊢ Nonempty ( ⊢¹ Γ)

State before:
case intro.intro
μ : Type ?u.1106645
L : Language
inst✝⁶ : (k : ℕ) → DecidableEq (L.Func k)
inst✝⁵ : (k : ℕ) → DecidableEq (L.Rel k)
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
Γ : Sequent L
l : ProofList L
hl : l.isProper = true ∧ Γ ∈ l.sequents
d :  ⊢¹ Γ
⊢ Nonempty ( ⊢¹ Γ)
Tactic:
exact ⟨d⟩
State after:
no goals