Theorem: LinearOrderedField.cutMap_add
File: Mathlib/Algebra/Order/CompleteField.lean

tactic: refine (image_subset_iff.2 fun q hq => ?_).antisymm ?_
state_before: F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
⊢ cutMap β (a + b) = cutMap β a + cutMap β b

tactic: rw [mem_setOf_eq, ← sub_lt_iff_lt_add] at hq
state_before: case refine_1
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : q ∈ {t | ↑t < a + b}
⊢ q ∈ Rat.cast ⁻¹' (cutMap β a + cutMap β b)

tactic: obtain ⟨q₁, hq₁q, hq₁ab⟩ := exists_rat_btwn hq
state_before: case refine_1
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
⊢ q ∈ Rat.cast ⁻¹' (cutMap β a + cutMap β b)

tactic: refine ⟨q₁, q - q₁, by rwa [coe_mem_cutMap_iff], ?_, add_sub_cancel'_right _ _⟩
state_before: case refine_1.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
q₁ : ℚ
hq₁q : ↑q - b < ↑q₁
hq₁ab : ↑q₁ < a
⊢ q ∈ Rat.cast ⁻¹' (cutMap β a + cutMap β b)

tactic: rwa [coe_mem_cutMap_iff]
state_before: F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
q₁ : ℚ
hq₁q : ↑q - b < ↑q₁
hq₁ab : ↑q₁ < a
⊢ ↑q₁ ∈ cutMap β a

tactic: norm_cast
state_before: case refine_1.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
q₁ : ℚ
hq₁q : ↑q - b < ↑q₁
hq₁ab : ↑q₁ < a
⊢ ↑q - ↑q₁ ∈ cutMap β b

tactic: rw [coe_mem_cutMap_iff]
state_before: case refine_1.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
q₁ : ℚ
hq₁q : ↑q - b < ↑q₁
hq₁ab : ↑q₁ < a
⊢ ↑(q - q₁) ∈ cutMap β b

tactic: exact_mod_cast sub_lt_comm.mp hq₁q
state_before: case refine_1.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q✝ : ℚ
inst✝ : Archimedean α
a b : α
q : ℚ
hq : ↑q - b < a
q₁ : ℚ
hq₁q : ↑q - b < ↑q₁
hq₁ab : ↑q₁ < a
⊢ ↑(q - q₁) < b

tactic: rintro _ ⟨_, _, ⟨qa, ha, rfl⟩, ⟨qb, hb, rfl⟩, rfl⟩
state_before: case refine_2
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
⊢ cutMap β a + cutMap β b ⊆ Rat.cast '' {t | ↑t < a + b}

tactic: refine' ⟨qa + qb, _, by norm_cast⟩
state_before: case refine_2.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
qa : ℚ
ha : qa ∈ {t | ↑t < a}
qb : ℚ
hb : qb ∈ {t | ↑t < b}
⊢ (fun x x_1 => x + x_1) ↑qa ↑qb ∈ Rat.cast '' {t | ↑t < a + b}

tactic: rw [mem_setOf_eq, cast_add]
state_before: case refine_2.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
qa : ℚ
ha : qa ∈ {t | ↑t < a}
qb : ℚ
hb : qb ∈ {t | ↑t < b}
⊢ qa + qb ∈ {t | ↑t < a + b}

tactic: exact add_lt_add ha hb
state_before: case refine_2.intro.intro.intro.intro.intro.intro.intro.intro
F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
qa : ℚ
ha : qa ∈ {t | ↑t < a}
qb : ℚ
hb : qb ∈ {t | ↑t < b}
⊢ ↑qa + ↑qb < a + b

tactic: norm_cast
state_before: F : Type ?u.12016
α : Type u_2
β : Type u_1
γ : Type ?u.12025
inst✝² : LinearOrderedField α
inst✝¹ : LinearOrderedField β
a✝ a₁ a₂ : α
b✝ : β
q : ℚ
inst✝ : Archimedean α
a b : α
qa : ℚ
ha : qa ∈ {t | ↑t < a}
qb : ℚ
hb : qb ∈ {t | ↑t < b}
⊢ ↑(qa + qb) = (fun x x_1 => x + x_1) ↑qa ↑qb