Theorem: LO.FirstOrder.Arith.Model.product_exists_unique (Arithmetization/ISigmaOne/HFS/Basic.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
⊢ ∃! u, ∀ (x : M), x ∈ u ↔ ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
Tactic:
have : 𝚺₁-Predicate fun x ↦ ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫ := by definability
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
⊢ ∃! u, ∀ (x : M), x ∈ u ↔ ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
⊢ ∃! u, ∀ (x : M), x ∈ u ↔ ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
Tactic:
exact finite_comprehension₁! this
  ⟨⟪log a, log b⟫ + 1, fun i ↦ by
    rintro ⟨y, hy, z, hz, rfl⟩
    simp [lt_succ_iff_le]
    exact pair_le_pair (le_log_of_mem hy) (le_log_of_mem hz)⟩
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 ⊧ₘ* 𝐈𝚺₁
a b : M
⊢ 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
Tactic:
definability
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 ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
i : M
⊢ (∃ y ∈ a, ∃ z ∈ b, i = ⟪y, z⟫) → i < ⟪log a, log b⟫ + 1
Tactic:
rintro ⟨y, hy, z, hz, rfl⟩
State after:
case intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
y : M
hy : y ∈ a
z : M
hz : z ∈ b
⊢ ⟪y, z⟫ < ⟪log a, log b⟫ + 1

State before:
case intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
y : M
hy : y ∈ a
z : M
hz : z ∈ b
⊢ ⟪y, z⟫ < ⟪log a, log b⟫ + 1
Tactic:
simp [lt_succ_iff_le]
State after:
case intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
y : M
hy : y ∈ a
z : M
hz : z ∈ b
⊢ ⟪y, z⟫ ≤ ⟪log a, log b⟫

State before:
case intro.intro.intro.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
a b : M
this : 𝚺₁-Predicate fun x => ∃ y ∈ a, ∃ z ∈ b, x = ⟪y, z⟫
y : M
hy : y ∈ a
z : M
hz : z ∈ b
⊢ ⟪y, z⟫ ≤ ⟪log a, log b⟫
Tactic:
exact pair_le_pair (le_log_of_mem hy) (le_log_of_mem hz)
State after:
no goals