cases Nat.lt_or_ge b (ulp n a) with
| inl lt_ulp' =>
  rewrite [tsub_le_iff_right, Nat.mod_eq_of_lt lt_ulp', ← Nat.two_mul]
  exact ulp_le
| inr ulp_le' => exact Nat.le_trans tsub_le_self ulp_le'
round : ℕ → ℕ
n a b : ℕ
npos : 0 < n
hfaithful₁ : faithful₁ n round
hcorrect₁ : correct₁ n round
hfa : trunc n a = a
no_uflow : 2 ^ n ≤ a + b
no_carry : a + b < 2 ^ Nat.size a
lt_round : a + b < round (a + b)
size_eq : Nat.size (a + b) = Nat.size a
ulp_eq : ulp n (a + b) = ulp n a
ulp_le : ulp n a ≤ 2 * b
⊢ ulp n a - b % ulp n a ≤ b
no goals