Lean Verified Precision
In A Fix for Softmax and Cross-Entropy, the authors describe a numerical bug in code widely used to train neural networks. The issue appears in standard PyTorch and JAX implementations. It also illustrates a limitation of proofs over real numbers: they do not, by themselves, bound floating-point error. For related discussion, see this thread from ezyang (your favorite blogger's favorite blogger). My guess is that similar problems plague many parts of the deep learning stack; for example, this paper describes how limited precision can hide small parameter updates.
Luckily, this doesn't have to be the case. Formal verification can catch this problem when numerical accuracy is part of the specification. In this blog post, we start from first principles and build up the tools for catching precision bugs. No knowledge about systems or precision is assumed, although you will need to read some math. The code is generated, and the proofs are checked by Lean. This is the fifth post in a series on Lean for deep learning.
-
Sasha Rush and Robert George
Approximation and Relative Precision
Before diving into neural networks, let us formalize a notion of numerical approximation. There are several ways to do this, each with its own benefits and issues. We'll follow the exposition of Zielinski and Hsu and use Olver's Relative Precision (RP). We express an approximation to a true value using a multiplicative factor, with its logarithm bounded in magnitude by epsilon:
\widehat{x}=x e^\delta,\qquad |\delta|\le\varepsilon
For positive values, relative precision measures the approximation error. We also define the distance from zero to itself to be zero:
\begin{aligned}\operatorname{RP}(x,\widehat{x})&=\left|\log\frac{\widehat{x}}{x}\right|\\\operatorname{RP}(0,0)&=0\end{aligned}
The same logarithmic formula applies to two negative values. If exactly one value is zero, or the signs differ, RP is infinite. We will use the following Lean predicate to express a finite RP bound.
def Relative (ε x y : ℝ) : Prop :=
∃ δ : ℝ, |δ| ≤ ε ∧ y = x * Real.exp δOn positive values, relative precision forms a metric. Its triangle inequality lets us combine approximation bounds across successive steps.
\begin{aligned}&\operatorname{RP}(x,z)=\left|\log\frac{z}{x}\right|\\&\quad=\left|\log\frac{y}{x}+\log\frac{z}{y}\right|\\&\quad\le\operatorname{RP}(x,y)+\operatorname{RP}(y,z)\end{aligned}
Here are the core properties we will use for positive values.
theorem Relative.refl (x : ℝ) : Relative 0 x x :=
⟨0, x:ℝ⊢ |0| ≤ 0 All goals completed! 🐙, x:ℝ⊢ x = x * Real.exp 0 All goals completed! 🐙⟩ε:ℝη:ℝx:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ x * Real.exp a * Real.exp b = x * (Real.exp a * Real.exp b)
ring All goals completed! 🐙theorem Relative.pos (h : Relative ε x y) (hx : 0 < x) : 0 < y := by ε:ℝx:ℝy:ℝh:Relative ε x yhx:0 < x⊢ 0 < y
obtain ⟨δ, _, rfl⟩ := h ε:ℝx:ℝhx:0 < xδ:ℝleft✝:|δ| ≤ ε⊢ 0 < x * Real.exp δ
exact mul_pos hx (Real.exp_pos δ) All goals completed! 🐙Our key theorems allow us to propagate relative precision through arithmetic operators. For example, dividing two approximations leads to additive precision loss.
\varepsilon_{\div}\le\varepsilon_x+\varepsilon_y
theorem Relative.div {x' y' : ℝ}
(hx : Relative ε x x') (hy : Relative η y y') :
Relative (ε + η) (x / y) (x' / y') := by ε:ℝη:ℝx:ℝy:ℝx':ℝy':ℝhx:Relative ε x x'hy:Relative η y y'⊢ Relative (ε + η) (x / y) (x' / y')
obtain ⟨a, ha, rfl⟩ := hx ε:ℝη:ℝx:ℝy:ℝy':ℝhy:Relative η y y'a:ℝha:|a| ≤ ε⊢ Relative (ε + η) (x / y) (x * Real.exp a / y')
obtain ⟨b, hb, rfl⟩ := hy ε:ℝη:ℝx:ℝy:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ Relative (ε + η) (x / y) (x * Real.exp a / (y * Real.exp b))
refine ⟨a - b, (abs_sub a b).trans (add_le_add ha hb), ?_⟩ ε:ℝη:ℝx:ℝy:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ x * Real.exp a / (y * Real.exp b) = x / y * Real.exp (a - b)
rw [Real.exp_sub ε:ℝη:ℝx:ℝy:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ x * Real.exp a / (y * Real.exp b) = x / y * (Real.exp a / Real.exp b) ε:ℝη:ℝx:ℝy:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ x * Real.exp a / (y * Real.exp b) = x / y * (Real.exp a / Real.exp b)] ε:ℝη:ℝx:ℝy:ℝa:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ x * Real.exp a / (y * Real.exp b) = x / y * (Real.exp a / Real.exp b)
exact (div_mul_div_comm _ _ _ _).symm All goals completed! 🐙
theorem Relative.neg (h : Relative ε x y) : Relative ε (-x) (-y) := by ε:ℝx:ℝy:ℝh:Relative ε x y⊢ Relative ε (-x) (-y)
obtain ⟨δ, hδ, heq⟩ := h ε:ℝx:ℝy:ℝδ:ℝhδ:|δ| ≤ εheq:y = x * Real.exp δ⊢ Relative ε (-x) (-y)
exact ⟨δ, hδ, by ε:ℝx:ℝy:ℝδ:ℝhδ:|δ| ≤ εheq:y = x * Real.exp δ⊢ -y = -x * Real.exp δ rw [heq, ε:ℝx:ℝy:ℝδ:ℝhδ:|δ| ≤ εheq:y = x * Real.exp δ⊢ -(x * Real.exp δ) = -x * Real.exp δ All goals completed! 🐙 neg_mul ε:ℝx:ℝy:ℝδ:ℝhδ:|δ| ≤ εheq:y = x * Real.exp δ⊢ -(x * Real.exp δ) = -(x * Real.exp δ) All goals completed! 🐙] All goals completed! 🐙⟩Adding positive numbers gives an RP bound at most as large as the larger input bound.
\varepsilon_{+}\le E=\max(\varepsilon_x,\varepsilon_y)
The sum's approximation ratio is a weighted average of the input ratios, so it stays in the same shaded interval.
theorem Relative.add_pos {x' y' : ℝ} (hx : 0 < x) (hy : 0 < y)
(hxx : Relative ε x x') (hyy : Relative η y y') :
Relative (max ε η) (x + y) (x' + y') := by ε:ℝη:ℝx:ℝy:ℝx':ℝy':ℝhx:0 < xhy:0 < yhxx:Relative ε x x'hyy:Relative η y y'⊢ Relative (max ε η) (x + y) (x' + y')
obtain ⟨a, ha, rfl⟩ := hxx ε:ℝη:ℝx:ℝy:ℝy':ℝhx:0 < xhy:0 < yhyy:Relative η y y'a:ℝha:|a| ≤ ε⊢ Relative (max ε η) (x + y) (x * Real.exp a + y')
obtain ⟨b, hb, rfl⟩ := hyy ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ η⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b)
obtain ⟨ha₁, ha₂⟩ := abs_le.mp (ha.trans (le_max_left ε η)) ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε η⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b)
obtain ⟨hb₁, hb₂⟩ := abs_le.mp (hb.trans (le_max_right ε η)) ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε η⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b)
have hsum : 0 < x + y := by ε:ℝη:ℝx:ℝy:ℝx':ℝy':ℝhx:0 < xhy:0 < yhxx:Relative ε x x'hyy:Relative η y y'⊢ Relative (max ε η) (x + y) (x' + y') ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + y⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b) positivity ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + y⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b) ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + y⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b)
have hratio : 0 < (x * Real.exp a + y * Real.exp b) / (x + y) := by ε:ℝη:ℝx:ℝy:ℝx':ℝy':ℝhx:0 < xhy:0 < yhxx:Relative ε x x'hyy:Relative η y y'⊢ Relative (max ε η) (x + y) (x' + y') ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b) positivity ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b) ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Relative (max ε η) (x + y) (x * Real.exp a + y * Real.exp b)
refine ⟨Real.log ((x * Real.exp a + y * Real.exp b) / (x + y)),
abs_le.mpr ⟨?_, ?_⟩, ?_⟩ refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ -max ε η ≤ Real.log ((x * Real.exp a + y * Real.exp b) / (x + y))refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Real.log ((x * Real.exp a + y * Real.exp b) / (x + y)) ≤ max ε ηrefine_3 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b = (x + y) * Real.exp (Real.log ((x * Real.exp a + y * Real.exp b) / (x + y)))
· refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ -max ε η ≤ Real.log ((x * Real.exp a + y * Real.exp b) / (x + y)) rw [Real.le_log_iff_exp_le hratio, refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Real.exp (-max ε η) ≤ (x * Real.exp a + y * Real.exp b) / (x + y) refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp b le_div_iff₀ hsum, refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Real.exp (-max ε η) * (x + y) ≤ x * Real.exp a + y * Real.exp brefine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp b mul_comm _ (x + y), refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ (x + y) * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp brefine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp b add_mul refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp brefine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp b]refine_1 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp (-max ε η) + y * Real.exp (-max ε η) ≤ x * Real.exp a + y * Real.exp b
gcongr All goals completed! 🐙
· refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ Real.log ((x * Real.exp a + y * Real.exp b) / (x + y)) ≤ max ε η rw [Real.log_le_iff_le_exp hratio, refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ (x * Real.exp a + y * Real.exp b) / (x + y) ≤ Real.exp (max ε η) refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η) div_le_iff₀ hsum, refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ Real.exp (max ε η) * (x + y)refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η) mul_comm _ (x + y), refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ (x + y) * Real.exp (max ε η)refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η) add_mul refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η)refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η)]refine_2 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b ≤ x * Real.exp (max ε η) + y * Real.exp (max ε η)
gcongr All goals completed! 🐙
· refine_3 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b = (x + y) * Real.exp (Real.log ((x * Real.exp a + y * Real.exp b) / (x + y))) rw [Real.exp_log hratio refine_3 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b = (x + y) * ((x * Real.exp a + y * Real.exp b) / (x + y)) refine_3 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b = (x + y) * ((x * Real.exp a + y * Real.exp b) / (x + y))]refine_3 ε:ℝη:ℝx:ℝy:ℝhx:0 < xhy:0 < ya:ℝha:|a| ≤ εb:ℝhb:|b| ≤ ηha₁:-max ε η ≤ aha₂:a ≤ max ε ηhb₁:-max ε η ≤ bhb₂:b ≤ max ε ηhsum:0 < x + yhratio:0 < (x * Real.exp a + y * Real.exp b) / (x + y)⊢ x * Real.exp a + y * Real.exp b = (x + y) * ((x * Real.exp a + y * Real.exp b) / (x + y))
field_simp All goals completed! 🐙In contrast, subtraction requires significantly more care because the main terms may cancel. This will be a key property when we get to the softmax issue.
Floating Point
This approach can now be applied to the specific case of interest, floating point precision. There is a lot to be said about handling IEEE floating point correctly and efficiently in Lean; see the recent FloatLib paper for an overview.
To understand the core issue, we only need a simplified floating point representation. We define it simply using a sign, an exponent, and a mantissa.
inductive Sign where
| positive
| negative
deriving Repr, DecidableEqstructure Float (exponentBits mantissaBits : ℕ) where
sign : Sign
exponent : Fin (2 ^ exponentBits)
mantissa : Fin (2 ^ mantissaBits)
deriving Repr, FintypeWe turn floats into reals using the formula below. Here E is the number of exponent bits, and the sign contributes plus or minus one. We can also prove that certain real numbers can be represented in this format.
\begin{aligned}\operatorname{value}(\sigma,e,m)&=\sigma\,m\,2^{e-b}\\b&=\lfloor 2^E/2\rfloor\end{aligned}
def exponentBias (exponentBits : ℕ) : ℤ :=
(2 ^ exponentBits : ℕ) / 2def Float.toReal {e m : ℕ} (x : Float e m) : ℝ :=
let magnitude :=
(x.mantissa.val : ℝ) * (2 : ℝ) ^ ((x.exponent.val : ℤ) - exponentBias e)
match x.sign with
| .positive => magnitude
| .negative => -magnitudedef BinaryRepresentable (exponentBits mantissaBits : ℕ) (x : ℝ) : Prop :=
∃ f : Float exponentBits mantissaBits, f.toReal = xtheorem BinaryRepresentable.of_parts {e m : ℕ} {x : ℝ}
(sign : Sign) (exponent : Fin (2 ^ e)) (mantissa : Fin (2 ^ m))
(value_eq : (Float.mk sign exponent mantissa).toReal = x) :
BinaryRepresentable e m x :=
⟨⟨sign, exponent, mantissa⟩, value_eq⟩As an example, let's define MiniFloat a small format with eight bits: one sign bit, four exponent bits, and three mantissa bits.
abbrev MiniFloat := Float 4 3
\begin{aligned}1&=4\cdot2^{-2}\\\frac1{32}&=4\cdot2^{-7}\\\operatorname{next}(1)&=\frac54\end{aligned}
theorem MiniFloat.one_representable : BinaryRepresentable 4 3 1 := by ⊢ BinaryRepresentable 4 3 1
apply BinaryRepresentable.of_parts .positive ⟨6, by ⊢ 6 < 2 ^ 4 decide All goals completed! 🐙⟩ ⟨4, by ⊢ 4 < 2 ^ 3 decide All goals completed! 🐙⟩
norm_num [Float.toReal, exponentBias] All goals completed! 🐙theorem MiniFloat.one_div_thirty_two_representable :
BinaryRepresentable 4 3 (1 / 32) := by ⊢ BinaryRepresentable 4 3 (1 / 32)
apply BinaryRepresentable.of_parts .positive ⟨1, by ⊢ 1 < 2 ^ 4 decide All goals completed! 🐙⟩ ⟨4, by ⊢ 4 < 2 ^ 3 decide All goals completed! 🐙⟩
norm_num [Float.toReal, exponentBias] All goals completed! 🐙theorem MiniFloat.five_div_four_representable :
BinaryRepresentable 4 3 (5 / 4) := by ⊢ BinaryRepresentable 4 3 (5 / 4)
apply BinaryRepresentable.of_parts .positive ⟨6, by ⊢ 6 < 2 ^ 4 decide All goals completed! 🐙⟩ ⟨5, by ⊢ 5 < 2 ^ 3 decide All goals completed! 🐙⟩
norm_num [Float.toReal, exponentBias] All goals completed! 🐙Both values are representable, and y is the least representable value above x.
def Float.IsNext (e m : ℕ) (x y : ℝ) : Prop :=
BinaryRepresentable e m x ∧ BinaryRepresentable e m y ∧ x < y ∧
∀ z, BinaryRepresentable e m z → x < z → y ≤ z
theorem MiniFloat.next_one : Float.IsNext 4 3 1 (5 / 4) := by ⊢ Float.IsNext 4 3 1 (5 / 4)
refine ⟨MiniFloat.one_representable, MiniFloat.five_div_four_representable,
by ⊢ 1 < 5 / 4 norm_num All goals completed! 🐙, ?_⟩
intro z ⟨⟨sign, exponent, mantissa⟩, hvalue⟩ hz z:ℝsign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < z⊢ 5 / 4 ≤ z
rw [← hvalue z:ℝsign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := sign, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal z:ℝsign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := sign, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal] at hz ⊢ z:ℝsign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := sign, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal
cases sign positive z:ℝexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toRealnegative z:ℝexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal <;> positive z:ℝexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toRealnegative z:ℝexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal fin_cases exponent negative.«0» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toRealnegative.«1» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toRealnegative.«2» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toRealnegative.«3» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toRealnegative.«4» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toRealnegative.«5» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toRealnegative.«6» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toRealnegative.«7» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toRealnegative.«8» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toRealnegative.«9» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toRealnegative.«10» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toRealnegative.«11» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toRealnegative.«12» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toRealnegative.«13» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toRealnegative.«14» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toRealnegative.«15» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal <;> positive.«0» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toRealpositive.«1» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toRealpositive.«2» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toRealpositive.«3» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toRealpositive.«4» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toRealpositive.«5» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toRealpositive.«6» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toRealpositive.«7» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toRealpositive.«8» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toRealpositive.«9» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toRealpositive.«10» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toRealpositive.«11» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toRealpositive.«12» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toRealpositive.«13» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toRealpositive.«14» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toRealpositive.«15» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toRealnegative.«0» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toRealnegative.«1» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toRealnegative.«2» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toRealnegative.«3» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toRealnegative.«4» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toRealnegative.«5» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toRealnegative.«6» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toRealnegative.«7» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toRealnegative.«8» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toRealnegative.«9» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toRealnegative.«10» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toRealnegative.«11» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toRealnegative.«12» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toRealnegative.«13» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toRealnegative.«14» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toRealnegative.«15» z:ℝmantissa:Fin (2 ^ 3)hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal fin_cases mantissa negative.«15».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«15».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«15».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«15».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«15».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«15».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«15».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«15».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal <;> positive.«0».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«0».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«0».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«0».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«0».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«0».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«0».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«0».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«1».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«1».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«1».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«1».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«1».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«1».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«1».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«1».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«2».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«2».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«2».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«2».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«2».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«2».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«2».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«2».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«3».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«3».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«3».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«3».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«3».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«3».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«3».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«3».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«4».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«4».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«4».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«4».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«4».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«4».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«4».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«4».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«5».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«5».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«5».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«5».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«5».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«5».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«5».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«5».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«6».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«6».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«6».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«6».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«6».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«6».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«6».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«6».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«7».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«7».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«7».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«7».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«7».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«7».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«7».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«7».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«8».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«8».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«8».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«8».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«8».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«8».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«8».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«8».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«9».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«9».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«9».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«9».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«9».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«9».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«9».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«9».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«10».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«10».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«10».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«10».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«10».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«10».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«10».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«10».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«11».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«11».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«11».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«11».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«11».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«11».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«11».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«11».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«12».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«12».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«12».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«12».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«12».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«12».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«12».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«12».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«13».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«13».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«13».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«13».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«13».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«13».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«13».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«13».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«14».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«14».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«14».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«14».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«14».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«14».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«14».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«14».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«15».«0» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealpositive.«15».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«15».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«15».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«15».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«15».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«15».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«15».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«0».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«0».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«0».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«0».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«0».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«0».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«0».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«0».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«1».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«1».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«1».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«1».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«1».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«1».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«1».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«1».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«2».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«2».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«2».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«2».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«2».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«2».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«2».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«2».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«3».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«3».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«3».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«3».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«3».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«3».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«3».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«3».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«4».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«4».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«4».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«4».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«4».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«4».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«4».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«4».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«5».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«5».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«5».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«5».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«5».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«5».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«5».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«5».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«6».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«6».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«6».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«6».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«6».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«6».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«6».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«6».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«7».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«7».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«7».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«7».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«7».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«7».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«7».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«7».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«8».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«8».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«8».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«8».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«8».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«8».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«8».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«8».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«9».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«9».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«9».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«9».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«9».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«9».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«9».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«9».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«10».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«10».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«10».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«10».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«10».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«10».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«10».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«10».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«11».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«11».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«11».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«11».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«11».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«11».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«11».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«11».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«12».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«12».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«12».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«12».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«12».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«12».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«12».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«12».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«13».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«13».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«13».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«13».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«13».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«13».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«13».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«13».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«14».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«14».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«14».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«14».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«14».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«14».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«14».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«14».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealnegative.«15».«0» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toRealnegative.«15».«1» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealnegative.«15».«2» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealnegative.«15».«3» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealnegative.«15».«4» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealnegative.«15».«5» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealnegative.«15».«6» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealnegative.«15».«7» z:ℝhvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:1 < { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal⊢ 5 / 4 ≤ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal
norm_num [Float.toReal, exponentBias] at hz All goals completed! 🐙 <;> positive.«6».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«6».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«6».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«7».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«7».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«7».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«7».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«7».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«8».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«8».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«8».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«8».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«8».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«8».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«9».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«9».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«9».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«9».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«9».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«9».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«9».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«10».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«10».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«10».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«10».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«10».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«10».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«10».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«11».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«11».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«11».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«11».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«11».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«11».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«11».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«12».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«12».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«12».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«12».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«12».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«12».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«12».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«13».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«13».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«13».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«13».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«13».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«13».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«13».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«14».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«14».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«14».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«14».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«14».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«14».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«14».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toRealpositive.«15».«1» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toRealpositive.«15».«2» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toRealpositive.«15».«3» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toRealpositive.«15».«4» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toRealpositive.«15».«5» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toRealpositive.«15».«6» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toRealpositive.«15».«7» z:ℝhvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = zhz:True⊢ 5 / 4 ≤ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal
norm_num [Float.toReal, exponentBias] All goals completed! 🐙
An ulp (unit in the last place) is the local spacing between representable
values. Just above one, the next value is 5/4, so the spacing is 1/4.
The spacing doubles when we move to the next power-of-two interval:
\operatorname{ulp}(x)=\begin{cases}\frac14&1\le x<2,\\\frac12&2\le x<4.\end{cases}
Each dot is a distinct representable MiniFloat value. There are 41 values in the displayed interval near zero, but only 4 in the equally wide interval near one. This will be important later.
Rounding
We will use our floats to model arithmetic, which requires a mapping from the reals back to representable values. We focus on approximations that come from rounding intermediate results.
Rounding is defined on the reals and selects a nearest representable value. In addition to the rounding function itself, we also check that the values are in range and bound the approximation error introduced by rounding.
To keep things simple, we are going to drop cases that overflow or underflow. To do this, we define checked arithmetic that propagates the first failure. Our accuracy theorems assume that the computation returns a value.
Checked arithmetic stops at the first range failure.
inductive Checked (α : Type) where
| underflow
| value (result : α)
| overflow
deriving DecidableEq, Reprdef FloatType.checkedRound {T : Type} (F : FloatType T) (x : ℝ) : Checked ℝ := by ε:ℝη:ℝx✝:ℝy:ℝz:ℝT:TypeF:FloatType Tx:ℝ⊢ Checked ℝ
classical
exact if x = 0 then .value (F.round x)
else if |x| < F.range.min then .underflow
else if F.range.max < |x| then .overflow
else .value (F.round x) All goals completed! 🐙theorem FloatType.checkedRound_cert {T : Type} (F : FloatType T) {x y : ℝ}
(success : F.checkedRound x = .value y) : Relative F.roundRP x y := by T:TypeF:FloatType Tx:ℝy:ℝsuccess:F.checkedRound x = Checked.value y⊢ Relative (roundRP T) x y
obtain ⟨hx, rfl⟩ := (F.checkedRound_value_iff x y).mp success T:TypeF:FloatType Tx:ℝhx:(range T).contains xsuccess:F.checkedRound x = Checked.value (round T x)⊢ Relative (roundRP T) x (round T x)
exact F.roundRP_cert x hx All goals completed! 🐙Rounding selects a nearest value from the set of representable values, denoted S. Either neighbor may be selected in a tie. For every candidate y in S:
\begin{aligned}\operatorname{round}(x)&\in S\\|x-\operatorname{round}(x)|&\le|x-y|\end{aligned}
def Float.round (e m : ℕ) (x : ℝ) : ℝ :=
(Support.nearest (Float.toReal (e := e) (m := m)) x).toRealtheorem Float.round_representable (e m : ℕ) (x : ℝ) :
BinaryRepresentable e m (Float.round e m x) :=
⟨_, rfl⟩theorem Float.nearest (e m : ℕ) (x y : ℝ) (hy : BinaryRepresentable e m y) :
|x - Float.round e m x| ≤ |x - y| := by e:ℕm:ℕx:ℝy:ℝhy:BinaryRepresentable e m y⊢ |x - round e m x| ≤ |x - y|
obtain ⟨f, rfl⟩ := hy e:ℕm:ℕx:ℝf:Float e m⊢ |x - round e m x| ≤ |x - f.toReal|
exact Support.nearest_le _ x f All goals completed! 🐙
theorem Float.exact {e m : ℕ} {x : ℝ} (hx : BinaryRepresentable e m x) :
Float.round e m x = x := by e:ℕm:ℕx:ℝhx:BinaryRepresentable e m x⊢ round e m x = x
have h : x = Float.round e m x := by
simpa [sub_eq_zero] using Float.nearest e m x x hx e:ℕm:ℕx:ℝhx:BinaryRepresentable e m xh:x = round e m x⊢ round e m x = x e:ℕm:ℕx:ℝhx:BinaryRepresentable e m xh:x = round e m x⊢ round e m x = x
exact h.symm All goals completed! 🐙Finally, we need an approximation bound for every in-range input. Let's return to our MiniFloat format to prove this bound.
abbrev MiniFloat.round := Float.round 4 3For a nonzero input in the normal range, nearest rounding introduces at most half an ulp of absolute error. Zero rounds exactly.
|x-\operatorname{round}(x)|\le\frac12\operatorname{ulp}(x)
As we saw above, the absolute spacing of values depends on the magnitude. The key question for us is: how large is the local spacing compared with the magnitude of the input?
For MiniFloat, the spacing is one quarter at magnitude one and one half at magnitude two. For every nonzero in-range input, the ratio of spacing to magnitude is at most one quarter.
\frac{\operatorname{ulp}(x)}{|x|}\le\frac14
Lean proves the half-gap bound from the nearest-rounding property:
theorem MiniFloat.round_error_between (x left right : ℝ)
(left_repr : BinaryRepresentable 4 3 left)
(right_repr : BinaryRepresentable 4 3 right)
(hleft : left ≤ x) (hright : x ≤ right) :
|x - MiniFloat.round x| ≤ (right - left) / 2 := by x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ right⊢ |x - round x| ≤ (right - left) / 2
have hl := Float.nearest 4 3 x left left_repr x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ |x - left|⊢ |x - round x| ≤ (right - left) / 2
have hr := Float.nearest 4 3 x right right_repr x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ |x - left|hr:|x - Float.round 4 3 x| ≤ |x - right|⊢ |x - round x| ≤ (right - left) / 2
rw [abs_of_nonneg (sub_nonneg.mpr hleft) x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ |x - right|⊢ |x - round x| ≤ (right - left) / 2 x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ |x - right|⊢ |x - round x| ≤ (right - left) / 2] at hl x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ |x - right|⊢ |x - round x| ≤ (right - left) / 2
rw [abs_of_nonpos (sub_nonpos.mpr hright) x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ -(x - right)⊢ |x - round x| ≤ (right - left) / 2 x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ -(x - right)⊢ |x - round x| ≤ (right - left) / 2] at hr x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ -(x - right)⊢ |x - round x| ≤ (right - left) / 2
change |x - Float.round 4 3 x| ≤ (right - left) / 2 x:ℝleft:ℝright:ℝleft_repr:BinaryRepresentable 4 3 leftright_repr:BinaryRepresentable 4 3 righthleft:left ≤ xhright:x ≤ righthl:|x - Float.round 4 3 x| ≤ x - lefthr:|x - Float.round 4 3 x| ≤ -(x - right)⊢ |x - Float.round 4 3 x| ≤ (right - left) / 2
linarith All goals completed! 🐙Combining the spacing bound with the half-ulp error bound gives, for every nonzero in-range MiniFloat input:
\begin{aligned}\frac{|x-\operatorname{round}(x)|}{|x|}&\le\frac12\frac{\operatorname{ulp}(x)}{|x|}\\&\le\frac18\end{aligned}
This bounds the ratio of the rounded value to the exact value:
\frac78\le\frac{\operatorname{round}(x)}{x}\le\frac98
Applying the logarithmic RP definition gives the certificate:
\operatorname{RP}(x,\operatorname{round}(x))\le\log\frac87
theorem MiniFloat.rp_of_half_ulp (x ulp : ℝ)
(hspacing : ulp ≤ |x| / 4)
(herror : |x - MiniFloat.round x| ≤ ulp / 2) :
Relative (Real.log (8 / 7)) x (MiniFloat.round x) := by x:ℝulp:ℝhspacing:ulp ≤ |x| / 4herror:|x - round x| ≤ ulp / 2⊢ Relative (Real.log (8 / 7)) x (round x)
exact MiniFloat.rp_of_relative_error x (by x:ℝulp:ℝhspacing:ulp ≤ |x| / 4herror:|x - round x| ≤ ulp / 2⊢ |x - round x| ≤ 1 / 8 * |x| linarith All goals completed! 🐙)
theorem MiniFloat.roundRP_cert (x : ℝ) (hx : MiniFloat.inRange x) :
Relative (Real.log (8 / 7)) x (MiniFloat.round x) := by x:ℝhx:inRange x⊢ Relative (Real.log (8 / 7)) x (round x)
rcases (MiniFloat.inRange_iff x).mp hx with rfl | ⟨hlo, hhi⟩ inl hx:inRange 0⊢ Relative (Real.log (8 / 7)) 0 (round 0)inr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896⊢ Relative (Real.log (8 / 7)) x (round x)
· inl hx:inRange 0⊢ Relative (Real.log (8 / 7)) 0 (round 0) have hzero : MiniFloat.round 0 = 0 :=
Float.exact (Float.zero_representable 4 3) inl hx:inRange 0hzero:round 0 = 0⊢ Relative (Real.log (8 / 7)) 0 (round 0)
rw [hzero inl hx:inRange 0hzero:round 0 = 0⊢ Relative (Real.log (8 / 7)) 0 0 inl hx:inRange 0hzero:round 0 = 0⊢ Relative (Real.log (8 / 7)) 0 0] inl hx:inRange 0hzero:round 0 = 0⊢ Relative (Real.log (8 / 7)) 0 0
exact ⟨0, by hx:inRange 0hzero:round 0 = 0⊢ |0| ≤ Real.log (8 / 7) simp [Real.log_nonneg (by norm_num : (1 : ℝ) ≤ 8 / 7)] All goals completed! 🐙, by hx:inRange 0hzero:round 0 = 0⊢ 0 = 0 * Real.exp 0 simp All goals completed! 🐙⟩
· inr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896⊢ Relative (Real.log (8 / 7)) x (round x) have h := MiniFloat.round_cert x hhi inr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ max (|x| / 8) (1 / 512)⊢ Relative (Real.log (8 / 7)) x (round x)
rw [max_eq_left (by x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ max (|x| / 8) (1 / 512)⊢ 1 / 512 ≤ |x| / 8 inr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ |x| / 8⊢ Relative (Real.log (8 / 7)) x (round x) linarith All goals completed! 🐙inr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ |x| / 8⊢ Relative (Real.log (8 / 7)) x (round x) : (1 : ℝ) / 512 ≤ |x| / 8)] at hinr x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ |x| / 8⊢ Relative (Real.log (8 / 7)) x (round x)
exact MiniFloat.rp_of_relative_error x (by x:ℝhx:inRange xhlo:1 / 64 ≤ |x|hhi:|x| ≤ 896h:|x - round x| ≤ |x| / 8⊢ |x - round x| ≤ 1 / 8 * |x| linarith All goals completed! 🐙)instance MiniFloat.floatType : FloatType MiniFloat where
round := MiniFloat.round
range := Float.range 4 3
roundRP := Real.log (8 / 7)
roundRP_cert := MiniFloat.roundRP_certWarmup - Certifying Precision
Before returning to the softmax example, let's add two positive inputs and divide by ten. Epsilon and eta bound the input errors; rho bounds the RP error of each rounding step. For the exact and computed results, the certificate is:
\operatorname{RP}(f,\widehat f)\le\max(\varepsilon,\eta)+2\rho
Here f is the exact result and f-hat is the computed result. We have two implementations: one using exact real arithmetic and the other rounding after each operation with range checks.
def addThenDivideExact (a b : ℝ) : ℝ :=
let sum := a + b
sum / 10def addThenDivide (T : Type) [F : FloatType T] (a b : ℝ) : Checked ℝ := do
let sum ← F.checkedRound (a + b)
F.checkedRound (sum / 10)
The proof is conditional on the rounded computation succeeding, with no
underflow or overflow. Given this condition, we prove an RP bound on the result.
The bound accounts for the errors in the approximate inputs a' and b' and the
two rounding steps. Rho is the format's rounding bound, stored in F.roundRP.
theorem addThenDivide_cert (T : Type) [F : FloatType T] {ε η a b a' b' : ℝ}
(ha : 0 < a) (hb : 0 < b)
(a_cert : Relative ε a a') (b_cert : Relative η b b')
{result : ℝ} (success : addThenDivide T a' b' = .value result) :
Relative (max ε η + 2 * F.roundRP) (addThenDivideExact a b) result := by T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value result⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result
obtain ⟨sum, hsum, hdiv⟩ := (Checked.bind_value_iff _ _ _).mp success T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value resultsum:ℝhsum:F.checkedRound (a' + b') = Checked.value sumhdiv:F.checkedRound (sum / 10) = Checked.value result⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result
have sum_cert := (Relative.add_pos ha hb a_cert b_cert).trans (F.checkedRound_cert hsum) T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value resultsum:ℝhsum:F.checkedRound (a' + b') = Checked.value sumhdiv:F.checkedRound (sum / 10) = Checked.value resultsum_cert:Relative (max ε η + FloatType.roundRP T) (a + b) sum⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result
have quotient_cert := sum_cert.div (Relative.refl 10) T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value resultsum:ℝhsum:F.checkedRound (a' + b') = Checked.value sumhdiv:F.checkedRound (sum / 10) = Checked.value resultsum_cert:Relative (max ε η + FloatType.roundRP T) (a + b) sumquotient_cert:Relative (max ε η + FloatType.roundRP T + 0) ((a + b) / 10) (sum / 10)⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result
have rounded_cert := quotient_cert.trans (F.checkedRound_cert hdiv) T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value resultsum:ℝhsum:F.checkedRound (a' + b') = Checked.value sumhdiv:F.checkedRound (sum / 10) = Checked.value resultsum_cert:Relative (max ε η + FloatType.roundRP T) (a + b) sumquotient_cert:Relative (max ε η + FloatType.roundRP T + 0) ((a + b) / 10) (sum / 10)rounded_cert:Relative (max ε η + FloatType.roundRP T + 0 + FloatType.roundRP T) ((a + b) / 10) result⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result
simpa only [addThenDivideExact, add_zero,
show max ε η + F.roundRP + F.roundRP = max ε η + 2 * F.roundRP by T:TypeF:FloatType Tε:ℝη:ℝa:ℝb:ℝa':ℝb':ℝha:0 < ahb:0 < ba_cert:Relative ε a a'b_cert:Relative η b b'result:ℝsuccess:addThenDivide T a' b' = Checked.value result⊢ Relative (max ε η + 2 * FloatType.roundRP T) (addThenDivideExact a b) result ring All goals completed! 🐙]
using rounded_certThe Softmax Issue
Now let's return to the fix for softmax to show how rounding can erase gradients even without underflow. We will use our precision bounds to check this issue and its fix.
First, recall absorption. MiniFloat represents both one and one thirty-second exactly, but their sum rounds back to one:
def result : ℝ :=
MiniFloat.round (1 + 1 / 32)
theorem result_eq_one : result = 1 := by ⊢ result = 1
change Float.round 4 3 (1 + 1 / 32) = 1 ⊢ Float.round 4 3 (1 + 1 / 32) = 1
have hnear := Float.nearest 4 3 (1 + 1 / 32) 1 (Float.one_representable 4 (by ⊢ 0 < 3 hnear:|1 + 1 / 32 - Float.round 4 3 (1 + 1 / 32)| ≤ |1 + 1 / 32 - 1|⊢ Float.round 4 3 (1 + 1 / 32) = 1 norm_num All goals completed! 🐙 hnear:|1 + 1 / 32 - Float.round 4 3 (1 + 1 / 32)| ≤ |1 + 1 / 32 - 1|⊢ Float.round 4 3 (1 + 1 / 32) = 1)) hnear:|1 + 1 / 32 - Float.round 4 3 (1 + 1 / 32)| ≤ |1 + 1 / 32 - 1|⊢ Float.round 4 3 (1 + 1 / 32) = 1
obtain ⟨⟨sign, exponent, mantissa⟩, hvalue⟩ :=
Float.round_representable 4 3 (1 + 1 / 32) hnear:|1 + 1 / 32 - Float.round 4 3 (1 + 1 / 32)| ≤ |1 + 1 / 32 - 1|sign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ Float.round 4 3 (1 + 1 / 32) = 1
rw [← hvalue sign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := sign, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal = 1 sign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := sign, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal = 1] at hnear ⊢ sign:Signexponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := sign, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := sign, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := sign, exponent := exponent, mantissa := mantissa }.toReal = 1
cases sign positive exponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = 1negative exponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = 1 <;> positive exponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := exponent, mantissa := mantissa }.toReal = 1negative exponent:Fin (2 ^ 4)mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal| ≤ |1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := exponent, mantissa := mantissa }.toReal = 1 fin_cases exponent negative.«0» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«1» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«2» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«3» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«4» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«5» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«6» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«7» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«8» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«9» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«10» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«11» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«12» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«13» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«14» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«15» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = 1 <;> positive.«0» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«1» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«2» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«3» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«4» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«5» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«6» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«7» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«8» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«9» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«10» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«11» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«12» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«13» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«14» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = 1positive.«15» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«0» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«1» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«2» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«3» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«4» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«5» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«6» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«7» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«8» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«9» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«10» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«11» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«12» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«13» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«14» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := mantissa }.toReal = 1negative.«15» mantissa:Fin (2 ^ 3)hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := mantissa }.toReal = 1 fin_cases mantissa negative.«15».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«15».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«15».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«15».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«15».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«15».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«15».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«15».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1 <;> positive.«0».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«0».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«0».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«0».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«0».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«0».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«0».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«0».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«1».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«1».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«1».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«1».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«1».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«1».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«1».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«1».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«2».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«2».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«2».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«2».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«2».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«2».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«2».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«2».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«3».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«3».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«3».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«3».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«3».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«3».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«3».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«3».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«4».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«4».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«4».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«4».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«4».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«4».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«4».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«4».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«5».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«5».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«5».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«5».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«5».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«5».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«5».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«5».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«6».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«6».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«6».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«6».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«6».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«6».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«6».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«6».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«7».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«7».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«7».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«7».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«7».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«7».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«7».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«7».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«8».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«8».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«8».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«8».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«8».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«8».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«8».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«8».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«9».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«9».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«9».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«9».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«9».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«9».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«9».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«9».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«10».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«10».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«10».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«10».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«10».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«10».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«10».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«10».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«11».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«11».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«11».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«11».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«11».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«11».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«11».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«11».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«12».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«12».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«12».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«12».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«12».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«12».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«12».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«12».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«13».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«13».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«13».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«13».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«13».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«13».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«13».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«13».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«14».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«14».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«14».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«14».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«14».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«14».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«14».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«14».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1positive.«15».«0» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1positive.«15».«1» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1positive.«15».«2» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1positive.«15».«3» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1positive.«15».«4» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1positive.«15».«5» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1positive.«15».«6» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1positive.«15».«7» hnear:|1 + 1 / 32 - { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.positive, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«0».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«0».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«0».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«0».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«0».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«0».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«0».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«0».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨0, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«1».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«1».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«1».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«1».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«1».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«1».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«1».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«1».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨1, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«2».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«2».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«2».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«2».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«2».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«2».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«2».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«2».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨2, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«3».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«3».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«3».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«3».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«3».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«3».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«3».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«3».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨3, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«4».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«4».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«4».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«4».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«4».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«4».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«4».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«4».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨4, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«5».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«5».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«5».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«5».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«5».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«5».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«5».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«5».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨5, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«6».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«6».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«6».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«6».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«6».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«6».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«6».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«6».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨6, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«7».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«7».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«7».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«7».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«7».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«7».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«7».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«7».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨7, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«8».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«8».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«8».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«8».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«8».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«8».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«8».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«8».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨8, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«9».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«9».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«9».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«9».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«9».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«9».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«9».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«9».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨9, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«10».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«10».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«10».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«10».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«10».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«10».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«10».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«10».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨10, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«11».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«11».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«11».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«11».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«11».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«11».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«11».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«11».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨11, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«12».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«12».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«12».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«12».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«12».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«12».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«12».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«12».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨12, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«13».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«13».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«13».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«13».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«13».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«13».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«13».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«13».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨13, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«14».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«14».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«14».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«14».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«14».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«14».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«14».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«14».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨14, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1negative.«15».«0» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨0, ⋯⟩ }.toReal = 1negative.«15».«1» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨1, ⋯⟩ }.toReal = 1negative.«15».«2» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨2, ⋯⟩ }.toReal = 1negative.«15».«3» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨3, ⋯⟩ }.toReal = 1negative.«15».«4» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨4, ⋯⟩ }.toReal = 1negative.«15».«5» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨5, ⋯⟩ }.toReal = 1negative.«15».«6» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨6, ⋯⟩ }.toReal = 1negative.«15».«7» hnear:|1 + 1 / 32 - { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal| ≤
|1 + 1 / 32 - 1|hvalue:{ sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal =
Float.round 4 3 (1 + 1 / 32)⊢ { sign := Sign.negative, exponent := (fun i => i) ⟨15, ⋯⟩, mantissa := (fun i => i) ⟨7, ⋯⟩ }.toReal = 1
norm_num [Float.toReal, exponentBias] at * All goals completed! 🐙Recall that softmax converts scores, called logits, into probabilities:
q_k=\operatorname{softmax}(z)_k=\frac{e^{z_k}}{\sum_j e^{z_j}}
Log-softmax gives the logarithms of these probabilities. Its derivatives are used when training classification models.
\begin{aligned}&\operatorname{logsoftmax}(z)_k=\log q_k\\&\quad=z_k-\log\sum_j e^{z_j}\end{aligned}
The derivative of the log-sum-exp term with respect to an input logit is the corresponding softmax probability. Differentiating with respect to each input therefore gives:
\begin{aligned}g_j&=\frac{\partial\operatorname{logsoftmax}(z)_k}{\partial z_j}\\&=\begin{cases}1-q_k & j=k,\\-q_j & j\ne k.\end{cases}\end{aligned}
These derivatives sum to zero: their sum is one minus the sum of the probabilities. Adding the same constant to every logit leaves the probabilities unchanged.
To avoid overflow during exponentiation, implementations subtract the largest logit from every input. Let k be the index of a largest logit. With at least two classes, the remaining exponentials have a positive sum:
\begin{aligned}s&=\sum_{j\ne k}e^{z_j-z_k}>0\\q_k&=\frac1{1+s}\end{aligned}
The gradient at that logit has this expression:
g_k=\underbrace{1-\frac1{1+s}}_{\text{standard}}
def softmaxGradientExact (s : ℝ) (_hs : 0 < s) : ℝ :=
s / (1 + s)def softmaxGradient (T : Type) [F : FloatType T] (s : ℝ) (_hs : 0 < s) : Checked ℝ := do
let denominator ← F.checkedRound (1 + s)
let q ← F.checkedRound (1 / denominator)
F.checkedRound (1 - q)The rounded computation can approximate the probability near one accurately, yet lose the gradient entirely when it subtracts that probability from one.
If absorption occurs and the computation succeeds, the result is zero while the exact gradient is positive. We can prove that no finite RP bound exists.
theorem softmaxGradient_no_cert (s : ℝ) (hs : 0 < s)
(absorbed : MiniFloat.round (1 + s) = 1) {result : ℝ}
(success : softmaxGradient MiniFloat s hs = .value result) (ε : ℝ) :
¬ Relative ε (softmaxGradientExact s hs) result := by s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝ⊢ ¬Relative ε (softmaxGradientExact s hs) result
have round_one : MiniFloat.round 1 = 1 :=
Float.exact (Float.one_representable 4 (by s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝ⊢ 0 < 3 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1⊢ ¬Relative ε (softmaxGradientExact s hs) result norm_num All goals completed! 🐙 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1⊢ ¬Relative ε (softmaxGradientExact s hs) result)) s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1⊢ ¬Relative ε (softmaxGradientExact s hs) result
have round_zero : MiniFloat.round 0 = 0 :=
Float.exact (Float.zero_representable 4 3) s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0⊢ ¬Relative ε (softmaxGradientExact s hs) result
obtain ⟨den, hden, rest⟩ := (Checked.bind_value_iff _ _ _).mp success s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value result⊢ ¬Relative ε (softmaxGradientExact s hs) result
obtain ⟨q, hq, hout⟩ := (Checked.bind_value_iff _ _ _).mp rest s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value result⊢ ¬Relative ε (softmaxGradientExact s hs) result
have hd := ((MiniFloat.floatType.checkedRound_value_iff _ _).mp hden).2 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthd:FloatType.round MiniFloat (1 + s) = den⊢ ¬Relative ε (softmaxGradientExact s hs) result
change MiniFloat.round (1 + s) = den at hd s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthd:MiniFloat.round (1 + s) = den⊢ ¬Relative ε (softmaxGradientExact s hs) result
rw [absorbed s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthd:1 = den⊢ ¬Relative ε (softmaxGradientExact s hs) result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthd:1 = den⊢ ¬Relative ε (softmaxGradientExact s hs) result] at hd s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0den:ℝhden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value denrest:(do
let q ← MiniFloat.floatType.checkedRound (1 / den)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resultq:ℝhq:MiniFloat.floatType.checkedRound (1 / den) = Checked.value qhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthd:1 = den⊢ ¬Relative ε (softmaxGradientExact s hs) result
subst den s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value q⊢ ¬Relative ε (softmaxGradientExact s hs) result
have hq' := ((MiniFloat.floatType.checkedRound_value_iff _ _).mp hq).2 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':FloatType.round MiniFloat (1 / 1) = q⊢ ¬Relative ε (softmaxGradientExact s hs) result
change MiniFloat.round (1 / 1) = q at hq' s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':MiniFloat.round (1 / 1) = q⊢ ¬Relative ε (softmaxGradientExact s hs) result
rw [div_one, s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':MiniFloat.round 1 = q⊢ ¬Relative ε (softmaxGradientExact s hs) result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':1 = q⊢ ¬Relative ε (softmaxGradientExact s hs) result round_one s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':1 = q⊢ ¬Relative ε (softmaxGradientExact s hs) result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':1 = q⊢ ¬Relative ε (softmaxGradientExact s hs) result] at hq' s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0q:ℝhout:MiniFloat.floatType.checkedRound (1 - q) = Checked.value resulthden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value qhq':1 = q⊢ ¬Relative ε (softmaxGradientExact s hs) result
subst q s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1⊢ ¬Relative ε (softmaxGradientExact s hs) result
have hout' := ((MiniFloat.floatType.checkedRound_value_iff _ _).mp hout).2 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':FloatType.round MiniFloat (1 - 1) = result⊢ ¬Relative ε (softmaxGradientExact s hs) result
change MiniFloat.round (1 - 1) = result at hout' s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':MiniFloat.round (1 - 1) = result⊢ ¬Relative ε (softmaxGradientExact s hs) result
rw [sub_self, s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':MiniFloat.round 0 = result⊢ ¬Relative ε (softmaxGradientExact s hs) result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':0 = result⊢ ¬Relative ε (softmaxGradientExact s hs) result round_zero s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':0 = result⊢ ¬Relative ε (softmaxGradientExact s hs) result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':0 = result⊢ ¬Relative ε (softmaxGradientExact s hs) result] at hout' s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1result:ℝsuccess:softmaxGradient MiniFloat s hs = Checked.value resultε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value resulthout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value resulthq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1hout':0 = result⊢ ¬Relative ε (softmaxGradientExact s hs) result
subst result s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0⊢ ¬Relative ε (softmaxGradientExact s hs) 0
change ¬ Relative ε (s / (1 + s)) 0 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0⊢ ¬Relative ε (s / (1 + s)) 0
rintro ⟨δ, _, h⟩ s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0δ:ℝleft✝:|δ| ≤ εh:0 = s / (1 + s) * Real.exp δ⊢ False
have hpositive : 0 < s / (1 + s) * Real.exp δ :=
mul_pos (div_pos hs (by s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0δ:ℝleft✝:|δ| ≤ εh:0 = s / (1 + s) * Real.exp δ⊢ 0 < 1 + s s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0δ:ℝleft✝:|δ| ≤ εh:0 = s / (1 + s) * Real.exp δhpositive:0 < s / (1 + s) * Real.exp δ⊢ False linarith All goals completed! 🐙 s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0δ:ℝleft✝:|δ| ≤ εh:0 = s / (1 + s) * Real.exp δhpositive:0 < s / (1 + s) * Real.exp δ⊢ False))
(Real.exp_pos δ) s:ℝhs:0 < sabsorbed:MiniFloat.round (1 + s) = 1ε:ℝround_one:MiniFloat.round 1 = 1round_zero:MiniFloat.round 0 = 0hden:MiniFloat.floatType.checkedRound (1 + s) = Checked.value 1hq:MiniFloat.floatType.checkedRound (1 / 1) = Checked.value 1success:softmaxGradient MiniFloat s hs = Checked.value 0rest:(do
let q ← MiniFloat.floatType.checkedRound (1 / 1)
MiniFloat.floatType.checkedRound (1 - q)) =
Checked.value 0hout:MiniFloat.floatType.checkedRound (1 - 1) = Checked.value 0δ:ℝleft✝:|δ| ≤ εh:0 = s / (1 + s) * Real.exp δhpositive:0 < s / (1 + s) * Real.exp δ⊢ False
linarith All goals completed! 🐙How can we fix this? The issue at heart is the subtraction. The value we added in got absorbed to 1, but critically it would not have been absorbed into 0. As we saw above, the floats are denser around zero.
We get around the issue by rearranging to math to avoid the absorbtion. Specifically, the paper's rearrangement keeps the small quantity in the numerator:
1-\frac1{1+s}=\frac{s}{1+s}
We round the denominator and quotient directly.
def softmaxGradientFixed (T : Type) [F : FloatType T] (s : ℝ) (_hs : 0 < s) : Checked ℝ := do
let denominator ← F.checkedRound (1 + s)
F.checkedRound (s / denominator)
The proof is similar to the warmup. Positive addition preserves the input RP
bound \varepsilon, then denominator rounding adds \rho. Division combines
this with the numerator's bound \varepsilon; quotient rounding adds another
\rho. Altogether,
\operatorname{RP}\bigl(g_k(s),\widehat g_k(\widehat s)\bigr)\le2\varepsilon+2\rho
We prove accuracy whenever the computation returns a value. Underflow and overflow propagate as failures, so no separate range assumptions are needed.
theorem softmaxGradientFixed_cert (T : Type) [F : FloatType T] {s ŝ : ℝ} (hs : 0 < s)
(s_cert : Relative ε s ŝ)
{result : ℝ}
(success : softmaxGradientFixed T ŝ (s_cert.pos hs) = .value result) :
Relative (2 * ε + 2 * F.roundRP)
(softmaxGradientExact s hs) result := by ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value result⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
obtain ⟨den, hden, hquotient⟩ := (Checked.bind_value_iff _ _ _).mp success ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value result⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
have ε_nonneg : 0 ≤ ε := by
obtain ⟨δ, hδ, _⟩ := s_cert ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < sresult:ℝden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultδ:ℝhδ:|δ| ≤ εright✝:ŝ = s * Real.exp δsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value result⊢ 0 ≤ ε ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ ε⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
exact (abs_nonneg δ).trans hδ ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ ε⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ ε⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
have sum_cert : Relative ε (1 + s) (1 + ŝ) := by
simpa [max_eq_right ε_nonneg] using
Relative.add_pos (by ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ ε⊢ 0 < 1 ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result norm_num All goals completed! 🐙 ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result : (0 : ℝ) < 1) hs (Relative.refl 1) s_cert ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
have denominator_cert : Relative (ε + F.roundRP) (1 + s) den :=
sum_cert.trans (F.checkedRound_cert hden) ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)denominator_cert:Relative (ε + FloatType.roundRP T) (1 + s) den⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
have quotient_cert : Relative (ε + (ε + F.roundRP))
(s / (1 + s)) (ŝ / den) :=
s_cert.div denominator_cert ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)denominator_cert:Relative (ε + FloatType.roundRP T) (1 + s) denquotient_cert:Relative (ε + (ε + FloatType.roundRP T)) (s / (1 + s)) (ŝ / den)⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
have rounded_cert := quotient_cert.trans (F.checkedRound_cert hquotient) ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value resultden:ℝhden:F.checkedRound (1 + ŝ) = Checked.value denhquotient:F.checkedRound (ŝ / den) = Checked.value resultε_nonneg:0 ≤ εsum_cert:Relative ε (1 + s) (1 + ŝ)denominator_cert:Relative (ε + FloatType.roundRP T) (1 + s) denquotient_cert:Relative (ε + (ε + FloatType.roundRP T)) (s / (1 + s)) (ŝ / den)rounded_cert:Relative (ε + (ε + FloatType.roundRP T) + FloatType.roundRP T) (s / (1 + s)) result⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result
simpa only [softmaxGradientExact,
show ε + (ε + F.roundRP) + F.roundRP = 2 * ε + 2 * F.roundRP by ε:ℝT:TypeF:FloatType Ts:ℝŝ:ℝhs:0 < ss_cert:Relative ε s ŝresult:ℝsuccess:softmaxGradientFixed T ŝ ⋯ = Checked.value result⊢ Relative (2 * ε + 2 * FloatType.roundRP T) (softmaxGradientExact s hs) result ring All goals completed! 🐙]
using rounded_certThis theorem certifies the rounded scalar gradient, given an RP bound on the input sum. Differentiation and the exponential and summation operations that produce that input are not formalized here. This fixes the issue and gives a bound.
Conclusion
This blog walks through a basic example of reasoning about floating-point precision in Lean. There is much more to this topic, including tools for working with larger networks and full floating-point formats. For more information, see the TorchLean project and FloatLib.