Theorem: LO.FirstOrder.Arith.Model.pi₂_defined (Arithmetization/Basic/IOpen.lean)

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
⊢ 𝚺₀-Function₁ pi₂ via pi₂Def
Tactic:
intro v
State after:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ (fun v => v 0 = (fun v => π₂ v 0) fun x => v x.succ) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val pi₂Def)

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ (fun v => v 0 = (fun v => π₂ v 0) fun x => v x.succ) v ↔ (Semiformula.Evalbm M v) (HSemiformula.val pi₂Def)
Tactic:
simp [pi₂Def]
State after:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ v 0 = π₂ v 1 ↔ ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ v 0 = π₂ v 1 ↔ ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫
Tactic:
constructor
State after:
case mp
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ v 0 = π₂ v 1 → ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫

case mpr
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ (∃ x ≤ v 1, v 1 = ⟪x, v 0⟫) → v 0 = π₂ v 1

State before:
case mp
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ v 0 = π₂ v 1 → ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫
Tactic:
intro h
State after:
case mp
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
h : v 0 = π₂ v 1
⊢ ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫

State before:
case mp
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
h : v 0 = π₂ v 1
⊢ ∃ x ≤ v 1, v 1 = ⟪x, v 0⟫
Tactic:
exact ⟨π₁ v 1, by simp [←le_iff_lt_succ], by simp [h]⟩
State after:
no goals

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
h : v 0 = π₂ v 1
⊢ π₁ v 1 ≤ v 1
Tactic:
simp [←le_iff_lt_succ]
State after:
no goals

State before:
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
h : v 0 = π₂ v 1
⊢ v 1 = ⟪π₁ v 1, v 0⟫
Tactic:
simp [h]
State after:
no goals

State before:
case mpr
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
⊢ (∃ x ≤ v 1, v 1 = ⟪x, v 0⟫) → v 0 = π₂ v 1
Tactic:
rintro ⟨a, _, e⟩
State after:
case mpr.intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
a : M
left✝ : a ≤ v 1
e : v 1 = ⟪a, v 0⟫
⊢ v 0 = π₂ v 1

State before:
case mpr.intro.intro
M : Type u_1
inst✝⁶ : Zero M
inst✝⁵ : One M
inst✝⁴ : Add M
inst✝³ : Mul M
inst✝² : LT M
inst✝¹ : M ⊧ₘ* 𝐏𝐀⁻
inst✝ : M ⊧ₘ* 𝐈open
v : Fin (Nat.succ 1) → M
a : M
left✝ : a ≤ v 1
e : v 1 = ⟪a, v 0⟫
⊢ v 0 = π₂ v 1
Tactic:
simp [e]
State after:
no goals