File tree Expand file tree Collapse file tree 1 file changed +15
-3
lines changed
Expand file tree Collapse file tree 1 file changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -218,12 +218,18 @@ instance field with real
218218
219219(* -------------------------------------------------------------------- *)
220220op floor : real -> int.
221- op ceil : real -> int.
221+
222+ op [opaque smt_opaque] ceil (x : real) : int =
223+ -(floor (Self.([-]) x)).
222224
223225axiom floor_bound (x:real) : x - 1%r < (floor x)%r <= x.
224- axiom ceil_bound (x:real) : x <= (ceil x)%r < x + 1%r.
225226axiom from_int_floor n : floor n%r = n.
226- axiom from_int_ceil n : ceil n%r = n.
227+
228+ lemma ceil_bound (x:real) : x <= (ceil x)%r < x + 1%r.
229+ proof. by rewrite /ceil; smt(floor_bound). qed.
230+
231+ lemma from_int_ceil n : ceil n%r = n.
232+ proof. by rewrite /ceil -fromintN from_int_floor oppzK. qed.
227233
228234lemma floor_gt x : x - 1 %r < (floor x)%r.
229235proof. by case : (floor_bound x). qed.
@@ -246,6 +252,12 @@ proof. smt(floor_bound). qed.
246252lemma from_int_floor_addr n x : floor (x + n%r) = floor x + n.
247253proof. smt(floor_bound). qed.
248254
255+ lemma from_int_ceil_addl n x : ceil (n%r + x) = n + ceil x.
256+ proof. smt(ceil_bound). qed.
257+
258+ lemma from_int_ceil_addr n x : ceil (x + n%r) = ceil x + n.
259+ proof. smt(ceil_bound). qed.
260+
249261lemma floor_mono (x y : real) : x <= y => floor x <= floor y.
250262proof. smt(floor_bound). qed.
251263
You can’t perform that action at this time.
0 commit comments