Transparent Float.of_bits.
Transparent Float32.of_bits.

(* Specifications: *)
Lemma double_of_bits_inj:
forall i j, Float.of_bits i = Float.of_bits j -> i=j.
Lemma binary_normalize_inj:
forall s1 m1 e1 (h1 : bounded 24 128 m1 e1 = true),
forall s2 m2 e2 (h2 : bounded 24 128 m2 e2 = true),
binary_normalize 53 1024 (eq_refl _) (eq_refl _) mode_NE (cond_Zopp s1 (Zpos m1)) e1 s1 =
binary_normalize 53 1024 (eq_refl _) (eq_refl _) mode_NE (cond_Zopp s2 (Zpos m2)) e2 s2 ->
B754_finite 24 128 s1 m1 e1 h1 = B754_finite 24 128 s2 m2 e2 h2.
Lemma binary_normalize_finite:
forall b m e,
bounded (23 + 1) (2 ^ (8 - 1)) m e = true ->
match
binary_normalize 53 1024 eq_refl eq_refl mode_NE
(cond_Zopp b (Z.pos m)) e b
with B754_finite _ _ _ _ => True | _ => False
end.
Lemma float32_preserves_payload:
forall s pl,
let '(s1,pl1) := Float.of_single_pl s pl in
(s=s1 /\ (536870912 * (Pos.lor (proj1_sig pl) 4194304))%positive = proj1_sig pl1).
Lemma pos_lor_inj:  (* not true *)
forall k N (a b: nan_pl k),
Zpower_nat 2 (Z.to_nat (k-2)) = Zpos N ->
Pos.lor (proj1_sig a) N =  Pos.lor (proj1_sig b) N ->
a=b.
Lemma single_of_bits_inj:
forall i j : Int.int, Float32.of_bits i = Float32.of_bits j -> i=j.
Lemma Vint_inj: forall i j, Vint i = Vint j -> i=j.
*)
Abort.
Lemma superprecise_ewand_lem1:
forall S P: pred rmap, superprecise P ->
S |-- P * TT ->
S = (P * (ewand P S))%pred.