File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -218,12 +218,16 @@ instance field with real
218218
219219(* -------------------------------------------------------------------- *)
220220op floor : real -> int.
221- op ceil : real -> int.
221+ op [opaque] ceil : real -> int = fun (x : real)=> -(floor (Self.([-]) x)) .
222222
223223axiom floor_bound (x:real) : x - 1%r < (floor x)%r <= x.
224- axiom ceil_bound (x:real) : x <= (ceil x)%r < x + 1%r.
225224axiom from_int_floor n : floor n%r = n.
226- axiom from_int_ceil n : ceil n%r = n.
225+
226+ lemma ceil_bound (x:real) : x <= (ceil x)%r < x + 1%r.
227+ proof. by rewrite /ceil; smt(floor_bound). qed.
228+
229+ lemma from_int_ceil n : ceil n%r = n.
230+ proof. by rewrite /ceil -fromintN from_int_floor oppzK. qed.
227231
228232lemma floor_gt x : x - 1 %r < (floor x)%r.
229233proof. by case : (floor_bound x). qed.
@@ -246,6 +250,12 @@ proof. smt(floor_bound). qed.
246250lemma from_int_floor_addr n x : floor (x + n%r) = floor x + n.
247251proof. smt(floor_bound). qed.
248252
253+ lemma from_int_ceil_addl n x : ceil (n%r + x) = n + ceil x.
254+ proof. smt(ceil_bound). qed.
255+
256+ lemma from_int_ceil_addr n x : ceil (x + n%r) = ceil x + n.
257+ proof. smt(ceil_bound). qed.
258+
249259lemma floor_mono (x y : real) : x <= y => floor x <= floor y.
250260proof. smt(floor_bound). qed.
251261
You can’t perform that action at this time.
0 commit comments