Theorem: Int.abs_sub_lt_one_of_floor_eq_floor
File: Mathlib/Algebra/Order/Floor.lean

Proof steps:
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
⊢ |a - b| < 1
state_after: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this : a < ↑⌊a⌋ + 1
⊢ |a - b| < 1
tactic: have : a < ⌊a⌋ + 1 := lt_floor_add_one a
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this : a < ↑⌊a⌋ + 1
⊢ |a - b| < 1
state_after: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝ : a < ↑⌊a⌋ + 1
this : b < ↑⌊b⌋ + 1
⊢ |a - b| < 1
tactic: have : b < ⌊b⌋ + 1 := lt_floor_add_one b
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝ : a < ↑⌊a⌋ + 1
this : b < ↑⌊b⌋ + 1
⊢ |a - b| < 1
state_after: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝¹ : a < ↑⌊a⌋ + 1
this✝ : b < ↑⌊b⌋ + 1
this : ↑⌊a⌋ = ↑⌊b⌋
⊢ |a - b| < 1
tactic: have : (⌊a⌋ : α) = ⌊b⌋ := Int.cast_inj.2 h
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝¹ : a < ↑⌊a⌋ + 1
this✝ : b < ↑⌊b⌋ + 1
this : ↑⌊a⌋ = ↑⌊b⌋
⊢ |a - b| < 1
state_after: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝² : a < ↑⌊a⌋ + 1
this✝¹ : b < ↑⌊b⌋ + 1
this✝ : ↑⌊a⌋ = ↑⌊b⌋
this : ↑⌊a⌋ ≤ a
⊢ |a - b| < 1
tactic: have : (⌊a⌋ : α) ≤ a := floor_le a
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝² : a < ↑⌊a⌋ + 1
this✝¹ : b < ↑⌊b⌋ + 1
this✝ : ↑⌊a⌋ = ↑⌊b⌋
this : ↑⌊a⌋ ≤ a
⊢ |a - b| < 1
state_after: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝³ : a < ↑⌊a⌋ + 1
this✝² : b < ↑⌊b⌋ + 1
this✝¹ : ↑⌊a⌋ = ↑⌊b⌋
this✝ : ↑⌊a⌋ ≤ a
this : ↑⌊b⌋ ≤ b
⊢ |a - b| < 1
tactic: have : (⌊b⌋ : α) ≤ b := floor_le b
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_4
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝³ : a < ↑⌊a⌋ + 1
this✝² : b < ↑⌊b⌋ + 1
this✝¹ : ↑⌊a⌋ = ↑⌊b⌋
this✝ : ↑⌊a⌋ ≤ a
this : ↑⌊b⌋ ≤ b
⊢ |a - b| < 1
state_after: no goals
tactic: exact abs_sub_lt_iff.2 ⟨by linarith, by linarith⟩