aboutsummaryrefslogtreecommitdiff
path: root/src/Util/ZRange/Operations.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/Util/ZRange/Operations.v')
-rw-r--r--src/Util/ZRange/Operations.v11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/Util/ZRange/Operations.v b/src/Util/ZRange/Operations.v
index 881a28a31..d17785f77 100644
--- a/src/Util/ZRange/Operations.v
+++ b/src/Util/ZRange/Operations.v
@@ -78,6 +78,12 @@ Module ZRange.
=> let (lx, ux) := x in
let (ly, uy) := y in
{| lower := Z.min 0 (Z.min lx ly) ; upper := Z.max 0 (Z.min ux uy) |}).
+ Definition lor_bounds : zrange -> zrange -> zrange
+ := extremization_bounds
+ (fun x y
+ => let (lx, ux) := x in
+ let (ly, uy) := y in
+ {| lower := Z.max lx ly ; upper := upper_lor_land_bounds ux uy |}).
Definition split_bounds (r : zrange) (split_at : BinInt.Z) : zrange * zrange :=
if upper r <? split_at
@@ -87,4 +93,9 @@ Module ZRange.
{| lower := lower r / split_at; upper := (upper r / split_at) |} )
else ( {| lower := 0; upper := split_at - 1 |},
{| lower := lower r / split_at; upper := (upper r / split_at) |} ).
+
+ Definition good (r : zrange) : Prop
+ := lower r <= upper r.
+ Definition goodb (r : zrange) : bool
+ := (lower r <=? upper r)%Z.
End ZRange.