From 7443c78a4bf1834c1877fc3933d9741bc95be085 Mon Sep 17 00:00:00 2001 From: Thomas Tuerk Date: Sun, 11 Sep 2016 10:19:41 +0200 Subject: [PATCH 1/7] MSetIntervals: implement opertions more efficiently This commit provides for sets represented by interval more efficient implementations of - union - inter - diff - subset - choose --- MSetIntervals.v | 4395 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 3315 insertions(+), 1080 deletions(-) diff --git a/MSetIntervals.v b/MSetIntervals.v index 03ec64e..930c8e9 100644 --- a/MSetIntervals.v +++ b/MSetIntervals.v @@ -19,6 +19,12 @@ * If not, see . *) +(* CHANGES + * + * 25-09-2016 Thomas Tuerk + * implement union, inter, diff, subset, choose efficiently + *) + (** * Weak sets implemented by interval lists This file contains an implementation of the weak set interface @@ -56,6 +62,44 @@ Proof. apply N2Z.is_nonneg. Qed. +Lemma Z_lt_add_r : forall (z : Z) (n : N), + (n <> 0)%N -> + z < z + Z.of_N n. +Proof. + move => z n H_neq_0. + suff : (z + Z.of_N 0 < z + Z.of_N n). { + rewrite Z.add_0_r //. + } + apply Z.add_lt_mono_l, N2Z.inj_lt. + by apply N.neq_0_lt_0. +Qed. + +Lemma Z_lt_le_add_r : forall y1 y2 c, + y1 < y2 -> + y1 <= y2 + Z.of_N c. +Proof. + intros y1 y2 c H. + apply Z.le_trans with (m := y2). { + by apply Z.lt_le_incl. + } { + apply Z_le_add_r. + } +Qed. + +Lemma Z_to_N_minus_neq_0 : forall (x y : Z), + y < x -> + Z.to_N (x - y) <> 0%N. +Proof. + intros x y H_y_lt. + apply N.neq_0_lt_0. + apply N2Z.inj_lt. + suff H : 0 < x - y. { + rewrite Z2N.id => //. + by apply Z.lt_le_incl. + } + by apply Z.lt_0_sub. +Qed. + Lemma add_add_sub_eq : forall (x y : Z), (x + (y - x) = y). Proof. intros x y. @@ -190,7 +234,7 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition empty : t := nil. Definition is_empty (l : t) := match l with nil => true | _ => false end. - + (** Defining the list of elements, is much more tricky, especially, if it needs to be executable. *) Lemma acc_pred : forall n p, n = Npos p -> Acc N.lt n -> Acc N.lt (N.pred n). @@ -208,8 +252,6 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. | c => fun Heq => elementsZ_aux'' (x::acc) (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end (refl_equal _). - Extraction Inline elementsZ_aux''. - Definition elementsZ_aux' acc x c := elementsZ_aux'' acc x c (lt_wf_0 _). Fixpoint elementsZ_aux acc (s : t) : list Z := @@ -238,26 +280,83 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition mem (x : elt) (s : t) := memZ (Enc.encode x) s. + (** Comparing intervals *) + Inductive interval_compare_result := + ICR_before + | ICR_before_touch + | ICR_overlap_before + | ICR_overlap_after + | ICR_equal + | ICR_subsume_1 + | ICR_subsume_2 + | ICR_after + | ICR_after_touch. + + Definition interval_compare (i1 i2 : (Z * N)) : interval_compare_result := + match (i1, i2) with ((y1, c1), (y2, c2)) => + let yc2 := (y2+Z.of_N c2) in + match (Z.compare yc2 y1) with + | Lt => ICR_after + | Eq => ICR_after_touch + | Gt => let yc1 := (y1+Z.of_N c1) in + match (Z.compare yc1 y2) with + | Lt => ICR_before + | Eq => ICR_before_touch + | Gt => (* y2 < y1+c1 /\ y1 < y2 + c2 *) + match (Z.compare y1 y2, Z.compare yc1 yc2) with + | (Lt, Lt) => ICR_overlap_before + | (Lt, _) => ICR_subsume_2 + | (Eq, Lt) => ICR_subsume_1 + | (Eq, Gt) => ICR_subsume_2 + | (Eq, Eq) => ICR_equal + | (Gt, Gt) => ICR_overlap_after + | (Gt, _) => ICR_subsume_1 + end + end + end + end. + + Definition interval_1_compare (y1 : Z) (i : (Z * N)) : interval_compare_result := + match i with (y2, c2) => + let yc2 := (y2+Z.of_N c2) in + match (Z.compare yc2 y1) with + | Lt => ICR_after + | Eq => ICR_after_touch + | Gt => match (Z.compare (Z.succ y1) y2) with + | Lt => ICR_before + | Eq => ICR_before_touch + | Gt => ICR_subsume_1 + end + end + end. + + (** Auxiliary functions for inserting at front and merging intervals *) + Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N := + (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))). + + Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) := + match l with + | nil => (x,c)::nil + | (y, c')::l' => + match (Z.compare (x + Z.of_N c) y) with + | Lt => (x, c) :: l + | Eq => (x, (c+c')%N) :: l' + | Gt => insert_interval_begin x (merge_interval_size x c y c') l' + end + end. + (** adding an element needs to be defined carefully again in order to generate efficient code *) Fixpoint addZ_aux (acc : list (Z * N)) (x : Z) (s : t) := match s with | nil => List.rev' ((x, (1%N))::acc) | (y, c) :: l => - match (Z.compare (Z.succ x) y) with - | Lt => List.rev_append ((x, (1%N))::acc) s - | Eq => List.rev_append ((x, N.succ c)::acc) l - | Gt => match (Z.compare x (y+Z.of_N c)) with - | Lt => List.rev_append acc s - | Gt => addZ_aux ((y,c) :: acc) x l - | Eq => match l with - | nil => List.rev' ((y, N.succ c)::acc) - | (z, c') :: l' => if (Z.eqb z (Z.succ x)) then - List.rev_append ((y,N.succ (c+c')) :: acc) l' - else - List.rev_append ((y,N.succ c) :: acc) l - end - end + match (interval_1_compare x (y,c)) with + | ICR_before => List.rev_append ((x, (1%N))::acc) s + | ICR_before_touch => List.rev_append ((x, N.succ c)::acc) l + | ICR_after => addZ_aux ((y,c) :: acc) x l + | ICR_after_touch => List.rev_append acc (insert_interval_begin y (N.succ c) l) + | _ => List.rev_append ((y, c)::acc) l end end. @@ -279,7 +378,7 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. (** removing needs to be done with code extraction in mind again. *) - Definition removeZ_aux_insert_guarded (x : Z) (c : N) s := + Definition insert_intervalZ_guarded (x : Z) (c : N) s := if (N.eqb c 0) then s else (x, c) :: s. Fixpoint removeZ_aux (acc : list (Z * N)) (x : Z) (s : t) : t := @@ -288,9 +387,9 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. | (y, c) :: l => if (Z.ltb x y) then List.rev_append acc s else if (Z.ltb x (y+Z.of_N c)) then ( - List.rev_append (removeZ_aux_insert_guarded (Z.succ x) + List.rev_append (insert_intervalZ_guarded (Z.succ x) (Z.to_N ((y+Z.of_N c)- (Z.succ x))) - (removeZ_aux_insert_guarded y (Z.to_N (x-y)) acc)) l + (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l ) else removeZ_aux ((y,c)::acc) x l end. @@ -300,30 +399,130 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition remove_list (l : list elt) (s : t) : t := List.fold_left (fun s x => remove x s) l s. - (** all other operations are defined trivially (if not always efficiently) - in terms of already defined ones. In the future it might be worth implementing - some of them more efficiently. *) - Definition union (s1 s2 : t) := - add_list (elements s1) s2. + (** union *) + Fixpoint union_aux (s1 : t) := + fix aux (s2 : t) (acc : list (Z * N)) := + match (s1, s2) with + | (nil, _) => List.rev_append acc s2 + | (_, nil) => List.rev_append acc s1 + | ((y1, c1) :: l1, (y2, c2) :: l2) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => union_aux l1 s2 ((y1, c1)::acc) + | ICR_before_touch => + union_aux l1 ( + insert_interval_begin y1 ((c1+c2)%N) l2) acc + | ICR_after => aux l2 ((y2, c2)::acc) + | ICR_after_touch => union_aux l1 ( + insert_interval_begin y2 ((c1+c2)%N) l2) acc + | ICR_overlap_before => + union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc + | ICR_overlap_after => + union_aux l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2) acc + | ICR_equal => union_aux l1 s2 acc + | ICR_subsume_1 => union_aux l1 s2 acc + | ICR_subsume_2 => aux l2 acc + end + end. + + Definition union s1 s2 := union_aux s1 s2 nil. + + (** diff *) - Definition filter (f : elt -> bool) (s : t) : t := - from_elements (List.filter f (elements s)). - Definition inter (s1 s2 : t) : t := - filter (fun x => mem x s2) s1. + Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z * N)) (s : t) : (list (Z * N) * t) := + match s with + | nil => (acc, nil) + | ((y1, c1) :: l1) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => diff_aux y2 c2 ((y1, c1)::acc) l1 + | ICR_before_touch => diff_aux y2 c2 ((y1, c1)::acc) l1 + | ICR_after => (acc, s) + | ICR_after_touch => (acc, s) + | ICR_overlap_before => diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1 + | ICR_overlap_after => (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1) + | ICR_equal => (acc, l1) + | ICR_subsume_1 => diff_aux y2 c2 acc l1 + | ICR_subsume_2 => ((insert_intervalZ_guarded y1 + (Z.to_N (y2 - y1)) acc), + insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1) + end + end. - Definition diff (s1 s2 : t) : t := - remove_list (elements s2) s1. + Fixpoint diff_aux2 (acc : list (Z * N)) (s1 s2 : t) : (list (Z * N)) := + match (s1, s2) with + | (nil, _) => rev_append acc s1 + | (_, nil) => rev_append acc s1 + | (_, (y2, c2) :: l2) => + match diff_aux y2 c2 acc s1 with + (acc', s1') => diff_aux2 acc' s1' l2 + end + end. - Definition subset s s' := - List.forallb (fun x => mem x s') (elements s). + Definition diff s1 s2 := diff_aux2 nil s1 s2. + + (** subset *) + Fixpoint subset (s1 : t) := + fix aux (s2 : t) := + match (s1, s2) with + | (nil, _) => true + | (_ :: _, nil) => false + | ((y1, c1) :: l1, (y2, c2) :: l2) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => false + | ICR_before_touch => false + | ICR_after => aux l2 + | ICR_after_touch => false + | ICR_overlap_before => false + | ICR_overlap_after => false + | ICR_equal => subset l1 l2 + | ICR_subsume_1 => subset l1 s2 + | ICR_subsume_2 => false + end + end. + (** equal *) Fixpoint equal (s s' : t) : bool := match s, s' with | nil, nil => true | ((x,cx)::xs), ((y,cy)::ys) => andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys)) | _, _ => false end. + (** inter *) + Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z * N)) (s : t) : (list (Z * N) * t) := + match s with + | nil => (acc, nil) + | ((y1, c1) :: l1) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => inter_aux y2 c2 acc l1 + | ICR_before_touch => inter_aux y2 c2 acc l1 + | ICR_after => (acc, s) + | ICR_after_touch => (acc, s) + | ICR_overlap_before => inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1 + | ICR_overlap_after => ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s) + | ICR_equal => ((y1,c1)::acc, l1) + | ICR_subsume_1 => inter_aux y2 c2 ((y1, c1)::acc) l1 + | ICR_subsume_2 => ((y2, c2)::acc, s) + end + end. + + Fixpoint inter_aux2 (acc : list (Z * N)) (s1 s2 : t) : (list (Z * N)) := + match (s1, s2) with + | (nil, _) => List.rev' acc + | (_, nil) => List.rev' acc + | (_, (y2, c2) :: l2) => + match inter_aux y2 c2 acc s1 with + (acc', s1') => inter_aux2 acc' s1' l2 + end + end. + + Definition inter s1 s2 := inter_aux2 nil s1 s2. + + + (** Simple wrappers *) + + Definition filter (f : elt -> bool) (s : t) : t := + from_elements (List.filter f (elements s)). + Definition fold {B : Type} (f : elt -> B -> B) (s : t) (i : B) : B := List.fold_left (flip f) (elements s) i. @@ -336,7 +535,6 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition partition (f : elt -> bool) (s : t) : t * t := (filter f s, filter (fun x => negb (f x)) s). - Fixpoint cardinalN c (s : t) : N := match s with | nil => c | (_,cx)::xs => cardinalN (c + cx)%N xs @@ -345,15 +543,15 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s). Definition chooseZ (s : t) : option Z := - match List.rev' (elementsZ s) with + match s with | nil => None - | x :: _ => Some x + | (x, _) :: _ => Some x end. Definition choose (s : t) : option elt := - match elements s with - | nil => None - | e :: _ => Some e + match (chooseZ s) with + | None => None + | Some x => Some (Enc.decode x) end. End Ops. @@ -370,23 +568,23 @@ Module Raw (Enc : ElementEncode). Include (Ops Enc). (** *** Defining invariant [IsOk] *) + Definition is_encoded_elems_list (l : list Z) : Prop := + (forall x, List.In x l -> exists e, Enc.encode e = x). - Definition inf (x:Z) (l: t) := - match l with - | nil => true - | (y,_)::_ => Z.ltb x y - end. + Definition interval_list_elements_greater (x : Z) (l : t) : bool := + match l with + | nil => true + | (y, _)::_ => Z.ltb x y + end. - Fixpoint isok (l : t) := + Fixpoint interval_list_invariant (l : t) := match l with | nil => true - | (x, c) ::l => inf (x+(Z.of_N c)) l && negb (N.eqb c 0) && isok l + | (x, c) :: l' => + interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l' end. - Definition is_encoded_elems_list (l : list Z) : Prop := - (forall x, List.In x l -> exists e, Enc.encode e = x). - - Definition IsOk s := (isok s = true /\ is_encoded_elems_list (elementsZ s)). + Definition IsOk s := (interval_list_invariant s = true /\ is_encoded_elems_list (elementsZ s)). (** *** Defining notations *) @@ -453,7 +651,6 @@ Module Raw (Enc : ElementEncode). } Qed. - Lemma elementsZ_single_succ_front : forall x c, elementsZ_single x (N.succ c) = x :: elementsZ_single (Z.succ x) c. @@ -471,32 +668,23 @@ Module Raw (Enc : ElementEncode). induction c as [| c' IH] using N.peano_ind. { intros y x. rewrite elementsZ_single_base Z.add_0_r /=. - split; first done. - move => [H_x_le H_y_lt]. - have := Z.le_lt_trans _ _ _ H_x_le H_y_lt. - apply Z.lt_irrefl. + omega. } { intros y x. rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r. split. { - move => []. { - move => [H_x_le H_y_le]. - split; first done. - by apply Z.lt_le_incl. - } - move => [] // <-. - split. { - apply Z_le_add_r. + move => [ | []] //. { + move => [H_x_le H_y_le]. + omega. } { - by apply Z.le_refl. + move => <-. + split. + - by apply Z_le_add_r. + - by apply Z.le_refl. } } { move => [H_x_le] H_y_lt. - apply Z.lt_eq_cases in H_y_lt as [H_y_lt | <-]. { - by left. - } { - by right; left. - } + omega. } } Qed. @@ -506,13 +694,8 @@ Module Raw (Enc : ElementEncode). (x = y). Proof. intros y x. - rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r. - split. { - move => [? ?]. by apply Z.le_antisymm. - } { - move => ->. - split; apply Z.le_refl. - } + rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r. + omega. Qed. Lemma length_elementsZ_single : forall cx x, @@ -625,6 +808,83 @@ Module Raw (Enc : ElementEncode). rewrite !rev_map_alt_def map_app rev_app_distr map_rev rev_involutive //. Qed. + Lemma elementsZ_app : forall (s1 s2 : t), elementsZ (s1 ++ s2) = + ((elementsZ s2) ++ (elementsZ s1)). + Proof. + induction s1 as [| [x1 c1] s1 IH1]. { + move => s2. + rewrite elementsZ_nil app_nil_r //. + } + move => s2. + rewrite -app_comm_cons !elementsZ_cons IH1 -app_assoc //. + Qed. + + Lemma InZ_nil : forall y, InZ y nil <-> False. + Proof. + intro y. + done. + Qed. + + Lemma InZ_cons : forall y x c s, InZ y (((x, c) :: s) : t) <-> + List.In y (elementsZ_single x c) \/ InZ y s. + Proof. + intros y x c s. + rewrite /InZ elementsZ_cons in_app_iff -in_rev. + firstorder. + Qed. + + Lemma InZ_app : forall s1 s2 y, + InZ y (s1 ++ s2) <-> InZ y s1 \/ InZ y s2. + Proof. + intros s1 s2 y. + rewrite /InZ elementsZ_app in_app_iff. + tauto. + Qed. + + Lemma InZ_rev : forall s y, + InZ y (List.rev s) <-> InZ y s. + Proof. + intros s x. + rewrite /InZ. + induction s as [| [y c] s' IH]; first done. + simpl. + rewrite elementsZ_app in_app_iff IH. + rewrite !elementsZ_cons !in_app_iff elementsZ_nil + -!in_rev /=. + tauto. + Qed. + + Lemma In_elementsZ_single_dec : forall y x c, + {List.In y (elementsZ_single x c)} + + {~ List.In y (elementsZ_single x c)}. + Proof. + intros y x c. + case (Z_le_dec x y); last first. { + right; rewrite In_elementsZ_single; tauto. + } + case (Z_lt_dec y (x + Z.of_N c)); last first. { + right; rewrite In_elementsZ_single; tauto. + } + left; rewrite In_elementsZ_single; tauto. + Qed. + + Lemma InZ_dec : forall y s, + {InZ y s} + {~InZ y s}. + Proof. + intros y. + induction s as [| [x c] s IH]. { + by right. + } + move : IH => [] IH. { + by left; rewrite InZ_cons; right. + } + case (In_elementsZ_single_dec y x c). { + by left; rewrite InZ_cons; left. + } { + by right; rewrite InZ_cons; tauto. + } + Qed. + Lemma In_elementsZ_single_hd : forall (c : N) x, (c <> 0)%N -> List.In x (elementsZ_single x c). Proof. intros c x H_c_neq. @@ -640,274 +900,248 @@ Module Raw (Enc : ElementEncode). Qed. - (** *** Alternative definition of addZ *) - - (** [addZ] is defined with efficient execution in mind. - We derive first an alternative definition that demonstrates - the intention better and is better suited for proofs. *) - Lemma addZ_ind : - forall (P : Z -> list (Z * N) -> Prop), - (* case s = nil *) - (forall (x : Z), P x nil) -> - - (* case s = [y, c] :: l, compare (x+1) y = Eq *) - (forall (x : Z) (l : list (Z * N)) (c : N), - P x ((x + 1, c) :: l)) -> - - (* case s = [y, c] :: l, compare (x+1) y = Lt *) - (forall (x : Z) (l : list (Z * N)) (y : Z) (c : N), - (x + 1 ?= y) = Lt -> - P x ((y, c) :: l)) -> - - (* case s = [y, c] :: l, compare (x+1) y = Gt, compare x (y+c) = Eq, - l = nil *) - (forall (y : Z) (c : N), - ((y + Z.of_N c) + 1 ?= y) = Gt -> - P (y + Z.of_N c) ((y, c) :: nil)) -> - - (* case s = (y, c) :: (z, c') :: l, compare (x+1) y = Gt, compare x (y+c) = Eq, - (z = x + 1) *) - (forall (l : list (Z * N)) (y : Z) (c c' : N), - ((y + Z.of_N c) + 1 ?= y) = Gt -> - (P (y+Z.of_N c) l) -> - P (y+Z.of_N c) ((y, c) :: (((y+Z.of_N c) + 1, c') :: l))) -> - - (* case s = (y, c) :: (z, c') :: l, compare (x+1) y = Gt, compare x (y+c) = Eq, - (z <> x + 1) *) - (forall (l : list (Z * N)) (y : Z) (c : N) (z : Z) (c' : N), - ((y + Z.of_N c) + 1 ?= y) = Gt -> - (z =? (y+Z.of_N c) + 1) = false -> - (P (y+Z.of_N c) ((y, c) :: (z, c') :: l))) -> - - - (* case s = (y, c) :: l, compare (x+1) y = Gt, compare x (y+c) = Lt *) - (forall (x : Z) (l : list (Z * N)) (y : Z) (c : N), - (x + 1 ?= y) = Gt -> - (x ?= y + Z.of_N c) = Lt -> - P x ((y, c) :: l)) -> - - (* case s = (y, c) :: l, compare (x+1) y = Gt, compare x (y+c) = Lt *) - (forall (x : Z)(l : list (Z * N)) (y : Z) (c : N), - (x + 1 ?= y) = Gt -> - (x ?= y + (Z.of_N c)) = Gt -> - (P x l) -> - P x ((y, c) :: l)) -> - - - forall (x : Z) (s : list (Z * N)), - P x s. - Proof. - intros P H1 H2 H3 H4 H5 H6 H7 H8. - move => x s. - remember (length s) as n. - revert s Heqn. - induction n as [n IH] using Wf_nat.lt_wf_ind. - case. { - move => _. apply H1. - } { - move => [y c] s' H_n. - simpl in H_n. - have IH_s': (P x s'). { - apply (IH (length s')) => //. - rewrite H_n //. - } - case_eq (x + 1 ?= y). { - move => /Z.compare_eq_iff <-. - apply H2. - } { - move => H_x1y_comp. - by apply H3. + (** *** comparing intervals *) + + Ltac Z_named_compare_cases H := match goal with + | [ |- context [Z.compare ?z1 ?z2] ] => + case_eq (Z.compare z1 z2); [move => /Z.compare_eq_iff | move => /Z.compare_lt_iff | move => /Z.compare_gt_iff]; move => H // + end. + + Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H. + + Lemma interval_compare_elim : forall (y1 : Z) (c1 : N) (y2 : Z) (c2 : N), + match (interval_compare (y1, c1) (y2, c2)) with + | ICR_before => (y1 + Z.of_N c1) < y2 + | ICR_before_touch => (y1 + Z.of_N c1) = y2 + | ICR_after => (y2 + Z.of_N c2) < y1 + | ICR_after_touch => (y2 + Z.of_N c2) = y1 + | ICR_equal => (y1 = y2) /\ (c1 = c2) + | ICR_overlap_before => (y1 < y2) /\ (y2 < y1 + Z.of_N c1) /\ (y1 + Z.of_N c1 < y2 + Z.of_N c2) + | ICR_overlap_after => (y2 < y1) /\ (y1 < y2 + Z.of_N c2) /\ (y2 + Z.of_N c2 < y1 + Z.of_N c1) + | ICR_subsume_1 => (y2 <= y1) /\ (y1 + Z.of_N c1 <= y2 + Z.of_N c2) /\ (y2 < y1 \/ y1 + Z.of_N c1 < y2 + Z.of_N c2) + | ICR_subsume_2 => (y1 <= y2) /\ (y2 + Z.of_N c2 <= y1 + Z.of_N c1) /\ (y1 < y2 \/ y2 + Z.of_N c2 < y1 + Z.of_N c1) + end. + Proof. + intros y1 c1 y2 c2. + rewrite /interval_compare. + (repeat Z_compare_cases); subst; repeat split; + try (by apply Z.eq_le_incl); + try (by apply Z.lt_le_incl); + try (by left); try (by right). + + apply Z.add_reg_l in H2. + by apply N2Z.inj. + Qed. + + Lemma interval_compare_swap : forall (y1 : Z) (c1 : N) (y2 : Z) (c2 : N), + (c1 <> 0%N) \/ (c2 <> 0%N) -> + interval_compare (y2, c2) (y1, c1) = + match (interval_compare (y1, c1) (y2, c2)) with + | ICR_before => ICR_after + | ICR_before_touch => ICR_after_touch + | ICR_after => ICR_before + | ICR_after_touch => ICR_before_touch + | ICR_equal => ICR_equal + | ICR_overlap_before => ICR_overlap_after + | ICR_overlap_after => ICR_overlap_before + | ICR_subsume_1 => ICR_subsume_2 + | ICR_subsume_2 => ICR_subsume_1 + end. + Proof. + intros y1 c1 y2 c2 H_c12_neq_0. + rewrite /interval_compare. + move : (Z.compare_antisym y1 y2) => ->. + move : (Z.compare_antisym (y1 + Z.of_N c1) (y2 + Z.of_N c2)) => ->. + have H_suff : y1 + Z.of_N c1 <= y2 -> y2 + Z.of_N c2 <= y1 -> False. { + move => H1 H2. + case H_c12_neq_0 => H_c_neq_0. { + suff : (y1 + Z.of_N c1 <= y1). { + apply Z.nle_gt. + by apply Z_lt_add_r. + } + eapply Z.le_trans; eauto. + eapply Z.le_trans; eauto. + apply Z_le_add_r. } { - move => H_x1y_comp. - case_eq (x ?= y + Z.of_N c). { - move => H_x_eqb. - move : (H_x_eqb) => /Z.compare_eq_iff H_x_eq. - case_eq s'. { - move => _. - rewrite H_x_eq. - apply H4. - rewrite -H_x1y_comp H_x_eq //. - } { - move => [z c'] l H_s'. - have IH_l: (P x l). { - apply (IH (length l)) => //. - rewrite H_n H_s' /=. - apply Lt.lt_trans with (m := S (length l)) => //. - } - case_eq (z =? x + 1). { - move => /Z.eqb_eq ->. - rewrite H_x_eq. - apply H5. { - rewrite -H_x1y_comp H_x_eq //. - } { - rewrite -H_x_eq. - apply IH_l. - } - } { - move => H_z_neq. - rewrite H_x_eq. - eapply H6 => //; rewrite -H_x_eq //. - } - } - } { - by apply H7. - } { - move => H_x_gt. - apply H8 => //. + suff : (y2 + Z.of_N c2 <= y2). { + apply Z.nle_gt. + by apply Z_lt_add_r. } + eapply Z.le_trans; eauto. + eapply Z.le_trans; eauto. + apply Z_le_add_r. } } - Qed. - - Lemma addZ_aux_alt_def : forall x s acc, - addZ_aux acc x s = (List.rev acc) ++ addZ x s. - Proof. - move => ? ?. - eapply addZ_ind with (P := (fun x s => forall acc, addZ_aux acc x s = rev acc ++ addZ x s)); clear. { - intros x acc. - rewrite /addZ_aux /rev' -rev_alt //. + repeat Z_compare_cases. { + exfalso; apply H_suff. + - by rewrite H; apply Z.le_refl. + - by rewrite H0; apply Z.le_refl. } { - intros x l c acc. - rewrite /addZ /= Z.compare_refl rev_append_rev //. + exfalso; apply H_suff. + - by rewrite H; apply Z.le_refl. + - by apply Z.lt_le_incl. } { - intros x l y c H_y_lt acc. - rewrite /addZ /= H_y_lt rev_append_rev //. + exfalso; apply H_suff. + - by apply Z.lt_le_incl. + - by rewrite H0; apply Z.le_refl. } { - intros y c H_y_comp acc. - rewrite /addZ /= H_y_comp Z.compare_refl /rev' -rev_alt //. - } { - intros l y c c' H_y_comp IH acc. - rewrite /addZ /= H_y_comp Z.compare_refl Z.eqb_refl. - rewrite rev_append_rev //. - } { - intros l y c z c' H_y_comp H_z_comp acc. - rewrite /addZ /= H_y_comp Z.compare_refl H_z_comp. - rewrite rev_append_rev /= //. - } { - intros x l y c H_y_comp H_x_comp acc. - rewrite /addZ /= H_x_comp H_y_comp rev_append_rev //. - } { - intros x l y c H_y_comp H_x_comp IH acc. - rewrite /addZ /= H_x_comp H_y_comp. - rewrite !IH /= -app_assoc //. + exfalso; apply H_suff. + - by apply Z.lt_le_incl. + - by apply Z.lt_le_incl. } Qed. - - Lemma addZ_alt_def : forall x s, - addZ x s = - match s with - | nil => (x, 1%N)::nil - | (y, c) :: l => - match (Z.compare (x+1) y) with - | Lt => (x, 1%N)::s - | Eq => (x, (c+1)%N)::l - | Gt => match (Z.compare x (y+Z.of_N c)) with - | Lt => s - | Gt => (y,c) :: addZ x l - | Eq => match l with - | nil => (y, (c+1)%N)::nil - | (z, c') :: l' => if (Z.eqb z (x + 1)) then - (y, (c + c' + 1)%N) :: l' - else - (y,(c+1)%N) :: (z, c') :: l' - end - end - end + + Lemma interval_1_compare_alt_def : forall (y : Z) (i : (Z * N)), + interval_1_compare y i = match (interval_compare (y, (1%N)) i) with + | ICR_equal => ICR_subsume_1 + | ICR_subsume_1 => ICR_subsume_1 + | ICR_subsume_2 => ICR_subsume_1 + | r => r end. Proof. - intros x s. - rewrite /addZ Z.add_1_r. - case s => //. - move => [y c] s' /=. - case (Z.succ x ?= y). { - rewrite N.add_1_r //. - } { - reflexivity. - } { - case (x ?= y+ Z.of_N c) => //. { - rewrite !N.add_1_r. - case s' => //. - move => [z c'] s'' //. - rewrite !N.add_1_r //. - } { - rewrite addZ_aux_alt_def //. - } + move => y1 [y2 c2]. + rewrite /interval_1_compare /interval_compare. + replace (y1 + Z.of_N 1) with (Z.succ y1); last done. + repeat Z_compare_cases. { + contradict H1. + by apply Zle_not_lt, Zlt_succ_le. + } { + contradict H. + by apply Zle_not_lt, Zlt_succ_le. } Qed. - - - (** *** Alternative definition of removeZ *) - (** [removeZ] is defined with efficient execution in mind. - We derive first an alternative definition that demonstrates - the intention better and is better suited for proofs. *) - - Lemma removeZ_aux_alt_def : forall s x acc, - removeZ_aux acc x s = (List.rev acc) ++ removeZ x s. + Lemma interval_1_compare_elim : forall (y1 : Z) (y2 : Z) (c2 : N), + match (interval_1_compare y1 (y2, c2)) with + | ICR_before => Z.succ y1 < y2 + | ICR_before_touch => y2 = Z.succ y1 + | ICR_after => (y2 + Z.of_N c2) < y1 + | ICR_after_touch => (y2 + Z.of_N c2) = y1 + | ICR_equal => False + | ICR_overlap_before => False + | ICR_overlap_after => False + | ICR_subsume_1 => (c2 = 0%N) \/ ((y2 <= y1) /\ (y1 < y2 + Z.of_N c2)) + | ICR_subsume_2 => False + end. Proof. - induction s as [| [y c] s' IH]. { - intros x acc. - rewrite /removeZ /removeZ_aux /= app_nil_r /rev' -rev_alt //. + intros y1 y2 c2. + move : (interval_compare_elim y1 (1%N) y2 c2). + rewrite interval_1_compare_alt_def. + have H_succ: forall z, z + Z.of_N 1 = Z.succ z by done. + + case_eq (interval_compare (y1, 1%N) (y2, c2)) => H_comp; + rewrite ?H_succ ?Z.lt_succ_r ?Z.le_succ_l //. { + move => [H_lt] [H_le] _. + contradict H_lt. + by apply Zle_not_lt. + } { + move => [_] [H_lt] H_le. + contradict H_lt. + by apply Zle_not_lt. } { - intros x acc. - rewrite /removeZ /removeZ_aux -/removeZ_aux. - case (x [->] <-. + rewrite ?Z.lt_succ_r. + right. + split; apply Z.le_refl. + } { + tauto. + } { + case (N.zero_or_succ c2). { + move => -> _; by left. } { - case (x [c2'] ->. + rewrite !N2Z.inj_succ Z.add_succ_r -Z.succ_le_mono Z.le_succ_l. + move => [H_y1_le] [H_le_y1]. + suff -> : y1 = y2. { + move => [] H_pre; contradict H_pre. { + apply Z.lt_irrefl. + } { + apply Zle_not_lt, Z_le_add_r. + } } + apply Z.le_antisymm => //. + eapply Z.le_trans; last apply H_le_y1. + apply Z_le_add_r. } } Qed. - - Lemma removeZ_alt_def : forall x s, - removeZ x s = + + (** *** Alternative definition of addZ *) + Lemma addZ_aux_alt_def : forall x s acc, + addZ_aux acc x s = (List.rev acc) ++ addZ x s. + Proof. + intros y1 s. + unfold addZ. + induction s as [| [y2 c2] s' IH] => acc. { + rewrite /addZ_aux /addZ /= /rev' !rev_append_rev /= app_nil_r //. + } { + unfold addZ_aux. + case (interval_1_compare y1 (y2, c2)); fold addZ_aux; + rewrite ?rev_append_rev /= ?app_assoc_reverse //. + rewrite (IH ((y2,c2)::acc)) (IH ((y2,c2)::nil)). + rewrite /= app_assoc_reverse //. + } + Qed. + + Lemma addZ_alt_def : forall x s, + addZ x s = match s with - | nil => nil + | nil => (x, (1%N))::nil | (y, c) :: l => - if (Z.ltb x y) then s else - if (Z.ltb x (y+Z.of_N c)) then ( - (removeZ_aux_insert_guarded y (Z.to_N (x-y)) - (removeZ_aux_insert_guarded (Z.succ x) (Z.to_N ((y+Z.of_N c)- (Z.succ x))) l)) - ) else (y, c) :: removeZ x l + match (interval_1_compare x (y,c)) with + | ICR_before => (x, (1%N))::s + | ICR_before_touch => (x, N.succ c)::l + | ICR_after => (y,c)::(addZ x l) + | ICR_after_touch => insert_interval_begin y (N.succ c) l + | _ => (y, c)::l + end end. Proof. intros x s. - rewrite /removeZ /=. + rewrite /addZ. case s => //. - move => [y c] s' /=. - case(x //. - case(x //. - } { - rewrite removeZ_aux_alt_def //. - } + move => [y c] s'. + unfold addZ_aux. + case (interval_1_compare x (y, c)); fold addZ_aux; + rewrite ?rev_append_rev /= ?app_assoc_reverse //. + rewrite addZ_aux_alt_def //. Qed. - + + (** *** Auxiliary Lemmata about Invariant *) - Lemma inf_impl : forall x y s, - (y <= x) -> inf x s = true -> inf y s = true. + Lemma interval_list_elements_greater_cons : forall z x c s, + interval_list_elements_greater z ((x, c) :: s) = true <-> + (z < x). + Proof. + intros z x c s. + rewrite /=. + apply Z.ltb_lt. + Qed. + + Lemma interval_list_elements_greater_impl : forall x y s, + (y <= x) -> + interval_list_elements_greater x s = true -> + interval_list_elements_greater y s = true. Proof. intros x y s. case s => //. move => [z c] s'. - rewrite /inf. + rewrite /interval_list_elements_greater. move => H_y_leq /Z.ltb_lt H_x_lt. apply Z.ltb_lt. eapply Z.le_lt_trans; eauto. Qed. + Lemma interval_list_invariant_nil : interval_list_invariant nil = true. + Proof. + by []. + Qed. + Lemma Ok_nil : Ok nil <-> True. Proof. - rewrite /Ok /IsOk /isok /is_encoded_elems_list //. + rewrite /Ok /IsOk /interval_list_invariant /is_encoded_elems_list //. Qed. Lemma is_encoded_elems_list_app : forall l1 l2, @@ -934,10 +1168,12 @@ Module Raw (Enc : ElementEncode). ). Qed. - Lemma isok_cons : forall y c s', isok ((y, c) :: s') = true <-> - (inf (y+Z.of_N c) s' = true /\ ((c <> 0)%N) /\ isok s' = true). + Lemma interval_list_invariant_cons : forall y c s', + interval_list_invariant ((y, c) :: s') = true <-> + (interval_list_elements_greater (y+Z.of_N c) s' = true /\ + ((c <> 0)%N) /\ interval_list_invariant s' = true). Proof. - rewrite /isok -/isok. + rewrite /interval_list_invariant -/interval_list_invariant. intros y c s'. rewrite !Bool.andb_true_iff negb_true_iff. split. { @@ -947,148 +1183,318 @@ Module Raw (Enc : ElementEncode). } Qed. + Lemma interval_list_invariant_sing : forall x c, + interval_list_invariant ((x, c)::nil) = true <-> (c <> 0)%N. + Proof. + intros x c. + rewrite interval_list_invariant_cons. + split; tauto. + Qed. + Lemma Ok_cons : forall y c s', Ok ((y, c) :: s') <-> - (inf (y+Z.of_N c) s' = true /\ ((c <> 0)%N) /\ + (interval_list_elements_greater (y+Z.of_N c) s' = true /\ ((c <> 0)%N) /\ is_encoded_elems_list (elementsZ_single y c) /\ Ok s'). Proof. intros y c s'. - rewrite /Ok /IsOk isok_cons elementsZ_cons is_encoded_elems_list_app + rewrite /Ok /IsOk interval_list_invariant_cons elementsZ_cons is_encoded_elems_list_app is_encoded_elems_list_rev. tauto. Qed. Lemma Nin_elements_greater : forall s y, - inf y s = true -> - isok s = true -> - forall x, x <= y -> - ~(InZ x s). + interval_list_elements_greater y s = true -> + interval_list_invariant s = true -> + forall x, x <= y -> ~(InZ x s). Proof. induction s as [| [z c] s' IH]. { intros y _ _ x _. - done. + by simpl. } { - rewrite /inf. - move => y /Z.ltb_lt H_y_lt /isok_cons [H_inf'] [H_c] H_s' x H_x_le. - rewrite /InZ elementsZ_cons in_app_iff -!in_rev In_elementsZ_single. - move => []. { - eapply IH; eauto. - apply Z.le_trans with (m := z). { - eapply Z.lt_le_incl. - eapply Z.le_lt_trans; eauto. - } { - apply Z_le_add_r. - } - } { + move => y /interval_list_elements_greater_cons H_y_lt + /interval_list_invariant_cons [H_gr] [H_c] H_s' + x H_x_le. + rewrite InZ_cons In_elementsZ_single. + have H_x_lt : x < z by eapply Z.le_lt_trans; eauto. + + move => []. { move => [H_z_leq] _; contradict H_z_leq. - apply Z.nle_gt. - eapply Z.le_lt_trans; eauto. + by apply Z.nle_gt. + } { + eapply IH; eauto. + by apply Z_lt_le_add_r. } } Qed. - Lemma isok_inf_nin : + Lemma Nin_elements_greater_equal : forall x s, - isok s = true -> - inf x s = true -> + interval_list_elements_greater x s = true -> + interval_list_invariant s = true -> ~ (InZ x s). Proof. - move => x. - induction s as [| [y c] s' IH]. { - move => _ _. - rewrite /InZ elementsZ_nil //. - } { - rewrite isok_cons. - move => [H_inf] [_] H_ok_s' /Z.ltb_lt H_x_lt_y. - rewrite /InZ elementsZ_cons in_app_iff -in_rev In_elementsZ_single Z.le_ngt. - suff : inf x s' = true by tauto. - eapply inf_impl; last apply H_inf. - apply Z.le_trans with (m := y). { - by apply Z.lt_le_incl. - } { - by apply Z_le_add_r. - } - } + move => x s H_inv H_gr. + apply (Nin_elements_greater s x) => //. + apply Z.le_refl. Qed. - (** *** Properties of In and InZ *) + Lemma interval_list_elements_greater_alt_def : forall s y, + interval_list_invariant s = true -> - Lemma In_alt_def : forall x s, Ok s -> - (In x s <-> List.In x (elements s)). + (interval_list_elements_greater y s = true <-> + (forall x, x <= y -> ~(InZ x s))). Proof. - intros x s H_ok. - rewrite /In InA_alt /elements rev_map_alt_def. + intros s y H_inv. split. { - move => [y] [H_y_eq]. - rewrite -!in_rev !in_map_iff. - move => [x'] [H_y_eq'] H_x'_in. - suff H_x'_eq : (Enc.encode x = x'). { - exists x'. - split => //. - rewrite -H_x'_eq Enc.decode_encode_ok //. - } - have H_enc_list : is_encoded_elems_list (elementsZ s). { - move : H_ok. - rewrite /Ok /IsOk => [] [] //. - } - move : (H_enc_list _ H_x'_in) => [x''] H_x'_eq. - move : H_y_eq'. - rewrite -!H_x'_eq Enc.decode_encode_ok => H_y_eq'. - subst. - suff -> : Z.eq (Enc.encode x) (Enc.encode y) by done. - by rewrite Enc.encode_eq. + move => H_gr. + apply Nin_elements_greater => //. } { - move => H_enc_in. - exists x. - split => //. - apply Enc.E.eq_equiv. + move : H_inv. + case s as [| [x2 c] s'] => //. + rewrite interval_list_invariant_cons interval_list_elements_greater_cons. + move => [_] [H_c_neq] _ H. + apply Z.nle_gt => H_ge. + apply (H x2) => //. + rewrite InZ_cons; left. + apply In_elementsZ_single_hd => //. } Qed. - Lemma In_InZ : forall x s, Ok s -> - (In x s <-> InZ (Enc.encode x) s). + Lemma interval_list_elements_greater_alt2_def : forall s y, + interval_list_invariant s = true -> + + (interval_list_elements_greater y s = true <-> + (forall x, InZ x s -> y < x)). Proof. - intros x s H_ok. - rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff. - split; last first. { - exists (Enc.encode x). - by rewrite Enc.decode_encode_ok. - } - move => [y] [<-] H_y_in. - suff : exists z, (Enc.encode z = y). { - move => [z] H_y_eq. - move : H_y_in. - by rewrite -!H_y_eq Enc.decode_encode_ok. - } + intros s y H. + rewrite interval_list_elements_greater_alt_def //. + firstorder. + apply Z.nle_gt. + move => H_lt. + eapply H0; eauto. + Qed. + + Lemma interval_list_elements_greater_intro : forall s y, + interval_list_invariant s = true -> + (forall x, InZ x s -> y < x) -> + interval_list_elements_greater y s = true. + Proof. + intros s y H1 H2. + rewrite interval_list_elements_greater_alt2_def //. + Qed. + + Lemma interval_list_elements_greater_app_elim_1 : forall s1 s2 y, + interval_list_elements_greater y (s1 ++ s2) = true -> + interval_list_elements_greater y s1 = true. + Proof. + intros s1 s2 y. + case s1 => //. + Qed. + + Lemma interval_list_invariant_app_intro : forall s1 s2, + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2) -> + interval_list_invariant (s1 ++ s2) = true. + Proof. + induction s1 as [| [y1 c1] s1' IH]. { + move => s2 _ //. + } { + move => s2. + rewrite -app_comm_cons !interval_list_invariant_cons. + move => [H_gr] [H_c1_neq] H_inv_s1' H_inv_s2 H_inz_s2. + split; last split. { + move : H_gr H_inz_s2. + case s1' as [| [y1' c1'] s1'']; last done. + move => _ H_inz_s2. + rewrite app_nil_l. + apply interval_list_elements_greater_intro => //. + move => x H_x_in_s2. + suff H_inz : InZ (Z.pred (y1 + Z.of_N c1)) ((y1, c1) :: nil). { + move : (H_inz_s2 _ _ H_inz H_x_in_s2). + by rewrite Z.succ_pred. + } + rewrite InZ_cons In_elementsZ_single -Z.lt_le_pred; left. + split. { + by apply Z_lt_add_r. + } { + apply Z.lt_pred_l. + } + } { + assumption. + } { + apply IH => //. + intros x1 x2 H_in_x1 H_in_x2. + apply H_inz_s2 => //. + rewrite InZ_cons; by right. + } + } + Qed. + + + Lemma interval_list_invariant_app_elim : forall s1 s2, + interval_list_invariant (s1 ++ s2) = true -> + interval_list_invariant s1 = true /\ + interval_list_invariant s2 = true /\ + (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2). + Proof. + move => s1 s2. + induction s1 as [| [y1 c1] s1' IH]; first done. + rewrite -app_comm_cons !interval_list_invariant_cons. + + move => [H_gr] [H_c1_neq_0] /IH [H_inv_s1'] [H_inv_s2] H_in_s1'_s2. + repeat split; try assumption. { + move : H_gr. + case s1'; first done. + move => [y2 c2] s1''. + rewrite interval_list_elements_greater_cons //. + } { + move => x1 x2. + rewrite InZ_cons In_elementsZ_single. + move => []; last by apply H_in_s1'_s2. + move => [] H_y1_le H_x1_lt H_x2_in. + move : H_gr. + rewrite interval_list_elements_greater_alt2_def; last first. { + by apply interval_list_invariant_app_intro. + } + move => H_in_s12'. + have : (y1 + Z.of_N c1 < x2). { + apply H_in_s12'. + rewrite InZ_app. + by right. + } + move => H_lt_x2. + apply Z.le_lt_trans with (m := y1 + Z.of_N c1) => //. + by apply Zlt_le_succ. + } + Qed. + + Lemma interval_list_invariant_app_iff : forall s1 s2, + interval_list_invariant (s1 ++ s2) = true <-> + (interval_list_invariant s1 = true /\ + interval_list_invariant s2 = true /\ + (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2)). + Proof. + intros s1 s2. + split. { + by apply interval_list_invariant_app_elim. + } { + move => [] H_inv_s1 []. + by apply interval_list_invariant_app_intro. + } + Qed. + + Lemma interval_list_invariant_snoc_intro : forall s1 y2 c2, + interval_list_invariant s1 = true -> + (c2 <> 0)%N -> + (forall x, InZ x s1 -> Z.succ x < y2) -> + interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true. + Proof. + intros s1 y2 c2 H_inv_s1 H_c2_neq H_in_s1. + apply interval_list_invariant_app_intro => //. { + rewrite interval_list_invariant_cons; done. + } { + intros x1 x2 H_in_x1. + rewrite InZ_cons. + move => [] //. + rewrite In_elementsZ_single. + move => [H_y2_le] _. + eapply Z.lt_le_trans; eauto. + } + Qed. + + + (** *** Properties of In and InZ *) + + Lemma In_alt_def : forall x s, Ok s -> + (In x s <-> List.In x (elements s)). + Proof. + intros x s H_ok. + rewrite /In InA_alt /elements rev_map_alt_def. + split. { + move => [y] [H_y_eq]. + rewrite -!in_rev !in_map_iff. + move => [x'] [H_y_eq'] H_x'_in. + suff H_x'_eq : (Enc.encode x = x'). { + exists x'. + split => //. + rewrite -H_x'_eq Enc.decode_encode_ok //. + } + have H_enc_list : is_encoded_elems_list (elementsZ s). { + move : H_ok. + rewrite /Ok /IsOk => [] [] //. + } + move : (H_enc_list _ H_x'_in) => [x''] H_x'_eq. + move : H_y_eq'. + rewrite -!H_x'_eq Enc.decode_encode_ok => H_y_eq'. + subst. + suff -> : Z.eq (Enc.encode x) (Enc.encode y) by done. + by rewrite Enc.encode_eq. + } { + move => H_enc_in. + exists x. + split => //. + apply Enc.E.eq_equiv. + } + Qed. + + Lemma In_InZ : forall x s, Ok s -> + (In x s <-> InZ (Enc.encode x) s). + Proof. + intros x s H_ok. + rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff. + split; last first. { + exists (Enc.encode x). + by rewrite Enc.decode_encode_ok. + } + move => [y] [<-] H_y_in. + suff : exists z, (Enc.encode z = y). { + move => [z] H_y_eq. + move : H_y_in. + by rewrite -!H_y_eq Enc.decode_encode_ok. + } suff H_enc_list : is_encoded_elems_list (elementsZ s). { by apply H_enc_list. } apply H_ok. Qed. + Lemma InZ_In : forall x s, Ok s -> + (InZ x s -> In (Enc.decode x) s). + Proof. + intros x s H_ok. + rewrite In_InZ /InZ. + move : H_ok. + rewrite /Ok /IsOk /is_encoded_elems_list. + move => [_] H_enc. + move => H_in. + move : (H_enc _ H_in) => [e] H_x. + subst. + by rewrite Enc.decode_encode_ok. + Qed. + (** *** Membership specification *) Lemma memZ_spec : - forall (s : t) (x : Z) (Hs : Ok s), memZ x s = true <-> InZ x s. + forall (s : t) (x : Z) (Hs : Ok s), memZ x s = true <-> InZ x s. Proof. induction s as [| [y c] s' IH]. { intros x _. rewrite /InZ elementsZ_nil //. } { move => x /Ok_cons [H_inf] [H_c] [H_is_enc] H_s'. - rewrite /InZ /memZ elementsZ_cons -/mem. - rewrite /isok -/isok in_app_iff -!in_rev In_elementsZ_single. + rewrite /InZ /memZ elementsZ_cons -/memZ. + rewrite in_app_iff -!in_rev In_elementsZ_single. case_eq (x /Z.ltb_lt H_x_lt. split; first done. move => []. { move => H_x_in; contradict H_x_in. - eapply Nin_elements_greater; eauto; first apply H_s'. - apply Z.le_trans with (m := y). { - by apply Z.lt_le_incl. + apply Nin_elements_greater with (y := (y + Z.of_N c)) => //. { + apply H_s'. } { - apply Z_le_add_r. + apply Z_lt_le_add_r => //. } } { move => [H_y_le]; contradict H_y_le. @@ -1120,201 +1526,345 @@ Module Raw (Enc : ElementEncode). rewrite /mem memZ_spec In_InZ //. Qed. + Lemma merge_interval_size_neq_0 : forall x1 c1 x2 c2, + (c1 <> 0%N) -> + (merge_interval_size x1 c1 x2 c2 <> 0)%N. + Proof. + intros x1 c1 x2 c2. + rewrite /merge_interval_size !N.neq_0_lt_0 N.max_lt_iff. + by left. + Qed. - (** *** add specification *) - Lemma addZ_spec : - forall (s : t) (x y : Z) (Hs : Ok s), - InZ y (addZ x s) <-> Z.eq y x \/ InZ y s. - Proof. - intros s x y. - eapply addZ_ind with (P := (fun (x:Z) s => Ok s -> (InZ y (addZ x s) <-> Z.eq y x \/ InZ y s))); clear s x. { - move => x _. - rewrite /InZ addZ_alt_def elementsZ_cons elementsZ_nil app_nil_l -in_rev - In_elementsZ_single1 /=. - firstorder. - } { - intros x l c _. - rewrite /InZ addZ_alt_def Z.compare_refl !elementsZ_cons !in_app_iff -!in_rev N.add_1_r - Z.add_1_r !In_elementsZ_single N2Z.inj_succ Z.add_succ_l - Z.add_succ_r Z.le_succ_l Z.lt_succ_r. - split. { - move => []; first by tauto. - move => [] /Z.lt_eq_cases. - firstorder. + + (** *** insert if length not 0 *) + + Lemma interval_list_invariant_insert_intervalZ_guarded : forall x c s, + interval_list_invariant s = true -> + interval_list_elements_greater (x + Z.of_N c) s = true -> + interval_list_invariant (insert_intervalZ_guarded x c s) = true. + Proof. + intros x c s. + rewrite /insert_intervalZ_guarded. + case_eq (c =? 0)%N => //. + move => /N.eqb_neq. + rewrite interval_list_invariant_cons. + tauto. + Qed. + + Lemma interval_list_elements_greater_insert_intervalZ_guarded : forall x c y s, + interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true <-> + (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)). + Proof. + intros x c y s. + rewrite /insert_intervalZ_guarded. + case (c =? 0)%N => //. + rewrite /interval_list_elements_greater Z.ltb_lt //. + Qed. + + Lemma insert_intervalZ_guarded_app : forall x c s1 s2, + (insert_intervalZ_guarded x c s1) ++ s2 = + insert_intervalZ_guarded x c (s1 ++ s2). + Proof. + intros x c s1 s2. + rewrite /insert_intervalZ_guarded. + case (N.eqb c 0) => //. + Qed. + + Lemma insert_intervalZ_guarded_rev_nil_app : forall x c s, + rev (insert_intervalZ_guarded x c nil) ++ s = + insert_intervalZ_guarded x c s. + Proof. + intros x c s. + rewrite /insert_intervalZ_guarded. + case (N.eqb c 0) => //. + Qed. + +Lemma elementsZ_insert_intervalZ_guarded : forall x c s, + elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s). + Proof. + intros x c s. + rewrite /insert_intervalZ_guarded. + case_eq (c =? 0)%N => //. + move => /N.eqb_eq ->. + rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //. + Qed. + + Lemma InZ_insert_intervalZ_guarded : forall y x c s, + InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s). + Proof. + intros y x c s. + rewrite /InZ elementsZ_insert_intervalZ_guarded //. + Qed. + + (** *** Merging intervals *) + + Lemma merge_interval_size_add : forall x c1 c2, + (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N. + Proof. + intros x c1 c2. + rewrite /merge_interval_size. + replace (x + Z.of_N c1 + Z.of_N c2 - x) with + (Z.of_N c1 + Z.of_N c2) by omega. + rewrite -N2Z.inj_add N2Z.id. + apply N.max_r, N.le_add_r. + Qed. + + Lemma merge_interval_size_eq_max : forall y1 c1 y2 c2, + y1 <= y2 + Z.of_N c2 -> + y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) = + Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2). + Proof. + intros y1 c1 y2 c2 H_y1_le. + rewrite /merge_interval_size N2Z.inj_max Z2N.id; last first. { + by apply Zle_minus_le_0. + } + rewrite -Z.add_max_distr_l. + replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by omega. + done. + Qed. + + Lemma merge_interval_size_invariant : forall y1 c1 y2 c2 z s, + interval_list_invariant s = true -> + y1 + Z.of_N c1 <= y2 + Z.of_N c2 -> + y2 + Z.of_N c2 <= z -> + interval_list_elements_greater z s = true -> + (c1 <> 0)%N -> + interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) = + true. + Proof. + intros y1 c1 y2 c2 z s H_inv H_le H_le_z H_gr H_c1_neq_0. + rewrite interval_list_invariant_cons. + split; last split. { + rewrite merge_interval_size_eq_max; last first. { + eapply Z.le_trans; last apply H_le. + apply Z_le_add_r. } { - move => [-> | ]. { - right; split. - - by apply Z.le_refl. - - by apply Z_le_add_r. - } { - move => []; first by tauto. - move => [H_x_lt H_y_le]. - right; split => //. - by apply Z.lt_le_incl. - } - } - } { - intros x l y0 c H_y_comp _. - rewrite /InZ addZ_alt_def H_y_comp elementsZ_cons in_app_iff - In_elementsZ_single1. - firstorder. - } { - move => y0 c H_y_comp H_ok. - rewrite addZ_alt_def H_y_comp Z.compare_refl. - rewrite /InZ !elementsZ_cons elementsZ_nil !app_nil_l N.add_1_r. - rewrite elementsZ_single_succ -!in_rev in_app_iff /=. - firstorder. - } { - move => l y0 c c' H_y_comp _ _. - rewrite addZ_alt_def H_y_comp Z.compare_refl Z.eqb_refl. - rewrite /InZ !elementsZ_cons !in_app_iff -!in_rev. - have -> : (c + c' + 1 = N.succ c + c')%N. { - rewrite -N.add_1_r. ring. + rewrite Z.max_r => //. + eapply interval_list_elements_greater_impl; first apply H_le_z. + done. } - rewrite Z.add_1_r elementsZ_single_add elementsZ_single_succ !in_app_iff - N2Z.inj_succ Z.add_succ_r. - firstorder. } { - intros l y0 c z c'. - move => H_y_comp H_z_comp _. - rewrite addZ_alt_def H_y_comp Z.compare_refl H_z_comp. - rewrite /InZ !elementsZ_cons N.add_1_r !in_app_iff -!in_rev. - rewrite elementsZ_single_succ in_app_iff /=. - firstorder. + apply merge_interval_size_neq_0. + assumption. } { - intros x l y0 c H_y_comp H_x_comp _. - rewrite addZ_alt_def H_y_comp H_x_comp. - split. { - by right. + assumption. + } + Qed. + + + Lemma In_merge_interval : forall x1 c1 x2 c2 y, + x1 <= x2 -> + x2 <= x1 + Z.of_N c1 -> ( + List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) <-> + List.In y (elementsZ_single x1 c1) \/ List.In y (elementsZ_single x2 c2)). + Proof. + intros x1 c1 x2 c2 y H_x1_le H_x2_le. + rewrite !In_elementsZ_single merge_interval_size_eq_max; + last first. { + eapply Z.le_trans; eauto. + by apply Z_le_add_r. + } + rewrite Z.max_lt_iff. + split. { + move => [H_x_le] [] H_y_lt. { + by left. } { - move => [] // ->. - rewrite /InZ elementsZ_cons in_app_iff -in_rev In_elementsZ_single. - right. split. { - move : H_y_comp => /Z.compare_gt_iff. - rewrite Z.add_1_r Z.lt_succ_r //. + case_eq (Z.leb x2 y). { + move => /Z.leb_le H_y'_le. + by right. } { - move : H_x_comp => /Z.compare_lt_iff //. + move => /Z.leb_gt H_y_lt_x2. + left. + split => //. + eapply Z.lt_le_trans; eauto. } } } { - intros x l y0 c H_y_comp H_x_comp IH H_ok. - have H_ok' : Ok l. { - move : H_ok. - rewrite Ok_cons. + move => []. { tauto. + } { + move => [H_x2_le'] H_y_lt. + split. { + eapply Z.le_trans; eauto. + } { + by right. + } } - rewrite addZ_alt_def H_y_comp H_x_comp. - unfold InZ in IH. - rewrite /InZ !elementsZ_cons !in_app_iff -!in_rev (IH H_ok'). - firstorder. } Qed. - Lemma addZ_isok : forall s x, isok s = true -> isok (addZ x s) = true. - Proof. - intros s x. - have H_add_1_neq : (forall x, x + 1 <> 0)%N. { - move => x'. - rewrite N.eq_add_0. - have : (1 <> 0)%N by done. - tauto. - } - - eapply addZ_ind with (P := (fun (x : Z) (s : t) => isok s = true -> - isok (addZ x s) = true)); clear s x. { - move => x _ //. - } { - intros x l c. - rewrite addZ_alt_def Z.compare_refl. - rewrite !isok_cons. - move => [H_inf] [H_c_neq] H_ok_l. - split; last split => //. { - suff -> : (x + Z.of_N (c + 1) = x + 1 + Z.of_N c) by done. - rewrite N2Z.inj_add /=. - ring. - } - } { - intros x l y c H_y_comp. - rewrite addZ_alt_def H_y_comp. - rewrite !isok_cons => [[H_inf] [H_c_neq] H_ok_l]. - split; last split; last split; last split; try done. - by apply Z.ltb_lt. - } { - move => y c H_y_comp _. - rewrite addZ_alt_def H_y_comp Z.compare_refl isok_cons. - done. - } { - move => l y c c' H_y_comp IH. - rewrite addZ_alt_def H_y_comp Z.compare_refl Z.eqb_refl. - rewrite !isok_cons. - move => [H_inf1] [H_c_neq] [H_inf2] [H_c'_neq] H_ok_l. - split; last split => //. { - suff -> : (y + Z.of_N (c + c' + 1) = y + Z.of_N c + 1 + Z.of_N c') by assumption. - rewrite !N2Z.inj_add /=. - ring. - } + Lemma insert_interval_begin_spec : forall y s x c, + interval_list_invariant s = true -> + interval_list_elements_greater x s = true -> + (c <> 0)%N -> + ( + interval_list_invariant (insert_interval_begin x c s) = true /\ + (InZ y (insert_interval_begin x c s) <-> + (List.In y (elementsZ_single x c) \/ InZ y s))). + Proof. + intros y. + induction s as [| [y' c'] s' IH]. { + intros x c _ H_c_neq H_z_lt. + rewrite /insert_interval_begin InZ_cons interval_list_invariant_cons //. } { - intros l y c z c'. - move => H_y_comp H_z_comp. - rewrite addZ_alt_def H_y_comp Z.compare_refl H_z_comp. - rewrite isok_cons => [] [] H_inf [] H_c_neq H_ok_l. - rewrite isok_cons. - split; last split; try done. - move : H_inf. - rewrite /inf. - move : H_z_comp => /Z.eqb_neq H_z_neq /Z.ltb_lt H_z_lt. - apply Z.ltb_lt. + intros x c. + rewrite interval_list_invariant_cons + interval_list_elements_greater_cons. + move => [H_gr] [H_c'_neq_0] H_inv_s' H_x_lt H_c_neq_0. + unfold insert_interval_begin. + Z_named_compare_cases H_y'; fold insert_interval_begin. { + subst. + rewrite !InZ_cons elementsZ_single_add in_app_iff. + split; last tauto. + rewrite interval_list_invariant_cons N2Z.inj_add + Z.add_assoc N.eq_add_0. + tauto. + } { + rewrite !InZ_cons !interval_list_invariant_cons + interval_list_elements_greater_cons. + repeat split => //. + } { + set c'' := merge_interval_size x c y' c'. + have H_x_lt' : x < y' + Z.of_N c'. { + eapply Z.lt_le_trans with (m := y') => //. + by apply Z_le_add_r. + } - have -> : Z.of_N (c + 1) = Z.of_N c + 1. { - rewrite N2Z.inj_add //. - } + have H_pre : interval_list_elements_greater x s' = true. { + eapply interval_list_elements_greater_impl; eauto. + by apply Z.lt_le_incl. + } + have H_pre2 : c'' <> 0%N. { + by apply merge_interval_size_neq_0. + } + move : (IH x c'' H_inv_s' H_pre H_pre2) => {IH} {H_pre} {H_pre2} [->] ->. - suff : y + (Z.of_N c + 1) <= z. { - rewrite Z.lt_eq_cases. - move => [] // H_z_eq. - contradict H_z_neq. - rewrite -H_z_eq. - ring. + split; first reflexivity. + unfold c''; clear c''. + rewrite In_merge_interval. { + rewrite InZ_cons. + tauto. + } { + by apply Z.lt_le_incl. + } { + by apply Z.lt_le_incl. + } } - suff H_suff : (Z.pred (y + (Z.of_N c + 1)) = y + Z.of_N c). { - apply Z.lt_pred_le. - by rewrite H_suff. + } + Qed. + + + (** *** add specification *) + Lemma addZ_InZ : + forall (s : t) (x y : Z), + interval_list_invariant s = true -> + (InZ y (addZ x s) <-> x = y \/ InZ y s). + Proof. + move => s x y. + induction s as [| [z c] s' IH]. { + move => _. + rewrite /InZ addZ_alt_def + elementsZ_cons elementsZ_nil app_nil_l -in_rev + In_elementsZ_single1 /=. + firstorder. + } { + move => /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c'. + move : (IH H_inv_c') => {IH} IH. + rewrite addZ_alt_def. + have H_succ : forall z, z + Z.of_N 1 = Z.succ z by done. + move : (interval_1_compare_elim x z c). + case (interval_1_compare x (z, c)); + rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. { + move => ->. + rewrite elementsZ_single_succ_front /=. + tauto. + } { + move => [] // H_x_in. + split; first tauto. + move => [] // <-. + left. + by rewrite In_elementsZ_single. + } { + rewrite IH. + tauto. + } { + move => H_x_eq. + have -> : (InZ y (insert_interval_begin z (N.succ c) s') <-> + List.In y (elementsZ_single z (N.succ c)) \/ InZ y s'). { + eapply insert_interval_begin_spec. { + by apply H_inv_c'. + } { + eapply interval_list_elements_greater_impl; eauto. + apply Z_le_add_r. + } { + by apply N.neq_succ_0. + } + } + rewrite -H_x_eq elementsZ_single_succ in_app_iff /=. + tauto. } - rewrite Z.add_1_r Z.add_succ_r Z.pred_succ //. - } { - intros x l y c H_y_comp H_x_comp. - rewrite addZ_alt_def H_y_comp H_x_comp //. - } { - intros x l y c H_y_comp H_x_comp IH. - rewrite addZ_alt_def H_y_comp H_x_comp. - rewrite !isok_cons => [] [] H_inf [] H_c_neq H_ok_l. - split; last split; try done. { - suff : exists x0 c0 l0, addZ x l = (x0, c0)::l0 /\ (y+Z.of_N c < x0). { - move => [x0] [c0] [l0] [->]. - rewrite /inf. - apply Z.ltb_lt. + } + Qed. + + Lemma addZ_invariant : forall s x, + interval_list_invariant s = true -> + interval_list_invariant (addZ x s) = true. + Proof. + move => s x. + induction s as [| [z c] s' IH]. { + move => _. + by simpl. + } { + move => /interval_list_invariant_cons [H_greater] [H_c_neq_0] + H_inv_c'. + move : (IH H_inv_c') => {IH} IH. + rewrite addZ_alt_def. + have H_succ : forall z, z + Z.of_N 1 = Z.succ z by done. + move : (interval_1_compare_elim x z c). + case_eq (interval_1_compare x (z, c)) => H_comp; + rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. { + move => H_z_gt. + rewrite interval_list_invariant_cons /= !andb_true_iff !H_succ. + repeat split => //. { + by apply Z.ltb_lt. + } { + apply negb_true_iff, N.eqb_neq => //. } - apply Z.compare_gt_iff in H_x_comp. - move : H_inf. - case l. { - exists x, 1%N, nil. - by rewrite addZ_alt_def. - } { - move => [z c'] l0 /Z.ltb_lt H_z_gt. - rewrite addZ_alt_def. - case (x + 1 ?= z); try by eauto. - case (x ?= z + Z.of_N c'); try by eauto. - case l0; try by eauto. - move => [z' c''] ?. - case (z' =? x + 1); by eauto. + } { + move => ?; subst. + rewrite /= !andb_true_iff. + repeat split => //. { + move : H_greater. + rewrite Z.add_succ_l -Z.add_succ_r N2Z.inj_succ //. + } { + apply negb_true_iff, N.eqb_neq => //. + apply N.neq_succ_0. } } { - apply IH => //. + move => [] // _. + rewrite interval_list_invariant_cons /=. + tauto. + } { + rewrite interval_list_invariant_cons. + move => H_lt_x. + repeat split => //. + apply interval_list_elements_greater_intro => //. + move => xx. + rewrite addZ_InZ => //. + move => [<- //|]. + apply interval_list_elements_greater_alt2_def => //. + } { + move => H_x_eq. + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; eauto. + apply Z_le_add_r. + } { + by apply N.neq_succ_0. + } } } Qed. - - + Global Instance add_ok s x : forall `(Ok s), Ok (add x s). Proof. move => H_ok_s. @@ -1322,13 +1872,13 @@ Module Raw (Enc : ElementEncode). rewrite /Ok /IsOk /is_encoded_elems_list /add. move => [H_isok_s] H_pre. split. { - apply addZ_isok => //. + apply addZ_invariant => //. } { intros y. - move : (addZ_spec s (Enc.encode x) y H_ok_s). + move : (addZ_InZ s (Enc.encode x) y H_isok_s). rewrite /InZ => ->. move => []. { - move => ->. + move => <-. by exists x. } { move => /H_pre //. @@ -1343,351 +1893,1923 @@ Module Raw (Enc : ElementEncode). intros s x y Hs. have Hs' := (add_ok s x Hs). rewrite !In_InZ. - rewrite /add addZ_spec Enc.encode_eq //. + rewrite /add addZ_InZ. { + rewrite -Enc.encode_eq; firstorder. + } { + apply Hs. + } Qed. - (** *** remove specification *) + (** *** empty specification *) - Lemma isok_removeZ_aux_insert_guarded : forall x c s, - isok s = true -> inf (x + Z.of_N c) s = true -> - isok (removeZ_aux_insert_guarded x c s) = true. + Global Instance empty_ok : Ok empty. Proof. - intros x c s. - rewrite /removeZ_aux_insert_guarded. - case_eq (c =? 0)%N => //. - move => /N.eqb_neq. - rewrite isok_cons. - tauto. + rewrite /empty Ok_nil //. + Qed. + + Lemma empty_spec' : forall x, (In x empty <-> False). + rewrite /Empty /empty /In elements_nil. + intros a. + rewrite InA_nil //. Qed. - Lemma inf_removeZ_aux_insert_guarded : forall x c y s, - inf y (removeZ_aux_insert_guarded x c s) = true <-> - (if (c =? 0)%N then (inf y s = true) else (y < x)). + Lemma empty_spec : Empty empty. Proof. - intros x c y s. - rewrite /removeZ_aux_insert_guarded. - case (c =? 0)%N => //. - rewrite /inf Z.ltb_lt //. + rewrite /Empty => a. + rewrite empty_spec' //. + Qed. + + (** *** is_empty specification *) + + Lemma is_empty_spec : forall (s : t) (Hs : Ok s), is_empty s = true <-> Empty s. + Proof. + intros [ | [x c] s]. { + split => // _. + apply empty_spec. + } { + rewrite /= /Empty Ok_cons. + move => [_] [H_c_neq] [H_enc] _. + split => //. + move => H. + contradiction (H (Enc.decode x)) => {H}. + rewrite /In InA_alt elements_cons. + exists (Enc.decode x). + split; first by apply Enc.E.eq_equiv. + rewrite in_app_iff; left. + rewrite /elements_single in_map_iff. + exists x. + split => //. + apply In_elementsZ_single_hd => //. + } Qed. - Lemma removeZ_counter_pos_aux : forall y c x, - x < y + Z.of_N c -> - 0 <= y + Z.of_N c - Z.succ x. + (** *** singleton specification *) + + Global Instance singleton_ok x : Ok (singleton x). Proof. - intros y c x H_x_lt. - rewrite Z.le_0_sub Z.le_succ_l. - assumption. + rewrite singleton_alt_def. + apply add_ok. + apply empty_ok. Qed. - Lemma removeZ_isok : forall s x, isok s = true -> isok (removeZ x s) = true. + Lemma singleton_spec : forall x y : elt, In y (singleton x) <-> Enc.E.eq y x. Proof. - intros s x. - induction s as [| [y c] s' IH]. { - rewrite removeZ_alt_def //. - } { - rewrite removeZ_alt_def. - case_eq (x //. - move => /Z.ltb_ge H_y_le_x. - case_eq (x /Z.ltb_lt H_x_lt /isok_cons [H_inf] [H_c_neq] H_ok_s'. - apply isok_removeZ_aux_insert_guarded; first apply isok_removeZ_aux_insert_guarded. { - assumption. + intros x y. + rewrite singleton_alt_def. + rewrite (add_spec empty x y) /empty /In elements_nil InA_nil. + split. { + move => [] //. + } { + by left. + } + Qed. + + (** *** add_list specification *) + + Lemma add_list_ok : forall l s, Ok s -> Ok (add_list l s). + Proof. + induction l as [| x l' IH]. { + done. + } { + move => s H_s_ok /=. + apply IH. + by apply add_ok. + } + Qed. + + Lemma add_list_spec : forall x l s, Ok s -> + (In x (add_list l s) <-> (SetoidList.InA Enc.E.eq x l) \/ In x s). + Proof. + move => x. + induction l as [| y l' IH]. { + intros s H. + rewrite /= InA_nil. + tauto. + } { + move => s H_ok /=. + rewrite IH add_spec InA_cons. + tauto. + } + Qed. + + (** *** union specification *) + + Lemma union_aux_flatten_alt_def : forall (s1 s2 : t) acc, + union_aux s1 s2 acc = + match (s1, s2) with + | (nil, _) => List.rev_append acc s2 + | (_, nil) => List.rev_append acc s1 + | ((y1, c1) :: l1, (y2, c2) :: l2) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => union_aux l1 s2 ((y1, c1)::acc) + | ICR_before_touch => + union_aux l1 ( + insert_interval_begin y1 ((c1+c2)%N) l2) acc + | ICR_after => union_aux s1 l2 ((y2, c2)::acc) + | ICR_after_touch => union_aux l1 ( + insert_interval_begin y2 ((c1+c2)%N) l2) acc + | ICR_overlap_before => + union_aux l1 ( + insert_interval_begin y1 + (merge_interval_size y1 c1 y2 c2) l2) acc + | ICR_overlap_after => + union_aux l1 ( + insert_interval_begin y2 + (merge_interval_size y2 c2 y1 c1) l2) acc + | ICR_equal => union_aux l1 s2 acc + | ICR_subsume_1 => union_aux l1 s2 acc + | ICR_subsume_2 => union_aux s1 l2 acc + end + end. + Proof. + intros s1 s2 acc. + case s1, s2 => //. + Qed. + + Lemma union_aux_alt_def : forall (s1 s2 : t) acc, + union_aux s1 s2 acc = + List.rev_append acc (union s1 s2). + Proof. + rewrite /union. + intros s1 s2 acc. + move : acc s2. + induction s1 as [| [y1 c1] l1 IH1]. { + intros acc s2. + rewrite !union_aux_flatten_alt_def. + rewrite !rev_append_rev //. + } + intros acc s2; move : acc. + induction s2 as [| [y2 c2] l2 IH2]; first by simpl. + move => acc. + rewrite !(union_aux_flatten_alt_def ((y1, c1)::l1) ((y2, c2)::l2)). + case (interval_compare (y1, c1) (y2, c2)); + rewrite ?(IH1 ((y1, c1) :: acc)) ?(IH1 ((y1, c1) :: nil)) + ?(IH2 ((y2, c2) :: acc)) ?(IH2 ((y2, c2) :: nil)) + ?(IH1 acc) //. + Qed. + + Lemma union_alt_def : forall (s1 s2 : t), + union s1 s2 = + match (s1, s2) with + | (nil, _) => s2 + | (_, nil) => s1 + | ((y1, c1) :: l1, (y2, c2) :: l2) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => (y1, c1) :: (union l1 s2) + | ICR_before_touch => + union l1 (insert_interval_begin y1 ((c1+c2)%N) l2) + | ICR_after => (y2, c2) :: union s1 l2 + | ICR_after_touch => union l1 + (insert_interval_begin y2 ((c1+c2)%N) l2) + | ICR_overlap_before => + union l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) + | ICR_overlap_after => + union l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2) + | ICR_equal => union l1 s2 + | ICR_subsume_1 => union l1 s2 + | ICR_subsume_2 => union s1 l2 + end + end. + Proof. + intros s1 s2. + rewrite /union union_aux_flatten_alt_def. + case s1 as [| [y1 c1] l1] => //. + case s2 as [| [y2 c2] l2] => //. + case (interval_compare (y1, c1) (y2, c2)); + rewrite union_aux_alt_def //. + Qed. + + Lemma union_InZ : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + forall y, (InZ y (union s1 s2) <-> InZ y s1 \/ InZ y s2). + Proof. + intro s1. + induction s1 as [| [y1 c1] l1 IH1]. { + intros s2 _ _ y. + rewrite union_alt_def /InZ /=. + tauto. + } { + induction s2 as [| [y2 c2] l2 IH2]. { + intros _ _ y. + rewrite union_alt_def /InZ /=. + tauto. + } { + move => H_inv_s1 H_inv_s2. + move : (H_inv_s1) (H_inv_s2). + rewrite !interval_list_invariant_cons. + move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. + move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. + move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + have : forall s2 : t, + interval_list_invariant s2 = true -> + forall y : Z, InZ y (union l1 s2) <-> InZ y l1 \/ InZ y s2. { + intros. by apply IH1. + } + move => {IH1} IH1 y. + rewrite union_alt_def. + move : (interval_compare_elim y1 c1 y2 c2). + case (interval_compare (y1, c1) (y2, c2)). { + rewrite !InZ_cons IH1 // InZ_cons. + tauto. } { - rewrite Z2N.id; last by apply removeZ_counter_pos_aux. - rewrite add_add_sub_eq. - assumption. + move => H_y2_eq. + replace (c1 + c2)%N with (merge_interval_size y1 c1 y2 c2); + last first. { + rewrite -H_y2_eq merge_interval_size_add //. + } + set c'' := merge_interval_size y1 c1 y2 c2. + have [H_inv_insert H_InZ_insert] : + interval_list_invariant (insert_interval_begin y1 c'' l2) = true /\ + (InZ y (insert_interval_begin y1 c'' l2) <-> + List.In y (elementsZ_single y1 c'') \/ InZ y l2). { + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; eauto. + rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add. + apply Z_le_add_r. + } { + by apply merge_interval_size_neq_0. + } + } + + rewrite IH1 => //. + rewrite H_InZ_insert !InZ_cons /c''. + rewrite -H_y2_eq In_merge_interval. { + tauto. + } { + apply Z_le_add_r. + } { + by apply Z.le_refl. + } } { - rewrite /removeZ_aux_insert_guarded Z2N.id; last first. { - by rewrite Z.le_0_sub. + move => [H_y1_lt] [H_y2_lt] H_y1_c1_lt. + set c'' := merge_interval_size y1 c1 y2 c2. + have [H_inv_insert H_InZ_insert] : + interval_list_invariant (insert_interval_begin y1 c'' l2) = true /\ + (InZ y (insert_interval_begin y1 c'' l2) <-> + List.In y (elementsZ_single y1 c'') \/ InZ y l2). { + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; eauto. + apply Z_lt_le_add_r => //. + } { + by apply merge_interval_size_neq_0. + } } - rewrite add_add_sub_eq. - case (Z.to_N (y + Z.of_N c - Z.succ x) =? 0)%N. { - eapply inf_impl; eauto. + rewrite IH1 => //. + rewrite H_InZ_insert !InZ_cons /c''. + rewrite In_merge_interval. { + tauto. + } { by apply Z.lt_le_incl. } { - rewrite /inf. - apply Z.ltb_lt, Z.lt_succ_diag_r. + by apply Z.lt_le_incl. } - } - } { - move => /Z.ltb_ge H_yc_le_x. - rewrite !isok_cons. - move => [H_inf] [H_c_neq] H_ok_s'. - split; last split => //; last by apply IH. - move : H_inf. - case_eq s' => //. - move => [z c'] l' H_s'_eq. - rewrite removeZ_alt_def. - case (x /Z.ltb_lt H_lt_z. - rewrite inf_removeZ_aux_insert_guarded. - case (Z.to_N (x - z) =? 0)%N => //. - rewrite inf_removeZ_aux_insert_guarded. - case (Z.to_N (z + Z.of_N c' - Z.succ x) =? 0)%N. { - move : H_ok_s'. - rewrite H_s'_eq !isok_cons. - move => [H_inf] _. - eapply inf_impl; last apply H_inf. - apply Z.le_trans with (m := z). { + } { + move => [H_y2_lt] [H_y1_lt] H_y2_c_lt. + set c'' := merge_interval_size y2 c2 y1 c1. + have [H_inv_insert H_InZ_insert] : + interval_list_invariant (insert_interval_begin y2 c'' l2) = true /\ + (InZ y (insert_interval_begin y2 c'' l2) <-> + List.In y (elementsZ_single y2 c'') \/ InZ y l2). { + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; eauto. + apply Z_le_add_r. + } { + by apply merge_interval_size_neq_0. + } + } + + rewrite IH1 => //. + rewrite H_InZ_insert !InZ_cons /c''. + rewrite In_merge_interval. { + tauto. + } { by apply Z.lt_le_incl. } { - by apply Z_le_add_r. + by apply Z.lt_le_incl. + } + } { + move => [? ?]; subst. + rewrite IH1 => //. + rewrite !InZ_cons. + tauto. + } { + move => [H_y2_le] [H_y1_c1_le] _. + rewrite IH1 => //. + rewrite !InZ_cons. + suff : (List.In y (elementsZ_single y1 c1) -> + List.In y (elementsZ_single y2 c2)). { + tauto. + } + rewrite !In_elementsZ_single. + move => [H_y1_le H_y_lt]. + split; omega. + } { + move => [H_y1_le] [H_y2_c2_le] _. + rewrite IH2. + rewrite !InZ_cons. + suff : (List.In y (elementsZ_single y2 c2) -> + List.In y (elementsZ_single y1 c1)). { + tauto. } + rewrite !In_elementsZ_single. + move => [H_y2_le H_y_lt]. + split; omega. + } { + rewrite !InZ_cons IH2 !InZ_cons. + tauto. } { - rewrite Z.lt_succ_r //. + move => H_y1_eq. + replace (c1 + c2)%N with (merge_interval_size y2 c2 y1 c1); + last first. { + rewrite -H_y1_eq merge_interval_size_add N.add_comm //. + } + set c'' := merge_interval_size y2 c2 y1 c1. + have [H_inv_insert H_InZ_insert] : + interval_list_invariant (insert_interval_begin y2 c'' l2) = true /\ + (InZ y (insert_interval_begin y2 c'' l2) <-> + List.In y (elementsZ_single y2 c'') \/ InZ y l2). { + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; eauto. + apply Z_le_add_r. + } { + by apply merge_interval_size_neq_0. + } + } + + rewrite IH1 => //. + rewrite H_InZ_insert !InZ_cons /c''. + rewrite -H_y1_eq In_merge_interval. { + tauto. + } { + apply Z_le_add_r. + } { + by apply Z.le_refl. + } } } } Qed. - - Lemma elementsZ_removeZ_aux_insert_guarded : forall x c s, - elementsZ (removeZ_aux_insert_guarded x c s) = elementsZ ((x, c) :: s). - Proof. - intros x c s. - rewrite /removeZ_aux_insert_guarded. - case_eq (c =? 0)%N => //. - move => /N.eqb_eq ->. - rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //. - Qed. - - Lemma removeZ_spec : - forall (s : t) (x y : Z) (Hs : isok s = true), - InZ y (removeZ x s) <-> InZ y s /\ ~Z.eq y x. + Lemma union_invariant : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + interval_list_invariant (union s1 s2) = true. Proof. - intros s x y Hs. - move : Hs x y. - induction s as [| [y c] s' IH] . { - move => _ x y. - rewrite /=. - firstorder. + intro s1. + induction s1 as [| [y1 c1] l1 IH1]. { + intros s2 _ H_inv_s2. + rewrite union_alt_def /InZ //. } { - intros H_ok x y0. - rewrite removeZ_alt_def. - case_eq (x /Z.ltb_lt H_x_lt. - split; last tauto. - move => H_in. - split => // H_y0_eq. - apply (isok_inf_nin y0 ((y, c)::s')) => //. - rewrite /inf H_y0_eq. - by apply Z.ltb_lt. + induction s2 as [| [y2 c2] l2 IH2]. { + intros H_inv_s1 _. + rewrite union_alt_def /InZ //. } { - move => /Z.ltb_ge H_y_le. - have H_ok' : isok s' = true. { - move : H_ok. - rewrite isok_cons; tauto. - } - move : (IH H_ok') => {IH} IH. - case_eq (x /Z.ltb_lt H_x_lt /=. - rewrite /InZ elementsZ_removeZ_aux_insert_guarded !elementsZ_cons. - rewrite elementsZ_removeZ_aux_insert_guarded elementsZ_cons !in_app_iff -!in_rev. - rewrite !In_elementsZ_single !Z2N.id; last first. { - by apply removeZ_counter_pos_aux. + move => H_inv_s1 H_inv_s2. + move : (H_inv_s1) (H_inv_s2). + rewrite !interval_list_invariant_cons. + move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. + move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. + move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + have : forall s2 : t, + interval_list_invariant s2 = true -> + interval_list_invariant (union l1 s2) = true. { + intros. by apply IH1. + } + move => {IH1} IH1. + + rewrite union_alt_def. + move : (interval_compare_elim y1 c1 y2 c2). + case (interval_compare (y1, c1) (y2, c2)). { + move => H_lt_y2. + have H_inv' : interval_list_invariant (union l1 ((y2, c2) :: l2)) = true. { + by apply IH1. + } + + rewrite interval_list_invariant_cons. + repeat split => //. + apply interval_list_elements_greater_intro => // x. + rewrite union_InZ => //. + move => []. { + apply interval_list_elements_greater_alt2_def => //. } { - by rewrite Z.le_0_sub. + apply interval_list_elements_greater_alt2_def => //. + rewrite interval_list_elements_greater_cons //. } - rewrite !add_add_sub_eq Z.le_succ_l. - case_eq (y0 =? x). { - move => /Z.eqb_eq ->. - split; last first. { - move => [_] H_neq. - contradict H_neq => //. - } { - move => [[] |]. { - move => H_in. exfalso. - apply (isok_inf_nin x s') => //. - move : H_ok. - case s' => //. - move => [z c'] s''. - rewrite !isok_cons /inf. - move => [] /Z.ltb_lt H_lt_x' _. - apply Z.ltb_lt. - eapply Z.lt_trans; eauto. - } { - move => [] /Z.lt_irrefl //. - } { - move => [_] /Z.lt_irrefl //. - } - } + } { + move => H_y2_eq. + apply IH1. + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; last apply H_gr_l2. + rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add. + apply Z_le_add_r. + } { + rewrite N.eq_add_0. + tauto. } - move => /Z.eqb_neq H_y0_neq. - split. { - move => H. - split; last by apply H_y0_neq. - move : H => [[] |]. { - by left. - } { - move => [H_x_lt'] H_y0_lt. - right; split => //. - apply Z.le_trans with (m := x) => //. - by apply Z.lt_le_incl. - } { - move => [H_y_le'] H_y0_lt. - right; split => //. - eapply Z.lt_trans; eauto. - } + } { + move => [H_y1_lt] _. + apply IH1. + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; last apply H_gr_l2. + apply Z_lt_le_add_r => //. } { - move => [[]]; first by tauto. - move => [H_y_le'] H_y0_lt _. - case_eq (y0 /Z.ltb_lt H_y0_lt_x. - right. done. - } { - move => /Z.ltb_ge /Z.lt_eq_cases []. { - move => H_x_lt'. - left; right. - done. - } { - move => H_x_eq. - contradict H_y0_neq => //. - } - } - } + apply merge_interval_size_neq_0 => //. + } } { - move => /Z.ltb_ge H_yc_le. - unfold InZ in IH. - rewrite /InZ !elementsZ_cons !in_app_iff !IH. - split; last tauto. - move => []; first tauto. - rewrite -!in_rev In_elementsZ_single. - move => [H_y_le'] H_y0_lt. - split; first by right. - move => H_y0_eq. - move : H_y0_lt. - apply Z.nlt_ge. - by rewrite H_y0_eq. + move => [H_y2_lt] _. + apply IH1. + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; last apply H_gr_l2. + apply Z_le_add_r => //. + } { + apply merge_interval_size_neq_0 => //. + } + } { + move => [? ?]; subst. + apply IH1 => //. + } { + move => _. + apply IH1 => //. + } { + move => _. + apply IH2 => //. + } { + move => H_lt_y1. + rewrite interval_list_invariant_cons => //. + repeat split => //. + apply interval_list_elements_greater_intro => // x. + rewrite union_InZ => //. + move => []. { + apply interval_list_elements_greater_alt2_def => //. + rewrite interval_list_elements_greater_cons //. + } { + apply interval_list_elements_greater_alt2_def => //. + } + } { + move => H_y1_eq. + apply IH1 => //. + apply insert_interval_begin_spec => //. { + eapply interval_list_elements_greater_impl; last apply H_gr_l2. + apply Z_le_add_r. + } { + rewrite N.eq_add_0. + tauto. + } } } } Qed. - - Global Instance remove_ok s x : forall `(Ok s), Ok (remove x s). + + Global Instance union_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (union s1 s2). Proof. - rewrite /Ok /IsOk /remove. - move => [H_is_ok_s H_enc_s]. + move => H_ok_s1 H_ok_s2. + move : (H_ok_s1) (H_ok_s2). + rewrite /Ok /IsOk /is_encoded_elems_list /add. + move => [H_inv_s1] H_pre1. + move => [H_inv_s2] H_pre2. split. { - by apply removeZ_isok. + apply union_invariant => //. } { - rewrite /is_encoded_elems_list => y. - move : (removeZ_spec s (Enc.encode x) y H_is_ok_s). - rewrite /InZ => -> [] H_y_in _. - apply H_enc_s => //. + intros y. + move : (union_InZ s1 s2 H_inv_s1 H_inv_s2). + rewrite /InZ => ->. + move => []. { + apply H_pre1. + } { + apply H_pre2. + } } Qed. - Lemma remove_spec : - forall (s : t) (x y : elt) (Hs : Ok s), - In y (remove x s) <-> In y s /\ ~Enc.E.eq y x. + Lemma union_spec : + forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), + In x (union s s') <-> In x s \/ In x s'. Proof. - intros s x y Hs. - have H_rs := (remove_ok s x Hs). - rewrite /remove !In_InZ. - rewrite removeZ_spec. { - rewrite Enc.encode_eq //. + intros s s' x H_ok H_ok'. + rewrite !In_InZ. + rewrite union_InZ => //. { + apply H_ok. } { - apply Hs. + apply H_ok'. } Qed. - (** *** empty specification *) - - Global Instance empty_ok : Ok empty. + (** *** inter specification *) + + Lemma inter_aux_alt_def : + forall (y2 : Z) (c2 : N) (s : t) acc, + inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with + (acc', s') => (acc' ++ acc, s') + end. Proof. - rewrite /empty Ok_nil //. - Qed. - - Lemma empty_spec' : forall x, (In x empty <-> False). - rewrite /Empty /empty /In elements_nil. - intros a. - rewrite InA_nil //. + intros y2 c2. + induction s as [| [y1 c1] s' IH] => acc. { + rewrite /inter_aux app_nil_l //. + } { + simpl. + case_eq (inter_aux y2 c2 nil s') => acc'' s'' H_eq. + case (interval_compare (y1, c1) (y2, c2)); + rewrite ?(IH acc) + ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: acc)) + ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: nil)) + ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: acc)) + ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: nil)) + ?(IH ((y1, c1) :: acc)) + ?(IH ((y1, c1) :: nil)) + + ?H_eq -?app_assoc -?app_comm_cons //. + } Qed. - Lemma empty_spec : Empty empty. + Lemma inter_aux_props : + forall (y2 : Z) (c2 : N) (s : t) acc, + interval_list_invariant (rev acc) = true -> + interval_list_invariant s = true -> + (forall x1 x2, InZ x1 acc -> InZ x2 s -> + List.In x2 (elementsZ_single y2 c2) -> + Z.succ x1 < x2) -> + (c2 <> 0%N) -> + match (inter_aux y2 c2 acc s) with (acc', s') => + (forall y, (InZ y acc' <-> + (InZ y acc \/ (InZ y s /\ (List.In y (elementsZ_single y2 c2)))))) /\ + (forall y, InZ y s' -> InZ y s) /\ + (forall y, InZ y s -> y2 + Z.of_N c2 < y -> InZ y s') /\ + interval_list_invariant (rev acc') = true /\ + interval_list_invariant s' = true + end. Proof. - rewrite /Empty => a. - rewrite empty_spec' //. - Qed. - - (** *** is_empty specification *) + intros y2 c2. + induction s as [| [y1 c1] s1' IH] => acc. { + rewrite /inter_aux. + move => H_inv_acc _ _ _. + split; last split; try done. + move => y. rewrite InZ_nil. + tauto. + } { + rewrite interval_list_invariant_cons. + move => H_inv_acc [H_gr_s1'] [H_c1_neq_0] H_inv_s1'. + move => H_in_acc_lt H_c2_neq_0. + + rewrite inter_aux_alt_def. + case_eq (inter_aux y2 c2 nil ((y1, c1) :: s1')). + move => acc' s' H_inter_aux_eq. + + set P1 := forall y : Z, + (InZ y acc' <-> + ((InZ y ((y1, c1) :: s1') /\ List.In y (elementsZ_single y2 c2)))). + set P2 := (forall y, + (InZ y s' -> InZ y ((y1, c1) :: s1')) /\ + (InZ y ((y1, c1) :: s1') -> + y2 + Z.of_N c2 < y -> InZ y s')). + set P3 := interval_list_invariant (rev acc') = true. + set P4 := interval_list_invariant s' = true. + + suff : (P1 /\ P2 /\ P3 /\ P4). { + move => [H_P1] [H_P2] [H_P3] H_P4. + split; last split; last split; last split. { + move => y. + move : (H_P1 y). + rewrite !InZ_app InZ_cons !In_elementsZ_single. + move => <-. + tauto. + } { + move => y H_y_in. + by apply H_P2. + } { + move => y H_y_in. + by apply H_P2. + } { + rewrite rev_app_distr. + apply interval_list_invariant_app_intro => //. + move => x1 x2. + rewrite !InZ_rev. + move => H_x1_in /H_P1 [H_x2_in1] H_x2_in2. + apply H_in_acc_lt => //. + } { + apply H_P4. + } + } - Lemma is_empty_spec : forall (s : t) (Hs : Ok s), is_empty s = true <-> Empty s. + move : (H_gr_s1'). + rewrite interval_list_elements_greater_alt2_def => // => H_gr_s1'_alt. + + have : forall (acc : list (Z * N)), + interval_list_invariant (rev acc) = true -> + (forall y, InZ y acc <-> ( + y1 <= y < y1 + Z.of_N c1 /\ + y2 <= y < y2 + Z.of_N c2)) -> + (y1 + Z.of_N c1 <= y2 + Z.of_N c2) -> + (inter_aux y2 c2 acc s1' = (acc', s')) -> + P1 /\ P2 /\ P3 /\ P4. { + + intros acc0 H_inv_acc0 H_in_acc0 H_y2c_lt H_inter_aux_eq0. + have H_in_acc0_lt : (forall x1 x2 : Z, + InZ x1 acc0 -> + InZ x2 s1' -> + List.In x2 (elementsZ_single y2 c2) -> + Z.succ x1 < x2). { + + intros x1 x2 H_x1_in_acc0 H_x2_in_s1' H_x2_in_yc2. + + suff H_yc1_lt_x2 : Z.succ x1 <= y1 + Z.of_N c1. { + apply Z.le_lt_trans with (m := y1 + Z.of_N c1) => //. + by apply H_gr_s1'_alt. + } + move : (H_x1_in_acc0). + rewrite H_in_acc0 Z.le_succ_l. + tauto. + } + + move : (IH acc0 H_inv_acc0 H_inv_s1' H_in_acc0_lt H_c2_neq_0). + rewrite H_inter_aux_eq0. + move => [H1] [H2] [H3] [H4] H5. + split; last split => //. { + move => y. + rewrite (H1 y). + rewrite InZ_cons !In_elementsZ_single + H_in_acc0. + tauto. + } { + move => y. + split. { + move => /H2. + rewrite InZ_cons. + by right. + } { + rewrite InZ_cons In_elementsZ_single. + move => []. { + move => [_] H_y_lt H_lt_y. + exfalso. + suff : (y < y) by apply Z.lt_irrefl. + apply Z.lt_le_trans with (m := y1 + Z.of_N c1) => //. + apply Z.le_trans with (m := y2 + Z.of_N c2) => //. + + by apply Z.lt_le_incl. + } { + apply H3. + } + } + } + } + move => {IH} IH. + + clear H_inv_acc H_in_acc_lt acc. + move : (interval_compare_elim y1 c1 y2 c2) H_inter_aux_eq. + unfold inter_aux. + case_eq (interval_compare (y1, c1) (y2, c2)) => H_comp; + fold inter_aux. { + move => H_lt_y2. + apply IH. { + done. + } { + move => x. + rewrite InZ_nil. + split => //. + omega. + } { + apply Z.le_trans with (m := y2). { + by apply Z.lt_le_incl. + } { + apply Z_le_add_r. + } + } + } { + move => H_eq_y2. + apply IH. { + done. + } { + move => x. + rewrite InZ_nil. + split => //. + omega. + } { + rewrite H_eq_y2. + apply Z_le_add_r. + } + } { + move => [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2. + apply IH. { + rewrite interval_list_invariant_sing. + by apply Z_to_N_minus_neq_0. + } { + move => x. + rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last omega. + replace (y1 + (y2 - y1)) with y2 by omega. + split; omega. + } { + by apply Z.lt_le_incl. + } + } { + rewrite /P1 /P2 /P3 /P4. + move => [H_y2_lt] [H_y1_lt] H_yc1_lt. + move => [] H_acc' H_s'. + clear IH P1 P2 P3 P4 H_comp. + subst s' acc'. + split; last split; last split. { + move => y. + have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) = + y2 + Z.of_N c2. { + rewrite Z2N.id; omega. + } + + rewrite !InZ_cons !In_elementsZ_single InZ_nil H_yc2_intro. + split. { + move => [] //. + move => [H_y1_le] H_y_lt. + split; last by omega. + left. omega. + } { + move => [H_in_s] [H_y2_le] H_y_lt. + left. + split; last assumption. + move : H_in_s => []. { + tauto. + } { + move => /H_gr_s1'_alt H_lt_y. + apply Z.le_trans with (m := y1 + Z.of_N c1). { + by apply Z_le_add_r. + } { + by apply Z.lt_le_incl. + } + } + } + } { + move => y. + split; done. + } { + rewrite interval_list_invariant_sing. + by apply Z_to_N_minus_neq_0. + } { + by rewrite interval_list_invariant_cons. + } + } { + rewrite /P1 /P2 /P3 /P4. + move => [H_y12_eq] H_c12_eq [] H_acc' H_s'. + clear IH P1 P2 P3 P4 H_comp. + subst. + split; last split; last split. { + move => y. + rewrite !InZ_cons InZ_nil In_elementsZ_single. + split; last by tauto. { + move => [] //. + tauto. + } + } { + move => y. + rewrite InZ_cons In_elementsZ_single. + split; first by right. + move => [] //. + move => [_] H_y_lt H_lt_y. + exfalso. + suff : (y2 + Z.of_N c2 < y2 + Z.of_N c2) by + apply Z.lt_irrefl. + apply Z.lt_trans with (m := y) => //. + } { + rewrite interval_list_invariant_sing //. + } { + assumption. + } + } { + move => [H_y2_le_y1] [H_yc1_le_yc2] _. + apply IH. { + by rewrite interval_list_invariant_sing. + } { + move => y. + rewrite InZ_cons InZ_nil In_elementsZ_single. + split. { + move => [] //. + move => [H_y1_le] H_y_lt. + split; first done. + split; omega. + } { + move => [?] _. + by left. + } + } { + assumption. + } + } { + rewrite /P1 /P2 /P3 /P4. + move => [H_y1_le] [H_yc2_le] _. + move => [] H_acc' H_s'. + clear IH P1 P2 P3 P4 H_comp. + subst. + split; last split; last split. { + move => y. + rewrite !InZ_cons !In_elementsZ_single InZ_nil. + split. { + move => [] //. + move => [H_y2_le] H_y_lt. + split; last by omega. + left. omega. + } { + move => [H_in_s] [H_y2_le] H_y_lt. + by left. + } + } { + tauto. + } { + by rewrite interval_list_invariant_sing. + } { + by rewrite interval_list_invariant_cons. + } + } { + rewrite /P1 /P2 /P3 /P4. + move => H_yc2_lt [] H_acc' H_s'. + clear IH P1 P2 P3 P4 H_comp. + subst. + split; last split; last split. { + move => y. + rewrite InZ_cons !In_elementsZ_single InZ_nil. + split; first done. + move => [] []. { + move => [H_y1_le_y] H_y_lt_yc1. + move => [H_y2_le_y] H_y_lt_yc2. + omega. + } { + move => /H_gr_s1'_alt H_lt_y [_] H_y_lt. + suff : (y1 + Z.of_N c1 < y1). { + apply Z.nlt_ge. + apply Z_le_add_r. + } + omega. + } + } { + tauto. + } { + done. + } { + by rewrite interval_list_invariant_cons. + } + } { + rewrite /P1 /P2 /P3 /P4. + move => H_y1_eq [] H_acc' H_s'. + clear IH P1 P2 P3 P4 H_comp. + subst acc' s'. + split; last split; last split. { + move => y. + rewrite InZ_cons !In_elementsZ_single InZ_nil. + split; first done. + move => [] []. { + move => [H_y1_le_y] H_y_lt_yc1. + move => [H_y2_le_y] H_y_lt_yc2. + omega. + } { + move => /H_gr_s1'_alt H_lt_y [_] H_y_lt. + suff : (y1 + Z.of_N c1 < y1). { + apply Z.nlt_ge. + apply Z_le_add_r. + } + omega. + } + } { + tauto. + } { + done. + } { + by rewrite interval_list_invariant_cons. + } + } + } + Qed. + + Lemma inter_aux2_props : + forall (s2 s1 acc : t), + interval_list_invariant (rev acc) = true -> + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + (forall x1 x2, InZ x1 acc -> InZ x2 s1 -> InZ x2 s2 -> Z.succ x1 < x2) -> + ((forall y, (InZ y (inter_aux2 acc s1 s2) <-> + (InZ y acc) \/ ((InZ y s1) /\ InZ y s2))) /\ + (interval_list_invariant (inter_aux2 acc s1 s2) = true)). Proof. - intros [ | [x c] s]. { - split => // _. - apply empty_spec. + induction s2 as [| [y2 c2] s2' IH]. { + move => s1 acc. + move => H_inv_acc _ _ _. + unfold inter_aux2. + replace (match s1 with + | nil => rev' acc + | _ :: _ => rev' acc + end) with (rev' acc); last by case s1. + rewrite /rev' rev_append_rev app_nil_r. + split; last done. + move => y. + rewrite InZ_nil InZ_rev. + tauto. } { - rewrite /= /Empty Ok_cons. - move => [_] [H_c_neq] [H_enc] _. - split => //. - move => H. - contradiction (H (Enc.decode x)) => {H}. - rewrite /In InA_alt elements_cons. - exists (Enc.decode x). - split; first by apply Enc.E.eq_equiv. - rewrite in_app_iff; left. - rewrite /elements_single in_map_iff. - exists x. - split => //. - apply In_elementsZ_single_hd => //. + intros s1 acc H_inv_acc H_inv_s1. + rewrite interval_list_invariant_cons. + move => [H_gr_s2'] [H_c2_neq_0] H_inv_s2'. + move => H_acc_s12. + + move : H_gr_s2'. + rewrite interval_list_elements_greater_alt2_def //. + move => H_gr_s2'. + + rewrite /inter_aux2; fold inter_aux2. + case_eq s1. { + move => H_s1_eq. + split. { + move => y. + rewrite /rev' rev_append_rev app_nil_r InZ_nil + InZ_rev. + tauto. + } { + rewrite /rev' rev_append_rev app_nil_r //. + } + } { + move => [_ _] _ <-. + case_eq (inter_aux y2 c2 acc s1). + move => acc' s1' H_inter_aux_eq. + + have H_acc_s1_yc2 : forall x1 x2 : Z, + InZ x1 acc -> + InZ x2 s1 -> + List.In x2 (elementsZ_single y2 c2) -> + Z.succ x1 < x2. { + intros x1 x2 H_x1_in H_x2_in1 H_x2_in2. + apply H_acc_s12 => //. + rewrite InZ_cons; by left. + } + + move : (inter_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1_yc2 H_c2_neq_0). + rewrite H_inter_aux_eq. + move => [H_in_acc'] [H_in_s1'_elim] [H_in_s1'_intro] + [H_inv_acc'] H_inv_s1'. + + have H_in_acc'_s2' : forall x1 x2 : Z, + InZ x1 acc' -> InZ x2 s1' -> InZ x2 s2' -> Z.succ x1 < x2. { + move => x1 x2 /H_in_acc'. + move => []. { + move => H_in_acc H_in_s1' H_in_s2'. + apply H_acc_s12 => //. { + by apply H_in_s1'_elim. + } { + rewrite InZ_cons; by right. + } + } { + rewrite In_elementsZ_single. + move => [H_in_s1] [_] H_x1_lt _. + move => /H_gr_s2' H_lt_x2. + apply Z.le_lt_trans with (m := y2 + Z.of_N c2) => //. + by apply Z.le_succ_l. + } + } + + move : (IH s1' acc' H_inv_acc' H_inv_s1' H_inv_s2' H_in_acc'_s2'). + move => [H_inZ_res] H_inv_res. + split; last assumption. + move => y. + rewrite H_inZ_res H_in_acc' InZ_cons + In_elementsZ_single. + split. { + move => []; first by tauto. + move => [H_y_in_s1' H_y_in_s2']. + right. + split; last by right. + by apply H_in_s1'_elim. + } { + move => []. { + move => H_y_in_acc. + by left; left. + } { + move => [H_y_in_s1]. + move => []. { + move => H_in_yc2. + by left; right. + } { + right. + split; last assumption. + apply H_in_s1'_intro => //. + by apply H_gr_s2'. + } + } + } + } + } + Qed. + + Lemma inter_InZ : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + forall y, (InZ y (inter s1 s2) <-> InZ y s1 /\ InZ y s2). + Proof. + intros s1 s2 H_inv_s1 H_inv_s2 y. + rewrite /inter. + + move : (inter_aux2_props s2 s1 nil). + move => [] //. + move => H_in_inter _. + rewrite H_in_inter InZ_nil. + tauto. + Qed. + + Lemma inter_invariant : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + interval_list_invariant (inter s1 s2) = true. + Proof. + intros s1 s2 H_inv_s1 H_inv_s2. + rewrite /inter. + + move : (inter_aux2_props s2 s1 nil). + move => [] //. + Qed. + + + Global Instance inter_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (inter s1 s2). + Proof. + move => H_ok_s1 H_ok_s2. + move : (H_ok_s1) (H_ok_s2). + rewrite /Ok /IsOk /is_encoded_elems_list /add. + move => [H_inv_s1] H_pre1. + move => [H_inv_s2] H_pre2. + split. { + apply inter_invariant => //. + } { + intros y. + move : (inter_InZ s1 s2 H_inv_s1 H_inv_s2). + rewrite /InZ => ->. + move => []. + move => /H_pre1 //. + } + Qed. + + Lemma inter_spec : + forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), + In x (inter s s') <-> In x s /\ In x s'. + Proof. + intros s s' x H_ok H_ok'. + rewrite !In_InZ. + rewrite inter_InZ => //. { + apply H_ok. + } { + apply H_ok'. + } + Qed. + + + (** *** filter specification *) + + Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s). + Proof. + move => _. + rewrite /filter /from_elements. + apply add_list_ok, empty_ok. + Qed. + + Lemma filter_spec : + forall (s : t) (x : elt) (f : elt -> bool), + Proper (Enc.E.eq==>eq) f -> + (In x (filter f s) <-> In x s /\ f x = true). + Proof. + move => s x f H_prop. + rewrite /filter /from_elements add_list_spec empty_spec' /In !InA_alt. + setoid_rewrite filter_In. + split. { + move => [] //. + move => [y] [H_y_eq] [H_y_in] H_fy. + split; first by exists y. + rewrite -H_fy. + by f_equiv. + } { + move => [] [y] [H_y_eq] H_y_in H_fx. + left. + exists y. + split; last split; try assumption. + apply Logic.eq_sym. + rewrite -H_fx. + by f_equiv. + } + Qed. + + + (** *** diff specification *) + + Lemma diff_aux_alt_def : + forall (y2 : Z) (c2 : N) (s : t) acc, + diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with + (acc', s') => (acc' ++ acc, s') + end. + Proof. + intros y2 c2. + induction s as [| [y1 c1] acc' IH] => acc. { + rewrite /diff_aux app_nil_l //. + } { + simpl. + case_eq (diff_aux y2 c2 nil acc') => acc'' s'' H_eq. + case (interval_compare (y1, c1) (y2, c2)); + rewrite ?(IH ((y1, c1)::acc)) ?(IH ((y1, c1)::nil)) + ?(IH acc) ?(IH ((y1, Z.to_N (y2 - y1)) :: acc)) + ?(IH ((y1, Z.to_N (y2 - y1)) :: nil)) ?H_eq; + rewrite ?insert_intervalZ_guarded_app -?app_assoc -?app_comm_cons //. + } + Qed. + + + Lemma diff_aux_props : + forall (y2 : Z) (c2 : N) (s : t) acc, + interval_list_invariant (List.rev acc) = true -> + interval_list_invariant s = true -> + (forall x1 x2, InZ x1 acc -> InZ x2 s -> Z.succ x1 < x2) -> + (forall x, InZ x acc -> x < y2) -> + (c2 <> 0%N) -> + match (diff_aux y2 c2 acc s) with + (acc', s') => (forall y, InZ y (List.rev_append acc' s') <-> + InZ y (List.rev_append acc s) /\ ~(List.In y (elementsZ_single y2 c2))) /\ + (interval_list_invariant (List.rev_append acc' s') = true) /\ + (forall x, InZ x acc' -> x < y2 + Z.of_N c2) + end. + Proof. + intros y2 c2. + induction s as [| [y1 c1] s1' IH] => acc. { + rewrite /diff_aux -rev_alt. + move => H_inv_acc _ _ H_in_acc H_c2_neq. + split; last split. { + move => y; split; last by move => [] //. + rewrite InZ_rev. + move => H_in. split => //. + move => /In_elementsZ_single => [] [] /Z.nlt_ge H_neq. + contradict H_neq. + by apply H_in_acc. + } { + assumption. + } { + intros x H_in_acc'. + apply Z.lt_le_trans with (m := y2). { + by apply H_in_acc. + } { + by apply Z_le_add_r. + } + } + } { + rewrite interval_list_invariant_cons. + move => H_inv_acc [H_gr_s1'] [H_c1_neq_0] H_inv_s1'. + move => H_in_s1 H_in_acc H_c2_neq_0. + + rewrite diff_aux_alt_def. + case_eq (diff_aux y2 c2 nil ((y1, c1) :: s1')). + move => acc' s' H_diff_aux_eq. + + set P1 := forall y : Z, + (InZ y acc' \/ InZ y s') <-> + InZ y ((y1, c1) :: s1') /\ ~ List.In y (elementsZ_single y2 c2). + set P2 := interval_list_invariant (rev acc' ++ s') = true. + set P3 := forall x : Z, InZ x acc' -> (x < y2 + Z.of_N c2). + + suff : (P1 /\ P2 /\ P3). { + move => [H_P1] [H_P2] H_P3. + split; last split. { + move => y. + move : (H_P1 y). + rewrite !rev_append_rev rev_app_distr !InZ_app + !InZ_rev In_elementsZ_single. + suff : (InZ y acc -> ~ y2 <= y < y2 + Z.of_N c2). { + tauto. + } + move => /H_in_acc H_y_lt [H_y_ge] _. + contradict H_y_ge. + by apply Zlt_not_le. + } { + rewrite rev_append_rev rev_app_distr -app_assoc. + apply interval_list_invariant_app_intro => //. + move => x1 x2. + rewrite InZ_app !InZ_rev. + move => H_in_acc' H_x2_in_s'. + suff : (InZ x2 ((y1, c1)::s1')). { + by apply H_in_s1. + } + move : (H_P1 x2). + tauto. + } { + move => x. + rewrite InZ_app. + move => []. { + apply H_P3. + } { + move => /H_in_acc H_x_lt. + eapply Z.lt_trans; eauto. + by apply Z_lt_add_r. + } + } + } + + move : (H_gr_s1'). + rewrite interval_list_elements_greater_alt2_def => // => H_gr_s1'_alt. + + have : forall (acc : list (Z * N)), + interval_list_invariant (rev acc) = true -> + (forall x : Z, + InZ x acc <-> + ((y1 <= x < y1 + Z.of_N c1) /\ (x < y2))) -> + (y1 + Z.of_N c1 <= y2 + Z.of_N c2) -> + (diff_aux y2 c2 acc s1' = (acc', s')) -> + P1 /\ P2 /\ P3. { + + intros acc0 H_inv_acc0 H_in_acc0 H_c1_before H_diff_aux_eq0. + have H_in_s1' : (forall x1 x2 : Z, + InZ x1 acc0 -> InZ x2 s1' -> Z.succ x1 < x2). { + intros x1 x2 H_x1_in_acc0. + move => /H_gr_s1'_alt. + + eapply Z.le_lt_trans. + move : H_x1_in_acc0. + rewrite Z.le_succ_l H_in_acc0. + tauto. + } + have H_in_acc0' : (forall x : Z, InZ x acc0 -> x < y2). { + move => x. + rewrite H_in_acc0. + move => [_] //. + } + move : (IH acc0 H_inv_acc0 H_inv_s1' H_in_s1' H_in_acc0' H_c2_neq_0). + rewrite H_diff_aux_eq0 !rev_append_rev. + move => [H1] [H2] H3. + split; last split => //. { + move => y. + move : (H1 y). + rewrite !InZ_app !InZ_rev In_elementsZ_single. + move => ->. + rewrite InZ_cons In_elementsZ_single. + split. { + rewrite H_in_acc0 -(Z.nle_gt y2 y). + tauto. + } { + rewrite H_in_acc0 -(Z.nle_gt y2 y). + move => [] H_in H_nin_i2. + split; last by assumption. + move : H_in => [] H_in; last by right. + left. + omega. + } + } + } + move => {IH} IH. + + clear H_inv_acc H_in_s1 H_in_acc acc. + move : (interval_compare_elim y1 c1 y2 c2) H_diff_aux_eq. + unfold diff_aux. + case_eq (interval_compare (y1, c1) (y2, c2)) => H_comp; + fold diff_aux. { + move => H_lt_y2. + apply IH. { + by rewrite interval_list_invariant_sing. + } { + move => x. + rewrite InZ_cons In_elementsZ_single. + split; last by tauto. + move => []; last done. + move => [H_y1_le H_x_lt]. + split; first done. + eapply Z.lt_trans; eauto. + } { + apply Z.le_trans with (m := y2). + - by apply Z.lt_le_incl. + - by apply Z_le_add_r. + } + } { + move => H_eq_y2. + apply IH. { + by rewrite interval_list_invariant_sing. + } { + move => x. + rewrite InZ_cons In_elementsZ_single -H_eq_y2. + split; last by tauto. + move => []; last done. + move => []. done. + } { + rewrite H_eq_y2. + by apply Z_le_add_r. + } + } { + move => [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2. + apply IH. { + rewrite interval_list_invariant_sing. + by apply Z_to_N_minus_neq_0. + } { + move => x. + rewrite InZ_cons In_elementsZ_single Z2N.id; last omega. + replace (y1 + (y2 - y1)) with y2 by omega. + split; last tauto. + move => [] //. + move => [H_y1_le] H_x_lt. + repeat split => //. + apply Z.lt_trans with (m := y2) => //. + } { + by apply Z.lt_le_incl. + } + } { + rewrite /P1 /P2 /P3. + move => [H_y2_lt] [H_y1_lt] H_yc1_lt [H_acc'] H_s'. + clear IH P1 P2 P3 H_comp. + subst. + have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. { + rewrite Z2N.id; omega. + } + have H_nin_yc2 : forall y, + InZ y s1' -> ~ y2 <= y < y2 + Z.of_N c2. { + move => y /H_gr_s1'_alt H_lt_y. + move => [H_y2_le_y]. + apply Z.le_ngt, Z.lt_le_incl. + by apply Z.lt_trans with (m := y1 + Z.of_N c1). + } + split; last split. { + move => y. + rewrite !InZ_cons !In_elementsZ_single H_yc1_intro. + split. { + move => [] //. + move => []. { + move => [H_le_y] H_y_lt. + split. { + left; omega. + } { + move => [_]. + by apply Z.nlt_ge. + } + } { + move : (H_nin_yc2 y). tauto. + } + } { + move => [] []; last by right; right. + move => [H_y_ge] H_y_lt_yc1 H_nin_yc2'. + right; left. omega. + } + } { + rewrite interval_list_invariant_cons H_yc1_intro. + split => //. + split => //. + by apply Z_to_N_minus_neq_0. + } { + move => [] //. + } + } { + rewrite /P1 /P2 /P3. + move => [H_y12_eq] H_c12_eq [] H_acc' H_s'. + clear IH P1 P2 P3 H_comp. + subst. + split; last split. { + move => y. + rewrite InZ_cons In_elementsZ_single. + split; last by tauto. { + move => [] //. + move => H_y_in. + split; first by right. + move => [] _. + by apply Z.nlt_ge, Z.lt_le_incl, H_gr_s1'_alt. + } + } { + apply H_inv_s1'. + } { + move => x [] //. + } + } { + move => [H_y2_le_y1] [H_yc1_le_yc2] _. + apply IH. { + done. + } { + move => x. + split; first done. + omega. + } { + assumption. + } + } { + rewrite /P1 /P2 /P3. + move => [H_y1_le] [H_yc2_le_yc1] _ [] H_acc' H_s'. + clear IH P1 P2 P3 H_comp. + subst. + have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. { + rewrite Z2N.id; omega. + } + have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. { + rewrite Z2N.id; omega. + } + split; last split. { + move => y. + rewrite !InZ_insert_intervalZ_guarded + !InZ_cons !In_elementsZ_single + H_yc1_intro H_y1_intro InZ_nil. + split. { + rewrite -!or_assoc. + move => [[[]|]|] //. { + move => [H_y1_le_y] H_y_lt. + split. { + left. + split => //. + apply Z.lt_le_trans with (m := y2 + Z.of_N c2) => //. + apply Z.lt_trans with (m := y2) => //. + by apply Z_lt_add_r. + } { + move => [] /Z.le_ngt //. + } + } { + move => [H_y2c_le_y] H_y_lt_yc1. + split. { + left. + split => //. + apply Z.le_trans with (m := y2 + Z.of_N c2) => //. + apply Z.le_trans with (m := y2) => //. + apply Z_le_add_r. + } { + move => [] _ /Z.lt_nge //. + } + } { + move => H_y_in_s1'. + split; first by right. + suff H_suff : y2 + Z.of_N c2 <= y. { + move => [] _ /Z.lt_nge //. + } + apply Z.le_trans with (m := y1 + Z.of_N c1) => //. + apply Z.lt_le_incl. + by apply H_gr_s1'_alt. + } + } { + move => [] []; last by tauto. + move => [H_y1_le_y] H_y_lt H_neq_y2. + apply not_and in H_neq_y2; last by apply Z.le_decidable. + case H_neq_y2. { + move => /Z.nle_gt H_y_lt'. + left; left; done. + } { + move => /Z.nlt_ge H_le_y. + right; left; done. + } + } + } { + rewrite insert_intervalZ_guarded_rev_nil_app. + rewrite !interval_list_invariant_insert_intervalZ_guarded => //. { + rewrite H_yc1_intro => //. + } { + rewrite /insert_intervalZ_guarded. + case_eq ((Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2)) =? 0)%N). { + rewrite H_y1_intro. + move => /N.eqb_eq /N2Z.inj_iff. + rewrite Z2N.id; last first. { + by apply Z.le_0_sub. + } + move => /Zminus_eq H_yc1_eq. + eapply interval_list_elements_greater_impl; + last apply H_gr_s1'. + rewrite H_yc1_eq. + apply Z_le_add_r. + } { + move => _. + rewrite interval_list_elements_greater_cons + H_y1_intro. + by apply Z_lt_add_r. + } + } + } { + move => x. + rewrite InZ_insert_intervalZ_guarded InZ_cons In_elementsZ_single H_y1_intro InZ_nil. + move => [] //. + move => [_] H_x_lt. + apply Z.lt_le_trans with (m := y2) => //. + apply Z_le_add_r. + } + } { + rewrite /P1 /P2 /P3. + move => H_yc2_lt [] H_acc' H_s'. + clear IH P1 P2 P3 H_comp. + subst. + split; last split. { + move => y. + rewrite InZ_cons In_elementsZ_single. + split; last by tauto. { + move => [] //. + move => H_y_in. + split; first assumption. + rewrite In_elementsZ_single. + move => [] H_y2_le H_y_lt. + case H_y_in; first by omega. + move => /H_gr_s1'_alt H_lt_y. + suff : y2 + Z.of_N c2 < y. { + move => ?. omega. + } + apply Z.lt_trans with (m := y1 + Z.of_N c1) => //. + apply Z.lt_le_trans with (m := y1) => //. + apply Z_le_add_r. + } + } { + by rewrite interval_list_invariant_cons. + } { + done. + } + } { + rewrite /P1 /P2 /P3. + move => H_yc2_eq [] H_acc' H_s'. + clear IH P1 P2 P3 H_comp. + subst. + split; last split. { + move => y. + rewrite InZ_cons In_elementsZ_single. + split; last by tauto. { + move => [] //. + move => H_y_in. + split; first assumption. + rewrite In_elementsZ_single. + move => [] H_y2_le H_y_lt. + case H_y_in; first by omega. + move => /H_gr_s1'_alt H_lt_y. + suff : y2 + Z.of_N c2 < y. { + move => ?. omega. + } + apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) => //. + by apply Z_lt_add_r. + } + } { + by rewrite interval_list_invariant_cons. + } { + done. + } + } + } + Qed. + + + Lemma diff_aux2_props : + forall (s2 s1 acc : t), + interval_list_invariant (rev_append acc s1) = true -> + interval_list_invariant s2 = true -> + (forall x1 x2, InZ x1 acc -> InZ x2 s2 -> Z.succ x1 < x2) -> + ((forall y, (InZ y (diff_aux2 acc s1 s2) <-> + ((InZ y acc) \/ (InZ y s1)) /\ ~InZ y s2)) /\ + (interval_list_invariant (diff_aux2 acc s1 s2) = true)). + Proof. + induction s2 as [| [y2 c2] s2' IH]. { + move => s1 acc H_inv_acc_s1 _ _. + rewrite /diff_aux2. + replace (match s1 with + | nil => rev_append acc s1 + | _ :: _ => rev_append acc s1 + end) with (rev_append acc s1); last by case s1. + split. { + move => y. + rewrite rev_append_rev InZ_app InZ_rev InZ_nil. + tauto. + } { + assumption. + } + } { + intros s1 acc H_inv_acc_s1. + rewrite interval_list_invariant_cons. + move => [H_gr_s2'] [H_c2_neq_0] H_inv_s2'. + move => H_acc_s2. + rewrite /diff_aux2; fold diff_aux2. + case_eq s1. { + move => H_s1_eq. + split. { + move => y. + rewrite rev_append_rev InZ_app InZ_nil InZ_rev. + split; last tauto. + move => [] // H_y_in. + split; first by left. + move => H_y_in'. + move : (H_acc_s2 _ _ H_y_in H_y_in'). + apply Z.nlt_succ_diag_l. + } { + move : H_inv_acc_s1. + by rewrite H_s1_eq. + } + } { + move => [_ _] _ <-. + case_eq (diff_aux y2 c2 acc s1). + move => acc' s1' H_diff_aux_eq. + + have H_acc_lt_y2 : (forall x : Z, InZ x acc -> x < y2). { + move => x H_x_in. + have H_y2_in: (InZ y2 ((y2,c2) :: s2')). { + rewrite InZ_cons. + left. + by apply In_elementsZ_single_hd. + } + move : (H_acc_s2 _ _ H_x_in H_y2_in). + apply Z.lt_trans, Z.lt_succ_diag_r. + } + + have [H_inv_acc [H_inv_s1 H_acc_s1]] : + interval_list_invariant (rev acc) = true /\ + interval_list_invariant s1 = true /\ + (forall x1 x2 : Z, + InZ x1 acc -> InZ x2 s1 -> Z.succ x1 < x2). { + + move : H_inv_acc_s1. + rewrite rev_append_rev. + move => /interval_list_invariant_app_elim. + move => [?] [?] H_x. + split; first assumption. + split; first assumption. + move => x1 x2 H_in_x1. + apply H_x. + by rewrite InZ_rev. + } + + move : (diff_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1 H_acc_lt_y2 H_c2_neq_0). + rewrite !H_diff_aux_eq. + move => [H_inZ_res] [H_inv_res] H_inZ_acc'. + + have H_acc'_s2' : (forall x1 x2 : Z, + InZ x1 acc' -> InZ x2 s2' -> Z.succ x1 < x2). { + move => x1 x2 H_x1_in H_x2_in. + apply Z.le_lt_trans with (m := y2 + Z.of_N c2). { + apply Z.le_succ_l. + by apply H_inZ_acc'. + } { + move : H_gr_s2'. + rewrite interval_list_elements_greater_alt2_def //. + move => H_gr_s2'. + by apply H_gr_s2'. + } + } + + move : (IH s1' acc' H_inv_res H_inv_s2' H_acc'_s2'). + move => [] H_inZ_diff_res ->. + split; last done. + move => y. + rewrite H_inZ_diff_res. + move : (H_inZ_res y). + rewrite !rev_append_rev !InZ_app !InZ_rev InZ_cons. + move => ->. + tauto. + } + } + Qed. + + + Lemma diff_InZ : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + forall y, (InZ y (diff s1 s2) <-> InZ y s1 /\ ~InZ y s2). + Proof. + intros s1 s2 H_inv_s1 H_inv_s2 y. + rewrite /diff. + + move : (diff_aux2_props s2 s1 nil). + move => [] //. + move => H_in_diff _. + rewrite H_in_diff InZ_nil. + tauto. + Qed. + + Lemma diff_invariant : + forall (s1 s2 : t), + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + interval_list_invariant (diff s1 s2) = true. + Proof. + intros s1 s2 H_inv_s1 H_inv_s2. + rewrite /diff. + + move : (diff_aux2_props s2 s1 nil). + move => [] //. + Qed. + + + Global Instance diff_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (diff s1 s2). + Proof. + move => H_ok_s1 H_ok_s2. + move : (H_ok_s1) (H_ok_s2). + rewrite /Ok /IsOk /is_encoded_elems_list /add. + move => [H_inv_s1] H_pre1. + move => [H_inv_s2] H_pre2. + split. { + apply diff_invariant => //. + } { + intros y. + move : (diff_InZ s1 s2 H_inv_s1 H_inv_s2). + rewrite /InZ => ->. + move => []. + move => /H_pre1 //. + } + Qed. + + Lemma diff_spec : + forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), + In x (diff s s') <-> In x s /\ ~In x s'. + Proof. + intros s s' x H_ok H_ok'. + rewrite !In_InZ. + rewrite diff_InZ => //. { + apply H_ok. + } { + apply H_ok'. + } + Qed. + + + (** *** remove specification *) + + Lemma removeZ_alt_def : forall x s acc, + interval_list_invariant s = true -> + removeZ_aux acc x s = match diff_aux x (1%N) acc s with + (acc', s') => rev_append acc' s' + end. + Proof. + intros y2. + induction s as [| [y1 c1] s' IH]; first done. + + move => acc. + rewrite interval_list_invariant_cons /=. + move => [H_gr] [H_c1_neq_0] H_inv_s'. + move : (interval_1_compare_elim y2 y1 c1). + rewrite interval_1_compare_alt_def. + rewrite !(interval_compare_swap y1 c1 y2); last first. { + right. done. + } + move : (interval_compare_elim y1 c1 y2 (1%N)). + case_eq (interval_compare (y1, c1) (y2, (1%N))) => H_eq. { + move => H_lt_y2 _. + have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). { + by apply Z.nlt_ge, Z.lt_le_incl. + } + have H_y2_nlt : ~(y2 < y1). { + move => H_y2_y1. + apply H_yc2_nlt. + apply Z.lt_le_trans with (m := y1) => //. + apply Z_le_add_r. + } + move : (H_y2_nlt) (H_yc2_nlt) => /Z.ltb_nlt -> /Z.ltb_nlt ->. + rewrite IH //. + } { + move => H_lt_y2 _. + have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). { + apply Z.nlt_ge. + rewrite H_lt_y2. + apply Z.le_refl. + } + have H_y2_nlt : ~(y2 < y1). { + move => H_y2_y1. + apply H_yc2_nlt. + apply Z.lt_le_trans with (m := y1) => //. + apply Z_le_add_r. + } + move : (H_y2_nlt) (H_yc2_nlt) => /Z.ltb_nlt -> /Z.ltb_nlt ->. + rewrite IH //. + } { + done. + } { + done. + } { + move => [H_y1_eq] H_c1_eq. + move => [] // . + move => [H_lt_y2] H_y2_lt. + have H_y2_nlt : ~(y2 < y1). { + apply Z.nlt_ge => //. + } + move : (H_y2_nlt) (H_y2_lt) => /Z.ltb_nlt -> /Z.ltb_lt ->. + rewrite /insert_intervalZ_guarded. + + have -> : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. { + rewrite H_y1_eq H_c1_eq Z.add_1_r Z.sub_diag //. + } + + have -> : (Z.to_N (y2 - y1) =? 0 = true)%N. { + rewrite H_y1_eq Z.sub_diag //. + } + done. + } { + move => [H_y2_le] [H_yc1_le] _. + move => [] //. + move => [H_y1_le] H_y2_lt. + have H_y2_nlt : ~(y2 < y1). { + apply Z.nlt_ge => //. + } + move : (H_y2_nlt) (H_y2_lt) => /Z.ltb_nlt -> /Z.ltb_lt ->. + + have H_y1_eq : (y1 = y2) by omega. + have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). { + apply Z.le_antisymm. { + move : H_yc1_le. + rewrite Z.add_1_r //. + } { + by apply Z.le_succ_l. + } + } + + rewrite /insert_intervalZ_guarded. + have -> : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. { + rewrite H_yc1_eq Z.sub_diag //. + } + + have -> : (Z.to_N (y2 - y1) =? 0 = true)%N. { + rewrite H_y1_eq Z.sub_diag //. + } + + suff -> : diff_aux y2 (1%N) acc s' = (acc, s') by done. + + move : H_gr. + rewrite H_yc1_eq. + case s' as [| [y' c'] s'']. { + done. + } { + rewrite interval_list_elements_greater_cons /= + /interval_compare. + move => H_lt_y'. + have -> : y2 + Z.of_N 1 ?= y' = Lt. { + apply Z.compare_lt_iff. + by rewrite Z.add_1_r. + } + done. + } + } { + move => [H_y1_le] [H_yc2_le] _. + move => [] //. + move => [_] H_y2_lt. + have H_y2_nlt : ~(y2 < y1). { + apply Z.nlt_ge => //. + } + move : (H_y2_nlt) (H_y2_lt) => /Z.ltb_nlt -> /Z.ltb_lt ->. + rewrite !rev_append_rev /insert_intervalZ_guarded Z.add_1_r. + case ((Z.to_N (y2 - y1) =? 0)%N), (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0)%N. { + reflexivity. + } { + rewrite /= -!app_assoc //. + } { + reflexivity. + } { + rewrite /= -!app_assoc //. + } + } { + move => _ H_y2_lt'. + have H_y2_lt : (y2 < y1). { + apply Z.lt_trans with (m := Z.succ y2) => //. + apply Z.lt_succ_diag_r. + } + move : (H_y2_lt) => /Z.ltb_lt -> //. + } { + move => _ H_y1_eq. + have H_y2_lt : (y2 < y1). { + rewrite H_y1_eq. + apply Z.lt_succ_diag_r. + } + move : (H_y2_lt) => /Z.ltb_lt -> //. } Qed. - - (** *** singleton specification *) - - Global Instance singleton_ok x : Ok (singleton x). + Lemma removeZ_interval_list_invariant : forall s x, interval_list_invariant s = true -> interval_list_invariant (removeZ x s) = true. Proof. - rewrite singleton_alt_def. - apply add_ok. - apply empty_ok. + intros s x H_inv. + rewrite /removeZ removeZ_alt_def //. + move : (diff_aux_props x (1%N) s nil). + case_eq (diff_aux x 1%N nil s). + move => acc' s' H_eq [] //. + move => _ [] //. Qed. - Lemma singleton_spec : forall x y : elt, In y (singleton x) <-> Enc.E.eq y x. + Lemma removeZ_spec : + forall (s : t) (x y : Z) (Hs : interval_list_invariant s = true), + InZ y (removeZ x s) <-> InZ y s /\ ~Z.eq y x. Proof. - intros x y. - rewrite singleton_alt_def. - rewrite (add_spec empty x y) /empty /In elements_nil InA_nil. - split. { - move => [] //. - } { - by left. - } + intros s x y H_inv. + rewrite /removeZ removeZ_alt_def //. + move : (diff_aux_props x (1%N) s nil). + case_eq (diff_aux x 1%N nil s). + move => acc' s' H_eq [] //. + move => -> _. + rewrite rev_append_rev InZ_app InZ_rev InZ_nil + In_elementsZ_single1. + split; move => [H1 H2]; split => //; + move => H3; apply H2; by rewrite H3. Qed. - (** *** add_list specification *) - - Lemma add_list_ok : forall l s, Ok s -> Ok (add_list l s). + Global Instance remove_ok s x : forall `(Ok s), Ok (remove x s). Proof. - induction l as [| x l' IH]. { - done. + rewrite /Ok /interval_list_invariant /remove. + move => [H_is_ok_s H_enc_s]. + split. { + by apply removeZ_interval_list_invariant. } { - move => s H_s_ok /=. - apply IH. - by apply add_ok. + rewrite /is_encoded_elems_list => y. + move : (removeZ_spec s (Enc.encode x) y H_is_ok_s). + rewrite /InZ => -> [] H_y_in _. + apply H_enc_s => //. } Qed. - Lemma add_list_spec : forall x l s, Ok s -> - (In x (add_list l s) <-> (SetoidList.InA Enc.E.eq x l) \/ In x s). + Lemma remove_spec : + forall (s : t) (x y : elt) (Hs : Ok s), + In y (remove x s) <-> In y s /\ ~Enc.E.eq y x. Proof. - move => x. - induction l as [| y l' IH]. { - intros s H. - rewrite /= InA_nil. - tauto. + intros s x y Hs. + have H_rs := (remove_ok s x Hs). + rewrite /remove !In_InZ. + rewrite removeZ_spec. { + rewrite Enc.encode_eq //. } { - move => s H_ok /=. - rewrite IH add_spec InA_cons. - tauto. + apply Hs. } Qed. + (** *** remove_list specification *) @@ -1717,120 +3839,269 @@ Module Raw (Enc : ElementEncode). } Qed. - (** *** union specification *) - - Global Instance union_ok s s' : forall `(Ok s, Ok s'), Ok (union s s'). - Proof. - move => H_ok H_ok'. - rewrite /union. - by apply add_list_ok. - Qed. - - Lemma union_spec : - forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), - In x (union s s') <-> In x s \/ In x s'. + + (** *** subset specification *) + + Lemma subset_flatten_alt_def : forall (s1 s2 : t), + subset s1 s2 = + match (s1, s2) with + | (nil, _) => true + | (_ :: _, nil) => false + | ((y1, c1) :: l1, (y2, c2) :: l2) => + match (interval_compare (y1, c1) (y2,c2)) with + | ICR_before => false + | ICR_before_touch => false + | ICR_after => subset s1 l2 + | ICR_after_touch => false + | ICR_overlap_before => false + | ICR_overlap_after => false + | ICR_equal => subset l1 l2 + | ICR_subsume_1 => subset l1 s2 + | ICR_subsume_2 => false + end + end. Proof. - intros s s' x H_ok H_ok'. - rewrite /union add_list_spec //. + intros s1 s2. + case s1, s2 => //. Qed. - - (** *** filter specification *) - - Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s). + Lemma subset_props_aux : forall y1 c1 l1 y2 c2 l2, + (exists y, InZ y ((y1, c1) :: l1) /\ ~InZ y ((y2, c2) :: l2)) -> + (false = true <-> + (forall y : Z, + InZ y ((y1, c1) :: l1) -> InZ y ((y2, c2) :: l2))). Proof. - move => _. - rewrite /filter /from_elements. - apply add_list_ok, empty_ok. + intros y1 c1 l1 y2 c2 l2. + move => [y] [H_y_in H_y_nin]. + split; first done. + move => H. + contradict H_y_nin. + by apply H. Qed. - - Lemma filter_spec : - forall (s : t) (x : elt) (f : elt -> bool), - Proper (Enc.E.eq==>eq) f -> - (In x (filter f s) <-> In x s /\ f x = true). + + Lemma subset_props_aux_before : forall y1 c1 l1 y2 c2 l2, + (c1 <> 0%N) -> + interval_list_invariant ((y2, c2) :: l2) = true -> + (y1 < y2) -> + (false = true <-> + (forall y : Z, + InZ y ((y1, c1) :: l1) -> InZ y ((y2, c2) :: l2))). Proof. - move => s x f H_prop. - rewrite /filter /from_elements add_list_spec empty_spec' /In !InA_alt. - setoid_rewrite filter_In. + intros y1 c1 l1 y2 c2 l2. + rewrite interval_list_invariant_cons. + move => H_c1_neq_0 [H_gr] [H_inv_l2] H_c2_neq_0 H_y1_lt. + apply subset_props_aux. + exists y1. split. { - move => [] //. - move => [y] [H_y_eq] [H_y_in] H_fy. - split; first by exists y. - rewrite -H_fy. - by f_equiv. + rewrite InZ_cons. + left. + by apply In_elementsZ_single_hd. } { - move => [] [y] [H_y_eq] H_y_in H_fx. - left. - exists y. - split; last split; try assumption. - apply Logic.eq_sym. - rewrite -H_fx. - by f_equiv. + rewrite InZ_cons. + suff : ~ (List.In y1 (elementsZ_single y2 c2)) /\ ~ InZ y1 l2 by tauto. + split. { + rewrite In_elementsZ_single. + move => [] /Z.le_ngt //. + } { + eapply Nin_elements_greater; eauto. + apply Z.le_trans with (m := y2). { + by apply Z.lt_le_incl. + } { + apply Z_le_add_r. + } + } } Qed. - - (** *** inter specification *) - - Global Instance inter_ok s s' : forall `(Ok s, Ok s'), Ok (inter s s'). + + Lemma subset_props : forall s1 s2 : t, + interval_list_invariant s1 = true -> + interval_list_invariant s2 = true -> + (subset s1 s2 = true <-> + (forall y, InZ y s1 -> InZ y s2)). Proof. - intros H_ok H_ok'. - rewrite /inter. - by apply filter_ok. - Qed. + induction s1 as [| [y1 c1] l1 IH1]. { + move => s2 _ _. + rewrite subset_flatten_alt_def. + split; done. + } { + induction s2 as [| [y2 c2] l2 IH2]. { + rewrite interval_list_invariant_cons + subset_flatten_alt_def. + move => [_] [H_c1_neq_0] _ _. + split => //. + move => H; move : (H y1). + rewrite InZ_nil => {H} H. + contradict H. + rewrite InZ_cons; left. + by apply In_elementsZ_single_hd. + } { + move => H_inv_s1 H_inv_s2. + move : (H_inv_s1) (H_inv_s2). + rewrite !interval_list_invariant_cons. + move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. + move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. + move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + have : forall s2 : t, + interval_list_invariant s2 = true -> + (subset l1 s2 = true <-> + (forall y : Z, InZ y l1 -> InZ y s2)). { + intros. by apply IH1. + } + move => {IH1} IH1. - Lemma inter_spec : - forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), - In x (inter s s') <-> In x s /\ In x s'. - Proof. - intros s s' x Hs Hs'. - rewrite /inter. - setoid_rewrite filter_spec. { - by rewrite mem_spec. - } { - repeat red. - intros y y' H_y_y'_eq. - apply eq_true_iff_eq. - rewrite !mem_spec /In. - setoid_rewrite H_y_y'_eq. - done. + have H_yc2_nin : ~ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). { + rewrite !InZ_cons !In_elementsZ_single. + move => []. { + move => [_] /Z.lt_irrefl //. + } { + eapply Nin_elements_greater; eauto. + apply Z.le_refl. + } + } + + rewrite subset_flatten_alt_def. + move : (interval_compare_elim y1 c1 y2 c2). + case (interval_compare (y1, c1) (y2, c2)). { + move => H_lt_y2. + apply subset_props_aux_before => //. + apply Z.le_lt_trans with (m := y1 + Z.of_N c1) => //. + apply Z_le_add_r. + } { + move => H_y2_eq. + apply subset_props_aux_before => //. + rewrite -H_y2_eq. + by apply Z_lt_add_r. + } { + move => [H_y1_lt] _. + apply subset_props_aux_before => //. + } { + move => [H_y2_lt] [H_y1_lt] H_yc2_lt. + apply subset_props_aux. + exists (y2 + Z.of_N c2). + split => //. + rewrite !InZ_cons !In_elementsZ_single. + left. + split => //. + by apply Z.lt_le_incl. + } { + move => [H_y1_eq] H_c1_eq; subst. + rewrite IH1 => //. + split; move => H_pre y; move : (H_pre y) => {H_pre}; + rewrite !InZ_cons. { + tauto. + } { + move => H_pre H_y_in_l1. + suff : ~(List.In y (elementsZ_single y2 c2)). { + tauto. + } + move : H_gr_l1. + rewrite interval_list_elements_greater_alt2_def + // In_elementsZ_single. + move => H; move : (H y H_y_in_l1) => {H}. + move => /Z.lt_ngt H_neq [_] //. + } + } { + move => [H_y2_lt_y1] [H_yc1_le] _. + rewrite IH1. + split; move => H_pre y; move : (H_pre y) => {H_pre}; + rewrite !InZ_cons. { + move => H []; last apply H. move => {H}. + rewrite !In_elementsZ_single. + move => [H_y1_le] H_y_lt. + left. + omega. + } { + move => H_pre H_y_in_l1. + apply H_pre. + by right. + } { + assumption. + } + } { + move => [H_y1_le] [_] []. { + apply subset_props_aux_before => //. + } { + move => H_yc2_lt. + apply subset_props_aux. + exists (y2 + Z.of_N c2). + split => //. + rewrite !InZ_cons !In_elementsZ_single. + left. + split => //. + apply Z.le_trans with (m := y2) => //. + apply Z_le_add_r. + } + } { + move => H_yc2_lt_y1. + rewrite IH2. + split; move => H_pre y; move : (H_pre y) => {H_pre}; + rewrite !InZ_cons. { + tauto. + } { + rewrite !In_elementsZ_single. + move => H_pre H_y_in. + suff : ~(y2 <= y < y2 + Z.of_N c2). { + tauto. + } + move => [H_y2_le H_y_lt]. + move : H_y_in => []. { + move => [H_y1_le] H_y_lt'. + omega. + } { + eapply Nin_elements_greater; eauto. + apply Z.le_trans with (m := y1); last first. { + apply Z_le_add_r. + } + apply Z.lt_le_incl. + apply Z.lt_trans with (m := y2 + Z.of_N c2) => //. + } + } + } { + move => H_y1_eq. + apply subset_props_aux. + exists y1. + rewrite !InZ_cons. + split. { + left. + by apply In_elementsZ_single_hd. + } { + rewrite !In_elementsZ_single H_y1_eq. + move => []. { + move => [_] /Z.lt_irrefl //. + } { + eapply Nin_elements_greater; eauto. + rewrite H_y1_eq. + apply Z.le_refl. + } + } + } + } } - Qed. - - - (** *** diff specification *) - - Global Instance diff_ok s s' : forall `(Ok s, Ok s'), Ok (diff s s'). - Proof. - intros ? ?. - by apply remove_list_ok. - Qed. - - Lemma diff_spec : - forall (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'), - In x (diff s s') <-> In x s /\ ~In x s'. - Proof. - intros s s' x Hs Hs'. - rewrite /diff remove_list_spec. - tauto. - Qed. - - - (** *** subset specification *) - + Qed. + Lemma subset_spec : forall (s s' : t) (Hs : Ok s) (Hs' : Ok s'), subset s s' = true <-> Subset s s'. Proof. intros s s' Hs Hs'. - rewrite /subset forallb_forall /Subset. - split; ( - move => H x /In_alt_def H_x_in; - move : (H x H_x_in) => {H}; - rewrite mem_spec // - ). + move : (Hs) (Hs'). + rewrite /Ok /IsOk. + move => [H_inv_s H_enc_s] [H_inv_s' H_enc_s']. + rewrite (subset_props s s' H_inv_s H_inv_s'). + rewrite /Subset. + split. { + move => H_pre enc_y. + rewrite !In_InZ. + apply H_pre. + } { + move => H_pre y H_y_in. + move : (H_enc_s _ H_y_in) => [e] H_e. subst. + move : (H_pre e) H_y_in. + rewrite !In_InZ //. + } Qed. - + (** *** elements and elementsZ specification *) @@ -1879,7 +4150,7 @@ Module Raw (Enc : ElementEncode). apply NoDupA_nil. } { move => H_ok_s. - move : (H_ok_s) => /Ok_cons [H_inf] [H_c] [H_enc] H_s'. + move : (H_ok_s) => /Ok_cons [H_interval_list_elements_greater] [H_c] [H_enc] H_s'. rewrite elementsZ_cons. apply NoDupA_app. { apply Z.eq_equiv. @@ -1899,8 +4170,13 @@ Module Raw (Enc : ElementEncode). move : H_y_in'. rewrite -in_rev In_elementsZ_single /=. move => [H_x_le] H_y_lt. - eapply Nin_elements_greater; eauto; first apply H_s'. - by apply Z.lt_le_incl. + eapply (Nin_elements_greater s' (x + Z.of_N c)) => //. { + apply H_s'. + } { + apply Z.lt_le_incl, H_y_lt. + } { + apply H_y_in. + } } } Qed. @@ -1947,134 +4223,93 @@ Module Raw (Enc : ElementEncode). Qed. Lemma elementsZ_cons_le_start : forall x cx xs y cy ys, - isok ((x, cx) :: xs) = true -> - isok ((y, cy) :: ys) = true -> - (forall z, List.In z (elementsZ ((y, cy) :: ys)) -> - List.In z (elementsZ ((x, cx) :: xs))) -> + interval_list_invariant ((x, cx) :: xs) = true -> + interval_list_invariant ((y, cy) :: ys) = true -> + (forall z, InZ z ((y, cy) :: ys) -> + InZ z ((x, cx) :: xs)) -> (x <= y). Proof. intros x cx xs y cy ys. - rewrite !isok_cons. - move => [H_inf_xs] [H_cx] H_xs [H_inf_ys] [H_cy] H_ys H. + rewrite !interval_list_invariant_cons. + move => [H_interval_list_elements_greater_xs] [H_cx] H_xs [H_interval_list_elements_greater_ys] [H_cy] H_ys H_impl. + have H_lt_xs : (forall zz : Z, InZ zz xs -> (x + Z.of_N cx) < zz). { + apply interval_list_elements_greater_alt2_def => //. + } - case_eq (x <=? y). { - move => /Z.leb_le //. + move : (Z.lt_ge_cases y x) => [] // H_y_lt. + apply Z.le_trans with (m := x + Z.of_N cx). { + apply Z_le_add_r. } { - move => /Z.leb_gt H_y_lt. + apply Z.lt_le_incl, H_lt_xs. + have H_pre : InZ y ((y, cy) :: ys). { + rewrite InZ_cons. + left. + by apply In_elementsZ_single_hd. + } + move : (H_impl y H_pre). + rewrite InZ_cons => [] [] //. + rewrite In_elementsZ_single. + move => [H_x_le]. exfalso. - move : (H y). - have -> : (List.In y (elementsZ ((x, cx) :: xs)) <-> False). { - split => //. - rewrite elementsZ_cons in_app_iff -in_rev In_elementsZ_single. - move => []. { - suff : (~ InZ y xs). { - rewrite /InZ //. - } - eapply Nin_elements_greater; eauto. - eapply Z.le_trans with (m := x). { - by apply Z.lt_le_incl. - } { - apply Z_le_add_r. - } - } { - apply Z.lt_nge in H_y_lt. - tauto. - } - } - have -> : (List.In y (elementsZ ((y, cy) :: ys)) <-> True). { - split => // _. - rewrite elementsZ_cons in_app_iff -in_rev. - right. - apply In_elementsZ_single_hd => //. - } - tauto. + eapply Z.nlt_ge; first apply H_x_le. + done. } Qed. Lemma elementsZ_cons_le_end : forall x cx xs y cy ys, - isok ((x, cx) :: xs) = true -> - isok ((y, cy) :: ys) = true -> + interval_list_invariant ((x, cx) :: xs) = true -> + interval_list_invariant ((y, cy) :: ys) = true -> (x <= y + Z.of_N cy) -> - (forall z, List.In z (elementsZ ((x, cx) :: xs)) -> - List.In z (elementsZ ((y, cy) :: ys))) -> + (forall z, InZ z ((x, cx) :: xs) -> + InZ z ((y, cy) :: ys)) -> (x + Z.of_N cx <= y + Z.of_N cy). Proof. intros x cx xs y cy ys. - rewrite !isok_cons. - move => [H_inf_xs] [H_cx] H_xs [H_inf_ys] [H_cy] H_ys H_x_le H. + rewrite !interval_list_invariant_cons. + move => [H_interval_list_elements_greater_xs] [H_cx] H_xs [H_interval_list_elements_greater_ys] [H_cy] H_ys H_x_le H_impl. - case_eq (x + Z.of_N cx <=? y + Z.of_N cy). { - move => /Z.leb_le //. - } { - move => /Z.leb_gt H_y_lt. - exfalso. - move : (H (y + Z.of_N cy)). - have -> : ((List.In (y + Z.of_N cy)) (elementsZ ((y, cy) :: ys)) <-> False). { - split => //. - rewrite elementsZ_cons in_app_iff -in_rev In_elementsZ_single. - move => []. { - suff : (~ InZ (y + Z.of_N cy) ys). { - rewrite /InZ //. - } - eapply Nin_elements_greater; eauto. - apply Z.le_refl. - } { - move => [_] /Z.lt_irrefl //. - } - } - have -> : (List.In (y + Z.of_N cy) (elementsZ ((x, cx) :: xs)) <-> True). { - split => // _. - rewrite elementsZ_cons in_app_iff -in_rev. - right. - rewrite In_elementsZ_single => //. - } - tauto. + apply Z.nlt_ge => H_y_lt. + + have H_nin : ~(InZ (y + Z.of_N cy) ((y, cy) :: ys)). { + rewrite InZ_cons In_elementsZ_single. + move => []. { + move => [_]. + apply Z.lt_irrefl. + } { + eapply (Nin_elements_greater ys (y + Z.of_N cy)) => //. + apply Z.le_refl. + } } + apply H_nin, H_impl => {H_nin}. + + rewrite InZ_cons In_elementsZ_single. + by left. Qed. Lemma elementsZ_cons_equiv_hd : forall x cx xs y cy ys, - isok ((x, cx) :: xs) = true -> - isok ((y, cy) :: ys) = true -> - (forall z, List.In z (elementsZ ((x, cx) :: xs)) <-> - List.In z (elementsZ ((y, cy) :: ys))) -> + interval_list_invariant ((x, cx) :: xs) = true -> + interval_list_invariant ((y, cy) :: ys) = true -> + (forall z, InZ z ((x, cx) :: xs) <-> + InZ z ((y, cy) :: ys)) -> (x = y) /\ (cx = cy). Proof. - intros x cx xs y cy ys H_ok_xs H_ok_ys H. + intros x cx xs y cy ys H_ok_xs H_ok_ys H_equiv. have H_xy_eq : x = y. { - have H_x_le : (x <= y). { - eapply (elementsZ_cons_le_start); eauto. - intro z. - rewrite H => //. - } - have H_y_le : (y <= x). { - eapply (elementsZ_cons_le_start); eauto. - intro z. - rewrite H => //. - } - apply Z.le_antisymm => //. + apply Z.le_antisymm; ( + eapply (elementsZ_cons_le_start); eauto; + apply H_equiv + ). } - subst. - split => //. + subst. split => //. have : (y + Z.of_N cx = y + Z.of_N cy). { - have H_cx_le : (y + Z.of_N cx <= y + Z.of_N cy). { - eapply elementsZ_cons_le_end; eauto. { - apply Z_le_add_r. - } { - intro Z. - rewrite H => //. - } - } - have H_cy_le : (y + Z.of_N cy <= y + Z.of_N cx). { - eapply elementsZ_cons_le_end; eauto. { - apply Z_le_add_r. - } { - intro Z. - rewrite H => //. - } - } - apply Z.le_antisymm => //. + apply Z.le_antisymm; ( + eapply elementsZ_cons_le_end; eauto; [ + apply Z_le_add_r | + apply H_equiv + ] + ). } rewrite Z.add_cancel_l. apply N2Z.inj. @@ -2090,13 +4325,13 @@ Module Raw (Enc : ElementEncode). Proof. intros x cx y cy H_cx H_cy H. apply elementsZ_cons_equiv_hd with (xs := nil) (ys := nil). { - rewrite isok_cons //. + rewrite interval_list_invariant_cons //. } { - rewrite isok_cons //. + rewrite interval_list_invariant_cons //. } { intro z. move : (H z) => {H}. - rewrite !elementsZ_cons !in_app_iff !elementsZ_nil -!in_rev /= => -> //. + rewrite !InZ_cons => -> //. } Qed. @@ -2126,14 +4361,14 @@ Module Raw (Enc : ElementEncode). rewrite /InZ. move => H_in. - have [H_ok_xs H_inf_xs] : Ok xs /\ inf (x + Z.of_N cx) xs = true. { + have [H_ok_xs H_interval_list_elements_greater_xs] : Ok xs /\ interval_list_elements_greater (x + Z.of_N cx) xs = true. { move : H_ok_xxs => /Ok_cons; tauto. } - have [H_ok_ys H_inf_ys] : Ok ys /\ inf (y + Z.of_N cy) ys = true. { + have [H_ok_ys H_interval_list_elements_greater_ys] : Ok ys /\ interval_list_elements_greater (y + Z.of_N cy) ys = true. { move : H_ok_yys => /Ok_cons. tauto. } - have H_isok_xs : isok xs=true by apply H_ok_xs. - have H_isok_ys : isok ys=true by apply H_ok_ys. + have H_isok_xs : interval_list_invariant xs=true by apply H_ok_xs. + have H_isok_ys : interval_list_invariant ys=true by apply H_ok_ys. have [H_x_eq H_cx_eq] : (x = y) /\ (cx = cy). { eapply elementsZ_cons_equiv_hd. @@ -2148,8 +4383,8 @@ Module Raw (Enc : ElementEncode). move => z. move : (H_in z) => {H_in}. - move : (Nin_elements_greater _ _ H_inf_xs H_isok_xs z). - move : (Nin_elements_greater _ _ H_inf_ys H_isok_ys z). + move : (Nin_elements_greater _ _ H_interval_list_elements_greater_xs H_isok_xs z). + move : (Nin_elements_greater _ _ H_interval_list_elements_greater_ys H_isok_ys z). rewrite /InZ !elementsZ_cons !in_app_iff -!in_rev !In_elementsZ_single. move => H_nin_ys H_nin_xs H_equiv. split. { @@ -2218,40 +4453,53 @@ Module Raw (Enc : ElementEncode). (** *** choose specification *) - Lemma choose_alt_def : forall s, - choose s = match chooseZ s with - | None => None - | Some e => Some (Enc.decode e) - end. - Proof. + Definition chooseZ_spec1 : + forall (s : t) (x : Z), + interval_list_invariant s = true -> + chooseZ s = Some x -> InZ x s. + Proof. + intros s x. + case s as [| [x' c] s']. { + rewrite /chooseZ //. + } { + rewrite /chooseZ InZ_cons interval_list_invariant_cons. + move => [_] [H_c_neq] _ [->]. + left. + by apply In_elementsZ_single_hd. + } + Qed. + + Definition chooseZ_spec2 : + forall (s : t), + chooseZ s = None -> forall x, ~InZ x s. + Proof. intros s. - rewrite /choose /chooseZ /elements /rev' rev_append_rev app_nil_r - rev_map_alt_def -map_rev. - case (rev (elementsZ s)) => //. + case s as [| [x' c] s']; + rewrite /chooseZ //. + move => _ x //. Qed. Definition choose_spec1 : - forall (s : t) (x : elt), choose s = Some x -> In x s. + forall (s : t) (x : elt) (Hs : Ok s), choose s = Some x -> In x s. Proof. - intros s x. - rewrite /choose /In. - case (elements s) => //. - move => z l [<-]. - apply InA_cons_hd. - apply Enc.E.eq_equiv. + rewrite /choose. + move => s x H_ok. + case_eq (chooseZ s) => //. + move => z H_choose [<-]. + apply InZ_In => //. + apply chooseZ_spec1 => //. + apply H_ok. Qed. Definition choose_spec2 : forall s : t, choose s = None -> Empty s. Proof. - rewrite /choose /Empty /In. - intro s. - case (elements s) => //. - move => _ a. - rewrite InA_nil //. + rewrite /choose /chooseZ /Empty /In. + case s as [| [x' c] s'] => //. + move => _ e. + rewrite elements_nil InA_nil //. Qed. - Lemma chooseZ_min : forall (s : t) (x y : Z) (Hs : Ok s), chooseZ s = Some x -> InZ y s -> ~ Z.lt y x. @@ -2260,13 +4508,9 @@ Module Raw (Enc : ElementEncode). eapply (Nin_elements_greater s (Z.pred x)) => //; last apply H_in. { move : H_ok H_min. case s => //. - move => [z c] s'. - rewrite /chooseZ Ok_cons elementsZ_cons /rev' -rev_alt rev_app_distr - rev_involutive. - move => [_] [/N.neq_0_r] [c'] -> _. - rewrite elementsZ_single_succ_front /=. - move => [->]. - apply Z.ltb_lt, Z.lt_pred_l. + move => [z c] s' _ [<-]. + rewrite interval_list_elements_greater_cons. + apply Z.lt_pred_l. } { apply H_ok. } { @@ -2274,18 +4518,6 @@ Module Raw (Enc : ElementEncode). } Qed. - Lemma chooseZ_InZ : - forall (s : t) (x : Z), - chooseZ s = Some x -> InZ x s. - Proof. - intros s x. - rewrite /chooseZ /InZ /rev' -rev_alt in_rev. - case (rev (elementsZ s)) => //. - move => z l [<-] /=. - by left. - Qed. - - Lemma chooseZ_spec3: forall s s' x x', Ok s -> Ok s' -> chooseZ s = Some x -> chooseZ s' = Some x' -> Equal s s' -> x = x'. Proof. @@ -2295,6 +4527,7 @@ Module Raw (Enc : ElementEncode). rewrite H_s_eq => -> [] //. Qed. + (** *** fold specification *) Lemma fold_spec : @@ -2522,7 +4755,7 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. Lemma elements_spec2w : NoDupA E.eq (elements s). Proof. exact (Raw.elements_spec2w _ _). Qed. Lemma choose_spec1 : choose s = Some x -> In x s. - Proof. exact (Raw.choose_spec1 _ _). Qed. + Proof. exact (Raw.choose_spec1 _ _ _). Qed. Lemma choose_spec2 : choose s = None -> Empty s. Proof. exact (Raw.choose_spec2 _). Qed. @@ -2607,3 +4840,5 @@ End ElementEncodeNat. Module MSetIntervalsNat <: WSetsOn NPeano.Nat := MSetIntervals ElementEncodeNat. + + From c7d98c561ab210d74c10417866af9a4453877127 Mon Sep 17 00:00:00 2001 From: Thomas Tuerk Date: Mon, 3 Oct 2016 23:46:11 +0200 Subject: [PATCH 2/7] MSetIntervals: implement opertions more efficiently, implement strong set interface This commit implements the full ordered set interface with interval sets. Moreover a decent folding operator for interval sets is defined. This is used to implement certain operations more efficiently: - fold - for_all - exists_ - filter - partition --- MSetIntervals.v | 1886 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 1500 insertions(+), 386 deletions(-) diff --git a/MSetIntervals.v b/MSetIntervals.v index 930c8e9..2095774 100644 --- a/MSetIntervals.v +++ b/MSetIntervals.v @@ -23,12 +23,14 @@ * * 25-09-2016 Thomas Tuerk * implement union, inter, diff, subset, choose efficiently + * 03-10-2016 Thomas Tuerk + * implement fold, exists_, for_all, filter, partition efficiently *) (** * Weak sets implemented by interval lists - This file contains an implementation of the weak set interface - [WSetsOn] which uses internally intervals of Z. This allows some + This file contains an implementation of the set interface + [SetsOn] which uses internally intervals of Z. This allows some large sets, which naturally map to intervals of integers to be represented very efficiently. @@ -186,7 +188,7 @@ Qed. provides encode and decode function. *) Module Type ElementEncode. - Declare Module E : DecidableType. + Declare Module E : OrderedType. Parameter encode : E.t -> Z. Parameter decode : Z -> E.t. @@ -202,6 +204,10 @@ Module Type ElementEncode. Axiom encode_eq : forall (e1 e2 : E.t), (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2. + (** Encoding is compatible with the order of elements. *) + Axiom encode_lt : forall (e1 e2 : E.t), + (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2. + End ElementEncode. @@ -226,7 +232,7 @@ End ElementEncode. the decode function when checking it. This allows for sets with other element types than Z. *) -Module Ops (Enc : ElementEncode) <: WOps Enc.E. +Module Ops (Enc : ElementEncode) <: Ops Enc.E. Definition elt := Enc.E.t. Definition t := list (Z * N). @@ -245,29 +251,34 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. apply N.lt_pred_l. discriminate. Defined. - - Fixpoint elementsZ_aux'' (acc : list Z) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : list Z := - match c as c0 return c = c0 -> list Z with - | N0 => fun _ => acc - | c => fun Heq => elementsZ_aux'' (x::acc) (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) + + Fixpoint fold_elementsZ_aux {A} (f : A -> Z -> option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool * A) := + match c as c0 return c = c0 -> (bool * A) with + | N0 => fun _ => (false, acc) + | c => fun Heq => match (f acc x) with + | None => (true, acc) + | Some acc' => + fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end end (refl_equal _). - Definition elementsZ_aux' acc x c := elementsZ_aux'' acc x c (lt_wf_0 _). + Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _). - Fixpoint elementsZ_aux acc (s : t) : list Z := + Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool * A) := match s with - | nil => acc - | (x, c) :: s' => - elementsZ_aux (elementsZ_aux' acc x c) s' + | nil => (false, acc) + | (x, c) :: s' => + match fold_elementsZ_single f acc x c with + (false, acc') => fold_elementsZ f acc' s' + | (true, acc') => (true, acc') + end end. Definition elementsZ (s : t) : list Z := - elementsZ_aux nil s. + snd (fold_elementsZ (fun l x => Some (x :: l)) nil s). Definition elements (s : t) : list elt := rev_map Enc.decode (elementsZ s). - - + (** membership is easily defined *) Fixpoint memZ (x : Z) (s : t) := match s with @@ -330,6 +341,23 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. end end. + Fixpoint compare (s1 s2 : t) := + match (s1, s2) with + | (nil, nil) => Eq + | (nil, _ :: _) => Lt + | (_ :: _, nil) => Gt + | ((y1, c1)::s1', (y2, c2)::s2') => + match (Z.compare y1 y2) with + | Lt => Lt + | Gt => Gt + | Eq => match N.compare c1 c2 with + | Lt => Lt + | Gt => Gt + | Eq => compare s1' s2' + end + end + end. + (** Auxiliary functions for inserting at front and merging intervals *) Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N := (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))). @@ -363,8 +391,8 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition addZ x s := addZ_aux nil x s. Definition add x s := addZ (Enc.encode x) s. - (** [add_list] simple extension to add many elements, which then allows to - define from_elements. *) + (** [add_list] is a simple extension to add many elements. + This is used to define the function [from_elements]. *) Definition add_list (l : list elt) (s : t) : t := List.fold_left (fun s x => add x s) l s. @@ -517,23 +545,104 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition inter s1 s2 := inter_aux2 nil s1 s2. + + (** Partition and filter *) + + Definition partitionZ_fold_insert + (cur : option (Z * N)) (x : Z) := + match cur with + None => (x, 1%N) + | Some (y, c) => (y, N.succ c) + end. + + Definition partitionZ_fold_skip (acc : list (Z * N)) + (cur : option (Z * N)) : (list (Z * N)) := + match cur with + None => acc + | Some yc => yc::acc + end. - (** Simple wrappers *) + Definition partitionZ_fold_fun f st (x : Z) := + match st with ((acc_t, c_t), (acc_f, c_f)) => + if (f x) then + ((acc_t, Some (partitionZ_fold_insert c_t x)), + (partitionZ_fold_skip acc_f c_f, None)) + else + ((partitionZ_fold_skip acc_t c_t, None), + (acc_f, Some (partitionZ_fold_insert c_f x))) + end. + + Definition partitionZ_single_aux f st (x : Z) (c : N) := + snd (fold_elementsZ_single (fun st x => Some (partitionZ_fold_fun f st x)) st x c). + + Definition partitionZ_single f acc_t acc_f x c := + match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with + | ((acc_t, c_t), (acc_f, c_f)) => + (partitionZ_fold_skip acc_t c_t, + partitionZ_fold_skip acc_f c_f) + end. + + Fixpoint partitionZ_aux acc_t acc_f f s := + match s with + | nil => (List.rev acc_t, List.rev acc_f) + | (y, c) :: s' => + match partitionZ_single f acc_t acc_f y c with + | (acc_t', acc_f') => partitionZ_aux acc_t' acc_f' f s' + end + end. + + Definition partitionZ := partitionZ_aux nil nil. + + Definition partition (f : elt -> bool) : t -> (t * t) := + partitionZ (fun z => f (Enc.decode z)). + + + Definition filterZ_fold_fun f st (x : Z) := + match st with (acc_t, c_t) => + if (f x) then + (acc_t, Some (partitionZ_fold_insert c_t x)) + else + (partitionZ_fold_skip acc_t c_t, None) + end. + + Definition filterZ_single_aux f st (x : Z) (c : N) := + snd (fold_elementsZ_single (fun st x => Some (filterZ_fold_fun f st x)) st x c). + + Definition filterZ_single f acc x c := + match filterZ_single_aux f (acc, None) x c with + | (acc, c) => + (partitionZ_fold_skip acc c) + end. + + Fixpoint filterZ_aux acc f s := + match s with + | nil => (List.rev acc) + | (y, c) :: s' => + filterZ_aux (filterZ_single f acc y c) f s' + end. + + Definition filterZ := filterZ_aux nil. + + Definition filter (f : elt -> bool) : t -> t := + filterZ (fun z => f (Enc.decode z)). - Definition filter (f : elt -> bool) (s : t) : t := - from_elements (List.filter f (elements s)). + + (** Simple wrappers *) Definition fold {B : Type} (f : elt -> B -> B) (s : t) (i : B) : B := - List.fold_left (flip f) (elements s) i. + snd (fold_elementsZ (fun b z => Some (f (Enc.decode z) b)) i s). Definition for_all (f : elt -> bool) (s : t) : bool := - List.forallb f (elements s). + snd (fold_elementsZ (fun b z => + if b then + Some (f (Enc.decode z)) + else None) true s). Definition exists_ (f : elt -> bool) (s : t) : bool := - List.existsb f (elements s). - - Definition partition (f : elt -> bool) (s : t) : t * t := - (filter f s, filter (fun x => negb (f x)) s). + snd (fold_elementsZ (fun b z => + if b then + None + else Some (f (Enc.decode z))) false s). Fixpoint cardinalN c (s : t) : N := match s with | nil => c @@ -542,18 +651,33 @@ Module Ops (Enc : ElementEncode) <: WOps Enc.E. Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s). - Definition chooseZ (s : t) : option Z := + Definition min_eltZ (s : t) : option Z := match s with | nil => None | (x, _) :: _ => Some x end. - Definition choose (s : t) : option elt := - match (chooseZ s) with + Definition min_elt (s : t) : option elt := + match (min_eltZ s) with | None => None | Some x => Some (Enc.decode x) end. + Definition choose := min_elt. + + Fixpoint max_eltZ (s : t) : option Z := + match s with + | nil => None + | (x, c) :: nil => Some (Z.pred (x + Z.of_N c)) + | (x, _) :: s' => max_eltZ s' + end. + + Definition max_elt (s : t) : option elt := + match (max_eltZ s) with + | None => None + | Some x => Some (Enc.decode x) + end. + End Ops. @@ -710,85 +834,181 @@ Module Raw (Enc : ElementEncode). } Qed. - Lemma elementsZ_aux''_irrel : forall c acc x H1 H2, - elementsZ_aux'' acc x c H1 = elementsZ_aux'' acc x c H2. + Lemma fold_elementsZ_aux_irrel {A} : + forall f c (acc : A) x H1 H2, + fold_elementsZ_aux f acc x c H1 = + fold_elementsZ_aux f acc x c H2. Proof. - intro c. - induction c using (well_founded_ind lt_wf_0). + intros f c. + induction c as [c IH] using (well_founded_ind lt_wf_0). case_eq c. { - intros H_c acc x; case; intro; case; intro. + intros H_c acc x; case; intro H_H1; case; intro H_H2. reflexivity. } { - intros p H_c acc x; case; intro; case; intro. - simpl. - apply H. + intros p H_c acc x; case; intro H_H1; case; intro H_H2. + unfold fold_elementsZ_aux; fold (@fold_elementsZ_aux A). + case (f acc x) => // acc'. + apply IH. rewrite H_c. - rewrite N.pos_pred_spec. apply N.lt_pred_l. discriminate. } Qed. - Lemma elementsZ_aux'_pos : forall s x p, - elementsZ_aux' s x (N.pos p) = elementsZ_aux' (x::s) (Z.succ x) (Pos.pred_N p). + Lemma fold_elementsZ_single_pos {A} : forall f (acc : A) x p, + fold_elementsZ_single f acc x (N.pos p) = + match f acc x with + | Some acc' => + fold_elementsZ_single f acc' (Z.succ x) + (N.pred (N.pos p)) + | None => (true, acc) + end. Proof. - intros s x p. - unfold elementsZ_aux'. - unfold elementsZ_aux''. + intros f acc x p. + unfold fold_elementsZ_single. + unfold fold_elementsZ_aux. case: (lt_wf_0 _). + fold (@fold_elementsZ_aux A). intro. - apply elementsZ_aux''_irrel. + case (f acc x) => // acc'. + apply fold_elementsZ_aux_irrel. Qed. - Lemma elementsZ_aux'_zero : forall s x, - elementsZ_aux' s x (0%N) = s. + Lemma fold_elementsZ_single_zero {A} : forall f (acc : A) x, + fold_elementsZ_single f acc x (0%N) = (false, acc). Proof. - intros s x. - unfold elementsZ_aux'. - by case (lt_wf_0 (0%N)); intro. + intros f acc x. + unfold fold_elementsZ_single. + case (lt_wf_0 (0%N)); intro. + unfold fold_elementsZ_aux. + reflexivity. + Qed. + + + Lemma fold_elementsZ_single_succ {A} : forall f (acc : A) x c, + fold_elementsZ_single f acc x (N.succ c) = + match f acc x with + | Some acc' => + fold_elementsZ_single f acc' (Z.succ x) c + | None => (true, acc) + end. + Proof. + intros f acc x c. + case c. { + by rewrite fold_elementsZ_single_pos. + } { + intro p; simpl. + rewrite fold_elementsZ_single_pos. + case (f acc x) => // acc' /=. + by rewrite Pos.pred_N_succ. + } Qed. + Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool * A) := + match bs with + | nil => (false, acc) + | (b :: bs') => + match f acc b with + | Some acc' => fold_opt f acc' bs' + | None => (true, acc) + end + end. - Lemma elementsZ_aux'_succ : forall s x c, - elementsZ_aux' s x (N.succ c) = elementsZ_aux' (x::s) (Z.succ x) c. + Lemma fold_opt_list_cons : forall {A} (bs : list A) (acc : list A), + fold_opt (fun l x => Some (x :: l)) acc bs = + (false, List.rev bs ++ acc). Proof. - intros s x c. - case c. - - by rewrite elementsZ_aux'_pos. - - intro p; simpl. - rewrite elementsZ_aux'_pos. - by rewrite Pos.pred_N_succ. + induction bs as [| b bs' IH] => acc. { + by simpl. + } { + rewrite /= IH -app_assoc //. + } Qed. + Lemma fold_opt_app {A B} : forall f (acc : A) (l1 l2 : list B), + fold_opt f acc (l1 ++ l2) = + (let (ab, acc') := fold_opt f acc l1 in + if ab then (true, acc') else fold_opt f acc' l2). + Proof. + intros f acc l1 l2. + move : acc. + induction l1 as [| b l1' IH] => acc. { + rewrite app_nil_l //. + } { + rewrite /=. + case (f acc b); last done. + intro acc'. + rewrite IH //. + } + Qed. - Lemma elementsZ_single_intro : forall c s x, - elementsZ_aux' s x c = - (List.rev (elementsZ_single x c)) ++ s. + + Lemma fold_elementsZ_single_alt_def {A} : forall f c (acc : A) x, + fold_elementsZ_single f acc x c = + fold_opt f acc (elementsZ_single x c). Proof. + intro f. induction c as [| c' IH] using N.peano_ind. { - intros s x. - rewrite elementsZ_aux'_zero. - rewrite elementsZ_single_base //. + intros acc x. + rewrite fold_elementsZ_single_zero + elementsZ_single_base /fold_opt //. } { - intros s x. - rewrite elementsZ_aux'_succ elementsZ_single_succ_front IH. - rewrite -app_assoc /= //. + intros acc x. + rewrite fold_elementsZ_single_succ + elementsZ_single_succ_front /=. + case (f acc x); last reflexivity. + intro acc'. + apply IH. } Qed. + Lemma fold_elementsZ_nil {A} : forall f (acc : A), + fold_elementsZ f acc nil = (false, acc). + Proof. done. Qed. - Lemma elementsZ_aux_alt_def : forall s acc, - elementsZ_aux acc s = elementsZ s ++ acc. + Lemma fold_elementsZ_cons {A} : forall f (acc : A) y c s, + fold_elementsZ f acc ((y, c)::s) = + (let (ab, acc') := fold_elementsZ_single f acc y c in + if ab then (true, acc') else fold_elementsZ f acc' s). Proof. - induction s as [| [x c] s' IH]. { - move => acc. - rewrite /elementsZ_aux elementsZ_nil app_nil_l //. + intros f acc y c s. + done. + Qed. + + + Lemma fold_elementsZ_alt_def_aux : forall (s : t) base, + (snd (fold_elementsZ + (fun (l : list Z) (x : Z) => Some (x :: l)) base s)) = + elementsZ s ++ base. + Proof. + induction s as [| [y1 c1] s' IH] => base. { + rewrite elementsZ_nil /fold_elementsZ /fold_opt /snd + app_nil_l //. + } { + rewrite /elementsZ !fold_elementsZ_cons. + rewrite !fold_elementsZ_single_alt_def !fold_opt_list_cons. + rewrite !IH app_nil_r app_assoc //. + } + Qed. + + + Lemma fold_elementsZ_alt_def {A} : forall f s (acc : A), + fold_elementsZ f acc s = + fold_opt f acc (rev (elementsZ s)). + Proof. + intro f. + induction s as [| [y1 c1] s' IH] => acc. { + by simpl. } { - move => acc. - rewrite /elementsZ /elementsZ_aux -/elementsZ_aux !IH !elementsZ_single_intro. - rewrite -!app_assoc app_nil_l //. + rewrite /elementsZ !fold_elementsZ_cons. + rewrite !fold_elementsZ_single_alt_def + fold_opt_list_cons app_nil_r + fold_elementsZ_alt_def_aux rev_app_distr + rev_involutive fold_opt_app. + case (fold_opt f acc (elementsZ_single y1 c1)). + move => [] //. } Qed. @@ -796,8 +1016,12 @@ Module Raw (Enc : ElementEncode). ((elementsZ s) ++ (List.rev (elementsZ_single x c))). Proof. intros x c s. - rewrite /elementsZ /elementsZ_aux -/elementsZ_aux. - rewrite !elementsZ_aux_alt_def elementsZ_single_intro !app_nil_r //. + rewrite /elementsZ fold_elementsZ_cons + !fold_elementsZ_alt_def + fold_elementsZ_single_alt_def. + rewrite !fold_opt_list_cons. + rewrite !app_nil_r !rev_involutive /=. + rewrite fold_elementsZ_alt_def_aux //. Qed. Lemma elements_cons : forall x c s, elements (((x, c) :: s) : t) = @@ -899,7 +1123,7 @@ Module Raw (Enc : ElementEncode). } Qed. - + (** *** comparing intervals *) Ltac Z_named_compare_cases H := match goal with @@ -1405,6 +1629,16 @@ Module Raw (Enc : ElementEncode). (** *** Properties of In and InZ *) + Lemma encode_decode_eq : forall x s, Ok s -> InZ x s -> + (Enc.encode (Enc.decode x) = x). + Proof. + intros x s. + rewrite /Ok /IsOk /InZ. + move => [_] H_enc H_in_x. + move : (H_enc _ H_in_x) => [x'] <-. + rewrite Enc.decode_encode_ok //. + Qed. + Lemma In_alt_def : forall x s, Ok s -> (In x s <-> List.In x (elements s)). Proof. @@ -1412,7 +1646,7 @@ Module Raw (Enc : ElementEncode). rewrite /In InA_alt /elements rev_map_alt_def. split. { move => [y] [H_y_eq]. - rewrite -!in_rev !in_map_iff. + rewrite -!in_rev !in_map_iff. move => [x'] [H_y_eq'] H_x'_in. suff H_x'_eq : (Enc.encode x = x'). { exists x'. @@ -1472,7 +1706,7 @@ Module Raw (Enc : ElementEncode). by rewrite Enc.decode_encode_ok. Qed. - + (** *** Membership specification *) Lemma memZ_spec : @@ -2958,41 +3192,6 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, Qed. - (** *** filter specification *) - - Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s). - Proof. - move => _. - rewrite /filter /from_elements. - apply add_list_ok, empty_ok. - Qed. - - Lemma filter_spec : - forall (s : t) (x : elt) (f : elt -> bool), - Proper (Enc.E.eq==>eq) f -> - (In x (filter f s) <-> In x s /\ f x = true). - Proof. - move => s x f H_prop. - rewrite /filter /from_elements add_list_spec empty_spec' /In !InA_alt. - setoid_rewrite filter_In. - split. { - move => [] //. - move => [y] [H_y_eq] [H_y_in] H_fy. - split; first by exists y. - rewrite -H_fy. - by f_equiv. - } { - move => [] [y] [H_y_eq] H_y_in H_fx. - left. - exists y. - split; last split; try assumption. - apply Logic.eq_sym. - rewrite -H_fx. - by f_equiv. - } - Qed. - - (** *** diff specification *) Lemma diff_aux_alt_def : @@ -4222,195 +4421,37 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } Qed. - Lemma elementsZ_cons_le_start : forall x cx xs y cy ys, - interval_list_invariant ((x, cx) :: xs) = true -> - interval_list_invariant ((y, cy) :: ys) = true -> - (forall z, InZ z ((y, cy) :: ys) -> - InZ z ((x, cx) :: xs)) -> - (x <= y). - Proof. - intros x cx xs y cy ys. - rewrite !interval_list_invariant_cons. - move => [H_interval_list_elements_greater_xs] [H_cx] H_xs [H_interval_list_elements_greater_ys] [H_cy] H_ys H_impl. - have H_lt_xs : (forall zz : Z, InZ zz xs -> (x + Z.of_N cx) < zz). { - apply interval_list_elements_greater_alt2_def => //. - } - - move : (Z.lt_ge_cases y x) => [] // H_y_lt. - apply Z.le_trans with (m := x + Z.of_N cx). { - apply Z_le_add_r. - } { - apply Z.lt_le_incl, H_lt_xs. - have H_pre : InZ y ((y, cy) :: ys). { - rewrite InZ_cons. - left. - by apply In_elementsZ_single_hd. - } - move : (H_impl y H_pre). - rewrite InZ_cons => [] [] //. - rewrite In_elementsZ_single. - move => [H_x_le]. - exfalso. - eapply Z.nlt_ge; first apply H_x_le. - done. - } - Qed. - - Lemma elementsZ_cons_le_end : forall x cx xs y cy ys, - interval_list_invariant ((x, cx) :: xs) = true -> - interval_list_invariant ((y, cy) :: ys) = true -> - (x <= y + Z.of_N cy) -> - (forall z, InZ z ((x, cx) :: xs) -> - InZ z ((y, cy) :: ys)) -> - (x + Z.of_N cx <= y + Z.of_N cy). - Proof. - intros x cx xs y cy ys. - rewrite !interval_list_invariant_cons. - move => [H_interval_list_elements_greater_xs] [H_cx] H_xs [H_interval_list_elements_greater_ys] [H_cy] H_ys H_x_le H_impl. - - apply Z.nlt_ge => H_y_lt. - - have H_nin : ~(InZ (y + Z.of_N cy) ((y, cy) :: ys)). { - rewrite InZ_cons In_elementsZ_single. - move => []. { - move => [_]. - apply Z.lt_irrefl. - } { - eapply (Nin_elements_greater ys (y + Z.of_N cy)) => //. - apply Z.le_refl. - } - } - apply H_nin, H_impl => {H_nin}. - - rewrite InZ_cons In_elementsZ_single. - by left. - Qed. - - - Lemma elementsZ_cons_equiv_hd : forall x cx xs y cy ys, - interval_list_invariant ((x, cx) :: xs) = true -> - interval_list_invariant ((y, cy) :: ys) = true -> - (forall z, InZ z ((x, cx) :: xs) <-> - InZ z ((y, cy) :: ys)) -> - (x = y) /\ (cx = cy). - Proof. - intros x cx xs y cy ys H_ok_xs H_ok_ys H_equiv. - have H_xy_eq : x = y. { - apply Z.le_antisymm; ( - eapply (elementsZ_cons_le_start); eauto; - apply H_equiv - ). - } - subst. split => //. - - have : (y + Z.of_N cx = y + Z.of_N cy). { - apply Z.le_antisymm; ( - eapply elementsZ_cons_le_end; eauto; [ - apply Z_le_add_r | - apply H_equiv - ] - ). - } - rewrite Z.add_cancel_l. - apply N2Z.inj. - Qed. - - - Lemma elementsZ_single_equiv : forall x cx y cy, - (cx <> 0)%N -> - (cy <> 0)%N -> - (forall z, List.In z (elementsZ_single x cx) <-> - List.In z (elementsZ_single y cy)) -> - (x = y) /\ (cx = cy). - Proof. - intros x cx y cy H_cx H_cy H. - apply elementsZ_cons_equiv_hd with (xs := nil) (ys := nil). { - rewrite interval_list_invariant_cons //. - } { - rewrite interval_list_invariant_cons //. - } { - intro z. - move : (H z) => {H}. - rewrite !InZ_cons => -> //. - } - Qed. - Lemma equal_elementsZ : forall (s s' : t) {Hs : Ok s} {Hs' : Ok s'}, (forall x, (InZ x s <-> InZ x s')) -> (s = s'). Proof. - induction s as [| [x cx] xs IH]. { - move => [] //. - move => [y cy ys] _ /Ok_cons [_] [H_cy] _. - rewrite /InZ elementsZ_nil /= => H. - exfalso. - rewrite (H y) elementsZ_cons in_app_iff -in_rev. - right. - apply In_elementsZ_single_hd => //. - } { - move => []. { - move => /Ok_cons [_] [H_xc] _ _. - rewrite /InZ elementsZ_nil /= => H. - exfalso. - rewrite -(H x) elementsZ_cons in_app_iff -in_rev. - right. - apply In_elementsZ_single_hd => //. - } { - move => [y cy ys] H_ok_xxs H_ok_yys. - rewrite /InZ. - move => H_in. - - have [H_ok_xs H_interval_list_elements_greater_xs] : Ok xs /\ interval_list_elements_greater (x + Z.of_N cx) xs = true. { - move : H_ok_xxs => /Ok_cons; tauto. - } - have [H_ok_ys H_interval_list_elements_greater_ys] : Ok ys /\ interval_list_elements_greater (y + Z.of_N cy) ys = true. { - move : H_ok_yys => /Ok_cons. tauto. - } - have H_isok_xs : interval_list_invariant xs=true by apply H_ok_xs. - have H_isok_ys : interval_list_invariant ys=true by apply H_ok_ys. - - have [H_x_eq H_cx_eq] : (x = y) /\ (cx = cy). { - eapply elementsZ_cons_equiv_hd. - - by apply H_ok_xxs. - - by apply H_ok_yys. - - by apply H_in. - } - subst. - - suff -> : (xs = ys) by []. - suff H_suff : (forall x : Z, InZ x xs <-> InZ x ys) by apply IH. - - move => z. - move : (H_in z) => {H_in}. - move : (Nin_elements_greater _ _ H_interval_list_elements_greater_xs H_isok_xs z). - move : (Nin_elements_greater _ _ H_interval_list_elements_greater_ys H_isok_ys z). - rewrite /InZ !elementsZ_cons !in_app_iff -!in_rev !In_elementsZ_single. - move => H_nin_ys H_nin_xs H_equiv. - split. { - move => H_z_in. - have : List.In z (elementsZ ys) \/ y <= z < y + Z.of_N cy. { - rewrite -H_equiv. - by left. - } - move => [] //. - move => [_] /Z.lt_le_incl H_z_le. - contradict H_z_in. - by apply H_nin_xs. - } { - move => H_z_in. - have : List.In z (elementsZ xs) \/ y <= z < y + Z.of_N cy. { - rewrite H_equiv. - by left. - } - move => [] //. - move => [_] /Z.lt_le_incl H_z_le. - contradict H_z_in. - by apply H_nin_ys. - } - } + intros s s'. + move => H_ok_s H_ok_s' H_InZ_eq. + have [] : ((subset s s' = true) /\ (subset s' s = true)). { + rewrite !subset_spec /Subset. + split => x; rewrite !In_InZ H_InZ_eq //. } + have : interval_list_invariant s' = true by apply H_ok_s'. + have : interval_list_invariant s = true by apply H_ok_s. + clear H_ok_s H_ok_s' H_InZ_eq. + move : s s'. + induction s as [| [x1 c1] s1 IH]; + case s' as [| [x2 c2] s2] => //. + rewrite !interval_list_invariant_cons. + move => [H_gr_s1] [H_c1_neq_0] H_inv_s1. + move => [H_gr_s2] [H_c2_neq_0] H_inv_s2. + rewrite subset_flatten_alt_def + (subset_flatten_alt_def ((x2, c2)::s2)). + rewrite (interval_compare_swap x1 c1); last by left. + move : (interval_compare_elim x1 c1 x2 c2). + case (interval_compare (x1, c1) (x2, c2)) => //. + move => [->] -> H_sub_s12 H_sub_s21. + + suff -> : s1 = s2 by done. + by apply IH. Qed. + Lemma equal_spec : forall (s s' : t) {Hs : Ok s} {Hs' : Ok s'}, @@ -4450,76 +4491,408 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } Qed. + (** *** compare *) + Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt). - (** *** choose specification *) + Lemma compare_eq_Eq : forall s1 s2, + (compare s1 s2 = Eq <-> equal s1 s2 = true). + Proof. + induction s1 as [| [y1 c1] s1' IH]; + case s2 as [| [y2 c2] s2'] => //. + rewrite /= !andb_true_iff -IH Z.eqb_eq N.eqb_eq. + move : (Z.compare_eq_iff y1 y2). + case (Z.compare y1 y2). { + move => H. + have -> : y1 = y2. by apply H. + clear H. - Definition chooseZ_spec1 : - forall (s : t) (x : Z), - interval_list_invariant s = true -> - chooseZ s = Some x -> InZ x s. - Proof. - intros s x. - case s as [| [x' c] s']. { - rewrite /chooseZ //. + move : (N.compare_eq_iff c1 c2). + case (N.compare c1 c2). { + move => H. + have -> : c1 = c2. by apply H. + tauto. + } { + move => H. + have H_neq : ~(c1 = c2). by rewrite -H => {H}. + tauto. + } { + move => H. + have H_neq : ~(c1 = c2). by rewrite -H => {H}. + tauto. + } } { - rewrite /chooseZ InZ_cons interval_list_invariant_cons. - move => [_] [H_c_neq] _ [->]. - left. - by apply In_elementsZ_single_hd. + move => H. + have H_neq : ~(y1 = y2). by rewrite -H => {H}. + tauto. + } { + move => H. + have H_neq : ~(y1 = y2). by rewrite -H => {H}. + tauto. } Qed. - Definition chooseZ_spec2 : - forall (s : t), - chooseZ s = None -> forall x, ~InZ x s. - Proof. + Lemma compare_eq_Lt_nil_l : forall s, + compare nil s = Lt <-> s <> nil. + Proof. intros s. - case s as [| [x' c] s']; - rewrite /chooseZ //. - move => _ x //. - Qed. - - Definition choose_spec1 : - forall (s : t) (x : elt) (Hs : Ok s), choose s = Some x -> In x s. - Proof. - rewrite /choose. - move => s x H_ok. - case_eq (chooseZ s) => //. - move => z H_choose [<-]. - apply InZ_In => //. - apply chooseZ_spec1 => //. - apply H_ok. + case s => //=. + split => //. Qed. - Definition choose_spec2 : - forall s : t, choose s = None -> Empty s. - Proof. - rewrite /choose /chooseZ /Empty /In. - case s as [| [x' c] s'] => //. - move => _ e. - rewrite elements_nil InA_nil //. + Lemma compare_eq_Lt_nil_r : forall s, + ~(compare s nil = Lt). + Proof. + intros s. + case s as [| [y1 c1] s'] => //=. Qed. - - Lemma chooseZ_min : - forall (s : t) (x y : Z) (Hs : Ok s), - chooseZ s = Some x -> InZ y s -> ~ Z.lt y x. + + Lemma compare_eq_Lt_cons : forall y1 y2 c1 c2 s1 s2, + compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt <-> + (y1 < y2) \/ ((y1 = y2) /\ (c1 < c2)%N) \/ + ((y1 = y2) /\ (c1 = c2) /\ compare s1 s2 = Lt). Proof. - intros s x y H_ok H_min H_in H_y_lt_x. - eapply (Nin_elements_greater s (Z.pred x)) => //; last apply H_in. { - move : H_ok H_min. - case s => //. - move => [z c] s' _ [<-]. - rewrite interval_list_elements_greater_cons. - apply Z.lt_pred_l. + intros y1 y2 c1 c2 s1 s2. + rewrite /=. + case_eq (Z.compare y1 y2). { + move => /Z.compare_eq_iff ->. + case_eq (N.compare c1 c2). { + move => /N.compare_eq_iff ->. + split. { + move => H. + right; right. + done. + } { + move => [| []]. { + move => /Z.lt_irrefl //. + } { + move => [_] /N.lt_irrefl //. + } { + move => [_] [_] -> //. + } + } + } { + move => /N.compare_lt_iff H_c1_lt. + split => //. + move => _. + right; left. done. + } { + move => /N.compare_gt_iff H_c2_lt. + split => //. + move => [| []]. { + move => /Z.lt_irrefl //. + } { + move => [_] /N.lt_asymm //. + } { + move => [_] [] H_c1_eq. + contradict H_c2_lt. + subst c1. + by apply N.lt_irrefl. + } + } } { - apply H_ok. + move => /Z.compare_lt_iff. + tauto. } { - by apply Z.lt_le_pred. - } - Qed. + move => /Z.compare_gt_iff H_y2_lt. + split => //. + move => [| []]. { + move => /Z.lt_asymm //. + } { + move => [] H_y1_eq. + exfalso. omega. + } { + move => [] H_y1_eq. + exfalso. omega. + } + } + Qed. + + + Lemma compare_antisym: forall (s1 s2 : t), + (compare s1 s2) = CompOpp (compare s2 s1). + Proof. + induction s1 as [| [y1 c1] s1' IH]; + case s2 as [| [y2 c2] s2'] => //. + rewrite /= (Z.compare_antisym y1 y2) (N.compare_antisym c1 c2). + case (Z.compare y1 y2) => //=. + case (N.compare c1 c2) => //=. + Qed. - Lemma chooseZ_spec3: forall s s' x x', Ok s -> Ok s' -> - chooseZ s = Some x -> chooseZ s' = Some x' -> Equal s s' -> x = x'. + + Lemma compare_spec : forall s1 s2, + CompSpec eq lt s1 s2 (compare s1 s2). + Proof. + intros s1 s2. + rewrite /CompSpec /lt (compare_antisym s2 s1). + case_eq (compare s1 s2). { + rewrite compare_eq_Eq equal_alt_def => ->. + by apply CompEq. + } { + move => _. + by apply CompLt. + } { + move => _. + by apply CompGt. + } + Qed. + + Lemma lt_Irreflexive : Irreflexive lt. + Proof. + rewrite /Irreflexive /Reflexive /complement /lt. + intros x. + suff -> : compare x x = Eq by done. + rewrite compare_eq_Eq equal_alt_def //. + Qed. + + Lemma lt_Transitive : Transitive lt. + Proof. + rewrite /Transitive /lt. + induction x as [| [y1 c1] s1' IH]; + case y as [| [y2 c2] s2']; + case z as [| [y3 c3] s3'] => //. + + rewrite !compare_eq_Lt_cons. + move => [H_y1_lt | [[->] H_c1_lt | [->] [->] H_comp]] + [H_y2_lt | [[<-] H_c2_lt | [<-] [<-] H_comp']]. { + left. + by apply Z.lt_trans with (m := y2). + } { + by left. + } { + by left. + } { + by left. + } { + right; left. + split => //. + by apply N.lt_trans with (m := c2). + } { + by right; left. + } { + by left. + } { + by right; left. + } { + right; right. + split => //. + split => //. + by apply (IH s2'). + } + Qed. + + (** *** elements is sorted *) + + Lemma elementsZ_single_sorted : forall c x, + sort Z.lt (elementsZ_single x c). + Proof. + induction c as [| c' IH] using N.peano_ind. { + intro x. + rewrite elementsZ_single_base. + apply Sorted_nil. + } { + intro x. + rewrite elementsZ_single_succ_front. + apply Sorted_cons. { + apply IH. + } { + case (N.zero_or_succ c'). { + move => ->. + rewrite elementsZ_single_base //. + } { + move => [c''] ->. + rewrite elementsZ_single_succ_front. + constructor. + apply Z.lt_succ_diag_r. + } + } + } + Qed. + + Lemma elementsZ_sorted : forall s, + interval_list_invariant s = true -> + sort Z.lt (rev (elementsZ s)). + Proof. + induction s as [| [y c] s' IH]. { + move => _. + rewrite elementsZ_nil. + apply Sorted_nil. + } { + rewrite interval_list_invariant_cons elementsZ_cons + rev_app_distr rev_involutive. + move => [H_gr] [H_c_neq_0] H_inv_s'. + apply SortA_app with (eqA := Logic.eq). { + apply eq_equivalence. + } { + apply Z.lt_strorder. + } { + apply elementsZ_single_sorted. + } { + by apply IH. + } { + intros x1 x2. + move => /InA_alt [_] [<-] /In_elementsZ_single [_ H_x1_lt]. + move => /InA_alt [_] [<-]. + rewrite -In_rev => H_x2_in. + + apply Z.lt_trans with (m := (y + Z.of_N c)) => //. + eapply interval_list_elements_greater_alt2_def; + eauto. + } + } + Qed. + + + Lemma elements_sorted : forall s, + Ok s -> + sort Enc.E.lt (elements s). + Proof. + move => s [H_inv] H_enc. + rewrite /elements rev_map_alt_def -map_rev. + have : (forall x : Z, List.In x (rev (elementsZ s)) -> + exists e : Enc.E.t, Enc.encode e = x). { + move => x. + move : (H_enc x). + rewrite In_rev //. + } + move : (elementsZ_sorted s H_inv) => {H_enc}. + generalize (rev (elementsZ s)). + induction l as [| x xs IH]. { + rewrite /= => _ _. + apply Sorted_nil. + } { + move => H_sort H_enc. + apply Sorted_inv in H_sort as [H_sort H_hd_rel]. + simpl. + apply Sorted_cons. { + apply IH => //. + move => xx H_xx_in. + apply H_enc. + by apply in_cons. + } { + move : H_hd_rel H_enc. + case xs => //=. + move => x' xs' H_hd_rel H_enc. + apply HdRel_inv in H_hd_rel. + apply HdRel_cons. + rewrite -Enc.encode_lt. + have [y H_y] : (exists y, Enc.encode y = x). { + apply H_enc. by left. + } + have [y' H_y'] : (exists y', Enc.encode y' = x'). { + apply H_enc. by right; left. + } + move : H_hd_rel. + rewrite -!H_y -!H_y' !Enc.decode_encode_ok //. + } + } + Qed. + + + (** *** choose specification *) + + Definition min_eltZ_spec1 : + forall (s : t) (x : Z), + interval_list_invariant s = true -> + min_eltZ s = Some x -> InZ x s. + Proof. + intros s x. + case s as [| [x' c] s']. { + rewrite /min_eltZ //. + } { + rewrite /min_eltZ InZ_cons interval_list_invariant_cons. + move => [_] [H_c_neq] _ [->]. + left. + by apply In_elementsZ_single_hd. + } + Qed. + + Lemma min_eltZ_spec2 : + forall (s : t) (x y : Z) (Hs : Ok s), + min_eltZ s = Some x -> InZ y s -> ~ Z.lt y x. + Proof. + intros s x y H_ok H_min H_in H_y_lt_x. + eapply (Nin_elements_greater s (Z.pred x)) => //; last apply H_in. { + move : H_ok H_min. + case s => //. + move => [z c] s' _ [<-]. + rewrite interval_list_elements_greater_cons. + apply Z.lt_pred_l. + } { + apply H_ok. + } { + by apply Z.lt_le_pred. + } + Qed. + + Definition min_eltZ_spec3 : + forall (s : t), + min_eltZ s = None -> forall x, ~InZ x s. + Proof. + intros s. + case s as [| [x' c] s']; + rewrite /min_eltZ //. + move => _ x //. + Qed. + + Definition min_elt_spec1 : + forall (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x -> In x s. + Proof. + rewrite /min_elt. + move => s x H_ok. + case_eq (min_eltZ s) => //. + move => z H_min_elt [<-]. + apply InZ_In => //. + apply min_eltZ_spec1 => //. + apply H_ok. + Qed. + + Definition min_elt_spec2 : + forall (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x -> In y s -> ~(Enc.E.lt y x). + Proof. + rewrite /min_elt. + move => s x y H_ok. + case_eq (min_eltZ s) => //. + move => z H_min_elt [<-]. + rewrite In_InZ => H_inZ. + have H_y_eq : y = Enc.decode (Enc.encode y). { + by rewrite Enc.decode_encode_ok. + } + rewrite H_y_eq -Enc.encode_lt. + apply (min_eltZ_spec2 _ _ _ H_ok); last first. { + by rewrite Enc.decode_encode_ok. + } + suff -> : Enc.encode (Enc.decode z) = z by assumption. + apply encode_decode_eq with (s := s) => //. + apply min_eltZ_spec1 => //. + apply H_ok. + Qed. + + Definition min_elt_spec3 : + forall s : t, min_elt s = None -> Empty s. + Proof. + rewrite /min_elt /min_eltZ /Empty /In. + case s as [| [x' c] s'] => //. + move => _ e. + rewrite elements_nil InA_nil //. + Qed. + + + Definition choose_spec1 : + forall (s : t) (x : elt) (Hs : Ok s), choose s = Some x -> In x s. + Proof. + rewrite /choose. + apply min_elt_spec1. + Qed. + + Definition choose_spec2 : + forall s : t, choose s = None -> Empty s. + Proof. + rewrite /choose. + apply min_elt_spec3. + Qed. + + Lemma choose_spec3: forall s s' x x', Ok s -> Ok s' -> + choose s = Some x -> choose s' = Some x' -> Equal s s' -> x = x'. Proof. intros s s' x x' Hs Hs' Hx Hx'. rewrite -equal_spec equal_alt_def => H_s_eq. @@ -4527,6 +4900,131 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, rewrite H_s_eq => -> [] //. Qed. + + Definition max_eltZ_spec1 : + forall (s : t) (x : Z), + interval_list_invariant s = true -> + max_eltZ s = Some x -> InZ x s. + Proof. + intros s x. + induction s as [| [x' c] s' IH]. { + rewrite /max_eltZ //. + } { + rewrite InZ_cons interval_list_invariant_cons /=. + move => [_] [H_c_neq]. + case s' as [| [y' c'] s'']. { + move => _ [<-]. + left. { + rewrite In_elementsZ_single. + split. { + rewrite -Z.lt_le_pred. + by apply Z_lt_add_r. + } { + apply Z.lt_pred_l. + } + } + } { + move => H_inv H_max_eq. + right. + by apply IH. + } + } + Qed. + + Lemma max_eltZ_spec2 : + forall (s : t) (x y : Z), + interval_list_invariant s = true -> + max_eltZ s = Some x -> InZ y s -> ~ Z.lt x y. + Proof. + induction s as [| [y c] s' IH]. { + done. + } { + move => x x'. + rewrite interval_list_invariant_cons. + move => [H_gr] [H_c_neq_0] H_inv_s'. + have H_gr' : (forall xx : Z, InZ xx (s') -> y + Z.of_N c < xx). { + apply interval_list_elements_greater_alt2_def => //. + } + + case s' as [| [y' c'] s'']. { + move => [<-]. + rewrite InZ_cons InZ_nil In_elementsZ_single. + omega. + } { + move => H_max_eq. + rewrite InZ_cons. + move => []; last by apply IH. + rewrite In_elementsZ_single. + move => [_] H_x'_lt H_lt_x'. + + have H_x_in : InZ x ((y', c')::s''). { + by apply max_eltZ_spec1. + } + + move : (H_gr' _ H_x_in). + apply Z.nlt_ge, Z.lt_le_incl. + by apply Z.lt_trans with (m := x'). + } + } + Qed. + + Lemma max_eltZ_eq_None : + forall (s : t), + max_eltZ s = None -> s = nil. + Proof. + induction s as [| [x' c] s' IH] => //. + move : IH. + case s' as [| [y' c'] s''] => //=. + move => H H_pre. + move : (H H_pre) => //. + Qed. + + + Definition max_eltZ_spec3 : + forall (s : t), + max_eltZ s = None -> forall x, ~InZ x s. + Proof. + move => s /max_eltZ_eq_None -> x /InZ_nil //. + Qed. + + Definition max_elt_spec1 : + forall (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x -> In x s. + Proof. + rewrite /max_elt. + move => s x H_ok. + case_eq (max_eltZ s) => //. + move => z H_max_elt [<-]. + apply InZ_In => //. + apply max_eltZ_spec1 => //. + apply H_ok. + Qed. + + Definition max_elt_spec2 : + forall (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x -> In y s -> ~(Enc.E.lt x y). + Proof. + rewrite /max_elt. + move => s x y H_ok. + move : (H_ok) => [H_inv] _. + case_eq (max_eltZ s) => //. + move => z H_max_elt [<-]. + rewrite In_InZ => H_inZ. + rewrite -Enc.encode_lt. + apply (max_eltZ_spec2 _ _ _ H_inv) => //. + suff -> : Enc.encode (Enc.decode z) = z => //. + apply encode_decode_eq with (s := s) => //. + apply max_eltZ_spec1 => //. + Qed. + + Definition max_elt_spec3 : + forall s : t, max_elt s = None -> Empty s. + Proof. + intro s. + rewrite /max_elt /Empty. + case_eq (max_eltZ s) => //. + move => /max_eltZ_eq_None -> _ x. + rewrite /In elements_nil InA_nil //. + Qed. + (** *** fold specification *) @@ -4535,7 +5033,16 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, fold f s i = fold_left (flip f) (elements s) i. Proof. intros s A i f. - rewrite /fold //. + rewrite /fold fold_elementsZ_alt_def /elements + rev_map_alt_def -map_rev. + move : i. + generalize (rev (elementsZ s)). + induction l as [| x xs IH]. { + done. + } { + move => i. + rewrite /= IH //. + } Qed. @@ -4574,11 +5081,43 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, (for_all f s = true <-> For_all (fun x => f x = true) s). Proof. intros s f Hs H. - rewrite /for_all forallb_forall /For_all //. - split; ( - move => HH x; move : {HH} (HH x); - rewrite In_alt_def // - ). + rewrite /for_all /For_all /In fold_elementsZ_alt_def + /elements rev_map_alt_def -map_rev. + generalize (rev (elementsZ s)). + induction l as [| x xs IH]. { + split => // _ x /= /InA_nil //. + } { + rewrite /=. + case_eq (f (Enc.decode x)) => H_f_eq. { + rewrite IH. + split. { + move => HH x' /InA_cons []. { + by move => ->. + } { + apply HH. + } + } { + move => HH x' H_in. + apply HH. + apply InA_cons. + by right. + } + } { + split; move => HH. { + contradict HH. + case xs => //. + } { + exfalso. + have H_in: (InA Enc.E.eq (Enc.decode x) (Enc.decode x :: map Enc.decode xs)). { + apply InA_cons. + left. + apply Enc.E.eq_equiv. + } + move : (HH _ H_in). + rewrite H_f_eq => //. + } + } + } Qed. (** *** exists specification *) @@ -4589,46 +5128,526 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, (exists_ f s = true <-> Exists (fun x => f x = true) s). Proof. intros s f Hs H. - rewrite /exists_ /Exists existsb_exists //. - split; ( - move => [x] [HH1 HH2]; exists x; move : HH1 HH2; - rewrite In_alt_def // - ). + rewrite /exists_ /Exists /In fold_elementsZ_alt_def + /elements rev_map_alt_def -map_rev. + generalize (rev (elementsZ s)). + induction l as [| x xs IH]. { + split => //. + move => [x] /= [] /InA_nil //. + } { + rewrite /=. + case_eq (f (Enc.decode x)) => H_f_eq. { + split => _. { + exists (Enc.decode x). + split => //. + apply InA_cons. + left. + apply Enc.E.eq_equiv. + } { + case xs => //. + } + } { + rewrite IH. + split. { + move => [x0] [H_in] H_f_x0. + exists x0. + split => //. + apply InA_cons. + by right. + } { + move => [x0] [] /InA_cons H_in H_f_x0. + exists x0. + split => //. + move : H_in => [] // H_in. + contradict H_f_x0. + rewrite H_in H_f_eq //. + } + } + } + Qed. + + + (** *** filter specification *) + + Definition partitionZ_aux_invariant (x : Z) acc c := + interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true /\ + match c with + None => (forall y', InZ y' acc -> Z.succ y' < x) + | Some (y, c') => (x = y + Z.of_N c') + end. + + Lemma partitionZ_aux_invariant_insert : forall x acc c, + partitionZ_aux_invariant x acc c -> + partitionZ_aux_invariant (Z.succ x) acc + (Some (partitionZ_fold_insert c x)). + Proof. + intros x acc c. + rewrite /partitionZ_fold_insert /partitionZ_aux_invariant + /partitionZ_fold_skip. + case c; last first. { + move => [H_inv] H_in. + rewrite /= interval_list_invariant_app_iff Z.add_1_r. + split; last done. + split; first done. + split; first done. + move => x1 x2. + rewrite InZ_rev InZ_cons InZ_nil In_elementsZ_single1. + move => H_x1_in [] // <-. + by apply H_in. + } { + move => [y c']. + rewrite /= !interval_list_invariant_app_iff + N2Z.inj_succ Z.add_succ_r . + rewrite !interval_list_invariant_cons !interval_list_invariant_nil. + move => [] [H_inv_acc] [] [] _ [H_c_neq_0] _ + H_in_c ->. + split; last done. + split; first done. + split. { + split; first done. + split; last done. + apply N.neq_succ_0. + } { + move => x1 x2. + rewrite InZ_cons InZ_nil In_elementsZ_single. + move => H_x1_in [] // [H_y_le] H_x2_lt. + apply Z.lt_le_trans with (m := y) => //. + apply H_in_c => //. + rewrite InZ_cons In_elementsZ_single. + left. + split. { + apply Z.le_refl. + } { + by apply Z_lt_add_r. + } + } + } + Qed. + + Lemma partitionZ_aux_invariant_skip : forall x acc c, + partitionZ_aux_invariant x acc c -> + partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None. + Proof. + intros x acc c. + rewrite /partitionZ_fold_skip /partitionZ_aux_invariant + /partitionZ_fold_skip. + case c; last first. { + move => [H_inv] H_in. + split; first done. + move => y' H_y'_in. + apply Z.lt_trans with (m := x). { + by apply H_in. + } { + apply Z.lt_succ_diag_r. + } + } { + move => [y c'] [H_inv] ->. + split => //. + move => y'. + rewrite InZ_cons In_elementsZ_single. + move => []. { + move => [_]. + rewrite -Z.succ_lt_mono //. + } { + move : H_inv. + rewrite /= !interval_list_invariant_app_iff interval_list_invariant_cons. + move => [_] [] [_] [H_c'_neq] _ H_pre H_y'_in. + apply Z.lt_trans with (m := y). { + apply H_pre. { + by rewrite InZ_rev. + } { + rewrite InZ_cons. + left. + by apply In_elementsZ_single_hd. + } + } + apply Z.lt_succ_r, Z_le_add_r. + } + } + Qed. + + Definition partitionZ_fold_current (c : option (Z * N)) := + match c with + None => nil + | Some yc => yc::nil + end. + + Lemma InZ_partitionZ_fold_current_Some : forall yc y, + InZ y (partitionZ_fold_current (Some yc)) <-> + InZ y (yc :: nil). + Proof. done. Qed. + + Lemma InZ_partitionZ_fold_insert : forall c x y l, + match c with + | Some (y, c') => x = y + Z.of_N c' + | None => True + end -> ( + InZ y (partitionZ_fold_insert c x :: l) <-> + ((x = y) \/ InZ y (partitionZ_fold_current c) \/ + InZ y l)). + Proof. + intros c x y l. + rewrite /partitionZ_fold_insert /partitionZ_fold_current + /partitionZ_fold_skip. + case c. { + move => [y' c'] ->. + rewrite !InZ_cons elementsZ_single_succ in_app_iff + InZ_nil /=. + tauto. + } { + rewrite InZ_cons InZ_nil In_elementsZ_single1. + tauto. + } + Qed. + + Lemma InZ_partitionZ_fold_skip : forall c acc y, + InZ y (partitionZ_fold_skip acc c) <-> + (InZ y (partitionZ_fold_current c) \/ InZ y acc). + Proof. + intros c acc y. + rewrite /partitionZ_fold_skip /partitionZ_fold_current + /partitionZ_fold_skip. + case c. { + move => [y' c']. + rewrite !InZ_cons InZ_nil /=. + tauto. + } { + rewrite InZ_nil. + tauto. + } + Qed. + + Lemma filterZ_single_aux_props : + forall f c x acc cur, + partitionZ_aux_invariant x acc cur -> + match (filterZ_single_aux f (acc, cur) x c) with + (acc', c') => + let r := partitionZ_fold_skip acc' c' in + interval_list_invariant (List.rev r) = true /\ + (forall y', InZ y' r <-> (InZ y' (partitionZ_fold_skip acc cur) \/ + (f y' = true /\ List.In y' (elementsZ_single x c)))) + + end. + Proof. + intro f. + induction c as [| c' IH] using N.peano_ind. { + intros x acc cur. + rewrite /partitionZ_aux_invariant. + move => [H_inv] _. + rewrite /filterZ_single_aux fold_elementsZ_single_zero /=. + tauto. + } + intros x acc cur H_inv. + have -> : filterZ_single_aux f (acc, cur) x (N.succ c') = + filterZ_single_aux f (filterZ_fold_fun f (acc, cur) x) (Z.succ x) c'. { + by rewrite /filterZ_single_aux fold_elementsZ_single_succ. + } + case_eq (filterZ_fold_fun f (acc, cur) x). + move => acc' cur' H_fold_eq. + + case_eq (filterZ_single_aux f (acc', cur') (Z.succ x) c'). + move => acc'' cur'' H_succ_eq. + + have H_inv' : partitionZ_aux_invariant (Z.succ x) acc' cur'. { + move : H_fold_eq H_inv. + rewrite /filterZ_fold_fun. + case (f x); move => [<-] <-. { + apply partitionZ_aux_invariant_insert. + } { + apply partitionZ_aux_invariant_skip. + } + } + + move : (IH (Z.succ x) acc' cur' H_inv') => {IH}. + rewrite H_succ_eq /=. + set r := partitionZ_fold_skip acc'' cur''. + move => [H_inv_r] H_in_r. + split; first assumption. + + move => y'. + move : H_fold_eq. + rewrite H_in_r /filterZ_fold_fun. + case_eq (f x) => H_fx [<-] <-. { + rewrite InZ_partitionZ_fold_skip InZ_partitionZ_fold_current_Some InZ_partitionZ_fold_skip elementsZ_single_succ_front. + rewrite InZ_partitionZ_fold_insert; last first. { + move : H_inv. + rewrite /partitionZ_aux_invariant => [[_]]. + case cur => //. + } + rewrite InZ_nil /=. + split; last by tauto. + move => []; last by tauto. + move => []; last by tauto. + move => []. { + move => <-. + tauto. + } { + tauto. + } + } { + rewrite InZ_partitionZ_fold_skip /partitionZ_fold_current InZ_partitionZ_fold_skip elementsZ_single_succ_front !InZ_nil /=. + split; first by tauto. + move => []; first by tauto. + move => [] H_fy' []. { + move => H_x_eq; subst y'. + contradict H_fy'. + by rewrite H_fx. + } { + tauto. + } + } + Qed. + + + Lemma filterZ_single_props : + forall f c x acc, + interval_list_invariant (rev acc) = true -> + (forall y' : Z, InZ y' acc -> Z.succ y' < x) -> + match (filterZ_single f acc x c) with + r => + interval_list_invariant (List.rev r) = true /\ + (forall y', InZ y' r <-> (InZ y' acc \/ + (f y' = true /\ List.In y' (elementsZ_single x c)))) + + end. + Proof. + intros f c x acc. + move => H_inv H_acc. + rewrite /filterZ_single. + + have H_inv' : partitionZ_aux_invariant x acc None. { + by rewrite /partitionZ_aux_invariant /=. + } + move : (filterZ_single_aux_props f c x acc None H_inv'). + case_eq (filterZ_single_aux f (acc, None) x c). + move => acc' cur' /= H_res. + tauto. + Qed. + + + Lemma filterZ_aux_props : + forall f s acc, + interval_list_invariant s = true -> + interval_list_invariant (rev acc) = true -> + (forall x1 x2 : Z, InZ x1 acc -> InZ x2 s -> Z.succ x1 < x2) -> + match (filterZ_aux acc f s) with + r => + interval_list_invariant r = true /\ + (forall y', InZ y' r <-> (InZ y' acc \/ + (f y' = true /\ InZ y' s))) + end. + Proof. + intro f. + induction s as [| [y c] s' IH]. { + intros acc. + move => _ H_inv _. + rewrite /filterZ_aux. + split; first assumption. + move => y'; rewrite InZ_rev InZ_nil; tauto. + } { + intros acc. + rewrite interval_list_invariant_cons. + move => [H_gr] [H_c_neq_0] H_inv_s' H_inv H_in_acc /=. + move : H_gr. + rewrite interval_list_elements_greater_alt2_def => // H_gr. + + have H_pre : (forall y' : Z, InZ y' acc -> Z.succ y' < y). { + move => x1 H_x1_in. + apply H_in_acc => //. + rewrite InZ_cons. + by left; apply In_elementsZ_single_hd. + } + + move : (filterZ_single_props f c y acc H_inv H_pre) => {H_pre}. + set acc' := filterZ_single f acc y c. + move => [H_inv'] H_in_acc'. + + have H_pre : (forall x1 x2 : Z, + InZ x1 acc' -> InZ x2 s' -> Z.succ x1 < x2). { + move => x1 x2. + rewrite H_in_acc' In_elementsZ_single. + move => []. { + move => H_x1_in H_x2_in. + apply H_in_acc => //. + rewrite InZ_cons. + by right. + } { + move => [_] [_] H_x1_lt H_x2_in. + apply Z.le_lt_trans with (m := y + Z.of_N c). + - by apply Z.le_succ_l. + - by apply H_gr. + } + } + move : (IH acc' H_inv_s' H_inv' H_pre) => {H_pre}. + + move => [H_inv_r] H_in_r. + split; first assumption. + move => y'. + rewrite H_in_r H_in_acc' InZ_cons. + tauto. + } + Qed. + + Lemma filterZ_props : + forall f s, + interval_list_invariant s = true -> + match (filterZ f s) with r => + interval_list_invariant r = true /\ + (forall y', InZ y' r <-> (f y' = true /\ InZ y' s)) + end. + Proof. + intros f s H_inv_s. + rewrite /filterZ. + + have H_pre_1 : interval_list_invariant (rev nil) = true by done. + have H_pre_2 : (forall x1 x2 : Z, InZ x1 nil -> InZ x2 s -> Z.succ x1 < x2) by done. + + move : (filterZ_aux_props f s nil H_inv_s H_pre_1 H_pre_2) => {H_pre_1} {H_pre_2}. + move => [H_inv'] H_in_r. + split; first assumption. + move => y'. + rewrite H_in_r InZ_nil. + tauto. + Qed. + + Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s). + Proof. + move => [H_inv H_enc]. + rewrite /filter. + set f' := (fun z : Z => f (Enc.decode z)). + move : (filterZ_props f' s H_inv). + move => [H_inv'] H_in_r. + rewrite /Ok /IsOk /is_encoded_elems_list. + split; first assumption. + move => x /H_in_r [_] H_x_in. + by apply H_enc. + Qed. + + Lemma filter_spec : + forall (s : t) (x : elt) (f : elt -> bool), + Ok s -> + (In x (filter f s) <-> In x s /\ f x = true). + Proof. + move => s x f H_ok. + suff H_suff : + (forall x, (InZ x (filter f s)) <-> + InZ x s /\ f (Enc.decode x) = true). { + rewrite !In_alt_def /elements !rev_map_alt_def + -!in_rev !in_map_iff. + setoid_rewrite H_suff. + rewrite /InZ. + split. { + move => [y] [<-] [?] ?. + split => //. + by exists y. + } { + move => [] [y] [<-] ? ?. + by exists y. + } + } + rewrite /filter. + set f' := (fun z : Z => f (Enc.decode z)). + move : (H_ok) => [H_inv _]. + move : (filterZ_props f' s H_inv). + move => [H_inv'] H_in_r. + move => y; rewrite H_in_r; tauto. + Qed. + + + (** *** partition specification *) + + Lemma partitionZ_single_aux_alt_def : forall f c y acc_t c_t acc_f c_f, + partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c = + (filterZ_single_aux f (acc_t, c_t) y c, + filterZ_single_aux (fun x : Z => negb (f x)) (acc_f, c_f) y c). + Proof. + intros f. + rewrite /partitionZ_single_aux /filterZ_single_aux. + induction c as [| c' IH] using N.peano_ind. { + intros y acc_t c_t acc_f c_f. + rewrite !fold_elementsZ_single_zero //. } { + intros y acc_t c_t acc_f c_f. + rewrite !fold_elementsZ_single_succ. + case_eq (partitionZ_fold_fun f (acc_t, c_t, (acc_f, c_f)) y) => [] [acc_t' c_t'] [acc_f' c_f'] H_fold_eq. + rewrite IH => {IH}. + suff : (filterZ_fold_fun f (acc_t, c_t) y = (acc_t', c_t')) /\ + (filterZ_fold_fun (fun x : Z => negb (f x)) (acc_f, c_f) y = (acc_f', c_f')). { + move => [->] -> //. + } + move : H_fold_eq. + rewrite /partitionZ_fold_fun /filterZ_fold_fun. + case (f y); move => [<-] <- <- <- //. + } + Qed. + + Lemma partitionZ_aux_alt_def : forall f s acc_t acc_f, + partitionZ_aux acc_t acc_f f s = + (filterZ_aux acc_t f s, + filterZ_aux acc_f (fun x : Z => negb (f x)) s). + Proof. + intros f. + induction s as [| [y c] s' IH]. { + done. + } { + intros acc_t acc_f. + rewrite /= /partitionZ_single /filterZ_single + partitionZ_single_aux_alt_def. + case (filterZ_single_aux f (acc_t, None) y c) => acc_t' c_t'. + case (filterZ_single_aux (fun x : Z => negb (f x)) (acc_f, None) y c) => acc_f' c_f'. + rewrite IH //. + } + Qed. + + Lemma partitionZ_alt_def : forall f s, + partitionZ f s = (filterZ f s, + filterZ (fun x => negb (f x)) s). + Proof. + intros f s. + rewrite /partitionZ /filterZ + partitionZ_aux_alt_def //. + Qed. + + Lemma partition_alt_def : forall f s, + partition f s = (filter f s, + filter (fun x => negb (f x)) s). + Proof. + intros f s. + rewrite /partition /filter partitionZ_alt_def. + done. Qed. - (** *** partition specification *) Global Instance partition_ok1 s f : forall `(Ok s), Ok (fst (partition f s)). Proof. - intros H_ok. - rewrite /partition /fst. + move => H_ok. + rewrite partition_alt_def /fst. by apply filter_ok. - Qed. + Qed. Global Instance partition_ok2 s f : forall `(Ok s), Ok (snd (partition f s)). Proof. - intros H_ok. - rewrite /partition /snd. + move => H_ok. + rewrite partition_alt_def /snd. by apply filter_ok. Qed. Lemma partition_spec1 : forall (s : t) (f : elt -> bool), - Proper (Enc.E.eq==>eq) f -> Equal (fst (partition f s)) (filter f s). + Equal (fst (partition f s)) (filter f s). Proof. - intros s f H_ok. - rewrite /partition /fst /Equal //. + intros s f. + rewrite partition_alt_def /fst /Equal //. Qed. Lemma partition_spec2 : forall (s : t) (f : elt -> bool), - Proper (Enc.E.eq==>eq) f -> + Ok s -> Equal (snd (partition f s)) (filter (fun x => negb (f x)) s). Proof. - intros s f H_ok. - rewrite /partition /snd /Equal //. + intros s f. + rewrite partition_alt_def /snd /Equal //. Qed. - + End Raw. @@ -4637,7 +5656,7 @@ End Raw. We can now build the invariant into the set type to obtain an instantiation of module type [WSetsOn]. *) -Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. +Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. Module E := Enc.E. Module Raw := Raw Enc. @@ -4670,7 +5689,10 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. Definition empty : t := Mkt Raw.empty. Definition is_empty (s : t) := Raw.is_empty s. Definition elements (s : t) : list elt := Raw.elements s. + Definition min_elt (s : t) : option elt := Raw.min_elt s. + Definition max_elt (s : t) : option elt := Raw.max_elt s. Definition choose (s : t) : option elt := Raw.choose s. + Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2. Definition fold {A : Type}(f : elt -> A -> A)(s : t) : A -> A := Raw.fold f s. Definition cardinal (s : t) := Raw.cardinal s. Definition filter (f : elt -> bool)(s : t) : t := Mkt (Raw.filter f s). @@ -4693,7 +5715,6 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. Instance eq_equiv : Equivalence eq. Proof. firstorder. Qed. - Definition eq_dec : forall (s s':t), { eq s s' }+{ ~eq s s' }. Proof. intros (s,Hs) (s',Hs'). @@ -4702,7 +5723,39 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. rewrite <- Raw.equal_spec; congruence. Defined. + Definition lt : t -> t -> Prop := Raw.lt. + + Instance lt_strorder : StrictOrder lt. + Proof. + unfold lt. + constructor. { + move : Raw.lt_Irreflexive. + rewrite /Irreflexive /complement /Reflexive. + move => H x. + apply H. + } { + move : Raw.lt_Transitive. + rewrite /Transitive. + move => H x y z. + apply H. + } + Qed. + Instance lt_compat : Proper (eq==>eq==>iff) lt. + Proof. + repeat red. + move => [x1 H_x1_ok] [y1 H_y1_ok] H_eq. + move => [x2 H_x2_ok] [y2 H_y2_ok]. + move : H_eq. + rewrite /eq /lt /Equal /In /=. + replace (forall a : elt, Raw.In a x1 <-> Raw.In a y1) with + (Raw.Equal x1 y1) by done. + replace (forall a : elt, Raw.In a x2 <-> Raw.In a y2) with + (Raw.Equal x2 y2) by done. + rewrite -!Raw.equal_spec !Raw.equal_alt_def. + move => -> -> //. + Qed. + Section Spec. Variable s s' : t. Variable x y : elt. @@ -4738,7 +5791,7 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. Proof. exact (@Raw.cardinal_spec s). Qed. Lemma filter_spec : compatb f -> (In x (filter f s) <-> In x s /\ f x = true). - Proof. exact (@Raw.filter_spec _ _ _). Qed. + Proof. move => _; exact (@Raw.filter_spec _ _ _ _). Qed. Lemma for_all_spec : compatb f -> (for_all f s = true <-> For_all (fun x => f x = true) s). Proof. exact (@Raw.for_all_spec _ _ _). Qed. @@ -4746,19 +5799,60 @@ Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E. (exists_ f s = true <-> Exists (fun x => f x = true) s). Proof. exact (@Raw.exists_spec _ _ _). Qed. Lemma partition_spec1 : compatb f -> Equal (fst (partition f s)) (filter f s). - Proof. exact (@Raw.partition_spec1 _ _). Qed. + Proof. move => _; exact (@Raw.partition_spec1 _ _). Qed. Lemma partition_spec2 : compatb f -> Equal (snd (partition f s)) (filter (fun x => negb (f x)) s). - Proof. exact (@Raw.partition_spec2 _ _). Qed. + Proof. move => _; exact (@Raw.partition_spec2 _ _ _). Qed. Lemma elements_spec1 : InA E.eq x (elements s) <-> In x s. Proof. rewrite /In /Raw.In /elements //. Qed. Lemma elements_spec2w : NoDupA E.eq (elements s). Proof. exact (Raw.elements_spec2w _ _). Qed. + Lemma elements_spec2 : sort E.lt (elements s). + Proof. exact (Raw.elements_sorted _ _). Qed. Lemma choose_spec1 : choose s = Some x -> In x s. Proof. exact (Raw.choose_spec1 _ _ _). Qed. Lemma choose_spec2 : choose s = None -> Empty s. Proof. exact (Raw.choose_spec2 _). Qed. + Lemma choose_spec3 : choose s = Some x -> choose s' = Some y -> + Equal s s' -> E.eq x y. + Proof. + intros H1 H2 H3. + suff -> : x = y. { + apply E.eq_equiv. + } + move : H1 H2 H3. + exact (Raw.choose_spec3 _ _ _ _ _ _). + Qed. + Lemma min_elt_spec1 : choose s = Some x -> In x s. + Proof. exact (Raw.min_elt_spec1 _ _ _). Qed. + Lemma min_elt_spec2 : min_elt s = Some x -> In y s -> ~ E.lt y x. + Proof. exact (Raw.min_elt_spec2 _ _ _ _). Qed. + Lemma min_elt_spec3 : choose s = None -> Empty s. + Proof. exact (Raw.min_elt_spec3 _). Qed. + + Lemma max_elt_spec1 : max_elt s = Some x -> In x s. + Proof. exact (Raw.max_elt_spec1 _ _ _). Qed. + Lemma max_elt_spec2 : max_elt s = Some x -> In y s -> ~ E.lt x y. + Proof. exact (Raw.max_elt_spec2 _ _ _ _). Qed. + Lemma max_elt_spec3 : max_elt s = None -> Empty s. + Proof. exact (Raw.max_elt_spec3 _). Qed. + + Lemma compare_spec : CompSpec eq lt s s' (compare s s'). + Proof. + generalize s s'. + move => [s1 H_ok_s1] [s2 H_ok_s2]. + move : (Raw.compare_spec s1 s2). + rewrite /CompSpec /eq /Equal /In /lt /compare /=. + replace (forall a : elt, Raw.In a s1 <-> Raw.In a s2) with + (Raw.Equal s1 s2) by done. + suff H_eq : (Raw.Equal s1 s2) <-> (s1 = s2). { + move => [] H; constructor => //. + by rewrite H_eq. + } + rewrite -Raw.equal_spec Raw.equal_alt_def //. + Qed. + End Spec. End MSetIntervals. @@ -4785,10 +5879,14 @@ Module ElementEncodeZ <: ElementEncode. (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2. Proof. by []. Qed. + Lemma encode_lt : forall (e1 e2 : E.t), + (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2. + Proof. by []. Qed. + End ElementEncodeZ. -Module MSetIntervalsZ <: WSetsOn Z := MSetIntervals ElementEncodeZ. +Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ. (** *** N *) @@ -4811,9 +5909,17 @@ Module ElementEncodeN <: ElementEncode. intros e1 e2. rewrite /encode /Z.eq N2Z.inj_iff /E.eq //. Qed. + + Lemma encode_lt : forall (e1 e2 : E.t), + (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2. + Proof. + intros e1 e2. + rewrite /encode -N2Z.inj_lt //. + Qed. + End ElementEncodeN. -Module MSetIntervalsN <: WSetsOn N := MSetIntervals ElementEncodeN. +Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN. (** *** nat *) @@ -4836,9 +5942,17 @@ Module ElementEncodeNat <: ElementEncode. intros e1 e2. rewrite /encode /Z.eq Nat2Z.inj_iff /E.eq //. Qed. + + Lemma encode_lt : forall (e1 e2 : E.t), + (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2. + Proof. + intros e1 e2. + rewrite /encode -Nat2Z.inj_lt //. + Qed. + End ElementEncodeNat. -Module MSetIntervalsNat <: WSetsOn NPeano.Nat := MSetIntervals ElementEncodeNat. +Module MSetIntervalsNat <: SetsOn NPeano.Nat := MSetIntervals ElementEncodeNat. From 5f8af2477e0203931ccc6ee7ac02db203c8d1de5 Mon Sep 17 00:00:00 2001 From: Thomas Tuerk Date: Mon, 3 Oct 2016 23:47:54 +0200 Subject: [PATCH 3/7] update coqdoc --- coqdoc/MSetIntervals.html | 1609 +++++++++++++++++++++++++++------- coqdoc/MSetListWithDups.html | 10 +- coqdoc/index.html | 462 ++++++++-- coqdoc/mset_doc.pdf | Bin 434865 -> 653870 bytes coqdoc/toc.html | 74 +- 5 files changed, 1696 insertions(+), 459 deletions(-) diff --git a/coqdoc/MSetIntervals.html b/coqdoc/MSetIntervals.html index e26f698..a963e7f 100644 --- a/coqdoc/MSetIntervals.html +++ b/coqdoc/MSetIntervals.html @@ -20,6 +20,8 @@

Library MSetIntervals

+
+
@@ -29,8 +31,8 @@

Library MSetIntervals

- This file contains an implementation of the weak set interface - WSetsOn which uses internally intervals of Z. This allows some + This file contains an implementation of the set interface + SetsOn which uses internally intervals of Z. This allows some large sets, which naturally map to intervals of integers to be represented very efficiently. @@ -69,6 +71,19 @@

Library MSetIntervals

Lemma Z_le_add_r : forall (z : Z) (n : N),
  z <= z + Z.of_N n.
+
+Lemma Z_lt_add_r : forall (z : Z) (n : N),
+  (n <> 0)%N ->
+  z < z + Z.of_N n.
+ +
+Lemma Z_lt_le_add_r : forall y1 y2 c,
+  y1 < y2 ->
+  y1 <= y2 + Z.of_N c.
+Lemma Z_to_N_minus_neq_0 : forall (x y : Z),
+    y < x ->
+    Z.to_N (x - y) <> 0%N.
+
Lemma add_add_sub_eq : forall (x y : Z), (x + (y - x) = y).
@@ -127,7 +142,7 @@

Library MSetIntervals


Module Type ElementEncode.
-  Declare Module E : DecidableType.
+  Declare Module E : OrderedType.

  Parameter encode : E.t -> Z.
@@ -156,6 +171,16 @@

Library MSetIntervals

  Axiom encode_eq : forall (e1 e2 : E.t),
    (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2.
+
+ + +
+Encoding is compatible with the order of elements. +
+
+  Axiom encode_lt : forall (e1 e2 : E.t),
+    (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2.
+
End ElementEncode.
@@ -198,7 +223,7 @@

Library MSetIntervals

-Module Ops (Enc : ElementEncode) <: WOps Enc.E.
+Module Ops (Enc : ElementEncode) <: Ops Enc.E.
  Definition elt := Enc.E.t.
  Definition t := list (Z * N).
@@ -225,29 +250,32 @@

Library MSetIntervals

  Lemma acc_pred : forall n p, n = Npos p -> Acc N.lt n -> Acc N.lt (N.pred n).

-  Fixpoint elementsZ_aux´´ (acc : list Z) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : list Z :=
-    match c as c0 return c = c0 -> list Z with
-    | N0 => fun _ => acc
-    | c => fun Heq => elementsZ_aux´´ (x::acc) (Z.succ x) (N.pred c) (acc_pred _ _ Heq H)
+  Fixpoint fold_elementsZ_aux {A} (f : A -> Z -> option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool * A) :=
+    match c as c0 return c = c0 -> (bool * A) with
+    | N0 => fun _ => (false, acc)
+    | c => fun Heq => match (f acc x) with
+        | None => (true, acc)
+        | Some acc´ =>
+          fold_elementsZ_aux f acc´ (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    end (refl_equal _).

-  Extraction Inline elementsZ_aux´´.
+  Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _).

-  Definition elementsZ_aux´ acc x c := elementsZ_aux´´ acc x c (lt_wf_0 _).
- -
-  Fixpoint elementsZ_aux acc (s : t) : list Z :=
+  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool * A) :=
    match s with
-    | nil => acc
-    | (x, c) :: =>
-        elementsZ_aux (elementsZ_aux´ acc x c)
+    | nil => (false, acc)
+    | (x, c) :: =>
+      match fold_elementsZ_single f acc x c with
+          (false, acc´) => fold_elementsZ f acc´
+        | (true, acc´) => (true, acc´)
+      end
    end.

  Definition elementsZ (s : t) : list Z :=
-    elementsZ_aux nil s.
+    snd (fold_elementsZ (fun l x => Some (x :: l)) nil s).

  Definition elements (s : t) : list elt :=
@@ -275,6 +303,104 @@

Library MSetIntervals


+
+Comparing intervals +
+
+  Inductive interval_compare_result :=
+      ICR_before
+    | ICR_before_touch
+    | ICR_overlap_before
+    | ICR_overlap_after
+    | ICR_equal
+    | ICR_subsume_1
+    | ICR_subsume_2
+    | ICR_after
+    | ICR_after_touch.
+ +
+  Definition interval_compare (i1 i2 : (Z * N)) : interval_compare_result :=
+    match (i1, i2) with ((y1, c1), (y2, c2)) =>
+      let yc2 := (y2+Z.of_N c2) in
+      match (Z.compare yc2 y1) with
+        | Lt => ICR_after
+        | Eq => ICR_after_touch
+        | Gt => let yc1 := (y1+Z.of_N c1) in
+                match (Z.compare yc1 y2) with
+                | Lt => ICR_before
+                | Eq => ICR_before_touch
+                | Gt =>
+                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
+                        | (Lt, Lt) => ICR_overlap_before
+                        | (Lt, _) => ICR_subsume_2
+                        | (Eq, Lt) => ICR_subsume_1
+                        | (Eq, Gt) => ICR_subsume_2
+                        | (Eq, Eq) => ICR_equal
+                        | (Gt, Gt) => ICR_overlap_after
+                        | (Gt, _) => ICR_subsume_1
+                        end
+                end
+      end
+    end.
+ +
+  Definition interval_1_compare (y1 : Z) (i : (Z * N)) : interval_compare_result :=
+    match i with (y2, c2) =>
+      let yc2 := (y2+Z.of_N c2) in
+      match (Z.compare yc2 y1) with
+        | Lt => ICR_after
+        | Eq => ICR_after_touch
+        | Gt => match (Z.compare (Z.succ y1) y2) with
+                | Lt => ICR_before
+                | Eq => ICR_before_touch
+                | Gt => ICR_subsume_1
+                end
+      end
+    end.
+ +
+  Fixpoint compare (s1 s2 : t) :=
+    match (s1, s2) with
+      | (nil, nil) => Eq
+      | (nil, _ :: _) => Lt
+      | (_ :: _, nil) => Gt
+      | ((y1, c1)::s1´, (y2, c2)::s2´) =>
+        match (Z.compare y1 y2) with
+          | Lt => Lt
+          | Gt => Gt
+          | Eq => match N.compare c1 c2 with
+                    | Lt => Lt
+                    | Gt => Gt
+                    | Eq => compare s1´ s2´
+                  end
+        end
+    end.
+ +
+
+ +
+Auxiliary functions for inserting at front and merging intervals +
+
+  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
+    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).
+ +
+  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
+    match l with
+    | nil => (x,c)::nil
+    | (y, ):: =>
+         match (Z.compare (x + Z.of_N c) y) with
+         | Lt => (x, c) :: l
+         | Eq => (x, (c+)%N) ::
+         | Gt => insert_interval_begin x (merge_interval_size x c y )
+         end
+    end.
+ +
+
+
adding an element needs to be defined carefully again in order to generate efficient code @@ -284,20 +410,12 @@

Library MSetIntervals

    match s with
    | nil => List.rev´ ((x, (1%N))::acc)
    | (y, c) :: l =>
-        match (Z.compare (Z.succ x) y) with
-        | Lt => List.rev_append ((x, (1%N))::acc) s
-        | Eq => List.rev_append ((x, N.succ c)::acc) l
-        | Gt => match (Z.compare x (y+Z.of_N c)) with
-                 | Lt => List.rev_append acc s
-                 | Gt => addZ_aux ((y,c) :: acc) x l
-                 | Eq => match l with
-                           | nil => List.rev´ ((y, N.succ c)::acc)
-                           | (z, ) :: => if (Z.eqb z (Z.succ x)) then
-                                List.rev_append ((y,N.succ (c+)) :: acc)
-                             else
-                                List.rev_append ((y,N.succ c) :: acc) l
-                         end
-                end
+        match (interval_1_compare x (y,c)) with
+          | ICR_before => List.rev_append ((x, (1%N))::acc) s
+          | ICR_before_touch => List.rev_append ((x, N.succ c)::acc) l
+          | ICR_after => addZ_aux ((y,c) :: acc) x l
+          | ICR_after_touch => List.rev_append acc (insert_interval_begin y (N.succ c) l)
+          | _ => List.rev_append ((y, c)::acc) l
        end
    end.
@@ -309,8 +427,8 @@

Library MSetIntervals

-add_list simple extension to add many elements, which then allows to - define from_elements. +add_list is a simple extension to add many elements. + This is used to define the function from_elements.
  Definition add_list (l : list elt) (s : t) : t :=
@@ -338,7 +456,7 @@

Library MSetIntervals

removing needs to be done with code extraction in mind again.
-  Definition removeZ_aux_insert_guarded (x : Z) (c : N) s :=
+  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
     if (N.eqb c 0) then s else (x, c) :: s.

@@ -348,9 +466,9 @@

Library MSetIntervals

    | (y, c) :: l =>
        if (Z.ltb x y) then List.rev_append acc s else
        if (Z.ltb x (y+Z.of_N c)) then (
-           List.rev_append (removeZ_aux_insert_guarded (Z.succ x)
+           List.rev_append (insert_intervalZ_guarded (Z.succ x)
              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
-             (removeZ_aux_insert_guarded y (Z.to_N (x-y)) acc)) l
+             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
        ) else removeZ_aux ((y,c)::acc) x l
    end.
@@ -366,52 +484,281 @@

Library MSetIntervals

-all other operations are defined trivially (if not always efficiently) - in terms of already defined ones. In the future it might be worth implementing - some of them more efficiently. +union +
+
+  Fixpoint union_aux (s1 : t) :=
+    fix aux (s2 : t) (acc : list (Z * N)) :=
+    match (s1, s2) with
+    | (nil, _) => List.rev_append acc s2
+    | (_, nil) => List.rev_append acc s1
+    | ((y1, c1) :: l1, (y2, c2) :: l2) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => union_aux l1 s2 ((y1, c1)::acc)
+          | ICR_before_touch =>
+              union_aux l1 (
+               insert_interval_begin y1 ((c1+c2)%N) l2) acc
+          | ICR_after => aux l2 ((y2, c2)::acc)
+          | ICR_after_touch => union_aux l1 (
+              insert_interval_begin y2 ((c1+c2)%N) l2) acc
+          | ICR_overlap_before =>
+              union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc
+          | ICR_overlap_after =>
+              union_aux l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2) acc
+          | ICR_equal => union_aux l1 s2 acc
+          | ICR_subsume_1 => union_aux l1 s2 acc
+          | ICR_subsume_2 => aux l2 acc
+        end
+    end.
+ +
+  Definition union s1 s2 := union_aux s1 s2 nil.
+ +
+
+ +
+diff
-  Definition union (s1 s2 : t) :=
-    add_list (elements s1) s2.

-  Definition filter (f : elt -> bool) (s : t) : t :=
-    from_elements (List.filter f (elements s)).
+  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z * N)) (s : t) : (list (Z * N) * t) :=
+    match s with
+    | nil => (acc, nil)
+    | ((y1, c1) :: l1) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => diff_aux y2 c2 ((y1, c1)::acc) l1
+          | ICR_before_touch => diff_aux y2 c2 ((y1, c1)::acc) l1
+          | ICR_after => (acc, s)
+          | ICR_after_touch => (acc, s)
+          | ICR_overlap_before => diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
+          | ICR_overlap_after => (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
+          | ICR_equal => (acc, l1)
+          | ICR_subsume_1 => diff_aux y2 c2 acc l1
+          | ICR_subsume_2 => ((insert_intervalZ_guarded y1
+                (Z.to_N (y2 - y1)) acc),
+              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
+        end
+    end.

-  Definition inter (s1 s2 : t) : t :=
-    filter (fun x => mem x s2) s1.
+  Fixpoint diff_aux2 (acc : list (Z * N)) (s1 s2 : t) : (list (Z * N)) :=
+    match (s1, s2) with
+    | (nil, _) => rev_append acc s1
+    | (_, nil) => rev_append acc s1
+    | (_, (y2, c2) :: l2) =>
+      match diff_aux y2 c2 acc s1 with
+        (acc´, s1´) => diff_aux2 acc´ s1´ l2
+      end
+    end.

-  Definition diff (s1 s2 : t) : t :=
-    remove_list (elements s2) s1.
+  Definition diff s1 s2 := diff_aux2 nil s1 s2.

-  Definition subset s :=
-    List.forallb (fun x => mem x ) (elements s).
+
+ +
+subset +
+
+  Fixpoint subset (s1 : t) :=
+    fix aux (s2 : t) :=
+    match (s1, s2) with
+    | (nil, _) => true
+    | (_ :: _, nil) => false
+    | ((y1, c1) :: l1, (y2, c2) :: l2) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => false
+          | ICR_before_touch => false
+          | ICR_after => aux l2
+          | ICR_after_touch => false
+          | ICR_overlap_before => false
+          | ICR_overlap_after => false
+          | ICR_equal => subset l1 l2
+          | ICR_subsume_1 => subset l1 s2
+          | ICR_subsume_2 => false
+        end
+    end.

+
+ +
+equal +
+
  Fixpoint equal (s : t) : bool := match s, with
    | nil, nil => true
    | ((x,cx)::xs), ((y,cy)::ys) => andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    | _, _ => false
  end.
+
+
+ +
+inter +
+
+  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z * N)) (s : t) : (list (Z * N) * t) :=
+    match s with
+    | nil => (acc, nil)
+    | ((y1, c1) :: l1) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => inter_aux y2 c2 acc l1
+          | ICR_before_touch => inter_aux y2 c2 acc l1
+          | ICR_after => (acc, s)
+          | ICR_after_touch => (acc, s)
+          | ICR_overlap_before => inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
+          | ICR_overlap_after => ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
+          | ICR_equal => ((y1,c1)::acc, l1)
+          | ICR_subsume_1 => inter_aux y2 c2 ((y1, c1)::acc) l1
+          | ICR_subsume_2 => ((y2, c2)::acc, s)
+        end
+    end.
+ +
+  Fixpoint inter_aux2 (acc : list (Z * N)) (s1 s2 : t) : (list (Z * N)) :=
+    match (s1, s2) with
+    | (nil, _) => List.rev´ acc
+    | (_, nil) => List.rev´ acc
+    | (_, (y2, c2) :: l2) =>
+      match inter_aux y2 c2 acc s1 with
+        (acc´, s1´) => inter_aux2 acc´ s1´ l2
+      end
+    end.
+ +
+  Definition inter s1 s2 := inter_aux2 nil s1 s2.
+ +
+
+ +
+Partition and filter +
+
+ +
+  Definition partitionZ_fold_insert
+             (cur : option (Z * N)) (x : Z) :=
+    match cur with
+       None => (x, 1%N)
+     | Some (y, c) => (y, N.succ c)
+    end.
+ +
+  Definition partitionZ_fold_skip (acc : list (Z * N))
+             (cur : option (Z * N)) : (list (Z * N)) :=
+    match cur with
+       None => acc
+     | Some yc => yc::acc
+    end.
+ +
+  Definition partitionZ_fold_fun f st (x : Z) :=
+    match st with ((acc_t, c_t), (acc_f, c_f)) =>
+      if (f x) then
+        ((acc_t, Some (partitionZ_fold_insert c_t x)),
+         (partitionZ_fold_skip acc_f c_f, None))
+      else
+        ((partitionZ_fold_skip acc_t c_t, None),
+         (acc_f, Some (partitionZ_fold_insert c_f x)))
+    end.
+ +
+  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
+    snd (fold_elementsZ_single (fun st x => Some (partitionZ_fold_fun f st x)) st x c).
+ +
+  Definition partitionZ_single f acc_t acc_f x c :=
+    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
+    | ((acc_t, c_t), (acc_f, c_f)) =>
+        (partitionZ_fold_skip acc_t c_t,
+         partitionZ_fold_skip acc_f c_f)
+    end.
+ +
+  Fixpoint partitionZ_aux acc_t acc_f f s :=
+    match s with
+    | nil => (List.rev acc_t, List.rev acc_f)
+    | (y, c) :: =>
+      match partitionZ_single f acc_t acc_f y c with
+      | (acc_t´, acc_f´) => partitionZ_aux acc_t´ acc_f´ f
+      end
+    end.
+ +
+  Definition partitionZ := partitionZ_aux nil nil.
+ +
+  Definition partition (f : elt -> bool) : t -> (t * t) :=
+    partitionZ (fun z => f (Enc.decode z)).
+ +
+  Definition filterZ_fold_fun f st (x : Z) :=
+    match st with (acc_t, c_t) =>
+      if (f x) then
+        (acc_t, Some (partitionZ_fold_insert c_t x))
+      else
+        (partitionZ_fold_skip acc_t c_t, None)
+    end.
+ +
+  Definition filterZ_single_aux f st (x : Z) (c : N) :=
+    snd (fold_elementsZ_single (fun st x => Some (filterZ_fold_fun f st x)) st x c).
+ +
+  Definition filterZ_single f acc x c :=
+    match filterZ_single_aux f (acc, None) x c with
+    | (acc, c) =>
+        (partitionZ_fold_skip acc c)
+    end.
+ +
+  Fixpoint filterZ_aux acc f s :=
+    match s with
+    | nil => (List.rev acc)
+    | (y, c) :: =>
+      filterZ_aux (filterZ_single f acc y c) f
+    end.
+ +
+  Definition filterZ := filterZ_aux nil.
+ +
+  Definition filter (f : elt -> bool) : t -> t :=
+    filterZ (fun z => f (Enc.decode z)).
+ +
+ +
+
+ +
+Simple wrappers +
+
+
  Definition fold {B : Type} (f : elt -> B -> B) (s : t) (i : B) : B :=
-    List.fold_left (flip f) (elements s) i.
+    snd (fold_elementsZ (fun b z => Some (f (Enc.decode z) b)) i s).

  Definition for_all (f : elt -> bool) (s : t) : bool :=
-    List.forallb f (elements s).
+    snd (fold_elementsZ (fun b z =>
+      if b then
+        Some (f (Enc.decode z))
+      else None) true s).

  Definition exists_ (f : elt -> bool) (s : t) : bool :=
-    List.existsb f (elements s).
- -
-  Definition partition (f : elt -> bool) (s : t) : t * t :=
-    (filter f s, filter (fun x => negb (f x)) s).
+    snd (fold_elementsZ (fun b z =>
+      if b then
+        None
+      else Some (f (Enc.decode z))) false s).

  Fixpoint cardinalN c (s : t) : N := match s with
@@ -423,17 +770,35 @@

Library MSetIntervals

  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).

-  Definition chooseZ (s : t) : option Z :=
-    match List.rev´ (elementsZ s) with
+  Definition min_eltZ (s : t) : option Z :=
+    match s with
+    | nil => None
+    | (x, _) :: _ => Some x
+    end.
+ +
+  Definition min_elt (s : t) : option elt :=
+    match (min_eltZ s) with
+    | None => None
+    | Some x => Some (Enc.decode x)
+    end.
+ +
+  Definition choose := min_elt.
+ +
+  Fixpoint max_eltZ (s : t) : option Z :=
+    match s with
    | nil => None
-    | x :: _ => Some x
+    | (x, c) :: nil => Some (Z.pred (x + Z.of_N c))
+    | (x, _) :: => max_eltZ
    end.

-  Definition choose (s : t) : option elt :=
-    match elements s with
-      | nil => None
-      | e :: _ => Some e
+  Definition max_elt (s : t) : option elt :=
+    match (max_eltZ s) with
+    | None => None
+    | Some x => Some (Enc.decode x)
    end.

@@ -466,27 +831,26 @@

Library MSetIntervals

+  Definition is_encoded_elems_list (l : list Z) : Prop :=
+    (forall x, List.In x l -> exists e, Enc.encode e = x).

-  Definition inf (x:Z) (l: t) :=
-   match l with
-   | nil => true
-   | (y,_)::_ => Z.ltb x y
-   end.
+  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
+    match l with
+      | nil => true
+      | (y, _)::_ => Z.ltb x y
+    end.

-  Fixpoint isok (l : t) :=
+  Fixpoint interval_list_invariant (l : t) :=
   match l with
   | nil => true
-   | (x, c) ::l => inf (x+(Z.of_N c)) l && negb (N.eqb c 0) && isok l
+   | (x, c) :: =>
+       interval_list_elements_greater (x + (Z.of_N c)) && negb (N.eqb c 0) && interval_list_invariant
   end.

-  Definition is_encoded_elems_list (l : list Z) : Prop :=
-    (forall x, List.In x l -> exists e, Enc.encode e = x).
- -
-  Definition IsOk s := (isok s = true /\ is_encoded_elems_list (elementsZ s)).
+  Definition IsOk s := (interval_list_invariant s = true /\ is_encoded_elems_list (elementsZ s)).

@@ -571,27 +935,73 @@

Library MSetIntervals

  Lemma In_elementsZ_single1 : forall y x,
    List.In y (elementsZ_single x (1%N)) <->
    (x = y).
+ +
  Lemma length_elementsZ_single : forall cx x,
    length (elementsZ_single x cx) = N.to_nat cx.
-  Lemma elementsZ_aux´´_irrel : forall c acc x H1 H2,
-      elementsZ_aux´´ acc x c H1 = elementsZ_aux´´ acc x c H2.
-  Lemma elementsZ_aux´_pos : forall s x p,
-      elementsZ_aux´ s x (N.pos p) = elementsZ_aux´ (x::s) (Z.succ x) (Pos.pred_N p).
+  Lemma fold_elementsZ_aux_irrel {A} :
+    forall f c (acc : A) x H1 H2,
+      fold_elementsZ_aux f acc x c H1 =
+      fold_elementsZ_aux f acc x c H2.
+  Lemma fold_elementsZ_single_pos {A} : forall f (acc : A) x p,
+    fold_elementsZ_single f acc x (N.pos p) =
+    match f acc x with
+    | Some acc´ =>
+        fold_elementsZ_single f acc´ (Z.succ x)
+         (N.pred (N.pos p))
+    | None => (true, acc)
+    end.

-  Lemma elementsZ_aux´_zero : forall s x,
-      elementsZ_aux´ s x (0%N) = s.
+  Lemma fold_elementsZ_single_zero {A} : forall f (acc : A) x,
+      fold_elementsZ_single f acc x (0%N) = (false, acc).

-  Lemma elementsZ_aux´_succ : forall s x c,
-      elementsZ_aux´ s x (N.succ c) = elementsZ_aux´ (x::s) (Z.succ x) c.
+  Lemma fold_elementsZ_single_succ {A} : forall f (acc : A) x c,
+    fold_elementsZ_single f acc x (N.succ c) =
+    match f acc x with
+      | Some acc´ =>
+          fold_elementsZ_single f acc´ (Z.succ x) c
+      | None => (true, acc)
+    end.
+  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool * A) :=
+    match bs with
+      | nil => (false, acc)
+      | (b :: bs´) =>
+        match f acc b with
+        | Some acc´ => fold_opt f acc´ bs´
+        | None => (true, acc)
+        end
+    end.

-  Lemma elementsZ_single_intro : forall c s x,
-     elementsZ_aux´ s x c =
-     (List.rev (elementsZ_single x c)) ++ s.
-  Lemma elementsZ_aux_alt_def : forall s acc,
-    elementsZ_aux acc s = elementsZ s ++ acc.
+  Lemma fold_opt_list_cons : forall {A} (bs : list A) (acc : list A),
+    fold_opt (fun l x => Some (x :: l)) acc bs =
+    (false, List.rev bs ++ acc).
+  Lemma fold_opt_app {A B} : forall f (acc : A) (l1 l2 : list B),
+    fold_opt f acc (l1 ++ l2) =
+    (let (ab, acc´) := fold_opt f acc l1 in
+     if ab then (true, acc´) else fold_opt f acc´ l2).
+  Lemma fold_elementsZ_single_alt_def {A} : forall f c (acc : A) x,
+     fold_elementsZ_single f acc x c =
+     fold_opt f acc (elementsZ_single x c).
+  Lemma fold_elementsZ_nil {A} : forall f (acc : A),
+     fold_elementsZ f acc nil = (false, acc).
+ +
+  Lemma fold_elementsZ_cons {A} : forall f (acc : A) y c s,
+    fold_elementsZ f acc ((y, c)::s) =
+    (let (ab, acc´) := fold_elementsZ_single f acc y c in
+     if ab then (true, acc´) else fold_elementsZ f acc´ s).
+ +
+  Lemma fold_elementsZ_alt_def_aux : forall (s : t) base,
+    (snd (fold_elementsZ
+      (fun (l : list Z) (x : Z) => Some (x :: l)) base s)) =
+    elementsZ s ++ base.
+  Lemma fold_elementsZ_alt_def {A} : forall f s (acc : A),
+     fold_elementsZ f acc s =
+     fold_opt f acc (rev (elementsZ s)).
  Lemma elementsZ_cons : forall x c s, elementsZ (((x, c) :: s) : t) =
     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
@@ -600,115 +1010,118 @@

Library MSetIntervals

     ((elements_single x c) ++ elements s).

-  Lemma In_elementsZ_single_hd : forall (c : N) x, (c <> 0)%N -> List.In x (elementsZ_single x c).
+  Lemma elementsZ_app : forall (s1 s2 : t), elementsZ (s1 ++ s2) =
+     ((elementsZ s2) ++ (elementsZ s1)).
+ +
+  Lemma InZ_nil : forall y, InZ y nil <-> False.
+ +
+  Lemma InZ_cons : forall y x c s, InZ y (((x, c) :: s) : t) <->
+     List.In y (elementsZ_single x c) \/ InZ y s.
+ +
+  Lemma InZ_app : forall s1 s2 y,
+     InZ y (s1 ++ s2) <-> InZ y s1 \/ InZ y s2.
+ +
+  Lemma InZ_rev : forall s y,
+     InZ y (List.rev s) <-> InZ y s.
+ +
+  Lemma In_elementsZ_single_dec : forall y x c,
+    {List.In y (elementsZ_single x c)} +
+    {~ List.In y (elementsZ_single x c)}.
+ +
+  Lemma InZ_dec : forall y s,
+     {InZ y s} + {~InZ y s}.
+   Lemma In_elementsZ_single_hd : forall (c : N) x, (c <> 0)%N -> List.In x (elementsZ_single x c).
-

Alternative definition of addZ

+

comparing intervals

-
- - addZ is defined with efficient execution in mind. - We derive first an alternative definition that demonstrates - the intention better and is better suited for proofs.
-  Lemma addZ_ind :
-    forall (P : Z -> list (Z * N) -> Prop),
-       
-       (forall (x : Z), P x nil) ->
-
-       
-       (forall (x : Z) (l : list (Z * N)) (c : N),
-        P x ((x + 1, c) :: l)) ->
-
-       
-       (forall (x : Z) (l : list (Z * N)) (y : Z) (c : N),
-        (x + 1 ?= y) = Lt ->
-        P x ((y, c) :: l)) ->
-
-       
-       (forall (y : Z) (c : N),
-        ((y + Z.of_N c) + 1 ?= y) = Gt ->
-        P (y + Z.of_N c) ((y, c) :: nil)) ->
-
-       
-       (forall (l : list (Z * N)) (y : Z) (c : N),
-        ((y + Z.of_N c) + 1 ?= y) = Gt ->
-        (P (y+Z.of_N c) l) ->
-        P (y+Z.of_N c) ((y, c) :: (((y+Z.of_N c) + 1, ) :: l))) ->
-
-       
-       (forall (l : list (Z * N)) (y : Z) (c : N) (z : Z) ( : N),
-        ((y + Z.of_N c) + 1 ?= y) = Gt ->
-        (z =? (y+Z.of_N c) + 1) = false ->
-        (P (y+Z.of_N c) ((y, c) :: (z, ) :: l))) ->
-
-
-       
-       (forall (x : Z) (l : list (Z * N)) (y : Z) (c : N),
-        (x + 1 ?= y) = Gt ->
-        (x ?= y + Z.of_N c) = Lt ->
-        P x ((y, c) :: l)) ->
-
-       
-       (forall (x : Z)(l : list (Z * N)) (y : Z) (c : N),
-        (x + 1 ?= y) = Gt ->
-        (x ?= y + (Z.of_N c)) = Gt ->
-        (P x l) ->
-        P x ((y, c) :: l)) ->
-
-
-       forall (x : Z) (s : list (Z * N)),
-       P x s.
-  Lemma addZ_aux_alt_def : forall x s acc,
-    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
-  Lemma addZ_alt_def : forall x s,
-    addZ x s =
-    match s with
-    | nil => (x, 1%N)::nil
-    | (y, c) :: l =>
-        match (Z.compare (x+1) y) with
-        | Lt => (x, 1%N)::s
-        | Eq => (x, (c+1)%N)::l
-        | Gt => match (Z.compare x (y+Z.of_N c)) with
-                 | Lt => s
-                 | Gt => (y,c) :: addZ x l
-                 | Eq => match l with
-                           | nil => (y, (c+1)%N)::nil
-                           | (z, ) :: => if (Z.eqb z (x + 1)) then
-                                (y, (c + + 1)%N) ::
-                             else
-                                (y,(c+1)%N) :: (z, ) ::
-                         end
-                end
-        end
+  Ltac Z_named_compare_cases H := match goal with
+    | [ |- context [Z.compare ?z1 ?z2] ] =>
+      case_eq (Z.compare z1 z2); [move => /Z.compare_eq_iff | move => /Z.compare_lt_iff | move => /Z.compare_gt_iff]; move => H //
+  end.
+  Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H.
+  Lemma interval_compare_elim : forall (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
+    match (interval_compare (y1, c1) (y2, c2)) with
+      | ICR_before => (y1 + Z.of_N c1) < y2
+      | ICR_before_touch => (y1 + Z.of_N c1) = y2
+      | ICR_after => (y2 + Z.of_N c2) < y1
+      | ICR_after_touch => (y2 + Z.of_N c2) = y1
+      | ICR_equal => (y1 = y2) /\ (c1 = c2)
+      | ICR_overlap_before => (y1 < y2) /\ (y2 < y1 + Z.of_N c1) /\ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
+      | ICR_overlap_after => (y2 < y1) /\ (y1 < y2 + Z.of_N c2) /\ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
+      | ICR_subsume_1 => (y2 <= y1) /\ (y1 + Z.of_N c1 <= y2 + Z.of_N c2) /\ (y2 < y1 \/ y1 + Z.of_N c1 < y2 + Z.of_N c2)
+      | ICR_subsume_2 => (y1 <= y2) /\ (y2 + Z.of_N c2 <= y1 + Z.of_N c1) /\ (y1 < y2 \/ y2 + Z.of_N c2 < y1 + Z.of_N c1)
+    end.
+ +
+  Lemma interval_compare_swap : forall (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
+    (c1 <> 0%N) \/ (c2 <> 0%N) ->
+    interval_compare (y2, c2) (y1, c1) =
+    match (interval_compare (y1, c1) (y2, c2)) with
+      | ICR_before => ICR_after
+      | ICR_before_touch => ICR_after_touch
+      | ICR_after => ICR_before
+      | ICR_after_touch => ICR_before_touch
+      | ICR_equal => ICR_equal
+      | ICR_overlap_before => ICR_overlap_after
+      | ICR_overlap_after => ICR_overlap_before
+      | ICR_subsume_1 => ICR_subsume_2
+      | ICR_subsume_2 => ICR_subsume_1
+    end.
+  Lemma interval_1_compare_alt_def : forall (y : Z) (i : (Z * N)),
+    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
+      | ICR_equal => ICR_subsume_1
+      | ICR_subsume_1 => ICR_subsume_1
+      | ICR_subsume_2 => ICR_subsume_1
+      | r => r
+    end.
+  Lemma interval_1_compare_elim : forall (y1 : Z) (y2 : Z) (c2 : N),
+    match (interval_1_compare y1 (y2, c2)) with
+      | ICR_before => Z.succ y1 < y2
+      | ICR_before_touch => y2 = Z.succ y1
+      | ICR_after => (y2 + Z.of_N c2) < y1
+      | ICR_after_touch => (y2 + Z.of_N c2) = y1
+      | ICR_equal => False
+      | ICR_overlap_before => False
+      | ICR_overlap_after => False
+      | ICR_subsume_1 => (c2 = 0%N) \/ ((y2 <= y1) /\ (y1 < y2 + Z.of_N c2))
+      | ICR_subsume_2 => False
    end.
-

Alternative definition of removeZ

+

Alternative definition of addZ

-
- - removeZ is defined with efficient execution in mind. - We derive first an alternative definition that demonstrates - the intention better and is better suited for proofs.
-  Lemma removeZ_aux_alt_def : forall s x acc,
-    removeZ_aux acc x s = (List.rev acc) ++ removeZ x s.
-  Lemma removeZ_alt_def : forall x s,
-    removeZ x s =
+  Lemma addZ_aux_alt_def : forall x s acc,
+    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
+   Lemma addZ_alt_def : forall x s,
+    addZ x s =
    match s with
-    | nil => nil
+    | nil => (x, (1%N))::nil
    | (y, c) :: l =>
-        if (Z.ltb x y) then s else
-        if (Z.ltb x (y+Z.of_N c)) then (
-           (removeZ_aux_insert_guarded y (Z.to_N (x-y))
-             (removeZ_aux_insert_guarded (Z.succ x) (Z.to_N ((y+Z.of_N c)- (Z.succ x))) l))
-        ) else (y, c) :: removeZ x l
+        match (interval_1_compare x (y,c)) with
+          | ICR_before => (x, (1%N))::s
+          | ICR_before_touch => (x, N.succ c)::l
+          | ICR_after => (y,c)::(addZ x l)
+          | ICR_after_touch => insert_interval_begin y (N.succ c) l
+          | _ => (y, c)::l
+        end
    end.
+ +
+ +
@@ -716,8 +1129,20 @@

Library MSetIntervals

-  Lemma inf_impl : forall x y s,
-    (y <= x) -> inf x s = true -> inf y s = true.
+ +
+  Lemma interval_list_elements_greater_cons : forall z x c s,
+    interval_list_elements_greater z ((x, c) :: s) = true <->
+    (z < x).
+ +
+  Lemma interval_list_elements_greater_impl : forall x y s,
+    (y <= x) ->
+    interval_list_elements_greater x s = true ->
+    interval_list_elements_greater y s = true.
+ +
+  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.

  Lemma Ok_nil : Ok nil <-> True.
@@ -733,23 +1158,73 @@

Library MSetIntervals

    is_encoded_elems_list l.

-  Lemma isok_cons : forall y c , isok ((y, c) :: ) = true <->
-    (inf (y+Z.of_N c) = true /\ ((c <> 0)%N) /\ isok = true).
+  Lemma interval_list_invariant_cons : forall y c ,
+    interval_list_invariant ((y, c) :: ) = true <->
+    (interval_list_elements_greater (y+Z.of_N c) = true /\
+      ((c <> 0)%N) /\ interval_list_invariant = true).
+  Lemma interval_list_invariant_sing : forall x c,
+    interval_list_invariant ((x, c)::nil) = true <-> (c <> 0)%N.
+ +
  Lemma Ok_cons : forall y c , Ok ((y, c) :: ) <->
-    (inf (y+Z.of_N c) = true /\ ((c <> 0)%N) /\
+    (interval_list_elements_greater (y+Z.of_N c) = true /\ ((c <> 0)%N) /\
     is_encoded_elems_list (elementsZ_single y c) /\ Ok ).

  Lemma Nin_elements_greater : forall s y,
-     inf y s = true ->
-     isok s = true ->
-     forall x, x <= y ->
-     ~(InZ x s).
-  Lemma isok_inf_nin :
+     interval_list_elements_greater y s = true ->
+     interval_list_invariant s = true ->
+     forall x, x <= y -> ~(InZ x s).
+  Lemma Nin_elements_greater_equal :
     forall x s,
-       isok s = true ->
-       inf x s = true ->
+       interval_list_elements_greater x s = true ->
+       interval_list_invariant s = true ->
       ~ (InZ x s).
+ +
+  Lemma interval_list_elements_greater_alt_def : forall s y,
+     interval_list_invariant s = true ->
+
+     (interval_list_elements_greater y s = true <->
+      (forall x, x <= y -> ~(InZ x s))).
+  Lemma interval_list_elements_greater_alt2_def : forall s y,
+     interval_list_invariant s = true ->
+
+     (interval_list_elements_greater y s = true <->
+      (forall x, InZ x s -> y < x)).
+ +
+  Lemma interval_list_elements_greater_intro : forall s y,
+     interval_list_invariant s = true ->
+     (forall x, InZ x s -> y < x) ->
+     interval_list_elements_greater y s = true.
+ +
+  Lemma interval_list_elements_greater_app_elim_1 : forall s1 s2 y,
+    interval_list_elements_greater y (s1 ++ s2) = true ->
+    interval_list_elements_greater y s1 = true.
+ +
+  Lemma interval_list_invariant_app_intro : forall s1 s2,
+      interval_list_invariant s1 = true ->
+      interval_list_invariant s2 = true ->
+      (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2) ->
+      interval_list_invariant (s1 ++ s2) = true.
+  Lemma interval_list_invariant_app_elim : forall s1 s2,
+      interval_list_invariant (s1 ++ s2) = true ->
+      interval_list_invariant s1 = true /\
+      interval_list_invariant s2 = true /\
+      (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2).
+  Lemma interval_list_invariant_app_iff : forall s1 s2,
+      interval_list_invariant (s1 ++ s2) = true <->
+      (interval_list_invariant s1 = true /\
+      interval_list_invariant s2 = true /\
+      (forall (x1 x2 : Z), InZ x1 s1 -> InZ x2 s2 -> Z.succ x1 < x2)).
+  Lemma interval_list_invariant_snoc_intro : forall s1 y2 c2,
+      interval_list_invariant s1 = true ->
+      (c2 <> 0)%N ->
+      (forall x, InZ x s1 -> Z.succ x < y2) ->
+      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
@@ -757,11 +1232,21 @@

Library MSetIntervals

+  Lemma encode_decode_eq : forall x s, Ok s -> InZ x s ->
+    (Enc.encode (Enc.decode x) = x).
+ +
  Lemma In_alt_def : forall x s, Ok s ->
    (In x s <-> List.In x (elements s)).
  Lemma In_InZ : forall x s, Ok s ->
    (In x s <-> InZ (Enc.encode x) s).
+
+  Lemma InZ_In : forall x s, Ok s ->
+    (InZ x s -> In (Enc.decode x) s).
+ +
+
@@ -773,68 +1258,116 @@

Library MSetIntervals


  Lemma memZ_spec :
-   forall (s : t) (x : Z) (Hs : Ok s), memZ x s = true <-> InZ x s.
+    forall (s : t) (x : Z) (Hs : Ok s), memZ x s = true <-> InZ x s.
  Lemma mem_spec :
   forall (s : t) (x : elt) (Hs : Ok s), mem x s = true <-> In x s.
+
+  Lemma merge_interval_size_neq_0 : forall x1 c1 x2 c2,
+     (c1 <> 0%N) ->
+     (merge_interval_size x1 c1 x2 c2 <> 0)%N.
+
-

add specification

+

insert if length not 0

-  Lemma addZ_spec :
-   forall (s : t) (x y : Z) (Hs : Ok s),
-    InZ y (addZ x s) <-> Z.eq y x \/ InZ y s.
-  Lemma addZ_isok : forall s x, isok s = true -> isok (addZ x s) = true.
-   Global Instance add_ok s x : forall `(Ok s), Ok (add x s).
-   Lemma add_spec :
-   forall (s : t) (x y : elt) (Hs : Ok s),
-     In y (add x s) <-> Enc.E.eq y x \/ In y s.
+ +
+  Lemma interval_list_invariant_insert_intervalZ_guarded : forall x c s,
+    interval_list_invariant s = true ->
+    interval_list_elements_greater (x + Z.of_N c) s = true ->
+    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
+ +
+  Lemma interval_list_elements_greater_insert_intervalZ_guarded : forall x c y s,
+    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true <->
+    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
+ +
+  Lemma insert_intervalZ_guarded_app : forall x c s1 s2,
+    (insert_intervalZ_guarded x c s1) ++ s2 =
+    insert_intervalZ_guarded x c (s1 ++ s2).
+ +
+  Lemma insert_intervalZ_guarded_rev_nil_app : forall x c s,
+    rev (insert_intervalZ_guarded x c nil) ++ s =
+    insert_intervalZ_guarded x c s.
+ +
+Lemma elementsZ_insert_intervalZ_guarded : forall x c s,
+    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
+ +
+  Lemma InZ_insert_intervalZ_guarded : forall y x c s,
+    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).

-

remove specification

+

Merging intervals


-  Lemma isok_removeZ_aux_insert_guarded : forall x c s,
-    isok s = true -> inf (x + Z.of_N c) s = true ->
-    isok (removeZ_aux_insert_guarded x c s) = true.
+  Lemma merge_interval_size_add : forall x c1 c2,
+     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.

-  Lemma inf_removeZ_aux_insert_guarded : forall x c y s,
-    inf y (removeZ_aux_insert_guarded x c s) = true <->
-    (if (c =? 0)%N then (inf y s = true) else (y < x)).
+  Lemma merge_interval_size_eq_max : forall y1 c1 y2 c2,
+     y1 <= y2 + Z.of_N c2 ->
+     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
+     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).

-  Lemma removeZ_counter_pos_aux : forall y c x,
-     x < y + Z.of_N c ->
-     0 <= y + Z.of_N c - Z.succ x.
+  Lemma merge_interval_size_invariant : forall y1 c1 y2 c2 z s,
+    interval_list_invariant s = true ->
+    y1 + Z.of_N c1 <= y2 + Z.of_N c2 ->
+    y2 + Z.of_N c2 <= z ->
+    interval_list_elements_greater z s = true ->
+    (c1 <> 0)%N ->
+    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
+   true.
+  Lemma In_merge_interval : forall x1 c1 x2 c2 y,
+    x1 <= x2 ->
+    x2 <= x1 + Z.of_N c1 -> (
+    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) <->
+    List.In y (elementsZ_single x1 c1) \/ List.In y (elementsZ_single x2 c2)).
+  Lemma insert_interval_begin_spec : forall y s x c,
+     interval_list_invariant s = true ->
+     interval_list_elements_greater x s = true ->
+     (c <> 0)%N ->
+      (
+     interval_list_invariant (insert_interval_begin x c s) = true /\
+     (InZ y (insert_interval_begin x c s) <->
+     (List.In y (elementsZ_single x c) \/ InZ y s))).
+
-
-  Lemma removeZ_isok : forall s x, isok s = true -> isok (removeZ x s) = true.
-  Lemma elementsZ_removeZ_aux_insert_guarded : forall x c s,
-    elementsZ (removeZ_aux_insert_guarded x c s) = elementsZ ((x, c) :: s).
+
+

add specification

-
-  Lemma removeZ_spec :
-   forall (s : t) (x y : Z) (Hs : isok s = true),
-    InZ y (removeZ x s) <-> InZ y s /\ ~Z.eq y x.
-  Global Instance remove_ok s x : forall `(Ok s), Ok (remove x s).
-  Lemma remove_spec :
+
+
+  Lemma addZ_InZ :
+   forall (s : t) (x y : Z),
+    interval_list_invariant s = true ->
+    (InZ y (addZ x s) <-> x = y \/ InZ y s).
+  Lemma addZ_invariant : forall s x,
+    interval_list_invariant s = true ->
+    interval_list_invariant (addZ x s) = true.
+   Global Instance add_ok s x : forall `(Ok s), Ok (add x s).
+   Lemma add_spec :
   forall (s : t) (x y : elt) (Hs : Ok s),
-    In y (remove x s) <-> In y s /\ ~Enc.E.eq y x.
+     In y (add x s) <-> Enc.E.eq y x \/ In y s.
-

empty specification

+

empty specification

@@ -850,7 +1383,7 @@

Library MSetIntervals

-

is_empty specification

+

is_empty specification

@@ -860,7 +1393,7 @@

Library MSetIntervals

-

singleton specification

+

singleton specification

@@ -871,7 +1404,7 @@

Library MSetIntervals

-

add_list specification

+

add_list specification

@@ -880,96 +1413,283 @@

Library MSetIntervals

     (In x (add_list l s) <-> (SetoidList.InA Enc.E.eq x l) \/ In x s).
-
-

remove_list specification

- -
-
-  Lemma remove_list_ok : forall l s, Ok s -> Ok (remove_list l s).
-  Lemma remove_list_spec : forall x l s, Ok s ->
-     (In x (remove_list l s) <-> ~(InA Enc.E.eq x l) /\ In x s).
-
-

union specification

-  Global Instance union_ok s : forall `(Ok s, Ok ), Ok (union s ).
+  Lemma union_aux_flatten_alt_def : forall (s1 s2 : t) acc,
+    union_aux s1 s2 acc =
+    match (s1, s2) with
+    | (nil, _) => List.rev_append acc s2
+    | (_, nil) => List.rev_append acc s1
+    | ((y1, c1) :: l1, (y2, c2) :: l2) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => union_aux l1 s2 ((y1, c1)::acc)
+          | ICR_before_touch =>
+              union_aux l1 (
+                insert_interval_begin y1 ((c1+c2)%N) l2) acc
+          | ICR_after => union_aux s1 l2 ((y2, c2)::acc)
+          | ICR_after_touch => union_aux l1 (
+              insert_interval_begin y2 ((c1+c2)%N) l2) acc
+          | ICR_overlap_before =>
+              union_aux l1 (
+                insert_interval_begin y1
+                  (merge_interval_size y1 c1 y2 c2) l2) acc
+          | ICR_overlap_after =>
+              union_aux l1 (
+                insert_interval_begin y2
+                  (merge_interval_size y2 c2 y1 c1) l2) acc
+          | ICR_equal => union_aux l1 s2 acc
+          | ICR_subsume_1 => union_aux l1 s2 acc
+          | ICR_subsume_2 => union_aux s1 l2 acc
+        end
+    end.

+  Lemma union_aux_alt_def : forall (s1 s2 : t) acc,
+    union_aux s1 s2 acc =
+    List.rev_append acc (union s1 s2).
+ +
+  Lemma union_alt_def : forall (s1 s2 : t),
+    union s1 s2 =
+    match (s1, s2) with
+    | (nil, _) => s2
+    | (_, nil) => s1
+    | ((y1, c1) :: l1, (y2, c2) :: l2) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => (y1, c1) :: (union l1 s2)
+          | ICR_before_touch =>
+              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
+          | ICR_after => (y2, c2) :: union s1 l2
+          | ICR_after_touch => union l1
+              (insert_interval_begin y2 ((c1+c2)%N) l2)
+          | ICR_overlap_before =>
+              union l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2)
+          | ICR_overlap_after =>
+              union l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2)
+          | ICR_equal => union l1 s2
+          | ICR_subsume_1 => union l1 s2
+          | ICR_subsume_2 => union s1 l2
+        end
+     end.
+ +
+  Lemma union_InZ :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    forall y, (InZ y (union s1 s2) <-> InZ y s1 \/ InZ y s2).
+  Lemma union_invariant :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    interval_list_invariant (union s1 s2) = true.
+  Global Instance union_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (union s1 s2).
  Lemma union_spec :
   forall (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
   In x (union s ) <-> In x s \/ In x .
- -
-

filter specification

+

inter specification

- -
-  Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s).
- -
-  Lemma filter_spec :
-   forall (s : t) (x : elt) (f : elt -> bool),
-   Proper (Enc.E.eq==>eq) f ->
-   (In x (filter f s) <-> In x s /\ f x = true).
+  Lemma inter_aux_alt_def :
+    forall (y2 : Z) (c2 : N) (s : t) acc,
+      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
+                               (acc´, ) => (acc´ ++ acc, )
+                             end.
+  Lemma inter_aux_props :
+    forall (y2 : Z) (c2 : N) (s : t) acc,
+      interval_list_invariant (rev acc) = true ->
+      interval_list_invariant s = true ->
+      (forall x1 x2, InZ x1 acc -> InZ x2 s ->
+                     List.In x2 (elementsZ_single y2 c2) ->
+                     Z.succ x1 < x2) ->
+      (c2 <> 0%N) ->
+      match (inter_aux y2 c2 acc s) with (acc´, ) =>
+        (forall y, (InZ y acc´ <->
+                   (InZ y acc \/ (InZ y s /\ (List.In y (elementsZ_single y2 c2)))))) /\
+        (forall y, InZ y -> InZ y s) /\
+        (forall y, InZ y s -> y2 + Z.of_N c2 < y -> InZ y ) /\
+        interval_list_invariant (rev acc´) = true /\
+        interval_list_invariant = true
+      end.
+  Lemma inter_aux2_props :
+   forall (s2 s1 acc : t),
+    interval_list_invariant (rev acc) = true ->
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    (forall x1 x2, InZ x1 acc -> InZ x2 s1 -> InZ x2 s2 -> Z.succ x1 < x2) ->
+    ((forall y, (InZ y (inter_aux2 acc s1 s2) <->
+               (InZ y acc) \/ ((InZ y s1) /\ InZ y s2))) /\
+    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
+  Lemma inter_InZ :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    forall y, (InZ y (inter s1 s2) <-> InZ y s1 /\ InZ y s2).
+ +
+  Lemma inter_invariant :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    interval_list_invariant (inter s1 s2) = true.
+ +
+ +
+  Global Instance inter_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (inter s1 s2).
+  Lemma inter_spec :
+   forall (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
+   In x (inter s ) <-> In x s /\ In x .
-

inter specification

+

diff specification

-  Global Instance inter_ok s : forall `(Ok s, Ok ), Ok (inter s ).
- -
-  Lemma inter_spec :
+  Lemma diff_aux_alt_def :
+    forall (y2 : Z) (c2 : N) (s : t) acc,
+      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
+                               (acc´, ) => (acc´ ++ acc, )
+                             end.
+  Lemma diff_aux_props :
+    forall (y2 : Z) (c2 : N) (s : t) acc,
+      interval_list_invariant (List.rev acc) = true ->
+      interval_list_invariant s = true ->
+      (forall x1 x2, InZ x1 acc -> InZ x2 s -> Z.succ x1 < x2) ->
+      (forall x, InZ x acc -> x < y2) ->
+      (c2 <> 0%N) ->
+      match (diff_aux y2 c2 acc s) with
+        (acc´, ) => (forall y, InZ y (List.rev_append acc´ ) <->
+                                 InZ y (List.rev_append acc s) /\ ~(List.In y (elementsZ_single y2 c2))) /\
+                      (interval_list_invariant (List.rev_append acc´ ) = true) /\
+                      (forall x, InZ x acc´ -> x < y2 + Z.of_N c2)
+      end.
+  Lemma diff_aux2_props :
+   forall (s2 s1 acc : t),
+    interval_list_invariant (rev_append acc s1) = true ->
+    interval_list_invariant s2 = true ->
+    (forall x1 x2, InZ x1 acc -> InZ x2 s2 -> Z.succ x1 < x2) ->
+    ((forall y, (InZ y (diff_aux2 acc s1 s2) <->
+               ((InZ y acc) \/ (InZ y s1)) /\ ~InZ y s2)) /\
+    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
+  Lemma diff_InZ :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    forall y, (InZ y (diff s1 s2) <-> InZ y s1 /\ ~InZ y s2).
+ +
+  Lemma diff_invariant :
+   forall (s1 s2 : t),
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    interval_list_invariant (diff s1 s2) = true.
+ +
+ +
+  Global Instance diff_ok s1 s2 : forall `(Ok s1, Ok s2), Ok (diff s1 s2).
+  Lemma diff_spec :
   forall (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
-   In x (inter s ) <-> In x s /\ In x .
+   In x (diff s ) <-> In x s /\ ~In x .
-

diff specification

+

remove specification

-  Global Instance diff_ok s : forall `(Ok s, Ok ), Ok (diff s ).
+  Lemma removeZ_alt_def : forall x s acc,
+    interval_list_invariant s = true ->
+    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
+                    (acc´, ) => rev_append acc´
+                  end.
+  Lemma removeZ_interval_list_invariant : forall s x, interval_list_invariant s = true -> interval_list_invariant (removeZ x s) = true.

-  Lemma diff_spec :
-   forall (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
-   In x (diff s ) <-> In x s /\ ~In x .
+  Lemma removeZ_spec :
+   forall (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
+    InZ y (removeZ x s) <-> InZ y s /\ ~Z.eq y x.

+  Global Instance remove_ok s x : forall `(Ok s), Ok (remove x s).
+  Lemma remove_spec :
+   forall (s : t) (x y : elt) (Hs : Ok s),
+    In y (remove x s) <-> In y s /\ ~Enc.E.eq y x.
-

subset specification

+

remove_list specification

+  Lemma remove_list_ok : forall l s, Ok s -> Ok (remove_list l s).
+  Lemma remove_list_spec : forall x l s, Ok s ->
+     (In x (remove_list l s) <-> ~(InA Enc.E.eq x l) /\ In x s).
+
+ +
+

subset specification

+ +
+
+  Lemma subset_flatten_alt_def : forall (s1 s2 : t),
+    subset s1 s2 =
+    match (s1, s2) with
+    | (nil, _) => true
+    | (_ :: _, nil) => false
+    | ((y1, c1) :: l1, (y2, c2) :: l2) =>
+        match (interval_compare (y1, c1) (y2,c2)) with
+          | ICR_before => false
+          | ICR_before_touch => false
+          | ICR_after => subset s1 l2
+          | ICR_after_touch => false
+          | ICR_overlap_before => false
+          | ICR_overlap_after => false
+          | ICR_equal => subset l1 l2
+          | ICR_subsume_1 => subset l1 s2
+          | ICR_subsume_2 => false
+        end
+    end.

+  Lemma subset_props_aux : forall y1 c1 l1 y2 c2 l2,
+    (exists y, InZ y ((y1, c1) :: l1) /\ ~InZ y ((y2, c2) :: l2)) ->
+    (false = true <->
+    (forall y : Z,
+        InZ y ((y1, c1) :: l1) -> InZ y ((y2, c2) :: l2))).
+ +
+  Lemma subset_props_aux_before : forall y1 c1 l1 y2 c2 l2,
+    (c1 <> 0%N) ->
+    interval_list_invariant ((y2, c2) :: l2) = true ->
+    (y1 < y2) ->
+    (false = true <->
+    (forall y : Z,
+        InZ y ((y1, c1) :: l1) -> InZ y ((y2, c2) :: l2))).
+  Lemma subset_props : forall s1 s2 : t,
+    interval_list_invariant s1 = true ->
+    interval_list_invariant s2 = true ->
+    (subset s1 s2 = true <->
+     (forall y, InZ y s1 -> InZ y s2)).
  Lemma subset_spec :
   forall (s : t) (Hs : Ok s) (Hs´ : Ok ),
   subset s = true <-> Subset s .
- -
-

elements and elementsZ specification

+

elements and elementsZ specification

- -
  Lemma elements_spec1 : forall (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) <-> In x s.

@@ -980,83 +1700,148 @@

Library MSetIntervals

-

equal specification

+

equal specification

  Lemma equal_alt_def : forall s1 s2,
    equal s1 s2 = true <-> (s1 = s2).
-  Lemma elementsZ_cons_le_start : forall x cx xs y cy ys,
-     isok ((x, cx) :: xs) = true ->
-     isok ((y, cy) :: ys) = true ->
-     (forall z, List.In z (elementsZ ((y, cy) :: ys)) ->
-                List.In z (elementsZ ((x, cx) :: xs))) ->
-     (x <= y).
-  Lemma elementsZ_cons_le_end : forall x cx xs y cy ys,
-     isok ((x, cx) :: xs) = true ->
-     isok ((y, cy) :: ys) = true ->
-     (x <= y + Z.of_N cy) ->
-     (forall z, List.In z (elementsZ ((x, cx) :: xs)) ->
-                List.In z (elementsZ ((y, cy) :: ys))) ->
-     (x + Z.of_N cx <= y + Z.of_N cy).
-  Lemma elementsZ_cons_equiv_hd : forall x cx xs y cy ys,
-     isok ((x, cx) :: xs) = true ->
-     isok ((y, cy) :: ys) = true ->
-     (forall z, List.In z (elementsZ ((x, cx) :: xs)) <->
-                List.In z (elementsZ ((y, cy) :: ys))) ->
-     (x = y) /\ (cx = cy).
- -
-  Lemma elementsZ_single_equiv : forall x cx y cy,
-     (cx <> 0)%N ->
-     (cy <> 0)%N ->
-     (forall z, List.In z (elementsZ_single x cx) <->
-                List.In z (elementsZ_single y cy)) ->
-     (x = y) /\ (cx = cy).
  Lemma equal_elementsZ :
    forall (s : t) {Hs : Ok s} {Hs´ : Ok },
    (forall x, (InZ x s <-> InZ x )) -> (s = ).
+ +
  Lemma equal_spec :
    forall (s : t) {Hs : Ok s} {Hs´ : Ok },
    equal s = true <-> Equal s .
-

choose specification

+

compare

-  Lemma choose_alt_def : forall s,
-    choose s = match chooseZ s with
-      | None => None
-      | Some e => Some (Enc.decode e)
-    end.
+  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).
+ +
+  Lemma compare_eq_Eq : forall s1 s2,
+    (compare s1 s2 = Eq <-> equal s1 s2 = true).
+  Lemma compare_eq_Lt_nil_l : forall s,
+    compare nil s = Lt <-> s <> nil.
+ +
+  Lemma compare_eq_Lt_nil_r : forall s,
+    ~(compare s nil = Lt).
+ +
+  Lemma compare_eq_Lt_cons : forall y1 y2 c1 c2 s1 s2,
+    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt <->
+    (y1 < y2) \/ ((y1 = y2) /\ (c1 < c2)%N) \/
+    ((y1 = y2) /\ (c1 = c2) /\ compare s1 s2 = Lt).
+  Lemma compare_antisym: forall (s1 s2 : t),
+    (compare s1 s2) = CompOpp (compare s2 s1).
+ +
+  Lemma compare_spec : forall s1 s2,
+    CompSpec eq lt s1 s2 (compare s1 s2).
+  Lemma lt_Irreflexive : Irreflexive lt.
+ +
+  Lemma lt_Transitive : Transitive lt.
+
+
+

elements is sorted

+ +
+
+  Lemma elementsZ_single_sorted : forall c x,
+    sort Z.lt (elementsZ_single x c).
+  Lemma elementsZ_sorted : forall s,
+    interval_list_invariant s = true ->
+    sort Z.lt (rev (elementsZ s)).
+  Lemma elements_sorted : forall s,
+    Ok s ->
+    sort Enc.E.lt (elements s).
+
+ +
+

choose specification

+ +
+
+  Definition min_eltZ_spec1 :
+    forall (s : t) (x : Z),
+      interval_list_invariant s = true ->
+      min_eltZ s = Some x -> InZ x s.
+   Lemma min_eltZ_spec2 :
+    forall (s : t) (x y : Z) (Hs : Ok s),
+    min_eltZ s = Some x -> InZ y s -> ~ Z.lt y x.
+  Definition min_eltZ_spec3 :
+    forall (s : t),
+      min_eltZ s = None -> forall x, ~InZ x s.
+ +
+  Definition min_elt_spec1 :
+    forall (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x -> In x s.
+ +
+  Definition min_elt_spec2 :
+    forall (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x -> In y s -> ~(Enc.E.lt y x).
+ +
+  Definition min_elt_spec3 :
+    forall s : t, min_elt s = None -> Empty s.
+
  Definition choose_spec1 :
-    forall (s : t) (x : elt), choose s = Some x -> In x s.
+    forall (s : t) (x : elt) (Hs : Ok s), choose s = Some x -> In x s.

  Definition choose_spec2 :
    forall s : t, choose s = None -> Empty s.

-  Lemma chooseZ_min :
-    forall (s : t) (x y : Z) (Hs : Ok s),
-    chooseZ s = Some x -> InZ y s -> ~ Z.lt y x.
-  Lemma chooseZ_InZ :
+  Lemma choose_spec3: forall s x , Ok s -> Ok ->
+    choose s = Some x -> choose = Some -> Equal s -> x = .
+ +
+ +
+  Definition max_eltZ_spec1 :
    forall (s : t) (x : Z),
-    chooseZ s = Some x -> InZ x s.
+      interval_list_invariant s = true ->
+      max_eltZ s = Some x -> InZ x s.
+   Lemma max_eltZ_spec2 :
+    forall (s : t) (x y : Z),
+    interval_list_invariant s = true ->
+    max_eltZ s = Some x -> InZ y s -> ~ Z.lt x y.
+  Lemma max_eltZ_eq_None :
+    forall (s : t),
+      max_eltZ s = None -> s = nil.
+ +
+  Definition max_eltZ_spec3 :
+    forall (s : t),
+      max_eltZ s = None -> forall x, ~InZ x s.
+ +
+  Definition max_elt_spec1 :
+    forall (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x -> In x s.

-  Lemma chooseZ_spec3: forall s x , Ok s -> Ok ->
-   chooseZ s = Some x -> chooseZ = Some -> Equal s -> x = .
+  Definition max_elt_spec2 :
+    forall (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x -> In y s -> ~(Enc.E.lt x y).
+ +
+  Definition max_elt_spec3 :
+    forall s : t, max_elt s = None -> Empty s.

-

fold specification

+

fold specification

@@ -1065,19 +1850,13 @@

Library MSetIntervals

  Lemma fold_spec :
   forall (s : t) (A : Type) (i : A) (f : elt -> A -> A),
   fold f s i = fold_left (flip f) (elements s) i.
- -
- -
-

cardinal specification

+

cardinal specification

- -
  Lemma cardinalN_spec : forall (s : t) (c : N),
    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
  Lemma cardinal_spec :
@@ -1088,7 +1867,7 @@

Library MSetIntervals

-

for_all specification

+

for_all specification

@@ -1098,31 +1877,143 @@

Library MSetIntervals

   forall (s : t) (f : elt -> bool) (Hs : Ok s),
   Proper (Enc.E.eq==>eq) f ->
   (for_all f s = true <-> For_all (fun x => f x = true) s).
- -
-

exists specification

+

exists specification

- -
  Lemma exists_spec :
   forall (s : t) (f : elt -> bool) (Hs : Ok s),
   Proper (Enc.E.eq==>eq) f ->
   (exists_ f s = true <-> Exists (fun x => f x = true) s).
+
+ +
+

filter specification

+ +
+
+  Definition partitionZ_aux_invariant (x : Z) acc c :=
+    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true /\
+    match c with
+      None => (forall , InZ acc -> Z.succ < x)
+    | Some (y, ) => (x = y + Z.of_N )
+    end.
+ +
+  Lemma partitionZ_aux_invariant_insert : forall x acc c,
+    partitionZ_aux_invariant x acc c ->
+    partitionZ_aux_invariant (Z.succ x) acc
+      (Some (partitionZ_fold_insert c x)).
+  Lemma partitionZ_aux_invariant_skip : forall x acc c,
+    partitionZ_aux_invariant x acc c ->
+    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
+  Definition partitionZ_fold_current (c : option (Z * N)) :=
+    match c with
+       None => nil
+     | Some yc => yc::nil
+    end.
+ +
+  Lemma InZ_partitionZ_fold_current_Some : forall yc y,
+     InZ y (partitionZ_fold_current (Some yc)) <->
+     InZ y (yc :: nil).
+ +
+  Lemma InZ_partitionZ_fold_insert : forall c x y l,
+   match c with
+   | Some (y, ) => x = y + Z.of_N
+   | None => True
+   end -> (
+   InZ y (partitionZ_fold_insert c x :: l) <->
+    ((x = y) \/ InZ y (partitionZ_fold_current c) \/
+       InZ y l)).
+  Lemma InZ_partitionZ_fold_skip : forall c acc y,
+    InZ y (partitionZ_fold_skip acc c) <->
+    (InZ y (partitionZ_fold_current c) \/ InZ y acc).
+  Lemma filterZ_single_aux_props :
+    forall f c x acc cur,
+      partitionZ_aux_invariant x acc cur ->
+      match (filterZ_single_aux f (acc, cur) x c) with
+        (acc´, ) =>
+        let r := partitionZ_fold_skip acc´ in
+        interval_list_invariant (List.rev r) = true /\
+        (forall , InZ r <-> (InZ (partitionZ_fold_skip acc cur) \/
+                                    (f = true /\ List.In (elementsZ_single x c))))
+
+      end.
+  Lemma filterZ_single_props :
+    forall f c x acc,
+      interval_list_invariant (rev acc) = true ->
+      (forall : Z, InZ acc -> Z.succ < x) ->
+      match (filterZ_single f acc x c) with
+        r =>
+        interval_list_invariant (List.rev r) = true /\
+        (forall , InZ r <-> (InZ acc \/
+                                 (f = true /\ List.In (elementsZ_single x c))))
+
+      end.
+ +
+ +
+  Lemma filterZ_aux_props :
+    forall f s acc,
+      interval_list_invariant s = true ->
+      interval_list_invariant (rev acc) = true ->
+      (forall x1 x2 : Z, InZ x1 acc -> InZ x2 s -> Z.succ x1 < x2) ->
+      match (filterZ_aux acc f s) with
+        r =>
+        interval_list_invariant r = true /\
+        (forall , InZ r <-> (InZ acc \/
+                                 (f = true /\ InZ s)))
+      end.
+  Lemma filterZ_props :
+    forall f s,
+      interval_list_invariant s = true ->
+      match (filterZ f s) with r =>
+        interval_list_invariant r = true /\
+        (forall , InZ r <-> (f = true /\ InZ s))
+      end.
+ +
+  Global Instance filter_ok s f : forall `(Ok s), Ok (filter f s).
+ +
+  Lemma filter_spec :
+   forall (s : t) (x : elt) (f : elt -> bool),
+   Ok s ->
+   (In x (filter f s) <-> In x s /\ f x = true).

-

partition specification

+

partition specification

+
+  Lemma partitionZ_single_aux_alt_def : forall f c y acc_t c_t acc_f c_f,
+    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
+    (filterZ_single_aux f (acc_t, c_t) y c,
+     filterZ_single_aux (fun x : Z => negb (f x)) (acc_f, c_f) y c).
+  Lemma partitionZ_aux_alt_def : forall f s acc_t acc_f,
+   partitionZ_aux acc_t acc_f f s =
+   (filterZ_aux acc_t f s,
+    filterZ_aux acc_f (fun x : Z => negb (f x)) s).
+  Lemma partitionZ_alt_def : forall f s,
+    partitionZ f s = (filterZ f s,
+                      filterZ (fun x => negb (f x)) s).
+ +
+  Lemma partition_alt_def : forall f s,
+    partition f s = (filter f s,
+                     filter (fun x => negb (f x)) s).
+
  Global Instance partition_ok1 s f : forall `(Ok s), Ok (fst (partition f s)).
@@ -1132,12 +2023,12 @@

Library MSetIntervals


  Lemma partition_spec1 :
   forall (s : t) (f : elt -> bool),
-   Proper (Enc.E.eq==>eq) f -> Equal (fst (partition f s)) (filter f s).
+   Equal (fst (partition f s)) (filter f s).

  Lemma partition_spec2 :
   forall (s : t) (f : elt -> bool),
-   Proper (Enc.E.eq==>eq) f ->
+   Ok s ->
   Equal (snd (partition f s)) (filter (fun x => negb (f x)) s).

@@ -1147,7 +2038,7 @@

Library MSetIntervals

-

Main Module

+

Main Module

@@ -1158,7 +2049,7 @@

Library MSetIntervals


-Module MSetIntervals (Enc : ElementEncode) <: WSetsOn Enc.E.
+Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
  Module E := Enc.E.
  Module Raw := Raw Enc.
@@ -1191,7 +2082,10 @@

Library MSetIntervals

 Definition empty : t := Mkt Raw.empty.
 Definition is_empty (s : t) := Raw.is_empty s.
 Definition elements (s : t) : list elt := Raw.elements s.
Definition min_elt (s : t) : option elt := Raw.min_elt s.
Definition max_elt (s : t) : option elt := Raw.max_elt s.
 Definition choose (s : t) : option elt := Raw.choose s.
Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
 Definition fold {A : Type}(f : elt -> A -> A)(s : t) : A -> A := Raw.fold f s.
 Definition cardinal (s : t) := Raw.cardinal s.
 Definition filter (f : elt -> bool)(s : t) : t := Mkt (Raw.filter f s).
@@ -1212,6 +2106,13 @@

Library MSetIntervals


 Definition eq_dec : forall (s :t), { eq s }+{ ~eq s }.
+
Definition lt : t -> t -> Prop := Raw.lt.
+ +
Instance lt_strorder : StrictOrder lt.
Instance lt_compat : Proper (eq==>eq==>iff) lt.
+
 Section Spec.
  Variable s : t.
@@ -1245,9 +2146,25 @@

Library MSetIntervals

      Equal (snd (partition f s)) (filter (fun x => negb (f x)) s).
  Lemma elements_spec1 : InA E.eq x (elements s) <-> In x s.
  Lemma elements_spec2w : NoDupA E.eq (elements s).
+   Lemma elements_spec2 : sort E.lt (elements s).
  Lemma choose_spec1 : choose s = Some x -> In x s.
  Lemma choose_spec2 : choose s = None -> Empty s.
+   Lemma choose_spec3 : choose s = Some x -> choose = Some y ->
+    Equal s -> E.eq x y.
+ +
+  Lemma min_elt_spec1 : choose s = Some x -> In x s.
+   Lemma min_elt_spec2 : min_elt s = Some x -> In y s -> ~ E.lt y x.
+   Lemma min_elt_spec3 : choose s = None -> Empty s.
+ +
+  Lemma max_elt_spec1 : max_elt s = Some x -> In x s.
+   Lemma max_elt_spec2 : max_elt s = Some x -> In y s -> ~ E.lt x y.
+   Lemma max_elt_spec3 : max_elt s = None -> Empty s.
+
+  Lemma compare_spec : CompSpec eq lt s (compare s ).
+
 End Spec.
@@ -1258,7 +2175,7 @@

Library MSetIntervals

-

Instantiations

+

Instantiations

@@ -1266,7 +2183,7 @@

Library MSetIntervals

It remains to provide instantiations for commonly used datatypes.
-

Z

+

Z

@@ -1287,17 +2204,21 @@

Library MSetIntervals

  Lemma encode_eq : forall (e1 e2 : E.t),
    (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2.
+
+  Lemma encode_lt : forall (e1 e2 : E.t),
+    (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2.
+
End ElementEncodeZ.

-Module MSetIntervalsZ <: WSetsOn Z := MSetIntervals ElementEncodeZ.
+Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.

-

N

+

N

@@ -1317,16 +2238,22 @@

Library MSetIntervals


  Lemma encode_eq : forall (e1 e2 : E.t),
    (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2.
- End ElementEncodeN.
+ +
+  Lemma encode_lt : forall (e1 e2 : E.t),
+    (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2.

-Module MSetIntervalsN <: WSetsOn N := MSetIntervals ElementEncodeN.
+End ElementEncodeN.
+ +
+Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.

-

nat

+

nat

@@ -1344,10 +2271,16 @@

Library MSetIntervals


  Lemma encode_eq : forall (e1 e2 : E.t),
    (Z.eq (encode e1) (encode e2)) <-> E.eq e1 e2.
- End ElementEncodeNat.
+ +
+  Lemma encode_lt : forall (e1 e2 : E.t),
+    (Z.lt (encode e1) (encode e2)) <-> E.lt e1 e2.
+ +
+End ElementEncodeNat.

-Module MSetIntervalsNat <: WSetsOn NPeano.Nat := MSetIntervals ElementEncodeNat.
+Module MSetIntervalsNat <: SetsOn NPeano.Nat := MSetIntervals ElementEncodeNat.

diff --git a/coqdoc/MSetListWithDups.html b/coqdoc/MSetListWithDups.html index 2289b36..bda67bb 100644 --- a/coqdoc/MSetListWithDups.html +++ b/coqdoc/MSetListWithDups.html @@ -24,7 +24,7 @@

Library MSetListWithDups

-

Weak sets implemented as lists with duplicates

+

Weak sets implemented as lists with duplicates

@@ -55,7 +55,7 @@

Library MSetListWithDups

-

Removing duplicates from sorted lists

+

Removing duplicates from sorted lists

@@ -200,7 +200,7 @@

Library MSetListWithDups

-

Operations Module

+

Operations Module

@@ -328,7 +328,7 @@

Library MSetListWithDups

-

Main Module

+

Main Module

@@ -350,7 +350,7 @@

Library MSetListWithDups

-

Proofs of set operation specifications.

+

Proofs of set operation specifications.

Logical predicates
diff --git a/coqdoc/index.html b/coqdoc/index.html index 301d042..32a5c83 100644 --- a/coqdoc/index.html +++ b/coqdoc/index.html @@ -47,7 +47,7 @@ Z _ other -(451 entries) +(596 entries) Notation Index @@ -207,7 +207,7 @@ Z _ other -(168 entries) +(257 entries) Axiom Index @@ -239,7 +239,7 @@ Z _ other -(31 entries) +(32 entries) Constructor Index @@ -257,7 +257,7 @@ L M N -O +O P Q R @@ -271,7 +271,7 @@ Z _ other -(2 entries) +(11 entries) Projection Index @@ -321,7 +321,7 @@ L M N -O +O P Q R @@ -335,7 +335,7 @@ Z _ other -(1 entry) +(2 entries) Section Index @@ -399,7 +399,7 @@ Z _ other -(15 entries) +(17 entries) Abbreviation Index @@ -463,7 +463,7 @@ Z _ other -(156 entries) +(199 entries) Record Index @@ -510,22 +510,26 @@

Global Index

ElementEncodeNat.decode_encode_ok [lemma, in MSetIntervals]
ElementEncodeNat.E [module, in MSetIntervals]
ElementEncodeNat.encode [definition, in MSetIntervals]
+ElementEncodeNat.encode_lt [lemma, in MSetIntervals]
ElementEncodeNat.encode_eq [lemma, in MSetIntervals]
ElementEncodeN.decode [definition, in MSetIntervals]
ElementEncodeN.decode_encode_ok [lemma, in MSetIntervals]
ElementEncodeN.E [module, in MSetIntervals]
ElementEncodeN.encode [definition, in MSetIntervals]
+ElementEncodeN.encode_lt [lemma, in MSetIntervals]
ElementEncodeN.encode_eq [lemma, in MSetIntervals]
ElementEncodeZ [module, in MSetIntervals]
ElementEncodeZ.decode [definition, in MSetIntervals]
ElementEncodeZ.decode_encode_ok [lemma, in MSetIntervals]
ElementEncodeZ.E [module, in MSetIntervals]
ElementEncodeZ.encode [definition, in MSetIntervals]
+ElementEncodeZ.encode_lt [lemma, in MSetIntervals]
ElementEncodeZ.encode_eq [lemma, in MSetIntervals]
ElementEncode.decode [axiom, in MSetIntervals]
ElementEncode.decode_encode_ok [axiom, in MSetIntervals]
ElementEncode.E [module, in MSetIntervals]
ElementEncode.encode [axiom, in MSetIntervals]
+ElementEncode.encode_lt [axiom, in MSetIntervals]
ElementEncode.encode_eq [axiom, in MSetIntervals]


F

foldWithAbortGtLtSpecPred [definition, in MSetFoldWithAbort]
@@ -636,13 +640,17 @@

Global Index

MSetIntervals.cardinal [definition, in MSetIntervals]
MSetIntervals.cardinal_spec [lemma, in MSetIntervals]
MSetIntervals.choose [definition, in MSetIntervals]
+MSetIntervals.choose_spec3 [lemma, in MSetIntervals]
MSetIntervals.choose_spec2 [lemma, in MSetIntervals]
MSetIntervals.choose_spec1 [lemma, in MSetIntervals]
+MSetIntervals.compare [definition, in MSetIntervals]
+MSetIntervals.compare_spec [lemma, in MSetIntervals]
MSetIntervals.compatb [abbreviation, in MSetIntervals]
MSetIntervals.diff [definition, in MSetIntervals]
MSetIntervals.diff_spec [lemma, in MSetIntervals]
MSetIntervals.E [module, in MSetIntervals]
MSetIntervals.elements [definition, in MSetIntervals]
+MSetIntervals.elements_spec2 [lemma, in MSetIntervals]
MSetIntervals.elements_spec2w [lemma, in MSetIntervals]
MSetIntervals.elements_spec1 [lemma, in MSetIntervals]
MSetIntervals.elt [definition, in MSetIntervals]
@@ -672,8 +680,19 @@

Global Index

MSetIntervals.is_empty_spec [lemma, in MSetIntervals]
MSetIntervals.is_empty [definition, in MSetIntervals]
MSetIntervals.is_ok [projection, in MSetIntervals]
+MSetIntervals.lt [definition, in MSetIntervals]
+MSetIntervals.lt_compat [instance, in MSetIntervals]
+MSetIntervals.lt_strorder [instance, in MSetIntervals]
+MSetIntervals.max_elt_spec3 [lemma, in MSetIntervals]
+MSetIntervals.max_elt_spec2 [lemma, in MSetIntervals]
+MSetIntervals.max_elt_spec1 [lemma, in MSetIntervals]
+MSetIntervals.max_elt [definition, in MSetIntervals]
MSetIntervals.mem [definition, in MSetIntervals]
MSetIntervals.mem_spec [lemma, in MSetIntervals]
+MSetIntervals.min_elt_spec3 [lemma, in MSetIntervals]
+MSetIntervals.min_elt_spec2 [lemma, in MSetIntervals]
+MSetIntervals.min_elt_spec1 [lemma, in MSetIntervals]
+MSetIntervals.min_elt [definition, in MSetIntervals]
MSetIntervals.Mkt [constructor, in MSetIntervals]
MSetIntervals.partition [definition, in MSetIntervals]
MSetIntervals.partition_spec2 [lemma, in MSetIntervals]
@@ -716,15 +735,14 @@

Global Index

Ops.cardinalN [definition, in MSetIntervals]
Ops.choose [definition, in MSetIntervals]
Ops.choose [definition, in MSetListWithDups]
-Ops.chooseZ [definition, in MSetIntervals]
+Ops.compare [definition, in MSetIntervals]
Ops.diff [definition, in MSetIntervals]
Ops.diff [definition, in MSetListWithDups]
+Ops.diff_aux2 [definition, in MSetIntervals]
+Ops.diff_aux [definition, in MSetIntervals]
Ops.elements [definition, in MSetIntervals]
Ops.elements [definition, in MSetListWithDups]
Ops.elementsZ [definition, in MSetIntervals]
-Ops.elementsZ_aux [definition, in MSetIntervals]
-Ops.elementsZ_aux' [definition, in MSetIntervals]
-Ops.elementsZ_aux'' [definition, in MSetIntervals]
Ops.elements_dist [definition, in MSetListWithDups]
Ops.elt [definition, in MSetIntervals]
Ops.elt [definition, in MSetListWithDups]
@@ -736,28 +754,63 @@

Global Index

Ops.exists_ [definition, in MSetListWithDups]
Ops.filter [definition, in MSetIntervals]
Ops.filter [definition, in MSetListWithDups]
+Ops.filterZ [definition, in MSetIntervals]
+Ops.filterZ_aux [definition, in MSetIntervals]
+Ops.filterZ_single [definition, in MSetIntervals]
+Ops.filterZ_single_aux [definition, in MSetIntervals]
+Ops.filterZ_fold_fun [definition, in MSetIntervals]
Ops.fold [definition, in MSetIntervals]
Ops.fold [definition, in MSetListWithDups]
+Ops.fold_elementsZ [definition, in MSetIntervals]
+Ops.fold_elementsZ_single [definition, in MSetIntervals]
+Ops.fold_elementsZ_aux [definition, in MSetIntervals]
Ops.for_all [definition, in MSetIntervals]
Ops.for_all [definition, in MSetListWithDups]
Ops.from_elements [definition, in MSetIntervals]
+Ops.ICR_after_touch [constructor, in MSetIntervals]
+Ops.ICR_after [constructor, in MSetIntervals]
+Ops.ICR_subsume_2 [constructor, in MSetIntervals]
+Ops.ICR_subsume_1 [constructor, in MSetIntervals]
+Ops.ICR_equal [constructor, in MSetIntervals]
+Ops.ICR_overlap_after [constructor, in MSetIntervals]
+Ops.ICR_overlap_before [constructor, in MSetIntervals]
+Ops.ICR_before_touch [constructor, in MSetIntervals]
+Ops.ICR_before [constructor, in MSetIntervals]
+Ops.insert_intervalZ_guarded [definition, in MSetIntervals]
+Ops.insert_interval_begin [definition, in MSetIntervals]
Ops.inter [definition, in MSetIntervals]
Ops.inter [definition, in MSetListWithDups]
+Ops.interval_1_compare [definition, in MSetIntervals]
+Ops.interval_compare [definition, in MSetIntervals]
+Ops.interval_compare_result [inductive, in MSetIntervals]
+Ops.inter_aux2 [definition, in MSetIntervals]
+Ops.inter_aux [definition, in MSetIntervals]
Ops.is_empty [definition, in MSetIntervals]
Ops.is_empty [definition, in MSetListWithDups]
+Ops.max_elt [definition, in MSetIntervals]
+Ops.max_eltZ [definition, in MSetIntervals]
Ops.mem [definition, in MSetIntervals]
Ops.mem [definition, in MSetListWithDups]
Ops.memZ [definition, in MSetIntervals]
+Ops.merge_interval_size [definition, in MSetIntervals]
+Ops.min_elt [definition, in MSetIntervals]
+Ops.min_eltZ [definition, in MSetIntervals]
Ops.MX [module, in MSetListWithDups]
Ops.partition [definition, in MSetIntervals]
Ops.partition [definition, in MSetListWithDups]
+Ops.partitionZ [definition, in MSetIntervals]
+Ops.partitionZ_aux [definition, in MSetIntervals]
+Ops.partitionZ_single [definition, in MSetIntervals]
+Ops.partitionZ_single_aux [definition, in MSetIntervals]
+Ops.partitionZ_fold_fun [definition, in MSetIntervals]
+Ops.partitionZ_fold_skip [definition, in MSetIntervals]
+Ops.partitionZ_fold_insert [definition, in MSetIntervals]
Ops.partition_aux [definition, in MSetListWithDups]
Ops.RDFS [module, in MSetListWithDups]
Ops.remove [definition, in MSetIntervals]
Ops.remove [definition, in MSetListWithDups]
Ops.removeZ [definition, in MSetIntervals]
Ops.removeZ_aux [definition, in MSetIntervals]
-Ops.removeZ_aux_insert_guarded [definition, in MSetIntervals]
Ops.remove_list [definition, in MSetIntervals]
Ops.rev_filter [definition, in MSetListWithDups]
Ops.rev_filter_aux [definition, in MSetListWithDups]
@@ -770,46 +823,48 @@

Global Index

Ops.t [definition, in MSetListWithDups]
Ops.union [definition, in MSetIntervals]
Ops.union [definition, in MSetListWithDups]
+Ops.union_aux [definition, in MSetIntervals]


R

Raw [module, in MSetIntervals]
-Raw.addZ_isok [lemma, in MSetIntervals]
-Raw.addZ_spec [lemma, in MSetIntervals]
+Raw.addZ_invariant [lemma, in MSetIntervals]
+Raw.addZ_InZ [lemma, in MSetIntervals]
Raw.addZ_alt_def [lemma, in MSetIntervals]
Raw.addZ_aux_alt_def [lemma, in MSetIntervals]
-Raw.addZ_ind [lemma, in MSetIntervals]
Raw.add_list_spec [lemma, in MSetIntervals]
Raw.add_list_ok [lemma, in MSetIntervals]
Raw.add_spec [lemma, in MSetIntervals]
Raw.add_ok [instance, in MSetIntervals]
Raw.cardinalN_spec [lemma, in MSetIntervals]
Raw.cardinal_spec [lemma, in MSetIntervals]
-Raw.chooseZ_spec3 [lemma, in MSetIntervals]
-Raw.chooseZ_InZ [lemma, in MSetIntervals]
-Raw.chooseZ_min [lemma, in MSetIntervals]
+Raw.choose_spec3 [lemma, in MSetIntervals]
Raw.choose_spec2 [definition, in MSetIntervals]
Raw.choose_spec1 [definition, in MSetIntervals]
-Raw.choose_alt_def [lemma, in MSetIntervals]
+Raw.compare_spec [lemma, in MSetIntervals]
+Raw.compare_antisym [lemma, in MSetIntervals]
+Raw.compare_eq_Lt_cons [lemma, in MSetIntervals]
+Raw.compare_eq_Lt_nil_r [lemma, in MSetIntervals]
+Raw.compare_eq_Lt_nil_l [lemma, in MSetIntervals]
+Raw.compare_eq_Eq [lemma, in MSetIntervals]
Raw.diff_spec [lemma, in MSetIntervals]
Raw.diff_ok [instance, in MSetIntervals]
-Raw.elementsZ_single_equiv [lemma, in MSetIntervals]
-Raw.elementsZ_cons_equiv_hd [lemma, in MSetIntervals]
-Raw.elementsZ_cons_le_end [lemma, in MSetIntervals]
-Raw.elementsZ_cons_le_start [lemma, in MSetIntervals]
+Raw.diff_invariant [lemma, in MSetIntervals]
+Raw.diff_InZ [lemma, in MSetIntervals]
+Raw.diff_aux2_props [lemma, in MSetIntervals]
+Raw.diff_aux_props [lemma, in MSetIntervals]
+Raw.diff_aux_alt_def [lemma, in MSetIntervals]
+Raw.elementsZ_sorted [lemma, in MSetIntervals]
+Raw.elementsZ_single_sorted [lemma, in MSetIntervals]
Raw.elementsZ_spec2w [lemma, in MSetIntervals]
-Raw.elementsZ_removeZ_aux_insert_guarded [lemma, in MSetIntervals]
+Raw.elementsZ_insert_intervalZ_guarded [lemma, in MSetIntervals]
+Raw.elementsZ_app [lemma, in MSetIntervals]
Raw.elementsZ_cons [lemma, in MSetIntervals]
-Raw.elementsZ_aux_alt_def [lemma, in MSetIntervals]
-Raw.elementsZ_single_intro [lemma, in MSetIntervals]
-Raw.elementsZ_aux'_succ [lemma, in MSetIntervals]
-Raw.elementsZ_aux'_zero [lemma, in MSetIntervals]
-Raw.elementsZ_aux'_pos [lemma, in MSetIntervals]
-Raw.elementsZ_aux''_irrel [lemma, in MSetIntervals]
Raw.elementsZ_single_succ_front [lemma, in MSetIntervals]
Raw.elementsZ_single_add [lemma, in MSetIntervals]
Raw.elementsZ_single_succ [lemma, in MSetIntervals]
Raw.elementsZ_single_base [lemma, in MSetIntervals]
Raw.elementsZ_single [definition, in MSetIntervals]
Raw.elementsZ_nil [lemma, in MSetIntervals]
+Raw.elements_sorted [lemma, in MSetIntervals]
Raw.elements_spec2w [lemma, in MSetIntervals]
Raw.elements_spec1 [lemma, in MSetIntervals]
Raw.elements_cons [lemma, in MSetIntervals]
@@ -819,43 +874,115 @@

Global Index

Raw.empty_spec [lemma, in MSetIntervals]
Raw.empty_spec' [lemma, in MSetIntervals]
Raw.empty_ok [instance, in MSetIntervals]
+Raw.encode_decode_eq [lemma, in MSetIntervals]
Raw.Equal [definition, in MSetIntervals]
Raw.equal_spec [lemma, in MSetIntervals]
Raw.equal_elementsZ [lemma, in MSetIntervals]
Raw.equal_alt_def [lemma, in MSetIntervals]
Raw.Exists [definition, in MSetIntervals]
Raw.exists_spec [lemma, in MSetIntervals]
+Raw.filterZ_props [lemma, in MSetIntervals]
+Raw.filterZ_aux_props [lemma, in MSetIntervals]
+Raw.filterZ_single_props [lemma, in MSetIntervals]
+Raw.filterZ_single_aux_props [lemma, in MSetIntervals]
Raw.filter_spec [lemma, in MSetIntervals]
Raw.filter_ok [instance, in MSetIntervals]
Raw.fold_spec [lemma, in MSetIntervals]
+Raw.fold_elementsZ_alt_def [lemma, in MSetIntervals]
+Raw.fold_elementsZ_alt_def_aux [lemma, in MSetIntervals]
+Raw.fold_elementsZ_cons [lemma, in MSetIntervals]
+Raw.fold_elementsZ_nil [lemma, in MSetIntervals]
+Raw.fold_elementsZ_single_alt_def [lemma, in MSetIntervals]
+Raw.fold_opt_app [lemma, in MSetIntervals]
+Raw.fold_opt_list_cons [lemma, in MSetIntervals]
+Raw.fold_opt [definition, in MSetIntervals]
+Raw.fold_elementsZ_single_succ [lemma, in MSetIntervals]
+Raw.fold_elementsZ_single_zero [lemma, in MSetIntervals]
+Raw.fold_elementsZ_single_pos [lemma, in MSetIntervals]
+Raw.fold_elementsZ_aux_irrel [lemma, in MSetIntervals]
Raw.ForNotations [section, in MSetIntervals]
Raw.for_all_spec [lemma, in MSetIntervals]
Raw.For_all [definition, in MSetIntervals]
Raw.In [definition, in MSetIntervals]
-Raw.inf [definition, in MSetIntervals]
-Raw.inf_removeZ_aux_insert_guarded [lemma, in MSetIntervals]
-Raw.inf_impl [lemma, in MSetIntervals]
+Raw.insert_interval_begin_spec [lemma, in MSetIntervals]
+Raw.insert_intervalZ_guarded_rev_nil_app [lemma, in MSetIntervals]
+Raw.insert_intervalZ_guarded_app [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_insert_intervalZ_guarded [lemma, in MSetIntervals]
+Raw.interval_list_invariant_insert_intervalZ_guarded [lemma, in MSetIntervals]
+Raw.interval_list_invariant_snoc_intro [lemma, in MSetIntervals]
+Raw.interval_list_invariant_app_iff [lemma, in MSetIntervals]
+Raw.interval_list_invariant_app_elim [lemma, in MSetIntervals]
+Raw.interval_list_invariant_app_intro [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_app_elim_1 [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_intro [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_alt2_def [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_alt_def [lemma, in MSetIntervals]
+Raw.interval_list_invariant_sing [lemma, in MSetIntervals]
+Raw.interval_list_invariant_cons [lemma, in MSetIntervals]
+Raw.interval_list_invariant_nil [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_impl [lemma, in MSetIntervals]
+Raw.interval_list_elements_greater_cons [lemma, in MSetIntervals]
+Raw.interval_1_compare_elim [lemma, in MSetIntervals]
+Raw.interval_1_compare_alt_def [lemma, in MSetIntervals]
+Raw.interval_compare_swap [lemma, in MSetIntervals]
+Raw.interval_compare_elim [lemma, in MSetIntervals]
+Raw.interval_list_invariant [definition, in MSetIntervals]
+Raw.interval_list_elements_greater [definition, in MSetIntervals]
Raw.inter_spec [lemma, in MSetIntervals]
Raw.inter_ok [instance, in MSetIntervals]
+Raw.inter_invariant [lemma, in MSetIntervals]
+Raw.inter_InZ [lemma, in MSetIntervals]
+Raw.inter_aux2_props [lemma, in MSetIntervals]
+Raw.inter_aux_props [lemma, in MSetIntervals]
+Raw.inter_aux_alt_def [lemma, in MSetIntervals]
Raw.InZ [definition, in MSetIntervals]
+Raw.InZ_partitionZ_fold_skip [lemma, in MSetIntervals]
+Raw.InZ_partitionZ_fold_insert [lemma, in MSetIntervals]
+Raw.InZ_partitionZ_fold_current_Some [lemma, in MSetIntervals]
+Raw.InZ_insert_intervalZ_guarded [lemma, in MSetIntervals]
+Raw.InZ_In [lemma, in MSetIntervals]
+Raw.InZ_dec [lemma, in MSetIntervals]
+Raw.InZ_rev [lemma, in MSetIntervals]
+Raw.InZ_app [lemma, in MSetIntervals]
+Raw.InZ_cons [lemma, in MSetIntervals]
+Raw.InZ_nil [lemma, in MSetIntervals]
+Raw.In_merge_interval [lemma, in MSetIntervals]
Raw.In_InZ [lemma, in MSetIntervals]
Raw.In_alt_def [lemma, in MSetIntervals]
Raw.In_elementsZ_single_hd [lemma, in MSetIntervals]
+Raw.In_elementsZ_single_dec [lemma, in MSetIntervals]
Raw.In_elementsZ_single1 [lemma, in MSetIntervals]
Raw.In_elementsZ_single [lemma, in MSetIntervals]
Raw.IsOk [definition, in MSetIntervals]
-Raw.isok [definition, in MSetIntervals]
-Raw.isok_removeZ_aux_insert_guarded [lemma, in MSetIntervals]
-Raw.isok_inf_nin [lemma, in MSetIntervals]
-Raw.isok_cons [lemma, in MSetIntervals]
Raw.IsOk_Ok [instance, in MSetIntervals]
Raw.is_empty_spec [lemma, in MSetIntervals]
Raw.is_encoded_elems_list_rev [lemma, in MSetIntervals]
Raw.is_encoded_elems_list_app [lemma, in MSetIntervals]
Raw.is_encoded_elems_list [definition, in MSetIntervals]
Raw.length_elementsZ_single [lemma, in MSetIntervals]
+Raw.lt [definition, in MSetIntervals]
+Raw.lt_Transitive [lemma, in MSetIntervals]
+Raw.lt_Irreflexive [lemma, in MSetIntervals]
+Raw.max_elt_spec3 [definition, in MSetIntervals]
+Raw.max_elt_spec2 [definition, in MSetIntervals]
+Raw.max_elt_spec1 [definition, in MSetIntervals]
+Raw.max_eltZ_spec3 [definition, in MSetIntervals]
+Raw.max_eltZ_eq_None [lemma, in MSetIntervals]
+Raw.max_eltZ_spec2 [lemma, in MSetIntervals]
+Raw.max_eltZ_spec1 [definition, in MSetIntervals]
Raw.memZ_spec [lemma, in MSetIntervals]
Raw.mem_spec [lemma, in MSetIntervals]
+Raw.merge_interval_size_invariant [lemma, in MSetIntervals]
+Raw.merge_interval_size_eq_max [lemma, in MSetIntervals]
+Raw.merge_interval_size_add [lemma, in MSetIntervals]
+Raw.merge_interval_size_neq_0 [lemma, in MSetIntervals]
+Raw.min_elt_spec3 [definition, in MSetIntervals]
+Raw.min_elt_spec2 [definition, in MSetIntervals]
+Raw.min_elt_spec1 [definition, in MSetIntervals]
+Raw.min_eltZ_spec3 [definition, in MSetIntervals]
+Raw.min_eltZ_spec2 [lemma, in MSetIntervals]
+Raw.min_eltZ_spec1 [definition, in MSetIntervals]
+Raw.Nin_elements_greater_equal [lemma, in MSetIntervals]
Raw.Nin_elements_greater [lemma, in MSetIntervals]
Raw.NoDupA_elementsZ_single [lemma, in MSetIntervals]
Raw.ok [projection, in MSetIntervals]
@@ -864,15 +991,21 @@

Global Index

Raw.Ok [inductive, in MSetIntervals]
Raw.Ok_cons [lemma, in MSetIntervals]
Raw.Ok_nil [lemma, in MSetIntervals]
+Raw.partitionZ_alt_def [lemma, in MSetIntervals]
+Raw.partitionZ_aux_alt_def [lemma, in MSetIntervals]
+Raw.partitionZ_single_aux_alt_def [lemma, in MSetIntervals]
+Raw.partitionZ_fold_current [definition, in MSetIntervals]
+Raw.partitionZ_aux_invariant_skip [lemma, in MSetIntervals]
+Raw.partitionZ_aux_invariant_insert [lemma, in MSetIntervals]
+Raw.partitionZ_aux_invariant [definition, in MSetIntervals]
Raw.partition_spec2 [lemma, in MSetIntervals]
Raw.partition_spec1 [lemma, in MSetIntervals]
Raw.partition_ok2 [instance, in MSetIntervals]
Raw.partition_ok1 [instance, in MSetIntervals]
+Raw.partition_alt_def [lemma, in MSetIntervals]
Raw.removeZ_spec [lemma, in MSetIntervals]
-Raw.removeZ_isok [lemma, in MSetIntervals]
-Raw.removeZ_counter_pos_aux [lemma, in MSetIntervals]
+Raw.removeZ_interval_list_invariant [lemma, in MSetIntervals]
Raw.removeZ_alt_def [lemma, in MSetIntervals]
-Raw.removeZ_aux_alt_def [lemma, in MSetIntervals]
Raw.remove_list_spec [lemma, in MSetIntervals]
Raw.remove_list_ok [lemma, in MSetIntervals]
Raw.remove_spec [lemma, in MSetIntervals]
@@ -881,8 +1014,17 @@

Global Index

Raw.singleton_ok [instance, in MSetIntervals]
Raw.Subset [definition, in MSetIntervals]
Raw.subset_spec [lemma, in MSetIntervals]
+Raw.subset_props [lemma, in MSetIntervals]
+Raw.subset_props_aux_before [lemma, in MSetIntervals]
+Raw.subset_props_aux [lemma, in MSetIntervals]
+Raw.subset_flatten_alt_def [lemma, in MSetIntervals]
Raw.union_spec [lemma, in MSetIntervals]
Raw.union_ok [instance, in MSetIntervals]
+Raw.union_invariant [lemma, in MSetIntervals]
+Raw.union_InZ [lemma, in MSetIntervals]
+Raw.union_alt_def [lemma, in MSetIntervals]
+Raw.union_aux_alt_def [lemma, in MSetIntervals]
+Raw.union_aux_flatten_alt_def [lemma, in MSetIntervals]
RemoveDupsFromSorted [module, in MSetListWithDups]
RemoveDupsFromSorted.eqb_eq_alt [lemma, in MSetListWithDups]
RemoveDupsFromSorted.MX [module, in MSetListWithDups]
@@ -961,6 +1103,9 @@

Global Index

WSetsWithFoldA [module, in MSetFoldWithAbort]
WSetsWithFoldA.E [module, in MSetFoldWithAbort]


Z

+Z_to_N_minus_neq_0 [lemma, in MSetIntervals]
+Z_lt_le_add_r [lemma, in MSetIntervals]
+Z_lt_add_r [lemma, in MSetIntervals]
Z_le_add_r [lemma, in MSetIntervals]



Notation Index

@@ -1052,10 +1197,13 @@

Lemma Index

add_add_sub_eq [in MSetIntervals]


E

ElementEncodeNat.decode_encode_ok [in MSetIntervals]
+ElementEncodeNat.encode_lt [in MSetIntervals]
ElementEncodeNat.encode_eq [in MSetIntervals]
ElementEncodeN.decode_encode_ok [in MSetIntervals]
+ElementEncodeN.encode_lt [in MSetIntervals]
ElementEncodeN.encode_eq [in MSetIntervals]
ElementEncodeZ.decode_encode_ok [in MSetIntervals]
+ElementEncodeZ.encode_lt [in MSetIntervals]
ElementEncodeZ.encode_eq [in MSetIntervals]


H

HasFoldWithAbortOps.choose_with_abort_spec [in MSetFoldWithAbort]
@@ -1105,9 +1253,12 @@

Lemma Index

Make.union_spec [in MSetListWithDups]
MSetIntervals.add_spec [in MSetIntervals]
MSetIntervals.cardinal_spec [in MSetIntervals]
+MSetIntervals.choose_spec3 [in MSetIntervals]
MSetIntervals.choose_spec2 [in MSetIntervals]
MSetIntervals.choose_spec1 [in MSetIntervals]
+MSetIntervals.compare_spec [in MSetIntervals]
MSetIntervals.diff_spec [in MSetIntervals]
+MSetIntervals.elements_spec2 [in MSetIntervals]
MSetIntervals.elements_spec2w [in MSetIntervals]
MSetIntervals.elements_spec1 [in MSetIntervals]
MSetIntervals.empty_spec [in MSetIntervals]
@@ -1118,7 +1269,13 @@

Lemma Index

MSetIntervals.for_all_spec [in MSetIntervals]
MSetIntervals.inter_spec [in MSetIntervals]
MSetIntervals.is_empty_spec [in MSetIntervals]
+MSetIntervals.max_elt_spec3 [in MSetIntervals]
+MSetIntervals.max_elt_spec2 [in MSetIntervals]
+MSetIntervals.max_elt_spec1 [in MSetIntervals]
MSetIntervals.mem_spec [in MSetIntervals]
+MSetIntervals.min_elt_spec3 [in MSetIntervals]
+MSetIntervals.min_elt_spec2 [in MSetIntervals]
+MSetIntervals.min_elt_spec1 [in MSetIntervals]
MSetIntervals.partition_spec2 [in MSetIntervals]
MSetIntervals.partition_spec1 [in MSetIntervals]
MSetIntervals.remove_spec [in MSetIntervals]
@@ -1131,86 +1288,160 @@

Lemma Index

Ops.acc_pred [in MSetIntervals]
Ops.singleton_alt_def [in MSetIntervals]


R

-Raw.addZ_isok [in MSetIntervals]
-Raw.addZ_spec [in MSetIntervals]
+Raw.addZ_invariant [in MSetIntervals]
+Raw.addZ_InZ [in MSetIntervals]
Raw.addZ_alt_def [in MSetIntervals]
Raw.addZ_aux_alt_def [in MSetIntervals]
-Raw.addZ_ind [in MSetIntervals]
Raw.add_list_spec [in MSetIntervals]
Raw.add_list_ok [in MSetIntervals]
Raw.add_spec [in MSetIntervals]
Raw.cardinalN_spec [in MSetIntervals]
Raw.cardinal_spec [in MSetIntervals]
-Raw.chooseZ_spec3 [in MSetIntervals]
-Raw.chooseZ_InZ [in MSetIntervals]
-Raw.chooseZ_min [in MSetIntervals]
-Raw.choose_alt_def [in MSetIntervals]
+Raw.choose_spec3 [in MSetIntervals]
+Raw.compare_spec [in MSetIntervals]
+Raw.compare_antisym [in MSetIntervals]
+Raw.compare_eq_Lt_cons [in MSetIntervals]
+Raw.compare_eq_Lt_nil_r [in MSetIntervals]
+Raw.compare_eq_Lt_nil_l [in MSetIntervals]
+Raw.compare_eq_Eq [in MSetIntervals]
Raw.diff_spec [in MSetIntervals]
-Raw.elementsZ_single_equiv [in MSetIntervals]
-Raw.elementsZ_cons_equiv_hd [in MSetIntervals]
-Raw.elementsZ_cons_le_end [in MSetIntervals]
-Raw.elementsZ_cons_le_start [in MSetIntervals]
+Raw.diff_invariant [in MSetIntervals]
+Raw.diff_InZ [in MSetIntervals]
+Raw.diff_aux2_props [in MSetIntervals]
+Raw.diff_aux_props [in MSetIntervals]
+Raw.diff_aux_alt_def [in MSetIntervals]
+Raw.elementsZ_sorted [in MSetIntervals]
+Raw.elementsZ_single_sorted [in MSetIntervals]
Raw.elementsZ_spec2w [in MSetIntervals]
-Raw.elementsZ_removeZ_aux_insert_guarded [in MSetIntervals]
+Raw.elementsZ_insert_intervalZ_guarded [in MSetIntervals]
+Raw.elementsZ_app [in MSetIntervals]
Raw.elementsZ_cons [in MSetIntervals]
-Raw.elementsZ_aux_alt_def [in MSetIntervals]
-Raw.elementsZ_single_intro [in MSetIntervals]
-Raw.elementsZ_aux'_succ [in MSetIntervals]
-Raw.elementsZ_aux'_zero [in MSetIntervals]
-Raw.elementsZ_aux'_pos [in MSetIntervals]
-Raw.elementsZ_aux''_irrel [in MSetIntervals]
Raw.elementsZ_single_succ_front [in MSetIntervals]
Raw.elementsZ_single_add [in MSetIntervals]
Raw.elementsZ_single_succ [in MSetIntervals]
Raw.elementsZ_single_base [in MSetIntervals]
Raw.elementsZ_nil [in MSetIntervals]
+Raw.elements_sorted [in MSetIntervals]
Raw.elements_spec2w [in MSetIntervals]
Raw.elements_spec1 [in MSetIntervals]
Raw.elements_cons [in MSetIntervals]
Raw.elements_nil [in MSetIntervals]
Raw.empty_spec [in MSetIntervals]
Raw.empty_spec' [in MSetIntervals]
+Raw.encode_decode_eq [in MSetIntervals]
Raw.equal_spec [in MSetIntervals]
Raw.equal_elementsZ [in MSetIntervals]
Raw.equal_alt_def [in MSetIntervals]
Raw.exists_spec [in MSetIntervals]
+Raw.filterZ_props [in MSetIntervals]
+Raw.filterZ_aux_props [in MSetIntervals]
+Raw.filterZ_single_props [in MSetIntervals]
+Raw.filterZ_single_aux_props [in MSetIntervals]
Raw.filter_spec [in MSetIntervals]
Raw.fold_spec [in MSetIntervals]
+Raw.fold_elementsZ_alt_def [in MSetIntervals]
+Raw.fold_elementsZ_alt_def_aux [in MSetIntervals]
+Raw.fold_elementsZ_cons [in MSetIntervals]
+Raw.fold_elementsZ_nil [in MSetIntervals]
+Raw.fold_elementsZ_single_alt_def [in MSetIntervals]
+Raw.fold_opt_app [in MSetIntervals]
+Raw.fold_opt_list_cons [in MSetIntervals]
+Raw.fold_elementsZ_single_succ [in MSetIntervals]
+Raw.fold_elementsZ_single_zero [in MSetIntervals]
+Raw.fold_elementsZ_single_pos [in MSetIntervals]
+Raw.fold_elementsZ_aux_irrel [in MSetIntervals]
Raw.for_all_spec [in MSetIntervals]
-Raw.inf_removeZ_aux_insert_guarded [in MSetIntervals]
-Raw.inf_impl [in MSetIntervals]
+Raw.insert_interval_begin_spec [in MSetIntervals]
+Raw.insert_intervalZ_guarded_rev_nil_app [in MSetIntervals]
+Raw.insert_intervalZ_guarded_app [in MSetIntervals]
+Raw.interval_list_elements_greater_insert_intervalZ_guarded [in MSetIntervals]
+Raw.interval_list_invariant_insert_intervalZ_guarded [in MSetIntervals]
+Raw.interval_list_invariant_snoc_intro [in MSetIntervals]
+Raw.interval_list_invariant_app_iff [in MSetIntervals]
+Raw.interval_list_invariant_app_elim [in MSetIntervals]
+Raw.interval_list_invariant_app_intro [in MSetIntervals]
+Raw.interval_list_elements_greater_app_elim_1 [in MSetIntervals]
+Raw.interval_list_elements_greater_intro [in MSetIntervals]
+Raw.interval_list_elements_greater_alt2_def [in MSetIntervals]
+Raw.interval_list_elements_greater_alt_def [in MSetIntervals]
+Raw.interval_list_invariant_sing [in MSetIntervals]
+Raw.interval_list_invariant_cons [in MSetIntervals]
+Raw.interval_list_invariant_nil [in MSetIntervals]
+Raw.interval_list_elements_greater_impl [in MSetIntervals]
+Raw.interval_list_elements_greater_cons [in MSetIntervals]
+Raw.interval_1_compare_elim [in MSetIntervals]
+Raw.interval_1_compare_alt_def [in MSetIntervals]
+Raw.interval_compare_swap [in MSetIntervals]
+Raw.interval_compare_elim [in MSetIntervals]
Raw.inter_spec [in MSetIntervals]
+Raw.inter_invariant [in MSetIntervals]
+Raw.inter_InZ [in MSetIntervals]
+Raw.inter_aux2_props [in MSetIntervals]
+Raw.inter_aux_props [in MSetIntervals]
+Raw.inter_aux_alt_def [in MSetIntervals]
+Raw.InZ_partitionZ_fold_skip [in MSetIntervals]
+Raw.InZ_partitionZ_fold_insert [in MSetIntervals]
+Raw.InZ_partitionZ_fold_current_Some [in MSetIntervals]
+Raw.InZ_insert_intervalZ_guarded [in MSetIntervals]
+Raw.InZ_In [in MSetIntervals]
+Raw.InZ_dec [in MSetIntervals]
+Raw.InZ_rev [in MSetIntervals]
+Raw.InZ_app [in MSetIntervals]
+Raw.InZ_cons [in MSetIntervals]
+Raw.InZ_nil [in MSetIntervals]
+Raw.In_merge_interval [in MSetIntervals]
Raw.In_InZ [in MSetIntervals]
Raw.In_alt_def [in MSetIntervals]
Raw.In_elementsZ_single_hd [in MSetIntervals]
+Raw.In_elementsZ_single_dec [in MSetIntervals]
Raw.In_elementsZ_single1 [in MSetIntervals]
Raw.In_elementsZ_single [in MSetIntervals]
-Raw.isok_removeZ_aux_insert_guarded [in MSetIntervals]
-Raw.isok_inf_nin [in MSetIntervals]
-Raw.isok_cons [in MSetIntervals]
Raw.is_empty_spec [in MSetIntervals]
Raw.is_encoded_elems_list_rev [in MSetIntervals]
Raw.is_encoded_elems_list_app [in MSetIntervals]
Raw.length_elementsZ_single [in MSetIntervals]
+Raw.lt_Transitive [in MSetIntervals]
+Raw.lt_Irreflexive [in MSetIntervals]
+Raw.max_eltZ_eq_None [in MSetIntervals]
+Raw.max_eltZ_spec2 [in MSetIntervals]
Raw.memZ_spec [in MSetIntervals]
Raw.mem_spec [in MSetIntervals]
+Raw.merge_interval_size_invariant [in MSetIntervals]
+Raw.merge_interval_size_eq_max [in MSetIntervals]
+Raw.merge_interval_size_add [in MSetIntervals]
+Raw.merge_interval_size_neq_0 [in MSetIntervals]
+Raw.min_eltZ_spec2 [in MSetIntervals]
+Raw.Nin_elements_greater_equal [in MSetIntervals]
Raw.Nin_elements_greater [in MSetIntervals]
Raw.NoDupA_elementsZ_single [in MSetIntervals]
Raw.Ok_cons [in MSetIntervals]
Raw.Ok_nil [in MSetIntervals]
+Raw.partitionZ_alt_def [in MSetIntervals]
+Raw.partitionZ_aux_alt_def [in MSetIntervals]
+Raw.partitionZ_single_aux_alt_def [in MSetIntervals]
+Raw.partitionZ_aux_invariant_skip [in MSetIntervals]
+Raw.partitionZ_aux_invariant_insert [in MSetIntervals]
Raw.partition_spec2 [in MSetIntervals]
Raw.partition_spec1 [in MSetIntervals]
+Raw.partition_alt_def [in MSetIntervals]
Raw.removeZ_spec [in MSetIntervals]
-Raw.removeZ_isok [in MSetIntervals]
-Raw.removeZ_counter_pos_aux [in MSetIntervals]
+Raw.removeZ_interval_list_invariant [in MSetIntervals]
Raw.removeZ_alt_def [in MSetIntervals]
-Raw.removeZ_aux_alt_def [in MSetIntervals]
Raw.remove_list_spec [in MSetIntervals]
Raw.remove_list_ok [in MSetIntervals]
Raw.remove_spec [in MSetIntervals]
Raw.singleton_spec [in MSetIntervals]
Raw.subset_spec [in MSetIntervals]
+Raw.subset_props [in MSetIntervals]
+Raw.subset_props_aux_before [in MSetIntervals]
+Raw.subset_props_aux [in MSetIntervals]
+Raw.subset_flatten_alt_def [in MSetIntervals]
Raw.union_spec [in MSetIntervals]
+Raw.union_invariant [in MSetIntervals]
+Raw.union_InZ [in MSetIntervals]
+Raw.union_alt_def [in MSetIntervals]
+Raw.union_aux_alt_def [in MSetIntervals]
+Raw.union_aux_flatten_alt_def [in MSetIntervals]
RemoveDupsFromSorted.eqb_eq_alt [in MSetListWithDups]
RemoveDupsFromSorted.remove_dups_by_sortingA_spec [in MSetListWithDups]
RemoveDupsFromSorted.remove_dups_from_sortedA_spec [in MSetListWithDups]
@@ -1224,6 +1455,9 @@

Lemma Index

WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec2w [in MSetWithDups]
WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec1 [in MSetWithDups]


Z

+Z_to_N_minus_neq_0 [in MSetIntervals]
+Z_lt_le_add_r [in MSetIntervals]
+Z_lt_add_r [in MSetIntervals]
Z_le_add_r [in MSetIntervals]



Axiom Index

@@ -1231,6 +1465,7 @@

Axiom Index

ElementEncode.decode [in MSetIntervals]
ElementEncode.decode_encode_ok [in MSetIntervals]
ElementEncode.encode [in MSetIntervals]
+ElementEncode.encode_lt [in MSetIntervals]
ElementEncode.encode_eq [in MSetIntervals]


H

HasFoldWithAbort.foldWithAbortPrecompute [in MSetFoldWithAbort]
@@ -1265,6 +1500,16 @@

Axiom Index

Constructor Index

M

MSetIntervals.Mkt [in MSetIntervals]
+

O

+Ops.ICR_after_touch [in MSetIntervals]
+Ops.ICR_after [in MSetIntervals]
+Ops.ICR_subsume_2 [in MSetIntervals]
+Ops.ICR_subsume_1 [in MSetIntervals]
+Ops.ICR_equal [in MSetIntervals]
+Ops.ICR_overlap_after [in MSetIntervals]
+Ops.ICR_overlap_before [in MSetIntervals]
+Ops.ICR_before_touch [in MSetIntervals]
+Ops.ICR_before [in MSetIntervals]


R

Raw.ok [in MSetIntervals]



@@ -1281,7 +1526,9 @@

Projection Index

Raw.ok [in MSetIntervals]



Inductive Index

-

R

+

O

+Ops.interval_compare_result [in MSetIntervals]
+

R

Raw.Ok [in MSetIntervals]



Section Index

@@ -1297,6 +1544,8 @@

Instance Index

Make.In_compat [in MSetListWithDups]
MSetIntervals.eq_equiv [in MSetIntervals]
MSetIntervals.In_compat [in MSetIntervals]
+MSetIntervals.lt_compat [in MSetIntervals]
+MSetIntervals.lt_strorder [in MSetIntervals]


R

Raw.add_ok [in MSetIntervals]
Raw.diff_ok [in MSetIntervals]
@@ -1363,6 +1612,7 @@

Definition Index

MSetIntervals.add [in MSetIntervals]
MSetIntervals.cardinal [in MSetIntervals]
MSetIntervals.choose [in MSetIntervals]
+MSetIntervals.compare [in MSetIntervals]
MSetIntervals.diff [in MSetIntervals]
MSetIntervals.elements [in MSetIntervals]
MSetIntervals.elt [in MSetIntervals]
@@ -1381,7 +1631,10 @@

Definition Index

MSetIntervals.In [in MSetIntervals]
MSetIntervals.inter [in MSetIntervals]
MSetIntervals.is_empty [in MSetIntervals]
+MSetIntervals.lt [in MSetIntervals]
+MSetIntervals.max_elt [in MSetIntervals]
MSetIntervals.mem [in MSetIntervals]
+MSetIntervals.min_elt [in MSetIntervals]
MSetIntervals.partition [in MSetIntervals]
MSetIntervals.remove [in MSetIntervals]
MSetIntervals.singleton [in MSetIntervals]
@@ -1400,15 +1653,14 @@

Definition Index

Ops.cardinalN [in MSetIntervals]
Ops.choose [in MSetIntervals]
Ops.choose [in MSetListWithDups]
-Ops.chooseZ [in MSetIntervals]
+Ops.compare [in MSetIntervals]
Ops.diff [in MSetIntervals]
Ops.diff [in MSetListWithDups]
+Ops.diff_aux2 [in MSetIntervals]
+Ops.diff_aux [in MSetIntervals]
Ops.elements [in MSetIntervals]
Ops.elements [in MSetListWithDups]
Ops.elementsZ [in MSetIntervals]
-Ops.elementsZ_aux [in MSetIntervals]
-Ops.elementsZ_aux' [in MSetIntervals]
-Ops.elementsZ_aux'' [in MSetIntervals]
Ops.elements_dist [in MSetListWithDups]
Ops.elt [in MSetIntervals]
Ops.elt [in MSetListWithDups]
@@ -1420,26 +1672,51 @@

Definition Index

Ops.exists_ [in MSetListWithDups]
Ops.filter [in MSetIntervals]
Ops.filter [in MSetListWithDups]
+Ops.filterZ [in MSetIntervals]
+Ops.filterZ_aux [in MSetIntervals]
+Ops.filterZ_single [in MSetIntervals]
+Ops.filterZ_single_aux [in MSetIntervals]
+Ops.filterZ_fold_fun [in MSetIntervals]
Ops.fold [in MSetIntervals]
Ops.fold [in MSetListWithDups]
+Ops.fold_elementsZ [in MSetIntervals]
+Ops.fold_elementsZ_single [in MSetIntervals]
+Ops.fold_elementsZ_aux [in MSetIntervals]
Ops.for_all [in MSetIntervals]
Ops.for_all [in MSetListWithDups]
Ops.from_elements [in MSetIntervals]
+Ops.insert_intervalZ_guarded [in MSetIntervals]
+Ops.insert_interval_begin [in MSetIntervals]
Ops.inter [in MSetIntervals]
Ops.inter [in MSetListWithDups]
+Ops.interval_1_compare [in MSetIntervals]
+Ops.interval_compare [in MSetIntervals]
+Ops.inter_aux2 [in MSetIntervals]
+Ops.inter_aux [in MSetIntervals]
Ops.is_empty [in MSetIntervals]
Ops.is_empty [in MSetListWithDups]
+Ops.max_elt [in MSetIntervals]
+Ops.max_eltZ [in MSetIntervals]
Ops.mem [in MSetIntervals]
Ops.mem [in MSetListWithDups]
Ops.memZ [in MSetIntervals]
+Ops.merge_interval_size [in MSetIntervals]
+Ops.min_elt [in MSetIntervals]
+Ops.min_eltZ [in MSetIntervals]
Ops.partition [in MSetIntervals]
Ops.partition [in MSetListWithDups]
+Ops.partitionZ [in MSetIntervals]
+Ops.partitionZ_aux [in MSetIntervals]
+Ops.partitionZ_single [in MSetIntervals]
+Ops.partitionZ_single_aux [in MSetIntervals]
+Ops.partitionZ_fold_fun [in MSetIntervals]
+Ops.partitionZ_fold_skip [in MSetIntervals]
+Ops.partitionZ_fold_insert [in MSetIntervals]
Ops.partition_aux [in MSetListWithDups]
Ops.remove [in MSetIntervals]
Ops.remove [in MSetListWithDups]
Ops.removeZ [in MSetIntervals]
Ops.removeZ_aux [in MSetIntervals]
-Ops.removeZ_aux_insert_guarded [in MSetIntervals]
Ops.remove_list [in MSetIntervals]
Ops.rev_filter [in MSetListWithDups]
Ops.rev_filter_aux [in MSetListWithDups]
@@ -1451,6 +1728,7 @@

Definition Index

Ops.t [in MSetListWithDups]
Ops.union [in MSetIntervals]
Ops.union [in MSetListWithDups]
+Ops.union_aux [in MSetIntervals]


R

Raw.choose_spec2 [in MSetIntervals]
Raw.choose_spec1 [in MSetIntervals]
@@ -1459,13 +1737,27 @@

Definition Index

Raw.Empty [in MSetIntervals]
Raw.Equal [in MSetIntervals]
Raw.Exists [in MSetIntervals]
+Raw.fold_opt [in MSetIntervals]
Raw.For_all [in MSetIntervals]
Raw.In [in MSetIntervals]
-Raw.inf [in MSetIntervals]
+Raw.interval_list_invariant [in MSetIntervals]
+Raw.interval_list_elements_greater [in MSetIntervals]
Raw.InZ [in MSetIntervals]
Raw.IsOk [in MSetIntervals]
-Raw.isok [in MSetIntervals]
Raw.is_encoded_elems_list [in MSetIntervals]
+Raw.lt [in MSetIntervals]
+Raw.max_elt_spec3 [in MSetIntervals]
+Raw.max_elt_spec2 [in MSetIntervals]
+Raw.max_elt_spec1 [in MSetIntervals]
+Raw.max_eltZ_spec3 [in MSetIntervals]
+Raw.max_eltZ_spec1 [in MSetIntervals]
+Raw.min_elt_spec3 [in MSetIntervals]
+Raw.min_elt_spec2 [in MSetIntervals]
+Raw.min_elt_spec1 [in MSetIntervals]
+Raw.min_eltZ_spec3 [in MSetIntervals]
+Raw.min_eltZ_spec1 [in MSetIntervals]
+Raw.partitionZ_fold_current [in MSetIntervals]
+Raw.partitionZ_aux_invariant [in MSetIntervals]
Raw.Subset [in MSetIntervals]
RemoveDupsFromSorted.remove_dups_by_sortingA [in MSetListWithDups]
RemoveDupsFromSorted.remove_dups_from_sortedA [in MSetListWithDups]
@@ -1522,7 +1814,7 @@

Record Index

Z _ other -(451 entries) +(596 entries) Notation Index @@ -1682,7 +1974,7 @@

Record Index

Z _ other -(168 entries) +(257 entries) Axiom Index @@ -1714,7 +2006,7 @@

Record Index

Z _ other -(31 entries) +(32 entries) Constructor Index @@ -1732,7 +2024,7 @@

Record Index

L M N -O +O P Q R @@ -1746,7 +2038,7 @@

Record Index

Z _ other -(2 entries) +(11 entries) Projection Index @@ -1796,7 +2088,7 @@

Record Index

L M N -O +O P Q R @@ -1810,7 +2102,7 @@

Record Index

Z _ other -(1 entry) +(2 entries) Section Index @@ -1874,7 +2166,7 @@

Record Index

Z _ other -(15 entries) +(17 entries) Abbreviation Index @@ -1938,7 +2230,7 @@

Record Index

Z _ other -(156 entries) +(199 entries) Record Index diff --git a/coqdoc/mset_doc.pdf b/coqdoc/mset_doc.pdf index 86d6833445fd1083b5c254fbd97763689b2a94aa..049c0419d74c4aba7f3674592cafa2b06b587a91 100644 GIT binary patch delta 617892 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

U5kdtRHA!2=5buQ<8;h$bZ8tmVB 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 z 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

hi!(r#E=I?GOL18AeOUIgM96BKp)-J53vkRU^ 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

-TfU3BVO9dIg_2Gg=|#9^N66AYDH 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%0DtfBz=nuVQoM0|d*@q%7 z2oC6Dq=_rd8 zJZ|#RLzreMRNd`^(!kLaaq21-Zsyj=^JUuR$;iUCcnBawq#~WuVe72F6EPFwT#TJ? z(Iq?7dqE-{GonREDaFB$`J$}YWgd`ogpBXHTk{*HZZJ?c4P9`x$bew{_TY)}AL!2N zT-C@Y1{5x9x-vdeu#HRbHvRCnW=b;@&^>5lnWPPj3~l5fe1fQb^r76hu|;Da441-i z%>_c&#KDaPKbZxf64MM@C z$o*$!;}SSb*RGnLzqnF6&g#%!zY%2WTdwOQ&n03A5`2 z_00mtHUWdnUy*Xow#g|=kV1zVQDztNj6vP#2T_L>SPgG7#1OfR@s{u%bNB0iserri`A z8F6Mg#h-nPZs06I2Cs>bAF8{ZFzDyRll9~*2kfHx?OuzVpm`k;2&vPfr$Zk$3T$@2 z5)lqQ42`1HxnRth`@-IgC^Rg79p-=D>du4*pkNjK@_%5c<@cU9&rLJ$&+}jbkNJGu zmF@clRXm66G=xHg(Ghg~>5RneIdFzJbP~8DgsY5IL%rV|Ala=|#~tb;1Dd@0=9-U_ zIHeFL9B|bGpRVvC>(KYM7_&tp@o>{96IPdx24;za_>g-=fRk|Vc7y|x0M0BtEm$hN zR|xNeIAF_?Og$(o6K0K%vps(Ttnt@2XhCRswzr;o+9d%eqyzuTE;EDQRRekyEsxAx*6Hvk7u;(PvY#& zGyF03#GJ)5NG)1*KQ)7-!IWoI-q(9@djD@vzuQk6Vv0~g60ls|ZTTi4;f$#MUq5?~hL#`7AzEtHc9bunC?nr|Xw_Dp545ZBJ|)G2#%n*WqkU9550hxmOrTkwnys zH+m~c00ZslxZBc9kMXBt$%B$s81=U1;CdpI%n}+~(WUTTEh;~l7B?mxTyvUAoAIQi zA`Sm2N|QsJMtU*JL2#U{X^(n#IN}WarI4p`xUH;7&T>g+mQ3V$&h)EShV(4$jsrA> zW5DIvn4Y;udP!$)HD>k%wxxsCMk`-6rdGRFN5J)+#n`2}1pz8cE<^h1o8R2Q`ld{E zT;i$U-h-ZNgA?L&L|ASPj|T@l?&#(wh5Oar(aMDK@F09_#Rhzr6CJ98v^iD;NEGf&L!5vt8aKyYriHS9Ez+=`$Rk&bBWIG4K2!lXOTcAf)5;a zl|=p0#4gg`xO&2!ZHWd0?Z=+P3xiEL=Lxt9=FaeU?wJ~o1^cRT*4?nU$_E#D&%T_W z`7>l;?qs)bPoHAIw0~Zdi(7Rm7S~|?Hs=Stip@qtjhO4jPQ{FZbT$rfxRn#~d z%(b<($MYR0k9K!=22~OvE|2%1b}K~3&;+0@_vLkqm`)!dQWn|QYO8~WAD7!GBxJo5 zMs=L;jnGRE5E{c4ny4lk`pb9gpGS9PYyvF#+bzB|y7>T}T!ABe9e2r4tQv3xk^{0& zxOD>o_$R2nNZG?f+J&bCVXoBuS!fp`Ya$wpZ5|@ZvJLUsodG|x!O@30><$aYfUC=R z4YKr<3WPsw+-BhlF3e)&oSz@$%{trEpX=f|b#G(cM8f<;oZ#VTR+g>fQJ&;-WuX0U zz~$gy!qw%bNZ#F6Tf)`-1)qacI(Mpn!(_n=;~M6lGY}vG&S3Jxl%^B9sf}xHsWdSL zcG6V?8Kj3MOMWj|j0oE=``@kyXi2(XwPT;3ybuQ6jgy!$Q2s$rp~$F2eL6%MT+lte z0i=OliE!91z&P;uP}@-SNWf}& zVC)bNuuw#npdoN_>xi9O7?+!`tG~z2}Hn+0R4^B^rj9 zguk)SvyROLv@IvNr-3YWvzdUV$nf-xAwEBN!dck=RPDMVYTXdWaFdCL&ml{HB%Hgp z(p%_i!a+Aw_I*L8mTfO$6aF^hhqN!O2~U-JMR`ae#Gee^&J!x5cb<8^WkV6gDRsup zC5>vT5#1(RGitfYAk||jAKDoli(X6O5WDLXk5`SBF>7g^kwcQt^a}9&noQSaP4yOM z5@D{E^~K7e2f~GFIRrlytcoA|=e9omT5lM{G6(eZn+epFycy0Fqfb#8=OiKO_m@hwOo3T)rKB5? z{_im!4NzsqaasQ6jWT2D+|*#DZ12oYs%qE7AU6w|-g@hNEY(JD+*pd8?-J@CZ{#IJ z%AFk0WWE?GR$Uz;S6y*Lztb$Zje<|2$Q8OsOsJLnZ!E-rarJp(HM^>yD>eiJ%bGe3 zZmaba3Qfj+K`mHA)5d+efv3i&*^a7^-B4M|?pf^d;n+XPObi(IXb&Tqg%Vi#FJ{>*n!R22c`Cxc z1;?i;p!%zcvlpn(qO8Ce#E?&ZU~7R(Arr_w*Llvx%96kMDmNs5*{pvaio>72(E S=p>{I$*eUD1{%gZCGn9r#tM# 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

jpAeEJco#=D_n) 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

!>kp}tZ##&R5v(vyKI%j)PH(UP3 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�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

5)2?fXcbFsD_+yb@wD& zl&{M+p>8zkdNF6M-@W!VjvxU}OuIC#s7j4$t3PiXGvVk$`0cn1G0D@yG_$1t9-Zz~qwI{qSbP&OI(^GuiH4rcIs(DwK#HaM1!}q;v=O`~ zUL8x_R=HBq z!Ie$XCASU~vd!DAC_2E+%RylnuA*w&SJ*Chqu3>=HH!>m!(p zOxS=Bwdyg3)oRcJFsv~Xz-qfy{~ zk3$M?4sq{uvD0<NH== zeqdydVF@y$Q9z6%9N2bTB7LUTMtWHcwaKAwl?)ORC*89rQfo?e(Yal+EYcfFfmSyf zP=VyqcEfzk{Nu#BEzJ8oXxu>iyWTod(#|jJ*|zmdx0*mE>HORk;~lh2jWhms^wvr< zj}{xhQG0n!Fjs+8xJb@y*d!KG_`R`9S}JJK4mwv$+e=dflb@_?Bi z4-dtg5Av<=T&AYmfOT21CJ#{cVp73mG3}yMPrNw@Hixq$O9j4y@b@Vf7YANe$RV5i zUPT&)r^7Ye`b21{5}~hyqWG!7;dUa3dS6&V&Edf23DKw1D=Zz^7;%=La#uq|?LHKR zFrLK^4_Ba@C&#dJwu&7rQQ*(awwAk|%ID(t{b@ZqR-slW%(>We-Q4QVwNtslQuL|< zKJd8%`{S_*p*Id_Oxp#LVP=v0gf`T#3w7u?n&`g_h)$ocvUfdnno}^JJy+mUH)LEA z=2Fq@&L-t97q-ar%TWk#Sagk_^0ktW+Ycv|?(KU;Q!TzI1(**gbwO-P|D?(vc8nQ2 z8IoX`>4~3o<2iYe|EdtVzl_Ans7JPHPzlp2?)&`I^J0&F_Q*z7M<%PMt@c8tuzo93 z0|CE7a-yw-Lv1?HH*HxfRx}!z*n+`Y!H0^RtTgpq?os(gdC~X7rq}tama*|Lf|ICv zGCUhsr)Z^df*Dt_2|OjDNBtu`?JsJ2yy`Pt0pHwa0JOb`o2K|xt#&N0&7Qb`Z~CEV z6K#qo1TFgazNnCV$J+FfFe1Wni}R$}2061Z{=ts1kR>?F(mhhe`!D1{^sqU~{iLcI zuz`2%c>UKk=6;84J`!RG4|)p+<;e~uC~%|`CT_nymSxJXWUN_ie}BaiR%otWw%bRqMT9JB}Ff_R7WDatfHJlEQPD=SY;2Kshj=lQBrH`yx%$ zADupxFCLu3V6oZZ<(hik%p2Y8c-)T!J+9pIMf#1icsj(Slx8h=tJ!0A2LF@+&VffY z)A#uB_pw$%Ig{Y>FcOaM6UzvmO*Mv{BqqzetS(*#WU3@*lJr6;SmruIWqhq~{Ri5+rtP|KX?kHl>?1TaIdZ`@V2^V!QC{Nec3iD%a^6S3aK-v{9ZhK ztw8++t|fULjIO`J%z&h4>uuSKi`PWfeu|I`yJ-R9Ow%P-I`)j>$+zdaezvn# z>8QbNzq6Ds!|NH$LqzyB3f~q&+500D^$rU9tor zAozuEo*}?T?ff(DCo;-ILf_nD5K@rB;L2DAGcBP_Qz5-U2Qmj0QP)?S5cHkpiVK-{ z;#_?*Ll#c!w(sNJ`t;ZDQlfWb;3qe4ywR_OvcXaw3Y&7^>gEG-zL=vHJNQy@+F@IM z*Se%@!-=MAIsNKRKc+EA8j!KraOUu|WohtO+*LHX%zF^5t>6JEf-ZKgfGoI$arPF% zmdizJ=_lRBk@XUn+$wu>6ufr&nV^VFANIK`2`w^3Z&a^tTRByttCepi`73WNgWOm< z4((>?yhg{=n|w3~um%eCY0nA23}dM7eS~b~xYmMJIw--D48018yCG?nXPjqWLk>7+ zGpz^q^d>vTbII=ChT!BBaR<&!mQ!iUa<}4iIJxdlN6#HSTQMKc8F~umOJM3L!>zL0 zh%%uZjlBYAO5S#p*JqZwv1w4SQ2hn`rxrDdvG$s(_*$`G9i7WEYPhAak$Uy@^`lTi z<>m1i`{a+R>|x}8<9=P0Vtr2XDv^6K_1OHnx;Ne^oL(D|+ks%@hRw|iDcxX;ONnVh z^VPJX)n|Y3Dj@z()p!`6j?SN}H@1Y7~ zR!2Jjxi;;N{iVHG;p!K=_qAsrWl(g7F6cLqH(!o?^@V}bx67L0i*oQOnmg=!qlmWc z<)fkGKt#RA=<$Bs7f4l0>Qm3FwD|>PN-RBuR zMqHQ4Y1_-tU2|MW`#H>aF8IBtu=D(cGK#)r2>H(B*cXkJhAA!z9ji0lB+;#VXbV%TE$z>bTn)Ded7I@jVQceiJf^|O@{xA zSxheJK#iyGUPbwISp%uwym`e;ePYzJcLNYZpKw1`g=)QuDJKRc&y@UH^5v85q)moQ zE^obzW_gE9UsXmKfIYsU7inZGa?X58)$>VJ?*sD!_Wbk=sTi2)h_)Ig&9S!I_+&R! z4G$mGw9Kuc@3-%0ZWc*>yH~K)cBd@vdKTYWwOxJirNjXp`T7b8IUVED&5B$OwrIt{ zj(yXoscn2=`S~$!7rZp>4O>r6W`1vAV@K?wz?ixFD6Av}0*f1liZNUEtc9i45lhGR zW_+1mSir&SPhscy@^@1iuf>gb|BEIupo%bx)NE~OpB@X00!UaEabu}>*oCEcbyL|JMsM)WagB3hmwkJ0?ReOF;1O+1f zA^HKw67P$_?z`H2Jm9ra*o?n|;D&M21`CH7Im0TqT~pgbHvFhA_R7~_mZhRYo6?RU z-<2Psyk5P2RHT#nXzUmw)@GkfZ>8Es1Vea5sUQ^eEcnpxG+Km|)JrZD z`)UTl>)O)?1?4u}Eah<+UWKC+X@gSUbH^#=Defj2zNi(PQ$o?tGgp7!*Zt{Ok?6O} z@v-Y~NO|dBvaVRQeAI^fb#4a*-1fdtCLVh{O9uObl}}LqNPi>8@3tk;%)xuTw`^hA z7&Xro(;RFtVCB3*a~a6;ZkN?vb+}xN%oc5PM;brJr8ThOU3Sck4N{Xrs8~@rZIP)a z+`>Qqigyt-P4?%A=qK^n8G)dRNv)Tg#qm8zt)66-Q-xFj1SW(B86_>eNH-KzSoY(M zrdp>3mEs!A8RsTx(hoHSO`$pX8Vjd^2!=~7eVBJ7{7ex=frYo$RvZf{8ELooa9D>Q zW|a<{CA8~n29LAerVZZT1V?IwYDu}jRCf!yiZ07Jc+>l(!+FNBnEI7gYm9c0&f5&Ai51OSuv~~B zgsZ#lHB^FlM%ep@0JD4FgUqrt`spO#% z8Ryegd*?xo3ww&3V&ME8B`Trf8hq8l6=NvDxk>9HPDs}ej4E6=Yz+X&;oqiOpO*Rl zw6v>%SS(V283h6sOFZx#iGggP*ZNQyKMW$XA)meb`MpsCAlQk(Tg;OB$yJ#VjA zZS^p@3FHr8>b^XC27TK+st?Eg>0nGKAdsiF03iWu3JM=4JdkJHVRII+HZOl8rC)%V zI44N0e&ne;PQL z>mKujptk4sAbh-?a4x@Y@VeCoV0Uq`U@pH*P*Yu@3qzf6R6_kY7f_DEVvS9qK(~g? zhDhrV-MV#=ynQ=01$=y)o15#43;ZjjO(3jUl}7f>_c9{%f{LazP>}!-AM}om2I%s zuL%CBnGb|+epPR1NZ94+?3jXZ#7pVp81E8UG zE%yx&qE$9XFx_8TAgIQUfvS+v-^-`_7xB+v9=7j+M12=VZpPsYCSjC#xznOxpK{|lqaDnzsPDgHN{kv*uk6W%dqsxeUw$Kk@>LinZVSql`nHiVg2^RHo@RT0_z_^Z!S^Lz5Qr6ki^Rkh{uw9}D9Q0KEYQ2>>&+BiFB2~o z+U`s3^Cj|)r4=@HLef#!M#zu8 z5n=@4?Bu#z1-+HsSkg2P0V>DokH8Luz!NN_7geB-kn5^pYxSOi?z0zGI2IBUS`qvW z5TM-+NnL0gFoINRaT?vK!-qurLJvaBaoW8{BV=Rb+N~a^D1>Bqeqnna6=MjrO9pgx zBz{(bKXSx52+X&xgoS4WA~cT$R2SA}0>Gi`Ch~_g0>5bvAbyTSdXvb#dKW&oCi0v7 zV+Sn=ARP7U?+^+m#QpZ*2LwzEgg63u1}u5Th{e3#?I7^+mw{AJ`-e}2Wh1CyFiwx+ zK?ZKaf(pTa0OU46CH)m5+zTfOq5tq8DhT9H5}un_&|m|qk)4Om3*h?u#}*N>AMSkl z+Xlh!iNk(P3yX6b`0-D6@1&mZ4^I#5kRVU~*7d2FhRw!13NbqyOLr`)o4UMqzm_;X zO%min3&FQ1q8MNC7nmKBHrqzER~8Z!O|2N!B&Hbn3XKKZbFMvBb1@rI@^zskRj@V_ z_;+Y79PV2wXI0D%N zC+VTgS}67InZbA>#^q+tu-f(v%jcj_@HumiU(ahWr*(<@A}F*boPRHTy!dIB6374k zXD_oOen;;8hjCLcPw%RfaipYg#Vt50bs-wrs7Hkjfz(6;NUCGsH!5|J zZ-PgWlI;nSPy9M~YzHFtjUbdd{F#Ozuqfc5-z?@+*4m!8Jg!F8z8K?ipR!_`rT;#Q zV;KJN{q&JIB&e*Y5$LvL6Y&AZsqQ+G7S&}xd66r+hsif;nst9k{SWtOhxg$L3ewIm zMMg95CgR2#)O!h9&fOCrV;Kr#8}$E=vUd#9C5qBD%eHNvQ?~1rZQHhO+qP}nwr$(i zt)8Bq>4_UN9TSmHu3USs@B5XJk&)}&??#bwFM*v28_C?<(S{4Ch&q$cL-)9{X&(X4 zm)4CGVIsNVkB{`QhYNmA*iZza*+Isv{|nKNy@;mgm24RX8s@;)9t2vtuGJ;3Up!AF z!3Yx;{0SoTE*SBC-XW@%u1c1V$k68y_&PW(lEhS_Yz{)MBO2H&Q3wqV49q*3$rZcu zmM*$l8&tq}i#tU$HvAPB0>8jtRlBk{SFV{Lg!)Yax#=G3*g$S^Pje_}s#hiZJWVhf z-%50Amgn_36KKIhw(}%s{bm>D z&Tq+BO~Nsbpbb@KEroKL_`$}HWT4BUU$yNu7k$PFclx*z$@kifgTf z^`S5+e)*gqp4Gi!*Y7)DR_Q8Yt+SF+7Sd<}3(a{*Fu=5@@J#PLJ){@f~$ zgiZ_jPy-Fd_R|qOu@nc^7EVxOL;b*I^dS3TM9!p{h8hCLkjH!p-?`vudvs@wDJrz3 z^n`f{Fk3!>tNqHcZ~Z(xaAoS=qW1GcEgjs4**#ZOfIxe(@83|ACh8A$rUAJsp;+rF zlZQVkqgMSdyZ5$Df2!(SARqs**+n@-@w$xloFQ$g^`Arz)_;)6GzfDSso|^it&vZJ zo!G)?AHMN!ygy5k_on-Z)B*X&Z+p;O2B-@J$=$)Rd#c_Q3yW2sXAjfY-kTL)o!;xlPD^6 z|pq_vW_;YB(=6Z!9Hl@{KsJ2d%Ch&L5lX*|E5qj9xAx89^*L?e7H@HTc^JvOnSb~aU1u*?4BJq{GKuHrH}u}t7YJQ9 zZZj;)3AwkfW;Kh^MaH%zG2s;js4uYiNbpN^zGqB?1m;Du6T62hvOmn9t;AE_}cBV+_dyZthgIlY@# zX)8%LIrePg-B8=v0KstkHQ~khXCvqi5;7rz+VSyog@h}*{3c2t`Y2-x-RfpWO_B_S zqcew?`9Or{Ls(7`S+(mNH`g(Qrq8al=@?49h(CeUHJT22i}&OU27ZJuc?~#d|Xx`iJrk@MNCT{bKW$J?TAVNm|Ks=0s3WH#++3JJ>YO>R;lvc)C>ai@OO8q z^AyElv(b7s-he<#WXWqOPeg8mrqj<6cRZV^zvE!`4a4rK@!pK)OqR)3d0cgHOTWz= zleOZH!JFto$im@czMBiEvPDOByFc|c)damw9QuTk&Aw1jvk7CQET)x|T;sUjyU3Tg zQC&kDf^0fMPsb%63+mYxHGm{ny3^$~qJk6 zigGHVT=W=j9578?OnukeJ}-I#ouKoI(`Ifk5^o1-bO*qzIfTx(_z{oobZs|Tt9E{X zluq|H0(B#xps96%vR3i8o4L}+4Y$K$YE6nSD3^^?@J9AhsDJgMv>PkJ`(i5z=V}_! z$fu)N+92kWCEHMzBxsFeNGvj7IHwRABWQ@Ffhb|0PPJyZ8(+VY#rLzXHfhLa?a@;{ z*foYJsU{Crg+qHS3Yj%N$qdY4`OqB8aPXf4TBfa8ZEErzy+E_xo`!oo_M5 zq)ikvX08VsBN%^m25a!T!z=_ubF0&X%nm;#;FX7wAooeq1Ho&CSmdxVlZ8;%gFFd0 zBY2=si7d4tyFq6^O@TQFAZ}B&RQ9^XZ8Py8vORf{)V!bInwBdZRZ-CZ7rA#Irqy~| z*o2CK6}X8NVkIsA>>dZhpK8% zh~OYBl;4irEIt9`*};MG-;;KC5370>sUN_PQrUjofTqqug6G<0*VSeX1L_hytNSKa zi3}OU>9S7E6pvY7Xi?N3v2^x*uOcg%Z@h}*Ob0%jR@qzq3hb!&AP=!Nwfhlo+6tN0 zEoxZagE5+Sf6wYfj2q~(eu^*^J^B_60d#wBaZtcN5a;;}2w8w&~C zxdu6>W&6S>Yfr-X;d7|hhDqAm-q{BsCL7zt+@)ic`|)bGcSVKtU)U**vuCZ3D1j(D zr`da1d71ayPTjX2CiQQIOm;gLTv9Sz7fg{~^WoWg*Y$A*hONd9XR=IzHF33DYQjTY z;Zc$Y=>(-pHLnj{V#5rLK@3cIxZIp}*=_z?M1IChX-C7#SYf&epTTWbmuau>i?(9N zO0-v0M|xiaA74j*qM0;4*LRig^8e|erPScNGd&EsRwX1YnH6)rH|6#_r z$u$z&Cx%z)^tv+K{zPz}wxKFhKO}FW^1-0WbHlyM9RUj$LB6>WHa6)0GgeDA+5OV# za#`gNMEk>R$@q+AhKk^cSJ27qn?iBZwPt6fjTE^dkR)iY`_ivN7-ZP#c-!VO$}l9% zg2+l7wl`c&Ov-gLKa)1MmNxe}#)k`e9#-Y$F&D$pPs6TQ0CUz5_K@@WmXcQOh>+Ee zUdEBrU?6M7@<-HFa|XXLvnO|1#_2*S6IHmWGb4pi{44+u;i7Y-mDX8K;@0FD89C?X z?>~4u_6-JLXesFg7W~65E+akiE+^ycKR3otOZ>}dUB;*cZUxp_Fqvw=)AbR$W6l^t9 zgX?N;l&8*^OlxS=Fbc?zd@Euu)7`TWaVnJzdl^O!tuM3i z!{p{&Q&UI%7N($swkTKnmgOj&v8tO}3!K z;C1d#SE7^V*@iC-lQ6~grVkb9*kt2OES+W48Cv57-&fmu1?^~L4eThdnX9xIsDHOj zC?;rgFy+PDvh`l4jh(sXwGHGGPoZ!zaO0x*do;VL8G(1dVnj%PfQsU5DknelXA@>#3{9O2wiawkVhzpc_Y0xuZK9>LUipL#>e3^%dE38<=828_;FPvEn)HK|df%=5R8~(4t8Waz6TOC?y#Lkan# z1g5=O@QIs3BHg>HN(*Vw;PP~lGfFe!IDwh&o@$&h4}N9oHdM-UGVVJN=3a+zuG$DN zyr~dK1RRtso0+AS`=x|`tSZX9yab3*HVk(W(;v+9><3+3Ogt%21$yYDrFVtLw)7SN zyh3GlD&F8Tl=3N{Ekj*ZUD3sEs}naSfywf}%DEVggVTb$1|l^WE5QL+&iYD)pZ zoM~!ZU|_s41o;7gyu+17Mr*(=Pt*^$`>ujI@a1*@DSXFq~keO zJfn;;KaDP*=pQEo&u)esYMH&naQMtwI6izlA_YrpflsO#I;MU~Vy;wt?{j02GPGv{ z^$_TsN7r0c5xIM_gRX9#7jRvuyO1-pwxIJbxSXKT(B2oznE`Y9&*s;9!n z?VrT!k{$LCSM%g?A^gR&#EN&*5l_zR<jqSN#xqHJ|XRs;MQhtXx^%)Xb zlws0r6RqoQeKINSW9{f$Ng^&6i$+6$30818$-zIr4@x+bBwQY1M6r)Z-*Fazy~!up z3s7FJ@}~FhhS9P=^_I7o0&Wi{5e0>ym;H0}jPdMGsw4b|APFHPQkD{QfP^OTPaTUR zl6)BBlrnK_7M{h~TCR(3uQu-o_xh8MU!NV}HW&*9~WSLJB9)a!B9IiEWsdD0zW9t+e4eo~C#r}r^OsTTPX8)wrFUu$n1DE??8*>R>^$8en*VfdFQZaIeep> ziF1N0D{CF&RBn3RW_%P^gprEZFX$>zKbRgB*yYn=c_z?+kj+Rjnj0;K`oU7lJ~|hRohl7d^7|4s3a@Lhx0O(1%whqF5hMSMCw0--jNj^ zK@DKm8BFbu0HJSB(BF?#qr0v!nm6YU2*^^Sgd2D<71yUv>-QIb!0fxxWG<;dWy5=! zM`rE2MB2_Up-GPmf}`(k)N-7y@}00KX{FDf2;iZ!f@uN8P!hc{v{6I@E&4M2BsT}m zy=9p3QHO$Wwk@^d{#+W^TKmDgZ6k`A#`cA-;n@Y1u18~e|3UN;F{_AgIB2{dEpN@c|njSfyFYszjLwx%6!w z{d5$ZRqMl@3I(HqSV$)Vi^Exbwumx!FGcUDMO=2g8#pcURr#Ov@}#Yrv_!J4{N0v{ z%V|}!k@w1n@}3~vEn0U}IOR*BzM<5Z=_|u(?beFuha6>DZ7@;KM$b2?%+!?}%5I)Kf}YjuN~ zA*<`9{e5R&)ROmV*YWR++8EjW?_{WXf(f$vd!?&vkzMH0Ug&O{m0$^4rP4am3|rEj zCC}9(Z>`Bq^{n+erhK;w8l{Z%!BboK18D`?rb?qQe>Or00`Fh(-P`o8aJG|CD%c=K| z;II%*3MXV59;you`o$FWyC#^uJzd+u67MYhh}}(fCB|iMXS=c!1_IpT7$54wM|BtA~Hd0TEeSWR3q)yz>+p4ht$u)^L?Z zBFgF(HcK!jiheZ!Zv|TkuwFm~zz%?I8C1wfyjLMo&m?x)O>@jLY)I6#Ugr-IvE~Eq z=YJ(}ym4nQT5BZ6a^#{fU)9u6yWG0NjZ_Yr^d@G zM&lQZLyK@ij3Ip6ytsO4~ z{_HrO%vx;#)V!q?ev)%JgoA8nBjIT;?2TDvety7AcIe>KA`g`TiXHAJ^pFfNw$l7< zgn$usewJ4)a)>N?oJ*aCNml5uam>-uDLjNQ{t{sgXwPN&a>O+3u!_4XVbf zu$f1=;%S;!v)fftTBk-j|imNMS>2qq+((l-TZ%J}E!n{uE{ z04K5jH{CSPT?k)ZUGwFXtnADG&90wOM5~iChN?6cP_|XodEU_n5WkRxk||(DWn?@m z2+AVTjx(9i%6p^o>EM*3vVqrc_A%+iYV;_6T6R(_7kO&?9X3Ey{8g?r8;DHn`50TH zCr7gi+u5y|c<-Mf<^2nfsaH(7VOJ_{HB`E6H1PA+tfVizfS{C=#-%m;c3qtp5tYOO zBs(FaE%n;Ut>6mpxQ8dJ{cPr*#y%GR>Tar(iSMpzFTk=TTnxea09`AQ?4r-Z-C*N@f-{VoLU_k0J8~@0z zJl#!AwuENHaAMvu>G4ETgU)c7e-yf;dCH%Mm2B$Q!NP^6oT9}ACGJC=DyC}u&oaDec{GZc2pyRxqjsAqfl(lC zOs}n)IL+HI_g?n%yb^58w*pbjDLw@~*|xn&%Nw8BpBvwkd|88E(AdCGiJ{N8f@B@R zFXa0NP&WK@u*&^}R}p6VimvnTi^(2RC}!hqnzZ{4Cz6g;k4lBv>R6#K7CnMj-mP4x zg?f?9$=(mJ{D$epL7vPw6uOm$vUV?_lRFLL34_p*yV$&VxRWkB0R=i~mWem-^^O4~ zMOXZwNRfgEO^FJEmM>pVO9E!{0vk7qNbrU_|2~DB#6{^v zc=eKH)|lVoaPuN^7OMoOW?E@!IpSM>x6N*{f}E16uWC0}?qdnpDtUH}x(KozJ?u<^ zHKZGg1oz729oE=luug0`OfypRXMA1|qW@dlMGtn8h0+9dAmNsDr8BHIsfuB^GGaTC zzY|1%$yfpzHhbB_%M8e}t!=Yy3)Yf`A+tXmVN{RUBZ8J50G5V z+`1h9uxf2J$^vf9c5JKuqtb!?7n1eCAyS(`6R#O+K};-x*S;+yC?$eyx;ErvuJ^z} zV=;*rSL9mLnOI%}fzLW%SJz9Ic>er3rrh*#1KlV(;Kcz|PL{U+NJ87WV(Lw*Q|c zBTJfQ4kRscU(-5r_}m@zLYpJO{fHbYP!i3{_th(VS@6`-7Qu)(_JYr^uP+(2en3c5 z*TydJMmJyu5&ux52j$*w8T{(`|SRl~^{je29O zgK3Nz*5|5pDGkqff-Vj7@6b`~6(jRCd1P3~NFv{F9XG(`IC`}TR zxx{KLiz{9dme+|0)l01e#hK#PMW;j|AsNyyaNPl}rv50*7L-<^f*MRioQr8#ot{&) zIW6+in2g&1^OF0Wg&lOn`G>XhEBq)(acH_4&D8}5784vnWuNE&p4CXj#g&9aVmif9 zqWpxz{YfO`Nt#vCkVw$WEYE4OqKZGU>WxLN9)4Gopl}lK_F1GL~Avz$@^Z zo1jj?Lb(bcgNM;uB8CA^#rY1#;enD2KSGLT0zH8tnIO~7(o~dUQ!S<{ zyH=f5Rmfr4g_A{pzptSCMDxw;p?<~K6_=OYvrunjIOBi4J_o~80{d4>Ba&dNF(XlZ#bOev@ zy=jZWdNp)pqjGaQSp+S8yJha+^VM=TW3J4E5Y4F>sFS3a+V!e*N@xmEj-b30)@FC%`v;gxe2b5NM)wJif<^ z<(b5GXbSY|&YegsYqNp%T(;s*Su~PJBG7iQRcX+b!8}i0^vdoLZG0}bnQMy7N1RuEP2V?@k&}gT`lAA)0<3v@eMu7o`EvD;Ir1r>mXrn#H*FKKXVY~=dHPI~x3(9_YGrw@jQ~aJrhb}kY#E)&nLPI@#9v)2^ z4hu1k>I6w>NQ*F(=;D}SfWi$`O~gfq_(jo>5eFjbnfJHw>zjxJmogOiKRn6>0Wnah z*WZ2PTY8PZszt6+0u)zSu|KzsrcnS%@yUsPQ@|3GfKa5cq)8!p-myn``{*#e@`!gfmyjEmms8i zA=SC<8g0E>Y=)B<~?P`#1mMjAY{f{0p9|=B(VlBK(W; zFVg!kcaUL>eIUOG{zCGL;V*xFIajb7=IzH!vQ)J-hWxz%)`$w&+kImfC^e&&iuJBjhoUKY4t;ZiCAouD3XAfz(V{}HUVCSI44yYR4zs@%C3H8mdlwQ<(d zR|Lj{!aVxO{H*$nf1&)v%ulBe^B1*W*!@)V;z|dLK>j1r3Reo}W7J`V=|`HAgxi(I zQ4Ht(4uo{#+KzSrhIHcFj)IH%_{RWKL6QY^BS}InL6HTyb0+BHoJ;Qo=JxLiO^9pY12`n5yST`q@e)In8?F$C5dGLa6MZZpi=u}&nO#lTn`>aowXvT zm{Hl1uXipeH_hlTQ7fW)OH4?m{JeJ5wA^vRrpL2n4sh$5!9X8r~#F*1!Dv$vEBnjDKyfM~%;Gt0ak zSNC(7N(k($tY8f~7 zE*hyzNKS2qh(8Xr602@5_(+Hy{Zy~+wLhO=Xp!s_B;X*RKirk2U%Za?bp8P>@OdwD4#RcdJ{MYs-GKvgQ4x}s} z!e;zgBw6tIP#LJ8ql~~)10iB>qfy)#h_}YwV8+A^?`iP0DZxA%5+yPmmO;_~8htlg z6D6)zIyzj4qo_|Df^qcQi4o`)K6HIhAhySNS{+S4VZdf{NSkQzWxyUAs4iHgFxDOG z^!+(4YGZLXtB%r6w6Wt4^iLw;ose*-3yjkM1;! zwv*q#VnGHR@L@!x`*i8S81Q+Cp#RT{N#JdA=3TFO;9hb@0MGj0zzX1b58PWq2jCh0 z8<+q*$ANoIm;pSOf5UHy#s#XcO+**atyNRVOQ3s`n31ealX|A_%R5Y`j~V2xUh5?O z0U47Sew6e?#|j}Ybxo%4=b==HXUoj2I1a-Y`Enma`=(QnUibyyNWPwRrm_1NurrVl zr-$W%->+#RTfd5lmy~Gb!p6{>2r?bL8TCv)@EtX~o_io`J(EAQ@=#-hmt$sT+XGrf zjXY=bW^zTVf;z>`OEw*x@_MSC1x*s%m+XD*X!5-(22SXbD`SA{oq{U-Wqf?P5;ERE z)m+v zgaXRBl@(YWg2XxC5{cAD{%IZGCj#zBB28Y zY<9N$OzfAq_3pT)bV9yH{PE7Nu1Hb49q*jn{*9W zDqr4tc%y~NHn1A>w#YISC=}UBWP4VR!2t(Zco!*~-}pvCt-NRH^)v7T5jH*vgj}TS z%8{r4<0)J&ZTS#@alq2UWc?uV{|vv?D;d(iD#<%Mt0Q@hI@&!skG3&mKu8md z8am6%g))npN<6F9(f7OHh{}&(XsL^%^Q(FKL@kGOv@9nZ{IjI;9Hy#OyF-D8W&diw z+L6AdsukravlN~J!Zb*_MoR6n`<&yE%W?ho&EDwl+RKw;St--UOs$D5s!x@*{Ov?z z)D*+@$+yxhr;lIt$;5;AmE)yz;6meSVuP$)`QJv!_e)n|gwWhs?Q_keWhD$+;ty%o zP9ZZ@9G3Pe=-%!HSQ~?#v)~kZ2^ryWdlxlx$qXgcWU{ct5l}TebVIk>;Sw&_0|mU! zJ2lEO*ZO(+J42(w{V{V}97AR{xOyxca5dQIfJ(3tKIM{fG_UF8y_D=1dn3zG?j5w; zm$aV;1_b^FssKV}iD)ma#@|OL&9gf|z%q)l+qwdcON2^RDCbn7y;ANY+qQDHjs;Wk zCMB`lL--@96mHt$z`Yq_PvAsTjNO}0q@VvHS~Q?DYO4o+Iw`J5Vy`o^l~~mti8U*# z>bMZoSTVK1$bvRR<-sX>OAF-amepf{WA^+TLO+nkjp_h=OTz;ZlxRf#_tcAF!QtZE8ZVmo5#* zz0e66Rz$Ws8hSb7%GP6}|AF*>VP9~0m>jvuipHO8oY#9#!ivp};$!X1M5S!sP*4Zk zoHNaTH3dAByyndT-So1cR$B8r;+55uclFEj@OtlzgMpPQ+|l%UYcQ23dz;$G?!?#> zN3xqSXSJ}w(jH+=x~EiDh;M(JgfZQ<*j&i)fiQF>=RK} zZF2(KZ|kdsJOO!F?2(?yzXDQ9GOjOe%DuCa)Z0e|$^Xnzkh8sO5^oG`rK$vWRq61F|V#cgN0L*O)J1l zk&)INjT+8EN0rIrkO-K8X1lxaL%#=KkN=D*BqE&N-*SzUL7qzL{CKehRa7erDWTz(@SsA?h)fNc!tLG>U z-?=g&Su~49Ub1!lOlTo1T5i&j<5)=p)%}|z>B4ccLin63QJLK7_in}x_P#)YpyUMQ zAD8wcP}>0mAL9V^H_QU!V-WMBKqGN~A^q!}D(xqm z&O6v%#?V#nJEnnKcrXd!r%8wMBTVW&WCS4Z!2gAS2GR^_^h|?6E!~K{+ zD{Lcte1}XFp;Wvk2TiuZdhA4*a<89Rw!(e>)rE6?7DvuKOFEVK)z>vUHrLk^7i!yQ zKd&>qUf&@$KTi)g-ZgfmhsICGdiM8UUSbOuMSUSecUEXIDIW_V6;D^jP-#fs-R?h6 z@9$F@;bihCr64of=3Jk~4ef2+?~l(@Q||JGN-P&HKSSSVKh5Qq>kslBMMA6P zjU_@AA0Hh(->xlg8vHdrooyoZNPqkARbEmqdbD^gOS3PQrjDlG_xw2b?~kvio|evy zoj%+l=OcCeU0zadcs4DocXmF%?w!Ako7%cNyjs<`JG(w@J-$+YKZq4%JBpZjApJBf z4PeROO-1MJOt>((9fwVU&kJE3g70T?cfDWjc`EkoRPTr;%JMDu6uj*qFLKS=Zh7@O zcIUowgJtyej)DFh|H_BP%4r~aUa7Mz`EWdM!hSyP$ECV$w^U4&X|#OoOT;w=pQjS~Yo25=%DCjNX(VX~54$}aF4hN(nqh?A2S1e9 zx<#*X+z+q(dm@x7wie`6lv~$`sVWg0XLZP-7;by^Uh1>F+8KZDfX~Rd&^R=-Vobb4rem@6yQ9{2hJ$PkL>~OvGhmc}wn! zmTa_phg8bc3%}n_Ka*E?PV-eH95xk}|rxdx87Q&d)1 z6_yyMS=iNC2`;r?A0Z)uUj8eJA|9aQo2ZAx4h$&Byb_fKaO4kz`=pvVSy+jKWioN zTLs5Uu)-v~^!A%!Z>7?gSG=<8aawPr<=m^ZI@1?9bL7vqM3esSLbG3CET^FX3J(>$ zwl~e#g`3sa+g(4kY6j2vRNog%1JBS&Pj`)*%{*HHv{oXI%ejvBcgIo``z*29I->_yDUYX$>dZ#?f#f&FN;~nlE zE-$sg?r(p$jF}aVJ(b@VztN(tC+V{OkbX<$;3q8*k86v882z9ufKVXcU z-sE{4&T(mQ6~;1|QCR0RPncwEXY=J7#)@|L(c{|Ixprr(^xU7K0Nov;NnX zV*hgkuSrWI0lTHnd!=SKBR>W98a*XJL40jmE~(RAt=wRV%sbbaGVMsqUdW!5yyu(A z-8yv-z%=$T0@m&W$aBk-$u}EwDoCp~=(wL2hKV`FvM)$6ZwP%817BUAu$48B6uqAV zPu-lb2raJ&eV!6s-8c_rWapCKjXH-9`a2hA99T};!juwhJXZQHh@M4MSzj+L>GxO4 zd2mH&%Wbp3Md;G{HHm6$7O}r;OIz?9eeG*NzmL(k-)86O;K)2N;)DI@CIWCy=}tC5 z_SE?o=tyMgjLGg)V5Laomj5lR&FWd9(>WqKnt@AM+^Y2WS~mdX09uWg5&#AU*k3jQ zTB-jf0kB%n$er?K0q*Bl01vh5o%Us!a6RRawfma|Xa&}&HsQ}w3*sUP3W?Up9we(i zdyE5ZiPre0%WLY-Qlr$nAKCi%J*?0RrdAZyzjW3uQK&t!tVG@G=WxCBCaU|d{CX!e4@x9?8bmUBq`(45E&z$CI{`Gemgubjdiw62F94G7M8qwtDVAxvZvcQ! zd_3iyWJq@Zr6~j#Qy%Z^VXhP;?xFo`F$}ytAX}MdDhSXdZIhxX^m-#~EW|5(Z^YJK z?i5=vNbZ#R)IaRdxM;}2Cq0I6Is(A;OjJJ5PYriK0)FI1w~AUy^za}`U@1^3D}PM{ zU^EyS@Zw;yb^d>rvbtP%mm4-YUr+9Dwd=IsPbnK$CpO-m9UPyvT|FO0Uawb2Ay?P7 zPdyV~ry;B{9~Cio@IPFgUYc9ozG<`s&!3%aGSfY2`a3?}>f1fOwR*G!wo3K*L>AkCy_7o zadJ3?iftP)`s#25-(=&xWI;)A31ivjNs#kdb{S0+2v{%*D0jVL6dn^*XoaV zJJzpbi8gL9bEWNL|Vu&mW(o7h3_|hl5VuBW*3kC#eDv&RD zDsqaPw1s%gEYEG=tqoPzh`b}ZC~ul@nm@{22xps~KJg7ws&gDjSVq81F$F9rTa1#x zkSMvy%wN_wBN;QVhzf}e4LvwSgwr;&NIUKv6t9o%lPLxT7Ao#jpqhGS{b#{d!>k`- zs^(c$XFZD=Rnq6Qz)56R*LGHrKsf*6t=n0ppLPdyz%3_u15DP1J4GnEENhcfR#Nx) zxEd$`kusLd(vlihdgkoFKYxgyw@4@9^iNLB%Bwmrv1Yiba}@@Qq7}#~Cxjv^&@SFv zJT7|!8C29VY;a0&J{tK99}oTq5^A1@ThA0K+ShM?4v|H03}lep(x>tz1fbL~o+S{! znX|H?tw)50NPdq1RhYVLkxxkU#}0Aj>>u;n%8j2UTfWV%GgM~)9rUpru~})e7+W`A zCqvo|{Yb{n@7@*c$u2IV`e#%v6I)yE0W_6XLMPTf8`dv>56e$?x84s%dJQbA{5T-a z%%$t+%fq5Pa8h&OVQTITjVo9O=7X`U)Ib%mt=AV2iI6#5QhiIO7ub2LZ}xIVjil>V z0ZgLW6R1`)!30EkzRqW1<`gl!e;)OE`h!LlCxeZ{RRn`dq@a5U zg_n;Rgw7q^C_x3&)6F?StN+66$j^m11l1{~Vnv^f?*CE!?zOIig3I)eH=S(B>VeSd zvUjSLOH$k@(t5(A_XK>Cm7;DU>c=66nq0gae1}22C+yQz!pWk+Yfh_nU*e~$P*U2k zr240;Qx@Dy@($ciI|paAUc^Hkd>b_^ELgOGLMK#$Ppup|j&4KZ z%DiG~IoR#2fpAnl#R8gGTCr|B%AzhB%EP`*NqJMgCd^nP{x{nUT4WQw5u34i?9gt; zu<48}R++N0dB+rbEX;e2F-qC-Li*6!o_Ig6su05nw%&cg?8NOI^L>XIU7`4@)5lH1$=!2N00oam zHK`vhgq~`4AESt(3m`XpJ6Bqu?J}w_ge?E6-lVZpcTuFmmTBAl9tflI72$SaRU4?u4@EWpMS<)M}(L(lvVEaHh-5D@Xo?CSR7Vry4Nk=f`Gx zwJgld%TJIPtE)rLdec6ib!Ax*xoQo`k|E6q9DY1@3DJtf;9KDKi>qc~cHdq9F6EwM zI)j|S8caeNA8MIM>5wL00BVu^1S(PX28*6Z6?w~$ZYx@d3mmbVD?{MXwspSZ6U~W& z0`io7}cVXa*$Z_k*Z$sqfjv&!?-GlM6PsR6cWKF$MTr|lqgx9azs|f_d~CH zO!(V|>pJMs5pJ;~%HDw1$%(hfO3vC%PJi6D%WAt4t>%D!xZ*~P|Jq9=wCmtxpAA3u z3H12;btU`?HaV}fpTpythy)=*-;Rc4ax@Nt9QH&h!jMf|BQKGZQ5JeCZkWGOEivaa z!I`XCxW>%bJwjK&T6h+@U#^1!i)6`G-e*6nEM%qD5uW8z?;`zCvAtLM=Jv6bAUr$3_mY$>EYtyPh<-#gt}%?rob!Fknn>}{ z+a_8AXz+P%zh>^ZuzULPO8kg7Cu}4qBedep@2HG$bA>-Dhc6GtE0Yi;QwZ^t(HcnFXIgn_VJpn{xz;7n)bvX^{c^f-U zSW~^m4DP!qklAz*oD3g(ivD0J67gw?T4^T+l19@+5Sr595T` z-A(70PIWZyu`#26uT0EG^(Rz|6jCrQpB*n>rB=v}{AkDU4Zk7Q(Uu~~pkMwA#bxbe zpuL=^ZzP5W*f?qpJ2hQm<&ANJN z`Ghgq^V8%peL#1qc3h&Rp7S?0 zA477Ely_Y{$@D$JaAb+-Wyf1t;4Av1t?J5ld~A5bVRg(M)v#!@%UMBou`87o(_y_# zmaye~c}B_@8E&p7#J%vf^07SMEL;(Hk2k7t*@ZbZ#>n2gz&KN4aRBoU?C>NUX~O5A zgd;>zmj~q~TdHzidn-n(kRpim($DFt0dutQCBb7zq>ibiYfE#?ToTX55LU1+xI6&* z$>S2`RHzz_D3s~5ARk9z61w4m$jC)C57D-Gb-y=!Si=qB#yE(GII2vqK${RI2N9ep zoP5x57I)p7Tl`xctkUao=dwY{6L+85<4v-ro>W7ZQbyr7&*bIYP#*-)W&FGun8o$Q-+l$Q<#xYywyU;8RDJNM-k{i?Uwpk#v($ z3|!Sdej3`(gkR~aL8aTIFvUd;_rZ^ggNi{(#}alC#Y_p>aO4*j9!?1aKw@iUWT$n$ z3wrOZ;!;oSA2pOM<(bVDz2(c89Z3?RCA~niqnd!J9G#UdmURN^P0PP%C4 zn_ZQF(}(`4{q~UhJZj;2vBGmH82JFcf^I;6QVP!~$~&imFNrD|2X=Ku(JKqgq_B*Y zNFIg$FQIz}X|`i@qc7i&SABX1KMNwW%I)A)QA`fwD3^SgT$9+Tqf>>^!1vO^h0Cj! zTKEX)B6bhsV2Fd5ZxbUrpzTxzZ@PW5m&w!H%M=TuX$3tkheWopKSDpA;eO|4={zPO*ek@j z=$#jviT-HVpT5fHBLO{3=)E(a`P>Q5a%>6 zzyEy0E-x5dLf+a1y-6$Xth_AE0iTtJ1Eyey~UZsL9A>Bi#T&Z}&B?SPX|uCugnY1?oBJ)z)a0fcXM++1=pFxlM>kFTeGCR{bEi`&6Sw%+)fB}dUYh&h+c z0NZ{XlQkqlCdpN3*?=}>5tzZTZjOGaY=Bzb^9&a3ONt?ii1;{0hXNwp^tk7Wr1sOTK&-tk@xxs+(Mk@V0&(Q)X@bY-d?&fu`G7$ifmU#7?IdN6H2qAUacz{G z7AxGV&EyCw64=j3&3bXebHQp#MY#asXy{!2i^{B5j9;C6isIMb)Tp+(NmR_+e821;_eB*4C0W(MneU8beI}Aj1d8 zHw`SHSrxm1x9GZ!N2#UT-bBwahjfBr-z`@!%#w@UpIsNbFMxrEh!(A>!kp7xT)1Lx ziaiwS&!yyjSuc)Pp9`B^;zqK9zG1Z0bhvvK#3DhLbF0Zr<9ys<_c$WSN2pl=c{BuGIr)xZ!coz+94Q& zoQFD+FwaX(9ssyc#_Kr${<)`3Z)(v@dA&Pv<%Jv5CadC1p#EZGA$^&$#kPFQ1^X++ zpyGz?k+(~+tpEukTxmm|0(s@IlfUW0jrE(+DDzr&RGNCysCp)vWEPIJSDF0#S+e^z zl85YZ{*$O%NQ~{EBCMaI!ZqKha3SS-=KTp?85p9Y> zD)63V5oxHppjP{1KUet%mY<)<-P%5gN}fFtg)F1qn4|=q`r_0F7yjbzIc{v%F0)S4lJQuUV-v{Tk=I$R>WBdG3C|} zy&0D`2*b~faVdzXE?p~|(6sGT8}@Vv1xxp0PE_)@5X|QAwqcZw(PLLq!B@}TF9BXg zH9Qf+Z)}iTTEr>)^2A1A85~Ho^Hw?f`N3ieX3=YENS4R_5dlNO_z>w@=L!D6j_iFg z=dgWoTAT`51fxcwxP!&aGni5M!P+rYpBI9+F{A8Pwc0LLUF#|*Zfy;N*7F^j9(YP5 z^aSsN$Ah-SO?QOuJy}WRzSw9P=>i{1g_@Emb}%B9RhYU@K4lTOu#$KT1tpD5FhUtz zPhY{%RPd`9EEyLUnN-`2^GoV4N)CoO-1$FH7@?kerHuMyV-tw#33;o8#nha4>BbF=kD$= z+Jn*L-|SmP)wbSI2z5u=#Uu+M6ASUbiX-j7sDug&*|CbSG}rxfGA-lF$XQxGA6{MZ z_C_i>6Te~znlmD#Imk@qTchoRYV~nieRxD|lvP8&R`mewq9P-XTHCgF;TJ35jhUrQ zy`l(e)`KhfYTkp>M{?Rx^!5IPUaJ>&wHp>SiDMd%vve5R^QIK%N~>l0A4;p|=f77_Ly>Mo=T)%MGp|Y@`du}zXHHh&9X)sKyS={zjbKKTzjHfX? z?Ll|U)>^9&ukreeCy3g(c}4Wc++0El?Owa1=m*VcfBV{5E4-64ihjcBFYLeVU~?5Y!c4Q{d4 z9+TB|i?_*!GOx7HQXN+2ZLToEPR6xjRsvXS@umv*90a2!2aG;P_`83E)Fv8Fn_u%2 zx5Xq29NZhmm83n9;o#8Q;T$DC8#mOiu3WdMs5j#X{1~4!Gj@;G9oca`WH#$jM z{`3x@jAuXsbF{?~@7o?&d9o8=E)M(%fZg8dR=tQvR_z9yv>!!N>tZLL%FOx8nP{5ndiqPnBAVi-3wOf<# z;UtcN8Q&9tv;FqCJ0zsgcK0T&>18ub@9DtV=wbW0yYQt2sohAp4gULiSPeJNR~p?26fo2exCqp_@N8Kogvw#_H$5bxr;vPKz1H>wJ~Yz*7o54b{ELO-!8 zA)Bm>?uM#ZT>&h}PUdGduznO9TCMu}hNq?^ED2xQD`(m?>pTe1vyH<6d42$^#> ziAD)Afi5R@vuLHV==&R9XI8slh1!ooBF)i|@-FXKn_=ecg zTo(q%26&R21?6s`l&2}>uFiVgW%ilWN`JjUN6no-1pJZV>kKBvQpt=bD2F1>HfPwU_Ps0IW6txXdZ3S~TnbNyub38Lw1LrE@n z9AdFA4b2QfQ{BB_aL7JyB8=&fl{RAhM7iLa{Y2luH3v}D4ywE5doyF6S^4NgfTcGx z*qqjuHg7HU=xouxeo!UZ#f^adR)Z1h(%_~Kk`wEQh1{D`Xn7;w9H|4cD_%dTXo1Bd zlj~h2n&ciqV-1sA!|m)k#&GS#5d={`OD`L*dDiv;_m04DLyRW8G1j0}n0fbHm! ze6!e+rg`$VChhToO|FhXV2kNKMyY}I@6 zQMDgs&~J*9?UobwH~vs_dRc;k60OqzvfNV#ua+@KH*GSe?v3DQMRc*%`LH7~{&C=K zdS(j{VoO0uZM9(digE-e{(b5ShK(=$0BmO;uOSGt(9yel+JWJBXUOg+7 z2Zvx~K&SoQ0RzCGs2M*b`vj2?7KY$$xIjPYKkaBF(XhZm2sC*4Wep420^P=2r5{$F*s5PzuXEI#j*!z!Gdg{7D8%*=-x9CTbY0(+7&mdIXz0q1&@!u7;g)4FO*R z>}j;ve4I01&`@hamE=d7{Tv-uAkq^q%a3DQRxpVR*pPv$aB-hjGo+^*O{2pFnTd<=XTPDT;%7bO1N?;r~bs>yux%b}iq#mg`7K@A&L zE5QOT2*+if1dcixo)=3o69a-8D=8>ra6nx@MVQV=oMJQHZC9p`9Z`*iA z+;|BbFVXPC-9Kk!Us9)l2suUL@)_PgwOPUjdZ?22NVu8KkV^cUH*2Dy&&Z*zU&=2% z3irJ{?gcTEV=`LY57|EVy{byM28j`!&bStF5!ullC{?EZ#@Fwo(%(~AZE1^=B>V2L9c3j5E7$3T8iyMh%m($uo4}WsF<}xfP@kM7wKV|p_>ui}{3gJmp z!VYvvg=JFvdeWj*XJX!4IVgn`U(eN+t#=7Liv!ammPP{84-JEQYRL<0aH{E!7UXkv z7WZozXL^CUR=p7gZp_IZ+FO}6$9fzg&Rnq6{c&1qQR4(t z$7n32psCLV@q?9log=Zff!!}J%wDpz(zv=Z30$^gha~j3!ms za8?=)4o2rxj1CSzJ_tf^^Y18=J}?y6a{{JEq2C#foJa^ z5T8MSS0XeY-0wk6;5+x|eUHMt1` zU_wPk#A`H2b~S`!FUwBiFUx>qfC$k%u=OVF6R_N~J=w92a`~SV=+~C80j#_vc$(g} zls5uuWZoK4POw7^3E!xhnvDg31(^`p(eyGr_$g6eXEV_p*9Vo1PD|;jl4XE8_Fu1~ zrx>ZZLLF}~=+exFN#t`mZ55#dir|oyaQA@CSJIEpUfyiI*69@157y}rj=%GP(9YK} zU|Ya40)B}<>Y^G_A3Qkutg{5cqto-&xEvS(?aQ7Ad0NWs@y!J+Q9EWf9=YosIZsc_>NGOJ zhBkx8%s&3aZp{cD&|Z!KG=bkuV!Ae*>p`T!~2M4~{?U zsB(U?rG;k=H7P4H)<%qPjkhoMbEnu;1i6&y%Lm4=Q_3q6c)<$}54RA-fz9H^ijX1;QFPLiEBsCD&?}(B$s712k@k)J%i=i4427ul zLoZ8m+jGLWpL(|f6M2A%Qx;p=g@`s-&LJ7wx zH)u`4bDZsr5s#u$lD=esR_SbgSb5sixk6s*Q*p6eLJfZsiqny z4xjXQPw!m5f04V)s}P|N5Ko?XHPrH?48VldVMcoQ!ywYKHCOc z4vkcDRFzgz4j`;3$?P>|-YA`Ms0%svrVCf{hAlF}P(VQmw(6LZ4oNrP+_LL;zh0{l z2#vs)k?pd-jCb%5FH0Yh-sn=mauB&lQ#gG- zXfAAK+-=vts?S<^@zblg`<^A>?e6h#;~JB&ev?JC`h3{^Q24-j+nSlx73q6=7WZ5< zuEu!yEzqS2dlbtBRG;#d%ca?v?%I6g`s;$#<)??I)n(tuLdKh$+qKzCBfs;I=B&2n z@E-ZRg|MmJBn|nB*rZ)FeC?}b5`V#VZ#SKaiFp@HU)~&Gc&L;F)*`HGs>E{yV^P!J5o`@ z{w&GD)<(?0$%L3njE9AZnS+UwiJ6&+otce=mWhRuiHQ;@CueK?&qS0R4D9SojENZ~ z46GbYU>V;ki>ot8I9pj68rayFI1p1Qn_D;%1OI;NLr1J?;@}9ZnwS-+6*D_G3kN+5 z1N)!U1d0Qj_Qt}+gczt3E2Ef+p@o4BHSv2p11EDw69ZzGUvqOXFf%Yy!wLuxo7foJ z8d}1#v$FpFYy4|x8ryH7Us$=Be+&J>%*Mg~ue#E{sxL+_av*!(sGZTv`CER&(G6tl z$e9NfcciYS2PGd4tl4=jVKrE_rTr{G{?*JtWum;^I+HJ6I+HboY$Og|30V=_lp>Lx zo49k!p`%MG1B||m)*mHP8Lo<*GNA#M2ASYo6M|$$+0KX+<(3h=h2S37 z_xi3JG{_H`2{a>+vnGLZ@O!n~rEf!#pn#hP;iBH*^u~6zx9@%3%Gc>Zr^0W^F*l2^ zUz{~Fma%37eHUx(Z!Fp@OKMcK0dk&ojYU}J^DSRSN^Z}e)8=y}`QyW$FhC+YNY0>R zL*talZF{UGVXiB5hXmCkwzs!qv;EB>b8tdU*+7jAj*j6&I;u98@H^2&Up{JbEV^Y& zK#K~2fgpg_7J*0P(Jd#P3F3_Hl9|_^CJ)CJ2gPEFXhK`OL&Tg{_f;!+7_MH4jQ4D_ zE^*dw$IS*W#?Nzz9WZzyFz5B=&4>S*ak^l_EB;!o!>g*_qx_>>n(rZ!s43zEm((V4 zRJR0g<&7jCHCcnZASJiqrrvhkXoFb(rITK(UP$-QBfoWFdAaw3?aZf9UBHp>En&2XY@ERK!tgGC|QVtpAAS8#2)5b zNDyjpU;I{*pzVUN=B|xppEj+YUXUlsVh+1CHHBRw!|!XtsZOWgM{NgQd*Q5mQ;t9s!kf@8BazK<|uCZzpUR24Rd zDl~^Ud;+>ddp=hkqcTm|<6T|*)u~RafPxM`L%C(nl)*jOi*A9Stf5JVMZ3PFqJKK9 z15Lkl5r{~Wm}LINX=??edP87vm zXh2o%fdMz6VW%Xj7dehG2&*KM<5X&+JzXJE)kHRDPXGkDx=?jLs7s_ip#PI}nN#d_ zrJHfP{s#2xXu4{@QPNvF2TR-t&xfQP_^P!L=#xnNYClI(E=q^VuW@ephE@3PYisq; zJ`sG?e&0#di7qC;cE)?E^Hu9Hy#enQBh=_D|7JiU&BN#phlY5`=&fbLSy2+Vh6C+x-?f?@M3z4Aa`T z5^yHLE9Rb&b%3Mx$-}D*Jp$~g3p3OnzTuxRG zRs~<2re&amz8iZubNuLstaaLWo%`*bSxHC~p|bgPr0M9bL$~UR3*GX)diFXiu0ZaO z!{!5=mgl4qJHj;=hlSIfRO-&=NtRyyyYxpE+uhRp3m__gIN&n>ZovIHQm8AM zn8Gqj+Zda;5o<9Kv$Jxt=)f{6S$LTI!mx~L#9GY6ti;T~R7G1`CtxbakIfs!ADK*T ze+c~;et!HbMy$ohCCW`|fHl1_ zu`vUV^2{u3%s-!M_s@5H2$o%2HXej`U%FGfuUvxny?5kKTUYkGuU0&p)yY0KR2i~K zh$gDc1m~1(j0Q+BzccO;lgxepE&N>!$}HsbQ8k^*l#0FJ=&9f+0RLo&`^>wYD#URu zIx;fyad)r3e^1KFcz*@O*Mp6R<#{Jeu$L(uAn$pkkiZm7Det+ZVE+a&E5~l!0?C^T zLMg)qV1eYtg)k}EO__O6`yi0+pDLfWQ|l>^9yBkXc2e6ckRI5$UVEWgxO~3OwG$Qn z=D^Bn!J6nb)2hWoy31e)T&10pvDGhB`M7s$Tt)g_?H*Y-vW_yoH)q1LXRVJa=WkMY8uT=1f%d5WW~-EgosssC%#f z=%(FiL7d2@r@&5=6Ih18QY5{6+EMMLz*4xieA-5>qrg%$K`xo&Nc(1O9+Io!>|Xzp z;?>Q_y&dN@7d_92nO6hWLnRTE9dd{rwxk`p?Iw2gCb;|tx;)u^-nd%Ch=kK~4lAKf z&R&iLfS8AC{9Od1nNxZ$hz&qOVn@tC0#AH%*}=utkT&Q0s)&<(u5M1O?gmEYro5H$ z(PgdzMm`q%-I$!xVLqP{HB*r8Y z0V@+)4HKRt6V_%*2>6Z>2&N$lrV-3XL!6IB5UPe4Gy3!^T|8v~NUNULR(+UOy&P5m z#G@XDqdvl;UV$S32!0OUaM!v-qDCT#fzZuusp z%?75;CgRBk;mIZl;RXufCQRlAPUa>AQ1_t>PS=$scgNk~{}l8P(sr#g>)ls&+S?VO*(==?VXR=ydx_nb7-56=5}qdTt1Ij49=}O2Tr#0J5U66a)#z2j#y8Hs!Im z!lDoe7;MT+x&|IrTS8-W;ds0H(MN-JLHbTbx^9QEF3Yk` z&6XhNxerNIagsz~0@EH=LQcLu{aJPTv~>o&F8Y)%21FbH3B~=rnqN9N2)@|W9pWam zyrHkvmd*?6Q%$ZL9>5Nt(hk?m4pTb4+g-auT)WFeyHiEG+j*%&j<2hDuHVy#{l2N* z4$svN>&A`<30dc6bd8PggSR&-r5!#1IpcxSE!@m48p|zA?XCPg79(w8S$eg@zyP&u zK3!6^@_-UE0%3h}l9H;t2DeGf_@E;)KTEQLhJeXk;B zt91uFsDA|{l9~%6s+_XWYSMvlD%xLRkGH^E{0d`SO-v8vUxeI7q#lVjXY%_d(0#Z( z#@IHY`ybHG$8izY9`&5balf#q)qV<@&*(7r@86 z+X~5j;Q?c1hO1$Qa%4taEzgqa;M_07)F;6-VE(92{n3D1Ri8rDfc@V!#0;+i5(3w$ zH3Th&62cI6_=wdTcveA;n?%sK`-QlD0JsGdx&`mL z`6s(Uz&NEZM}zaA?n!-S4d!|+`hft&MQjemKoXNc!^wC&PW)F0%j}I4r}Q|H_^b5a z1bzc%1xn3BU8}9+RRSIGVyC=`I2lO_f+Q#9iFeY!2g&N(_-Gj((0%AUve;-Lo^kKq z^11#jZ?>kxGqK)7g1Knx(6(T6o}B&A0nHypmSdbb~AsjAUG8cWkf-Nv3d z1+jE4p1Ax1xjuBK_>*yk*W1Gb>_I83APemw%}~52*NQ7=GhchRLYA&mm(S8xfo3*% z9phBY%2t6B4z^!|&m9J-`|YLZ{@E-cEcMVY^${%f@-G3v_Hm@20kuVm=BG;oZ&NjnBSSTBfKd zEiNzcP@Z)54bNozsLbzCqOSOT55`b>nnER6Sx3gSQD)e61(8~(zAMhk>M%OD0v|ko{`x+irnoe(JibZh;2*%L+r2mV z&uJ0B_)Vwsn{KC}jyFSHRzscIkw$oRMo>8zHa&)L3}Si?gs3So5bB}g>X8)c;U?<- zdjRNC>jrPKfFB&ke~S-kfi<4~N2(JRHdrRnF}|hr714T%ZU${q4`@FukZE|yW#QJm_Ult zeW0E?bfa^*bV_1C9n}2z(>wR1Xqb1QHd>Ei9T3~Pg{vvT8aC<64TazV8#fH!w`+b2(HfX$8YLl zh~;90bZtmpH&^KI)-CgYbg%qnn~j4zb%#?GVVnGW;e1WD}S9w$$7 zX_L@Xfx8mQvkK|K{uPuxbcj8;<9r)ZVQDoY+!IY0>x!CXew9A{Px;y1*j57lV{HYIt*@dYxUXe|C?*f-m@ zc{!*VFh^O*!CVkoLgX^{K_ zz|fgL?K31=!1eZ!&L>ZbSC&zv{-`_GT5~0yXXPI_`W`dWviPHBZF?k=TREFd zT2BPi0T9|f6xw|l+P&;zzIXq~QP%U;d9TEO%Qc%U_e=gQIFSB; zS~!c}^hs3BanBM_hra1!MznixOuH+tV!2Es&2~v*X?4*+4oyS}UCF--Q9TlzE#cMQ zjT8i55!~dC*$bi*ROp3A5#EX?7ZpT(;;>vOvdI14gLinr6*z6Cx1ZME{}aFr&Z>IP z@FzEwSZ$ZNmDBF2M6-1M>!eT0mWsuH3=6yhmw($&&mKT+S7ws*C}VUhb|lX?eW(Np zTl2p7aBz4O6L@F;X_4}$8HajAeI?>y6$oAxOj;F$Ru#fx6&P<7Tyxd`d~Oj6+8E*4 z5Ci2FD(M#aXI~bRYpuxQlC@*~@G^(%--0KmsS#rB;*5<}v-NS^*PoD9Z@p6IzPMxk z{~H|dRgQ*5W#0Smb;x|C_pbwAKsA^BpMd8#`KLElSM!uPH6(w|?johXll1S5VgbqJ zx*9PEbD?r`k@R!n)^pJWb74AjQT%fe-g7ZvT%n>|k$+zI+r$1?_s8{c1I>h3$diTD z)k@G_rQV+mhBn}jR`!I{_|{~{OwH)*sl{AC5~zCkhEbx;sB zY=I?v{gNo`6y-t5aj)T-LpL?0q;yK5+lesH;Y$!|O8n{9ivfNC51c)d&&mF}kpBh< zU$MBg!e6nB4GJ-WwZhl+NUSysHu;FfSmb2Q6K_d zR&j#QV~HIQq5&)ZFGC;|hAa{tf8|xjL}2Ar*$Zy~wgfYbQRok^`43m6ss3wI1CAa2 z-^@`DDR7-a*ULf&fGz8xDeJ>6>(x>Z`99|tHTPk7F5t^t@bR2~#$3?yTwv>5$ge&s zu7E!|#8C_Xo=<$K%X+C(XQ|tpuS1lt%ZTsiV&sSSX}DF)ab|2sG!4mGp!V*s;i@?J zo!p{fF41Ggp3=U4QD8P=Fc0>@|1p^Lf9O57Z|~wiNp1u@Y2GyGoe|!Yt^j+28fQyl z4`V>gL(-XjJHEilY!Be6>(*^~kpAG%D0lVpbrXgT6eB`WMO4(x3I+vn`8w~4yYb)m zRsEHB>MspHN~`;Tgxg@^jcqWejQfkKn!qdYJ1jNKZU4%^!)VwaPC^@8hF$&N0g!50!`zq6tXxONh%&nB>iz*z+P?w`jXA#e zmu15>9HR?=0ts8&t==`=U>4mNpB1zqa{n^$YSexiV%ooiJ)TV+7^h$TsA|hLY@1JW zdz5W#_ntKSC3&Us<#bKedjmOmCg&4bwd2zgYIr)oEbl3l6Y0#xlt)ZEKLIn*M*N!lcVKf>CsVyAVOu~R0lbY6h<_~hw;6#cHe^kP zd*Ru%!R6Th65Jm)f$V9vzkfO*vxUW=PY8{A7Iwlo{fiQ8*iuQGPH*eULJiP?8~t3b zyJf*zq%4=-7xW#%838vwP@Zc3Ee9T%2iBMWz!Zsw8pwB#TXQuGS-hqC!QExKX56;Ik*l*-b{$*ERm5gU(vr78>X`CwDoGK?fG?)}O z++0k&Wm7MbIQZS0F6@nzNa~bui|CM3SC({ZO$ zgw&vK*U)iTd=qo3)DuS0#bT|`3ymk038$jY`2`HA!m{%M;}Kt9LzUZMZ+ zqjxAD8QiVz(eOZBqE-Fd`1Q(GEtcA(-+>^}A6R^u32=UGZfx3X0@s`S@*) z%IM3Gb_1%Jb_Q$t98UYxCwslPbHneEA-Fh5JS^o8I57mQx+|Gg?tNhEks&=ejDe%K zZKRvLk&#&6%)AuR&zJ4{JkgB37SqoWocih~a8{MgygW0`qg?vxmvC0S%)Ib2&k@}F z>UVHf^US=OGtZ+u`yOnK`DjzmAC3E1lW;~gO!+)h&-qOISU=&6TAT72kGh=*ZWg}6 z5k%^DqsuxE42Zn(8E{LUh|F3yePrX@+-<@UTpzyGu%%iMeY{ZXtME5z3DWMfr7>;!qTPo#w5{Ed4wvEx;>e)SAmd|VH8G+f zG3g;$5_yw9cx$iLcPPf9%N&2+BHkw}&7!Lue_j(kMB7igySif>mmn^W$*r;VUxyr5 z_b4Cj&2*1Z|8tM4{@LxbXz8Oq}L)6TLe}<*jxjd{G3Bv?|Tuis`tDvVXf@cK`(Arr69u>5l-t64$@8BzCV*zSGM?SlgX&c>pPf+pGd^bd z-#jLFU@5?PeVgh?K7sR^PljlF=Vo7O{fYgag9&+nM6 z10}jm=zvm#Y&$VoJ8Tz>eQ4|OefrYD`RK8R=gSy-3fZz=0#|Y5)r~u;7Q?G=JWFll#iv^ zXM2*f$yrb$e$3kx(Tl1WD4(4dNS_(;Tkgxp$LS70JIxuK9{O!>JHlgp#r0tHZACit z<3WB0<%R#t-Kqah;9k6>tsj2tp<~10(|22#m-U2Mu=evH|5Yb)O0VVB=Yo#H^slS- zs93D?=TpymP*1gZ_dJPKylgyA`0ms7R0dg%HnWD7Tj{(2v_m9eUo5YZcyK zUs}1x7Kv^JH*byCY_$j4Gq7%(2mRaYuLQk3*N8m*eeaVy1RsW89C*(v+KFyC^=?*u zNzRB~_|LKiB@K35iG0)!(Zm`H*-G%oCNEu#>T zLZgruKD!=q{`*<~dO=LCYoc)!2cze{sJk@xsw%YgxtNT{mX2cNojHrFwKp_&F0{`i zv5%u2cg45I9YI;}+Fq_}@q_loL=BJ4{-q<+?7OG;P+**0{YIRk#76bnkBjZt4ZJv6 zuuHU%C+)On#L6t!Oxm7(giq>g=Zp}Uw|S$H7kt{A0No?#7I^8X*871DULu%0tLJ@^ zp{h|kWWh`QwHo}WQQhzt0=Hy$0RZ>yQdP%p2CUa}GGyCY1lZ~Gcn6jb*O?xE<;{n~ z#W}2?(uKL?H(`hg5A~cUt1EPoQQrF*XGCp7BzM(z51iNA(bH-}NG+V&mwjy)oM5My zYHbTUdNtH%U!%vMB5yjU{VTMvZ|^7lmsX+LI#C9A)n4dvZeJ(wX?0oe&egX;qd$h& zBB_N|czdiRXg(k$JQcj(vsD3Y2ZpnvS)z-28c_q+T<>!|^2NEknSt_ICAkxo zEIPh$!A}=NbTu;aytEc6?{;zq0z6r`H?^K3th4au2yKAl zcvo-CDKI!@+oJf~Cj2pi+P7Pumun%e%JV>j%iC-_ohTxh8~yX#^#MY`Ix0K9rKnzo z7D~Gb93G4l)Qv(>#&g#7XTHp<JOrJ_DYhTs}|>PXb~BWN9j$-asp`OR5^ zY`k?{dY?-;(E1gar8c4lG@7tgg!=dAo-ep=$mQhcA?qJ$pQ)Az07M~@ROgh@ovf03 z?hPjZy$`&#w}W>4G3_<9nuDSvoP-W-^T-i}T`DZk7R_K;HkqT)_0H#`Wsm}gt^T7c z5q5>>FZl2CyD^xb-AQ6^cSBG&_14N-7h(0VZB92&VP>Chv4Q{s=Zx1kZRFYr8+r$Z z-tG;e5oYP_6|udZ-P07$Nen}3^T*!nm<-R;>oQorFNIKTed4zZv;Ih2qVslmcrW@5 ztKq&GlWotOIT33p7ioJa7a!Fh+k^c!SCMVrZmeRT;BUCUY@~I4QGQHoCj*W^D7Q21 za9&z&YsfDyj=mw(;f|oI|KB9@gdg7*%`<E$^UYXr*8eY_uF5)%l{m9 zRQCQ~us`PK#{>MWv#E6_|gCKkv!ja-;ez*?5-c>%iHRd zY?QjMAJQ%Oqkg#8eUDsT?qmC>e@vIL)ZNMR7Bm3XQjpqNwepDW< zyL0nz>xTup|GKMwE-h#l`u}uxWBkvhFEW1gz3P3x;@+E%qxOP%<&XD^y^DC{>;87~ z!+Ey%jc`{re{5v)%iV_TcQih(G$fE@oCIPj;`@1|AUi|L_Ne|Gn%#^B2t*t(@@x z*mtS?MgR9VzPG>k!|#dj7yCsYI)3|B9I>^(bJox9XSVV`k;58li9Cfq$3%RNn)n>& zIdeqk%rTiWM=hQyHvWugXpLw&8qu^gqU~u! zc<<=Z-qDr4qfdHAXY`I<>m69fwQH<+>hJH4IOi{Im-}PO!^>^MlX3X*jg#*`O(_1? z@=%?}KJf?VVSkCbLm!0O<{SK>mXLJvWP5F!X|w*Y?soqtzr7^M7;~dVaYelements list properties -

  • Alternative definition of addZ +
  • comparing intervals
  • -
  • Alternative definition of removeZ +
  • Alternative definition of addZ
  • Auxiliary Lemmata about Invariant @@ -142,81 +142,93 @@
  • Membership specification
  • -
  • add specification +
  • insert if length not 0
  • -
  • remove specification +
  • Merging intervals
  • -
  • empty specification +
  • add specification
  • -
  • is_empty specification +
  • empty specification
  • -
  • singleton specification +
  • is_empty specification
  • -
  • add_list specification +
  • singleton specification
  • -
  • remove_list specification +
  • add_list specification
  • union specification
  • -
  • filter specification +
  • inter specification
  • -
  • inter specification +
  • diff specification
  • -
  • diff specification +
  • remove specification
  • -
  • subset specification +
  • remove_list specification
  • -
  • elements and elementsZ specification +
  • subset specification
  • -
  • equal specification +
  • elements and elementsZ specification
  • -
  • choose specification +
  • equal specification
  • -
  • fold specification +
  • compare
  • -
  • cardinal specification +
  • elements is sorted
  • -
  • for_all specification +
  • choose specification
  • -
  • exists specification +
  • fold specification
  • -
  • partition specification +
  • cardinal specification + +
  • +
  • for_all specification + +
  • +
  • exists specification + +
  • +
  • filter specification + +
  • +
  • partition specification
  • -
  • Main Module +
  • Main Module
  • -
  • Instantiations +
  • Instantiations @@ -228,18 +240,18 @@

    Library MSetListWithDups

  • -

    Fold with abort for sets

    +

    Fold with abort for sets

    @@ -38,18 +38,18 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Require Export MSetInterface.
    -Require Import ssreflect.
    +Require Export MSetInterface.
    +Require Import mathcomp.ssreflect.ssreflect.
    Require Import MSetWithDups.
    -Require Import Int.
    -Require Import MSetGenTree MSetAVL MSetRBT.
    -Require Import MSetList MSetWeakList.
    +Require Import Int.
    +Require Import MSetGenTree MSetAVL MSetRBT.
    +Require Import MSetList MSetWeakList.

    -

    Fold With Abort Operations

    +

    Fold With Abort Operations

    @@ -82,25 +82,25 @@

    Library MSetsExtra.MSetFoldWithAbort

    :=
    -    (elt → A → A) →
    +    (elt → A → A) →
    f
    -    (elt → A → bool) →
    +    (elt → A → bool) →
    f_abort
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -110,8 +110,8 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortSpecPred {elt t : Type}
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbort : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    @@ -123,7 +123,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i : A)
    +      (i i' : A)
          
    @@ -131,7 +131,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) ( : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -139,7 +139,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_abort : elt → A → bool)
    +      (f_abort : elt → A → bool)
          
    @@ -154,7 +154,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -165,39 +165,39 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →
          
        
    -f is for the elements of s compatible with the equivalence relation P +f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_abort is OK, i.e. all other elements can be skipped without +f_abort is OK, i.e. all other elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_abort e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → e2 ≠ e1 →
    -                        P st (f e2 st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_abort e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → e2 ≠ e1 →
    +                        P st (f e2 st'))) →

        
    @@ -205,7 +205,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i →
    +    P i i' →

        
    @@ -213,7 +213,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -    P (foldWithAbort f f_abort s i) (fold s ).
    +    P (foldWithAbort f f_abort s i) (fold f' s i').

    @@ -248,25 +248,25 @@

    Library MSetsExtra.MSetFoldWithAbort

    :=
    -    (elt → A → A) →
    +    (elt → A → A) →
    f
    -    (elt → A → bool) →
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -276,9 +276,9 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortGtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortGt : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    @@ -290,7 +290,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i : A)
    +      (i i' : A)
          
    @@ -298,7 +298,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) ( : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -306,7 +306,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_gt : elt → A → bool)
    +      (f_gt : elt → A → bool)
          
    @@ -321,7 +321,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -333,39 +333,39 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    -f is for the elements of s compatible with the equivalence relation P +f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_abort is OK, i.e. all other elements can be skipped without +f_abort is OK, i.e. all other elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -373,7 +373,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i →
    +    P i i' →

        
    @@ -381,7 +381,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -    P (foldWithAbortGt f f_gt s i) (fold s ).
    +    P (foldWithAbortGt f f_gt s i) (fold f' s i').

    @@ -424,31 +424,31 @@

    Library MSetsExtra.MSetFoldWithAbort

    :=
    -    (elt → A → bool) →
    +    (elt → A → bool) →
    f_lt
    -    (elt → A → A) →
    +    (elt → A → A) →
    f
    -    (elt → A → bool) →
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -458,9 +458,9 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortGtLtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortGtLt : ∀ {A : Type}, foldWithAbortGtLtType elt t A) : Prop :=

        âˆ€
    @@ -472,7 +472,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i : A)
    +      (i i' : A)
          
    @@ -480,7 +480,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) ( : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -488,7 +488,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → A → bool)
    +      (f_lt f_gt : elt → A → bool)
          
    @@ -503,7 +503,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -515,52 +515,52 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    -f is for the elements of s compatible with the equivalence relation P +f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_lt is OK, i.e. smaller elements can be skipped without +f_lt is OK, i.e. smaller elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 st'))) →

        
    -f_gt is OK, i.e. greater elements can be skipped without +f_gt is OK, i.e. greater elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -568,7 +568,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i →
    +    P i i' →

        
    @@ -576,7 +576,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation @@ -584,14 +584,14 @@

    Library MSetsExtra.MSetFoldWithAbort

    We are interested in folding with abort mainly for runtime performance reasons of extracted code. The argument functions - f_lt, f_gt and f of foldWithAbortGtLt often share a large, + f_lt, f_gt and f of foldWithAbortGtLt often share a large, comparably expensive part of their computation.
    In order to further improve runtime performance, therefore another - version foldWithAbortPrecompute f_precompute f_lt f f_gt that - uses an extra function f_precompute to allows to compute the + version foldWithAbortPrecompute f_precompute f_lt f f_gt that + uses an extra function f_precompute to allows to compute the commonly used parts of these functions only once. This leads to the following definitions.
    @@ -625,37 +625,37 @@

    Library MSetsExtra.MSetFoldWithAbort

    :=

    -    (elt → B) →
    +    (elt → B) →
    f_precompute
    -    (elt → B → A → bool) →
    +    (elt → B → A → bool) →
    f_lt
    -    (elt → B → A → A) →
    +    (elt → B → A → A) →
    f
    -    (elt → B → A → bool) →
    +    (elt → B → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -668,13 +668,13 @@

    Library MSetsExtra.MSetFoldWithAbort

    The specification is similar to the one without precompute, - but uses f_precompute so avoid doing computations multiple times + but uses f_precompute so avoid doing computations multiple times
    Definition foldWithAbortPrecomputeSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortPrecompute : ∀ {A B : Type}, foldWithAbortPrecomputeType elt t A B) : Prop :=

        âˆ€
    @@ -686,7 +686,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i : A)
    +      (i i' : A)
          
    @@ -694,7 +694,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_precompute : elt → B)
    +      (f_precompute : elt → B)
          
    @@ -702,7 +702,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → B → A → A) ( : elt → A → A)
    +      (f : elt → B → A → A) (f' : elt → A → A)
          
    @@ -710,7 +710,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → B → A → bool)
    +      (f_lt f_gt : elt → B → A → bool)
          
    @@ -725,7 +725,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -737,52 +737,52 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    -f is for the elements of s compatible with the equivalence relation P +f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st´ e, In e s → P st st´ → P (f e (f_precompute e) st) (f e (f_precompute e) st´)) →
    +    (∀ st st' e, In e s → P st st' → P (f e (f_precompute e) st) (f e (f_precompute e) st')) →

        
    -f and agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e (f_precompute e) st) ( e st))) →
    +    (∀ e st, In e s → (P (f e (f_precompute e) st) (f' e st))) →

        
    -f_lt is OK, i.e. smaller elements can be skipped without +f_lt is OK, i.e. smaller elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 (f_precompute e1) st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 (f_precompute e2) st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    -f_gt is OK, i.e. greater elements can be skipped without +f_gt is OK, i.e. greater elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 (f_precompute e1) st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 (f_precompute e2) st´))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    @@ -790,7 +790,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i →
    +    P i i' →

        
    @@ -798,13 +798,13 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -

    Module Types

    +

    Module Types

    @@ -815,7 +815,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).
    +Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).

      Parameter foldWithAbortPrecompute : ∀ {A B : Type},
    @@ -832,7 +832,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Derived operations

    +

    Derived operations

    @@ -844,7 +844,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
    +Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
                               (FT : HasFoldWithAbort E C).

    @@ -855,72 +855,43 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    First lets define the other folding with abort variants

    +

    First lets define the other folding with abort variants


    -  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
    +  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

      Lemma foldWithAbortGtLtSpec :
         foldWithAbortGtLtSpecPred E.lt In (@fold) (@foldWithAbortGtLt).
    -  Proof.
    -    rewrite /foldWithAbortGtLt /foldWithAbortGtLtSpecPred.
    -    intros A i f f_lt f_gt s P.
    -    move ⇒ H_f_compat H_ff´ H_lt H_gt H_ii´.
    -    apply foldWithAbortPrecomputeSpec ⇒ //.
    -  Qed.

    -  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
    +  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

      Lemma foldWithAbortGtSpec :
         foldWithAbortGtSpecPred E.lt In (@fold) (@foldWithAbortGt).
    -  Proof.
    -    rewrite /foldWithAbortGt /foldWithAbortGtSpecPred.
    -    intros A i f f_gt s P.
    -    move ⇒ H_f_compat H_ff´ H_gt H_ii´.
    -    apply foldWithAbortPrecomputeSpec ⇒ //.
    -  Qed.

    -  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
    +  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_abort e st).

      Lemma foldWithAbortSpec :
         foldWithAbortSpecPred In (@fold) (@foldWithAbort).
    -  Proof.
    -    rewrite /foldWithAbort /foldWithAbortGtSpecPred.
    -    intros A i f f_abort s P.
    -    move ⇒ H_equiv_P H_f_compat H_ff´ H_abort H_ii´.
    -    have H_lt_neq: (∀ e1 e2, E.lt e1 e2 → e1 ≠ e2). {
    -      move ⇒ e1 e2 H_lt H_e12_eq.
    -      rewrite H_e12_eq in H_lt.
    -      have : ( Irreflexive E.lt) by apply StrictOrder_Irreflexive.
    -      rewrite /Irreflexive /Reflexive /complement ⇒ H.
    -      eapply H, H_lt.
    -    }
    -    apply foldWithAbortPrecomputeSpec ⇒ //; (
    -      move ⇒ e1 st H_in_e1 H_abort_e1 st´ e2 H_P H_in_e2 /H_lt_neq H_lt;
    -      apply (H_abort e1 st H_in_e1 H_abort_e1 st´ e2 H_P H_in_e2);
    -      by auto
    -    ).
    -  Qed.

    -

    Specialisations for equality

    +

    Specialisations for equality

    @@ -928,179 +899,115 @@

    Library MSetsExtra.MSetFoldWithAbort

    of an arbitrary equivalence relation on results.
    -  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    -      (f : elt → B → A → A) ( : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),
    +  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    +      (f : elt → B → A → A) (f' : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),

    -      (∀ e st, In e s → (f e (f_pre e) st = e st)) →
    +      (∀ e st, In e s → (f e (f_pre e) st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 (f_pre e2) st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 (f_pre e2) st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 (f_pre e2) st = st))) →
    -
    -      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s H_f´ H_lt H_gt.
    - -
    -     eapply (foldWithAbortPrecomputeSpec A B i i f_pre f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_smaller st´ e2 <-.
    -       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    -       intuition.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - +      (∀ e1 st,
    +          In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 (f_pre e2) st = st))) →
    +
    +      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold f' s i).
    +
      Lemma foldWithAbortGtLtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    -
    -      (foldWithAbortGtLt f_lt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A i f f_lt f_gt s H_f´ H_lt H_gt.
    - -
    -     eapply (foldWithAbortGtLtSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_smaller st´ e2 <-.
    -       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    -       intuition.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →
    +
    +      (foldWithAbortGtLt f_lt f f_gt s i) = (fold f' s i).
    +
      Lemma foldWithAbortGtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_gt : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbortGt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A i f f_gt s H_f´ H_gt.
    - -
    -     eapply (foldWithAbortGtSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - +      (foldWithAbortGt f f_gt s i) = (fold f' s i).
    +
      Lemma foldWithAbortSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_abort : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_abort : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_abort e1 st = true →
    -          (∀ e2, In e2 s → e1 ≠ e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_abort e1 st = true →
    +          (∀ e2, In e2 s → e1 ≠ e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbort f f_abort s i) = (fold s i).
    -  Proof.
    -     intros A i f f_abort s H_f´ H_abort.
    - -
    -     eapply (foldWithAbortSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_abort st´ e2 <-.
    -       move : (H_abort e1 st H_e1_in H_do_abort e2).
    -       intuition.
    -     }
    -  Qed.
    - +      (foldWithAbort f f_abort s i) = (fold f' s i).
    +
    -

    FoldWithAbortSpecArgs

    +

    FoldWithAbortSpecArgs

    While folding, we are often interested in skipping elements that do not - satisfy a certain property P. This needs expressing in terms of + satisfy a certain property P. This needs expressing in terms of skips of smaller of larger elements in order to be done efficiently by our folding functions. Formally, this leads to the definition of foldWithAbortSpecForPred.
    - Given a FoldWithAbortSpecArg for a predicate P and a - set s, many operations can be implemented efficiently. Below we will provide - efficient versions of filter, choose, ∃, ∀ and more. + Given a FoldWithAbortSpecArg for a predicate P and a + set s, many operations can be implemented efficiently. Below we will provide + efficient versions of filter, choose, ∃, ∀ and more.
      Record FoldWithAbortSpecArg {B} := {
    -     fwasa_f_pre : (elt → B);
    +     fwasa_f_pre : (elt → B);
    The precompute function
    -     fwasa_f_lt : (elt → B → bool);
    +     fwasa_f_lt : (elt → B → bool);
    f_lt without state argument
    -     fwasa_f_gt : (elt → B → bool);
    +     fwasa_f_gt : (elt → B → bool);
    f_gt without state argument
    -     fwasa_P´ : (elt → B → bool)
    +     fwasa_P' : (elt → B → bool)
    the predicate P @@ -1112,20 +1019,20 @@

    Library MSetsExtra.MSetFoldWithAbort

    -foldWithAbortSpecForPred s P fwasa holds, if - the argument fwasa fits the predicate P for set s. +foldWithAbortSpecForPred s P fwasa holds, if + the argument fwasa fits the predicate P for set s.
      Definition foldWithAbortSpecArgsForPred {A : Type}
    -     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=
    +     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=

         
    -the predicate coincides for s and the given precomputation with P +the predicate P' coincides for s and the given precomputation with P
    -     (∀ e, In e s → (fwasa_P´ fwasa e (fwasa_f_pre fwasa e) = P e)) ∧
    +     (∀ e, In e s → (fwasa_P' fwasa e (fwasa_f_pre fwasa e) = P e)) ∧

         
    @@ -1134,9 +1041,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧
    +     (∀ e1,
    +          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧

         
    @@ -1145,9 +1052,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).
    +     (∀ e1,
    +          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).

    @@ -1155,237 +1062,69 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Filter with abort

    +

    Filter with abort

      Definition filter_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
         @foldWithAbortPrecompute t B (fwasa_f_pre fwasa) (fun e p _ ⇒ fwasa_f_lt fwasa e p)
    -       (fun e e_pre s ⇒ if fwasa_P´ fwasa e e_pre then add e s else s)
    +       (fun e e_pre s ⇒ if fwasa_P' fwasa e e_pre then add e s else s)
           (fun e p _ ⇒ fwasa_f_gt fwasa e p) s empty.

      Lemma filter_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
        Equal (filter_with_abort fwasa s)
              (filter P s).
    -  Proof.
    -    unfold foldWithAbortSpecArgsForPred.
    -    move ⇒ [] f_pre f_lt f_gt P s /=.
    -    move ⇒ [H_f´] [H_lt] H_gt H_proper.
    -    rewrite /filter_with_abort /=.
    - -
    -    have → : (foldWithAbortPrecompute f_pre (fun e p _ ⇒ f_lt e p)
    -     (fun (e : elt) (e_pre : B) (s0 : t) ⇒
    -      if e e_pre then add e s0 else s0) (fun e p _ ⇒ f_gt e p) s empty =
    -     (fold (fun e s0 ⇒ if P e then add e s0 else s0) s empty)). {
    -      apply foldWithAbortPrecomputeSpec_Equal. {
    -        intros e st H_e_in.
    -        rewrite H_f´ //.
    -      } {
    -        intros e1 st H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    -        apply (H_lt e1); eauto.
    -      } {
    -        intros e1 st H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    -        apply (H_gt e1); eauto.
    -      }
    -    }
    -
    -    rewrite /Equal ⇒ e.
    -    rewrite fold_spec.
    -    setoid_rewrite filter_spec ⇒ //.
    - -
    -    suff → : ∀ acc, In e
    -      (fold_left
    -         (flip (fun (e0 : elt) (s0 : t) ⇒ if P e0 then add e0 s0 else s0))
    -         (elements s) acc) ↔ (InA E.eq e (elements s) ∧ P e = true) ∨ (In e acc). {
    -      rewrite elements_spec1.
    -      suff : (¬In e empty) by tauto.
    -      apply empty_spec.
    -    }
    -    induction (elements s) as [| x xs IH] ⇒ acc. {
    -      rewrite /= InA_nil. tauto.
    -    } {
    -      rewrite /= /flip IH InA_cons.
    -      case_eq (P x). {
    -        rewrite add_spec.
    -        intuition.
    -        left.
    -        rewrite H0.
    -        split ⇒ //.
    -        left.
    -        apply Equivalence_Reflexive.
    -      } {
    -        intuition.
    -        contradict H2.
    -        setoid_rewrite H1.
    -        by rewrite H.
    -      }
    -    }
    -  Qed.
    - -
    -
    - -
    -

    Choose with abort

    + +
    +
    + +
    +

    Choose with abort

      Definition choose_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
         foldWithAbortPrecompute (fwasa_f_pre fwasa)
    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    -       (fun e e_pre st ⇒ match st with None ⇒
    -          if (fwasa_P´ fwasa e e_pre) then Some e else None | _ ⇒ st end)
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    +       (fun e e_pre st ⇒ match st with None ⇒
    +          if (fwasa_P' fwasa e e_pre) then Some e else None | _ ⇒ st end)

    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    -       s None.
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    +       s None.

      Lemma choose_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, In e s → P e = false)
    -       | Some e ⇒ In e s ∧ (P e = true)
    -     end).
    -  Proof.
    -    rewrite /foldWithAbortSpecArgsForPred.
    -    move ⇒ [] f_pre f_lt f_gt P s /=.
    -    move ⇒ [H_f´] [H_lt] H_gt H_proper.
    - -
    -    set fwasa := {|
    -       fwasa_f_pre := f_pre;
    -       fwasa_f_lt := f_lt;
    -       fwasa_f_gt := f_gt;
    -       fwasa_P´ := |}.
    - -
    -    suff : (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, InA E.eq e (elements s) → P e = false)
    -       | Some e ⇒ InA E.eq e (elements s) ∧ (P e = true)
    -     end). {
    -       case (choose_with_abort fwasa s). {
    -         move ⇒ e.
    -         rewrite elements_spec1 //.
    -       } {
    -         move ⇒ H e H_in.
    -         apply H.
    -         rewrite elements_spec1 //.
    -       }
    -    }
    -
    -    have → : (choose_with_abort fwasa s =
    -      (fold (fun e st ⇒
    -        match st with
    -          | None ⇒ if P e then Some e else None
    -          | _ ⇒ st end) s None)). {
    -      apply foldWithAbortPrecomputeSpec_Equal. {
    -        intros e st H_e_in.
    -        case st ⇒ //=.
    -        rewrite H_f´ //.
    -      } {
    -        move ⇒ e1 [] //= H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        case_eq (P e2) ⇒ // H_P_e2.
    -        contradict H_P_e2.
    -        apply not_true_iff_false, (H_lt e1); auto.
    -      } {
    -        move ⇒ e1 [] //= H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        case_eq (P e2) ⇒ // H_P_e2.
    -        contradict H_P_e2.
    -        apply not_true_iff_false, (H_gt e1); auto.
    -      }
    -    }
    -
    -    rewrite fold_spec /flip.
    -    induction (elements s) as [| x xs IH]. {
    -      rewrite /=.
    -      move ⇒ e /InA_nil //.
    -    } {
    -      case_eq (P x) ⇒ H_Px; rewrite /= H_Px. {
    -        have → : ∀ xs, fold_left (fun (x0 : option elt) (y : elt) ⇒
    -                    match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -                    end) xs (Some x) = Some x. {
    -          move ⇒ ys.
    -          induction ys ⇒ //.
    -        }
    -        split; last assumption.
    -        apply InA_cons_hd.
    -        apply E.eq_equiv.
    -      } {
    -        move : IH.
    -        case (fold_left
    -          (fun (x0 : option elt) (y : elt) ⇒
    -             match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -             end) xs None). {
    -
    -             move ⇒ e [H_e_in] H_Pe.
    -             split; last assumption.
    -             apply InA_cons_tl ⇒ //.
    -        } {
    -          move ⇒ H_e_nin e H_e_in.
    -          have : (InA E.eq e xs ∨ (E.eq e x)). {
    -            inversion H_e_in; tauto.
    -          }
    -          move ⇒ []. {
    -            apply H_e_nin.
    -          } {
    -            move ⇒ → //.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - -
    -
    - -
    -

    Exists and Forall with abort

    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (match (choose_with_abort fwasa s) with
    +       | None ⇒ (∀ e, In e s → P e = false)
    +       | Some e ⇒ In e s ∧ (P e = true)
    +     end).
    + +
    +
    + +
    +

    Exists and Forall with abort

      Definition exists_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
        match choose_with_abort fwasa s with
    -      | None ⇒ false
    -      | Some _ ⇒ true
    +      | None ⇒ false
    +      | Some _ ⇒ true
        end.

      Lemma exists_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (exists_with_abort fwasa s =
    -     exists_ P s).
    -  Proof.
    -    intros fwasa P s H_fwasa H_proper.
    -    apply Logic.eq_sym.
    -    rewrite /exists_with_abort.
    -    move : (choose_with_abort_spec _ _ _ H_fwasa H_proper).
    -    case (choose_with_abort fwasa s). {
    -      move ⇒ e [H_e_in] H_Pe.
    -      rewrite exists_spec /Exists.
    -      by ∃ e.
    -    } {
    -      move ⇒ H_not_ex.
    -      apply not_true_iff_false.
    -      rewrite exists_spec /Exists.
    -      move ⇒ [e] [H_in] H_pe.
    -      move : (H_not_ex e H_in).
    -      rewrite H_pe //.
    -    }
    -  Qed.
    - +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (exists_with_abort fwasa s =
    +     exists_ P s).
    +
    @@ -1394,38 +1133,15 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition forall_with_abort {B} fwasa s :=
    -     negb (@exists_with_abort B fwasa s).
    +     negb (@exists_with_abort B fwasa s).

      Lemma forall_with_abort_spec {B} : ∀ fwasa s P,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (forall_with_abort fwasa s =
    -     for_all (fun e ⇒ negb (P e)) s).
    -  Proof.
    -    intros fwasa s P H_ok H_proper.
    -    rewrite /forall_with_abort exists_with_abort_spec; auto.
    - -
    -    rewrite eq_iff_eq_true negb_true_iff -not_true_iff_false.
    -    rewrite exists_spec.
    -    setoid_rewrite for_all_spec; last solve_proper.
    - -
    -    rewrite /Exists /For_all.
    -    split. {
    -      move ⇒ H_pre x H_x_in.
    -      rewrite negb_true_iff -not_true_iff_false ⇒ H_Px.
    -      apply H_pre.
    -      by ∃ x.
    -    } {
    -      move ⇒ H_pre [x] [H_x_in] H_P_x.
    -      move : (H_pre x H_x_in).
    -      rewrite H_P_x.
    -      done.
    -    }
    -  Qed.
    - +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (forall_with_abort fwasa s =
    +     for_all (fun e ⇒ negb (P e)) s).
    +
    End HasFoldWithAbortOps.
    @@ -1433,29 +1149,29 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Modules Types For Sets with Fold with Abort

    +

    Modules Types For Sets with Fold with Abort

    Module Type WSetsWithDupsFoldA.
    -  Declare Module E : OrderedType.
    +  Declare Module E : OrderedType.
      Include WSetsOnWithDups E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithDupsFoldA.

    -Module Type WSetsWithFoldA <: WSets.
    -  Declare Module E : OrderedType.
    -  Include WSetsOn E.
    +Module Type WSetsWithFoldA <: WSets.
    +  Declare Module E : OrderedType.
    +  Include WSetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithFoldA.

    -Module Type SetsWithFoldA <: Sets.
    -  Declare Module E : OrderedType.
    -  Include SetsOn E.
    +Module Type SetsWithFoldA <: Sets.
    +  Declare Module E : OrderedType.
    +  Include SetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End SetsWithFoldA.
    @@ -1464,21 +1180,21 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Implementations

    +

    Implementations

    -

    GenTree implementation

    +

    GenTree implementation

    Finally, provide such a fold with abort operation for generic trees.
    -Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    -  (Import Raw:Ops E I)
    -  (M : MSetGenTree.Props E I Raw).
    +Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    +  (Import Raw:Ops E I)
    +  (M : MSetGenTree.Props E I Raw).

    -  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
    +  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
        match t with
        | Raw.Leaf ⇒ base
        | Raw.Node _ l x r ⇒
    @@ -1490,225 +1206,54 @@

    Library MSetsExtra.MSetFoldWithAbort

        end.

    -  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i : A) (f_pre : E.t → B)
    -      (f : E.t → B → A → A) ( : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    -      (P : A → A → Prop),
    +  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i i' : A) (f_pre : E.t → B)
    +      (f : E.t → B → A → A) (f' : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    +      (P : A → A → Prop),

    -      (M.bst s) →
    -      Equivalence P →
    -      (∀ st st´ e, M.In e s → P st st´ → P (f e (f_pre e) st) (f e (f_pre e) st´)) →
    -      (∀ e st, M.In e s → P (f e (f_pre e) st) ( e st)) →
    +      (M.bst s) →
    +      Equivalence P →
    +      (∀ st st' e, M.In e s → P st st' → P (f e (f_pre e) st) (f e (f_pre e) st')) →
    +      (∀ e st, M.In e s → P (f e (f_pre e) st) (f' e st)) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ st´ e2, P st st´ →
    -                          M.In e2 s → E.lt e2 e1 →
    -                          P st (f e2 (f_pre e2) st´))) →
    +      (∀ e1 st,
    +          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e2 e1 →
    +                          P st (f e2 (f_pre e2) st'))) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ st´ e2, P st st´ →
    -                          M.In e2 s → E.lt e1 e2 →
    -                          P st (f e2 (f_pre e2) st´))) →
    -
    -      P i →
    -      P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold s ).
    -   Proof.
    -     intros A B i f_pre f f_lt f_gt s P.
    -     move ⇒ H_bst H_equiv_P H_P_f H_f´ H_RL H_RG.
    - -
    -     set base := s.
    - -
    -     move : i .
    -     have : (∀ e, M.In e base → M.In e s). {
    -       rewrite /In /base //.
    -     }
    -     have : M.bst base. {
    -       apply H_bst.
    -     }
    -     move : base.
    -     clear H_bst.
    - -
    -     induction base as [|c l IHl e r IHr] using M.tree_ind. {
    -       rewrite /foldWithAbort_Raw /Raw.fold.
    -       move ⇒ _ _ i //.
    -     } {
    -       move ⇒ H_bst H_sub i H_P_ii´.
    - -
    -       have [H_bst_l [H_bst_r [H_lt_tree_l H_gt_tree_r]]]:
    -         M.bst l ∧ M.bst r ∧ M.lt_tree e l ∧ M.gt_tree e r. {
    -         inversion H_bst. done.
    -       }
    -       
    -       have H_sub_l : (∀ e0 : E.t, M.In e0 l → M.In e0 s ∧ E.lt e0 e). {
    -         intros e0 H_in_l.
    -         split; last by apply H_lt_tree_l.
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         tauto.
    -       }
    -       move : (IHl H_bst_l) ⇒ {IHl} IHl {H_bst_l} {H_lt_tree_l}.
    -       have H_sub_r : (∀ e0 : E.t, M.In e0 r → M.In e0 s ∧ E.lt e e0). {
    -         intros e0 H_in_r.
    -         split; last by apply H_gt_tree_r.
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         tauto.
    -       }
    -       move : (IHr H_bst_r) ⇒ {IHr} IHr {H_bst_r} {H_gt_tree_r}.
    -       have H_in_e : M.In e s. {
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         right; left.
    -         apply Equivalence_Reflexive.
    -       }
    -       move ⇒ {H_sub}.
    - -
    -       rewrite /=.
    -       set st0 := if f_lt e (f_pre e) i then i else foldWithAbort_Raw f_pre f_lt f f_gt l i.
    -       set st0´ := Raw.fold l .
    -       set st1 := f e (f_pre e) st0.
    -       set st1´ := e st0´.
    -       set st2 := if f_gt e (f_pre e) st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1.
    -       set st2´ := Raw.fold r st1´.
    - -
    -       have H_P_st0 : P st0 st0´. {
    -         rewrite /st0 /st0´.
    -         case_eq (f_lt e (f_pre e) i). {
    -           move ⇒ H_fl_eq.
    -           move : H_P_ii´ H_sub_l.
    -           move : H_equiv_P H_f´ (H_RL _ _ H_in_e H_fl_eq).
    -           rewrite /M.lt_tree. clear.
    -           move ⇒ H_equiv_P H_f´ H_RL.
    -           move : .
    -           induction l as [|c l IHl r IHr] using M.tree_ind. {
    -             done.
    -           } {
    -             intros H_P_ii´ H_sub_l.
    -             rewrite /=.
    -             apply IHr; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             have [] : (M.In s ∧ E.lt e). {
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff.
    -               right; left.
    -               apply Equivalence_Reflexive.
    -             }
    -             move ⇒ H_e´_in H_lt_in.
    -             suff H_P_i : (P i (f (f_pre ) (fold l ))). {
    -               eapply Equivalence_Transitive; first apply H_P_i.
    -               by apply H_f´.
    -             }
    -             eapply H_RL ⇒ //.
    -             apply IHl; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             assumption.
    -           }
    -         } {
    -           move ⇒ _.
    -           apply IHl ⇒ //.
    -           eapply H_sub_l.
    -         }
    -       }
    -       have H_P_st1 : P st1 st1´. {
    -         rewrite /st1 /st1´.
    -         rewrite -H_f´ //.
    -         apply H_P_f ⇒ //.
    -       }
    -       have H_P_st2 : P st2 st2´. {
    -         rewrite /st2 /st2´.
    -         clearbody st1 st1´.
    -         case_eq (f_gt e (f_pre e) st1). {
    -           move ⇒ H_gt_eq.
    -           move : H_P_st1 H_sub_r.
    -           move : H_equiv_P (H_RG _ _ H_in_e H_gt_eq) H_f´.
    -           unfold M.gt_tree. clear.
    -           move ⇒ H_equiv_P H_RG H_f´.
    -           move : st1´.
    -           induction r as [|c l IHl r IHr] using M.tree_ind. {
    -             done.
    -           } {
    -             intros st1´ H_P_st1 H_sub_r.
    -             rewrite /=.
    -             apply IHr; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             have [] : (M.In s ∧ E.lt e ). {
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff.
    -               right; left.
    -               apply Equivalence_Reflexive.
    -             }
    -             move ⇒ H_e´_in H_lt_ee´.
    -             suff H_P_st1_aux : (P st1 (f (f_pre ) (fold l st1´))). {
    -               eapply Equivalence_Transitive; first apply H_P_st1_aux.
    -               by apply H_f´.
    -             }
    -             eapply H_RG ⇒ //.
    -             apply IHl; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             assumption.
    -           }
    -         } {
    -           move ⇒ _.
    -           apply IHr ⇒ //.
    -           eapply H_sub_r.
    -         }
    -       }
    -       done.
    -     }
    -  Qed.
    -End MakeGenTreeFoldA.
    - -
    -
    - -
    -

    AVL implementation

    +      (∀ e1 st,
    +          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e1 e2 →
    +                          P st (f e2 (f_pre e2) st'))) →
    +
    +      P i i' →
    +      P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold f' s i').
    + End MakeGenTreeFoldA.
    + +
    +
    + +
    +

    AVL implementation

    The generic tree implementation naturally leads to an AVL one.

    -Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetAVL.Make X.
    -  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.
    +Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetAVL.Make X.
    +  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
        foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

      Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s P.
    -    move ⇒ H_P_f H_f´ H_RL H_RG H_P_ii´.
    - -
    -    rewrite /foldWithAbortPrecompute /fold.
    -    apply foldWithAbort_RawSpec ⇒ //.
    -    case s. rewrite /this /Raw.Ok //.
    -  Qed.

      Include HasFoldWithAbortOps X.
    @@ -1720,30 +1265,21 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    RBT implementation

    +

    RBT implementation

    The generic tree implementation naturally leads to an RBT one.
    -Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetRBT.Make X.
    -  Include MakeGenTreeFoldA X Color Raw Raw.
    +Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetRBT.Make X.
    +  Include MakeGenTreeFoldA X Color Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
        foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

      Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s P.
    -    move ⇒ H_P_f H_f´ H_RL H_RG H_P_ii´.
    - -
    -    rewrite /foldWithAbortPrecompute /fold.
    -    apply foldWithAbort_RawSpec ⇒ //.
    -    case s. rewrite /this /Raw.Ok //.
    -  Qed.

      Include HasFoldWithAbortOps X.
    @@ -1755,19 +1291,19 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Sorted Lists Implementation

    +

    Sorted Lists Implementation

    -Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetList.Make X.
    +Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetList.Make X.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
      match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
            let pre_x := f_pre x in
            let acc := f x (pre_x) acc in
            if (f_gt x pre_x acc) then
    @@ -1783,92 +1319,7 @@

    Library MSetsExtra.MSetFoldWithAbort


      Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt.
    -    move ⇒ [] l H_is_ok_l P H_equiv_P.
    -    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    -    move ⇒ H_P_f H_f´ H_RL H_RG.
    - -
    -    set base := l.
    -    move : i .
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    -      rewrite /base //.
    -    }
    -    have : sort X.lt base. {
    -      rewrite Raw.isok_iff /base //.
    -    }
    -    clear H_is_ok_l.
    - -
    -    induction base as [| x xs IH]. {
    -      by simpl.
    -    }
    -    move ⇒ H_sort H_in_xxs i Pii´ /=.
    - -
    -    have [H_sort_xs H_hd_rel {H_sort}] : Sorted X.lt xs ∧ HdRel X.lt x xs. {
    -      by inversion H_sort.
    -    }
    -
    -    move : H_hd_rel.
    -    rewrite (Raw.ML.Inf_alt x H_sort_xs) ⇒ H_lt_xs.
    - -
    -    have H_x_in_l : InA X.eq x l. {
    -      apply H_in_xxs.
    -      apply InA_cons_hd.
    -      apply X.eq_equiv.
    -    }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    -      intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    -    }
    -   
    -    have H_P_next : P (f x (f_pre x) i) (flip x). {
    -      rewrite /flip -H_f´ //.
    -      apply H_P_f ⇒ //.
    -    }
    -
    -    case_eq (f_gt x (f_pre x) (f x (f_pre x) i)); last first. {
    -      move ⇒ _.
    -      apply IH ⇒ //.
    -    } {
    -      move ⇒ H_gt.
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip ) xs st)). {
    -         apply H_suff ⇒ //.
    -      }
    -      move : H_in_xs H_lt_xs.
    - -
    -      clear IH H_in_xxs H_sort_xs.
    -      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    -      induction xs as [| xs´ IH´]. {
    -        done.
    -      } {
    -        intros H_in_xs H_lt_xs st H_P_st.
    -        rewrite /=.
    -        have H_x´_in_l : InA X.eq l. {
    -          apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -        apply IH´. {
    -          intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_lt_xs, InA_cons_tl ⇒ //.
    -        } {
    -          rewrite /flip -H_f´ //.
    -          apply H_RG_x ⇒ //.
    -          apply H_lt_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -      }
    -    }
    -  Qed.
    - +
      Include HasFoldWithAbortOps X.
    @@ -1879,24 +1330,24 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Unsorted Lists without Dups Implementation

    +

    Unsorted Lists without Dups Implementation

    -Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    -  Module Raw := MSetWeakList.MakeRaw X.
    +Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    +  Module Raw := MSetWeakList.MakeRaw X.
      Module E := X.
    -  Include WRaw2SetsOn E Raw.
    +  Include WRaw2SetsOn E Raw.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
      match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
            let pre_x := f_pre x in
            let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
    +        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
              acc
            else
              foldWithAbortRaw f_pre f_lt f f_gt xs acc
    @@ -1909,114 +1360,7 @@

    Library MSetsExtra.MSetFoldWithAbort


      Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt.
    -    move ⇒ [] l H_is_ok_l P H_P_equiv.
    -    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    -    move ⇒ H_P_f H_f´ H_RL H_RG.
    - -
    -    set base := l.
    -    move : i .
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    -      rewrite /base //.
    -    }
    -    have : NoDupA X.eq base. {
    -      apply H_is_ok_l.
    -    }
    -    clear H_is_ok_l.
    - -
    -    induction base as [| x xs IH]. {
    -      by simpl.
    -    }
    -    move ⇒ H_nodup_xxs H_in_xxs i Pii´ /=.
    - -
    -    have [H_nin_x_xs H_nodup_xs {H_nodup_xxs}] : ¬ InA X.eq x xs ∧ NoDupA X.eq xs. {
    -      by inversion H_nodup_xxs.
    -    }
    -
    -    have H_x_in_l : InA X.eq x l. {
    -      apply H_in_xxs.
    -      apply InA_cons_hd.
    -      apply X.eq_equiv.
    -    }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    -      intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    -    }
    -   
    -    have H_P_next : P (f x (f_pre x) i) (flip x). {
    -      rewrite /flip -H_f´ //.
    -      apply H_P_f ⇒ //.
    -    }
    -
    -    case_eq (f_gt x (f_pre x) (f x (f_pre x) i) &&
    -             f_lt x (f_pre x) (f x (f_pre x) i)); last first. {
    -      move ⇒ _.
    -      apply IH ⇒ //.
    -    } {
    -      move ⇒ /andb_true_iff [H_gt H_lt].
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip ) xs st)). {
    -         apply H_suff ⇒ //.
    -      }
    -
    -      have H_neq_xs : ∀ e, List.In e xs → X.lt x e ∨ X.lt e x. {
    -        intros e H_in.
    - -
    -        move : (X.compare_spec x e).
    -        case (X.compare x e) ⇒ H_cmp; inversion H_cmp. {
    -          contradict H_nin_x_xs.
    -          rewrite InA_alt.
    -          by ∃ e.
    -        } {
    -          by left.
    -        } {
    -          by right.
    -        }
    -      }
    -      move : H_in_xs H_neq_xs.
    - -
    -      clear IH H_in_xxs H_nodup_xs.
    -      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    -      move : (H_RL x _ H_x_in_l H_lt) ⇒ H_RL_x.
    -      induction xs as [| xs´ IH´]. {
    -        done.
    -      } {
    -        intros H_in_xs H_neq_xs st H_P_st.
    -        rewrite /=.
    -        have H_x´_in_xxs´ : List.In ( :: xs´). {
    -          simpl; by left.
    -        }
    -        have H_x´_in_l : InA X.eq l. {
    -          apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -        apply IH´. {
    -          intros H.
    -          apply H_nin_x_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_neq_xs, in_cons ⇒ //.
    -        } {
    -          rewrite /flip -H_f´ //.
    -          move : (H_neq_xs H_x´_in_xxs´) ⇒ [] H_cmp. {
    -            apply H_RG_x ⇒ //.
    -          } {
    -            apply H_RL_x ⇒ //.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +
      Include HasFoldWithAbortOps X.
    diff --git a/html/MSetsExtra.MSetIntervals.html b/html/MSetsExtra.MSetIntervals.html index e4b6c9b..696aaf2 100644 --- a/html/MSetsExtra.MSetIntervals.html +++ b/html/MSetsExtra.MSetIntervals.html @@ -26,7 +26,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Weak sets implemented by interval lists

    +

    Weak sets implemented by interval lists

    @@ -47,129 +47,60 @@

    Library MSetsExtra.MSetIntervals


    -Require Import MSetInterface OrdersFacts OrdersLists.
    -Require Import BinNat.
    -Require Import ssreflect.
    -Require Import NArith.
    -Require Import ZArith.
    -Require Import NOrder.
    -Require Import DecidableTypeEx.
    -Module Import NOP := NOrderProp N.
    +Require Import MSetInterface OrdersFacts OrdersLists.
    +Require Import BinNat.
    +Require Import mathcomp.ssreflect.ssreflect.
    +Require Import NArith.
    +Require Import ZArith.
    +Require Import NOrder.
    +Require Import DecidableTypeEx.
    +Module Import NOP := NOrderProp N.
    Open Scope Z_scope.

    -

    Auxiliary stuff

    +

    Auxiliary stuff

    Simple auxiliary lemmata
    -Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    -  z ≤ z + Z.of_N n.
    -Proof.
    -  intros z n.
    -  suff : (z + 0 ≤ z + Z.of_N n). {
    -    rewrite Z.add_0_r //.
    -  }
    -  apply Zplus_le_compat_l.
    -  apply N2Z.is_nonneg.
    -Qed.
    - -
    -Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    -  (n ≠ 0)%N →
    -  z < z + Z.of_N n.
    -Proof.
    -  move ⇒ z n H_neq_0.
    -  suff : (z + Z.of_N 0 < z + Z.of_N n). {
    -    rewrite Z.add_0_r //.
    -  }
    -  apply Z.add_lt_mono_l, N2Z.inj_lt.
    -  by apply N.neq_0_lt_0.
    -Qed.
    +Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    +  z ≤ z + Z.of_N n.
    + +
    +Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    +  (n ≠ 0)%N →
    +  z < z + Z.of_N n.

    Lemma Z_lt_le_add_r : ∀ y1 y2 c,
    -  y1 < y2 →
    -  y1 ≤ y2 + Z.of_N c.
    -Proof.
    -  intros y1 y2 c H.
    -  apply Z.le_trans with (m := y2). {
    -    by apply Z.lt_le_incl.
    -  } {
    -    apply Z_le_add_r.
    -  }
    -Qed.
    - -
    -Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    -    y < x →
    -    Z.to_N (x - y) ≠ 0%N.
    -Proof.
    -  intros x y H_y_lt.
    -  apply N.neq_0_lt_0.
    -  apply N2Z.inj_lt.
    -  suff H : 0 < x - y. {
    -    rewrite Z2N.id ⇒ //.
    -    by apply Z.lt_le_incl.
    -  }
    -  by apply Z.lt_0_sub.
    -Qed.
    - -
    -Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    -Proof.
    -  intros x y.
    -  rewrite Z.add_sub_assoc ⇒ //.
    -  rewrite Z.add_sub_swap Z.sub_diag Z.add_0_l //.
    -Qed.
    - -
    -Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    -  NoDupA eqA l →
    -  (∀ x1 x2, List.In x1 l → List.In x2 l →
    -                  eqB (f x1) (f x2) → eqA x1 x2) →
    -  NoDupA eqB (map f l).
    -Proof.
    -  intros eqA eqB f.
    -  induction l as [| x xs IH]. {
    -    move ⇒ _ _; rewrite /=.
    -    apply NoDupA_nil.
    -  } {
    -    move ⇒ H_pre H_eqA_impl.
    -    have [H_nin_x H_no_dup_xs] : ¬ InA eqA x xs ∧ NoDupA eqA xs. {
    -      by inversion_clear H_pre.
    -    }
    -    simpl.
    -    apply NoDupA_cons; last first. {
    -      apply IH ⇒ //.
    -      intros x1 x2 H_in_x1 H_in_x2 H_eqB.
    -      apply H_eqA_impl ⇒ //=; by right.
    -    }
    -    move ⇒ H_in_map; apply H_nin_x.
    -    move : H_in_map.
    -    rewrite !InA_alt ⇒ [[y] [H_eqB_y]].
    -    rewrite in_map_iff ⇒ [[] [H_y_eq] H_y´_in].
    -    subst.
    -    âˆƒ .
    -    split ⇒ //.
    -    apply H_eqA_impl ⇒ //. {
    -      by simpl; left.
    -    } {
    -      by simpl; right.
    -    }
    -  }
    -Qed.
    +  y1 < y2 →
    +  y1 ≤ y2 + Z.of_N c.
    + +
    +Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    +    y < x →
    +    Z.to_N (x - y) ≠ 0%N.
    +
    +Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    + +
    +Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    +  NoDupA eqA l →
    +  (∀ x1 x2, List.In x1 l → List.In x2 l →
    +                  eqB (f x1) (f x2) → eqA x1 x2) →
    +  NoDupA eqB (map f l).
    +
    -

    rev_map

    +

    rev_map

    @@ -177,14 +108,14 @@

    Library MSetsExtra.MSetIntervals

    rev_map is used for efficiency.
    -Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
    +Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
      match l with
    -   | nil ⇒ acc
    -   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
    +   | nil ⇒ acc
    +   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
      end.

    -Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.
    +Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.

    @@ -193,32 +124,18 @@

    Library MSetsExtra.MSetIntervals

    Lemmata about rev_map
    -Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    -  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    -Proof.
    -  intro f.
    -  induction l as [| x xs IH]. {
    -    intros acc.
    -    by simpl.
    -  } {
    -    intros acc.
    -    rewrite /= IH //.
    -  }
    -Qed.
    - +Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    +  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    +
    -Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    -  rev_map f l = List.rev (List.map f l).
    -Proof.
    -  intros f l.
    -  rewrite /rev_map rev_map_aux_alt_def -rev_alt //.
    -Qed.
    +Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    +  rev_map f l = List.rev (List.map f l).

    -

    Encoding Elements

    +

    Encoding Elements

    @@ -231,11 +148,11 @@

    Library MSetsExtra.MSetIntervals


    Module Type ElementEncode.
    -  Declare Module E : OrderedType.
    +  Declare Module E : OrderedType.

    -  Parameter encode : E.t → Z.
    -  Parameter decode : Z → E.t.
    +  Parameter encode : E.t → Z.
    +  Parameter decode : Z → E.t.

    @@ -244,11 +161,11 @@

    Library MSetsExtra.MSetIntervals

    Decoding is the inverse of encoding. Notice that the reverse is not demanded. This means that we do need to provide for all integers z an - element e with encode v = z. + element e with encode v = z.
      Axiom decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +    decode (encode e) = e.

    @@ -258,7 +175,7 @@

    Library MSetsExtra.MSetIntervals

      Axiom encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.

    @@ -268,7 +185,7 @@

    Library MSetsExtra.MSetIntervals

      Axiom encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.

    End ElementEncode.
    @@ -277,7 +194,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Set Operations

    +

    Set Operations

    @@ -301,7 +218,7 @@

    Library MSetsExtra.MSetIntervals

    - Intervals we represent by tuples (Z, N). The tuple (z, c) represents the + Intervals we represent by tuples (Z, N). The tuple (z, c) represents the interval z-(z+c).
    @@ -312,9 +229,9 @@

    Library MSetsExtra.MSetIntervals

    -Module Ops (Enc : ElementEncode) <: Ops Enc.E.
    +Module Ops (Enc : ElementEncode) <: Ops Enc.E.
      Definition elt := Enc.E.t.
    -  Definition t := list (Z × N).
    +  Definition t := list (Z × N).

    @@ -323,8 +240,8 @@

    Library MSetsExtra.MSetIntervals

    The empty list is trivial to define and check for.
    -  Definition empty : t := nil.
    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Definition empty : t := nil.
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.

    @@ -336,45 +253,38 @@

    Library MSetsExtra.MSetIntervals

    if it needs to be executable.
    -  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
    -  Proof.
    -    intros n p H0 H1.
    -    apply H1.
    -    rewrite H0.
    -    apply N.lt_pred_l.
    -    discriminate.
    -  Defined.
    - -
    -  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    -    match c as c0 return c = c0 → (bool × A) with
    -    | N0 ⇒ fun _ ⇒ (false, acc)
    +  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
    + +
    +  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    +    match c as c0 return c = c0 → (bool × A) with
    +    | N0 ⇒ fun _ ⇒ (false, acc)
        | c ⇒ fun Heq ⇒ match (f acc x) with
    -        | None ⇒ (true, acc)
    -        | Some acc´ ⇒
    -          fold_elementsZ_aux f acc´ (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    -    end (refl_equal _).
    +        | None ⇒ (true, acc)
    +        | Some acc' ⇒
    +          fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    +    end (refl_equal _).

      Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _).

    -  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
    +  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
        match s with
    -    | nil ⇒ (false, acc)
    -    | (x, c) :: ⇒
    +    | nil ⇒ (false, acc)
    +    | (x, c) :: s' ⇒
          match fold_elementsZ_single f acc x c with
    -          (false, acc´) ⇒ fold_elementsZ f acc´
    -        | (true, acc´) ⇒ (true, acc´)
    +          (false, acc') ⇒ fold_elementsZ f acc' s'
    +        | (true, acc') ⇒ (true, acc')
          end
        end.

    -  Definition elementsZ (s : t) : list Z :=
    -    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).
    +  Definition elementsZ (s : t) : list Z :=
    +    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).

    -  Definition elements (s : t) : list elt :=
    +  Definition elements (s : t) : list elt :=
        rev_map Enc.decode (elementsZ s).

    @@ -384,12 +294,12 @@

    Library MSetsExtra.MSetIntervals

    membership is easily defined
    -  Fixpoint memZ (x : Z) (s : t) :=
    +  Fixpoint memZ (x : Z) (s : t) :=
        match s with
    -    | nil ⇒ false
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then false else
    -        if (Z.ltb x (y+Z.of_N c)) then true else
    +    | nil ⇒ false
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then false else
    +        if (Z.ltb x (y+Z.of_N c)) then true else
            memZ x l
        end.
    @@ -415,59 +325,59 @@

    Library MSetsExtra.MSetIntervals

        | ICR_after_touch.

    -  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    -    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    -                match (Z.compare yc1 y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒
    -                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    -                        | (Lt, Lt) ⇒ ICR_overlap_before
    -                        | (Lt, _) ⇒ ICR_subsume_2
    -                        | (Eq, Lt) ⇒ ICR_subsume_1
    -                        | (Eq, Gt) ⇒ ICR_subsume_2
    -                        | (Eq, Eq) ⇒ ICR_equal
    -                        | (Gt, Gt) ⇒ ICR_overlap_after
    -                        | (Gt, _) ⇒ ICR_subsume_1
    +  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    +    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    +                match (Z.compare yc1 y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒
    +                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    +                        | (Lt, Lt) ⇒ ICR_overlap_before
    +                        | (Lt, _) ⇒ ICR_subsume_2
    +                        | (Eq, Lt) ⇒ ICR_subsume_1
    +                        | (Eq, Gt) ⇒ ICR_subsume_2
    +                        | (Eq, Eq) ⇒ ICR_equal
    +                        | (Gt, Gt) ⇒ ICR_overlap_after
    +                        | (Gt, _) ⇒ ICR_subsume_1
                            end
                    end
          end
        end.

    -  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    -    match i with (y2, c2) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒ ICR_subsume_1
    +  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    +    match i with (y2, c2) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒ ICR_subsume_1
                    end
          end
        end.

      Fixpoint compare (s1 s2 : t) :=
    -    match (s1, s2) with
    -      | (nil, nil) ⇒ Eq
    -      | (nil, _ :: _) ⇒ Lt
    -      | (_ :: _, nil) ⇒ Gt
    -      | ((y1, c1)::s1´, (y2, c2)::s2´) ⇒
    -        match (Z.compare y1 y2) with
    -          | Lt ⇒ Lt
    -          | Gt ⇒ Gt
    -          | Eq ⇒ match N.compare c1 c2 with
    -                    | Lt ⇒ Lt
    -                    | Gt ⇒ Gt
    -                    | Eq ⇒ compare s1´ s2´
    +    match (s1, s2) with
    +      | (nil, nil) ⇒ Eq
    +      | (nil, _ :: _) ⇒ Lt
    +      | (_ :: _, nil) ⇒ Gt
    +      | ((y1, c1)::s1', (y2, c2)::s2') ⇒
    +        match (Z.compare y1 y2) with
    +          | Lt ⇒ Lt
    +          | Gt ⇒ Gt
    +          | Eq ⇒ match N.compare c1 c2 with
    +                    | Lt ⇒ Lt
    +                    | Gt ⇒ Gt
    +                    | Eq ⇒ compare s1' s2'
                      end
            end
        end.
    @@ -479,18 +389,18 @@

    Library MSetsExtra.MSetIntervals

    Auxiliary functions for inserting at front and merging intervals
    -  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    -    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).
    +  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    +    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).

    -  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
    +  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
        match l with
    -    | nil ⇒ (x,c)::nil
    -    | (y, ):: ⇒
    -         match (Z.compare (x + Z.of_N c) y) with
    -         | Lt ⇒ (x, c) :: l
    -         | Eq ⇒ (x, (c+)%N) ::
    -         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y )
    +    | nil ⇒ (x,c)::nil
    +    | (y, c')::l' ⇒
    +         match (Z.compare (x + Z.of_N c) y) with
    +         | Lt ⇒ (x, c) :: l
    +         | Eq ⇒ (x, (c+c')%N) :: l'
    +         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y c') l'
             end
        end.
    @@ -502,21 +412,21 @@

    Library MSetsExtra.MSetIntervals

    generate efficient code
    -  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
    +  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
        match s with
    -    | nil ⇒ List.rev´ ((x, (1%N))::acc)
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    -          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    -          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    -          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    -          | _ ⇒ List.rev_append ((y, c)::acc) l
    +    | nil ⇒ List.rev' ((x, (1%N))::acc)
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    +          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    +          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    +          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    +          | _ ⇒ List.rev_append ((y, c)::acc) l
            end
        end.

    -  Definition addZ x s := addZ_aux nil x s.
    +  Definition addZ x s := addZ_aux nil x s.
      Definition add x s := addZ (Enc.encode x) s.

    @@ -527,25 +437,24 @@

    Library MSetsExtra.MSetIntervals

    This is used to define the function from_elements.
    -  Definition add_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ add x s) l s.
    +  Definition add_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ add x s) l s.

    -  Definition from_elements (l : list elt) : t := add_list l empty.
    +  Definition from_elements (l : list elt) : t := add_list l empty.

    -singleton is trivial to define +singleton is trivial to define
    -  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.
    +  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.

    -  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
    -  Proof. by []. Qed.
    - +  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
    +
    @@ -553,29 +462,29 @@

    Library MSetsExtra.MSetIntervals

    removing needs to be done with code extraction in mind again.
    -  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    -     if (N.eqb c 0) then s else (x, c) :: s.
    +  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    +     if (N.eqb c 0) then s else (x, c) :: s.

    -  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
    +  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
        match s with
    -    | nil ⇒ List.rev´ acc
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then List.rev_append acc s else
    -        if (Z.ltb x (y+Z.of_N c)) then (
    -           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    -              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    -             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    -        ) else removeZ_aux ((y,c)::acc) x l
    +    | nil ⇒ List.rev' acc
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then List.rev_append acc s else
    +        if (Z.ltb x (y+Z.of_N c)) then (
    +           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    +              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    +             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    +        ) else removeZ_aux ((y,c)::acc) x l
        end.

    -  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
    +  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
      Definition remove (x : elt) (s : t) : t := removeZ (Enc.encode x) s.

    -  Definition remove_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ remove x s) l s.
    +  Definition remove_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ remove x s) l s.

    @@ -585,19 +494,19 @@

    Library MSetsExtra.MSetIntervals

      Fixpoint union_aux (s1 : t) :=
    -    fix aux (s2 : t) (acc : list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +    fix aux (s2 : t) (acc : list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
                  union_aux l1 (
    -               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
    +               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
              | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
                  union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc
              | ICR_overlap_after ⇒
    @@ -609,7 +518,7 @@

    Library MSetsExtra.MSetIntervals

        end.

    -  Definition union s1 s2 := union_aux s1 s2 nil.
    +  Definition union s1 s2 := union_aux s1 s2 nil.

    @@ -620,38 +529,38 @@

    Library MSetsExtra.MSetIntervals


    -  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
        match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    -          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    -          | ICR_equal ⇒ (acc, l1)
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    +          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    +          | ICR_equal ⇒ (acc, l1)
              | ICR_subsume_1 ⇒ diff_aux y2 c2 acc l1
    -          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    -                (Z.to_N (y2 - y1)) acc),
    -              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
    +          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    +                (Z.to_N (y2 - y1)) acc),
    +              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
            end
        end.

    -  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ rev_append acc s1
    -    | (_, nil) ⇒ rev_append acc s1
    -    | (_, (y2, c2) :: l2) ⇒
    +  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ rev_append acc s1
    +    | (_, nil) ⇒ rev_append acc s1
    +    | (_, (y2, c2) :: l2) ⇒
          match diff_aux y2 c2 acc s1 with
    -        (acc´, s1´) ⇒ diff_aux2 acc´ s1´ l2
    +        (acc', s1') ⇒ diff_aux2 acc' s1' l2
          end
        end.

    -  Definition diff s1 s2 := diff_aux2 nil s1 s2.
    +  Definition diff s1 s2 := diff_aux2 nil s1 s2.

    @@ -662,20 +571,20 @@

    Library MSetsExtra.MSetIntervals

      Fixpoint subset (s1 : t) :=
        fix aux (s2 : t) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
              | ICR_after ⇒ aux l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
              | ICR_equal ⇒ subset l1 l2
              | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +          | ICR_subsume_2 ⇒ false
            end
        end.
    @@ -686,10 +595,10 @@

    Library MSetsExtra.MSetIntervals

    equal
    -  Fixpoint equal (s : t) : bool := match s, with
    -    | nil, nil ⇒ true
    -    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    -    | _, _ ⇒ false
    +  Fixpoint equal (s s' : t) : bool := match s, s' with
    +    | nil, nil ⇒ true
    +    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    +    | _, _ ⇒ false
      end.

    @@ -699,36 +608,36 @@

    Library MSetsExtra.MSetIntervals

    inter
    -  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
        match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
              | ICR_before ⇒ inter_aux y2 c2 acc l1
              | ICR_before_touch ⇒ inter_aux y2 c2 acc l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    -          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    -          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    -          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    +          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    +          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    +          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
            end
        end.

    -  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev´ acc
    -    | (_, nil) ⇒ List.rev´ acc
    -    | (_, (y2, c2) :: l2) ⇒
    +  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev' acc
    +    | (_, nil) ⇒ List.rev' acc
    +    | (_, (y2, c2) :: l2) ⇒
          match inter_aux y2 c2 acc s1 with
    -        (acc´, s1´) ⇒ inter_aux2 acc´ s1´ l2
    +        (acc', s1') ⇒ inter_aux2 acc' s1' l2
          end
        end.

    -  Definition inter s1 s2 := inter_aux2 nil s1 s2.
    +  Definition inter s1 s2 := inter_aux2 nil s1 s2.

    @@ -740,93 +649,93 @@

    Library MSetsExtra.MSetIntervals


      Definition partitionZ_fold_insert
    -             (cur : option (Z × N)) (x : Z) :=
    +             (cur : option (Z × N)) (x : Z) :=
        match cur with
    -       None ⇒ (x, 1%N)
    -     | Some (y, c) ⇒ (y, N.succ c)
    +       None ⇒ (x, 1%N)
    +     | Some (y, c) ⇒ (y, N.succ c)
        end.

    -  Definition partitionZ_fold_skip (acc : list (Z × N))
    -             (cur : option (Z × N)) : (list (Z × N)) :=
    +  Definition partitionZ_fold_skip (acc : list (Z × N))
    +             (cur : option (Z × N)) : (list (Z × N)) :=
        match cur with
    -       None ⇒ acc
    -     | Some yc ⇒ yc::acc
    +       None ⇒ acc
    +     | Some yc ⇒ yc::acc
        end.

    -  Definition partitionZ_fold_fun f st (x : Z) :=
    -    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
    +  Definition partitionZ_fold_fun f st (x : Z) :=
    +    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
          if (f x) then
    -        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    -         (partitionZ_fold_skip acc_f c_f, None))
    +        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    +         (partitionZ_fold_skip acc_f c_f, None))
          else
    -        ((partitionZ_fold_skip acc_t c_t, None),
    -         (acc_f, Some (partitionZ_fold_insert c_f x)))
    +        ((partitionZ_fold_skip acc_t c_t, None),
    +         (acc_f, Some (partitionZ_fold_insert c_f x)))
        end.

    -  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).
    +  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).

      Definition partitionZ_single f acc_t acc_f x c :=
    -    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    -    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    -        (partitionZ_fold_skip acc_t c_t,
    -         partitionZ_fold_skip acc_f c_f)
    +    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    +    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    +        (partitionZ_fold_skip acc_t c_t,
    +         partitionZ_fold_skip acc_f c_f)
        end.

      Fixpoint partitionZ_aux acc_t acc_f f s :=
        match s with
    -    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    -    | (y, c) :: ⇒
    +    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    +    | (y, c) :: s' ⇒
          match partitionZ_single f acc_t acc_f y c with
    -      | (acc_t´, acc_f´) ⇒ partitionZ_aux acc_t´ acc_f´ f
    +      | (acc_t', acc_f') ⇒ partitionZ_aux acc_t' acc_f' f s'
          end
        end.

    -  Definition partitionZ := partitionZ_aux nil nil.
    +  Definition partitionZ := partitionZ_aux nil nil.

    -  Definition partition (f : elt → bool) : t → (t × t) :=
    +  Definition partition (f : elt → bool) : t → (t × t) :=
        partitionZ (fun z ⇒ f (Enc.decode z)).

    -  Definition filterZ_fold_fun f st (x : Z) :=
    -    match st with (acc_t, c_t) ⇒
    +  Definition filterZ_fold_fun f st (x : Z) :=
    +    match st with (acc_t, c_t) ⇒
          if (f x) then
    -        (acc_t, Some (partitionZ_fold_insert c_t x))
    +        (acc_t, Some (partitionZ_fold_insert c_t x))
          else
    -        (partitionZ_fold_skip acc_t c_t, None)
    +        (partitionZ_fold_skip acc_t c_t, None)
        end.

    -  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).
    +  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).

      Definition filterZ_single f acc x c :=
    -    match filterZ_single_aux f (acc, None) x c with
    -    | (acc, c) ⇒
    +    match filterZ_single_aux f (acc, None) x c with
    +    | (acc, c) ⇒
            (partitionZ_fold_skip acc c)
        end.

      Fixpoint filterZ_aux acc f s :=
        match s with
    -    | nil ⇒ (List.rev acc)
    -    | (y, c) :: ⇒
    -      filterZ_aux (filterZ_single f acc y c) f
    +    | nil ⇒ (List.rev acc)
    +    | (y, c) :: s' ⇒
    +      filterZ_aux (filterZ_single f acc y c) f s'
        end.

    -  Definition filterZ := filterZ_aux nil.
    +  Definition filterZ := filterZ_aux nil.

    -  Definition filter (f : elt → bool) : t → t :=
    +  Definition filter (f : elt → bool) : t → t :=
        filterZ (fun z ⇒ f (Enc.decode z)).

    @@ -840,62 +749,62 @@

    Library MSetsExtra.MSetIntervals


    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).

    -  Definition for_all (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    +  Definition for_all (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
          if b then
    -        Some (f (Enc.decode z))
    -      else None) true s).
    +        Some (f (Enc.decode z))
    +      else None) true s).

    -  Definition exists_ (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    +  Definition exists_ (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
          if b then
    -        None
    -      else Some (f (Enc.decode z))) false s).
    +        None
    +      else Some (f (Enc.decode z))) false s).

    -  Fixpoint cardinalN c (s : t) : N := match s with
    -    | nil ⇒ c
    -    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
    +  Fixpoint cardinalN c (s : t) : N := match s with
    +    | nil ⇒ c
    +    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
      end.

    -  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).
    +  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).

    -  Definition min_eltZ (s : t) : option Z :=
    +  Definition min_eltZ (s : t) : option Z :=
        match s with
    -    | nil ⇒ None
    -    | (x, _) :: _ ⇒ Some x
    +    | nil ⇒ None
    +    | (x, _) :: _ ⇒ Some x
        end.

    -  Definition min_elt (s : t) : option elt :=
    +  Definition min_elt (s : t) : option elt :=
        match (min_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

      Definition choose := min_elt.

    -  Fixpoint max_eltZ (s : t) : option Z :=
    +  Fixpoint max_eltZ (s : t) : option Z :=
        match s with
    -    | nil ⇒ None
    -    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    -    | (x, _) :: ⇒ max_eltZ
    +    | nil ⇒ None
    +    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    +    | (x, _) :: s' ⇒ max_eltZ s'
        end.

    -  Definition max_elt (s : t) : option elt :=
    +  Definition max_elt (s : t) : option elt :=
        match (max_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

    @@ -905,7 +814,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Raw Module

    +

    Raw Module

    @@ -924,36 +833,36 @@

    Library MSetsExtra.MSetIntervals

    -

    Defining invariant IsOk

    +

    Defining invariant IsOk

    -  Definition is_encoded_elems_list (l : list Z) : Prop :=
    -    (∀ x, List.In x l → ∃ e, Enc.encode e = x).
    +  Definition is_encoded_elems_list (l : list Z) : Prop :=
    +    (∀ x, List.In x l → ∃ e, Enc.encode e = x).

    -  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
    +  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
        match l with
    -      | nil ⇒ true
    -      | (y, _)::_ ⇒ Z.ltb x y
    +      | nil ⇒ true
    +      | (y, _)::_ ⇒ Z.ltb x y
        end.

      Fixpoint interval_list_invariant (l : t) :=
       match l with
    -   | nil ⇒ true
    -   | (x, c) :: ⇒
    -       interval_list_elements_greater (x + (Z.of_N c)) && negb (N.eqb c 0) && interval_list_invariant
    +   | nil ⇒ true
    +   | (x, c) :: l' ⇒
    +       interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l'
       end.

    -  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).
    +  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).

    -

    Defining notations

    +

    Defining notations

    @@ -966,13 +875,13 @@

    Library MSetsExtra.MSetIntervals

        Instance IsOk_Ok s `(Hs : IsOk s) : Ok s := { ok := Hs }.

    -    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    -    Definition InZ x s := (List.In x (elementsZ s)).
    -    Definition Equal s := ∀ a : elt, In a s ↔ In a .
    -    Definition Subset s := ∀ a : elt, In a s → In a .
    -    Definition Empty s := ∀ a : elt, ¬ In a s.
    -    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.
    +    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    +    Definition InZ x s := (List.In x (elementsZ s)).
    +    Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +    Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +    Definition Empty s := ∀ a : elt, ¬ In a s.
    +    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.

      End ForNotations.
    @@ -981,487 +890,225 @@

    Library MSetsExtra.MSetIntervals

    -

    elements list properties

    +

    elements list properties

    The functions elementsZ, elementsZ_single, - elements and elements_single are crucial and used + elements and elements_single are crucial and used everywhere. Therefore, we first establish a few properties of these important functions.

    -  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
    -  Proof. done. Qed.
    - +  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
    +
    -  Lemma elements_nil : (elements (nil : t) = nil).
    -  Proof. done. Qed.
    - +  Lemma elements_nil : (elements (nil : t) = nil).
    +
    -  Definition elementsZ_single (x:Z) (c:N) :=
    -      List.rev´ (N.peano_rec (fun _ ⇒ list Z)
    -                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).
    +  Definition elementsZ_single (x:Z) (c:N) :=
    +      List.rev' (N.peano_rec (fun _ ⇒ list Z)
    +                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).

      Definition elements_single x c :=
    -    List.map Enc.decode (elementsZ_single x c).
    +    List.map Enc.decode (elementsZ_single x c).

      Lemma elementsZ_single_base : ∀ x,
    -    elementsZ_single x (0%N) = nil.
    -  Proof. done. Qed.
    - +    elementsZ_single x (0%N) = nil.
    +
      Lemma elementsZ_single_succ : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    elementsZ_single x c ++ (x+Z.of_N c)::nil.
    -  Proof.
    -    intros x c.
    -    rewrite /elementsZ_single N.peano_rec_succ /rev´ -!rev_alt //.
    -  Qed.
    - +    elementsZ_single x (N.succ c) =
    +    elementsZ_single x c ++ (x+Z.of_N c)::nil.
    +
      Lemma elementsZ_single_add : ∀ x c2 c1,
    -    elementsZ_single x (c1 + c2)%N =
    -    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
    -  Proof.
    -    intros x.
    -    induction c2 as [| c2´ IH] using N.peano_ind. {
    -      move ⇒ c1.
    -      rewrite elementsZ_single_base /= app_nil_r N.add_0_r //.
    -    } {
    -      move ⇒ c1.
    -      rewrite N.add_succ_r !elementsZ_single_succ IH app_assoc N2Z.inj_add Z.add_assoc //.
    -    }
    -  Qed.
    - +    elementsZ_single x (c1 + c2)%N =
    +    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
    +
      Lemma elementsZ_single_succ_front : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    x :: elementsZ_single (Z.succ x) c.
    -  Proof.
    -    intros x c.
    -    rewrite -N.add_1_l elementsZ_single_add.
    -    rewrite N.one_succ elementsZ_single_succ elementsZ_single_base /= Z.add_0_r.
    -    by rewrite Z.add_1_r.
    -  Qed.
    - +    elementsZ_single x (N.succ c) =
    +    x :: elementsZ_single (Z.succ x) c.
    +
      Lemma In_elementsZ_single : ∀ c y x,
    -    List.In y (elementsZ_single x c) ↔
    -    (x ≤ y) ∧ (y < (x+Z.of_N c)).
    -  Proof.
    -    induction c as [| IH] using N.peano_ind. {
    -      intros y x.
    -      rewrite elementsZ_single_base Z.add_0_r /=.
    -      omega.
    -    } {
    -      intros y x.
    -      rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r.
    -      split. {
    -        move ⇒ [ | []] //. {
    -          move ⇒ [H_x_le H_y_le].
    -          omega.
    -        } {
    -          move ⇒ <-.
    -          split.
    -            - by apply Z_le_add_r.
    -            - by apply Z.le_refl.
    -        }
    -      } {
    -        move ⇒ [H_x_le] H_y_lt.
    -        omega.
    -      }
    -    }
    -  Qed.
    - +    List.In y (elementsZ_single x c) ↔
    +    (x ≤ y) ∧ (y < (x+Z.of_N c)).
    +
      Lemma In_elementsZ_single1 : ∀ y x,
    -    List.In y (elementsZ_single x (1%N)) ↔
    -    (x = y).
    -  Proof.
    -    intros y x.
    -    rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r.
    -    omega.
    -  Qed.
    +    List.In y (elementsZ_single x (1%N)) ↔
    +    (x = y).

      Lemma length_elementsZ_single : ∀ cx x,
    -    length (elementsZ_single x cx) = N.to_nat cx.
    -  Proof.
    -    induction cx as [| cx´ IH] using N.peano_ind. {
    -      by simpl.
    -    } {
    -      intros x.
    -      rewrite elementsZ_single_succ_front /=.
    -      rewrite IH N2Nat.inj_succ //.
    -    }
    -  Qed.
    - +    length (elementsZ_single x cx) = N.to_nat cx.
    +
      Lemma fold_elementsZ_aux_irrel {A} :
        âˆ€ f c (acc : A) x H1 H2,
    -      fold_elementsZ_aux f acc x c H1 =
    +      fold_elementsZ_aux f acc x c H1 =
          fold_elementsZ_aux f acc x c H2.
    -  Proof.
    -    intros f c.
    -    induction c as [c IH] using (well_founded_ind lt_wf_0).
    -    case_eq c. {
    -      intros H_c acc x; case; intro H_H1; case; intro H_H2.
    -      reflexivity.
    -    } {
    -      intros p H_c acc x; case; intro H_H1; case; intro H_H2.
    -      unfold fold_elementsZ_aux; fold (@fold_elementsZ_aux A).
    -      case (f acc x) ⇒ // acc´.
    -      apply IH.
    -      rewrite H_c.
    -      apply N.lt_pred_l.
    -      discriminate.
    -    }
    -  Qed.
    - +
      Lemma fold_elementsZ_single_pos {A} : ∀ f (acc : A) x p,
    -    fold_elementsZ_single f acc x (N.pos p) =
    +    fold_elementsZ_single f acc x (N.pos p) =
        match f acc x with
    -    | Some acc´ ⇒
    -        fold_elementsZ_single f acc´ (Z.succ x)
    -         (N.pred (N.pos p))
    -    | None ⇒ (true, acc)
    +    | Some acc' ⇒
    +        fold_elementsZ_single f acc' (Z.succ x)
    +         (N.pred (N.pos p))
    +    | None ⇒ (true, acc)
        end.
    -  Proof.
    -    intros f acc x p.
    -    unfold fold_elementsZ_single.
    -    unfold fold_elementsZ_aux.
    -    case: (lt_wf_0 _).
    -    fold (@fold_elementsZ_aux A).
    -    intro.
    -    case (f acc x) ⇒ // acc´.
    -    apply fold_elementsZ_aux_irrel.
    -  Qed.

      Lemma fold_elementsZ_single_zero {A} : ∀ f (acc : A) x,
    -      fold_elementsZ_single f acc x (0%N) = (false, acc).
    -  Proof.
    -    intros f acc x.
    -    unfold fold_elementsZ_single.
    -    case (lt_wf_0 (0%N)); intro.
    -    unfold fold_elementsZ_aux.
    -    reflexivity.
    -  Qed.
    +      fold_elementsZ_single f acc x (0%N) = (false, acc).

      Lemma fold_elementsZ_single_succ {A} : ∀ f (acc : A) x c,
    -    fold_elementsZ_single f acc x (N.succ c) =
    +    fold_elementsZ_single f acc x (N.succ c) =
        match f acc x with
    -      | Some acc´ ⇒
    -          fold_elementsZ_single f acc´ (Z.succ x) c
    -      | None ⇒ (true, acc)
    +      | Some acc' ⇒
    +          fold_elementsZ_single f acc' (Z.succ x) c
    +      | None ⇒ (true, acc)
        end.
    -  Proof.
    -    intros f acc x c.
    -    case c. {
    -      by rewrite fold_elementsZ_single_pos.
    -    } {
    -      intro p; simpl.
    -      rewrite fold_elementsZ_single_pos.
    -      case (f acc x) ⇒ // acc´ /=.
    -      by rewrite Pos.pred_N_succ.
    -    }
    -  Qed.
    - -
    -  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
    + +
    +  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
        match bs with
    -      | nil ⇒ (false, acc)
    -      | (b :: bs´) ⇒
    +      | nil ⇒ (false, acc)
    +      | (b :: bs') ⇒
            match f acc b with
    -        | Some acc´ ⇒ fold_opt f acc´ bs´
    -        | None ⇒ (true, acc)
    +        | Some acc' ⇒ fold_opt f acc' bs'
    +        | None ⇒ (true, acc)
            end
        end.

    -  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    -    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    -    (false, List.rev bs ++ acc).
    -  Proof.
    -    induction bs as [| b bs´ IH] ⇒ acc. {
    -      by simpl.
    -    } {
    -      rewrite /= IH -app_assoc //.
    -    }
    -  Qed.
    - +  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    +    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    +    (false, List.rev bs ++ acc).
    +
    -  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    -    fold_opt f acc (l1 ++ l2) =
    -    (let (ab, acc´) := fold_opt f acc l1 in
    -     if ab then (true, acc´) else fold_opt f acc´ l2).
    -  Proof.
    -    intros f acc l1 l2.
    -    move : acc.
    -    induction l1 as [| b l1´ IH] ⇒ acc. {
    -      rewrite app_nil_l //.
    -    } {
    -      rewrite /=.
    -      case (f acc b); last done.
    -      intro acc´.
    -      rewrite IH //.
    -    }
    -  Qed.
    - +  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    +    fold_opt f acc (l1 ++ l2) =
    +    (let (ab, acc') := fold_opt f acc l1 in
    +     if ab then (true, acc') else fold_opt f acc' l2).
    +

      Lemma fold_elementsZ_single_alt_def {A} : ∀ f c (acc : A) x,
    -     fold_elementsZ_single f acc x c =
    +     fold_elementsZ_single f acc x c =
         fold_opt f acc (elementsZ_single x c).
    -  Proof.
    -    intro f.
    -    induction c as [| IH] using N.peano_ind. {
    -      intros acc x.
    -      rewrite fold_elementsZ_single_zero
    -              elementsZ_single_base /fold_opt //.
    -    } {
    -      intros acc x.
    -      rewrite fold_elementsZ_single_succ
    -              elementsZ_single_succ_front /=.
    -      case (f acc x); last reflexivity.
    -      intro acc´.
    -      apply IH.
    -    }
    -  Qed.
    - +
      Lemma fold_elementsZ_nil {A} : ∀ f (acc : A),
    -     fold_elementsZ f acc nil = (false, acc).
    -  Proof. done. Qed.
    - +     fold_elementsZ f acc nil = (false, acc).
    +
      Lemma fold_elementsZ_cons {A} : ∀ f (acc : A) y c s,
    -    fold_elementsZ f acc ((y, c)::s) =
    -    (let (ab, acc´) := fold_elementsZ_single f acc y c in
    -     if ab then (true, acc´) else fold_elementsZ f acc´ s).
    -  Proof.
    -    intros f acc y c s.
    -    done.
    -  Qed.
    +    fold_elementsZ f acc ((y, c)::s) =
    +    (let (ab, acc') := fold_elementsZ_single f acc y c in
    +     if ab then (true, acc') else fold_elementsZ f acc' s).

      Lemma fold_elementsZ_alt_def_aux : ∀ (s : t) base,
    -    (snd (fold_elementsZ
    -      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    -    elementsZ s ++ base.
    -  Proof.
    -    induction s as [| [y1 c1] IH] ⇒ base. {
    -      rewrite elementsZ_nil /fold_elementsZ /fold_opt /snd
    -        app_nil_l //.
    -    } {
    -      rewrite /elementsZ !fold_elementsZ_cons.
    -      rewrite !fold_elementsZ_single_alt_def !fold_opt_list_cons.
    -      rewrite !IH app_nil_r app_assoc //.
    -    }
    -  Qed.
    - +    (snd (fold_elementsZ
    +      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    +    elementsZ s ++ base.
    +

      Lemma fold_elementsZ_alt_def {A} : ∀ f s (acc : A),
    -     fold_elementsZ f acc s =
    -     fold_opt f acc (rev (elementsZ s)).
    -  Proof.
    -    intro f.
    -    induction s as [| [y1 c1] IH] ⇒ acc. {
    -      by simpl.
    -    } {
    -      rewrite /elementsZ !fold_elementsZ_cons.
    -      rewrite !fold_elementsZ_single_alt_def
    -              fold_opt_list_cons app_nil_r
    -              fold_elementsZ_alt_def_aux rev_app_distr
    -              rev_involutive fold_opt_app.
    -      case (fold_opt f acc (elementsZ_single y1 c1)).
    -      move ⇒ [] //.
    -    }
    -  Qed.
    - -
    -  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    -     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
    -  Proof.
    -    intros x c s.
    -    rewrite /elementsZ fold_elementsZ_cons
    -            !fold_elementsZ_alt_def
    -            fold_elementsZ_single_alt_def.
    -    rewrite !fold_opt_list_cons.
    -    rewrite !app_nil_r !rev_involutive /=.
    -    rewrite fold_elementsZ_alt_def_aux //.
    -  Qed.
    - -
    -  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    -     ((elements_single x c) ++ elements s).
    -  Proof.
    -    intros x c s.
    -    rewrite /elements /elements_single elementsZ_cons.
    -    rewrite !rev_map_alt_def map_app rev_app_distr map_rev rev_involutive //.
    -  Qed.
    - -
    -  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    -     ((elementsZ s2) ++ (elementsZ s1)).
    -  Proof.
    -    induction s1 as [| [x1 c1] s1 IH1]. {
    -      move ⇒ s2.
    -      rewrite elementsZ_nil app_nil_r //.
    -    }
    -    move ⇒ s2.
    -    rewrite -app_comm_cons !elementsZ_cons IH1 -app_assoc //.
    -  Qed.
    - -
    -  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
    -  Proof.
    -    intro y.
    -    done.
    -  Qed.
    - -
    -  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    -     List.In y (elementsZ_single x c) ∨ InZ y s.
    -  Proof.
    -    intros y x c s.
    -    rewrite /InZ elementsZ_cons in_app_iff -in_rev.
    -    firstorder.
    -  Qed.
    - +     fold_elementsZ f acc s =
    +     fold_opt f acc (rev (elementsZ s)).
    + +
    +  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    +     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
    + +
    +  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    +     ((elements_single x c) ++ elements s).
    + +
    +  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    +     ((elementsZ s2) ++ (elementsZ s1)).
    + +
    +  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
    + +
    +  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    +     List.In y (elementsZ_single x c) ∨ InZ y s.
    +
      Lemma InZ_app : ∀ s1 s2 y,
    -     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
    -  Proof.
    -    intros s1 s2 y.
    -    rewrite /InZ elementsZ_app in_app_iff.
    -    tauto.
    -  Qed.
    - +     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
    +
      Lemma InZ_rev : ∀ s y,
    -     InZ y (List.rev s) ↔ InZ y s.
    -  Proof.
    -    intros s x.
    -    rewrite /InZ.
    -    induction s as [| [y c] IH]; first done.
    -    simpl.
    -    rewrite elementsZ_app in_app_iff IH.
    -    rewrite !elementsZ_cons !in_app_iff elementsZ_nil
    -            -!in_rev /=.
    -    tauto.
    -  Qed.
    - +     InZ y (List.rev s) ↔ InZ y s.
    +
      Lemma In_elementsZ_single_dec : ∀ y x c,
    -    {List.In y (elementsZ_single x c)} +
    -    {¬ List.In y (elementsZ_single x c)}.
    -  Proof.
    -    intros y x c.
    -    case (Z_le_dec x y); last first. {
    -      right; rewrite In_elementsZ_single; tauto.
    -    }
    -    case (Z_lt_dec y (x + Z.of_N c)); last first. {
    -      right; rewrite In_elementsZ_single; tauto.
    -    }
    -    left; rewrite In_elementsZ_single; tauto.
    -  Qed.
    - +    {List.In y (elementsZ_single x c)} +
    +    {¬ List.In y (elementsZ_single x c)}.
    +
      Lemma InZ_dec : ∀ y s,
    -     {InZ y s} + {¬InZ y s}.
    -  Proof.
    -    intros y.
    -    induction s as [| [x c] s IH]. {
    -      by right.
    -    }
    -    move : IH ⇒ [] IH. {
    -      by left; rewrite InZ_cons; right.
    -    }
    -    case (In_elementsZ_single_dec y x c). {
    -      by left; rewrite InZ_cons; left.
    -    } {
    -      by right; rewrite InZ_cons; tauto.
    -    }
    -  Qed.
    - -
    -  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
    -  Proof.
    -    intros c x H_c_neq.
    -    rewrite In_elementsZ_single.
    -    split. {
    -      apply Z.le_refl.
    -    } {
    -      apply Z.lt_add_pos_r.
    -      have → : 0 = Z.of_N (0%N) by [].
    -      apply N2Z.inj_lt.
    -      by apply N.neq_0_lt_0.
    -    }
    -  Qed.
    - +     {InZ y s} + {¬InZ y s}.
    + +
    +  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
    +

    -

    comparing intervals

    +

    comparing intervals


      Ltac Z_named_compare_cases H := match goal with
    -    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    -      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
    +    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    +      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
      end.

      Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H.

    -  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    match (interval_compare (y1, c1) (y2, c2)) with
    -      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    -      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    -      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    -      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    match (interval_compare (y1, c1) (y2, c2)) with
    +      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    +      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    +      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
        end.
    -  Proof.
    -    intros y1 c1 y2 c2.
    -    rewrite /interval_compare.
    -    (repeat Z_compare_cases); subst; repeat split;
    -       try (by apply Z.eq_le_incl);
    -       try (by apply Z.lt_le_incl);
    -       try (by left); try (by right).
    - -
    -    apply Z.add_reg_l in H2.
    -    by apply N2Z.inj.
    -  Qed.

    -  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    -    interval_compare (y2, c2) (y1, c1) =
    -    match (interval_compare (y1, c1) (y2, c2)) with
    +  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    +    interval_compare (y2, c2) (y1, c1) =
    +    match (interval_compare (y1, c1) (y2, c2)) with
          | ICR_before ⇒ ICR_after
          | ICR_before_touch ⇒ ICR_after_touch
          | ICR_after ⇒ ICR_before
    @@ -1472,176 +1119,55 @@

    Library MSetsExtra.MSetIntervals

          | ICR_subsume_1 ⇒ ICR_subsume_2
          | ICR_subsume_2 ⇒ ICR_subsume_1
        end.
    -  Proof.
    -    intros y1 c1 y2 c2 H_c12_neq_0.
    -    rewrite /interval_compare.
    -    move : (Z.compare_antisym y1 y2) ⇒ →.
    -    move : (Z.compare_antisym (y1 + Z.of_N c1) (y2 + Z.of_N c2)) ⇒ →.
    -    have H_suff : y1 + Z.of_N c1 ≤ y2 → y2 + Z.of_N c2 ≤ y1 → False. {
    -      move ⇒ H1 H2.
    -      case H_c12_neq_0 ⇒ H_c_neq_0. {
    -        suff : (y1 + Z.of_N c1 ≤ y1). {
    -          apply Z.nle_gt.
    -          by apply Z_lt_add_r.
    -        }
    -        eapply Z.le_trans; eauto.
    -        eapply Z.le_trans; eauto.
    -        apply Z_le_add_r.
    -      } {
    -        suff : (y2 + Z.of_N c2 ≤ y2). {
    -          apply Z.nle_gt.
    -          by apply Z_lt_add_r.
    -        }
    -        eapply Z.le_trans; eauto.
    -        eapply Z.le_trans; eauto.
    -        apply Z_le_add_r.
    -      }
    -    }
    -    repeat Z_compare_cases. {
    -      exfalso; apply H_suff.
    -        - by rewrite H; apply Z.le_refl.
    -        - by rewrite H0; apply Z.le_refl.
    -    } {
    -      exfalso; apply H_suff.
    -        - by rewrite H; apply Z.le_refl.
    -        - by apply Z.lt_le_incl.
    -    } {
    -      exfalso; apply H_suff.
    -        - by apply Z.lt_le_incl.
    -        - by rewrite H0; apply Z.le_refl.
    -    } {
    -      exfalso; apply H_suff.
    -        - by apply Z.lt_le_incl.
    -        - by apply Z.lt_le_incl.
    -    }
    -  Qed.
    - -
    -  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    -    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
    + +
    +  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    +    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
          | ICR_equal ⇒ ICR_subsume_1
          | ICR_subsume_1 ⇒ ICR_subsume_1
          | ICR_subsume_2 ⇒ ICR_subsume_1
          | r ⇒ r
        end.
    -  Proof.
    -    move ⇒ y1 [y2 c2].
    -    rewrite /interval_1_compare /interval_compare.
    -    replace (y1 + Z.of_N 1) with (Z.succ y1); last done.
    -    repeat Z_compare_cases. {
    -      contradict H1.
    -      by apply Zle_not_lt, Zlt_succ_le.
    -    } {
    -      contradict H.
    -      by apply Zle_not_lt, Zlt_succ_le.
    -    }
    -  Qed.
    - -
    -  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    -    match (interval_1_compare y1 (y2, c2)) with
    -      | ICR_before ⇒ Z.succ y1 < y2
    -      | ICR_before_touch ⇒ y2 = Z.succ y1
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ False
    -      | ICR_overlap_before ⇒ False
    -      | ICR_overlap_after ⇒ False
    -      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    -      | ICR_subsume_2 ⇒ False
    + +
    +  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    +    match (interval_1_compare y1 (y2, c2)) with
    +      | ICR_before ⇒ Z.succ y1 < y2
    +      | ICR_before_touch ⇒ y2 = Z.succ y1
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ False
    +      | ICR_overlap_before ⇒ False
    +      | ICR_overlap_after ⇒ False
    +      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    +      | ICR_subsume_2 ⇒ False
        end.
    -  Proof.
    -    intros y1 y2 c2.
    -    move : (interval_compare_elim y1 (1%N) y2 c2).
    -    rewrite interval_1_compare_alt_def.
    -    have H_succ: ∀ z, z + Z.of_N 1 = Z.succ z by done.
    - -
    -    case_eq (interval_compare (y1, 1%N) (y2, c2)) ⇒ H_comp;
    -      rewrite ?H_succ ?Z.lt_succ_r ?Z.le_succ_l //. {
    -      move ⇒ [H_lt] [H_le] _.
    -      contradict H_lt.
    -      by apply Zle_not_lt.
    -    } {
    -      move ⇒ [_] [H_lt] H_le.
    -      contradict H_lt.
    -      by apply Zle_not_lt.
    -    } {
    -      move ⇒ [->] <-.
    -      rewrite ?Z.lt_succ_r.
    -      right.
    -      split; apply Z.le_refl.
    -    } {
    -      tauto.
    -    } {
    -      case (N.zero_or_succ c2). {
    -        move ⇒ → _; by left.
    -      } {
    -        move ⇒ [c2´] →.
    -        rewrite !N2Z.inj_succ Z.add_succ_r -Z.succ_le_mono Z.le_succ_l.
    -        move ⇒ [H_y1_le] [H_le_y1].
    -        suff → : y1 = y2. {
    -          move ⇒ [] H_pre; contradict H_pre. {
    -            apply Z.lt_irrefl.
    -          } {
    -            apply Zle_not_lt, Z_le_add_r.
    -          }
    -        }
    -        apply Z.le_antisymm ⇒ //.
    -        eapply Z.le_trans; last apply H_le_y1.
    -        apply Z_le_add_r.
    -      }
    -    }
    -  Qed.
    - +
    -

    Alternative definition of addZ

    +

    Alternative definition of addZ

      Lemma addZ_aux_alt_def : ∀ x s acc,
    -    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
    -  Proof.
    -    intros y1 s.
    -    unfold addZ.
    -    induction s as [| [y2 c2] IH] ⇒ acc. {
    -      rewrite /addZ_aux /addZ /= /rev´ !rev_append_rev /= app_nil_r //.
    -    } {
    -      unfold addZ_aux.
    -      case (interval_1_compare y1 (y2, c2)); fold addZ_aux;
    -        rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    -      rewrite (IH ((y2,c2)::acc)) (IH ((y2,c2)::nil)).
    -      rewrite /= app_assoc_reverse //.
    -    }
    -  Qed.
    - +    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
    +
      Lemma addZ_alt_def : ∀ x s,
    -    addZ x s =
    +    addZ x s =
        match s with
    -    | nil ⇒ (x, (1%N))::nil
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ (x, (1%N))::s
    -          | ICR_before_touch ⇒ (x, N.succ c)::l
    -          | ICR_after ⇒ (y,c)::(addZ x l)
    -          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    -          | _ ⇒ (y, c)::l
    +    | nil ⇒ (x, (1%N))::nil
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ (x, (1%N))::s
    +          | ICR_before_touch ⇒ (x, N.succ c)::l
    +          | ICR_after ⇒ (y,c)::(addZ x l)
    +          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    +          | _ ⇒ (y, c)::l
            end
        end.
    -  Proof.
    -    intros x s.
    -    rewrite /addZ.
    -    case s ⇒ //.
    -    move ⇒ [y c] .
    -    unfold addZ_aux.
    -    case (interval_1_compare x (y, c)); fold addZ_aux;
    -      rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    -    rewrite addZ_aux_alt_def //.
    -  Qed.

    @@ -1649,413 +1175,145 @@

    Library MSetsExtra.MSetIntervals

    -

    Auxiliary Lemmata about Invariant

    +

    Auxiliary Lemmata about Invariant


      Lemma interval_list_elements_greater_cons : ∀ z x c s,
    -    interval_list_elements_greater z ((x, c) :: s) = true ↔
    -    (z < x).
    -  Proof.
    -    intros z x c s.
    -    rewrite /=.
    -    apply Z.ltb_lt.
    -  Qed.
    +    interval_list_elements_greater z ((x, c) :: s) = true ↔
    +    (z < x).

      Lemma interval_list_elements_greater_impl : ∀ x y s,
    -    (y ≤ x) →
    -    interval_list_elements_greater x s = true →
    -    interval_list_elements_greater y s = true.
    -  Proof.
    -    intros x y s.
    -    case s ⇒ //.
    -    move ⇒ [z c] .
    -    rewrite /interval_list_elements_greater.
    -    move ⇒ H_y_leq /Z.ltb_lt H_x_lt.
    -    apply Z.ltb_lt.
    -    eapply Z.le_lt_trans; eauto.
    -  Qed.
    +    (y ≤ x) →
    +    interval_list_elements_greater x s = true →
    +    interval_list_elements_greater y s = true.

    -  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.
    -  Proof.
    -    by [].
    -  Qed.
    +  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.

    -  Lemma Ok_nil : Ok nil ↔ True.
    -  Proof.
    -    rewrite /Ok /IsOk /interval_list_invariant /is_encoded_elems_list //.
    -  Qed.
    +  Lemma Ok_nil : Ok nil ↔ True.

      Lemma is_encoded_elems_list_app : ∀ l1 l2,
    -    is_encoded_elems_list (l1 ++ l2) ↔
    -    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).
    -  Proof.
    -    intros l1 l2.
    -    rewrite /is_encoded_elems_list.
    -    setoid_rewrite in_app_iff.
    -    split; firstorder.
    -  Qed.
    +    is_encoded_elems_list (l1 ++ l2) ↔
    +    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).

      Lemma is_encoded_elems_list_rev : ∀ l,
    -    is_encoded_elems_list (List.rev l) ↔
    +    is_encoded_elems_list (List.rev l) ↔
        is_encoded_elems_list l.
    -  Proof.
    -    intros l.
    -    rewrite /is_encoded_elems_list.
    -    split; (
    -      move ⇒ H x H_in;
    -      apply H;
    -      move : H_in;
    -      rewrite -in_rev ⇒ //
    -    ).
    -  Qed.
    - -
    -  Lemma interval_list_invariant_cons : ∀ y c ,
    -    interval_list_invariant ((y, c) :: ) = true ↔
    -    (interval_list_elements_greater (y+Z.of_N c) = true ∧
    -      ((c ≠ 0)%N) ∧ interval_list_invariant = true).
    -  Proof.
    -    rewrite /interval_list_invariant -/interval_list_invariant.
    -    intros y c .
    -    rewrite !Bool.andb_true_iff negb_true_iff.
    -    split. {
    -      move ⇒ [] [H_inf] /N.eqb_neq H_c H_s´. tauto.
    -    } {
    -      move ⇒ [H_inf] [/N.eqb_neq H_c] H_s´. tauto.
    -    }
    -  Qed.
    +
    +  Lemma interval_list_invariant_cons : ∀ y c s',
    +    interval_list_invariant ((y, c) :: s') = true ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧
    +      ((c ≠ 0)%N) ∧ interval_list_invariant s' = true).
    +
      Lemma interval_list_invariant_sing : ∀ x c,
    -    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.
    -  Proof.
    -    intros x c.
    -    rewrite interval_list_invariant_cons.
    -    split; tauto.
    -  Qed.
    +    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.

    -  Lemma Ok_cons : ∀ y c , Ok ((y, c) :: ) ↔
    -    (interval_list_elements_greater (y+Z.of_N c) = true ∧ ((c ≠ 0)%N) ∧
    -     is_encoded_elems_list (elementsZ_single y c) ∧ Ok ).
    -  Proof.
    -    intros y c .
    -    rewrite /Ok /IsOk interval_list_invariant_cons elementsZ_cons is_encoded_elems_list_app
    -       is_encoded_elems_list_rev.
    -    tauto.
    -  Qed.
    +  Lemma Ok_cons : ∀ y c s', Ok ((y, c) :: s') ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧ ((c ≠ 0)%N) ∧
    +     is_encoded_elems_list (elementsZ_single y c) ∧ Ok s').

      Lemma Nin_elements_greater : ∀ s y,
    -     interval_list_elements_greater y s = true →
    -     interval_list_invariant s = true →
    -     âˆ€ x, x ≤ y → ~(InZ x s).
    -  Proof.
    -    induction s as [| [z c] IH]. {
    -      intros y _ _ x _.
    -      by simpl.
    -    } {
    -      move ⇒ y /interval_list_elements_greater_cons H_y_lt
    -        /interval_list_invariant_cons [H_gr] [H_c] H_s´
    -        x H_x_le.
    -      rewrite InZ_cons In_elementsZ_single.
    -      have H_x_lt : x < z by eapply Z.le_lt_trans; eauto.
    - -
    -      move ⇒ []. {
    -        move ⇒ [H_z_leq] _; contradict H_z_leq.
    -        by apply Z.nle_gt.
    -      } {
    -        eapply IH; eauto.
    -        by apply Z_lt_le_add_r.
    -      }
    -    }
    -  Qed.
    - +     interval_list_elements_greater y s = true →
    +     interval_list_invariant s = true →
    +     âˆ€ x, x ≤ y → ~(InZ x s).
    +
      Lemma Nin_elements_greater_equal :
         âˆ€ x s,
    -       interval_list_elements_greater x s = true →
    -       interval_list_invariant s = true →
    -       Â¬ (InZ x s).
    -  Proof.
    -    move ⇒ x s H_inv H_gr.
    -    apply (Nin_elements_greater s x) ⇒ //.
    -    apply Z.le_refl.
    -  Qed.
    +       interval_list_elements_greater x s = true →
    +       interval_list_invariant s = true →
    +       Â¬ (InZ x s).

      Lemma interval_list_elements_greater_alt_def : ∀ s y,
    -     interval_list_invariant s = true →
    -
    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, x ≤ y → ~(InZ x s))).
    -  Proof.
    -    intros s y H_inv.
    -    split. {
    -      move ⇒ H_gr.
    -      apply Nin_elements_greater ⇒ //.
    -    } {
    -      move : H_inv.
    -      case s as [| [x2 c] ] ⇒ //.
    -      rewrite interval_list_invariant_cons interval_list_elements_greater_cons.
    -      move ⇒ [_] [H_c_neq] _ H.
    -      apply Z.nle_gt ⇒ H_ge.
    -      apply (H x2) ⇒ //.
    -      rewrite InZ_cons; left.
    -      apply In_elementsZ_single_hd ⇒ //.
    -    }
    -  Qed.
    - +     interval_list_invariant s = true →
    +
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, x ≤ y → ~(InZ x s))).
    +
      Lemma interval_list_elements_greater_alt2_def : ∀ s y,
    -     interval_list_invariant s = true →
    +     interval_list_invariant s = true →

    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, InZ x s → y < x)).
    -  Proof.
    -    intros s y H.
    -    rewrite interval_list_elements_greater_alt_def //.
    -    firstorder.
    -    apply Z.nle_gt.
    -    move ⇒ H_lt.
    -    eapply H0; eauto.
    -  Qed.
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, InZ x s → y < x)).

      Lemma interval_list_elements_greater_intro : ∀ s y,
    -     interval_list_invariant s = true →
    -     (∀ x, InZ x s → y < x) →
    -     interval_list_elements_greater y s = true.
    -  Proof.
    -    intros s y H1 H2.
    -    rewrite interval_list_elements_greater_alt2_def //.
    -  Qed.
    +     interval_list_invariant s = true →
    +     (∀ x, InZ x s → y < x) →
    +     interval_list_elements_greater y s = true.

      Lemma interval_list_elements_greater_app_elim_1 : ∀ s1 s2 y,
    -    interval_list_elements_greater y (s1 ++ s2) = true →
    -    interval_list_elements_greater y s1 = true.
    -  Proof.
    -    intros s1 s2 y.
    -    case s1 ⇒ //.
    -  Qed.
    +    interval_list_elements_greater y (s1 ++ s2) = true →
    +    interval_list_elements_greater y s1 = true.

      Lemma interval_list_invariant_app_intro : ∀ s1 s2,
    -      interval_list_invariant s1 = true →
    -      interval_list_invariant s2 = true →
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -      interval_list_invariant (s1 ++ s2) = true.
    -  Proof.
    -    induction s1 as [| [y1 c1] s1´ IH]. {
    -      move ⇒ s2 _ //.
    -    } {
    -      move ⇒ s2.
    -      rewrite -app_comm_cons !interval_list_invariant_cons.
    -      move ⇒ [H_gr] [H_c1_neq] H_inv_s1´ H_inv_s2 H_inz_s2.
    -      split; last split. {
    -        move : H_gr H_inz_s2.
    -        case s1´ as [| [y1´ c1´] s1´´]; last done.
    -        move ⇒ _ H_inz_s2.
    -        rewrite app_nil_l.
    -        apply interval_list_elements_greater_intro ⇒ //.
    -        move ⇒ x H_x_in_s2.
    -        suff H_inz : InZ (Z.pred (y1 + Z.of_N c1)) ((y1, c1) :: nil). {
    -          move : (H_inz_s2 _ _ H_inz H_x_in_s2).
    -          by rewrite Z.succ_pred.
    -        }
    -        rewrite InZ_cons In_elementsZ_single -Z.lt_le_pred; left.
    -        split. {
    -          by apply Z_lt_add_r.
    -        } {
    -          apply Z.lt_pred_l.
    -        }
    -      } {
    -        assumption.
    -      } {
    -        apply IH ⇒ //.
    -        intros x1 x2 H_in_x1 H_in_x2.
    -        apply H_inz_s2 ⇒ //.
    -        rewrite InZ_cons; by right.
    -      }
    -    }
    -  Qed.
    - +      interval_list_invariant s1 = true →
    +      interval_list_invariant s2 = true →
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +      interval_list_invariant (s1 ++ s2) = true.
    +
      Lemma interval_list_invariant_app_elim : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true →
    -      interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
    -  Proof.
    -    move ⇒ s1 s2.
    -    induction s1 as [| [y1 c1] s1´ IH]; first done.
    -    rewrite -app_comm_cons !interval_list_invariant_cons.
    - -
    -    move ⇒ [H_gr] [H_c1_neq_0] /IH [H_inv_s1´] [H_inv_s2] H_in_s1´_s2.
    -    repeat split; try assumption. {
    -      move : H_gr.
    -      case s1´; first done.
    -      move ⇒ [y2 c2] s1´´.
    -      rewrite interval_list_elements_greater_cons //.
    -    } {
    -      move ⇒ x1 x2.
    -      rewrite InZ_cons In_elementsZ_single.
    -      move ⇒ []; last by apply H_in_s1´_s2.
    -      move ⇒ [] H_y1_le H_x1_lt H_x2_in.
    -      move : H_gr.
    -      rewrite interval_list_elements_greater_alt2_def; last first. {
    -          by apply interval_list_invariant_app_intro.
    -      }
    -      move ⇒ H_in_s12´.
    -      have : (y1 + Z.of_N c1 < x2). {
    -        apply H_in_s12´.
    -        rewrite InZ_app.
    -        by right.
    -      }
    -      move ⇒ H_lt_x2.
    -      apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -      by apply Zlt_le_succ.
    -    }
    -  Qed.
    - +      interval_list_invariant (s1 ++ s2) = true →
    +      interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
    +
      Lemma interval_list_invariant_app_iff : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true ↔
    -      (interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
    -  Proof.
    -    intros s1 s2.
    -    split. {
    -      by apply interval_list_invariant_app_elim.
    -    } {
    -      move ⇒ [] H_inv_s1 [].
    -      by apply interval_list_invariant_app_intro.
    -    }
    -  Qed.
    - +      interval_list_invariant (s1 ++ s2) = true ↔
    +      (interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
    +
      Lemma interval_list_invariant_snoc_intro : ∀ s1 y2 c2,
    -      interval_list_invariant s1 = true →
    -      (c2 ≠ 0)%N →
    -      (∀ x, InZ x s1 → Z.succ x < y2) →
    -      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
    -  Proof.
    -    intros s1 y2 c2 H_inv_s1 H_c2_neq H_in_s1.
    -    apply interval_list_invariant_app_intro ⇒ //. {
    -      rewrite interval_list_invariant_cons; done.
    -    } {
    -      intros x1 x2 H_in_x1.
    -      rewrite InZ_cons.
    -      move ⇒ [] //.
    -      rewrite In_elementsZ_single.
    -      move ⇒ [H_y2_le] _.
    -      eapply Z.lt_le_trans; eauto.
    -    }
    -  Qed.
    - +      interval_list_invariant s1 = true →
    +      (c2 ≠ 0)%N →
    +      (∀ x, InZ x s1 → Z.succ x < y2) →
    +      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
    +

    -

    Properties of In and InZ

    +

    Properties of In and InZ


    -  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    -    (Enc.encode (Enc.decode x) = x).
    -  Proof.
    -    intros x s.
    -    rewrite /Ok /IsOk /InZ.
    -    move ⇒ [_] H_enc H_in_x.
    -    move : (H_enc _ H_in_x) ⇒ [] <-.
    -    rewrite Enc.decode_encode_ok //.
    -  Qed.
    - -
    -  Lemma In_alt_def : ∀ x s, Ok s →
    -    (In x s ↔ List.In x (elements s)).
    -  Proof.
    -    intros x s H_ok.
    -    rewrite /In InA_alt /elements rev_map_alt_def.
    -    split. {
    -      move ⇒ [y] [H_y_eq].
    -      rewrite -!in_rev !in_map_iff.
    -      move ⇒ [] [H_y_eq´] H_x´_in.
    -      suff H_x´_eq : (Enc.encode x = ). {
    -        âˆƒ .
    -        split ⇒ //.
    -        rewrite -H_x´_eq Enc.decode_encode_ok //.
    -      }
    -      have H_enc_list : is_encoded_elems_list (elementsZ s). {
    -        move : H_ok.
    -        rewrite /Ok /IsOk ⇒ [] [] //.
    -      }
    -      move : (H_enc_list _ H_x´_in) ⇒ [x´´] H_x´_eq.
    -      move : H_y_eq´.
    -      rewrite -!H_x´_eq Enc.decode_encode_ok ⇒ H_y_eq´.
    -      subst.
    -      suff → : Z.eq (Enc.encode x) (Enc.encode y) by done.
    -      by rewrite Enc.encode_eq.
    -    } {
    -      move ⇒ H_enc_in.
    -      âˆƒ x.
    -      split ⇒ //.
    -      apply Enc.E.eq_equiv.
    -    }
    -  Qed.
    - -
    -  Lemma In_InZ : ∀ x s, Ok s →
    -    (In x s ↔ InZ (Enc.encode x) s).
    -  Proof.
    -    intros x s H_ok.
    -    rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff.
    -    split; last first. {
    -      âˆƒ (Enc.encode x).
    -      by rewrite Enc.decode_encode_ok.
    -    }
    -    move ⇒ [y] [<-] H_y_in.
    -    suff : ∃ z, (Enc.encode z = y). {
    -      move ⇒ [z] H_y_eq.
    -      move : H_y_in.
    -      by rewrite -!H_y_eq Enc.decode_encode_ok.
    -    }
    -    suff H_enc_list : is_encoded_elems_list (elementsZ s). {
    -      by apply H_enc_list.
    -    }
    -    apply H_ok.
    -  Qed.
    - -
    -  Lemma InZ_In : ∀ x s, Ok s →
    -    (InZ x s → In (Enc.decode x) s).
    -  Proof.
    -    intros x s H_ok.
    -    rewrite In_InZ /InZ.
    -    move : H_ok.
    -    rewrite /Ok /IsOk /is_encoded_elems_list.
    -    move ⇒ [_] H_enc.
    -    move ⇒ H_in.
    -    move : (H_enc _ H_in) ⇒ [e] H_x.
    -    subst.
    -    by rewrite Enc.decode_encode_ok.
    -  Qed.
    +  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    +    (Enc.encode (Enc.decode x) = x).
    + +
    +  Lemma In_alt_def : ∀ x s, Ok s →
    +    (In x s ↔ List.In x (elements s)).
    + +
    +  Lemma In_InZ : ∀ x s, Ok s →
    +    (In x s ↔ InZ (Enc.encode x) s).
    + +
    +  Lemma InZ_In : ∀ x s, Ok s →
    +    (InZ x s → In (Enc.decode x) s).

    @@ -2063,625 +1321,219 @@

    Library MSetsExtra.MSetIntervals

    -

    Membership specification

    +

    Membership specification


      Lemma memZ_spec :
    -    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
    -  Proof.
    -    induction s as [| [y c] IH]. {
    -      intros x _.
    -      rewrite /InZ elementsZ_nil //.
    -    } {
    -      move ⇒ x /Ok_cons [H_inf] [H_c] [H_is_enc] H_s´.
    -      rewrite /InZ /memZ elementsZ_cons -/memZ.
    -      rewrite in_app_iff -!in_rev In_elementsZ_single.
    - -
    -      case_eq (x <? y). {
    -        move ⇒ /Z.ltb_lt H_x_lt.
    -        split; first done.
    -        move ⇒ []. {
    -          move ⇒ H_x_in; contradict H_x_in.
    -          apply Nin_elements_greater with (y := (y + Z.of_N c)) ⇒ //. {
    -            apply H_s´.
    -          } {
    -            apply Z_lt_le_add_r ⇒ //.
    -          }
    -        } {
    -          move ⇒ [H_y_le]; contradict H_y_le.
    -          by apply Z.nle_gt.
    -        }
    -      } {
    -        move ⇒ /Z.ltb_ge H_y_le.
    -        case_eq (x <? y + Z.of_N c). {
    -          move ⇒ /Z.ltb_lt H_x_lt.
    -          split; last done.
    -          move ⇒ _.
    -          by right.
    -        } {
    -          move ⇒ /Z.ltb_ge H_yc_le.
    -          rewrite IH.
    -          split; first tauto.
    -          move ⇒ [] //.
    -          move ⇒ [_] H_x_lt; contradict H_x_lt.
    -          by apply Z.nlt_ge.
    -        }
    -      }
    -    }
    -  Qed.
    - +    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
    +
      Lemma mem_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.
    -  Proof.
    -    intros s x Hs.
    -    rewrite /mem memZ_spec In_InZ //.
    -  Qed.
    +   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.

      Lemma merge_interval_size_neq_0 : ∀ x1 c1 x2 c2,
    -     (c1 ≠ 0%N) →
    -     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.
    -  Proof.
    -    intros x1 c1 x2 c2.
    -    rewrite /merge_interval_size !N.neq_0_lt_0 N.max_lt_iff.
    -    by left.
    -  Qed.
    +     (c1 ≠ 0%N) →
    +     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.

    -

    insert if length not 0

    +

    insert if length not 0


      Lemma interval_list_invariant_insert_intervalZ_guarded : ∀ x c s,
    -    interval_list_invariant s = true →
    -    interval_list_elements_greater (x + Z.of_N c) s = true →
    -    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
    -  Proof.
    -    intros x c s.
    -    rewrite /insert_intervalZ_guarded.
    -    case_eq (c =? 0)%N ⇒ //.
    -    move ⇒ /N.eqb_neq.
    -    rewrite interval_list_invariant_cons.
    -    tauto.
    -  Qed.
    +    interval_list_invariant s = true →
    +    interval_list_elements_greater (x + Z.of_N c) s = true →
    +    interval_list_invariant (insert_intervalZ_guarded x c s) = true.

      Lemma interval_list_elements_greater_insert_intervalZ_guarded : ∀ x c y s,
    -    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    -    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
    -  Proof.
    -    intros x c y s.
    -    rewrite /insert_intervalZ_guarded.
    -    case (c =? 0)%N ⇒ //.
    -    rewrite /interval_list_elements_greater Z.ltb_lt //.
    -  Qed.
    +    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    +    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).

      Lemma insert_intervalZ_guarded_app : ∀ x c s1 s2,
    -    (insert_intervalZ_guarded x c s1) ++ s2 =
    -    insert_intervalZ_guarded x c (s1 ++ s2).
    -  Proof.
    -    intros x c s1 s2.
    -    rewrite /insert_intervalZ_guarded.
    -    case (N.eqb c 0) ⇒ //.
    -  Qed.
    +    (insert_intervalZ_guarded x c s1) ++ s2 =
    +    insert_intervalZ_guarded x c (s1 ++ s2).

      Lemma insert_intervalZ_guarded_rev_nil_app : ∀ x c s,
    -    rev (insert_intervalZ_guarded x c nil) ++ s =
    +    rev (insert_intervalZ_guarded x c nil) ++ s =
        insert_intervalZ_guarded x c s.
    -  Proof.
    -    intros x c s.
    -    rewrite /insert_intervalZ_guarded.
    -    case (N.eqb c 0) ⇒ //.
    -  Qed.

    Lemma elementsZ_insert_intervalZ_guarded : ∀ x c s,
    -    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
    -  Proof.
    -    intros x c s.
    -    rewrite /insert_intervalZ_guarded.
    -    case_eq (c =? 0)%N ⇒ //.
    -    move ⇒ /N.eqb_eq →.
    -    rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //.
    -  Qed.
    +    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).

      Lemma InZ_insert_intervalZ_guarded : ∀ y x c s,
    -    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).
    -  Proof.
    -    intros y x c s.
    -    rewrite /InZ elementsZ_insert_intervalZ_guarded //.
    -  Qed.
    +    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).

    -

    Merging intervals

    +

    Merging intervals


      Lemma merge_interval_size_add : ∀ x c1 c2,
    -     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.
    -  Proof.
    -    intros x c1 c2.
    -    rewrite /merge_interval_size.
    -    replace (x + Z.of_N c1 + Z.of_N c2 - x) with
    -            (Z.of_N c1 + Z.of_N c2) by omega.
    -    rewrite -N2Z.inj_add N2Z.id.
    -    apply N.max_r, N.le_add_r.
    -  Qed.
    +     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.

      Lemma merge_interval_size_eq_max : ∀ y1 c1 y2 c2,
    -     y1 ≤ y2 + Z.of_N c2 →
    -     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    -     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).
    -  Proof.
    -    intros y1 c1 y2 c2 H_y1_le.
    -    rewrite /merge_interval_size N2Z.inj_max Z2N.id; last first. {
    -      by apply Zle_minus_le_0.
    -    }
    -    rewrite -Z.add_max_distr_l.
    -    replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by omega.
    -    done.
    -  Qed.
    +     y1 ≤ y2 + Z.of_N c2 →
    +     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    +     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).

      Lemma merge_interval_size_invariant : ∀ y1 c1 y2 c2 z s,
    -    interval_list_invariant s = true →
    -    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    -    y2 + Z.of_N c2 ≤ z →
    -    interval_list_elements_greater z s = true →
    -    (c1 ≠ 0)%N →
    -    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    -   true.
    -  Proof.
    -    intros y1 c1 y2 c2 z s H_inv H_le H_le_z H_gr H_c1_neq_0.
    -    rewrite interval_list_invariant_cons.
    -    split; last split. {
    -      rewrite merge_interval_size_eq_max; last first. {
    -        eapply Z.le_trans; last apply H_le.
    -        apply Z_le_add_r.
    -      } {
    -        rewrite Z.max_r ⇒ //.
    -        eapply interval_list_elements_greater_impl; first apply H_le_z.
    -        done.
    -      }
    -    } {
    -      apply merge_interval_size_neq_0.
    -      assumption.
    -    } {
    -      assumption.
    -    }
    -  Qed.
    - +    interval_list_invariant s = true →
    +    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    +    y2 + Z.of_N c2 ≤ z →
    +    interval_list_elements_greater z s = true →
    +    (c1 ≠ 0)%N →
    +    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    +   true.
    +
      Lemma In_merge_interval : ∀ x1 c1 x2 c2 y,
    -    x1 ≤ x2 →
    -    x2 ≤ x1 + Z.of_N c1 → (
    -    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    -    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
    -  Proof.
    -    intros x1 c1 x2 c2 y H_x1_le H_x2_le.
    -    rewrite !In_elementsZ_single merge_interval_size_eq_max;
    -      last first. {
    -      eapply Z.le_trans; eauto.
    -      by apply Z_le_add_r.
    -    }
    -    rewrite Z.max_lt_iff.
    -    split. {
    -      move ⇒ [H_x_le] [] H_y_lt. {
    -        by left.
    -      } {
    -        case_eq (Z.leb x2 y). {
    -          move ⇒ /Z.leb_le H_y´_le.
    -          by right.
    -        } {
    -          move ⇒ /Z.leb_gt H_y_lt_x2.
    -          left.
    -          split ⇒ //.
    -          eapply Z.lt_le_trans; eauto.
    -        }
    -      }
    -    } {
    -      move ⇒ []. {
    -        tauto.
    -      } {
    -        move ⇒ [H_x2_le´] H_y_lt.
    -        split. {
    -          eapply Z.le_trans; eauto.
    -        } {
    -          by right.
    -        }
    -      }
    -    }
    -  Qed.
    - +    x1 ≤ x2 →
    +    x2 ≤ x1 + Z.of_N c1 → (
    +    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    +    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
    +
      Lemma insert_interval_begin_spec : ∀ y s x c,
    -     interval_list_invariant s = true →
    -     interval_list_elements_greater x s = true →
    -     (c ≠ 0)%N →
    -      (
    -     interval_list_invariant (insert_interval_begin x c s) = true ∧
    -     (InZ y (insert_interval_begin x c s) ↔
    -     (List.In y (elementsZ_single x c) ∨ InZ y s))).
    -  Proof.
    -    intros y.
    -    induction s as [| [ ] IH]. {
    -      intros x c _ H_c_neq H_z_lt.
    -      rewrite /insert_interval_begin InZ_cons interval_list_invariant_cons //.
    -    } {
    -      intros x c.
    -      rewrite interval_list_invariant_cons
    -       interval_list_elements_greater_cons.
    -      move ⇒ [H_gr] [H_c´_neq_0] H_inv_s´ H_x_lt H_c_neq_0.
    -      unfold insert_interval_begin.
    -      Z_named_compare_cases H_y´; fold insert_interval_begin. {
    -        subst.
    -        rewrite !InZ_cons elementsZ_single_add in_app_iff.
    -        split; last tauto.
    -        rewrite interval_list_invariant_cons N2Z.inj_add
    -          Z.add_assoc N.eq_add_0.
    -        tauto.
    -      } {
    -        rewrite !InZ_cons !interval_list_invariant_cons
    -          interval_list_elements_greater_cons.
    -        repeat split ⇒ //.
    -      } {
    -        set c´´ := merge_interval_size x c .
    -        have H_x_lt´ : x < + Z.of_N . {
    -          eapply Z.lt_le_trans with (m := ) ⇒ //.
    -          by apply Z_le_add_r.
    -        }
    -
    -        have H_pre : interval_list_elements_greater x = true. {
    -          eapply interval_list_elements_greater_impl; eauto.
    -          by apply Z.lt_le_incl.
    -        }
    -        have H_pre2 : c´´ ≠ 0%N. {
    -          by apply merge_interval_size_neq_0.
    -        }
    -        move : (IH x c´´ H_inv_s´ H_pre H_pre2) ⇒ {IH} {H_pre} {H_pre2} [->] →.
    - -
    -        split; first reflexivity.
    -        unfold c´´; clear c´´.
    -        rewrite In_merge_interval. {
    -          rewrite InZ_cons.
    -          tauto.
    -        } {
    -          by apply Z.lt_le_incl.
    -        } {
    -          by apply Z.lt_le_incl.
    -        }
    -      }
    -    }
    -  Qed.
    - +     interval_list_invariant s = true →
    +     interval_list_elements_greater x s = true →
    +     (c ≠ 0)%N →
    +      (
    +     interval_list_invariant (insert_interval_begin x c s) = true ∧
    +     (InZ y (insert_interval_begin x c s) ↔
    +     (List.In y (elementsZ_single x c) ∨ InZ y s))).
    +
    -

    add specification

    +

    add specification

      Lemma addZ_InZ :
    -   âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
    -  Proof.
    -    move ⇒ s x y.
    -    induction s as [| [z c] IH]. {
    -      move ⇒ _.
    -      rewrite /InZ addZ_alt_def
    -              elementsZ_cons elementsZ_nil app_nil_l -in_rev
    -              In_elementsZ_single1 /=.
    -      firstorder.
    -    } {
    -      move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c´.
    -      move : (IH H_inv_c´) ⇒ {IH} IH.
    -      rewrite addZ_alt_def.
    -      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    -      move : (interval_1_compare_elim x z c).
    -      case (interval_1_compare x (z, c));
    -        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    -        move ⇒ →.
    -        rewrite elementsZ_single_succ_front /=.
    -        tauto.
    -      } {
    -        move ⇒ [] // H_x_in.
    -        split; first tauto.
    -        move ⇒ [] // <-.
    -        left.
    -        by rewrite In_elementsZ_single.
    -      } {
    -        rewrite IH.
    -        tauto.
    -      } {
    -        move ⇒ H_x_eq.
    -        have → : (InZ y (insert_interval_begin z (N.succ c) ) ↔
    -                   List.In y (elementsZ_single z (N.succ c)) ∨ InZ y ). {
    -          eapply insert_interval_begin_spec. {
    -            by apply H_inv_c´.
    -          } {
    -            eapply interval_list_elements_greater_impl; eauto.
    -            apply Z_le_add_r.
    -          } {
    -            by apply N.neq_succ_0.
    -          }
    -        }
    -        rewrite -H_x_eq elementsZ_single_succ in_app_iff /=.
    -        tauto.
    -      }
    -    }
    -  Qed.
    - +   âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
    +
      Lemma addZ_invariant : ∀ s x,
    -    interval_list_invariant s = true →
    -    interval_list_invariant (addZ x s) = true.
    -  Proof.
    -    move ⇒ s x.
    -    induction s as [| [z c] IH]. {
    -      move ⇒ _.
    -      by simpl.
    -    } {
    -      move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0]
    -              H_inv_c´.
    -      move : (IH H_inv_c´) ⇒ {IH} IH.
    -      rewrite addZ_alt_def.
    -      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    -      move : (interval_1_compare_elim x z c).
    -      case_eq (interval_1_compare x (z, c)) ⇒ H_comp;
    -        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    -        move ⇒ H_z_gt.
    -        rewrite interval_list_invariant_cons /= !andb_true_iff !H_succ.
    -        repeat split ⇒ //. {
    -          by apply Z.ltb_lt.
    -        } {
    -          apply negb_true_iff, N.eqb_neq ⇒ //.
    -        }
    -      } {
    -        move ⇒ ?; subst.
    -        rewrite /= !andb_true_iff.
    -        repeat split ⇒ //. {
    -          move : H_greater.
    -          rewrite Z.add_succ_l -Z.add_succ_r N2Z.inj_succ //.
    -        } {
    -          apply negb_true_iff, N.eqb_neq ⇒ //.
    -          apply N.neq_succ_0.
    -        }
    -      } {
    -        move ⇒ [] // _.
    -        rewrite interval_list_invariant_cons /=.
    -        tauto.
    -      } {
    -        rewrite interval_list_invariant_cons.
    -        move ⇒ H_lt_x.
    -        repeat split ⇒ //.
    -        apply interval_list_elements_greater_intro ⇒ //.
    -        move ⇒ xx.
    -        rewrite addZ_InZ ⇒ //.
    -        move ⇒ [<- //|].
    -        apply interval_list_elements_greater_alt2_def ⇒ //.
    -      } {
    -        move ⇒ H_x_eq.
    -        apply insert_interval_begin_spec ⇒ //. {
    -          eapply interval_list_elements_greater_impl; eauto.
    -          apply Z_le_add_r.
    -        } {
    -          by apply N.neq_succ_0.
    -        }
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant s = true →
    +    interval_list_invariant (addZ x s) = true.
    +
      Global Instance add_ok s x : ∀ `(Ok s), Ok (add x s).
    -  Proof.
    -    move ⇒ H_ok_s.
    -    move : (H_ok_s).
    -    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    -    move ⇒ [H_isok_s] H_pre.
    -    split. {
    -      apply addZ_invariant ⇒ //.
    -    } {
    -      intros y.
    -      move : (addZ_InZ s (Enc.encode x) y H_isok_s).
    -      rewrite /InZ ⇒ →.
    -      move ⇒ []. {
    -        move ⇒ <-.
    -        by ∃ x.
    -      } {
    -        move ⇒ /H_pre //.
    -      }
    -    }
    -  Qed.
    - +
      Lemma add_spec :
       âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
    -  Proof.
    -    intros s x y Hs.
    -    have Hs´ := (add_ok s x Hs).
    -    rewrite !In_InZ.
    -    rewrite /add addZ_InZ. {
    -      rewrite -Enc.encode_eq; firstorder.
    -    } {
    -      apply Hs.
    -    }
    -  Qed.
    - +     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
    +
    -

    empty specification

    +

    empty specification


      Global Instance empty_ok : Ok empty.
    -  Proof.
    -    rewrite /empty Ok_nil //.
    -  Qed.

    -  Lemma empty_spec´ : ∀ x, (In x empty ↔ False).
    -    rewrite /Empty /empty /In elements_nil.
    -    intros a.
    -    rewrite InA_nil //.
    -  Qed.
    +  Lemma empty_spec' : ∀ x, (In x empty ↔ False).

      Lemma empty_spec : Empty empty.
    -  Proof.
    -    rewrite /Empty ⇒ a.
    -    rewrite empty_spec´ //.
    -  Qed.

    -

    is_empty specification

    +

    is_empty specification


    -  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
    -  Proof.
    -    intros [ | [x c] s]. {
    -      split ⇒ // _.
    -      apply empty_spec.
    -    } {
    -      rewrite /= /Empty Ok_cons.
    -      move ⇒ [_] [H_c_neq] [H_enc] _.
    -      split ⇒ //.
    -      move ⇒ H.
    -      contradiction (H (Enc.decode x)) ⇒ {H}.
    -      rewrite /In InA_alt elements_cons.
    -      âˆƒ (Enc.decode x).
    -      split; first by apply Enc.E.eq_equiv.
    -      rewrite in_app_iff; left.
    -      rewrite /elements_single in_map_iff.
    -      âˆƒ x.
    -      split ⇒ //.
    -      apply In_elementsZ_single_hd ⇒ //.
    -    }
    -  Qed.
    - +  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
    +
    -

    singleton specification

    +

    singleton specification


      Global Instance singleton_ok x : Ok (singleton x).
    -  Proof.
    -    rewrite singleton_alt_def.
    -    apply add_ok.
    -    apply empty_ok.
    -  Qed.

    -  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
    -  Proof.
    -    intros x y.
    -    rewrite singleton_alt_def.
    -    rewrite (add_spec empty x y) /empty /In elements_nil InA_nil.
    -    split. {
    -      move ⇒ [] //.
    -    } {
    -      by left.
    -    }
    -  Qed.
    - +  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
    +
    -

    add_list specification

    +

    add_list specification


    -  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
    -  Proof.
    -    induction l as [| x IH]. {
    -      done.
    -    } {
    -      move ⇒ s H_s_ok /=.
    -      apply IH.
    -      by apply add_ok.
    -    }
    -  Qed.
    - +  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
    +
    -  Lemma add_list_spec : ∀ x l s, Ok s →
    -     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
    -  Proof.
    -    move ⇒ x.
    -    induction l as [| y IH]. {
    -      intros s H.
    -      rewrite /= InA_nil.
    -      tauto.
    -    } {
    -      move ⇒ s H_ok /=.
    -      rewrite IH add_spec InA_cons.
    -      tauto.
    -    }
    -  Qed.
    - +  Lemma add_list_spec : ∀ x l s, Ok s →
    +     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
    +
    -

    union specification

    +

    union specification


      Lemma union_aux_flatten_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +    union_aux s1 s2 acc =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
                  union_aux l1 (
    -                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
    +                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
              | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
                  union_aux l1 (
                    insert_interval_begin y1
    @@ -2695,48 +1547,26 @@

    Library MSetsExtra.MSetIntervals

              | ICR_subsume_2 ⇒ union_aux s1 l2 acc
            end
        end.
    -  Proof.
    -    intros s1 s2 acc.
    -    case s1, s2 ⇒ //.
    -  Qed.

      Lemma union_aux_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    List.rev_append acc (union s1 s2).
    -  Proof.
    -    rewrite /union.
    -    intros s1 s2 acc.
    -    move : acc s2.
    -    induction s1 as [| [y1 c1] l1 IH1]. {
    -      intros acc s2.
    -      rewrite !union_aux_flatten_alt_def.
    -      rewrite !rev_append_rev //.
    -    }
    -    intros acc s2; move : acc.
    -    induction s2 as [| [y2 c2] l2 IH2]; first by simpl.
    -    move ⇒ acc.
    -    rewrite !(union_aux_flatten_alt_def ((y1, c1)::l1) ((y2, c2)::l2)).
    -    case (interval_compare (y1, c1) (y2, c2));
    -      rewrite ?(IH1 ((y1, c1) :: acc)) ?(IH1 ((y1, c1) :: nil))
    -              ?(IH2 ((y2, c2) :: acc)) ?(IH2 ((y2, c2) :: nil))
    -              ?(IH1 acc) //.
    -  Qed.
    +    union_aux s1 s2 acc =
    +    List.rev_append acc (union s1 s2).

      Lemma union_alt_def : ∀ (s1 s2 : t),
    -    union s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ s2
    -    | (_, nil) ⇒ s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
    +    union s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ s2
    +    | (_, nil) ⇒ s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
              | ICR_before_touch ⇒
    -              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    -          | ICR_after ⇒ (y2, c2) :: union s1 l2
    +              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    +          | ICR_after ⇒ (y2, c2) :: union s1 l2
              | ICR_after_touch ⇒ union l1
    -              (insert_interval_begin y2 ((c1+c2)%N) l2)
    +              (insert_interval_begin y2 ((c1+c2)%N) l2)
              | ICR_overlap_before ⇒
                  union l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2)
              | ICR_overlap_after ⇒
    @@ -2746,3587 +1576,704 @@

    Library MSetsExtra.MSetIntervals

              | ICR_subsume_2 ⇒ union s1 l2
            end
         end.
    -  Proof.
    -    intros s1 s2.
    -    rewrite /union union_aux_flatten_alt_def.
    -    case s1 as [| [y1 c1] l1] ⇒ //.
    -    case s2 as [| [y2 c2] l2] ⇒ //.
    -    case (interval_compare (y1, c1) (y2, c2));
    -      rewrite union_aux_alt_def //.
    -  Qed.

      Lemma union_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
    -  Proof.
    -    intro s1.
    -    induction s1 as [| [y1 c1] l1 IH1]. {
    -      intros s2 _ _ y.
    -      rewrite union_alt_def /InZ /=.
    -      tauto.
    -    } {
    -      induction s2 as [| [y2 c2] l2 IH2]. {
    -        intros _ _ y.
    -        rewrite union_alt_def /InZ /=.
    -        tauto.
    -      } {
    -        move ⇒ H_inv_s1 H_inv_s2.
    -        move : (H_inv_s1) (H_inv_s2).
    -        rewrite !interval_list_invariant_cons.
    -        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    -        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          âˆ€ y : Z, InZ y (union l1 s2) ↔ InZ y l1 ∨ InZ y s2. {
    -          intros. by apply IH1.
    -        }
    -        move ⇒ {IH1} IH1 y.
    -        rewrite union_alt_def.
    -        move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    -          rewrite !InZ_cons IH1 // InZ_cons.
    -          tauto.
    -        } {
    -          move ⇒ H_y2_eq.
    -          replace (c1 + c2)%N with (merge_interval_size y1 c1 y2 c2);
    -            last first. {
    -            rewrite -H_y2_eq merge_interval_size_add //.
    -          }
    -          set c´´ := merge_interval_size y1 c1 y2 c2.
    -          have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y1 c´´ l2) = true ∧
    -                (InZ y (insert_interval_begin y1 c´´ l2) ↔
    -                List.In y (elementsZ_single y1 c´´) ∨ InZ y l2). {
    -            apply insert_interval_begin_spec ⇒ //. {
    -              eapply interval_list_elements_greater_impl; eauto.
    -              rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    -              apply Z_le_add_r.
    -            } {
    -              by apply merge_interval_size_neq_0.
    -            }
    -          }
    -  
    -          rewrite IH1 ⇒ //.
    -          rewrite H_InZ_insert !InZ_cons /c´´.
    -          rewrite -H_y2_eq In_merge_interval. {
    -            tauto.
    -          } {
    -            apply Z_le_add_r.
    -          } {
    -            by apply Z.le_refl.
    -          }
    -        } {
    -          move ⇒ [H_y1_lt] [H_y2_lt] H_y1_c1_lt.
    -          set c´´ := merge_interval_size y1 c1 y2 c2.
    -          have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y1 c´´ l2) = true ∧
    -                (InZ y (insert_interval_begin y1 c´´ l2) ↔
    -                List.In y (elementsZ_single y1 c´´) ∨ InZ y l2). {
    -            apply insert_interval_begin_spec ⇒ //. {
    -              eapply interval_list_elements_greater_impl; eauto.
    -              apply Z_lt_le_add_r ⇒ //.
    -            } {
    -              by apply merge_interval_size_neq_0.
    -            }
    -          }
    -          rewrite IH1 ⇒ //.
    -          rewrite H_InZ_insert !InZ_cons /c´´.
    -          rewrite In_merge_interval. {
    -            tauto.
    -          } {
    -            by apply Z.lt_le_incl.
    -          } {
    -            by apply Z.lt_le_incl.
    -          }
    -        } {
    -          move ⇒ [H_y2_lt] [H_y1_lt] H_y2_c_lt.
    -          set c´´ := merge_interval_size y2 c2 y1 c1.
    -          have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y2 c´´ l2) = true ∧
    -                (InZ y (insert_interval_begin y2 c´´ l2) ↔
    -                List.In y (elementsZ_single y2 c´´) ∨ InZ y l2). {
    -            apply insert_interval_begin_spec ⇒ //. {
    -              eapply interval_list_elements_greater_impl; eauto.
    -              apply Z_le_add_r.
    -            } {
    -              by apply merge_interval_size_neq_0.
    -            }
    -          }
    -  
    -          rewrite IH1 ⇒ //.
    -          rewrite H_InZ_insert !InZ_cons /c´´.
    -          rewrite In_merge_interval. {
    -            tauto.
    -          } {
    -            by apply Z.lt_le_incl.
    -          } {
    -            by apply Z.lt_le_incl.
    -          }
    -        } {
    -          move ⇒ [? ?]; subst.
    -          rewrite IH1 ⇒ //.
    -          rewrite !InZ_cons.
    -          tauto.
    -        } {
    -          move ⇒ [H_y2_le] [H_y1_c1_le] _.
    -          rewrite IH1 ⇒ //.
    -          rewrite !InZ_cons.
    -          suff : (List.In y (elementsZ_single y1 c1) →
    -                  List.In y (elementsZ_single y2 c2)). {
    -            tauto.
    -          }
    -          rewrite !In_elementsZ_single.
    -          move ⇒ [H_y1_le H_y_lt].
    -          split; omega.
    -        } {
    -          move ⇒ [H_y1_le] [H_y2_c2_le] _.
    -          rewrite IH2.
    -          rewrite !InZ_cons.
    -          suff : (List.In y (elementsZ_single y2 c2) →
    -                  List.In y (elementsZ_single y1 c1)). {
    -            tauto.
    -          }
    -          rewrite !In_elementsZ_single.
    -          move ⇒ [H_y2_le H_y_lt].
    -          split; omega.
    -        } {
    -          rewrite !InZ_cons IH2 !InZ_cons.
    -          tauto.
    -        } {
    -          move ⇒ H_y1_eq.
    -          replace (c1 + c2)%N with (merge_interval_size y2 c2 y1 c1);
    -            last first. {
    -            rewrite -H_y1_eq merge_interval_size_add N.add_comm //.
    -          }
    -          set c´´ := merge_interval_size y2 c2 y1 c1.
    -          have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y2 c´´ l2) = true ∧
    -                (InZ y (insert_interval_begin y2 c´´ l2) ↔
    -                List.In y (elementsZ_single y2 c´´) ∨ InZ y l2). {
    -            apply insert_interval_begin_spec ⇒ //. {
    -              eapply interval_list_elements_greater_impl; eauto.
    -              apply Z_le_add_r.
    -            } {
    -              by apply merge_interval_size_neq_0.
    -            }
    -          }
    -  
    -          rewrite IH1 ⇒ //.
    -          rewrite H_InZ_insert !InZ_cons /c´´.
    -          rewrite -H_y1_eq In_merge_interval. {
    -            tauto.
    -          } {
    -            apply Z_le_add_r.
    -          } {
    -            by apply Z.le_refl.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
    +
      Lemma union_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (union s1 s2) = true.
    -  Proof.
    -    intro s1.
    -    induction s1 as [| [y1 c1] l1 IH1]. {
    -      intros s2 _ H_inv_s2.
    -      rewrite union_alt_def /InZ //.
    -    } {
    -      induction s2 as [| [y2 c2] l2 IH2]. {
    -        intros H_inv_s1 _.
    -        rewrite union_alt_def /InZ //.
    -      } {
    -        move ⇒ H_inv_s1 H_inv_s2.
    -        move : (H_inv_s1) (H_inv_s2).
    -        rewrite !interval_list_invariant_cons.
    -        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    -        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          interval_list_invariant (union l1 s2) = true. {
    -          intros. by apply IH1.
    -        }
    -        move ⇒ {IH1} IH1.
    - -
    -        rewrite union_alt_def.
    -        move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    -          move ⇒ H_lt_y2.
    -          have H_inv´ : interval_list_invariant (union l1 ((y2, c2) :: l2)) = true. {
    -            by apply IH1.
    -          }
    -
    -          rewrite interval_list_invariant_cons.
    -          repeat split ⇒ //.
    -          apply interval_list_elements_greater_intro ⇒ // x.
    -          rewrite union_InZ ⇒ //.
    -          move ⇒ []. {
    -            apply interval_list_elements_greater_alt2_def ⇒ //.
    -          } {
    -            apply interval_list_elements_greater_alt2_def ⇒ //.
    -            rewrite interval_list_elements_greater_cons //.
    -          }
    -        } {
    -          move ⇒ H_y2_eq.
    -          apply IH1.
    -          apply insert_interval_begin_spec ⇒ //. {
    -            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    -            rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    -            apply Z_le_add_r.
    -          } {
    -            rewrite N.eq_add_0.
    -            tauto.
    -          }
    -        } {
    -          move ⇒ [H_y1_lt] _.
    -          apply IH1.
    -          apply insert_interval_begin_spec ⇒ //. {
    -            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    -            apply Z_lt_le_add_r ⇒ //.
    -          } {
    -            apply merge_interval_size_neq_0 ⇒ //.
    -          }
    -        } {
    -          move ⇒ [H_y2_lt] _.
    -          apply IH1.
    -          apply insert_interval_begin_spec ⇒ //. {
    -            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    -            apply Z_le_add_r ⇒ //.
    -          } {
    -            apply merge_interval_size_neq_0 ⇒ //.
    -          }
    -        } {
    -          move ⇒ [? ?]; subst.
    -          apply IH1 ⇒ //.
    -        } {
    -          move ⇒ _.
    -          apply IH1 ⇒ //.
    -        } {
    -          move ⇒ _.
    -          apply IH2 ⇒ //.
    -        } {
    -          move ⇒ H_lt_y1.
    -          rewrite interval_list_invariant_cons ⇒ //.
    -          repeat split ⇒ //.
    -          apply interval_list_elements_greater_intro ⇒ // x.
    -          rewrite union_InZ ⇒ //.
    -          move ⇒ []. {
    -            apply interval_list_elements_greater_alt2_def ⇒ //.
    -            rewrite interval_list_elements_greater_cons //.
    -          } {
    -            apply interval_list_elements_greater_alt2_def ⇒ //.
    -          }
    -        } {
    -          move ⇒ H_y1_eq.
    -          apply IH1 ⇒ //.
    -          apply insert_interval_begin_spec ⇒ //. {
    -            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    -            apply Z_le_add_r.
    -          } {
    -            rewrite N.eq_add_0.
    -            tauto.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (union s1 s2) = true.
    +

      Global Instance union_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (union s1 s2).
    -  Proof.
    -    move ⇒ H_ok_s1 H_ok_s2.
    -    move : (H_ok_s1) (H_ok_s2).
    -    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    -    move ⇒ [H_inv_s1] H_pre1.
    -    move ⇒ [H_inv_s2] H_pre2.
    -    split. {
    -      apply union_invariant ⇒ //.
    -    } {
    -      intros y.
    -      move : (union_InZ s1 s2 H_inv_s1 H_inv_s2).
    -      rewrite /InZ ⇒ →.
    -      move ⇒ []. {
    -        apply H_pre1.
    -      } {
    -        apply H_pre2.
    -      }
    -    }
    -  Qed.
    - +
      Lemma union_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
    -   In x (union s ) ↔ In x s ∨ In x .
    -  Proof.
    -    intros s x H_ok H_ok´.
    -    rewrite !In_InZ.
    -    rewrite union_InZ ⇒ //. {
    -      apply H_ok.
    -    } {
    -      apply H_ok´.
    -    }
    -  Qed.
    - +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (union s s') ↔ In x s ∨ In x s'.
    +
    -

    inter specification

    +

    inter specification


      Lemma inter_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    -                               (acc´, ) ⇒ (acc´ ++ acc, )
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
    -  Proof.
    -    intros y2 c2.
    -    induction s as [| [y1 c1] IH] ⇒ acc. {
    -      rewrite /inter_aux app_nil_l //.
    -    } {
    -      simpl.
    -      case_eq (inter_aux y2 c2 nil ) ⇒ acc´´ s´´ H_eq.
    -      case (interval_compare (y1, c1) (y2, c2));
    -        rewrite ?(IH acc)
    -                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: acc))
    -                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: nil))
    -                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: acc))
    -                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: nil))
    -                ?(IH ((y1, c1) :: acc))
    -                ?(IH ((y1, c1) :: nil))
    -                
    -                ?H_eq -?app_assoc -?app_comm_cons //.
    -    }
    -  Qed.
    - +
      Lemma inter_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    -                     List.In x2 (elementsZ_single y2 c2) →
    -                     Z.succ x1 < x2) →
    -      (c2 ≠ 0%N) →
    -      match (inter_aux y2 c2 acc s) with (acc´, ) ⇒
    -        (∀ y, (InZ y acc´ ↔
    -                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    -        (∀ y, InZ y → InZ y s) ∧
    -        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y ) ∧
    -        interval_list_invariant (rev acc´) = true ∧
    -        interval_list_invariant = true
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    +                     List.In x2 (elementsZ_single y2 c2) →
    +                     Z.succ x1 < x2) →
    +      (c2 ≠ 0%N) →
    +      match (inter_aux y2 c2 acc s) with (acc', s') ⇒
    +        (∀ y, (InZ y acc' ↔
    +                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    +        (∀ y, InZ y s' → InZ y s) ∧
    +        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y s') ∧
    +        interval_list_invariant (rev acc') = true ∧
    +        interval_list_invariant s' = true
          end.
    -  Proof.
    -    intros y2 c2.
    -    induction s as [| [y1 c1] s1´ IH] ⇒ acc. {
    -      rewrite /inter_aux.
    -      move ⇒ H_inv_acc _ _ _.
    -      split; last split; try done.
    -      move ⇒ y. rewrite InZ_nil.
    -      tauto.
    -    } {
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ H_inv_acc [H_gr_s1´] [H_c1_neq_0] H_inv_s1´.
    -      move ⇒ H_in_acc_lt H_c2_neq_0.
    - -
    -      rewrite inter_aux_alt_def.
    -      case_eq (inter_aux y2 c2 nil ((y1, c1) :: s1´)).
    -      move ⇒ acc´ H_inter_aux_eq.
    - -
    -      set P1 := ∀ y : Z,
    -        (InZ y acc´ ↔
    -        ((InZ y ((y1, c1) :: s1´) ∧ List.In y (elementsZ_single y2 c2)))).
    -      set P2 := (∀ y,
    -                  (InZ y → InZ y ((y1, c1) :: s1´)) ∧
    -                  (InZ y ((y1, c1) :: s1´) →
    -                     y2 + Z.of_N c2 < y → InZ y )).
    -      set P3 := interval_list_invariant (rev acc´) = true.
    -      set P4 := interval_list_invariant = true.
    - -
    -      suff : (P1 ∧ P2 ∧ P3 ∧ P4). {
    -        move ⇒ [H_P1] [H_P2] [H_P3] H_P4.
    -        split; last split; last split; last split. {
    -          move ⇒ y.
    -          move : (H_P1 y).
    -          rewrite !InZ_app InZ_cons !In_elementsZ_single.
    -          move ⇒ <-.
    -          tauto.
    -        } {
    -          move ⇒ y H_y_in.
    -          by apply H_P2.
    -        } {
    -          move ⇒ y H_y_in.
    -          by apply H_P2.
    -        } {
    -          rewrite rev_app_distr.
    -          apply interval_list_invariant_app_intro ⇒ //.
    -          move ⇒ x1 x2.
    -          rewrite !InZ_rev.
    -          move ⇒ H_x1_in /H_P1 [H_x2_in1] H_x2_in2.
    -          apply H_in_acc_lt ⇒ //.
    -        } {
    -          apply H_P4.
    -        }
    -      }
    -
    -      move : (H_gr_s1´).
    -      rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1´_alt.
    - -
    -      have : ∀ (acc : list (Z × N)),
    -        interval_list_invariant (rev acc) = true →
    -        (∀ y, InZ y acc ↔ (
    -           y1 ≤ y < y1 + Z.of_N c1 ∧
    -           y2 ≤ y < y2 + Z.of_N c2)) →
    -        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    -        (inter_aux y2 c2 acc s1´ = (acc´, )) →
    -        P1 ∧ P2 ∧ P3 ∧ P4. {
    -        
    -        intros acc0 H_inv_acc0 H_in_acc0 H_y2c_lt H_inter_aux_eq0.
    -        have H_in_acc0_lt : (∀ x1 x2 : Z,
    -          InZ x1 acc0 →
    -          InZ x2 s1´ →
    -          List.In x2 (elementsZ_single y2 c2) →
    -          Z.succ x1 < x2). {
    -
    -          intros x1 x2 H_x1_in_acc0 H_x2_in_s1´ H_x2_in_yc2.
    - -
    -          suff H_yc1_lt_x2 : Z.succ x1 ≤ y1 + Z.of_N c1. {
    -            apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -            by apply H_gr_s1´_alt.
    -          }
    -          move : (H_x1_in_acc0).
    -          rewrite H_in_acc0 Z.le_succ_l.
    -          tauto.
    -        }
    -        
    -        move : (IH acc0 H_inv_acc0 H_inv_s1´ H_in_acc0_lt H_c2_neq_0).
    -        rewrite H_inter_aux_eq0.
    -        move ⇒ [H1] [H2] [H3] [H4] H5.
    -        split; last split ⇒ //. {
    -          move ⇒ y.
    -          rewrite (H1 y).
    -          rewrite InZ_cons !In_elementsZ_single
    -                  H_in_acc0.
    -          tauto.
    -        } {
    -          move ⇒ y.
    -          split. {
    -            move ⇒ /H2.
    -            rewrite InZ_cons.
    -            by right.
    -          } {
    -            rewrite InZ_cons In_elementsZ_single.
    -            move ⇒ []. {
    -              move ⇒ [_] H_y_lt H_lt_y.
    -              exfalso.
    -              suff : (y < y) by apply Z.lt_irrefl.
    -              apply Z.lt_le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -              apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    - -
    -              by apply Z.lt_le_incl.
    -            } {
    -              apply H3.
    -            }
    -          }
    -        }
    -      }
    -      move ⇒ {IH} IH.
    - -
    -      clear H_inv_acc H_in_acc_lt acc.
    -      move : (interval_compare_elim y1 c1 y2 c2) H_inter_aux_eq.
    -      unfold inter_aux.
    -      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    -         fold inter_aux. {
    -        move ⇒ H_lt_y2.
    -        apply IH. {
    -          done.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_nil.
    -          split ⇒ //.
    -          omega.
    -        } {
    -          apply Z.le_trans with (m := y2). {
    -            by apply Z.lt_le_incl.
    -          } {
    -            apply Z_le_add_r.
    -          }
    -        }
    -      } {
    -        move ⇒ H_eq_y2.
    -        apply IH. {
    -          done.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_nil.
    -          split ⇒ //.
    -          omega.
    -        } {
    -          rewrite H_eq_y2.
    -          apply Z_le_add_r.
    -        }
    -      } {
    -        move ⇒ [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2.
    -        apply IH. {
    -          rewrite interval_list_invariant_sing.
    -          by apply Z_to_N_minus_neq_0.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last omega.
    -          replace (y1 + (y2 - y1)) with y2 by omega.
    -          split; omega.
    -        } {
    -          by apply Z.lt_le_incl.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3 /P4.
    -        move ⇒ [H_y2_lt] [H_y1_lt] H_yc1_lt.
    -        move ⇒ [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 P4 H_comp.
    -        subst acc´.
    -        split; last split; last split. {
    -          move ⇒ y.
    -          have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) =
    -                             y2 + Z.of_N c2. {
    -            rewrite Z2N.id; omega.
    -          }
    -          
    -          rewrite !InZ_cons !In_elementsZ_single InZ_nil H_yc2_intro.
    -          split. {
    -            move ⇒ [] //.
    -            move ⇒ [H_y1_le] H_y_lt.
    -            split; last by omega.
    -            left. omega.
    -          } {
    -            move ⇒ [H_in_s] [H_y2_le] H_y_lt.
    -            left.
    -            split; last assumption.
    -            move : H_in_s ⇒ []. {
    -              tauto.
    -            } {
    -              move ⇒ /H_gr_s1´_alt H_lt_y.
    -              apply Z.le_trans with (m := y1 + Z.of_N c1). {
    -                by apply Z_le_add_r.
    -              } {
    -                by apply Z.lt_le_incl.
    -              }
    -            }
    -          }
    -        } {
    -          move ⇒ y.
    -          split; done.
    -        } {
    -          rewrite interval_list_invariant_sing.
    -          by apply Z_to_N_minus_neq_0.
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3 /P4.
    -        move ⇒ [H_y12_eq] H_c12_eq [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 P4 H_comp.
    -        subst.
    -        split; last split; last split. {
    -          move ⇒ y.
    -          rewrite !InZ_cons InZ_nil In_elementsZ_single.
    -          split; last by tauto. {
    -            move ⇒ [] //.
    -            tauto.
    -          }
    -        } {
    -          move ⇒ y.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split; first by right.
    -          move ⇒ [] //.
    -          move ⇒ [_] H_y_lt H_lt_y.
    -          exfalso.
    -          suff : (y2 + Z.of_N c2 < y2 + Z.of_N c2) by
    -              apply Z.lt_irrefl.
    -          apply Z.lt_trans with (m := y) ⇒ //.
    -        } {
    -          rewrite interval_list_invariant_sing //.
    -        } {
    -          assumption.
    -        }
    -      } {
    -        move ⇒ [H_y2_le_y1] [H_yc1_le_yc2] _.
    -        apply IH. {
    -          by rewrite interval_list_invariant_sing.
    -        } {
    -          move ⇒ y.
    -          rewrite InZ_cons InZ_nil In_elementsZ_single.
    -          split. {
    -            move ⇒ [] //.
    -            move ⇒ [H_y1_le] H_y_lt.
    -            split; first done.
    -            split; omega.
    -          } {
    -            move ⇒ [?] _.
    -            by left.
    -          }
    -        } {
    -          assumption.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3 /P4.
    -        move ⇒ [H_y1_le] [H_yc2_le] _.
    -        move ⇒ [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 P4 H_comp.
    -        subst.
    -        split; last split; last split. {
    -          move ⇒ y.
    -          rewrite !InZ_cons !In_elementsZ_single InZ_nil.
    -          split. {
    -            move ⇒ [] //.
    -            move ⇒ [H_y2_le] H_y_lt.
    -            split; last by omega.
    -            left. omega.
    -          } {
    -            move ⇒ [H_in_s] [H_y2_le] H_y_lt.
    -            by left.
    -          }
    -        } {
    -          tauto.
    -        } {
    -          by rewrite interval_list_invariant_sing.
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3 /P4.
    -        move ⇒ H_yc2_lt [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 P4 H_comp.
    -        subst.
    -        split; last split; last split. {
    -          move ⇒ y.
    -          rewrite InZ_cons !In_elementsZ_single InZ_nil.
    -          split; first done.
    -          move ⇒ [] []. {
    -            move ⇒ [H_y1_le_y] H_y_lt_yc1.
    -            move ⇒ [H_y2_le_y] H_y_lt_yc2.
    -            omega.
    -          } {
    -            move ⇒ /H_gr_s1´_alt H_lt_y [_] H_y_lt.
    -            suff : (y1 + Z.of_N c1 < y1). {
    -              apply Z.nlt_ge.
    -              apply Z_le_add_r.
    -            }
    -            omega.
    -          }
    -        } {
    -          tauto.
    -        } {
    -          done.
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3 /P4.
    -        move ⇒ H_y1_eq [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 P4 H_comp.
    -        subst acc´ .
    -        split; last split; last split. {
    -          move ⇒ y.
    -          rewrite InZ_cons !In_elementsZ_single InZ_nil.
    -          split; first done.
    -          move ⇒ [] []. {
    -            move ⇒ [H_y1_le_y] H_y_lt_yc1.
    -            move ⇒ [H_y2_le_y] H_y_lt_yc2.
    -            omega.
    -          } {
    -            move ⇒ /H_gr_s1´_alt H_lt_y [_] H_y_lt.
    -            suff : (y1 + Z.of_N c1 < y1). {
    -              apply Z.nlt_ge.
    -              apply Z_le_add_r.
    -            }
    -            omega.
    -          }
    -        } {
    -          tauto.
    -        } {
    -          done.
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        }
    -      }
    -    }
    -  Qed.
    - +
      Lemma inter_aux2_props :
       âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev acc) = true →
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    -               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    -    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
    -  Proof.
    -    induction s2 as [| [y2 c2] s2´ IH]. {
    -      move ⇒ s1 acc.
    -      move ⇒ H_inv_acc _ _ _.
    -      unfold inter_aux2.
    -      replace (match s1 with
    -        | nil ⇒ rev´ acc
    -        | _ :: _ ⇒ rev´ acc
    -               end) with (rev´ acc); last by case s1.
    -      rewrite /rev´ rev_append_rev app_nil_r.
    -      split; last done.
    -      move ⇒ y.
    -      rewrite InZ_nil InZ_rev.
    -      tauto.
    -    } {
    -      intros s1 acc H_inv_acc H_inv_s1.
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ [H_gr_s2´] [H_c2_neq_0] H_inv_s2´.
    -      move ⇒ H_acc_s12.
    - -
    -      move : H_gr_s2´.
    -      rewrite interval_list_elements_greater_alt2_def //.
    -      move ⇒ H_gr_s2´.
    - -
    -      rewrite /inter_aux2; fold inter_aux2.
    -      case_eq s1. {
    -        move ⇒ H_s1_eq.
    -        split. {
    -          move ⇒ y.
    -          rewrite /rev´ rev_append_rev app_nil_r InZ_nil
    -                  InZ_rev.
    -          tauto.
    -        } {
    -          rewrite /rev´ rev_append_rev app_nil_r //.
    -        }
    -      } {
    -        move ⇒ [_ _] _ <-.
    -        case_eq (inter_aux y2 c2 acc s1).
    -        move ⇒ acc´ s1´ H_inter_aux_eq.
    - -
    -        have H_acc_s1_yc2 : ∀ x1 x2 : Z,
    -          InZ x1 acc →
    -          InZ x2 s1 →
    -          List.In x2 (elementsZ_single y2 c2) →
    -          Z.succ x1 < x2. {
    -          intros x1 x2 H_x1_in H_x2_in1 H_x2_in2.
    -          apply H_acc_s12 ⇒ //.
    -          rewrite InZ_cons; by left.
    -        }
    -
    -        move : (inter_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1_yc2 H_c2_neq_0).
    -        rewrite H_inter_aux_eq.
    -        move ⇒ [H_in_acc´] [H_in_s1´_elim] [H_in_s1´_intro]
    -                [H_inv_acc´] H_inv_s1´.
    - -
    -        have H_in_acc´_s2´ : ∀ x1 x2 : Z,
    -            InZ x1 acc´ → InZ x2 s1´ → InZ x2 s2´ → Z.succ x1 < x2. {
    -          move ⇒ x1 x2 /H_in_acc´.
    -          move ⇒ []. {
    -            move ⇒ H_in_acc H_in_s1´ H_in_s2´.
    -            apply H_acc_s12 ⇒ //. {
    -              by apply H_in_s1´_elim.
    -            } {
    -              rewrite InZ_cons; by right.
    -            }
    -          } {
    -            rewrite In_elementsZ_single.
    -            move ⇒ [H_in_s1] [_] H_x1_lt _.
    -            move ⇒ /H_gr_s2´ H_lt_x2.
    -            apply Z.le_lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -            by apply Z.le_succ_l.
    -          }
    -        }
    -       
    -        move : (IH s1´ acc´ H_inv_acc´ H_inv_s1´ H_inv_s2´ H_in_acc´_s2´).
    -        move ⇒ [H_inZ_res] H_inv_res.
    -        split; last assumption.
    -        move ⇒ y.
    -        rewrite H_inZ_res H_in_acc´ InZ_cons
    -                In_elementsZ_single.
    -        split. {
    -          move ⇒ []; first by tauto.
    -          move ⇒ [H_y_in_s1´ H_y_in_s2´].
    -          right.
    -          split; last by right.
    -          by apply H_in_s1´_elim.
    -        } {
    -          move ⇒ []. {
    -            move ⇒ H_y_in_acc.
    -            by left; left.
    -          } {
    -            move ⇒ [H_y_in_s1].
    -            move ⇒ []. {
    -              move ⇒ H_in_yc2.
    -              by left; right.
    -            } {
    -              right.
    -              split; last assumption.
    -              apply H_in_s1´_intro ⇒ //.
    -              by apply H_gr_s2´.
    -            }
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant (rev acc) = true →
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    +               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    +    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
    +
      Lemma inter_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).
    -  Proof.
    -    intros s1 s2 H_inv_s1 H_inv_s2 y.
    -    rewrite /inter.
    - -
    -    move : (inter_aux2_props s2 s1 nil).
    -    move ⇒ [] //.
    -    move ⇒ H_in_inter _.
    -    rewrite H_in_inter InZ_nil.
    -    tauto.
    -  Qed.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).

      Lemma inter_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (inter s1 s2) = true.
    -  Proof.
    -    intros s1 s2 H_inv_s1 H_inv_s2.
    -    rewrite /inter.
    - -
    -    move : (inter_aux2_props s2 s1 nil).
    -    move ⇒ [] //.
    -  Qed.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (inter s1 s2) = true.


      Global Instance inter_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (inter s1 s2).
    -  Proof.
    -    move ⇒ H_ok_s1 H_ok_s2.
    -    move : (H_ok_s1) (H_ok_s2).
    -    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    -    move ⇒ [H_inv_s1] H_pre1.
    -    move ⇒ [H_inv_s2] H_pre2.
    -    split. {
    -      apply inter_invariant ⇒ //.
    -    } {
    -      intros y.
    -      move : (inter_InZ s1 s2 H_inv_s1 H_inv_s2).
    -      rewrite /InZ ⇒ →.
    -      move ⇒ [].
    -      move ⇒ /H_pre1 //.
    -    }
    -  Qed.
    - +
      Lemma inter_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
    -   In x (inter s ) ↔ In x s ∧ In x .
    -  Proof.
    -    intros s x H_ok H_ok´.
    -    rewrite !In_InZ.
    -    rewrite inter_InZ ⇒ //. {
    -      apply H_ok.
    -    } {
    -      apply H_ok´.
    -    }
    -  Qed.
    - +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (inter s s') ↔ In x s ∧ In x s'.
    +

    -

    diff specification

    +

    diff specification


      Lemma diff_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    -                               (acc´, ) ⇒ (acc´ ++ acc, )
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
    -  Proof.
    -    intros y2 c2.
    -    induction s as [| [y1 c1] acc´ IH] ⇒ acc. {
    -      rewrite /diff_aux app_nil_l //.
    -    } {
    -      simpl.
    -      case_eq (diff_aux y2 c2 nil acc´) ⇒ acc´´ s´´ H_eq.
    -      case (interval_compare (y1, c1) (y2, c2));
    -        rewrite ?(IH ((y1, c1)::acc)) ?(IH ((y1, c1)::nil))
    -                ?(IH acc) ?(IH ((y1, Z.to_N (y2 - y1)) :: acc))
    -                ?(IH ((y1, Z.to_N (y2 - y1)) :: nil)) ?H_eq;
    -        rewrite ?insert_intervalZ_guarded_app -?app_assoc -?app_comm_cons //.
    -    }
    -  Qed.
    - +

      Lemma diff_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (List.rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    -      (∀ x, InZ x acc → x < y2) →
    -      (c2 ≠ 0%N) →
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (List.rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      (∀ x, InZ x acc → x < y2) →
    +      (c2 ≠ 0%N) →
          match (diff_aux y2 c2 acc s) with
    -        (acc´, ) ⇒ (∀ y, InZ y (List.rev_append acc´ ) ↔
    -                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    -                      (interval_list_invariant (List.rev_append acc´ ) = true) ∧
    -                      (∀ x, InZ x acc´ → x < y2 + Z.of_N c2)
    +        (acc', s') ⇒ (∀ y, InZ y (List.rev_append acc' s') ↔
    +                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    +                      (interval_list_invariant (List.rev_append acc' s') = true) ∧
    +                      (∀ x, InZ x acc' → x < y2 + Z.of_N c2)
          end.
    -  Proof.
    -    intros y2 c2.
    -    induction s as [| [y1 c1] s1´ IH] ⇒ acc. {
    -      rewrite /diff_aux -rev_alt.
    -      move ⇒ H_inv_acc _ _ H_in_acc H_c2_neq.
    -      split; last split. {
    -        move ⇒ y; split; last by move ⇒ [] //.
    -        rewrite InZ_rev.
    -        move ⇒ H_in. split ⇒ //.
    -        move ⇒ /In_elementsZ_single ⇒ [] [] /Z.nlt_ge H_neq.
    -        contradict H_neq.
    -        by apply H_in_acc.
    -      } {
    -        assumption.
    -      } {
    -        intros x H_in_acc´.
    -        apply Z.lt_le_trans with (m := y2). {
    -          by apply H_in_acc.
    -        } {
    -          by apply Z_le_add_r.
    -        }
    -      }
    -    } {
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ H_inv_acc [H_gr_s1´] [H_c1_neq_0] H_inv_s1´.
    -      move ⇒ H_in_s1 H_in_acc H_c2_neq_0.
    - -
    -      rewrite diff_aux_alt_def.
    -      case_eq (diff_aux y2 c2 nil ((y1, c1) :: s1´)).
    -      move ⇒ acc´ H_diff_aux_eq.
    - -
    -      set P1 := ∀ y : Z,
    -        (InZ y acc´ ∨ InZ y ) ↔
    -        InZ y ((y1, c1) :: s1´) ∧ ¬ List.In y (elementsZ_single y2 c2).
    -      set P2 := interval_list_invariant (rev acc´ ++ ) = true.
    -      set P3 := ∀ x : Z, InZ x acc´ → (x < y2 + Z.of_N c2).
    - -
    -      suff : (P1 ∧ P2 ∧ P3). {
    -        move ⇒ [H_P1] [H_P2] H_P3.
    -        split; last split. {
    -          move ⇒ y.
    -          move : (H_P1 y).
    -          rewrite !rev_append_rev rev_app_distr !InZ_app
    -                  !InZ_rev In_elementsZ_single.
    -          suff : (InZ y acc → ¬ y2 ≤ y < y2 + Z.of_N c2). {
    -            tauto.
    -          }
    -          move ⇒ /H_in_acc H_y_lt [H_y_ge] _.
    -          contradict H_y_ge.
    -          by apply Zlt_not_le.
    -        } {
    -          rewrite rev_append_rev rev_app_distr -app_assoc.
    -          apply interval_list_invariant_app_intro ⇒ //.
    -          move ⇒ x1 x2.
    -          rewrite InZ_app !InZ_rev.
    -          move ⇒ H_in_acc´ H_x2_in_s´.
    -          suff : (InZ x2 ((y1, c1)::s1´)). {
    -            by apply H_in_s1.
    -          }
    -          move : (H_P1 x2).
    -          tauto.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_app.
    -          move ⇒ []. {
    -            apply H_P3.
    -          } {
    -            move ⇒ /H_in_acc H_x_lt.
    -            eapply Z.lt_trans; eauto.
    -            by apply Z_lt_add_r.
    -          }
    -        }
    -      }
    -
    -      move : (H_gr_s1´).
    -      rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1´_alt.
    - -
    -      have : ∀ (acc : list (Z × N)),
    -        interval_list_invariant (rev acc) = true →
    -        (∀ x : Z,
    -            InZ x acc ↔
    -            ((y1 ≤ x < y1 + Z.of_N c1) ∧ (x < y2))) →
    -        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    -        (diff_aux y2 c2 acc s1´ = (acc´, )) →
    -        P1 ∧ P2 ∧ P3. {
    -        
    -        intros acc0 H_inv_acc0 H_in_acc0 H_c1_before H_diff_aux_eq0.
    -        have H_in_s1´ : (∀ x1 x2 : Z,
    -                            InZ x1 acc0 → InZ x2 s1´ → Z.succ x1 < x2). {
    -          intros x1 x2 H_x1_in_acc0.
    -          move ⇒ /H_gr_s1´_alt.
    - -
    -          eapply Z.le_lt_trans.
    -          move : H_x1_in_acc0.
    -          rewrite Z.le_succ_l H_in_acc0.
    -          tauto.
    -        }
    -        have H_in_acc0´ : (∀ x : Z, InZ x acc0 → x < y2). {
    -          move ⇒ x.
    -          rewrite H_in_acc0.
    -          move ⇒ [_] //.
    -        }
    -        move : (IH acc0 H_inv_acc0 H_inv_s1´ H_in_s1´ H_in_acc0´ H_c2_neq_0).
    -        rewrite H_diff_aux_eq0 !rev_append_rev.
    -        move ⇒ [H1] [H2] H3.
    -        split; last split ⇒ //. {
    -          move ⇒ y.
    -          move : (H1 y).
    -          rewrite !InZ_app !InZ_rev In_elementsZ_single.
    -          move ⇒ →.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split. {
    -            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    -            tauto.
    -          } {
    -            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    -            move ⇒ [] H_in H_nin_i2.
    -            split; last by assumption.
    -            move : H_in ⇒ [] H_in; last by right.
    -            left.
    -            omega.
    -          }
    -        }
    -      }
    -      move ⇒ {IH} IH.
    - -
    -      clear H_inv_acc H_in_s1 H_in_acc acc.
    -      move : (interval_compare_elim y1 c1 y2 c2) H_diff_aux_eq.
    -      unfold diff_aux.
    -      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    -                                                        fold diff_aux. {
    -        move ⇒ H_lt_y2.
    -        apply IH. {
    -          by rewrite interval_list_invariant_sing.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split; last by tauto.
    -          move ⇒ []; last done.
    -          move ⇒ [H_y1_le H_x_lt].
    -          split; first done.
    -          eapply Z.lt_trans; eauto.
    -        } {
    -          apply Z.le_trans with (m := y2).
    -            - by apply Z.lt_le_incl.
    -            - by apply Z_le_add_r.
    -        }
    -      } {
    -        move ⇒ H_eq_y2.
    -        apply IH. {
    -          by rewrite interval_list_invariant_sing.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_cons In_elementsZ_single -H_eq_y2.
    -          split; last by tauto.
    -          move ⇒ []; last done.
    -          move ⇒ []. done.
    -        } {
    -          rewrite H_eq_y2.
    -          by apply Z_le_add_r.
    -        }
    -      } {
    -        move ⇒ [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2.
    -        apply IH. {
    -          rewrite interval_list_invariant_sing.
    -          by apply Z_to_N_minus_neq_0.
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_cons In_elementsZ_single Z2N.id; last omega.
    -          replace (y1 + (y2 - y1)) with y2 by omega.
    -          split; last tauto.
    -          move ⇒ [] //.
    -          move ⇒ [H_y1_le] H_x_lt.
    -          repeat split ⇒ //.
    -          apply Z.lt_trans with (m := y2) ⇒ //.
    -        } {
    -          by apply Z.lt_le_incl.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3.
    -        move ⇒ [H_y2_lt] [H_y1_lt] H_yc1_lt [H_acc´] H_s´.
    -        clear IH P1 P2 P3 H_comp.
    -        subst.
    -        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    -          rewrite Z2N.id; omega.
    -        }
    -        have H_nin_yc2 : ∀ y,
    -            InZ y s1´ → ¬ y2 ≤ y < y2 + Z.of_N c2. {
    -          move ⇒ y /H_gr_s1´_alt H_lt_y.
    -          move ⇒ [H_y2_le_y].
    -          apply Z.le_ngt, Z.lt_le_incl.
    -          by apply Z.lt_trans with (m := y1 + Z.of_N c1).
    -        }
    -        split; last split. {
    -          move ⇒ y.
    -          rewrite !InZ_cons !In_elementsZ_single H_yc1_intro.
    -          split. {
    -            move ⇒ [] //.
    -            move ⇒ []. {
    -              move ⇒ [H_le_y] H_y_lt.
    -              split. {
    -                left; omega.
    -              } {
    -                move ⇒ [_].
    -                by apply Z.nlt_ge.
    -              }
    -            } {
    -              move : (H_nin_yc2 y). tauto.
    -            }
    -          } {
    -            move ⇒ [] []; last by right; right.
    -            move ⇒ [H_y_ge] H_y_lt_yc1 H_nin_yc2´.
    -            right; left. omega.
    -          }
    -        } {
    -          rewrite interval_list_invariant_cons H_yc1_intro.
    -          split ⇒ //.
    -          split ⇒ //.
    -          by apply Z_to_N_minus_neq_0.
    -        } {
    -          move ⇒ [] //.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3.
    -        move ⇒ [H_y12_eq] H_c12_eq [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 H_comp.
    -        subst.
    -        split; last split. {
    -          move ⇒ y.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split; last by tauto. {
    -            move ⇒ [] //.
    -            move ⇒ H_y_in.
    -            split; first by right.
    -            move ⇒ [] _.
    -            by apply Z.nlt_ge, Z.lt_le_incl, H_gr_s1´_alt.
    -          }
    -        } {
    -          apply H_inv_s1´.
    -        } {
    -          move ⇒ x [] //.
    -        }
    -      } {
    -        move ⇒ [H_y2_le_y1] [H_yc1_le_yc2] _.
    -        apply IH. {
    -          done.
    -        } {
    -          move ⇒ x.
    -          split; first done.
    -          omega.
    -        } {
    -          assumption.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3.
    -        move ⇒ [H_y1_le] [H_yc2_le_yc1] _ [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 H_comp.
    -        subst.
    -        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    -          rewrite Z2N.id; omega.
    -        }
    -        have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. {
    -          rewrite Z2N.id; omega.
    -        }
    -        split; last split. {
    -          move ⇒ y.
    -          rewrite !InZ_insert_intervalZ_guarded
    -                  !InZ_cons !In_elementsZ_single
    -                  H_yc1_intro H_y1_intro InZ_nil.
    -          split. {
    -            rewrite -!or_assoc.
    -            move ⇒ [[[]|]|] //. {
    -              move ⇒ [H_y1_le_y] H_y_lt.
    -              split. {
    -                left.
    -                split ⇒ //.
    -                apply Z.lt_le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -                apply Z.lt_trans with (m := y2) ⇒ //.
    -                by apply Z_lt_add_r.
    -              } {
    -                move ⇒ [] /Z.le_ngt //.
    -              }
    -            } {
    -              move ⇒ [H_y2c_le_y] H_y_lt_yc1.
    -              split. {
    -                left.
    -                split ⇒ //.
    -                apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -                apply Z.le_trans with (m := y2) ⇒ //.
    -                apply Z_le_add_r.
    -              } {
    -                move ⇒ [] _ /Z.lt_nge //.
    -              }
    -            } {
    -              move ⇒ H_y_in_s1´.
    -              split; first by right.
    -              suff H_suff : y2 + Z.of_N c2 ≤ y. {
    -                move ⇒ [] _ /Z.lt_nge //.
    -              }
    -              apply Z.le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -              apply Z.lt_le_incl.
    -              by apply H_gr_s1´_alt.
    -            }
    -          } {
    -            move ⇒ [] []; last by tauto.
    -            move ⇒ [H_y1_le_y] H_y_lt H_neq_y2.
    -            apply not_and in H_neq_y2; last by apply Z.le_decidable.
    -            case H_neq_y2. {
    -              move ⇒ /Z.nle_gt H_y_lt´.
    -              left; left; done.
    -            } {
    -              move ⇒ /Z.nlt_ge H_le_y.
    -              right; left; done.
    -            }
    -          }
    -        } {
    -          rewrite insert_intervalZ_guarded_rev_nil_app.
    -          rewrite !interval_list_invariant_insert_intervalZ_guarded ⇒ //. {
    -            rewrite H_yc1_intro ⇒ //.
    -          } {
    -            rewrite /insert_intervalZ_guarded.
    -            case_eq ((Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2)) =? 0)%N). {
    -              rewrite H_y1_intro.
    -              move ⇒ /N.eqb_eq /N2Z.inj_iff.
    -              rewrite Z2N.id; last first. {
    -                by apply Z.le_0_sub.
    -              }
    -              move ⇒ /Zminus_eq H_yc1_eq.
    -              eapply interval_list_elements_greater_impl;
    -                last apply H_gr_s1´.
    -              rewrite H_yc1_eq.
    -              apply Z_le_add_r.
    -            } {
    -              move ⇒ _.
    -              rewrite interval_list_elements_greater_cons
    -                      H_y1_intro.
    -              by apply Z_lt_add_r.
    -            }
    -          }
    -        } {
    -          move ⇒ x.
    -          rewrite InZ_insert_intervalZ_guarded InZ_cons In_elementsZ_single H_y1_intro InZ_nil.
    -          move ⇒ [] //.
    -          move ⇒ [_] H_x_lt.
    -          apply Z.lt_le_trans with (m := y2) ⇒ //.
    -          apply Z_le_add_r.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3.
    -        move ⇒ H_yc2_lt [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 H_comp.
    -        subst.
    -        split; last split. {
    -          move ⇒ y.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split; last by tauto. {
    -            move ⇒ [] //.
    -            move ⇒ H_y_in.
    -            split; first assumption.
    -            rewrite In_elementsZ_single.
    -            move ⇒ [] H_y2_le H_y_lt.
    -            case H_y_in; first by omega.
    -            move ⇒ /H_gr_s1´_alt H_lt_y.
    -            suff : y2 + Z.of_N c2 < y. {
    -              move ⇒ ?. omega.
    -            }
    -            apply Z.lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -            apply Z.lt_le_trans with (m := y1) ⇒ //.
    -            apply Z_le_add_r.
    -          }
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        } {
    -          done.
    -        }
    -      } {
    -        rewrite /P1 /P2 /P3.
    -        move ⇒ H_yc2_eq [] H_acc´ H_s´.
    -        clear IH P1 P2 P3 H_comp.
    -        subst.
    -        split; last split. {
    -          move ⇒ y.
    -          rewrite InZ_cons In_elementsZ_single.
    -          split; last by tauto. {
    -            move ⇒ [] //.
    -            move ⇒ H_y_in.
    -            split; first assumption.
    -            rewrite In_elementsZ_single.
    -            move ⇒ [] H_y2_le H_y_lt.
    -            case H_y_in; first by omega.
    -            move ⇒ /H_gr_s1´_alt H_lt_y.
    -            suff : y2 + Z.of_N c2 < y. {
    -              move ⇒ ?. omega.
    -            }
    -            apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) ⇒ //.
    -            by apply Z_lt_add_r.
    -          }
    -        } {
    -          by rewrite interval_list_invariant_cons.
    -        } {
    -          done.
    -        }
    -      }
    -    }
    -  Qed.
    - +
      Lemma diff_aux2_props :
       âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev_append acc s1) = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    -               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    -    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
    -  Proof.
    -    induction s2 as [| [y2 c2] s2´ IH]. {
    -      move ⇒ s1 acc H_inv_acc_s1 _ _.
    -      rewrite /diff_aux2.
    -      replace (match s1 with
    -        | nil ⇒ rev_append acc s1
    -        | _ :: _ ⇒ rev_append acc s1
    -       end) with (rev_append acc s1); last by case s1.
    -      split. {
    -        move ⇒ y.
    -        rewrite rev_append_rev InZ_app InZ_rev InZ_nil.
    -        tauto.
    -      } {
    -        assumption.
    -      }
    -    } {
    -      intros s1 acc H_inv_acc_s1.
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ [H_gr_s2´] [H_c2_neq_0] H_inv_s2´.
    -      move ⇒ H_acc_s2.
    -      rewrite /diff_aux2; fold diff_aux2.
    -      case_eq s1. {
    -        move ⇒ H_s1_eq.
    -        split. {
    -          move ⇒ y.
    -          rewrite rev_append_rev InZ_app InZ_nil InZ_rev.
    -          split; last tauto.
    -          move ⇒ [] // H_y_in.
    -          split; first by left.
    -          move ⇒ H_y_in´.
    -          move : (H_acc_s2 _ _ H_y_in H_y_in´).
    -          apply Z.nlt_succ_diag_l.
    -        } {
    -          move : H_inv_acc_s1.
    -           by rewrite H_s1_eq.
    -        }
    -      } {
    -        move ⇒ [_ _] _ <-.
    -        case_eq (diff_aux y2 c2 acc s1).
    -        move ⇒ acc´ s1´ H_diff_aux_eq.
    - -
    -        have H_acc_lt_y2 : (∀ x : Z, InZ x acc → x < y2). {
    -          move ⇒ x H_x_in.
    -          have H_y2_in: (InZ y2 ((y2,c2) :: s2´)). {
    -            rewrite InZ_cons.
    -            left.
    -            by apply In_elementsZ_single_hd.
    -          }
    -          move : (H_acc_s2 _ _ H_x_in H_y2_in).
    -          apply Z.lt_trans, Z.lt_succ_diag_r.
    -        }
    -
    -        have [H_inv_acc [H_inv_s1 H_acc_s1]] :
    -          interval_list_invariant (rev acc) = true ∧
    -          interval_list_invariant s1 = true ∧
    -          (∀ x1 x2 : Z,
    -             InZ x1 acc → InZ x2 s1 → Z.succ x1 < x2). {
    -
    -          move : H_inv_acc_s1.
    -          rewrite rev_append_rev.
    -          move ⇒ /interval_list_invariant_app_elim.
    -          move ⇒ [?] [?] H_x.
    -          split; first assumption.
    -          split; first assumption.
    -          move ⇒ x1 x2 H_in_x1.
    -          apply H_x.
    -          by rewrite InZ_rev.
    -        }
    -
    -        move : (diff_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1 H_acc_lt_y2 H_c2_neq_0).
    -        rewrite !H_diff_aux_eq.
    -        move ⇒ [H_inZ_res] [H_inv_res] H_inZ_acc´.
    - -
    -        have H_acc´_s2´ : (∀ x1 x2 : Z,
    -                              InZ x1 acc´ → InZ x2 s2´ → Z.succ x1 < x2). {
    -          move ⇒ x1 x2 H_x1_in H_x2_in.
    -          apply Z.le_lt_trans with (m := y2 + Z.of_N c2). {
    -            apply Z.le_succ_l.
    -            by apply H_inZ_acc´.
    -          } {
    -            move : H_gr_s2´.
    -            rewrite interval_list_elements_greater_alt2_def //.
    -            move ⇒ H_gr_s2´.
    -            by apply H_gr_s2´.
    -          }
    -        }
    -
    -        move : (IH s1´ acc´ H_inv_res H_inv_s2´ H_acc´_s2´).
    -        move ⇒ [] H_inZ_diff_res →.
    -        split; last done.
    -        move ⇒ y.
    -        rewrite H_inZ_diff_res.
    -        move : (H_inZ_res y).
    -        rewrite !rev_append_rev !InZ_app !InZ_rev InZ_cons.
    -        move ⇒ →.
    -        tauto.
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant (rev_append acc s1) = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    +               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    +    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
    +
      Lemma diff_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).
    -  Proof.
    -    intros s1 s2 H_inv_s1 H_inv_s2 y.
    -    rewrite /diff.
    - -
    -    move : (diff_aux2_props s2 s1 nil).
    -    move ⇒ [] //.
    -    move ⇒ H_in_diff _.
    -    rewrite H_in_diff InZ_nil.
    -    tauto.
    -  Qed.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).

      Lemma diff_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (diff s1 s2) = true.
    -  Proof.
    -    intros s1 s2 H_inv_s1 H_inv_s2.
    -    rewrite /diff.
    - -
    -    move : (diff_aux2_props s2 s1 nil).
    -    move ⇒ [] //.
    -  Qed.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (diff s1 s2) = true.


      Global Instance diff_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (diff s1 s2).
    -  Proof.
    -    move ⇒ H_ok_s1 H_ok_s2.
    -    move : (H_ok_s1) (H_ok_s2).
    -    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    -    move ⇒ [H_inv_s1] H_pre1.
    -    move ⇒ [H_inv_s2] H_pre2.
    -    split. {
    -      apply diff_invariant ⇒ //.
    -    } {
    -      intros y.
    -      move : (diff_InZ s1 s2 H_inv_s1 H_inv_s2).
    -      rewrite /InZ ⇒ →.
    -      move ⇒ [].
    -      move ⇒ /H_pre1 //.
    -    }
    -  Qed.
    - +
      Lemma diff_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s) (Hs´ : Ok ),
    -   In x (diff s ) ↔ In x s ∧ ¬In x .
    -  Proof.
    -    intros s x H_ok H_ok´.
    -    rewrite !In_InZ.
    -    rewrite diff_InZ ⇒ //. {
    -      apply H_ok.
    -    } {
    -      apply H_ok´.
    -    }
    -  Qed.
    - +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +
    -

    remove specification

    +

    remove specification


      Lemma removeZ_alt_def : ∀ x s acc,
    -    interval_list_invariant s = true →
    -    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    -                    (acc´, ) ⇒ rev_append acc´
    +    interval_list_invariant s = true →
    +    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    +                    (acc', s') ⇒ rev_append acc' s'
                      end.
    -  Proof.
    -    intros y2.
    -    induction s as [| [y1 c1] IH]; first done.
    - -
    -    move ⇒ acc.
    -    rewrite interval_list_invariant_cons /=.
    -    move ⇒ [H_gr] [H_c1_neq_0] H_inv_s´.
    -    move : (interval_1_compare_elim y2 y1 c1).
    -    rewrite interval_1_compare_alt_def.
    -    rewrite !(interval_compare_swap y1 c1 y2); last first. {
    -      right. done.
    -    }
    -    move : (interval_compare_elim y1 c1 y2 (1%N)).
    -    case_eq (interval_compare (y1, c1) (y2, (1%N))) ⇒ H_eq. {
    -      move ⇒ H_lt_y2 _.
    -      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    -        by apply Z.nlt_ge, Z.lt_le_incl.
    -      }
    -      have H_y2_nlt : ~(y2 < y1). {
    -        move ⇒ H_y2_y1.
    -        apply H_yc2_nlt.
    -        apply Z.lt_le_trans with (m := y1) ⇒ //.
    -        apply Z_le_add_r.
    -      }
    -      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    -      rewrite IH //.
    -    } {
    -      move ⇒ H_lt_y2 _.
    -      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    -        apply Z.nlt_ge.
    -        rewrite H_lt_y2.
    -        apply Z.le_refl.
    -      }
    -      have H_y2_nlt : ~(y2 < y1). {
    -        move ⇒ H_y2_y1.
    -        apply H_yc2_nlt.
    -        apply Z.lt_le_trans with (m := y1) ⇒ //.
    -        apply Z_le_add_r.
    -      }
    -      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    -      rewrite IH //.
    -    } {
    -      done.
    -    } {
    -      done.
    -    } {
    -      move ⇒ [H_y1_eq] H_c1_eq.
    -      move ⇒ [] // .
    -      move ⇒ [H_lt_y2] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    -      }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    -      rewrite /insert_intervalZ_guarded.
    - -
    -      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    -        rewrite H_y1_eq H_c1_eq Z.add_1_r Z.sub_diag //.
    -      }
    -
    -      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    -        rewrite H_y1_eq Z.sub_diag //.
    -      }
    -      done.
    -    } {
    -      move ⇒ [H_y2_le] [H_yc1_le] _.
    -      move ⇒ [] //.
    -      move ⇒ [H_y1_le] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    -      }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    - -
    -      have H_y1_eq : (y1 = y2) by omega.
    -      have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). {
    -        apply Z.le_antisymm. {
    -          move : H_yc1_le.
    -          rewrite Z.add_1_r //.
    -        } {
    -          by apply Z.le_succ_l.
    -        }
    -      }
    -
    -      rewrite /insert_intervalZ_guarded.
    -      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    -        rewrite H_yc1_eq Z.sub_diag //.
    -      }
    -
    -      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    -        rewrite H_y1_eq Z.sub_diag //.
    -      }
    -
    -      suff → : diff_aux y2 (1%N) acc = (acc, ) by done.
    - -
    -      move : H_gr.
    -      rewrite H_yc1_eq.
    -      case as [| [ ] s´´]. {
    -        done.
    -      } {
    -        rewrite interval_list_elements_greater_cons /=
    -                /interval_compare.
    -        move ⇒ H_lt_y´.
    -        have → : y2 + Z.of_N 1 ?= = Lt. {
    -          apply Z.compare_lt_iff.
    -          by rewrite Z.add_1_r.
    -        }
    -        done.
    -      }
    -    } {
    -      move ⇒ [H_y1_le] [H_yc2_le] _.
    -      move ⇒ [] //.
    -      move ⇒ [_] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    -      }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    -      rewrite !rev_append_rev /insert_intervalZ_guarded Z.add_1_r.
    -      case ((Z.to_N (y2 - y1) =? 0)%N), (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0)%N. {
    -        reflexivity.
    -      } {
    -        rewrite /= -!app_assoc //.
    -      } {
    -        reflexivity.
    -      } {
    -        rewrite /= -!app_assoc //.
    -      }
    -    } {
    -      move ⇒ _ H_y2_lt´.
    -      have H_y2_lt : (y2 < y1). {
    -        apply Z.lt_trans with (m := Z.succ y2) ⇒ //.
    -        apply Z.lt_succ_diag_r.
    -      }
    -      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    -    } {
    -      move ⇒ _ H_y1_eq.
    -      have H_y2_lt : (y2 < y1). {
    -        rewrite H_y1_eq.
    -        apply Z.lt_succ_diag_r.
    -      }
    -      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    -    }
    -  Qed.
    - -
    -  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.
    -  Proof.
    -    intros s x H_inv.
    -    rewrite /removeZ removeZ_alt_def //.
    -    move : (diff_aux_props x (1%N) s nil).
    -    case_eq (diff_aux x 1%N nil s).
    -    move ⇒ acc´ H_eq [] //.
    -    move ⇒ _ [] //.
    -  Qed.
    + +
    +  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.

      Lemma removeZ_spec :
    -   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    -    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.
    -  Proof.
    -    intros s x y H_inv.
    -    rewrite /removeZ removeZ_alt_def //.
    -    move : (diff_aux_props x (1%N) s nil).
    -    case_eq (diff_aux x 1%N nil s).
    -    move ⇒ acc´ H_eq [] //.
    -    move ⇒ → _.
    -    rewrite rev_append_rev InZ_app InZ_rev InZ_nil
    -            In_elementsZ_single1.
    -    split; move ⇒ [H1 H2]; split ⇒ //;
    -      move ⇒ H3; apply H2; by rewrite H3.
    -  Qed.
    +   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    +    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.

      Global Instance remove_ok s x : ∀ `(Ok s), Ok (remove x s).
    -  Proof.
    -    rewrite /Ok /interval_list_invariant /remove.
    -    move ⇒ [H_is_ok_s H_enc_s].
    -    split. {
    -      by apply removeZ_interval_list_invariant.
    -    } {
    -      rewrite /is_encoded_elems_list ⇒ y.
    -      move : (removeZ_spec s (Enc.encode x) y H_is_ok_s).
    -      rewrite /InZ ⇒ → [] H_y_in _.
    -      apply H_enc_s ⇒ //.
    -    }
    -  Qed.
    - +
      Lemma remove_spec :
       âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
    -  Proof.
    -    intros s x y Hs.
    -    have H_rs := (remove_ok s x Hs).
    -    rewrite /remove !In_InZ.
    -    rewrite removeZ_spec. {
    -      rewrite Enc.encode_eq //.
    -    } {
    -      apply Hs.
    -    }
    -  Qed.
    - +    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
    +
    -

    remove_list specification

    +

    remove_list specification


    -  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
    -  Proof.
    -    induction l as [| x IH]. {
    -      done.
    -    } {
    -      move ⇒ s H_s_ok /=.
    -      apply IH.
    -      by apply remove_ok.
    -    }
    -  Qed.
    - +  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
    +
    -  Lemma remove_list_spec : ∀ x l s, Ok s →
    -     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
    -  Proof.
    -    move ⇒ x.
    -    induction l as [| y IH]. {
    -      intros s H.
    -      rewrite /= InA_nil.
    -      tauto.
    -    } {
    -      move ⇒ s H_ok /=.
    -      rewrite IH remove_spec InA_cons.
    -      tauto.
    -    }
    -  Qed.
    - +  Lemma remove_list_spec : ∀ x l s, Ok s →
    +     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
    +

    -

    subset specification

    +

    subset specification


      Lemma subset_flatten_alt_def : ∀ (s1 s2 : t),
    -    subset s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    +    subset s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
              | ICR_after ⇒ subset s1 l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
              | ICR_equal ⇒ subset l1 l2
              | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +          | ICR_subsume_2 ⇒ false
            end
        end.
    -  Proof.
    -    intros s1 s2.
    -    case s1, s2 ⇒ //.
    -  Qed.

      Lemma subset_props_aux : ∀ y1 c1 l1 y2 c2 l2,
    -    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    -  Proof.
    -    intros y1 c1 l1 y2 c2 l2.
    -    move ⇒ [y] [H_y_in H_y_nin].
    -    split; first done.
    -    move ⇒ H.
    -    contradict H_y_nin.
    -    by apply H.
    -  Qed.
    +    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).

      Lemma subset_props_aux_before : ∀ y1 c1 l1 y2 c2 l2,
    -    (c1 ≠ 0%N) →
    -    interval_list_invariant ((y2, c2) :: l2) = true →
    -    (y1 < y2) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    -  Proof.
    -    intros y1 c1 l1 y2 c2 l2.
    -    rewrite interval_list_invariant_cons.
    -    move ⇒ H_c1_neq_0 [H_gr] [H_inv_l2] H_c2_neq_0 H_y1_lt.
    -    apply subset_props_aux.
    -    âˆƒ y1.
    -    split. {
    -      rewrite InZ_cons.
    -      left.
    -      by apply In_elementsZ_single_hd.
    -    } {
    -      rewrite InZ_cons.
    -      suff : ¬ (List.In y1 (elementsZ_single y2 c2)) ∧ ¬ InZ y1 l2 by tauto.
    -      split. {
    -        rewrite In_elementsZ_single.
    -        move ⇒ [] /Z.le_ngt //.
    -      } {
    -        eapply Nin_elements_greater; eauto.
    -        apply Z.le_trans with (m := y2). {
    -          by apply Z.lt_le_incl.
    -        } {
    -          apply Z_le_add_r.
    -        }
    -      }
    -    }
    -  Qed.
    - +    (c1 ≠ 0%N) →
    +    interval_list_invariant ((y2, c2) :: l2) = true →
    +    (y1 < y2) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +

      Lemma subset_props : ∀ s1 s2 : t,
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (subset s1 s2 = true ↔
    -     (∀ y, InZ y s1 → InZ y s2)).
    -  Proof.
    -    induction s1 as [| [y1 c1] l1 IH1]. {
    -      move ⇒ s2 _ _.
    -      rewrite subset_flatten_alt_def.
    -      split; done.
    -    } {
    -      induction s2 as [| [y2 c2] l2 IH2]. {
    -        rewrite interval_list_invariant_cons
    -                subset_flatten_alt_def.
    -        move ⇒ [_] [H_c1_neq_0] _ _.
    -        split ⇒ //.
    -        move ⇒ H; move : (H y1).
    -        rewrite InZ_nil ⇒ {H} H.
    -        contradict H.
    -        rewrite InZ_cons; left.
    -        by apply In_elementsZ_single_hd.
    -      } {
    -        move ⇒ H_inv_s1 H_inv_s2.
    -        move : (H_inv_s1) (H_inv_s2).
    -        rewrite !interval_list_invariant_cons.
    -        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    -        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          (subset l1 s2 = true ↔
    -          (∀ y : Z, InZ y l1 → InZ y s2)). {
    -          intros. by apply IH1.
    -        }
    -        move ⇒ {IH1} IH1.
    - -
    -        have H_yc2_nin : ¬ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). {
    -          rewrite !InZ_cons !In_elementsZ_single.
    -          move ⇒ []. {
    -            move ⇒ [_] /Z.lt_irrefl //.
    -          } {
    -            eapply Nin_elements_greater; eauto.
    -            apply Z.le_refl.
    -          }
    -        }
    -          
    -        rewrite subset_flatten_alt_def.
    -        move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    -          move ⇒ H_lt_y2.
    -          apply subset_props_aux_before ⇒ //.
    -          apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -          apply Z_le_add_r.
    -        } {
    -          move ⇒ H_y2_eq.
    -          apply subset_props_aux_before ⇒ //.
    -          rewrite -H_y2_eq.
    -          by apply Z_lt_add_r.
    -        } {
    -          move ⇒ [H_y1_lt] _.
    -          apply subset_props_aux_before ⇒ //.
    -        } {
    -          move ⇒ [H_y2_lt] [H_y1_lt] H_yc2_lt.
    -          apply subset_props_aux.
    -          âˆƒ (y2 + Z.of_N c2).
    -          split ⇒ //.
    -          rewrite !InZ_cons !In_elementsZ_single.
    -          left.
    -          split ⇒ //.
    -          by apply Z.lt_le_incl.
    -        } {
    -          move ⇒ [H_y1_eq] H_c1_eq; subst.
    -          rewrite IH1 ⇒ //.
    -          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    -            rewrite !InZ_cons. {
    -            tauto.
    -          } {
    -            move ⇒ H_pre H_y_in_l1.
    -            suff : ~(List.In y (elementsZ_single y2 c2)). {
    -              tauto.
    -            }
    -            move : H_gr_l1.
    -            rewrite interval_list_elements_greater_alt2_def
    -              // In_elementsZ_single.
    -            move ⇒ H; move : (H y H_y_in_l1) ⇒ {H}.
    -            move ⇒ /Z.lt_ngt H_neq [_] //.
    -          }
    -        } {
    -          move ⇒ [H_y2_lt_y1] [H_yc1_le] _.
    -          rewrite IH1.
    -          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    -            rewrite !InZ_cons. {
    -            move ⇒ H []; last apply H. move ⇒ {H}.
    -            rewrite !In_elementsZ_single.
    -            move ⇒ [H_y1_le] H_y_lt.
    -            left.
    -            omega.
    -          } {
    -            move ⇒ H_pre H_y_in_l1.
    -            apply H_pre.
    -            by right.
    -          } {
    -            assumption.
    -          }
    -        } {
    -          move ⇒ [H_y1_le] [_] []. {
    -            apply subset_props_aux_before ⇒ //.
    -          } {
    -            move ⇒ H_yc2_lt.
    -            apply subset_props_aux.
    -            âˆƒ (y2 + Z.of_N c2).
    -            split ⇒ //.
    -            rewrite !InZ_cons !In_elementsZ_single.
    -            left.
    -            split ⇒ //.
    -            apply Z.le_trans with (m := y2) ⇒ //.
    -            apply Z_le_add_r.
    -          }
    -        } {
    -          move ⇒ H_yc2_lt_y1.
    -          rewrite IH2.
    -          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    -                                                        rewrite !InZ_cons. {
    -            tauto.
    -          } {
    -            rewrite !In_elementsZ_single.
    -            move ⇒ H_pre H_y_in.
    -            suff : ~(y2 ≤ y < y2 + Z.of_N c2). {
    -              tauto.
    -            }
    -            move ⇒ [H_y2_le H_y_lt].
    -            move : H_y_in ⇒ []. {
    -              move ⇒ [H_y1_le] H_y_lt´.
    -              omega.
    -            } {
    -              eapply Nin_elements_greater; eauto.
    -              apply Z.le_trans with (m := y1); last first. {
    -                apply Z_le_add_r.
    -              }
    -              apply Z.lt_le_incl.
    -              apply Z.lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -            }
    -          }
    -        } {
    -          move ⇒ H_y1_eq.
    -          apply subset_props_aux.
    -          âˆƒ y1.
    -          rewrite !InZ_cons.
    -          split. {
    -            left.
    -            by apply In_elementsZ_single_hd.
    -          } {
    -            rewrite !In_elementsZ_single H_y1_eq.
    -            move ⇒ []. {
    -              move ⇒ [_] /Z.lt_irrefl //.
    -            } {
    -              eapply Nin_elements_greater; eauto.
    -              rewrite H_y1_eq.
    -              apply Z.le_refl.
    -            }
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (subset s1 s2 = true ↔
    +     (∀ y, InZ y s1 → InZ y s2)).
    +
      Lemma subset_spec :
    -   âˆ€ (s : t) (Hs : Ok s) (Hs´ : Ok ),
    -   subset s = true ↔ Subset s .
    -  Proof.
    -    intros s Hs Hs´.
    -    move : (Hs) (Hs´).
    -    rewrite /Ok /IsOk.
    -    move ⇒ [H_inv_s H_enc_s] [H_inv_s´ H_enc_s´].
    -    rewrite (subset_props s H_inv_s H_inv_s´).
    -    rewrite /Subset.
    -    split. {
    -      move ⇒ H_pre enc_y.
    -      rewrite !In_InZ.
    -      apply H_pre.
    -    } {
    -      move ⇒ H_pre y H_y_in.
    -      move : (H_enc_s _ H_y_in) ⇒ [e] H_e. subst.
    -      move : (H_pre e) H_y_in.
    -      rewrite !In_InZ //.
    -    }
    -  Qed.
    - +   âˆ€ (s s' : t) (Hs : Ok s) (Hs' : Ok s'),
    +   subset s s' = true ↔ Subset s s'.
    +
    -

    elements and elementsZ specification

    +

    elements and elementsZ specification


    -  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.
    -  Proof.
    -    intros s x Hs.
    -    by rewrite In_alt_def.
    -  Qed.
    +  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.

      Lemma NoDupA_elementsZ_single: ∀ c x,
    -    NoDupA Z.eq (elementsZ_single x c).
    -  Proof.
    -    induction c as [| IH] using N.peano_ind. {
    -      intros x.
    -      rewrite elementsZ_single_base //.
    -    } {
    -      intros x.
    -      rewrite elementsZ_single_succ.
    -      apply NoDupA_app. {
    -        apply Z.eq_equiv.
    -      } {
    -        apply IH.
    -      } {
    -        apply NoDupA_singleton.
    -      } {
    -        move ⇒ y.
    -        rewrite !InA_alt.
    -        move ⇒ [_] [<-] H_y_in.
    -        move ⇒ [_] [<-] H_y_in´.
    -        move : H_y_in H_y_in´.
    -        rewrite In_elementsZ_single /=.
    -        move ⇒ [H_x_le] H_y_lt [] // H_y_eq.
    -        contradict H_y_lt.
    -        rewrite H_y_eq.
    -        apply Z.lt_irrefl.
    -      }
    -    }
    -  Qed.
    - -
    -  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
    -  Proof.
    -    induction s as [| [x c] IH]. {
    -      move ⇒ _.
    -      rewrite elementsZ_nil.
    -      apply NoDupA_nil.
    -    } {
    -      move ⇒ H_ok_s.
    -      move : (H_ok_s) ⇒ /Ok_cons [H_interval_list_elements_greater] [H_c] [H_enc] H_s´.
    -      rewrite elementsZ_cons.
    -      apply NoDupA_app. {
    -        apply Z.eq_equiv.
    -      } {
    -        by apply IH.
    -      } {
    -        apply NoDupA_rev. {
    -          apply Z.eq_equiv.
    -        } {
    -          apply NoDupA_elementsZ_single.
    -        }
    -      } {
    -        move ⇒ y.
    -        rewrite !InA_alt.
    -        move ⇒ [_] [<-] H_y_in.
    -        move ⇒ [_] [<-] H_y_in´.
    -        move : H_y_in´.
    -        rewrite -in_rev In_elementsZ_single /=.
    -        move ⇒ [H_x_le] H_y_lt.
    -        eapply (Nin_elements_greater (x + Z.of_N c)) ⇒ //. {
    -          apply H_s´.
    -        } {
    -          apply Z.lt_le_incl, H_y_lt.
    -        } {
    -          apply H_y_in.
    -        }
    -      }
    -    }
    -  Qed.
    - -
    -  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
    -  Proof.
    -    intros s Hs.
    -    rewrite /elements rev_map_alt_def.
    -    apply NoDupA_rev. {
    -      apply Enc.E.eq_equiv.
    -    } {
    -      eapply NoDupA_map; first by apply elementsZ_spec2w.
    - -
    -      intros x1 x2 H_x1_in H_x2_in H_dec_eq.
    -      have H_is_enc: is_encoded_elems_list (elementsZ s). {
    -        apply Hs.
    -      }
    -      move : (H_is_enc _ H_x1_in) ⇒ [y1 H_x1_eq].
    -      move : (H_is_enc _ H_x2_in) ⇒ [y2 H_x2_eq].
    -      move : H_dec_eq.
    -      rewrite -H_x1_eq -H_x2_eq !Enc.decode_encode_ok Enc.encode_eq //.
    -    }
    -  Qed.
    - +    NoDupA Z.eq (elementsZ_single x c).
    + +
    +  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
    + +
    +  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
    +
    -

    equal specification

    +

    equal specification


      Lemma equal_alt_def : ∀ s1 s2,
    -    equal s1 s2 = true ↔ (s1 = s2).
    -  Proof.
    -    induction s1 as [| [x cx] xs IH]. {
    -      move ⇒ [] //.
    -    } {
    -      move ⇒ [] //=.
    -      move ⇒ [y cy] ys.
    -      rewrite !andb_true_iff IH N.eqb_eq Z.eqb_eq.
    -      split. {
    -        move ⇒ [->] [->] → //.
    -      } {
    -        move ⇒ [->] → → //.
    -      }
    -    }
    -  Qed.
    - +    equal s1 s2 = true ↔ (s1 = s2).
    +
      Lemma equal_elementsZ :
    -    âˆ€ (s : t) {Hs : Ok s} {Hs´ : Ok },
    -    (∀ x, (InZ x s ↔ InZ x )) → (s = ).
    -  Proof.
    -    intros s .
    -    move ⇒ H_ok_s H_ok_s´ H_InZ_eq.
    -    have [] : ((subset s = true) ∧ (subset s = true)). {
    -      rewrite !subset_spec /Subset.
    -      split ⇒ x; rewrite !In_InZ H_InZ_eq //.
    -    }
    -    have : interval_list_invariant = true by apply H_ok_s´.
    -    have : interval_list_invariant s = true by apply H_ok_s.
    -    clear H_ok_s H_ok_s´ H_InZ_eq.
    -    move : s .
    -    induction s as [| [x1 c1] s1 IH];
    -      case as [| [x2 c2] s2] ⇒ //.
    -    rewrite !interval_list_invariant_cons.
    -    move ⇒ [H_gr_s1] [H_c1_neq_0] H_inv_s1.
    -    move ⇒ [H_gr_s2] [H_c2_neq_0] H_inv_s2.
    -    rewrite subset_flatten_alt_def
    -            (subset_flatten_alt_def ((x2, c2)::s2)).
    -    rewrite (interval_compare_swap x1 c1); last by left.
    -    move : (interval_compare_elim x1 c1 x2 c2).
    -    case (interval_compare (x1, c1) (x2, c2)) ⇒ //.
    -    move ⇒ [->] → H_sub_s12 H_sub_s21.
    - -
    -    suff → : s1 = s2 by done.
    -    by apply IH.
    -  Qed.
    +    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    +    (∀ x, (InZ x s ↔ InZ x s')) → (s = s').

      Lemma equal_spec :
    -    âˆ€ (s : t) {Hs : Ok s} {Hs´ : Ok },
    -    equal s = true ↔ Equal s .
    -  Proof.
    -    intros s Hs Hs´.
    -    rewrite equal_alt_def /Equal.
    -    split. {
    -      move ⇒ → //.
    -    } {
    -      move ⇒ H.
    -      apply equal_elementsZ ⇒ // x.
    -      move : (H (Enc.decode x)).
    -      rewrite !In_InZ.
    - -
    -      suff H_ex : (∀ s´´, Ok s´´ → InZ x s´´ → (∃ z, Enc.encode z = x)). {
    -        move ⇒ HH.
    -        split. {
    -          move ⇒ H3.
    -          move : HH (H3).
    -          move : (H_ex s Hs H3) ⇒ [z] <-.
    -          rewrite Enc.decode_encode_ok ⇒ <- //.
    -        } {
    -          move ⇒ H3.
    -          move : HH (H3).
    -          move : (H_ex Hs´ H3) ⇒ [z] <-.
    -          rewrite Enc.decode_encode_ok ⇒ <- //.
    -        }
    -      }
    -      clear.
    -      intros s´´ H_ok H_in_x.
    -      have H_enc : is_encoded_elems_list (elementsZ s´´). {
    -        apply H_ok.
    -      }
    -      apply H_enc.
    -      apply H_in_x.
    -    }
    -  Qed.
    - +    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    +    equal s s' = true ↔ Equal s s'.
    +
    -

    compare

    +

    compare

    -  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).
    +  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).

      Lemma compare_eq_Eq : ∀ s1 s2,
    -    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
    -  Proof.
    -    induction s1 as [| [y1 c1] s1´ IH];
    -      case s2 as [| [y2 c2] s2´] ⇒ //.
    -    rewrite /= !andb_true_iff -IH Z.eqb_eq N.eqb_eq.
    -    move : (Z.compare_eq_iff y1 y2).
    -    case (Z.compare y1 y2). {
    -      move ⇒ H.
    -      have → : y1 = y2. by apply H.
    -      clear H.
    - -
    -      move : (N.compare_eq_iff c1 c2).
    -      case (N.compare c1 c2). {
    -        move ⇒ H.
    -        have → : c1 = c2. by apply H.
    -        tauto.
    -      } {
    -        move ⇒ H.
    -        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    -        tauto.
    -      } {
    -        move ⇒ H.
    -        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    -        tauto.
    -      }
    -    } {
    -      move ⇒ H.
    -      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    -      tauto.
    -    } {
    -      move ⇒ H.
    -      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    -      tauto.
    -    }
    -  Qed.
    - +    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
    +
      Lemma compare_eq_Lt_nil_l : ∀ s,
    -    compare nil s = Lt ↔ s ≠ nil.
    -  Proof.
    -    intros s.
    -    case s ⇒ //=.
    -    split ⇒ //.
    -  Qed.
    +    compare nil s = Lt ↔ s ≠ nil.

      Lemma compare_eq_Lt_nil_r : ∀ s,
    -    ~(compare s nil = Lt).
    -  Proof.
    -    intros s.
    -    case s as [| [y1 c1] ] ⇒ //=.
    -  Qed.
    +    ~(compare s nil = Lt).

      Lemma compare_eq_Lt_cons : ∀ y1 y2 c1 c2 s1 s2,
    -    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    -    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    -    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
    -  Proof.
    -    intros y1 y2 c1 c2 s1 s2.
    -    rewrite /=.
    -    case_eq (Z.compare y1 y2). {
    -      move ⇒ /Z.compare_eq_iff →.
    -      case_eq (N.compare c1 c2). {
    -        move ⇒ /N.compare_eq_iff →.
    -        split. {
    -          move ⇒ H.
    -          right; right.
    -          done.
    -        } {
    -          move ⇒ [| []]. {
    -            move ⇒ /Z.lt_irrefl //.
    -          } {
    -            move ⇒ [_] /N.lt_irrefl //.
    -          } {
    -            move ⇒ [_] [_] → //.
    -          }
    -        }
    -      } {
    -        move ⇒ /N.compare_lt_iff H_c1_lt.
    -        split ⇒ //.
    -        move ⇒ _.
    -        right; left. done.
    -      } {
    -        move ⇒ /N.compare_gt_iff H_c2_lt.
    -        split ⇒ //.
    -        move ⇒ [| []]. {
    -          move ⇒ /Z.lt_irrefl //.
    -        } {
    -          move ⇒ [_] /N.lt_asymm //.
    -        } {
    -          move ⇒ [_] [] H_c1_eq.
    -          contradict H_c2_lt.
    -          subst c1.
    -          by apply N.lt_irrefl.
    -        }
    -      }
    -    } {
    -      move ⇒ /Z.compare_lt_iff.
    -      tauto.
    -    } {
    -      move ⇒ /Z.compare_gt_iff H_y2_lt.
    -      split ⇒ //.
    -      move ⇒ [| []]. {
    -        move ⇒ /Z.lt_asymm //.
    -      } {
    -        move ⇒ [] H_y1_eq.
    -        exfalso. omega.
    -      } {
    -        move ⇒ [] H_y1_eq.
    -        exfalso. omega.
    -      }
    -    }
    -  Qed.
    - +    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    +    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    +    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
    +

      Lemma compare_antisym: ∀ (s1 s2 : t),
    -    (compare s1 s2) = CompOpp (compare s2 s1).
    -  Proof.
    -    induction s1 as [| [y1 c1] s1´ IH];
    -      case s2 as [| [y2 c2] s2´] ⇒ //.
    -    rewrite /= (Z.compare_antisym y1 y2) (N.compare_antisym c1 c2).
    -    case (Z.compare y1 y2) ⇒ //=.
    -    case (N.compare c1 c2) ⇒ //=.
    -  Qed.
    +    (compare s1 s2) = CompOpp (compare s2 s1).

      Lemma compare_spec : ∀ s1 s2,
    -    CompSpec eq lt s1 s2 (compare s1 s2).
    -  Proof.
    -    intros s1 s2.
    -    rewrite /CompSpec /lt (compare_antisym s2 s1).
    -    case_eq (compare s1 s2). {
    -      rewrite compare_eq_Eq equal_alt_def ⇒ →.
    -      by apply CompEq.
    -    } {
    -      move ⇒ _.
    -      by apply CompLt.
    -    } {
    -      move ⇒ _.
    -      by apply CompGt.
    -    }
    -  Qed.
    - -
    -  Lemma lt_Irreflexive : Irreflexive lt.
    -  Proof.
    -    rewrite /Irreflexive /Reflexive /complement /lt.
    -    intros x.
    -    suff → : compare x x = Eq by done.
    -    rewrite compare_eq_Eq equal_alt_def //.
    -  Qed.
    - -
    -  Lemma lt_Transitive : Transitive lt.
    -  Proof.
    -    rewrite /Transitive /lt.
    -    induction x as [| [y1 c1] s1´ IH];
    -      case y as [| [y2 c2] s2´];
    -      case z as [| [y3 c3] s3´] ⇒ //.
    - -
    -    rewrite !compare_eq_Lt_cons.
    -    move ⇒ [H_y1_lt | [[->] H_c1_lt | [->] [->] H_comp]]
    - [H_y2_lt | [[<-] H_c2_lt | [<-] [<-] H_comp´]]. {
    -      left.
    -      by apply Z.lt_trans with (m := y2).
    -    } {
    -      by left.
    -    } {
    -      by left.
    -    } {
    -      by left.
    -    } {
    -      right; left.
    -      split ⇒ //.
    -      by apply N.lt_trans with (m := c2).
    -    } {
    -      by right; left.
    -    } {
    -      by left.
    -    } {
    -      by right; left.
    -    } {
    -      right; right.
    -      split ⇒ //.
    -      split ⇒ //.
    -      by apply (IH s2´).
    -    }
    -  Qed.
    +    CompSpec eq lt s1 s2 (compare s1 s2).
    + +
    +  Lemma lt_Irreflexive : Irreflexive lt.
    +
    +  Lemma lt_Transitive : Transitive lt.
    +
    -

    elements is sorted

    +

    elements is sorted


      Lemma elementsZ_single_sorted : ∀ c x,
    -    sort Z.lt (elementsZ_single x c).
    -  Proof.
    -    induction c as [| IH] using N.peano_ind. {
    -      intro x.
    -      rewrite elementsZ_single_base.
    -      apply Sorted_nil.
    -    } {
    -      intro x.
    -      rewrite elementsZ_single_succ_front.
    -      apply Sorted_cons. {
    -        apply IH.
    -      } {
    -        case (N.zero_or_succ ). {
    -          move ⇒ →.
    -          rewrite elementsZ_single_base //.
    -        } {
    -          move ⇒ [c´´] →.
    -          rewrite elementsZ_single_succ_front.
    -          constructor.
    -          apply Z.lt_succ_diag_r.
    -        }
    -      }
    -    }
    -  Qed.
    - +    sort Z.lt (elementsZ_single x c).
    +
      Lemma elementsZ_sorted : ∀ s,
    -    interval_list_invariant s = true →
    -    sort Z.lt (rev (elementsZ s)).
    -  Proof.
    -    induction s as [| [y c] IH]. {
    -      move ⇒ _.
    -      rewrite elementsZ_nil.
    -      apply Sorted_nil.
    -    } {
    -      rewrite interval_list_invariant_cons elementsZ_cons
    -              rev_app_distr rev_involutive.
    -      move ⇒ [H_gr] [H_c_neq_0] H_inv_s´.
    -      apply SortA_app with (eqA := Logic.eq). {
    -        apply eq_equivalence.
    -      } {
    -        apply Z.lt_strorder.
    -      } {
    -        apply elementsZ_single_sorted.
    -      } {
    -        by apply IH.
    -      } {
    -        intros x1 x2.
    -        move ⇒ /InA_alt [_] [<-] /In_elementsZ_single [_ H_x1_lt].
    -        move ⇒ /InA_alt [_] [<-].
    -        rewrite -In_rev ⇒ H_x2_in.
    - -
    -        apply Z.lt_trans with (m := (y + Z.of_N c)) ⇒ //.
    -        eapply interval_list_elements_greater_alt2_def;
    -          eauto.
    -      }
    -    }
    -  Qed.
    - +    interval_list_invariant s = true →
    +    sort Z.lt (rev (elementsZ s)).
    +

      Lemma elements_sorted : ∀ s,
    -    Ok s →
    -    sort Enc.E.lt (elements s).
    -  Proof.
    -    move ⇒ s [H_inv] H_enc.
    -    rewrite /elements rev_map_alt_def -map_rev.
    -    have : (∀ x : Z, List.In x (rev (elementsZ s)) →
    -           âˆƒ e : Enc.E.t, Enc.encode e = x). {
    -      move ⇒ x.
    -      move : (H_enc x).
    -      rewrite In_rev //.
    -    }
    -    move : (elementsZ_sorted s H_inv) ⇒ {H_enc}.
    -    generalize (rev (elementsZ s)).
    -    induction l as [| x xs IH]. {
    -      rewrite /= ⇒ _ _.
    -      apply Sorted_nil.
    -    } {
    -      move ⇒ H_sort H_enc.
    -      apply Sorted_inv in H_sort as [H_sort H_hd_rel].
    -      simpl.
    -      apply Sorted_cons. {
    -        apply IH ⇒ //.
    -        move ⇒ xx H_xx_in.
    -        apply H_enc.
    -        by apply in_cons.
    -      } {
    -        move : H_hd_rel H_enc.
    -        case xs ⇒ //=.
    -        move ⇒ xs´ H_hd_rel H_enc.
    -        apply HdRel_inv in H_hd_rel.
    -        apply HdRel_cons.
    -        rewrite -Enc.encode_lt.
    -        have [y H_y] : (∃ y, Enc.encode y = x). {
    -          apply H_enc. by left.
    -        }
    -        have [ H_y´] : (∃ , Enc.encode = ). {
    -          apply H_enc. by right; left.
    -        }
    -        move : H_hd_rel.
    -        rewrite -!H_y -!H_y´ !Enc.decode_encode_ok //.
    -      }
    -    }
    -  Qed.
    - +    Ok s →
    +    sort Enc.E.lt (elements s).
    +

    -

    choose specification

    +

    choose specification


      Definition min_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      min_eltZ s = Some x → InZ x s.
    -  Proof.
    -    intros s x.
    -    case s as [| [ c] ]. {
    -      rewrite /min_eltZ //.
    -    } {
    -      rewrite /min_eltZ InZ_cons interval_list_invariant_cons.
    -      move ⇒ [_] [H_c_neq] _ [->].
    -      left.
    -      by apply In_elementsZ_single_hd.
    -    }
    -  Qed.
    - +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      min_eltZ s = Some x → InZ x s.
    +
      Lemma min_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    -    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
    -  Proof.
    -    intros s x y H_ok H_min H_in H_y_lt_x.
    -    eapply (Nin_elements_greater s (Z.pred x)) ⇒ //; last apply H_in. {
    -      move : H_ok H_min.
    -      case s ⇒ //.
    -      move ⇒ [z c] _ [<-].
    -      rewrite interval_list_elements_greater_cons.
    -      apply Z.lt_pred_l.
    -    } {
    -      apply H_ok.
    -    } {
    -      by apply Z.lt_le_pred.
    -    }
    -  Qed.
    - +    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    +    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
    +
      Definition min_eltZ_spec3 :
        âˆ€ (s : t),
    -      min_eltZ s = None → ∀ x, ¬InZ x s.
    -  Proof.
    -    intros s.
    -    case s as [| [ c] ];
    -      rewrite /min_eltZ //.
    -    move ⇒ _ x //.
    -  Qed.
    - +      min_eltZ s = None → ∀ x, ¬InZ x s.
    +
      Definition min_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
    -  Proof.
    -    rewrite /min_elt.
    -    move ⇒ s x H_ok.
    -    case_eq (min_eltZ s) ⇒ //.
    -    move ⇒ z H_min_elt [<-].
    -    apply InZ_In ⇒ //.
    -    apply min_eltZ_spec1 ⇒ //.
    -    apply H_ok.
    -  Qed.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
    +
      Definition min_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
    -  Proof.
    -    rewrite /min_elt.
    -    move ⇒ s x y H_ok.
    -    case_eq (min_eltZ s) ⇒ //.
    -    move ⇒ z H_min_elt [<-].
    -    rewrite In_InZ ⇒ H_inZ.
    -    have H_y_eq : y = Enc.decode (Enc.encode y). {
    -      by rewrite Enc.decode_encode_ok.
    -    }
    -    rewrite H_y_eq -Enc.encode_lt.
    -    apply (min_eltZ_spec2 _ _ _ H_ok); last first. {
    -      by rewrite Enc.decode_encode_ok.
    -    }
    -    suff → : Enc.encode (Enc.decode z) = z by assumption.
    -    apply encode_decode_eq with (s := s) ⇒ //.
    -    apply min_eltZ_spec1 ⇒ //.
    -    apply H_ok.
    -  Qed.
    - +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
    +
      Definition min_elt_spec3 :
    -    âˆ€ s : t, min_elt s = None → Empty s.
    -  Proof.
    -    rewrite /min_elt /min_eltZ /Empty /In.
    -    case s as [| [ c] ] ⇒ //.
    -    move ⇒ _ e.
    -    rewrite elements_nil InA_nil //.
    -  Qed.
    - +    âˆ€ s : t, min_elt s = None → Empty s.
    +
      Definition choose_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
    -  Proof.
    -    rewrite /choose.
    -    apply min_elt_spec1.
    -  Qed.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
    +
      Definition choose_spec2 :
    -    âˆ€ s : t, choose s = None → Empty s.
    -  Proof.
    -    rewrite /choose.
    -    apply min_elt_spec3.
    -  Qed.
    - +    âˆ€ s : t, choose s = None → Empty s.
    +
    -  Lemma choose_spec3: ∀ s x , Ok s → Ok →
    -    choose s = Some x → choose = Some → Equal s → x = .
    -  Proof.
    -    intros s x Hs Hs´ Hx Hx´.
    -    rewrite -equal_spec equal_alt_def ⇒ H_s_eq.
    -    move : Hx Hx´.
    -    rewrite H_s_eq ⇒ → [] //.
    -  Qed.
    +  Lemma choose_spec3: ∀ s s' x x', Ok s → Ok s' →
    +    choose s = Some x → choose s' = Some x' → Equal s s' → x = x'.


      Definition max_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      max_eltZ s = Some x → InZ x s.
    -  Proof.
    -    intros s x.
    -    induction s as [| [ c] IH]. {
    -      rewrite /max_eltZ //.
    -    } {
    -      rewrite InZ_cons interval_list_invariant_cons /=.
    -      move ⇒ [_] [H_c_neq].
    -      case as [| [ ] s´´]. {
    -        move ⇒ _ [<-].
    -        left. {
    -          rewrite In_elementsZ_single.
    -          split. {
    -            rewrite -Z.lt_le_pred.
    -            by apply Z_lt_add_r.
    -          } {
    -            apply Z.lt_pred_l.
    -          }
    -        }
    -      } {
    -        move ⇒ H_inv H_max_eq.
    -        right.
    -        by apply IH.
    -      }
    -    }
    -  Qed.
    - +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      max_eltZ s = Some x → InZ x s.
    +
      Lemma max_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
    -  Proof.
    -    induction s as [| [y c] IH]. {
    -      done.
    -    } {
    -      move ⇒ x .
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ [H_gr] [H_c_neq_0] H_inv_s´.
    -      have H_gr´ : (∀ xx : Z, InZ xx () → y + Z.of_N c < xx). {
    -        apply interval_list_elements_greater_alt2_def ⇒ //.
    -      }
    -
    -      case as [| [ ] s´´]. {
    -        move ⇒ [<-].
    -        rewrite InZ_cons InZ_nil In_elementsZ_single.
    -        omega.
    -      } {
    -        move ⇒ H_max_eq.
    -        rewrite InZ_cons.
    -        move ⇒ []; last by apply IH.
    -        rewrite In_elementsZ_single.
    -        move ⇒ [_] H_x´_lt H_lt_x´.
    - -
    -        have H_x_in : InZ x ((, )::s´´). {
    -          by apply max_eltZ_spec1.
    -        }
    -        
    -        move : (H_gr´ _ H_x_in).
    -        apply Z.nlt_ge, Z.lt_le_incl.
    -        by apply Z.lt_trans with (m := ).
    -      }
    -    }
    -  Qed.
    - +    âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
    +
      Lemma max_eltZ_eq_None :
        âˆ€ (s : t),
    -      max_eltZ s = None → s = nil.
    -  Proof.
    -    induction s as [| [ c] IH] ⇒ //.
    -    move : IH.
    -    case as [| [ ] s´´] ⇒ //=.
    -    move ⇒ H H_pre.
    -    move : (H H_pre) ⇒ //.
    -  Qed.
    +      max_eltZ s = None → s = nil.

      Definition max_eltZ_spec3 :
        âˆ€ (s : t),
    -      max_eltZ s = None → ∀ x, ¬InZ x s.
    -  Proof.
    -    move ⇒ s /max_eltZ_eq_None → x /InZ_nil //.
    -  Qed.
    +      max_eltZ s = None → ∀ x, ¬InZ x s.

      Definition max_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
    -  Proof.
    -    rewrite /max_elt.
    -    move ⇒ s x H_ok.
    -    case_eq (max_eltZ s) ⇒ //.
    -    move ⇒ z H_max_elt [<-].
    -    apply InZ_In ⇒ //.
    -    apply max_eltZ_spec1 ⇒ //.
    -    apply H_ok.
    -  Qed.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
    +
      Definition max_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
    -  Proof.
    -    rewrite /max_elt.
    -    move ⇒ s x y H_ok.
    -    move : (H_ok) ⇒ [H_inv] _.
    -    case_eq (max_eltZ s) ⇒ //.
    -    move ⇒ z H_max_elt [<-].
    -    rewrite In_InZ ⇒ H_inZ.
    -    rewrite -Enc.encode_lt.
    -    apply (max_eltZ_spec2 _ _ _ H_inv) ⇒ //.
    -    suff → : Enc.encode (Enc.decode z) = z ⇒ //.
    -    apply encode_decode_eq with (s := s) ⇒ //.
    -    apply max_eltZ_spec1 ⇒ //.
    -  Qed.
    - +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
    +
      Definition max_elt_spec3 :
    -    âˆ€ s : t, max_elt s = None → Empty s.
    -  Proof.
    -    intro s.
    -    rewrite /max_elt /Empty.
    -    case_eq (max_eltZ s) ⇒ //.
    -    move ⇒ /max_eltZ_eq_None → _ x.
    -    rewrite /In elements_nil InA_nil //.
    -  Qed.
    +    âˆ€ s : t, max_elt s = None → Empty s.

    -

    fold specification

    +

    fold specification


      Lemma fold_spec :
    -   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    -   fold f s i = fold_left (flip f) (elements s) i.
    -  Proof.
    -    intros s A i f.
    -    rewrite /fold fold_elementsZ_alt_def /elements
    -            rev_map_alt_def -map_rev.
    -    move : i.
    -    generalize (rev (elementsZ s)).
    -    induction l as [| x xs IH]. {
    -      done.
    -    } {
    -      move ⇒ i.
    -      rewrite /= IH //.
    -    }
    -  Qed.
    - +   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    +   fold f s i = fold_left (flip f) (elements s) i.
    +

    -

    cardinal specification

    +

    cardinal specification


    -  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    -    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
    -  Proof.
    -    induction s as [| [x cx] xs IH]. {
    -      intros c.
    -      rewrite elements_nil /= N.add_0_r //.
    -    } {
    -      intros c.
    -      rewrite /= IH.
    -      rewrite /elements !rev_map_alt_def !rev_length !map_length.
    -      rewrite elementsZ_cons app_length Nat2N.inj_add rev_length.
    -      rewrite length_elementsZ_single N2Nat.id.
    -      ring.
    -    }
    -  Qed.
    - +  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    +    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
    +
      Lemma cardinal_spec :
       âˆ€ (s : t),
    -   cardinal s = length (elements s).
    -  Proof.
    -    intros s.
    -    rewrite /cardinal cardinalN_spec N.add_0_l Nat2N.id //.
    -  Qed.
    +   cardinal s = length (elements s).

    -

    for_all specification

    +

    for_all specification


      Lemma for_all_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Proof.
    -    intros s f Hs H.
    -    rewrite /for_all /For_all /In fold_elementsZ_alt_def
    -            /elements rev_map_alt_def -map_rev.
    -    generalize (rev (elementsZ s)).
    -    induction l as [| x xs IH]. {
    -      split ⇒ // _ x /= /InA_nil //.
    -    } {
    -      rewrite /=.
    -      case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
    -        rewrite IH.
    -        split. {
    -          move ⇒ HH /InA_cons []. {
    -            by move ⇒ →.
    -          } {
    -            apply HH.
    -          }
    -        } {
    -          move ⇒ HH H_in.
    -          apply HH.
    -          apply InA_cons.
    -          by right.
    -        }
    -      } {
    -        split; move ⇒ HH. {
    -          contradict HH.
    -          case xs ⇒ //.
    -        } {
    -          exfalso.
    -          have H_in: (InA Enc.E.eq (Enc.decode x) (Enc.decode x :: map Enc.decode xs)). {
    -            apply InA_cons.
    -            left.
    -            apply Enc.E.eq_equiv.
    -          }
    -          move : (HH _ H_in).
    -          rewrite H_f_eq ⇒ //.
    -        }
    -      }
    -    }
    -  Qed.
    - +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +
    -

    exists specification

    +

    exists specification


      Lemma exists_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Proof.
    -    intros s f Hs H.
    -    rewrite /exists_ /Exists /In fold_elementsZ_alt_def
    -            /elements rev_map_alt_def -map_rev.
    -    generalize (rev (elementsZ s)).
    -    induction l as [| x xs IH]. {
    -      split ⇒ //.
    -      move ⇒ [x] /= [] /InA_nil //.
    -    } {
    -      rewrite /=.
    -      case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
    -        split ⇒ _. {
    -          âˆƒ (Enc.decode x).
    -          split ⇒ //.
    -          apply InA_cons.
    -          left.
    -          apply Enc.E.eq_equiv.
    -        } {
    -          case xs ⇒ //.
    -        }
    -      } {
    -        rewrite IH.
    -        split. {
    -          move ⇒ [x0] [H_in] H_f_x0.
    -          âˆƒ x0.
    -          split ⇒ //.
    -          apply InA_cons.
    -          by right.
    -        } {
    -          move ⇒ [x0] [] /InA_cons H_in H_f_x0.
    -          âˆƒ x0.
    -          split ⇒ //.
    -          move : H_in ⇒ [] // H_in.
    -          contradict H_f_x0.
    -          rewrite H_in H_f_eq //.
    -        }
    -      }
    -    }
    -  Qed.
    - +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +
    -

    filter specification

    +

    filter specification


    -  Definition partitionZ_aux_invariant (x : Z) acc c :=
    -    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
    +  Definition partitionZ_aux_invariant (x : Z) acc c :=
    +    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
        match c with
    -      None ⇒ (∀ , InZ acc → Z.succ < x)
    -    | Some (y, ) ⇒ (x = y + Z.of_N )
    +      None ⇒ (∀ y', InZ y' acc → Z.succ y' < x)
    +    | Some (y, c') ⇒ (x = y + Z.of_N c')
        end.

      Lemma partitionZ_aux_invariant_insert : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) acc
    -      (Some (partitionZ_fold_insert c x)).
    -  Proof.
    -    intros x acc c.
    -    rewrite /partitionZ_fold_insert /partitionZ_aux_invariant
    -            /partitionZ_fold_skip.
    -    case c; last first. {
    -      move ⇒ [H_inv] H_in.
    -      rewrite /= interval_list_invariant_app_iff Z.add_1_r.
    -      split; last done.
    -      split; first done.
    -      split; first done.
    -      move ⇒ x1 x2.
    -      rewrite InZ_rev InZ_cons InZ_nil In_elementsZ_single1.
    -      move ⇒ H_x1_in [] // <-.
    -      by apply H_in.
    -    } {
    -      move ⇒ [y ].
    -      rewrite /= !interval_list_invariant_app_iff
    -        N2Z.inj_succ Z.add_succ_r .
    -      rewrite !interval_list_invariant_cons !interval_list_invariant_nil.
    -      move ⇒ [] [H_inv_acc] [] [] _ [H_c_neq_0] _
    -        H_in_c →.
    -      split; last done.
    -      split; first done.
    -      split. {
    -        split; first done.
    -        split; last done.
    -        apply N.neq_succ_0.
    -      } {
    -        move ⇒ x1 x2.
    -        rewrite InZ_cons InZ_nil In_elementsZ_single.
    -        move ⇒ H_x1_in [] // [H_y_le] H_x2_lt.
    -        apply Z.lt_le_trans with (m := y) ⇒ //.
    -        apply H_in_c ⇒ //.
    -        rewrite InZ_cons In_elementsZ_single.
    -        left.
    -        split. {
    -          apply Z.le_refl.
    -        } {
    -          by apply Z_lt_add_r.
    -        }
    -      }
    -    }
    -  Qed.
    - +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) acc
    +      (Some (partitionZ_fold_insert c x)).
    +
      Lemma partitionZ_aux_invariant_skip : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
    -  Proof.
    -    intros x acc c.
    -    rewrite /partitionZ_fold_skip /partitionZ_aux_invariant
    -            /partitionZ_fold_skip.
    -    case c; last first. {
    -      move ⇒ [H_inv] H_in.
    -      split; first done.
    -      move ⇒ H_y´_in.
    -      apply Z.lt_trans with (m := x). {
    -        by apply H_in.
    -      } {
    -        apply Z.lt_succ_diag_r.
    -      }
    -    } {
    -      move ⇒ [y ] [H_inv] →.
    -      split ⇒ //.
    -      move ⇒ .
    -      rewrite InZ_cons In_elementsZ_single.
    -      move ⇒ []. {
    -        move ⇒ [_].
    -        rewrite -Z.succ_lt_mono //.
    -      } {
    -        move : H_inv.
    -        rewrite /= !interval_list_invariant_app_iff interval_list_invariant_cons.
    -        move ⇒ [_] [] [_] [H_c´_neq] _ H_pre H_y´_in.
    -        apply Z.lt_trans with (m := y). {
    -          apply H_pre. {
    -            by rewrite InZ_rev.
    -          } {
    -            rewrite InZ_cons.
    -            left.
    -            by apply In_elementsZ_single_hd.
    -          }
    -        }
    -        apply Z.lt_succ_r, Z_le_add_r.
    -      }
    -    }
    -  Qed.
    - -
    -  Definition partitionZ_fold_current (c : option (Z × N)) :=
    +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
    + +
    +  Definition partitionZ_fold_current (c : option (Z × N)) :=
        match c with
    -       None ⇒ nil
    -     | Some yc ⇒ yc::nil
    +       None ⇒ nil
    +     | Some yc ⇒ yc::nil
        end.

      Lemma InZ_partitionZ_fold_current_Some : ∀ yc y,
    -     InZ y (partitionZ_fold_current (Some yc)) ↔
    -     InZ y (yc :: nil).
    -  Proof. done. Qed.
    - +     InZ y (partitionZ_fold_current (Some yc)) ↔
    +     InZ y (yc :: nil).
    +
      Lemma InZ_partitionZ_fold_insert : ∀ c x y l,
       match c with
    -   | Some (y, ) ⇒ x = y + Z.of_N
    -   | None ⇒ True
    -   end → (
    -   InZ y (partitionZ_fold_insert c x :: l) ↔
    -    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    -       InZ y l)).
    -  Proof.
    -    intros c x y l.
    -    rewrite /partitionZ_fold_insert /partitionZ_fold_current
    -            /partitionZ_fold_skip.
    -    case c. {
    -      move ⇒ [ ] →.
    -      rewrite !InZ_cons elementsZ_single_succ in_app_iff
    -              InZ_nil /=.
    -      tauto.
    -    } {
    -      rewrite InZ_cons InZ_nil In_elementsZ_single1.
    -      tauto.
    -    }
    -  Qed.
    - +   | Some (y, c') ⇒ x = y + Z.of_N c'
    +   | None ⇒ True
    +   end → (
    +   InZ y (partitionZ_fold_insert c x :: l) ↔
    +    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    +       InZ y l)).
    +
      Lemma InZ_partitionZ_fold_skip : ∀ c acc y,
    -    InZ y (partitionZ_fold_skip acc c) ↔
    -    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
    -  Proof.
    -    intros c acc y.
    -    rewrite /partitionZ_fold_skip /partitionZ_fold_current
    -            /partitionZ_fold_skip.
    -    case c. {
    -      move ⇒ [ ].
    -      rewrite !InZ_cons InZ_nil /=.
    -      tauto.
    -    } {
    -      rewrite InZ_nil.
    -      tauto.
    -    }
    -  Qed.
    - +    InZ y (partitionZ_fold_skip acc c) ↔
    +    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
    +
      Lemma filterZ_single_aux_props :
        âˆ€ f c x acc cur,
    -      partitionZ_aux_invariant x acc cur →
    -      match (filterZ_single_aux f (acc, cur) x c) with
    -        (acc´, ) ⇒
    -        let r := partitionZ_fold_skip acc´ in
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ , InZ r ↔ (InZ (partitionZ_fold_skip acc cur) ∨
    -                                    (f = true ∧ List.In (elementsZ_single x c))))
    +      partitionZ_aux_invariant x acc cur →
    +      match (filterZ_single_aux f (acc, cur) x c) with
    +        (acc', c') ⇒
    +        let r := partitionZ_fold_skip acc' c' in
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' (partitionZ_fold_skip acc cur) ∨
    +                                    (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
    -  Proof.
    -    intro f.
    -    induction c as [| IH] using N.peano_ind. {
    -      intros x acc cur.
    -      rewrite /partitionZ_aux_invariant.
    -      move ⇒ [H_inv] _.
    -      rewrite /filterZ_single_aux fold_elementsZ_single_zero /=.
    -      tauto.
    -    }
    -    intros x acc cur H_inv.
    -    have → : filterZ_single_aux f (acc, cur) x (N.succ ) =
    -               filterZ_single_aux f (filterZ_fold_fun f (acc, cur) x) (Z.succ x) . {
    -        by rewrite /filterZ_single_aux fold_elementsZ_single_succ.
    -    }
    -    case_eq (filterZ_fold_fun f (acc, cur) x).
    -    move ⇒ acc´ cur´ H_fold_eq.
    - -
    -    case_eq (filterZ_single_aux f (acc´, cur´) (Z.succ x) ).
    -    move ⇒ acc´´ cur´´ H_succ_eq.
    - -
    -    have H_inv´ : partitionZ_aux_invariant (Z.succ x) acc´ cur´. {
    -      move : H_fold_eq H_inv.
    -      rewrite /filterZ_fold_fun.
    -      case (f x); move ⇒ [<-] <-. {
    -        apply partitionZ_aux_invariant_insert.
    -      } {
    -        apply partitionZ_aux_invariant_skip.
    -      }
    -    }
    -   
    -    move : (IH (Z.succ x) acc´ cur´ H_inv´) ⇒ {IH}.
    -    rewrite H_succ_eq /=.
    -    set r := partitionZ_fold_skip acc´´ cur´´.
    -    move ⇒ [H_inv_r] H_in_r.
    -    split; first assumption.
    - -
    -    move ⇒ .
    -    move : H_fold_eq.
    -    rewrite H_in_r /filterZ_fold_fun.
    -    case_eq (f x) ⇒ H_fx [<-] <-. {
    -      rewrite InZ_partitionZ_fold_skip InZ_partitionZ_fold_current_Some InZ_partitionZ_fold_skip elementsZ_single_succ_front.
    -      rewrite InZ_partitionZ_fold_insert; last first. {
    -        move : H_inv.
    -        rewrite /partitionZ_aux_invariant ⇒ [[_]].
    -        case cur ⇒ //.
    -      }
    -      rewrite InZ_nil /=.
    -      split; last by tauto.
    -      move ⇒ []; last by tauto.
    -      move ⇒ []; last by tauto.
    -      move ⇒ []. {
    -        move ⇒ <-.
    -        tauto.
    -      } {
    -        tauto.
    -      }
    -    } {
    -      rewrite InZ_partitionZ_fold_skip /partitionZ_fold_current InZ_partitionZ_fold_skip elementsZ_single_succ_front !InZ_nil /=.
    -      split; first by tauto.
    -      move ⇒ []; first by tauto.
    -      move ⇒ [] H_fy´ []. {
    -        move ⇒ H_x_eq; subst .
    -        contradict H_fy´.
    -        by rewrite H_fx.
    -      } {
    -        tauto.
    -      }
    -    }
    -  Qed.
    - +
      Lemma filterZ_single_props :
        âˆ€ f c x acc,
    -      interval_list_invariant (rev acc) = true →
    -      (∀ : Z, InZ acc → Z.succ < x) →
    +      interval_list_invariant (rev acc) = true →
    +      (∀ y' : Z, InZ y' acc → Z.succ y' < x) →
          match (filterZ_single f acc x c) with
            r ⇒
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ , InZ r ↔ (InZ acc ∨
    -                                 (f = true ∧ List.In (elementsZ_single x c))))
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
    -  Proof.
    -    intros f c x acc.
    -    move ⇒ H_inv H_acc.
    -    rewrite /filterZ_single.
    - -
    -    have H_inv´ : partitionZ_aux_invariant x acc None. {
    -      by rewrite /partitionZ_aux_invariant /=.
    -    }
    -    move : (filterZ_single_aux_props f c x acc None H_inv´).
    -    case_eq (filterZ_single_aux f (acc, None) x c).
    -    move ⇒ acc´ cur´ /= H_res.
    -    tauto.
    -  Qed.


      Lemma filterZ_aux_props :
        âˆ€ f s acc,
    -      interval_list_invariant s = true →
    -      interval_list_invariant (rev acc) = true →
    -      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      interval_list_invariant s = true →
    +      interval_list_invariant (rev acc) = true →
    +      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
          match (filterZ_aux acc f s) with
            r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ , InZ r ↔ (InZ acc ∨
    -                                 (f = true ∧ InZ s)))
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ InZ y' s)))
          end.
    -  Proof.
    -    intro f.
    -    induction s as [| [y c] IH]. {
    -      intros acc.
    -      move ⇒ _ H_inv _.
    -      rewrite /filterZ_aux.
    -      split; first assumption.
    -      move ⇒ ; rewrite InZ_rev InZ_nil; tauto.
    -    } {
    -      intros acc.
    -      rewrite interval_list_invariant_cons.
    -      move ⇒ [H_gr] [H_c_neq_0] H_inv_s´ H_inv H_in_acc /=.
    -      move : H_gr.
    -      rewrite interval_list_elements_greater_alt2_def ⇒ // H_gr.
    - -
    -      have H_pre : (∀ : Z, InZ acc → Z.succ < y). {
    -        move ⇒ x1 H_x1_in.
    -        apply H_in_acc ⇒ //.
    -        rewrite InZ_cons.
    -        by left; apply In_elementsZ_single_hd.
    -      }
    -      
    -      move : (filterZ_single_props f c y acc H_inv H_pre) ⇒ {H_pre}.
    -      set acc´ := filterZ_single f acc y c.
    -      move ⇒ [H_inv´] H_in_acc´.
    - -
    -      have H_pre : (∀ x1 x2 : Z,
    -                      InZ x1 acc´ → InZ x2 → Z.succ x1 < x2). {
    -        move ⇒ x1 x2.
    -        rewrite H_in_acc´ In_elementsZ_single.
    -        move ⇒ []. {
    -          move ⇒ H_x1_in H_x2_in.
    -          apply H_in_acc ⇒ //.
    -          rewrite InZ_cons.
    -          by right.
    -        } {
    -          move ⇒ [_] [_] H_x1_lt H_x2_in.
    -          apply Z.le_lt_trans with (m := y + Z.of_N c).
    -            - by apply Z.le_succ_l.
    -            - by apply H_gr.
    -        }
    -      }
    -      move : (IH acc´ H_inv_s´ H_inv´ H_pre) ⇒ {H_pre}.
    - -
    -      move ⇒ [H_inv_r] H_in_r.
    -      split; first assumption.
    -      move ⇒ .
    -      rewrite H_in_r H_in_acc´ InZ_cons.
    -      tauto.
    -    }
    -  Qed.
    - +
      Lemma filterZ_props :
        âˆ€ f s,
    -      interval_list_invariant s = true →
    +      interval_list_invariant s = true →
          match (filterZ f s) with r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ , InZ r ↔ (f = true ∧ InZ s))
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (f y' = true ∧ InZ y' s))
          end.
    -  Proof.
    -    intros f s H_inv_s.
    -    rewrite /filterZ.
    - -
    -    have H_pre_1 : interval_list_invariant (rev nil) = true by done.
    -    have H_pre_2 : (∀ x1 x2 : Z, InZ x1 nil → InZ x2 s → Z.succ x1 < x2) by done.
    - -
    -    move : (filterZ_aux_props f s nil H_inv_s H_pre_1 H_pre_2) ⇒ {H_pre_1} {H_pre_2}.
    -    move ⇒ [H_inv´] H_in_r.
    -    split; first assumption.
    -    move ⇒ .
    -    rewrite H_in_r InZ_nil.
    -    tauto.
    -  Qed.

      Global Instance filter_ok s f : ∀ `(Ok s), Ok (filter f s).
    -  Proof.
    -    move ⇒ [H_inv H_enc].
    -    rewrite /filter.
    -    set := (fun z : Z ⇒ f (Enc.decode z)).
    -    move : (filterZ_props s H_inv).
    -    move ⇒ [H_inv´] H_in_r.
    -    rewrite /Ok /IsOk /is_encoded_elems_list.
    -    split; first assumption.
    -    move ⇒ x /H_in_r [_] H_x_in.
    -    by apply H_enc.
    -  Qed.

      Lemma filter_spec :
    -   âˆ€ (s : t) (x : elt) (f : elt → bool),
    -   Ok s →
    -   (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Proof.
    -    move ⇒ s x f H_ok.
    -    suff H_suff :
    -      (∀ x, (InZ x (filter f s)) ↔
    -                 InZ x s ∧ f (Enc.decode x) = true). {
    -      rewrite !In_alt_def /elements !rev_map_alt_def
    -              -!in_rev !in_map_iff.
    -      setoid_rewrite H_suff.
    -      rewrite /InZ.
    -      split. {
    -        move ⇒ [y] [<-] [?] ?.
    -        split ⇒ //.
    -        by ∃ y.
    -      } {
    -        move ⇒ [] [y] [<-] ? ?.
    -        by ∃ y.
    -      }
    -    }
    -    rewrite /filter.
    -    set := (fun z : Z ⇒ f (Enc.decode z)).
    -    move : (H_ok) ⇒ [H_inv _].
    -    move : (filterZ_props s H_inv).
    -    move ⇒ [H_inv´] H_in_r.
    -    move ⇒ y; rewrite H_in_r; tauto.
    -  Qed.
    - +   âˆ€ (s : t) (x : elt) (f : elt → bool),
    +   Ok s →
    +   (In x (filter f s) ↔ In x s ∧ f x = true).
    +
    -

    partition specification

    +

    partition specification


      Lemma partitionZ_single_aux_alt_def : ∀ f c y acc_t c_t acc_f c_f,
    -    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    -    (filterZ_single_aux f (acc_t, c_t) y c,
    -     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).
    -  Proof.
    -    intros f.
    -    rewrite /partitionZ_single_aux /filterZ_single_aux.
    -    induction c as [| IH] using N.peano_ind. {
    -      intros y acc_t c_t acc_f c_f.
    -      rewrite !fold_elementsZ_single_zero //. } {
    -      intros y acc_t c_t acc_f c_f.
    -      rewrite !fold_elementsZ_single_succ.
    -      case_eq (partitionZ_fold_fun f (acc_t, c_t, (acc_f, c_f)) y) ⇒ [] [acc_t´ c_t´] [acc_f´ c_f´] H_fold_eq.
    -      rewrite IH ⇒ {IH}.
    -      suff : (filterZ_fold_fun f (acc_t, c_t) y = (acc_t´, c_t´)) ∧
    -             (filterZ_fold_fun (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y = (acc_f´, c_f´)). {
    -        move ⇒ [->] → //.
    -      }
    -      move : H_fold_eq.
    -      rewrite /partitionZ_fold_fun /filterZ_fold_fun.
    -      case (f y); move ⇒ [<-] <- <- <- //.
    -    }
    -  Qed.
    +    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    +    (filterZ_single_aux f (acc_t, c_t) y c,
    +     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).

      Lemma partitionZ_aux_alt_def : ∀ f s acc_t acc_f,
    -   partitionZ_aux acc_t acc_f f s =
    -   (filterZ_aux acc_t f s,
    -    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
    -  Proof.
    -    intros f.
    -    induction s as [| [y c] IH]. {
    -      done.
    -    } {
    -      intros acc_t acc_f.
    -      rewrite /= /partitionZ_single /filterZ_single
    -              partitionZ_single_aux_alt_def.
    -      case (filterZ_single_aux f (acc_t, None) y c) ⇒ acc_t´ c_t´.
    -      case (filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, None) y c) ⇒ acc_f´ c_f´.
    -      rewrite IH //.
    -    }
    -  Qed.
    - +   partitionZ_aux acc_t acc_f f s =
    +   (filterZ_aux acc_t f s,
    +    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
    +
      Lemma partitionZ_alt_def : ∀ f s,
    -    partitionZ f s = (filterZ f s,
    -                      filterZ (fun x ⇒ negb (f x)) s).
    -  Proof.
    -    intros f s.
    -    rewrite /partitionZ /filterZ
    -            partitionZ_aux_alt_def //.
    -  Qed.
    +    partitionZ f s = (filterZ f s,
    +                      filterZ (fun x ⇒ negb (f x)) s).

      Lemma partition_alt_def : ∀ f s,
    -    partition f s = (filter f s,
    -                     filter (fun x ⇒ negb (f x)) s).
    -  Proof.
    -    intros f s.
    -    rewrite /partition /filter partitionZ_alt_def.
    -    done.
    -  Qed.
    +    partition f s = (filter f s,
    +                     filter (fun x ⇒ negb (f x)) s).

    -  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).
    -  Proof.
    -    move ⇒ H_ok.
    -    rewrite partition_alt_def /fst.
    -    by apply filter_ok.
    -  Qed.
    +  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).

    -  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).
    -  Proof.
    -    move ⇒ H_ok.
    -    rewrite partition_alt_def /snd.
    -    by apply filter_ok.
    -  Qed.
    +  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).

      Lemma partition_spec1 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Equal (fst (partition f s)) (filter f s).
    -  Proof.
    -    intros s f.
    -    rewrite partition_alt_def /fst /Equal //.
    -  Qed.
    +   âˆ€ (s : t) (f : elt → bool),
    +   Equal (fst (partition f s)) (filter f s).

      Lemma partition_spec2 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Ok s →
    -   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    -  Proof.
    -    intros s f.
    -    rewrite partition_alt_def /snd /Equal //.
    -  Qed.
    +   âˆ€ (s : t) (f : elt → bool),
    +   Ok s →
    +   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).

    End Raw.
    @@ -6335,7 +2282,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Main Module

    +

    Main Module

    @@ -6346,217 +2293,123 @@

    Library MSetsExtra.MSetIntervals


    -Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
    +Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
      Module E := Enc.E.
      Module Raw := Raw Enc.

    Local Unset Elimination Schemes.
    Local Unset Case Analysis Schemes.

     Definition elt := Raw.elt.
     Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}.
     Definition t := t_.
    Arguments Mkt this {is_ok}.
    Hint Resolve is_ok : typeclass_instances.
    Hint Resolve is_ok : typeclass_instances.

     Definition In (x : elt)(s : t) := Raw.In x s.(this).
    Definition Equal (s : t) := ∀ a : elt, In a s ↔ In a .
    Definition Subset (s : t) := ∀ a : elt, In a s → In a .
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.
    Definition Equal (s s' : t) := ∀ a : elt, In a s ↔ In a s'.
    Definition Subset (s s' : t) := ∀ a : elt, In a s → In a s'.
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.

     Definition mem (x : elt)(s : t) := Raw.mem x s.(this).
     Definition add (x : elt)(s : t) : t := Mkt (Raw.add x s.(this)).
     Definition remove (x : elt)(s : t) : t := Mkt (Raw.remove x s.(this)).
     Definition singleton (x : elt) : t := Mkt (Raw.singleton x).
    Definition union (s : t) : t := Mkt (Raw.union s ).
    Definition inter (s : t) : t := Mkt (Raw.inter s ).
    Definition diff (s : t) : t := Mkt (Raw.diff s ).
    Definition equal (s : t) := Raw.equal s .
    Definition subset (s : t) := Raw.subset s .(this).
    Definition union (s s' : t) : t := Mkt (Raw.union s s').
    Definition inter (s s' : t) : t := Mkt (Raw.inter s s').
    Definition diff (s s' : t) : t := Mkt (Raw.diff s s').
    Definition equal (s s' : t) := Raw.equal s s'.
    Definition subset (s s' : t) := Raw.subset s s'.(this).
     Definition empty : t := Mkt Raw.empty.
     Definition is_empty (s : t) := Raw.is_empty s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
     Definition cardinal (s : t) := Raw.cardinal s.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    -   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    - -
    Instance In_compat : Proper (E.eq==>eq==>iff) In.
    Proof.
    -   repeat red.
    -   move ⇒ x y H_eq_xy →.
    -   rewrite /In /Raw.In.
    -   setoid_rewrite H_eq_xy.
    -   done.
    Qed.
    - -
    Definition eq : t → t → Prop := Equal.
    - -
    Instance eq_equiv : Equivalence eq.
    Proof. firstorder. Qed.
    - -
    Definition eq_dec : ∀ (s :t), { eq s }+{ ¬eq s }.
    Proof.
    -  intros (s,Hs) (,Hs´).
    -  change ({Raw.Equal s }+{¬Raw.Equal s }).
    -  destruct (Raw.equal s ) eqn:H; [left|right];
    -   rewrite <- Raw.equal_spec; congruence.
    Defined.
    - -
    Definition lt : t → t → Prop := Raw.lt.
    - -
    Instance lt_strorder : StrictOrder lt.
    Proof.
    -   unfold lt.
    -   constructor. {
    -     move : Raw.lt_Irreflexive.
    -     rewrite /Irreflexive /complement /Reflexive.
    -     move ⇒ H x.
    -     apply H.
    -   } {
    -     move : Raw.lt_Transitive.
    -     rewrite /Transitive.
    -     move ⇒ H x y z.
    -     apply H.
    -   }
    Qed.
    - -
    Instance lt_compat : Proper (eq==>eq==>iff) lt.
    Proof.
    -   repeat red.
    -   move ⇒ [x1 H_x1_ok] [y1 H_y1_ok] H_eq.
    -   move ⇒ [x2 H_x2_ok] [y2 H_y2_ok].
    -   move : H_eq.
    -   rewrite /eq /lt /Equal /In /=.
    -   replace (∀ a : elt, Raw.In a x1 ↔ Raw.In a y1) with
    -     (Raw.Equal x1 y1) by done.
    -   replace (∀ a : elt, Raw.In a x2 ↔ Raw.In a y2) with
    -     (Raw.Equal x2 y2) by done.
    -   rewrite -!Raw.equal_spec !Raw.equal_alt_def.
    -   move ⇒ → → //.
    Qed.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    +   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    + +
    Instance In_compat : Proper (E.eq==>eq==>iff) In.
    + +
    Definition eq : t → t → Prop := Equal.
    + +
    Instance eq_equiv : Equivalence eq.
    + +
    Definition eq_dec : ∀ (s s':t), { eq s s' }+{ ¬eq s s' }.
    + +
    Definition lt : t → t → Prop := Raw.lt.
    + +
    Instance lt_strorder : StrictOrder lt.
    + +
    Instance lt_compat : Proper (eq==>eq==>iff) lt.

     Section Spec.
    -  Variable s : t.
    +  Variable s s' : t.
      Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    - -
    -  Lemma mem_spec : mem x s = true ↔ In x s.
    -  Proof. exact (Raw.mem_spec _ _ _). Qed.
    -  Lemma equal_spec : equal s = true ↔ Equal s .
    -  Proof. rewrite Raw.equal_spec //. Qed.
    -  Lemma subset_spec : subset s = true ↔ Subset s .
    -  Proof. exact (Raw.subset_spec _ _ _ _). Qed.
    -  Lemma empty_spec : Empty empty.
    -  Proof. exact Raw.empty_spec. Qed.
    -  Lemma is_empty_spec : is_empty s = true ↔ Empty s.
    -  Proof. rewrite Raw.is_empty_spec //. Qed.
    -  Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    -  Proof. exact (Raw.add_spec _ _ _ _). Qed.
    -  Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -  Proof. exact (Raw.remove_spec _ _ _ _). Qed.
    -  Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
    -  Proof. exact (Raw.singleton_spec _ _). Qed.
    -  Lemma union_spec : In x (union s ) ↔ In x s ∨ In x .
    -  Proof. exact (Raw.union_spec _ _ _ _ _). Qed.
    -  Lemma inter_spec : In x (inter s ) ↔ In x s ∧ In x .
    -  Proof. exact (Raw.inter_spec _ _ _ _ _). Qed.
    -  Lemma diff_spec : In x (diff s ) ↔ In x s ∧ ¬In x .
    -  Proof. exact (Raw.diff_spec _ _ _ _ _). Qed.
    -  Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
    -  Proof. exact (@Raw.fold_spec _). Qed.
    -  Lemma cardinal_spec : cardinal s = length (elements s).
    -  Proof. exact (@Raw.cardinal_spec s). Qed.
    -  Lemma filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Proof. move ⇒ _; exact (@Raw.filter_spec _ _ _ _). Qed.
    -  Lemma for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Proof. exact (@Raw.for_all_spec _ _ _). Qed.
    -  Lemma exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Proof. exact (@Raw.exists_spec _ _ _). Qed.
    -  Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
    -  Proof. move ⇒ _; exact (@Raw.partition_spec1 _ _). Qed.
    -  Lemma partition_spec2 : compatb f →
    -      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    -  Proof. move ⇒ _; exact (@Raw.partition_spec2 _ _ _). Qed.
    -  Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    -  Proof. rewrite /In /Raw.In /elements //. Qed.
    -  Lemma elements_spec2w : NoDupA E.eq (elements s).
    -  Proof. exact (Raw.elements_spec2w _ _). Qed.
    -  Lemma elements_spec2 : sort E.lt (elements s).
    -  Proof. exact (Raw.elements_sorted _ _). Qed.
    -  Lemma choose_spec1 : choose s = Some x → In x s.
    -  Proof. exact (Raw.choose_spec1 _ _ _). Qed.
    -  Lemma choose_spec2 : choose s = None → Empty s.
    -  Proof. exact (Raw.choose_spec2 _). Qed.
    -  Lemma choose_spec3 : choose s = Some x → choose = Some y →
    -    Equal s → E.eq x y.
    -  Proof.
    -    intros H1 H2 H3.
    -    suff → : x = y. {
    -      apply E.eq_equiv.
    -    }
    -    move : H1 H2 H3.
    -    exact (Raw.choose_spec3 _ _ _ _ _ _).
    -  Qed.
    - -
    -  Lemma min_elt_spec1 : choose s = Some x → In x s.
    -  Proof. exact (Raw.min_elt_spec1 _ _ _). Qed.
    -  Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
    -  Proof. exact (Raw.min_elt_spec2 _ _ _ _). Qed.
    -  Lemma min_elt_spec3 : choose s = None → Empty s.
    -  Proof. exact (Raw.min_elt_spec3 _). Qed.
    - -
    -  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
    -  Proof. exact (Raw.max_elt_spec1 _ _ _). Qed.
    -  Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
    -  Proof. exact (Raw.max_elt_spec2 _ _ _ _). Qed.
    -  Lemma max_elt_spec3 : max_elt s = None → Empty s.
    -  Proof. exact (Raw.max_elt_spec3 _). Qed.
    - -
    -  Lemma compare_spec : CompSpec eq lt s (compare s ).
    -  Proof.
    -    generalize s .
    -    move ⇒ [s1 H_ok_s1] [s2 H_ok_s2].
    -    move : (Raw.compare_spec s1 s2).
    -    rewrite /CompSpec /eq /Equal /In /lt /compare /=.
    -    replace (∀ a : elt, Raw.In a s1 ↔ Raw.In a s2) with
    -    (Raw.Equal s1 s2) by done.
    -    suff H_eq : (Raw.Equal s1 s2) ↔ (s1 = s2). {
    -      move ⇒ [] H; constructor ⇒ //.
    -      by rewrite H_eq.
    -    }
    -    rewrite -Raw.equal_spec Raw.equal_alt_def //.
    -  Qed.
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    + +
    +  Lemma mem_spec : mem x s = true ↔ In x s.
    +   Lemma equal_spec : equal s s' = true ↔ Equal s s'.
    +   Lemma subset_spec : subset s s' = true ↔ Subset s s'.
    +   Lemma empty_spec : Empty empty.
    +   Lemma is_empty_spec : is_empty s = true ↔ Empty s.
    +   Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +   Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +   Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
    +   Lemma union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +   Lemma inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +   Lemma diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +   Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
    +   Lemma cardinal_spec : cardinal s = length (elements s).
    +   Lemma filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +   Lemma for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +   Lemma exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +   Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
    +   Lemma partition_spec2 : compatb f →
    +      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +   Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +   Lemma elements_spec2w : NoDupA E.eq (elements s).
    +   Lemma elements_spec2 : sort E.lt (elements s).
    +   Lemma choose_spec1 : choose s = Some x → In x s.
    +   Lemma choose_spec2 : choose s = None → Empty s.
    +   Lemma choose_spec3 : choose s = Some x → choose s' = Some y →
    +    Equal s s' → E.eq x y.
    + +
    +  Lemma min_elt_spec1 : choose s = Some x → In x s.
    +   Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
    +   Lemma min_elt_spec3 : choose s = None → Empty s.
    + +
    +  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
    +   Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
    +   Lemma max_elt_spec3 : max_elt s = None → Empty s.
    + +
    +  Lemma compare_spec : CompSpec eq lt s s' (compare s s').

     End Spec.
    @@ -6568,7 +2421,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Instantiations

    +

    Instantiations

    @@ -6576,131 +2429,104 @@

    Library MSetsExtra.MSetIntervals

    It remains to provide instantiations for commonly used datatypes.
    -

    Z

    +

    Z


    Module ElementEncodeZ <: ElementEncode.
    -  Module E := Z.
    +  Module E := Z.

    -  Definition encode (z : Z) := z.
    -  Definition decode (z : Z) := z.
    +  Definition encode (z : Z) := z.
    +  Definition decode (z : Z) := z.

      Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    -  Proof. by []. Qed.
    - +    decode (encode e) = e.
    +
      Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    -  Proof. by []. Qed.
    - +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +
      Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    -  Proof. by []. Qed.
    - +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +
    End ElementEncodeZ.

    -Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.
    +Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.

    -

    N

    +

    N


    Module ElementEncodeN <: ElementEncode.
    -  Module E := N.
    +  Module E := N.

    -  Definition encode (n : N) := Z.of_N n.
    -  Definition decode (z : Z) := Z.to_N z.
    +  Definition encode (n : N) := Z.of_N n.
    +  Definition decode (z : Z) := Z.to_N z.

      Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    -  Proof.
    -    intros e.
    -    rewrite /encode /decode N2Z.id //.
    -  Qed.
    - +    decode (encode e) = e.
    +
      Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    -  Proof.
    -    intros e1 e2.
    -    rewrite /encode /Z.eq N2Z.inj_iff /E.eq //.
    -  Qed.
    - +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +
      Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    -  Proof.
    -    intros e1 e2.
    -    rewrite /encode -N2Z.inj_lt //.
    -  Qed.
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.

    End ElementEncodeN.

    -Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.
    +Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.

    -

    nat

    +

    nat

    Module ElementEncodeNat <: ElementEncode.
    -  Module E := NPeano.Nat.
    +  Module E := Nat.

    -  Definition encode (n : nat) := Z.of_nat n.
    -  Definition decode (z : Z) := Z.to_nat z.
    +  Definition encode (n : nat) := Z.of_nat n.
    +  Definition decode (z : Z) := Z.to_nat z.

      Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    -  Proof.
    -    intros e.
    -    rewrite /encode /decode Nat2Z.id //.
    -  Qed.
    - +    decode (encode e) = e.
    +
      Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    -  Proof.
    -    intros e1 e2.
    -    rewrite /encode /Z.eq Nat2Z.inj_iff /E.eq //.
    -  Qed.
    - +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +
      Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    -  Proof.
    -    intros e1 e2.
    -    rewrite /encode -Nat2Z.inj_lt //.
    -  Qed.
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.

    End ElementEncodeNat.

    -Module MSetIntervalsNat <: SetsOn NPeano.Nat := MSetIntervals ElementEncodeNat.
    +Module MSetIntervalsNat <: SetsOn Nat := MSetIntervals ElementEncodeNat.

    diff --git a/html/MSetsExtra.MSetIterator.html b/html/MSetsExtra.MSetIterator.html deleted file mode 100644 index b03af4d..0000000 --- a/html/MSetsExtra.MSetIterator.html +++ /dev/null @@ -1,2037 +0,0 @@ - - - - - -MSetsExtra.MSetIterator - - - - -
    - - - -
    - -

    Library MSetsExtra.MSetIterator

    - -
    - -
    -
    - -
    -

    Fold with abort for sets

    - - -
    - - This file provided an efficient fold operation for set interfaces. - The standard fold iterates over all elements of the set. The - efficient one - called foldWithAbort - is allowed to skip - certain elements and thereby abort early. - -
    -
    - -
    -Require Export MSetInterface.
    -Require Import ssreflect.
    -Require Import MSetWithDups.
    -Require Import Int.
    -Require Import MSetGenTree MSetAVL MSetRBT.
    -Require Import MSetList MSetWeakList.
    - -
    -
    - -
    -

    Fold With Abort Operations

    - - -
    - - We want to provide an efficient folding operation. Efficieny is - gained by aborting the folding early, if we know that continuing - would not have an effect any more. Formalising this leads to the following - specification of foldWithAbort. -
    -
    - -
    -Definition foldWithAbortType
    -    elt
    - -
    -element type of set -
    -
    -    t
    - -
    -type of set -
    -
    -    A
    - -
    -return type -
    -
    - :=
    -    (elt → A → A) →
    - -
    -f -
    -
    -    (elt → A → bool) →
    - -
    -f_abort -
    -
    -    t →
    - -
    -input set -
    -
    -    A →
    - -
    -base value -
    -
    -    A.
    - -
    -Definition foldWithAbortSpecPred {elt t : Type}
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbort : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=
    -
    -    âˆ€
    -      (A : Type)
    -      
    - -
    -result type -
    -
    -
    -      (i : A)
    -      
    - -
    -base values for foldWithAbort and fold -
    -
    -
    -      (f : elt → A → A) ( : elt → A → A)
    -      
    - -
    -fold functions for foldWithAbort and fold -
    -
    -
    -      (f_abort : elt → A → bool)
    -      
    - -
    -abort function -
    -
    -
    -      (s : t)
    - -
    -sets to fold over -
    -
    -
    -      (P : A → A → Prop)
    - -
    -equivalence relation on results -
    -
    -,
    -
    -    
    - -
    -P is an equivalence relation -
    -
    -    Equivalence P →
    -      
    -    
    - -
    -f is for the elements of s compatible with the equivalence relation P -
    -
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    -
    -    
    - -
    -f and agree for the elements of s -
    -
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    -
    -    
    - -
    -f_abort is OK, i.e. all other elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_abort e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → e2 ≠ e1 →
    -                        P st (f e2 st´))) →
    -
    -    
    - -
    -The base values are in equivalence relation -
    -
    -    P i →
    -
    -    
    - -
    -The results are in equivalence relation -
    -
    -    P (foldWithAbort f f_abort s i) (fold s ).
    - -
    -
    - -
    -The specification of folding for ordered sets (as represented by - interface Sets) demands that elements are visited in increasing - order. For ordered sets we can therefore abort folding based on - the weaker knowledge that greater elements have no effect on the - result. The following definition captures this. -
    -
    - -
    -Definition foldWithAbortGtType
    -    elt
    - -
    -element type of set -
    -
    -    t
    - -
    -type of set -
    -
    -    A
    - -
    -return type -
    -
    - :=
    -    (elt → A → A) →
    - -
    -f -
    -
    -    (elt → A → bool) →
    - -
    -f_gt -
    -
    -    t →
    - -
    -input set -
    -
    -    A →
    - -
    -base value -
    -
    -    A.
    - -
    -Definition foldWithAbortGtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortGt : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=
    -
    -    âˆ€
    -      (A : Type)
    -      
    - -
    -result type -
    -
    -
    -      (i : A)
    -      
    - -
    -base values for foldWithAbort and fold -
    -
    -
    -      (f : elt → A → A) ( : elt → A → A)
    -      
    - -
    -fold functions for foldWithAbort and fold -
    -
    -
    -      (f_gt : elt → A → bool)
    -      
    - -
    -abort function -
    -
    -
    -      (s : t)
    - -
    -sets to fold over -
    -
    -
    -      (P : A → A → Prop)
    - -
    -equivalence relation on results -
    -
    -,
    -
    -    
    -    
    - -
    -P is an equivalence relation -
    -
    -    Equivalence P →
    -
    -    
    - -
    -f is for the elements of s compatible with the equivalence relation P -
    -
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    -
    -    
    - -
    -f and agree for the elements of s -
    -
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    -
    -    
    - -
    -f_abort is OK, i.e. all other elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st´))) →
    -
    -    
    - -
    -The base values are in equivalence relation -
    -
    -    P i →
    -
    -    
    - -
    -The results are in equivalence relation -
    -
    -    P (foldWithAbortGt f f_gt s i) (fold s ).
    - -
    -
    - -
    -For ordered sets, we can safely skip elements at the end - based on the knowledge that they are all greater than the current element. - This leads to serious performance improvements for operations like - filtering. It is tempting to try the symmetric operation and skip elements at - the beginning based on the knowledge that they are too small to be interesting. - So, we would like to start late as well as abort early. - -
    - - This is indeed a very natural and efficient operation for set implementations - based on binary search trees (i.e. the AVL and RBT sets). We can completely symmetrically - to skipping greater elements also skip smaller elements. This leads to the following - specification. -
    -
    - -
    -Definition foldWithAbortGtLtType
    -    elt
    - -
    -element type of set -
    -
    -    t
    - -
    -type of set -
    -
    -    A
    - -
    -return type -
    -
    - :=
    -    (elt → A → bool) →
    - -
    -f_lt -
    -
    -    (elt → A → A) →
    - -
    -f -
    -
    -    (elt → A → bool) →
    - -
    -f_gt -
    -
    -    t →
    - -
    -input set -
    -
    -    A →
    - -
    -base value -
    -
    -    A.
    - -
    -Definition foldWithAbortGtLtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortGtLt : ∀ {A : Type}, foldWithAbortGtLtType elt t A) : Prop :=
    -
    -    âˆ€
    -      (A : Type)
    -      
    - -
    -result type -
    -
    -
    -      (i : A)
    -      
    - -
    -base values for foldWithAbort and fold -
    -
    -
    -      (f : elt → A → A) ( : elt → A → A)
    -      
    - -
    -fold functions for foldWithAbort and fold -
    -
    -
    -      (f_lt f_gt : elt → A → bool)
    -      
    - -
    -abort functions -
    -
    -
    -      (s : t)
    - -
    -sets to fold over -
    -
    -
    -      (P : A → A → Prop)
    - -
    -equivalence relation on results -
    -
    -,
    -
    -    
    -    
    - -
    -P is an equivalence relation -
    -
    -    Equivalence P →
    -
    -    
    - -
    -f is for the elements of s compatible with the equivalence relation P -
    -
    -    (∀ st st´ e, In e s → P st st´ → P (f e st) (f e st´)) →
    -
    -    
    - -
    -f and agree for the elements of s -
    -
    -    (∀ e st, In e s → (P (f e st) ( e st))) →
    -
    -    
    - -
    -f_lt is OK, i.e. smaller elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 st´))) →
    -
    -    
    - -
    -f_gt is OK, i.e. greater elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st´))) →
    -
    -    
    - -
    -The base values are in equivalence relation -
    -
    -    P i →
    -
    -    
    - -
    -The results are in equivalence relation -
    -
    -    P (foldWithAbortGtLt f_lt f f_gt s i) (fold s ).
    - -
    -
    - -
    -We are interested in folding with abort mainly for runtime - performance reasons of extracted code. The argument functions - f_lt, f_gt and f of foldWithAbortGtLt often share a large, - comparably expensive part of their computation. - -
    - - In order to further improve runtime performance, therefore another - version foldWithAbortPrecompute f_precompute f_lt f f_gt that - uses an extra function f_precompute to allows to compute the - commonly used parts of these functions only once. This leads to - the following definitions. -
    -
    - -
    -Definition foldWithAbortPrecomputeType
    -    elt
    - -
    -element type of set -
    -
    -    t
    - -
    -type of set -
    -
    -    A
    - -
    -return type -
    -
    -    B
    - -
    -type of precomputed results -
    -
    - :=
    -
    -    (elt → B) →
    - -
    -f_precompute -
    -
    -    (elt → B → A → bool) →
    - -
    -f_lt -
    -
    -    (elt → B → A → A) →
    - -
    -f -
    -
    -    (elt → B → A → bool) →
    - -
    -f_gt -
    -
    -    t →
    - -
    -input set -
    -
    -    A →
    - -
    -base value -
    -
    -    A.
    - -
    -
    - -
    -The specification is similar to the one without precompute, - but uses f_precompute so avoid doing computations multiple times -
    -
    -Definition foldWithAbortPrecomputeSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortPrecompute : ∀ {A B : Type}, foldWithAbortPrecomputeType elt t A B) : Prop :=
    -
    -    âˆ€
    -      (A B : Type)
    -      
    - -
    -result type -
    -
    -
    -      (i : A)
    -      
    - -
    -base values for foldWithAbortPrecompute and fold -
    -
    -
    -      (f_precompute : elt → B)
    -      
    - -
    -precompute function -
    -
    -
    -      (f : elt → B → A → A) ( : elt → A → A)
    -      
    - -
    -fold functions for foldWithAbortPrecompute and fold -
    -
    -
    -      (f_lt f_gt : elt → B → A → bool)
    -      
    - -
    -abort functions -
    -
    -
    -      (s : t)
    - -
    -sets to fold over -
    -
    -
    -      (P : A → A → Prop)
    - -
    -equivalence relation on results -
    -
    -,
    -
    -    
    -    
    - -
    -P is an equivalence relation -
    -
    -    Equivalence P →
    -
    -    
    - -
    -f is for the elements of s compatible with the equivalence relation P -
    -
    -    (∀ st st´ e, In e s → P st st´ → P (f e (f_precompute e) st) (f e (f_precompute e) st´)) →
    -
    -    
    - -
    -f and agree for the elements of s -
    -
    -    (∀ e st, In e s → (P (f e (f_precompute e) st) ( e st))) →
    -
    -    
    - -
    -f_lt is OK, i.e. smaller elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 (f_precompute e1) st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 (f_precompute e2) st´))) →
    -
    -    
    - -
    -f_gt is OK, i.e. greater elements can be skipped without - leaving the equivalence relation. -
    -
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 (f_precompute e1) st = true →
    -        (∀ st´ e2, P st st´ →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 (f_precompute e2) st´))) →
    -
    -    
    - -
    -The base values are in equivalence relation -
    -
    -    P i →
    -
    -    
    - -
    -The results are in equivalence relation -
    - - -
    -

    Module Types

    - -
    - - We now define a module type for foldWithAbort. This module - type demands only the existence of the precompute version, since - the other ones can be easily defined via this most efficient one. -
    -
    - -
    -Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).
    - -
    -  Parameter foldWithAbortPrecompute : ∀ {A B : Type},
    -    foldWithAbortPrecomputeType elt t A B.
    - -
    -  Parameter foldWithAbortPrecomputeSpec :
    -     foldWithAbortPrecomputeSpecPred E.lt In (@fold) (@foldWithAbortPrecompute).
    - -
    -End HasFoldWithAbort.
    - -
    -
    - -
    -

    Derived operations

    - - -
    - - Using these efficient fold operations, many operations can - be implemented efficiently. We provide lemmata and efficient implementations - of useful algorithms via module HasFoldWithAbortOps. -
    -
    - -
    -Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
    -                           (FT : HasFoldWithAbort E C).
    - -
    -  Import FT.
    -  Import C.
    - -
    -
    - -
    -

    First lets define the other folding with abort variants

    - -
    -
    - -
    -  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).
    - -
    -  Lemma foldWithAbortGtLtSpec :
    -     foldWithAbortGtLtSpecPred E.lt In (@fold) (@foldWithAbortGtLt).
    -  Proof.
    -    rewrite /foldWithAbortGtLt /foldWithAbortGtLtSpecPred.
    -    intros A i f f_lt f_gt s P.
    -    move ⇒ H_f_compat H_ff´ H_lt H_gt H_ii´.
    -    apply foldWithAbortPrecomputeSpec ⇒ //.
    -  Qed.
    - -
    -  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).
    - -
    -  Lemma foldWithAbortGtSpec :
    -     foldWithAbortGtSpecPred E.lt In (@fold) (@foldWithAbortGt).
    -  Proof.
    -    rewrite /foldWithAbortGt /foldWithAbortGtSpecPred.
    -    intros A i f f_gt s P.
    -    move ⇒ H_f_compat H_ff´ H_gt H_ii´.
    -    apply foldWithAbortPrecomputeSpec ⇒ //.
    -  Qed.
    - -
    -  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_abort e st).
    - -
    -  Lemma foldWithAbortSpec :
    -     foldWithAbortSpecPred In (@fold) (@foldWithAbort).
    -  Proof.
    -    rewrite /foldWithAbort /foldWithAbortGtSpecPred.
    -    intros A i f f_abort s P.
    -    move ⇒ H_equiv_P H_f_compat H_ff´ H_abort H_ii´.
    -    have H_lt_neq: (∀ e1 e2, E.lt e1 e2 → e1 ≠ e2). {
    -      move ⇒ e1 e2 H_lt H_e12_eq.
    -      rewrite H_e12_eq in H_lt.
    -      have : ( Irreflexive E.lt) by apply StrictOrder_Irreflexive.
    -      rewrite /Irreflexive /Reflexive /complement ⇒ H.
    -      eapply H, H_lt.
    -    }
    -    apply foldWithAbortPrecomputeSpec ⇒ //; (
    -      move ⇒ e1 st H_in_e1 H_abort_e1 st´ e2 H_P H_in_e2 /H_lt_neq H_lt;
    -      apply (H_abort e1 st H_in_e1 H_abort_e1 st´ e2 H_P H_in_e2);
    -      by auto
    -    ).
    -  Qed.
    - -
    -
    - -
    -

    Specialisations for equality

    - -
    - - Let's provide simplified specifications, which use equality instead - of an arbitrary equivalence relation on results. -
    -
    -  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    -      (f : elt → B → A → A) ( : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),
    -
    -      (∀ e st, In e s → (f e (f_pre e) st = e st)) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 (f_pre e2) st = st))) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 (f_pre e2) st = st))) →
    -
    -      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s H_f´ H_lt H_gt.
    - -
    -     eapply (foldWithAbortPrecomputeSpec A B i i f_pre f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_smaller st´ e2 <-.
    -       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    -       intuition.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - -
    -  Lemma foldWithAbortGtLtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),
    -
    -      (∀ e st, In e s → (f e st = e st)) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 st = st))) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    -
    -      (foldWithAbortGtLt f_lt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A i f f_lt f_gt s H_f´ H_lt H_gt.
    - -
    -     eapply (foldWithAbortGtLtSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_smaller st´ e2 <-.
    -       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    -       intuition.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - -
    -  Lemma foldWithAbortGtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_gt : elt → A → bool) (s : t),
    -
    -      (∀ e st, In e s → (f e st = e st)) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    -
    -      (foldWithAbortGt f f_gt s i) = (fold s i).
    -  Proof.
    -    intros A i f f_gt s H_f´ H_gt.
    - -
    -     eapply (foldWithAbortGtSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_greater st´ e2 <-.
    -       move : (H_gt e1 st H_e1_in H_do_greater e2).
    -       intuition.
    -     }
    -  Qed.
    - -
    -  Lemma foldWithAbortSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) ( : elt → A → A) (f_abort : elt → A → bool) (s : t),
    -
    -      (∀ e st, In e s → (f e st = e st)) →
    -
    -      
    -      (∀ e1 st,
    -          In e1 s → f_abort e1 st = true →
    -          (∀ e2, In e2 s → e1 ≠ e2 →
    -                      (f e2 st = st))) →
    -
    -      (foldWithAbort f f_abort s i) = (fold s i).
    -  Proof.
    -     intros A i f f_abort s H_f´ H_abort.
    - -
    -     eapply (foldWithAbortSpec A i i f ); eauto. {
    -       apply eq_equivalence.
    -     } {
    -       move ⇒ st1 st2 e H_in → //.
    -     } {
    -       move ⇒ e1 st H_e1_in H_do_abort st´ e2 <-.
    -       move : (H_abort e1 st H_e1_in H_do_abort e2).
    -       intuition.
    -     }
    -  Qed.
    - -
    -
    - -
    -

    FoldWithAbortSpecArgs

    - -
    - - While folding, we are often interested in skipping elements that do not - satisfy a certain property P. This needs expressing in terms of - skips of smaller of larger elements in order to be done efficiently by - our folding functions. Formally, this leads to the definition - of foldWithAbortSpecForPred. - -
    - - Given a FoldWithAbortSpecArg for a predicate P and a - set s, many operations can be implemented efficiently. Below we will provide - efficient versions of filter, choose, ∃, ∀ and more. - -
    -
    -  Record FoldWithAbortSpecArg {B} := {
    -     fwasa_f_pre : (elt → B);
    - -
    -The precompute function -
    -
    -     fwasa_f_lt : (elt → B → bool);
    - -
    -f_lt without state argument -
    -
    -     fwasa_f_gt : (elt → B → bool);
    - -
    -f_gt without state argument -
    -
    -     fwasa_P´ : (elt → B → bool)
    - -
    -the predicate P -
    -
    -  }.
    - -
    -
    - -
    -foldWithAbortSpecForPred s P fwasa holds, if - the argument fwasa fits the predicate P for set s. -
    -
    -  Definition foldWithAbortSpecArgsForPred {A : Type}
    -     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=
    -
    -     
    - -
    -the predicate coincides for s and the given precomputation with P -
    -
    -     (∀ e, In e s → (fwasa_P´ fwasa e (fwasa_f_pre fwasa e) = P e)) ∧
    -
    -     
    - -
    -If fwasa_f_lt holds, all elements smaller than the current one - don't satisfy predicate P. -
    -
    -     (∀ e1,
    -          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧
    -
    -     
    - -
    -If fwasa_f_gt holds, all elements greater than the current one - don't satisfy predicate P. -
    -
    -     (∀ e1,
    -          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).
    - -
    - -
    -
    - -
    -

    Filter with abort

    - -
    -
    -  Definition filter_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -     @foldWithAbortPrecompute t B (fwasa_f_pre fwasa) (fun e p _ ⇒ fwasa_f_lt fwasa e p)
    -       (fun e e_pre s ⇒ if fwasa_P´ fwasa e e_pre then add e s else s)
    -       (fun e p _ ⇒ fwasa_f_gt fwasa e p) s empty.
    - -
    -  Lemma filter_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    Equal (filter_with_abort fwasa s)
    -          (filter P s).
    -  Proof.
    -    unfold foldWithAbortSpecArgsForPred.
    -    move ⇒ [] f_pre f_lt f_gt P s /=.
    -    move ⇒ [H_f´] [H_lt] H_gt H_proper.
    -    rewrite /filter_with_abort /=.
    - -
    -    have → : (foldWithAbortPrecompute f_pre (fun e p _ ⇒ f_lt e p)
    -     (fun (e : elt) (e_pre : B) (s0 : t) ⇒
    -      if e e_pre then add e s0 else s0) (fun e p _ ⇒ f_gt e p) s empty =
    -     (fold (fun e s0 ⇒ if P e then add e s0 else s0) s empty)). {
    -      apply foldWithAbortPrecomputeSpec_Equal. {
    -        intros e st H_e_in.
    -        rewrite H_f´ //.
    -      } {
    -        intros e1 st H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    -        apply (H_lt e1); eauto.
    -      } {
    -        intros e1 st H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    -        apply (H_gt e1); eauto.
    -      }
    -    }
    -
    -    rewrite /Equal ⇒ e.
    -    rewrite fold_spec.
    -    setoid_rewrite filter_spec ⇒ //.
    - -
    -    suff → : ∀ acc, In e
    -      (fold_left
    -         (flip (fun (e0 : elt) (s0 : t) ⇒ if P e0 then add e0 s0 else s0))
    -         (elements s) acc) ↔ (InA E.eq e (elements s) ∧ P e = true) ∨ (In e acc). {
    -      rewrite elements_spec1.
    -      suff : (¬In e empty) by tauto.
    -      apply empty_spec.
    -    }
    -    induction (elements s) as [| x xs IH] ⇒ acc. {
    -      rewrite /= InA_nil. tauto.
    -    } {
    -      rewrite /= /flip IH InA_cons.
    -      case_eq (P x). {
    -        rewrite add_spec.
    -        intuition.
    -        left.
    -        rewrite H0.
    -        split ⇒ //.
    -        left.
    -        apply Equivalence_Reflexive.
    -      } {
    -        intuition.
    -        contradict H2.
    -        setoid_rewrite H1.
    -        by rewrite H.
    -      }
    -    }
    -  Qed.
    - -
    -
    - -
    -

    Choose with abort

    - -
    -
    -  Definition choose_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -     foldWithAbortPrecompute (fwasa_f_pre fwasa)
    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    -       (fun e e_pre st ⇒ match st with None ⇒
    -          if (fwasa_P´ fwasa e e_pre) then Some e else None | _ ⇒ st end)
    -
    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    -       s None.
    - -
    -  Lemma choose_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, In e s → P e = false)
    -       | Some e ⇒ In e s ∧ (P e = true)
    -     end).
    -  Proof.
    -    rewrite /foldWithAbortSpecArgsForPred.
    -    move ⇒ [] f_pre f_lt f_gt P s /=.
    -    move ⇒ [H_f´] [H_lt] H_gt H_proper.
    - -
    -    set fwasa := {|
    -       fwasa_f_pre := f_pre;
    -       fwasa_f_lt := f_lt;
    -       fwasa_f_gt := f_gt;
    -       fwasa_P´ := |}.
    - -
    -    suff : (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, InA E.eq e (elements s) → P e = false)
    -       | Some e ⇒ InA E.eq e (elements s) ∧ (P e = true)
    -     end). {
    -       case (choose_with_abort fwasa s). {
    -         move ⇒ e.
    -         rewrite elements_spec1 //.
    -       } {
    -         move ⇒ H e H_in.
    -         apply H.
    -         rewrite elements_spec1 //.
    -       }
    -    }
    -
    -    have → : (choose_with_abort fwasa s =
    -      (fold (fun e st ⇒
    -        match st with
    -          | None ⇒ if P e then Some e else None
    -          | _ ⇒ st end) s None)). {
    -      apply foldWithAbortPrecomputeSpec_Equal. {
    -        intros e st H_e_in.
    -        case st ⇒ //=.
    -        rewrite H_f´ //.
    -      } {
    -        move ⇒ e1 [] //= H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        case_eq (P e2) ⇒ // H_P_e2.
    -        contradict H_P_e2.
    -        apply not_true_iff_false, (H_lt e1); auto.
    -      } {
    -        move ⇒ e1 [] //= H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    -        rewrite (H_f´ _ H_e2_in).
    -        case_eq (P e2) ⇒ // H_P_e2.
    -        contradict H_P_e2.
    -        apply not_true_iff_false, (H_gt e1); auto.
    -      }
    -    }
    -
    -    rewrite fold_spec /flip.
    -    induction (elements s) as [| x xs IH]. {
    -      rewrite /=.
    -      move ⇒ e /InA_nil //.
    -    } {
    -      case_eq (P x) ⇒ H_Px; rewrite /= H_Px. {
    -        have → : ∀ xs, fold_left (fun (x0 : option elt) (y : elt) ⇒
    -                    match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -                    end) xs (Some x) = Some x. {
    -          move ⇒ ys.
    -          induction ys ⇒ //.
    -        }
    -        split; last assumption.
    -        apply InA_cons_hd.
    -        apply E.eq_equiv.
    -      } {
    -        move : IH.
    -        case (fold_left
    -          (fun (x0 : option elt) (y : elt) ⇒
    -             match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -             end) xs None). {
    -
    -             move ⇒ e [H_e_in] H_Pe.
    -             split; last assumption.
    -             apply InA_cons_tl ⇒ //.
    -        } {
    -          move ⇒ H_e_nin e H_e_in.
    -          have : (InA E.eq e xs ∨ (E.eq e x)). {
    -            inversion H_e_in; tauto.
    -          }
    -          move ⇒ []. {
    -            apply H_e_nin.
    -          } {
    -            move ⇒ → //.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - -
    -
    - -
    -

    Exists and Forall with abort

    - -
    -
    -  Definition exists_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -    match choose_with_abort fwasa s with
    -      | None ⇒ false
    -      | Some _ ⇒ true
    -    end.
    - -
    -  Lemma exists_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (exists_with_abort fwasa s =
    -     exists_ P s).
    -  Proof.
    -    intros fwasa P s H_fwasa H_proper.
    -    apply Logic.eq_sym.
    -    rewrite /exists_with_abort.
    -    move : (choose_with_abort_spec _ _ _ H_fwasa H_proper).
    -    case (choose_with_abort fwasa s). {
    -      move ⇒ e [H_e_in] H_Pe.
    -      rewrite exists_spec /Exists.
    -      by ∃ e.
    -    } {
    -      move ⇒ H_not_ex.
    -      apply not_true_iff_false.
    -      rewrite exists_spec /Exists.
    -      move ⇒ [e] [H_in] H_pe.
    -      move : (H_not_ex e H_in).
    -      rewrite H_pe //.
    -    }
    -  Qed.
    - -
    -
    - -
    -Negation leads to forall. -
    -
    -  Definition forall_with_abort {B} fwasa s :=
    -     negb (@exists_with_abort B fwasa s).
    - -
    -  Lemma forall_with_abort_spec {B} : ∀ fwasa s P,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (forall_with_abort fwasa s =
    -     for_all (fun e ⇒ negb (P e)) s).
    -  Proof.
    -    intros fwasa s P H_ok H_proper.
    -    rewrite /forall_with_abort exists_with_abort_spec; auto.
    - -
    -    rewrite eq_iff_eq_true negb_true_iff -not_true_iff_false.
    -    rewrite exists_spec.
    -    setoid_rewrite for_all_spec; last solve_proper.
    - -
    -    rewrite /Exists /For_all.
    -    split. {
    -      move ⇒ H_pre x H_x_in.
    -      rewrite negb_true_iff -not_true_iff_false ⇒ H_Px.
    -      apply H_pre.
    -      by ∃ x.
    -    } {
    -      move ⇒ H_pre [x] [H_x_in] H_P_x.
    -      move : (H_pre x H_x_in).
    -      rewrite H_P_x.
    -      done.
    -    }
    -  Qed.
    - -
    -End HasFoldWithAbortOps.
    - -
    -
    - -
    -

    Modules Types For Sets with Fold with Abort

    - -
    -
    -Module Type WSetsWithDupsFoldA.
    -  Declare Module E : OrderedType.
    -  Include WSetsOnWithDups E.
    -  Include HasFoldWithAbort E.
    -  Include HasFoldWithAbortOps E.
    -End WSetsWithDupsFoldA.
    - -
    -Module Type WSetsWithFoldA <: WSets.
    -  Declare Module E : OrderedType.
    -  Include WSetsOn E.
    -  Include HasFoldWithAbort E.
    -  Include HasFoldWithAbortOps E.
    -End WSetsWithFoldA.
    - -
    -Module Type SetsWithFoldA <: Sets.
    -  Declare Module E : OrderedType.
    -  Include SetsOn E.
    -  Include HasFoldWithAbort E.
    -  Include HasFoldWithAbortOps E.
    -End SetsWithFoldA.
    - -
    -
    - -
    -

    Implementations

    - -
    - -

    GenTree implementation

    - - Finally, provide such a fold with abort operation for generic trees. -
    -
    -Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    -  (Import Raw:Ops E I)
    -  (M : MSetGenTree.Props E I Raw).
    - -
    -  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
    -    match t with
    -    | Raw.Leaf ⇒ base
    -    | Raw.Node _ l x r ⇒
    -        let x_pre := f_pre x in
    -        let st0 := if f_lt x x_pre base then base else foldWithAbort_Raw f_pre f_lt f f_gt l base in
    -        let st1 := f x x_pre st0 in
    -        let st2 := if f_gt x x_pre st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1 in
    -        st2
    -    end.
    - -
    -  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i : A) (f_pre : E.t → B)
    -      (f : E.t → B → A → A) ( : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    -      (P : A → A → Prop),
    -
    -      (M.bst s) →
    -      Equivalence P →
    -      (∀ st st´ e, M.In e s → P st st´ → P (f e (f_pre e) st) (f e (f_pre e) st´)) →
    -      (∀ e st, M.In e s → P (f e (f_pre e) st) ( e st)) →
    -
    -      
    -      (∀ e1 st,
    -          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ st´ e2, P st st´ →
    -                          M.In e2 s → E.lt e2 e1 →
    -                          P st (f e2 (f_pre e2) st´))) →
    -
    -      
    -      (∀ e1 st,
    -          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ st´ e2, P st st´ →
    -                          M.In e2 s → E.lt e1 e2 →
    -                          P st (f e2 (f_pre e2) st´))) →
    -
    -      P i →
    -      P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold s ).
    -   Proof.
    -     intros A B i f_pre f f_lt f_gt s P.
    -     move ⇒ H_bst H_equiv_P H_P_f H_f´ H_RL H_RG.
    - -
    -     set base := s.
    - -
    -     move : i .
    -     have : (∀ e, M.In e base → M.In e s). {
    -       rewrite /In /base //.
    -     }
    -     have : M.bst base. {
    -       apply H_bst.
    -     }
    -     move : base.
    -     clear H_bst.
    - -
    -     induction base as [|c l IHl e r IHr] using M.tree_ind. {
    -       rewrite /foldWithAbort_Raw /Raw.fold.
    -       move ⇒ _ _ i //.
    -     } {
    -       move ⇒ H_bst H_sub i H_P_ii´.
    - -
    -       have [H_bst_l [H_bst_r [H_lt_tree_l H_gt_tree_r]]]:
    -         M.bst l ∧ M.bst r ∧ M.lt_tree e l ∧ M.gt_tree e r. {
    -         inversion H_bst. done.
    -       }
    -       
    -       have H_sub_l : (∀ e0 : E.t, M.In e0 l → M.In e0 s ∧ E.lt e0 e). {
    -         intros e0 H_in_l.
    -         split; last by apply H_lt_tree_l.
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         tauto.
    -       }
    -       move : (IHl H_bst_l) ⇒ {IHl} IHl {H_bst_l} {H_lt_tree_l}.
    -       have H_sub_r : (∀ e0 : E.t, M.In e0 r → M.In e0 s ∧ E.lt e e0). {
    -         intros e0 H_in_r.
    -         split; last by apply H_gt_tree_r.
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         tauto.
    -       }
    -       move : (IHr H_bst_r) ⇒ {IHr} IHr {H_bst_r} {H_gt_tree_r}.
    -       have H_in_e : M.In e s. {
    -         eapply H_sub.
    -         rewrite /M.In M.In_node_iff.
    -         right; left.
    -         apply Equivalence_Reflexive.
    -       }
    -       move ⇒ {H_sub}.
    - -
    -       rewrite /=.
    -       set st0 := if f_lt e (f_pre e) i then i else foldWithAbort_Raw f_pre f_lt f f_gt l i.
    -       set st0´ := Raw.fold l .
    -       set st1 := f e (f_pre e) st0.
    -       set st1´ := e st0´.
    -       set st2 := if f_gt e (f_pre e) st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1.
    -       set st2´ := Raw.fold r st1´.
    - -
    -       have H_P_st0 : P st0 st0´. {
    -         rewrite /st0 /st0´.
    -         case_eq (f_lt e (f_pre e) i). {
    -           move ⇒ H_fl_eq.
    -           move : H_P_ii´ H_sub_l.
    -           move : H_equiv_P H_f´ (H_RL _ _ H_in_e H_fl_eq).
    -           rewrite /M.lt_tree. clear.
    -           move ⇒ H_equiv_P H_f´ H_RL.
    -           move : .
    -           induction l as [|c l IHl r IHr] using M.tree_ind. {
    -             done.
    -           } {
    -             intros H_P_ii´ H_sub_l.
    -             rewrite /=.
    -             apply IHr; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             have [] : (M.In s ∧ E.lt e). {
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff.
    -               right; left.
    -               apply Equivalence_Reflexive.
    -             }
    -             move ⇒ H_e´_in H_lt_in.
    -             suff H_P_i : (P i (f (f_pre ) (fold l ))). {
    -               eapply Equivalence_Transitive; first apply H_P_i.
    -               by apply H_f´.
    -             }
    -             eapply H_RL ⇒ //.
    -             apply IHl; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_l.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             assumption.
    -           }
    -         } {
    -           move ⇒ _.
    -           apply IHl ⇒ //.
    -           eapply H_sub_l.
    -         }
    -       }
    -       have H_P_st1 : P st1 st1´. {
    -         rewrite /st1 /st1´.
    -         rewrite -H_f´ //.
    -         apply H_P_f ⇒ //.
    -       }
    -       have H_P_st2 : P st2 st2´. {
    -         rewrite /st2 /st2´.
    -         clearbody st1 st1´.
    -         case_eq (f_gt e (f_pre e) st1). {
    -           move ⇒ H_gt_eq.
    -           move : H_P_st1 H_sub_r.
    -           move : H_equiv_P (H_RG _ _ H_in_e H_gt_eq) H_f´.
    -           unfold M.gt_tree. clear.
    -           move ⇒ H_equiv_P H_RG H_f´.
    -           move : st1´.
    -           induction r as [|c l IHl r IHr] using M.tree_ind. {
    -             done.
    -           } {
    -             intros st1´ H_P_st1 H_sub_r.
    -             rewrite /=.
    -             apply IHr; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             have [] : (M.In s ∧ E.lt e ). {
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff.
    -               right; left.
    -               apply Equivalence_Reflexive.
    -             }
    -             move ⇒ H_e´_in H_lt_ee´.
    -             suff H_P_st1_aux : (P st1 (f (f_pre ) (fold l st1´))). {
    -               eapply Equivalence_Transitive; first apply H_P_st1_aux.
    -               by apply H_f´.
    -             }
    -             eapply H_RG ⇒ //.
    -             apply IHl; last first. {
    -               move ⇒ y H_y_in.
    -               apply H_sub_r.
    -               rewrite /M.In M.In_node_iff. tauto.
    -             }
    -             assumption.
    -           }
    -         } {
    -           move ⇒ _.
    -           apply IHr ⇒ //.
    -           eapply H_sub_r.
    -         }
    -       }
    -       done.
    -     }
    -  Qed.
    -End MakeGenTreeFoldA.
    - -
    -
    - -
    -

    AVL implementation

    - - The generic tree implementation naturally leads to an AVL one. -
    -
    - -
    -Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetAVL.Make X.
    -  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.
    - -
    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    -    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.
    - -
    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s P.
    -    move ⇒ H_P_f H_f´ H_RL H_RG H_P_ii´.
    - -
    -    rewrite /foldWithAbortPrecompute /fold.
    -    apply foldWithAbort_RawSpec ⇒ //.
    -    case s. rewrite /this /Raw.Ok //.
    -  Qed.
    - -
    -  Include HasFoldWithAbortOps X.
    - -
    -End MakeAVLSetsWithFoldA.
    - -
    -
    - -
    -

    RBT implementation

    - - The generic tree implementation naturally leads to an RBT one. -
    -
    -Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetRBT.Make X.
    -  Include MakeGenTreeFoldA X Color Raw Raw.
    - -
    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    -    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.
    - -
    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt s P.
    -    move ⇒ H_P_f H_f´ H_RL H_RG H_P_ii´.
    - -
    -    rewrite /foldWithAbortPrecompute /fold.
    -    apply foldWithAbort_RawSpec ⇒ //.
    -    case s. rewrite /this /Raw.Ok //.
    -  Qed.
    - -
    -  Include HasFoldWithAbortOps X.
    - -
    -End MakeRBTSetsWithFoldA.
    - -
    -
    - -
    -

    Sorted Lists Implementation

    - -
    -
    -Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetList.Make X.
    - -
    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    -  match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) then
    -          acc
    -        else
    -          foldWithAbortRaw f_pre f_lt f f_gt xs acc
    -      )
    -  end.
    - -
    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    -    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.
    - -
    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt.
    -    move ⇒ [] l H_is_ok_l P H_equiv_P.
    -    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    -    move ⇒ H_P_f H_f´ H_RL H_RG.
    - -
    -    set base := l.
    -    move : i .
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    -      rewrite /base //.
    -    }
    -    have : sort X.lt base. {
    -      rewrite Raw.isok_iff /base //.
    -    }
    -    clear H_is_ok_l.
    - -
    -    induction base as [| x xs IH]. {
    -      by simpl.
    -    }
    -    move ⇒ H_sort H_in_xxs i Pii´ /=.
    - -
    -    have [H_sort_xs H_hd_rel {H_sort}] : Sorted X.lt xs ∧ HdRel X.lt x xs. {
    -      by inversion H_sort.
    -    }
    -
    -    move : H_hd_rel.
    -    rewrite (Raw.ML.Inf_alt x H_sort_xs) ⇒ H_lt_xs.
    - -
    -    have H_x_in_l : InA X.eq x l. {
    -      apply H_in_xxs.
    -      apply InA_cons_hd.
    -      apply X.eq_equiv.
    -    }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    -      intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    -    }
    -   
    -    have H_P_next : P (f x (f_pre x) i) (flip x). {
    -      rewrite /flip -H_f´ //.
    -      apply H_P_f ⇒ //.
    -    }
    -
    -    case_eq (f_gt x (f_pre x) (f x (f_pre x) i)); last first. {
    -      move ⇒ _.
    -      apply IH ⇒ //.
    -    } {
    -      move ⇒ H_gt.
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip ) xs st)). {
    -         apply H_suff ⇒ //.
    -      }
    -      move : H_in_xs H_lt_xs.
    - -
    -      clear IH H_in_xxs H_sort_xs.
    -      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    -      induction xs as [| xs´ IH´]. {
    -        done.
    -      } {
    -        intros H_in_xs H_lt_xs st H_P_st.
    -        rewrite /=.
    -        have H_x´_in_l : InA X.eq l. {
    -          apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -        apply IH´. {
    -          intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_lt_xs, InA_cons_tl ⇒ //.
    -        } {
    -          rewrite /flip -H_f´ //.
    -          apply H_RG_x ⇒ //.
    -          apply H_lt_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -      }
    -    }
    -  Qed.
    - -
    -  Include HasFoldWithAbortOps X.
    - -
    -End MakeListSetsWithFoldA.
    - -
    -
    - -
    -

    Unsorted Lists without Dups Implementation

    - -
    -
    -Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    -  Module Raw := MSetWeakList.MakeRaw X.
    -  Module E := X.
    -  Include WRaw2SetsOn E Raw.
    - -
    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    -  match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
    -          acc
    -        else
    -          foldWithAbortRaw f_pre f_lt f f_gt xs acc
    -      )
    -  end.
    - -
    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    -    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.
    - -
    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    -  Proof.
    -    intros A B i f_pre f f_lt f_gt.
    -    move ⇒ [] l H_is_ok_l P H_P_equiv.
    -    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    -    move ⇒ H_P_f H_f´ H_RL H_RG.
    - -
    -    set base := l.
    -    move : i .
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    -      rewrite /base //.
    -    }
    -    have : NoDupA X.eq base. {
    -      apply H_is_ok_l.
    -    }
    -    clear H_is_ok_l.
    - -
    -    induction base as [| x xs IH]. {
    -      by simpl.
    -    }
    -    move ⇒ H_nodup_xxs H_in_xxs i Pii´ /=.
    - -
    -    have [H_nin_x_xs H_nodup_xs {H_nodup_xxs}] : ¬ InA X.eq x xs ∧ NoDupA X.eq xs. {
    -      by inversion H_nodup_xxs.
    -    }
    -
    -    have H_x_in_l : InA X.eq x l. {
    -      apply H_in_xxs.
    -      apply InA_cons_hd.
    -      apply X.eq_equiv.
    -    }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    -      intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    -    }
    -   
    -    have H_P_next : P (f x (f_pre x) i) (flip x). {
    -      rewrite /flip -H_f´ //.
    -      apply H_P_f ⇒ //.
    -    }
    -
    -    case_eq (f_gt x (f_pre x) (f x (f_pre x) i) &&
    -             f_lt x (f_pre x) (f x (f_pre x) i)); last first. {
    -      move ⇒ _.
    -      apply IH ⇒ //.
    -    } {
    -      move ⇒ /andb_true_iff [H_gt H_lt].
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip ) xs st)). {
    -         apply H_suff ⇒ //.
    -      }
    -
    -      have H_neq_xs : ∀ e, List.In e xs → X.lt x e ∨ X.lt e x. {
    -        intros e H_in.
    - -
    -        move : (X.compare_spec x e).
    -        case (X.compare x e) ⇒ H_cmp; inversion H_cmp. {
    -          contradict H_nin_x_xs.
    -          rewrite InA_alt.
    -          by ∃ e.
    -        } {
    -          by left.
    -        } {
    -          by right.
    -        }
    -      }
    -      move : H_in_xs H_neq_xs.
    - -
    -      clear IH H_in_xxs H_nodup_xs.
    -      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    -      move : (H_RL x _ H_x_in_l H_lt) ⇒ H_RL_x.
    -      induction xs as [| xs´ IH´]. {
    -        done.
    -      } {
    -        intros H_in_xs H_neq_xs st H_P_st.
    -        rewrite /=.
    -        have H_x´_in_xxs´ : List.In ( :: xs´). {
    -          simpl; by left.
    -        }
    -        have H_x´_in_l : InA X.eq l. {
    -          apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    -        }
    -        apply IH´. {
    -          intros H.
    -          apply H_nin_x_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    -        } {
    -          intros e H.
    -          apply H_neq_xs, in_cons ⇒ //.
    -        } {
    -          rewrite /flip -H_f´ //.
    -          move : (H_neq_xs H_x´_in_xxs´) ⇒ [] H_cmp. {
    -            apply H_RG_x ⇒ //.
    -          } {
    -            apply H_RL_x ⇒ //.
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - -
    -  Include HasFoldWithAbortOps X.
    - -
    -End MakeWeakListSetsWithFoldA.
    - -
    -
    -
    - - - -
    - - - \ No newline at end of file diff --git a/html/MSetsExtra.MSetListWithDups.html b/html/MSetsExtra.MSetListWithDups.html index 2186d08..7ec5cc9 100644 --- a/html/MSetsExtra.MSetListWithDups.html +++ b/html/MSetsExtra.MSetListWithDups.html @@ -24,7 +24,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Weak sets implemented as lists with duplicates

    +

    Weak sets implemented as lists with duplicates

    @@ -37,7 +37,7 @@

    Library MSetsExtra.MSetListWithDups

    This implementation is useful, if one needs very efficient insert and union operation, and can guarantee that one does not - add too many duplicates. The operation elements_dist is implemented + add too many duplicates. The operation elements_dist is implemented by sorting the list first. Therefore this instantiation can only be used if the element type is ordered. @@ -45,17 +45,17 @@

    Library MSetsExtra.MSetListWithDups


    -Require Export MSetInterface.
    -Require Import ssreflect.
    -Require Import List OrdersFacts OrdersLists.
    -Require Import Sorting Permutation.
    +Require Export MSetInterface.
    +Require Import mathcomp.ssreflect.ssreflect.
    +Require Import List OrdersFacts OrdersLists.
    +Require Import Sorting Permutation.
    Require Import MSetWithDups.

    -

    Removing duplicates from sorted lists

    +

    Removing duplicates from sorted lists

    @@ -72,7 +72,7 @@

    Library MSetsExtra.MSetListWithDups

    duplicates.
    -Module RemoveDupsFromSorted (Import X:OrderedType).
    +Module RemoveDupsFromSorted (Import X:OrderedType).

    @@ -81,41 +81,30 @@

    Library MSetsExtra.MSetListWithDups

    First, we need some infrastructure for our ordered type
    -  Module Import MX := OrderedTypeFacts X.
    +  Module Import MX := OrderedTypeFacts X.

    -  Module Import XTotalLeBool <: TotalLeBool.
    +  Module Import XTotalLeBool <: TotalLeBool.
        Definition t := X.t.
        Definition leb x y :=
          match X.compare x y with
    -        | Lt ⇒ true
    -        | Eq ⇒ true
    -        | Gt ⇒ false
    +        | Lt ⇒ true
    +        | Eq ⇒ true
    +        | Gt ⇒ false
          end.

        Infix "<=?" := leb (at level 35).

    -    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).
    -    Proof.
    -      intros a1 a2.
    -      unfold leb.
    -      rewrite (compare_antisym a1 a2).
    -      case (X.compare a1 a2); rewrite /=; tauto.
    -    Qed.
    +    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).

    -    Definition le x y := (leb x y = true).
    +    Definition le x y := (leb x y = true).
      End XTotalLeBool.

    -  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.
    -  Proof.
    -    intros x y.
    -    rewrite eqb_alt -compare_eq_iff.
    -    case (compare x y) ⇒ //.
    -  Qed.
    +  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.

    @@ -124,22 +113,22 @@

    Library MSetsExtra.MSetListWithDups

    Now we can define our main function
    -  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
    +  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
        match l with
    -    | nil ⇒ List.rev´ acc
    -    | x :: xs ⇒
    +    | nil ⇒ List.rev' acc
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ List.rev´ (x :: acc)
    -       | y :: ys ⇒
    +       | nil ⇒ List.rev' (x :: acc)
    +       | y :: ys ⇒
               if eqb x y then
                 remove_dups_from_sortedA_aux acc xs
               else
    -             remove_dups_from_sortedA_aux (x::acc) xs
    +             remove_dups_from_sortedA_aux (x::acc) xs
           end
        end.

    -  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).
    +  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).

    @@ -148,87 +137,34 @@

    Library MSetsExtra.MSetListWithDups

    We can prove some technical lemmata
    -  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    -    remove_dups_from_sortedA_aux acc l =
    -    List.rev acc ++ (remove_dups_from_sortedA l).
    -  Proof.
    -    unfold remove_dups_from_sortedA.
    -    induction l as [| x xs IH] ⇒ acc. {
    -      rewrite /remove_dups_from_sortedA_aux /rev´ -!rev_alt /= app_nil_r //.
    -    } {
    -      rewrite /=.
    -      case_eq xs. {
    -        rewrite /rev´ -!rev_alt //.
    -      } {
    -        move ⇒ y ys H_xs_eq.
    -        rewrite -!H_xs_eq !(IH acc) !(IH (x :: acc)) (IH (x::nil)).
    -        case (eqb x y) ⇒ //.
    -        rewrite /= -app_assoc //.
    -      }
    -    }
    -  Qed.
    - +  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    +    remove_dups_from_sortedA_aux acc l =
    +    List.rev acc ++ (remove_dups_from_sortedA l).
    +
      Lemma remove_dups_from_sortedA_alt :
    -    âˆ€ (l : list t),
    -    remove_dups_from_sortedA l =
    +    âˆ€ (l : list t),
    +    remove_dups_from_sortedA l =
        match l with
    -    | nil ⇒ nil
    -    | x :: xs ⇒
    +    | nil ⇒ nil
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ l
    -       | y :: ys ⇒
    +       | nil ⇒ l
    +       | y :: ys ⇒
               if eqb x y then
                 remove_dups_from_sortedA xs
               else
    -             x :: remove_dups_from_sortedA xs
    +             x :: remove_dups_from_sortedA xs
           end
        end.
    -  Proof.
    -    case. {
    -      done.
    -    } {
    -      intros x xs.
    -      rewrite /remove_dups_from_sortedA /= /rev´ /=.
    -      case xs ⇒ //.
    -      move ⇒ y ys.
    -      rewrite !remove_dups_from_sortedA_aux_alt /= //.
    -    }
    -  Qed.
    - +
      Lemma remove_dups_from_sortedA_hd :
          âˆ€ x xs,
    -      âˆƒ (:t) xs´,
    -        remove_dups_from_sortedA (x :: xs) =
    -        ( :: xs´) ∧ (eqb x = true).
    -  Proof.
    -    intros x xs.
    -    move : x;
    -    induction xs as [| y ys IH] ⇒ x. {
    -      rewrite remove_dups_from_sortedA_alt.
    -      âˆƒ x, nil.
    -      split; first reflexivity.
    -      rewrite eqb_alt compare_refl //.
    -    } {
    -      rewrite remove_dups_from_sortedA_alt.
    -      case_eq (eqb x y); last first. {
    -        move ⇒ _.
    -        âˆƒ x, (remove_dups_from_sortedA (y :: ys)).
    -        split; first reflexivity.
    -        rewrite eqb_alt compare_refl //.
    -      } {
    -        move ⇒ H_eqb_xy.
    -        move : (IH y) ⇒ {IH} [] [xs´] [->] H_eqb_yx´.
    -        âˆƒ , xs´.
    -        split; first done.
    -        move : H_eqb_xy H_eqb_yx´.
    -        rewrite !eqb_eq_alt.
    -        apply MX.eq_trans.
    -      }
    -    }
    -  Qed.
    - +      âˆƒ (x':t) xs',
    +        remove_dups_from_sortedA (x :: xs) =
    +        (x' :: xs') ∧ (eqb x x' = true).
    +
    @@ -237,102 +173,14 @@

    Library MSetsExtra.MSetListWithDups

      Lemma remove_dups_from_sortedA_spec :
    -    âˆ€ (l : list t),
    -      Sorted le l →
    -      let := remove_dups_from_sortedA l in (
    +    âˆ€ (l : list t),
    +      Sorted le l →
    +      let l' := remove_dups_from_sortedA l in (
        
    -      Sorted lt ∧
    -      NoDupA eq ∧
    -      (∀ x, InA eq x l ↔ InA eq x )).
    -  Proof.
    -    simpl.
    -    induction l as [| x xs IH]. {
    -      rewrite remove_dups_from_sortedA_alt.
    -      done.
    -    } {
    -      rewrite remove_dups_from_sortedA_alt.
    -      move : IH.
    -      case xs ⇒ {xs}. {
    -        move ⇒ _.
    -        split; last split. {
    -          apply Sorted_cons ⇒ //.
    -        } {
    -          apply NoDupA_singleton.
    -        } {
    -          done.
    -        }
    -      } {
    -        move ⇒ y ys IH H_sorted_x_y_ys.
    -        apply Sorted_inv in H_sorted_x_y_ys as [H_sorted_y_ys H_hd_rel].
    -        apply HdRel_inv in H_hd_rel.
    - -
    -        have : ∃ ys´,
    -          remove_dups_from_sortedA (y :: ys) = :: ys´ ∧
    -          eqb y = true. {
    -          apply remove_dups_from_sortedA_hd ⇒ //.
    -        }
    -        move ⇒ [] [ys´] [H_yys´_intro] /eqb_eq_alt H_eq_y_y´.
    - -
    -        move : (IH H_sorted_y_ys).
    -        rewrite !H_yys´_intro.
    -        move ⇒ {IH} [IH1] [IH2] IH3.
    - -
    -        case_eq (eqb x y). {
    -          rewrite eqb_eq_alt ⇒ H_eq_x_y.
    -          split ⇒ //.
    -          split ⇒ //.
    -          move ⇒ .
    -          rewrite InA_cons IH3.
    -          split; last tauto.
    -          move ⇒ [] //.
    -          move ⇒ H_eq_x´_x.
    -          apply InA_cons_hd.
    -          apply eq_trans with (y := x) ⇒ //.
    -          apply eq_trans with (y := y) ⇒ //.
    -        }
    -        move ⇒ H_neqb_x_y.
    - -
    -        have H_sorted : Sorted lt (x :: :: ys´). {
    -          apply Sorted_cons ⇒ //.
    -          apply HdRel_cons.
    -          rewrite -compare_lt_iff.
    -          suff : (compare x y = Lt). {
    -            setoid_rewrite compare_compat; eauto;
    -              apply eq_refl.
    -          }
    -          move : H_hd_rel H_neqb_x_y.
    -          rewrite eqb_alt /le /leb.
    -          case (compare x y) ⇒ //.
    -        }
    -        split; last split. {
    -          assumption.
    -        } {
    -          apply NoDupA_cons ⇒ //.
    - -
    -          move ⇒ /InA_alt [] [H_eq_xx´] H_in_x´.
    -          have : Forall (lt x) ( :: ys´). {
    -            apply Sorted_extends ⇒ //.
    -            rewrite /Relations_1.Transitive.
    -            by apply lt_trans.
    -          }
    -          rewrite Forall_forall ⇒ H_forall.
    -          move : (H_forall _ H_in_x´) ⇒ {H_forall}.
    -          move : H_eq_xx´.
    -          rewrite -compare_lt_iff -compare_eq_iff.
    -          move ⇒ → //.
    -        } {
    -          move ⇒ x0.
    -          rewrite !(InA_cons eq x0 x) IH3 //.
    -        }
    -      }
    -    }
    -  Qed.
    - +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
    +
    @@ -343,54 +191,18 @@

    Library MSetsExtra.MSetListWithDups

      Module Import XSort := Sort XTotalLeBool.

    -  Definition remove_dups_by_sortingA (l : list t) : list t :=
    +  Definition remove_dups_by_sortingA (l : list t) : list t :=
        remove_dups_from_sortedA (XSort.sort l).

      Lemma remove_dups_by_sortingA_spec :
    -    âˆ€ (l : list t),
    -      let := remove_dups_by_sortingA l in (
    +    âˆ€ (l : list t),
    +      let l' := remove_dups_by_sortingA l in (
        
    -      Sorted lt ∧
    -      NoDupA eq ∧
    -      (∀ x, InA eq x l ↔ InA eq x )).
    -  Proof.
    -    intro l.
    - -
    -    suff : (∀ x : X.t, InA eq x (sort l) ↔ InA eq x l) ∧
    -           Sorted le (sort l). {
    -      
    -      unfold remove_dups_by_sortingA.
    -      move : (remove_dups_from_sortedA_spec (sort l)).
    -      simpl.
    -      move ⇒ H_spec [H_in_sort H_sorted_sort].
    -      move : (H_spec H_sorted_sort).
    -      move ⇒ [H1] [H2] H3.
    -      split ⇒ //.
    -      split ⇒ //.
    -      move ⇒ x.
    -      rewrite -H_in_sort H3 //.
    -    }
    -
    -    split. {
    -      have H_in_sort : ∀ x, List.In x (XSort.sort l) ↔ List.In x l. {
    -        intros x.
    -        have H_perm := (XSort.Permuted_sort l).
    -        split; apply Permutation_in ⇒ //.
    -        by apply Permutation_sym.
    -      }
    -
    -      intros x.
    -      rewrite !InA_alt.
    -      setoid_rewrite H_in_sort ⇒ //.
    -    } {
    -
    -      move : (LocallySorted_sort l).
    -      rewrite /is_true /le /leb //.
    -    }
    -  Qed.
    - +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
    +
    End RemoveDupsFromSorted.
    @@ -398,7 +210,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Operations Module

    +

    Operations Module

    @@ -410,113 +222,113 @@

    Library MSetsExtra.MSetListWithDups


    -Module Ops (X:OrderedType) <: WOps X.
    +Module Ops (X:OrderedType) <: WOps X.

      Module RDFS := RemoveDupsFromSorted X.
    -  Module Import MX := OrderedTypeFacts X.
    +  Module Import MX := OrderedTypeFacts X.

      Definition elt := X.t.
    -  Definition t := list elt.
    +  Definition t := list elt.

    -  Definition empty : t := nil.
    +  Definition empty : t := nil.

    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    -  Fixpoint mem (x : elt) (s : t) : bool :=
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Fixpoint mem (x : elt) (s : t) : bool :=
        match s with
    -    | nil ⇒ false
    -    | y :: l ⇒
    +    | nil ⇒ false
    +    | y :: l ⇒
               match X.compare x y with
    -               Eq ⇒ true
    +               Eq ⇒ true
                 | _ ⇒ mem x l
               end
        end.

    -  Definition add x (s : t) := x :: s.
    -  Definition singleton (x : elt) := x :: nil.
    +  Definition add x (s : t) := x :: s.
    +  Definition singleton (x : elt) := x :: nil.

    -  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
    +  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
        match s with
    -       nil ⇒ acc
    -     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
    +       nil ⇒ acc
    +     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
        end.
    -  Definition rev_filter := rev_filter_aux nil.
    +  Definition rev_filter := rev_filter_aux nil.

    -  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.
    +  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.

      Definition remove x s :=
    -    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.
    +    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.

      Definition union (s1 s2 : t) : t :=
    -    List.rev_append s2 s1.
    +    List.rev_append s2 s1.

      Definition inter (s1 s2 : t) : t :=
        rev_filter (fun y ⇒ mem y s2) s1.

    -  Definition elements (x : t) : list elt := x.
    +  Definition elements (x : t) : list elt := x.

    -  Definition elements_dist (x : t) : list elt :=
    +  Definition elements_dist (x : t) : list elt :=
        RDFS.remove_dups_by_sortingA x.

    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    fold_left (flip f) (elements s) i.
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    fold_left (flip f) (elements s) i.

    -  Definition diff (s : t) : t := fold remove s.
    +  Definition diff (s s' : t) : t := fold remove s' s.

    -  Definition subset (s : t) : bool :=
    -    List.forallb (fun x ⇒ mem x ) s.
    +  Definition subset (s s' : t) : bool :=
    +    List.forallb (fun x ⇒ mem x s') s.

    -  Definition equal (s : t) : bool := andb (subset s ) (subset s).
    +  Definition equal (s s' : t) : bool := andb (subset s s') (subset s' s).

    -  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
    +  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
        match s with
    -    | nil ⇒ true
    -    | x :: l ⇒ if f x then for_all f l else false
    +    | nil ⇒ true
    +    | x :: l ⇒ if f x then for_all f l else false
        end.

    -  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
    +  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
        match s with
    -    | nil ⇒ false
    -    | x :: l ⇒ if f x then true else exists_ f l
    +    | nil ⇒ false
    +    | x :: l ⇒ if f x then true else exists_ f l
        end.

    -  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
    +  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
        match s with
    -    | nil ⇒ (a1, a2)
    -    | x :: l ⇒
    -        if f x then partition_aux (x :: a1) a2 f l else
    -                    partition_aux a1 (x :: a2) f l
    +    | nil ⇒ (a1, a2)
    +    | x :: l ⇒
    +        if f x then partition_aux (x :: a1) a2 f l else
    +                    partition_aux a1 (x :: a2) f l
        end.

    -  Definition partition := partition_aux nil nil.
    +  Definition partition := partition_aux nil nil.

    -  Definition cardinal (s : t) : nat := length (elements_dist s).
    +  Definition cardinal (s : t) : nat := length (elements_dist s).

    -  Definition choose (s : t) : option elt :=
    +  Definition choose (s : t) : option elt :=
         match s with
    -      | nil ⇒ None
    -      | x::_ ⇒ Some x
    +      | nil ⇒ None
    +      | x::_ ⇒ Some x
         end.

    @@ -526,7 +338,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Main Module

    +

    Main Module

    @@ -540,7 +352,7 @@

    Library MSetsExtra.MSetListWithDups

    -Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
    +Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
      Include Ops E.
      Import MX.
    @@ -548,40 +360,30 @@

    Library MSetsExtra.MSetListWithDups

    -

    Proofs of set operation specifications.

    +

    Proofs of set operation specifications.

    Logical predicates
    -  Definition In x (s : t) := SetoidList.InA E.eq x s.
    +  Definition In x (s : t) := SetoidList.InA E.eq x s.

    -  Instance In_compat : Proper (E.eq==>eq==>iff) In.
    -  Proof. repeat red. intros. rewrite H H0. auto. Qed.
    - +  Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +
    -  Definition Equal s := ∀ a : elt, In a s ↔ In a .
    -  Definition Subset s := ∀ a : elt, In a s → In a .
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

      Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
      Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Lemma eq_equiv : Equivalence eq.
    -  Proof.
    -    constructor. {
    -      done.
    -    } {
    -      by constructor; rewrite H.
    -    } {
    -      by constructor; rewrite H H0.
    -    }
    -  Qed.
    - +  Definition eq : t → t → Prop := Equal.
    +  Lemma eq_equiv : Equivalence eq.
    +

    @@ -593,376 +395,107 @@

    Library MSetsExtra.MSetListWithDups


    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    - -
    -  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
    -  Proof.
    -    induction s as [| y IH]. {
    -      move ⇒ x.
    -      rewrite /= /In InA_nil.
    -      split ⇒ //.
    -    } {
    -      move ⇒ x.
    -      rewrite /= /In InA_cons.
    -      move : (MX.compare_eq_iff x y).
    -      case (E.compare x y). {
    -        tauto.
    -      } {
    -        rewrite IH; intuition; inversion H.
    -      } {
    -        rewrite IH; intuition; inversion H.
    -      }
    -    }
    Qed.
    - -
    -  Lemma subset_spec : ∀ s , subset s = true ↔ s[<=].
    -  Proof.
    -    intros s .
    -    rewrite /subset forallb_forall /Subset /In.
    -    split. {
    -      move ⇒ H z /InA_alt [] x [H_z_eq] H_in.
    -      move : (H _ H_in).
    -      rewrite mem_spec.
    -      setoid_replace z with x ⇒ //.
    -    } {
    -      move ⇒ H z H_in.
    -      rewrite mem_spec.
    -      apply H, In_InA ⇒ //.
    -      apply E.eq_equiv.
    -    }
    -  Qed.
    - -
    -  Lemma equal_spec : ∀ s , equal s = true ↔ s[=].
    -  Proof.
    -    intros s .
    -    rewrite /Equal /equal Bool.andb_true_iff !subset_spec /Subset.
    -    split. {
    -      move ⇒ [H1 H2] a.
    -      split.
    -        - by apply H1.
    -        - by apply H2.
    -    } {
    -      move ⇒ H.
    -      split; move ⇒ a; rewrite H //.
    -    }
    -  Qed.
    - -
    -  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.
    -  Proof.
    -    intros x y.
    -    change ({Equal x y}+{¬Equal x y}).
    -    destruct (equal x y) eqn:H; [left|right];
    -     rewrite <- equal_spec; congruence.
    -  Qed.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).

    -  Lemma empty_spec : Empty empty.
    -  Proof. rewrite /Empty /empty /In. move ⇒ a /InA_nil //. Qed.
    - -
    -  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
    -  Proof.
    -    rewrite /is_empty /Empty /In.
    -    case; split ⇒ //. {
    -      move ⇒ _ a.
    -      rewrite InA_nil //.
    -    } {
    -      move ⇒ H; contradiction (H a).
    -      apply InA_cons_hd.
    -      apply Equivalence_Reflexive.
    -    }
    -  Qed.
    - -
    -  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
    -  Proof.
    -    intros s x y.
    -    rewrite /add /In InA_cons //.
    -  Qed.
    - -
    -  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
    -  Proof.
    -    intros x y.
    -    rewrite /singleton /In InA_cons.
    -    split. {
    -      move ⇒ [] // /InA_nil //.
    -    } {
    -      by left.
    -    }
    -  Qed.
    - -
    -  Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv).
    -  Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv).
    -  Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv).
    - -
    -  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    -    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
    -  Proof.
    -    intros s acc x f H_compat.
    -    move : x acc.
    -    induction s as [| y IH]. {
    -      intros x acc.
    -      rewrite /rev_filter_aux /In InA_nil.
    -      tauto.
    -    } {
    -      intros x acc.
    -      rewrite /= IH /In.
    -      case_eq (f y) ⇒ H_fy; rewrite !InA_cons; intuition. {
    -        left.
    -        split; first by left.
    -        setoid_replace x with y ⇒ //.
    -      } {
    -        contradict H1.
    -        setoid_replace x with y ⇒ //.
    -        by rewrite H_fy.
    -      }
    -    }
    -  Qed.
    - -
    -  Lemma filter_spec : ∀ s x f, compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Proof.
    -    intros s x f H_compat.
    -    rewrite /filter /rev_filter rev_filter_aux_spec /In InA_nil.
    -    tauto.
    -  Qed.
    - -
    -  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -  Proof.
    -    intros s x y.
    -    rewrite /remove /rev_filter.
    -    have H_compat : compatb ((fun y0 : elt ⇒
    -         match E.compare x y0 with
    -         | Eq ⇒ false
    -         | _ ⇒ true
    -         end)). {
    -      repeat red; intros.
    -      setoid_replace x0 with y0 ⇒ //.
    -    }
    -    rewrite rev_filter_aux_spec /In InA_nil.
    -    have → : (E.eq y x ↔ E.eq x y). {
    -      split; move ⇒ ?; by apply Equivalence_Symmetric.
    -    }
    -    rewrite -compare_eq_iff.
    -    case (E.compare x y). {
    -      intuition.
    -    } {
    -      intuition.
    -      inversion H0.
    -    } {
    -      intuition.
    -      inversion H0.
    -    }
    -  Qed.
    - -
    -  Lemma union_spec : ∀ s x, In x (union s ) ↔ In x s ∨ In x .
    -  Proof.
    -    intros s x.
    -    rewrite /union /In rev_append_rev InA_app_iff InA_rev; tauto.
    -  Qed.
    - -
    -  Lemma inter_spec : ∀ s x, In x (inter s ) ↔ In x s ∧ In x .
    -  Proof.
    -    intros s x.
    -    have H_compat : compatb (fun y : elt ⇒ mem y ). {
    -      repeat red; intros.
    -      suff : ( mem x0 = true ↔ mem y = true). {
    -        case (mem y ), (mem x0 ); intuition.
    -      }
    -      rewrite !mem_spec /In.
    -      setoid_replace x0 with y ⇒ //.
    -    }
    -    rewrite /inter rev_filter_aux_spec mem_spec /In InA_nil.
    -    tauto.
    -  Qed.
    - -
    -  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    -  Proof. done. Qed.
    - -
    -  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
    -  Proof.
    -    intros s x.
    -    rewrite /elements /In //.
    -  Qed.
    - -
    -  Lemma diff_spec : ∀ s x, In x (diff s ) ↔ In x s ∧ ¬In x .
    -  Proof.
    -    intros s x.
    -    rewrite /diff fold_spec -(elements_spec1 ).
    -    move : s.
    -    induction (elements ) as [| y ys IH] ⇒ s. {
    -      rewrite InA_nil /=; tauto.
    -    } {
    -      rewrite /= IH InA_cons /flip remove_spec.
    -      tauto.
    -    }
    -  Qed.
    - -
    -  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    -  Proof. rewrite /cardinal //. Qed.
    - -
    -  Lemma for_all_spec : ∀ s f, compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Proof.
    -    intros s f H_compat.
    -    rewrite /For_all.
    -    induction s as [| x xs IH]. {
    -      rewrite /= /In.
    -      split ⇒ //.
    -      move ⇒ _ x /InA_nil //.
    -    } {
    -      rewrite /=.
    -      case_eq (f x) ⇒ H_fx. {
    -        rewrite IH.
    -        split. {
    -          move ⇒ H /InA_cons []. {
    -            move ⇒ → //.
    -          } {
    -            apply H.
    -          }
    -        } {
    -          move ⇒ H H_in.
    -          apply H.
    -          apply InA_cons.
    -          by right.
    -        }
    -      } {
    -        split ⇒ //.
    -        move ⇒ H.
    -        suff : f x = true. {
    -          rewrite H_fx //.
    -        }
    -        apply H.
    -        apply InA_cons_hd.
    -        done.
    -      }
    -    }
    -  Qed.
    - -
    -  Lemma exists_spec : ∀ s f, compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Proof.
    -    intros s f H_compat.
    -    rewrite /Exists.
    -    induction s as [| x xs IH]. {
    -      rewrite /= /In.
    -      split ⇒ //.
    -      move ⇒ [x] [] /InA_nil //.
    -    } {
    -      rewrite /=.
    -      case_eq (f x) ⇒ H_fx. {
    -        split ⇒ // _.
    -        âˆƒ x.
    -        split ⇒ //.
    -        apply InA_cons_hd.
    -        done.
    -      } {
    -        rewrite IH.
    -        split. {
    -          move ⇒ [] [H_in] H_fx´.
    -          âˆƒ .
    -          split ⇒ //.
    -          apply InA_cons.
    -          by right.
    -        } {
    -          move ⇒ [] [] /InA_cons []. {
    -            move ⇒ →.
    -            rewrite H_fx //.
    -          } {
    -            by ∃ .
    -          }
    -        }
    -      }
    -    }
    -  Qed.
    - +  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
    +
    -  Lemma partition_aux_spec : ∀ a1 a2 s f,
    -    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
    -  Proof.
    -    move ⇒ a1 a2 s f.
    -    move : a1 a2.
    -    induction s as [| x xs IH]. {
    -      rewrite /partition_aux /rev_filter_aux //.
    -    } {
    -      intros a1 a2.
    -      rewrite /= IH.
    -      case (f x) ⇒ //.
    - +  Lemma subset_spec : ∀ s s', subset s s' = true ↔ s[<=]s'.
    + +
    +  Lemma equal_spec : ∀ s s', equal s s' = true ↔ s[=]s'.
    +
    -    }
    -  Qed.
    +  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.

    -  Lemma partition_spec1 : ∀ s f, compatb f →
    -    fst (partition f s) [=] filter f s.
    -  Proof.
    -    move ⇒ s f _.
    -    rewrite /partition partition_aux_spec /fst /filter /rev_filter //.
    -  Qed.
    +  Lemma empty_spec : Empty empty.
    + +
    +  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
    + +
    +  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
    + +
    +  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
    + +
    +  Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv).
    +  Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv).
    +  Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv).

    -  Lemma partition_spec2 : ∀ s f, compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    -  Proof.
    -    move ⇒ s f _.
    -    rewrite /partition partition_aux_spec /snd /filter /rev_filter //.
    -  Qed.
    +  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    +    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
    + +
    +  Lemma filter_spec : ∀ s x f, compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    + +
    +  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    + +
    +  Lemma union_spec : ∀ s s' x, In x (union s s') ↔ In x s ∨ In x s'.

    -  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
    -  Proof.
    -   move ⇒ [] // y x [->].
    -   rewrite /In.
    -   apply InA_cons_hd.
    -   apply Equivalence_Reflexive.
    -  Qed.
    +  Lemma inter_spec : ∀ s s' x, In x (inter s s') ↔ In x s ∧ In x s'.

    -  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    -  Proof. move ⇒ [] // _ a. rewrite /In InA_nil //. Qed.
    +  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
    + +
    +  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
    +
    +  Lemma diff_spec : ∀ s s' x, In x (diff s s') ↔ In x s ∧ ¬In x s'.
    + +
    +  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    + +
    +  Lemma for_all_spec : ∀ s f, compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    + +
    +  Lemma exists_spec : ∀ s f, compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    + +
    +  Lemma partition_aux_spec : ∀ a1 a2 s f,
    +    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
    + +
    +  Lemma partition_spec1 : ∀ s f, compatb f →
    +    fst (partition f s) [=] filter f s.
    + +
    +  Lemma partition_spec2 : ∀ s f, compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    + +
    +  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
    + +
    +  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    +
      Lemma elements_dist_spec_full :
        âˆ€ s,
    -      Sorted E.lt (elements_dist s) ∧
    -      NoDupA E.eq (elements_dist s) ∧
    -      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).
    -  Proof.
    -    move ⇒ s.
    -    rewrite /elements_dist /elements.
    -    move : (RDFS.remove_dups_by_sortingA_spec s).
    -    simpl.
    -    firstorder.
    -  Qed.
    +      Sorted E.lt (elements_dist s) ∧
    +      NoDupA E.eq (elements_dist s) ∧
    +      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    -  Proof. intros; apply elements_dist_spec_full. Qed.
    - +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
    +
    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    -  Proof. intros; apply elements_dist_spec_full. Qed.
    - +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +
    End Make.
    diff --git a/html/MSetsExtra.MSetWithDups.html b/html/MSetsExtra.MSetWithDups.html index 95c6aeb..f4d3ac0 100644 --- a/html/MSetsExtra.MSetWithDups.html +++ b/html/MSetsExtra.MSetWithDups.html @@ -24,14 +24,14 @@

    Library MSetsExtra.MSetWithDups

    -

    Signature for weak sets which may contain duplicates

    +

    Signature for weak sets which may contain duplicates

    - The interface WSetsOn demands that elements returns a list + The interface WSetsOn demands that elements returns a list without duplicates and that the fold function iterates over this - result. Another potential problem is that the function cardinal + result. Another potential problem is that the function cardinal is supposed to return the length of the elements list.
    @@ -50,36 +50,36 @@

    Library MSetsExtra.MSetWithDups

    In order to allow efficient weak set implementations that use duplicates internally, we provide new module types in this file. There is WSetsOnWithDups, which is a proper subset of - WSetsOn. It just removes the problematic properties of elements - and cardinal. + WSetsOn. It just removes the problematic properties of elements + and cardinal.
    Since one is of course interested in specifying the cardinality and in computing a list of elements without duplicates, there is also an extension WSetsOnWithDupsExtra of WSetsOnWithDups. This - extension introduces a new operation elements_dist, which is a - version of elements without duplicates. This allows to - specify cardinality with respect to elements_dist. + extension introduces a new operation elements_dist, which is a + version of elements without duplicates. This allows to + specify cardinality with respect to elements_dist.

    -Require Import Coq.MSets.MSetInterface.
    -Require Import ssreflect.
    +Require Import Coq.MSets.MSetInterface.
    +Require Import mathcomp.ssreflect.ssreflect.

    -

    WSetsOnWithDups

    +

    WSetsOnWithDups

    The module type WSetOnWithDups is a proper subset of WSetsOn; - the problematic parameters cardinal_spec and elements_spec2w + the problematic parameters cardinal_spec and elements_spec2w are missing.
    @@ -91,68 +91,68 @@

    Library MSetsExtra.MSetWithDups

    -Module Type WSetsOnWithDups (E : DecidableType).
    -  Include WOps E.
    +Module Type WSetsOnWithDups (E : DecidableType).
    +  Include WOps E.

    -  Parameter In : elt → t → Prop.
    -  Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +  Parameter In : elt → t → Prop.
    +  Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.

    -  Definition Equal s := ∀ a : elt, In a s ↔ In a .
    -  Definition Subset s := ∀ a : elt, In a s → In a .
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

      Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
      Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Include IsEq.
    +  Definition eq : t → t → Prop := Equal.
    +  Include IsEq.
    -eq is obviously an equivalence, for subtyping only +eq is obviously an equivalence, for subtyping only
    -  Include HasEqDec.
    +  Include HasEqDec.

      Section Spec.
    -  Variable s : t.
    +  Variable s s': t.
      Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).

    -  Parameter mem_spec : mem x s = true ↔ In x s.
    -  Parameter equal_spec : equal s = true ↔ s[=].
    -  Parameter subset_spec : subset s = true ↔ s[<=].
    +  Parameter mem_spec : mem x s = true ↔ In x s.
    +  Parameter equal_spec : equal s s' = true ↔ s[=]s'.
    +  Parameter subset_spec : subset s s' = true ↔ s[<=]s'.
      Parameter empty_spec : Empty empty.
    -  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    -  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    -  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    -  Parameter union_spec : In x (union s ) ↔ In x s ∨ In x .
    -  Parameter inter_spec : In x (inter s ) ↔ In x s ∧ In x .
    -  Parameter diff_spec : In x (diff s ) ↔ In x s ∧ ¬In x .
    -  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    -  Parameter filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Parameter for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Parameter exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Parameter partition_spec1 : compatb f →
    -    fst (partition f s) [=] filter f s.
    -  Parameter partition_spec2 : compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    -  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    -  Parameter choose_spec1 : choose s = Some x → In x s.
    -  Parameter choose_spec2 : choose s = None → Empty s.
    +  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    +  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    +  Parameter union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +  Parameter inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +  Parameter diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
    +  Parameter filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Parameter for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Parameter exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Parameter partition_spec1 : compatb f →
    +    fst (partition f s) [=] filter f s.
    +  Parameter partition_spec2 : compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    +  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +  Parameter choose_spec1 : choose s = Some x → In x s.
    +  Parameter choose_spec2 : choose s = None → Empty s.

      End Spec.
    @@ -164,17 +164,17 @@

    Library MSetsExtra.MSetWithDups

    -

    WSetsOnWithDupsExtra

    +

    WSetsOnWithDupsExtra

    - WSetsOnWithDupsExtra introduces elements_dist in order to + WSetsOnWithDupsExtra introduces elements_dist in order to specify cardinality and in order to get an operation similar to - the original behavior of elements. + the original behavior of elements.
    -Module Type WSetsOnWithDupsExtra (E : DecidableType).
    +Module Type WSetsOnWithDupsExtra (E : DecidableType).
      Include WSetsOnWithDups E.

    @@ -184,30 +184,30 @@

    Library MSetsExtra.MSetWithDups

    An operation for getting an elements list without duplicates
    -  Parameter elements_dist : t → list elt.
    +  Parameter elements_dist : t → list elt.

    -  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                              InA E.eq x (elements s).
    +  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                              InA E.eq x (elements s).

    -  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).

    -Cardinality can then be specified with respect to elements_dist. +Cardinality can then be specified with respect to elements_dist.
    -  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    +  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    End WSetsOnWithDupsExtra.

    -

    WSetOn to WSetsOnWithDupsExtra

    +

    WSetOn to WSetsOnWithDupsExtra

    @@ -219,7 +219,7 @@

    Library MSetsExtra.MSetWithDups


    -Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
    +Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
      WSetsOnWithDupsExtra E.

    @@ -229,14 +229,12 @@

    Library MSetsExtra.MSetWithDups

      Definition elements_dist := W.elements.

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    -  Proof. done. Qed.
    - +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
    +
    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    -  Proof. apply elements_spec2w. Qed.
    - +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +
    End WSetsOn_TO_WSetsOnWithDupsExtra.
    diff --git a/html/index.html b/html/index.html index 8080f7b..51c254e 100644 --- a/html/index.html +++ b/html/index.html @@ -47,7 +47,7 @@ Z _ other -(658 entries) +(596 entries) Notation Index @@ -111,7 +111,7 @@ Z _ other -(58 entries) +(43 entries) Variable Index @@ -175,7 +175,7 @@ Z _ other -(5 entries) +(4 entries) Lemma Index @@ -207,7 +207,7 @@ Z _ other -(273 entries) +(257 entries) Axiom Index @@ -239,7 +239,7 @@ Z _ other -(34 entries) +(32 entries) Constructor Index @@ -303,7 +303,7 @@ Z _ other -(11 entries) +(7 entries) Inductive Index @@ -463,7 +463,7 @@ Z _ other -(222 entries) +(199 entries) Record Index @@ -495,7 +495,7 @@ Z _ other -(4 entries) +(3 entries)
    @@ -532,118 +532,63 @@

    Global Index

    ElementEncode.encode_lt [axiom, in MSetsExtra.MSetIntervals]
    ElementEncode.encode_eq [axiom, in MSetsExtra.MSetIntervals]


    F

    -foldWithAbortGtLtSpecPred [definition, in MSetsExtra.MSetIterator]
    foldWithAbortGtLtSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtLtType [definition, in MSetsExtra.MSetIterator]
    foldWithAbortGtLtType [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtSpecPred [definition, in MSetsExtra.MSetIterator]
    foldWithAbortGtSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtType [definition, in MSetsExtra.MSetIterator]
    foldWithAbortGtType [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortPrecomputeSpecPred [definition, in MSetsExtra.MSetIterator]
    foldWithAbortPrecomputeSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortPrecomputeType [definition, in MSetsExtra.MSetIterator]
    foldWithAbortPrecomputeType [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortSpecPred [definition, in MSetsExtra.MSetIterator]
    foldWithAbortSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortType [definition, in MSetsExtra.MSetIterator]
    foldWithAbortType [definition, in MSetsExtra.MSetFoldWithAbort]


    H

    -HasFoldWithAbort [module, in MSetsExtra.MSetIterator]
    HasFoldWithAbort [module, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps [module, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps [module, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.choose_with_abort_spec [lemma, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.choose_with_abort [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.choose_with_abort_spec [lemma, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.choose_with_abort [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.exists_with_abort_spec [lemma, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.exists_with_abort [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.exists_with_abort_spec [lemma, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.exists_with_abort [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.filter_with_abort_spec [lemma, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.filter_with_abort [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.filter_with_abort_spec [lemma, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.filter_with_abort [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbort [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbort [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGt [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGt [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLt [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLt [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLtSpec [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLtSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLtSpec_Equal [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLtSpec_Equal [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtSpec [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtSpec_Equal [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtSpec_Equal [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortPrecomputeSpec_Equal [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortPrecomputeSpec_Equal [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpec [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.FoldWithAbortSpecArg [record, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.FoldWithAbortSpecArg [record, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpecArgsForPred [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpecArgsForPred [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpec_Equal [lemma, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpec_Equal [lemma, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.forall_with_abort_spec [lemma, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.forall_with_abort [definition, in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.forall_with_abort_spec [lemma, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.forall_with_abort [definition, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.fwasa_P' [projection, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_gt [projection, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_lt [projection, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_pre [projection, in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_P' [projection, in MSetsExtra.MSetFoldWithAbort]
    +HasFoldWithAbortOps.fwasa_P' [projection, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_gt [projection, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_lt [projection, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_pre [projection, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbort.foldWithAbortPrecompute [axiom, in MSetsExtra.MSetIterator]
    HasFoldWithAbort.foldWithAbortPrecompute [axiom, in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbort.foldWithAbortPrecomputeSpec [axiom, in MSetsExtra.MSetIterator]
    HasFoldWithAbort.foldWithAbortPrecomputeSpec [axiom, in MSetsExtra.MSetFoldWithAbort]


    M

    Make [module, in MSetsExtra.MSetListWithDups]
    -MakeAVLSetsWithFoldA [module, in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeAVLSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeAVLSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -MakeGenTreeFoldA [module, in MSetsExtra.MSetIterator]
    MakeGenTreeFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeGenTreeFoldA.foldWithAbort_RawSpec [lemma, in MSetsExtra.MSetIterator]
    -MakeGenTreeFoldA.foldWithAbort_Raw [definition, in MSetsExtra.MSetIterator]
    MakeGenTreeFoldA.foldWithAbort_RawSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    MakeGenTreeFoldA.foldWithAbort_Raw [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA [module, in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortRaw [definition, in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortRaw [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA [module, in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA [module, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.E [module, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortPrecomputeSpec [lemma, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortRaw [definition, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortRaw [definition, in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.Raw [module, in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.Raw [module, in MSetsExtra.MSetFoldWithAbort]
    Make.add_spec [lemma, in MSetsExtra.MSetListWithDups]
    Make.cardinal_spec [lemma, in MSetsExtra.MSetListWithDups]
    @@ -760,7 +705,7 @@

    Global Index

    MSetIntervals.Spec [section, in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.f [variable, in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.s [variable, in MSetsExtra.MSetIntervals]
    -MSetIntervals.Spec.s' [variable, in MSetsExtra.MSetIntervals]
    +MSetIntervals.Spec.s' [variable, in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.x [variable, in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.y [variable, in MSetsExtra.MSetIntervals]
    MSetIntervals.subset [definition, in MSetsExtra.MSetIntervals]
    @@ -771,7 +716,6 @@

    Global Index

    MSetIntervals.t_ [record, in MSetsExtra.MSetIntervals]
    MSetIntervals.union [definition, in MSetsExtra.MSetIntervals]
    MSetIntervals.union_spec [lemma, in MSetsExtra.MSetIntervals]
    -MSetIterator [library]
    MSetListWithDups [library]
    MSetWithDups [library]


    N

    @@ -928,7 +872,7 @@

    Global Index

    Raw.elements_nil [lemma, in MSetsExtra.MSetIntervals]
    Raw.Empty [definition, in MSetsExtra.MSetIntervals]
    Raw.empty_spec [lemma, in MSetsExtra.MSetIntervals]
    -Raw.empty_spec' [lemma, in MSetsExtra.MSetIntervals]
    +Raw.empty_spec' [lemma, in MSetsExtra.MSetIntervals]
    Raw.empty_ok [instance, in MSetsExtra.MSetIntervals]
    Raw.encode_decode_eq [lemma, in MSetsExtra.MSetIntervals]
    Raw.Equal [definition, in MSetsExtra.MSetIntervals]
    @@ -1104,9 +1048,7 @@

    Global Index

    rev_map [definition, in MSetsExtra.MSetIntervals]
    rev_map_aux [definition, in MSetsExtra.MSetIntervals]


    S

    -SetsWithFoldA [module, in MSetsExtra.MSetIterator]
    SetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -SetsWithFoldA.E [module, in MSetsExtra.MSetIterator]
    SetsWithFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]


    W

    WSetsOnWithDups [module, in MSetsExtra.MSetWithDups]
    @@ -1144,7 +1086,7 @@

    Global Index

    WSetsOnWithDups.Spec [section, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.f [variable, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.s [variable, in MSetsExtra.MSetWithDups]
    -WSetsOnWithDups.Spec.s' [variable, in MSetsExtra.MSetWithDups]
    +WSetsOnWithDups.Spec.s' [variable, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.x [variable, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.y [variable, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Subset [definition, in MSetsExtra.MSetWithDups]
    @@ -1156,13 +1098,9 @@

    Global Index

    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec1 [lemma, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist [definition, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra [module, in MSetsExtra.MSetWithDups]
    -WSetsWithDupsFoldA [module, in MSetsExtra.MSetIterator]
    WSetsWithDupsFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithDupsFoldA.E [module, in MSetsExtra.MSetIterator]
    WSetsWithDupsFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithFoldA [module, in MSetsExtra.MSetIterator]
    WSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithFoldA.E [module, in MSetsExtra.MSetIterator]
    WSetsWithFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]


    Z

    Z_to_N_minus_neq_0 [lemma, in MSetsExtra.MSetIntervals]
    @@ -1191,25 +1129,16 @@

    Module Index

    ElementEncodeZ.E [in MSetsExtra.MSetIntervals]
    ElementEncode.E [in MSetsExtra.MSetIntervals]


    H

    -HasFoldWithAbort [in MSetsExtra.MSetIterator]
    HasFoldWithAbort [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps [in MSetsExtra.MSetFoldWithAbort]


    M

    Make [in MSetsExtra.MSetListWithDups]
    -MakeAVLSetsWithFoldA [in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -MakeGenTreeFoldA [in MSetsExtra.MSetIterator]
    MakeGenTreeFoldA [in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA [in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA [in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.E [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.E [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.Raw [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.Raw [in MSetsExtra.MSetFoldWithAbort]
    MSetIntervals [in MSetsExtra.MSetIntervals]
    MSetIntervalsN [in MSetsExtra.MSetIntervals]
    @@ -1231,34 +1160,28 @@

    Module Index

    RemoveDupsFromSorted.XSort [in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool [in MSetsExtra.MSetListWithDups]


    S

    -SetsWithFoldA [in MSetsExtra.MSetIterator]
    SetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -SetsWithFoldA.E [in MSetsExtra.MSetIterator]
    SetsWithFoldA.E [in MSetsExtra.MSetFoldWithAbort]


    W

    WSetsOnWithDups [in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra [in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra [in MSetsExtra.MSetWithDups]
    -WSetsWithDupsFoldA [in MSetsExtra.MSetIterator]
    WSetsWithDupsFoldA [in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithDupsFoldA.E [in MSetsExtra.MSetIterator]
    WSetsWithDupsFoldA.E [in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithFoldA [in MSetsExtra.MSetIterator]
    WSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    -WSetsWithFoldA.E [in MSetsExtra.MSetIterator]
    WSetsWithFoldA.E [in MSetsExtra.MSetFoldWithAbort]



    Variable Index

    M

    MSetIntervals.Spec.f [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.s [in MSetsExtra.MSetIntervals]
    -MSetIntervals.Spec.s' [in MSetsExtra.MSetIntervals]
    +MSetIntervals.Spec.s' [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.x [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.y [in MSetsExtra.MSetIntervals]


    W

    WSetsOnWithDups.Spec.f [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.s [in MSetsExtra.MSetWithDups]
    -WSetsOnWithDups.Spec.s' [in MSetsExtra.MSetWithDups]
    +WSetsOnWithDups.Spec.s' [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.x [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.y [in MSetsExtra.MSetWithDups]



    @@ -1266,7 +1189,6 @@

    Library Index

    M

    MSetFoldWithAbort
    MSetIntervals
    -MSetIterator
    MSetListWithDups
    MSetWithDups



    @@ -1284,38 +1206,22 @@

    Lemma Index

    ElementEncodeZ.encode_lt [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.encode_eq [in MSetsExtra.MSetIntervals]


    H

    -HasFoldWithAbortOps.choose_with_abort_spec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.choose_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.exists_with_abort_spec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.exists_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.filter_with_abort_spec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.filter_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLtSpec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLtSpec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLtSpec_Equal [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLtSpec_Equal [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtSpec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtSpec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtSpec_Equal [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtSpec_Equal [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortPrecomputeSpec_Equal [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortPrecomputeSpec_Equal [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpec [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpec_Equal [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpec_Equal [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.forall_with_abort_spec [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.forall_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]


    M

    -MakeAVLSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    -MakeGenTreeFoldA.foldWithAbort_RawSpec [in MSetsExtra.MSetIterator]
    MakeGenTreeFoldA.foldWithAbort_RawSpec [in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    Make.add_spec [in MSetsExtra.MSetListWithDups]
    Make.cardinal_spec [in MSetsExtra.MSetListWithDups]
    @@ -1421,7 +1327,7 @@

    Lemma Index

    Raw.elements_cons [in MSetsExtra.MSetIntervals]
    Raw.elements_nil [in MSetsExtra.MSetIntervals]
    Raw.empty_spec [in MSetsExtra.MSetIntervals]
    -Raw.empty_spec' [in MSetsExtra.MSetIntervals]
    +Raw.empty_spec' [in MSetsExtra.MSetIntervals]
    Raw.encode_decode_eq [in MSetsExtra.MSetIntervals]
    Raw.equal_spec [in MSetsExtra.MSetIntervals]
    Raw.equal_elementsZ [in MSetsExtra.MSetIntervals]
    @@ -1562,9 +1468,7 @@

    Axiom Index

    ElementEncode.encode_lt [in MSetsExtra.MSetIntervals]
    ElementEncode.encode_eq [in MSetsExtra.MSetIntervals]


    H

    -HasFoldWithAbort.foldWithAbortPrecompute [in MSetsExtra.MSetIterator]
    HasFoldWithAbort.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbort.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetIterator]
    HasFoldWithAbort.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]


    W

    WSetsOnWithDupsExtra.cardinal_spec [in MSetsExtra.MSetWithDups]
    @@ -1611,11 +1515,7 @@

    Constructor Index




    Projection Index

    H

    -HasFoldWithAbortOps.fwasa_P' [in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_gt [in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_lt [in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_f_pre [in MSetsExtra.MSetIterator]
    -HasFoldWithAbortOps.fwasa_P' [in MSetsExtra.MSetFoldWithAbort]
    +HasFoldWithAbortOps.fwasa_P' [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_gt [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_lt [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_pre [in MSetsExtra.MSetFoldWithAbort]
    @@ -1677,53 +1577,30 @@

    Definition Index

    ElementEncodeZ.decode [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.encode [in MSetsExtra.MSetIntervals]


    F

    -foldWithAbortGtLtSpecPred [in MSetsExtra.MSetIterator]
    foldWithAbortGtLtSpecPred [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtLtType [in MSetsExtra.MSetIterator]
    foldWithAbortGtLtType [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtSpecPred [in MSetsExtra.MSetIterator]
    foldWithAbortGtSpecPred [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortGtType [in MSetsExtra.MSetIterator]
    foldWithAbortGtType [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortPrecomputeSpecPred [in MSetsExtra.MSetIterator]
    foldWithAbortPrecomputeSpecPred [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortPrecomputeType [in MSetsExtra.MSetIterator]
    foldWithAbortPrecomputeType [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortSpecPred [in MSetsExtra.MSetIterator]
    foldWithAbortSpecPred [in MSetsExtra.MSetFoldWithAbort]
    -foldWithAbortType [in MSetsExtra.MSetIterator]
    foldWithAbortType [in MSetsExtra.MSetFoldWithAbort]


    H

    -HasFoldWithAbortOps.choose_with_abort [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.choose_with_abort [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.exists_with_abort [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.exists_with_abort [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.filter_with_abort [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.filter_with_abort [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbort [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbort [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGt [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGt [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortGtLt [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortGtLt [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.foldWithAbortSpecArgsForPred [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.foldWithAbortSpecArgsForPred [in MSetsExtra.MSetFoldWithAbort]
    -HasFoldWithAbortOps.forall_with_abort [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.forall_with_abort [in MSetsExtra.MSetFoldWithAbort]


    M

    -MakeAVLSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetIterator]
    MakeAVLSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    -MakeGenTreeFoldA.foldWithAbort_Raw [in MSetsExtra.MSetIterator]
    MakeGenTreeFoldA.foldWithAbort_Raw [in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    -MakeListSetsWithFoldA.foldWithAbortRaw [in MSetsExtra.MSetIterator]
    MakeListSetsWithFoldA.foldWithAbortRaw [in MSetsExtra.MSetFoldWithAbort]
    -MakeRBTSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetIterator]
    MakeRBTSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    -MakeWeakListSetsWithFoldA.foldWithAbortRaw [in MSetsExtra.MSetIterator]
    MakeWeakListSetsWithFoldA.foldWithAbortRaw [in MSetsExtra.MSetFoldWithAbort]
    Make.Empty [in MSetsExtra.MSetListWithDups]
    Make.eq [in MSetsExtra.MSetListWithDups]
    @@ -1901,7 +1778,6 @@

    Definition Index




    Record Index

    H

    -HasFoldWithAbortOps.FoldWithAbortSpecArg [in MSetsExtra.MSetIterator]
    HasFoldWithAbortOps.FoldWithAbortSpecArg [in MSetsExtra.MSetFoldWithAbort]


    M

    MSetIntervals.t_ [in MSetsExtra.MSetIntervals]
    @@ -1938,7 +1814,7 @@

    Record Index

    Z _ other -(658 entries) +(596 entries) Notation Index @@ -2002,7 +1878,7 @@

    Record Index

    Z _ other -(58 entries) +(43 entries) Variable Index @@ -2066,7 +1942,7 @@

    Record Index

    Z _ other -(5 entries) +(4 entries) Lemma Index @@ -2098,7 +1974,7 @@

    Record Index

    Z _ other -(273 entries) +(257 entries) Axiom Index @@ -2130,7 +2006,7 @@

    Record Index

    Z _ other -(34 entries) +(32 entries) Constructor Index @@ -2194,7 +2070,7 @@

    Record Index

    Z _ other -(11 entries) +(7 entries) Inductive Index @@ -2354,7 +2230,7 @@

    Record Index

    Z _ other -(222 entries) +(199 entries) Record Index @@ -2386,7 +2262,7 @@

    Record Index

    Z _ other -(4 entries) +(3 entries)
    This page has been generated by coqdoc diff --git a/html/toc.html b/html/toc.html index d253a00..cb185ba 100644 --- a/html/toc.html +++ b/html/toc.html @@ -17,98 +17,61 @@
    -

    Library MSetsExtra.MSetWithDups

    - -

    Library MSetsExtra.MSetListWithDups

    - -

    Library MSetsExtra.MSetIterator

    +

    Library MSetsExtra.MSetFoldWithAbort

    +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_abort
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -110,8 +110,8 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortSpecPred {elt t : Type}
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbort : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    @@ -131,7 +131,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -139,7 +139,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_abort : elt → A → bool)
    +      (f_abort : elt → A → bool)
          
    @@ -154,7 +154,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -168,7 +168,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →
          
        
    @@ -176,7 +176,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    @@ -184,7 +184,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    @@ -193,11 +193,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_abort e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → e2 ≠ e1 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_abort e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → e2 ≠ e1 →
    +                        P st (f e2 st'))) →

        
    @@ -205,7 +205,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -248,25 +248,25 @@

    Library MSetsExtra.MSetFoldWithAbort

    +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -276,9 +276,9 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortGtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortGt : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    @@ -298,7 +298,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -306,7 +306,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_gt : elt → A → bool)
    +      (f_gt : elt → A → bool)
          
    @@ -321,7 +321,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -336,7 +336,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -344,7 +344,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    @@ -352,7 +352,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    @@ -361,11 +361,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -373,7 +373,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -424,31 +424,31 @@

    Library MSetsExtra.MSetFoldWithAbort

    +    (elt → A → bool) →
    f_lt
    +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -458,9 +458,9 @@

    Library MSetsExtra.MSetFoldWithAbort


    Definition foldWithAbortGtLtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortGtLt : ∀ {A : Type}, foldWithAbortGtLtType elt t A) : Prop :=

        âˆ€
    @@ -480,7 +480,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -488,7 +488,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → A → bool)
    +      (f_lt f_gt : elt → A → bool)
          
    @@ -503,7 +503,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -518,7 +518,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -526,7 +526,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    @@ -534,7 +534,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    @@ -543,11 +543,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 st'))) →

        
    @@ -556,11 +556,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -568,7 +568,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -625,37 +625,37 @@

    Library MSetsExtra.MSetFoldWithAbort

    :=

    -    (elt → B) →
    +    (elt → B) →
    f_precompute
    +    (elt → B → A → bool) →
    f_lt
    +    (elt → B → A → A) →
    f
    +    (elt → B → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value @@ -672,9 +672,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    Definition foldWithAbortPrecomputeSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
        (foldWithAbortPrecompute : ∀ {A B : Type}, foldWithAbortPrecomputeType elt t A B) : Prop :=

        âˆ€
    @@ -694,7 +694,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_precompute : elt → B)
    +      (f_precompute : elt → B)
          
    @@ -702,7 +702,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → B → A → A) (f' : elt → A → A)
    +      (f : elt → B → A → A) (f' : elt → A → A)
          
    @@ -710,7 +710,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → B → A → bool)
    +      (f_lt f_gt : elt → B → A → bool)
          
    @@ -725,7 +725,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    equivalence relation on results @@ -740,7 +740,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -748,7 +748,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e (f_precompute e) st) (f e (f_precompute e) st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e (f_precompute e) st) (f e (f_precompute e) st')) →

        
    @@ -756,7 +756,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e (f_precompute e) st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e (f_precompute e) st) (f' e st))) →

        
    @@ -765,11 +765,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 (f_precompute e1) st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 (f_precompute e2) st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    @@ -778,11 +778,11 @@

    Library MSetsExtra.MSetFoldWithAbort

    leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 (f_precompute e1) st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 (f_precompute e2) st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    @@ -790,7 +790,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -815,15 +815,15 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).
    +Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).

      Parameter foldWithAbortPrecompute : ∀ {A B : Type},
    -    foldWithAbortPrecomputeType elt t A B.
    +    foldWithAbortPrecomputeType elt t A B.

      Parameter foldWithAbortPrecomputeSpec :
    -     foldWithAbortPrecomputeSpecPred E.lt In (@fold) (@foldWithAbortPrecompute).
    +     foldWithAbortPrecomputeSpecPred E.lt In (@fold) (@foldWithAbortPrecompute).

    End HasFoldWithAbort.
    @@ -844,7 +844,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
    +Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
                               (FT : HasFoldWithAbort E C).

    @@ -861,31 +861,60 @@

    Library MSetsExtra.MSetFoldWithAbort


    -  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
    +  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

      Lemma foldWithAbortGtLtSpec :
    -     foldWithAbortGtLtSpecPred E.lt In (@fold) (@foldWithAbortGtLt).
    +     foldWithAbortGtLtSpecPred E.lt In (@fold) (@foldWithAbortGtLt).
    +  Proof.
    +    rewrite /foldWithAbortGtLt /foldWithAbortGtLtSpecPred.
    +    intros A i i' f f' f_lt f_gt s P.
    +    move ⇒ H_f_compat H_ff' H_lt H_gt H_ii'.
    +    apply foldWithAbortPrecomputeSpec ⇒ //.
    +  Qed.

    -  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
    +  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

      Lemma foldWithAbortGtSpec :
    -     foldWithAbortGtSpecPred E.lt In (@fold) (@foldWithAbortGt).
    +     foldWithAbortGtSpecPred E.lt In (@fold) (@foldWithAbortGt).
    +  Proof.
    +    rewrite /foldWithAbortGt /foldWithAbortGtSpecPred.
    +    intros A i i' f f' f_gt s P.
    +    move ⇒ H_f_compat H_ff' H_gt H_ii'.
    +    apply foldWithAbortPrecomputeSpec ⇒ //.
    +  Qed.

    -  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
    +  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
          (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_abort e st).

      Lemma foldWithAbortSpec :
    -     foldWithAbortSpecPred In (@fold) (@foldWithAbort).
    +     foldWithAbortSpecPred In (@fold) (@foldWithAbort).
    +  Proof.
    +    rewrite /foldWithAbort /foldWithAbortGtSpecPred.
    +    intros A i i' f f' f_abort s P.
    +    move ⇒ H_equiv_P H_f_compat H_ff' H_abort H_ii'.
    +    have H_lt_neq: (∀ e1 e2, E.lt e1 e2 → e1 ≠ e2). {
    +      move ⇒ e1 e2 H_lt H_e12_eq.
    +      rewrite H_e12_eq in H_lt.
    +      have : ( Irreflexive E.lt) by apply StrictOrder_Irreflexive.
    +      rewrite /Irreflexive /Reflexive /complement ⇒ H.
    +      eapply H, H_lt.
    +    }
    +    apply foldWithAbortPrecomputeSpec ⇒ //; (
    +      move ⇒ e1 st H_in_e1 H_abort_e1 st' e2 H_P H_in_e2 /H_lt_neq H_lt;
    +      apply (H_abort e1 st H_in_e1 H_abort_e1 st' e2 H_P H_in_e2);
    +      by auto
    +    ).
    +  Qed.

    @@ -899,73 +928,137 @@

    Library MSetsExtra.MSetFoldWithAbort

    of an arbitrary equivalence relation on results.
    -  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    -      (f : elt → B → A → A) (f' : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),
    +  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    +      (f : elt → B → A → A) (f' : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),

    -      (∀ e st, In e s → (f e (f_pre e) st = f' e st)) →
    +      (∀ e st, In e s → (f e (f_pre e) st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 (f_pre e2) st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 (f_pre e2) st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 (f_pre e2) st = st))) →
    -
    -      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold f' s i).
    - +      (∀ e1 st,
    +          In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 (f_pre e2) st = st))) →
    +
    +      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold f' s i).
    +  Proof.
    +    intros A B i f_pre f f' f_lt f_gt s H_f' H_lt H_gt.
    + +
    +     eapply (foldWithAbortPrecomputeSpec A B i i f_pre f f'); eauto. {
    +       apply eq_equivalence.
    +     } {
    +       move ⇒ st1 st2 e H_in → //.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_smaller st' e2 <-.
    +       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    +       intuition.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_greater st' e2 <-.
    +       move : (H_gt e1 st H_e1_in H_do_greater e2).
    +       intuition.
    +     }
    +  Qed.
    +
      Lemma foldWithAbortGtLtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    -
    -      (foldWithAbortGtLt f_lt f f_gt s i) = (fold f' s i).
    - +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →
    +
    +      (foldWithAbortGtLt f_lt f f_gt s i) = (fold f' s i).
    +  Proof.
    +    intros A i f f' f_lt f_gt s H_f' H_lt H_gt.
    + +
    +     eapply (foldWithAbortGtLtSpec A i i f f'); eauto. {
    +       apply eq_equivalence.
    +     } {
    +       move ⇒ st1 st2 e H_in → //.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_smaller st' e2 <-.
    +       move : (H_lt e1 st H_e1_in H_do_smaller e2).
    +       intuition.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_greater st' e2 <-.
    +       move : (H_gt e1 st H_e1_in H_do_greater e2).
    +       intuition.
    +     }
    +  Qed.
    +
      Lemma foldWithAbortGtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_gt : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbortGt f f_gt s i) = (fold f' s i).
    - +      (foldWithAbortGt f f_gt s i) = (fold f' s i).
    +  Proof.
    +    intros A i f f' f_gt s H_f' H_gt.
    + +
    +     eapply (foldWithAbortGtSpec A i i f f'); eauto. {
    +       apply eq_equivalence.
    +     } {
    +       move ⇒ st1 st2 e H_in → //.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_greater st' e2 <-.
    +       move : (H_gt e1 st H_e1_in H_do_greater e2).
    +       intuition.
    +     }
    +  Qed.
    +
      Lemma foldWithAbortSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_abort : elt → A → bool) (s : t),
    +      (f : elt → A → A) (f' : elt → A → A) (f_abort : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_abort e1 st = true →
    -          (∀ e2, In e2 s → e1 ≠ e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_abort e1 st = true →
    +          (∀ e2, In e2 s → e1 ≠ e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbort f f_abort s i) = (fold f' s i).
    - +      (foldWithAbort f f_abort s i) = (fold f' s i).
    +  Proof.
    +     intros A i f f' f_abort s H_f' H_abort.
    + +
    +     eapply (foldWithAbortSpec A i i f f'); eauto. {
    +       apply eq_equivalence.
    +     } {
    +       move ⇒ st1 st2 e H_in → //.
    +     } {
    +       move ⇒ e1 st H_e1_in H_do_abort st' e2 <-.
    +       move : (H_abort e1 st H_e1_in H_do_abort e2).
    +       intuition.
    +     }
    +  Qed.
    +
    @@ -989,25 +1082,25 @@

    Library MSetsExtra.MSetFoldWithAbort

      Record FoldWithAbortSpecArg {B} := {
    -     fwasa_f_pre : (elt → B);
    +     fwasa_f_pre : (elt → B);
    The precompute function
    -     fwasa_f_lt : (elt → B → bool);
    +     fwasa_f_lt : (elt → B → bool);
    f_lt without state argument
    -     fwasa_f_gt : (elt → B → bool);
    +     fwasa_f_gt : (elt → B → bool);
    f_gt without state argument
    -     fwasa_P' : (elt → B → bool)
    +     fwasa_P' : (elt → B → bool)
    the predicate P @@ -1024,7 +1117,7 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition foldWithAbortSpecArgsForPred {A : Type}
    -     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=
    +     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=

         
    @@ -1032,7 +1125,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    the predicate P' coincides for s and the given precomputation with P
    -     (∀ e, In e s → (fwasa_P' fwasa e (fwasa_f_pre fwasa e) = P e)) ∧
    +     (∀ e, In e s → (fwasa_P' fwasa e (fwasa_f_pre fwasa e) = P e)) ∧

         
    @@ -1041,9 +1134,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧
    +     (∀ e1,
    +          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧

         
    @@ -1052,9 +1145,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).
    +     (∀ e1,
    +          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).

    @@ -1068,16 +1161,76 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition filter_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
         @foldWithAbortPrecompute t B (fwasa_f_pre fwasa) (fun e p _ ⇒ fwasa_f_lt fwasa e p)
    -       (fun e e_pre s ⇒ if fwasa_P' fwasa e e_pre then add e s else s)
    +       (fun e e_pre s ⇒ if fwasa_P' fwasa e e_pre then add e s else s)
           (fun e p _ ⇒ fwasa_f_gt fwasa e p) s empty.

      Lemma filter_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
        Equal (filter_with_abort fwasa s)
              (filter P s).
    - +  Proof.
    +    unfold foldWithAbortSpecArgsForPred.
    +    move ⇒ [] f_pre f_lt f_gt P' P s /=.
    +    move ⇒ [H_f'] [H_lt] H_gt H_proper.
    +    rewrite /filter_with_abort /=.
    + +
    +    have → : (foldWithAbortPrecompute f_pre (fun e p _ ⇒ f_lt e p)
    +     (fun (e : elt) (e_pre : B) (s0 : t) ⇒
    +      if P' e e_pre then add e s0 else s0) (fun e p _ ⇒ f_gt e p) s empty =
    +     (fold (fun e s0 ⇒ if P e then add e s0 else s0) s empty)). {
    +      apply foldWithAbortPrecomputeSpec_Equal. {
    +        intros e st H_e_in.
    +        rewrite H_f' //.
    +      } {
    +        intros e1 st H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    +        rewrite (H_f' _ H_e2_in).
    +        suff → : (P e2 = false) by done.
    +        apply (H_lt e1); eauto.
    +      } {
    +        intros e1 st H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    +        rewrite (H_f' _ H_e2_in).
    +        suff → : (P e2 = false) by done.
    +        apply (H_gt e1); eauto.
    +      }
    +    }
    +
    +    rewrite /Equal ⇒ e.
    +    rewrite fold_spec.
    +    setoid_rewrite filter_spec ⇒ //.
    + +
    +    suff → : ∀ acc, In e
    +      (fold_left
    +         (flip (fun (e0 : elt) (s0 : t) ⇒ if P e0 then add e0 s0 else s0))
    +         (elements s) acc) ↔ (InA E.eq e (elements s) ∧ P e = true) ∨ (In e acc). {
    +      rewrite elements_spec1.
    +      suff : (¬In e empty) by tauto.
    +      apply empty_spec.
    +    }
    +    induction (elements s) as [| x xs IH] ⇒ acc. {
    +      rewrite /= InA_nil. tauto.
    +    } {
    +      rewrite /= /flip IH InA_cons.
    +      case_eq (P x). {
    +        rewrite add_spec.
    +        intuition.
    +        left.
    +        rewrite H0.
    +        split ⇒ //.
    +        left.
    +        apply Equivalence_Reflexive.
    +      } {
    +        intuition.
    +        contradict H2.
    +        setoid_rewrite H1.
    +        by rewrite H.
    +      }
    +    }
    +  Qed.
    +
    @@ -1088,22 +1241,112 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition choose_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
         foldWithAbortPrecompute (fwasa_f_pre fwasa)
    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    -       (fun e e_pre st ⇒ match st with None ⇒
    -          if (fwasa_P' fwasa e e_pre) then Some e else None | _ ⇒ st end)
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    +       (fun e e_pre st ⇒ match st with None ⇒
    +          if (fwasa_P' fwasa e e_pre) then Some e else None | _ ⇒ st end)

    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    -       s None.
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    +       s None.

      Lemma choose_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, In e s → P e = false)
    -       | Some e ⇒ In e s ∧ (P e = true)
    -     end).
    - +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (match (choose_with_abort fwasa s) with
    +       | None ⇒ (∀ e, In e s → P e = false)
    +       | Some e ⇒ In e s ∧ (P e = true)
    +     end).
    +  Proof.
    +    rewrite /foldWithAbortSpecArgsForPred.
    +    move ⇒ [] f_pre f_lt f_gt P' P s /=.
    +    move ⇒ [H_f'] [H_lt] H_gt H_proper.
    + +
    +    set fwasa := {|
    +       fwasa_f_pre := f_pre;
    +       fwasa_f_lt := f_lt;
    +       fwasa_f_gt := f_gt;
    +       fwasa_P' := P' |}.
    + +
    +    suff : (match (choose_with_abort fwasa s) with
    +       | None ⇒ (∀ e, InA E.eq e (elements s) → P e = false)
    +       | Some e ⇒ InA E.eq e (elements s) ∧ (P e = true)
    +     end). {
    +       case (choose_with_abort fwasa s). {
    +         move ⇒ e.
    +         rewrite elements_spec1 //.
    +       } {
    +         move ⇒ H e H_in.
    +         apply H.
    +         rewrite elements_spec1 //.
    +       }
    +    }
    +
    +    have → : (choose_with_abort fwasa s =
    +      (fold (fun e st ⇒
    +        match st with
    +          | None ⇒ if P e then Some e else None
    +          | _ ⇒ st end) s None)). {
    +      apply foldWithAbortPrecomputeSpec_Equal. {
    +        intros e st H_e_in.
    +        case st ⇒ //=.
    +        rewrite H_f' //.
    +      } {
    +        move ⇒ e1 [] //= H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
    +        rewrite (H_f' _ H_e2_in).
    +        case_eq (P e2) ⇒ // H_P_e2.
    +        contradict H_P_e2.
    +        apply not_true_iff_false, (H_lt e1); auto.
    +      } {
    +        move ⇒ e1 [] //= H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
    +        rewrite (H_f' _ H_e2_in).
    +        case_eq (P e2) ⇒ // H_P_e2.
    +        contradict H_P_e2.
    +        apply not_true_iff_false, (H_gt e1); auto.
    +      }
    +    }
    +
    +    rewrite fold_spec /flip.
    +    induction (elements s) as [| x xs IH]. {
    +      rewrite /=.
    +      move ⇒ e /InA_nil //.
    +    } {
    +      case_eq (P x) ⇒ H_Px; rewrite /= H_Px. {
    +        have → : ∀ xs, fold_left (fun (x0 : option elt) (y : elt) ⇒
    +                    match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    +                    end) xs (Some x) = Some x. {
    +          move ⇒ ys.
    +          induction ys ⇒ //.
    +        }
    +        split; last assumption.
    +        apply InA_cons_hd.
    +        apply E.eq_equiv.
    +      } {
    +        move : IH.
    +        case (fold_left
    +          (fun (x0 : option elt) (y : elt) ⇒
    +             match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    +             end) xs None). {
    +
    +             move ⇒ e [H_e_in] H_Pe.
    +             split; last assumption.
    +             apply InA_cons_tl ⇒ //.
    +        } {
    +          move ⇒ H_e_nin e H_e_in.
    +          have : (InA E.eq e xs ∨ (E.eq e x)). {
    +            inversion H_e_in; tauto.
    +          }
    +          move ⇒ []. {
    +            apply H_e_nin.
    +          } {
    +            move ⇒ → //.
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +
    @@ -1114,17 +1357,35 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition exists_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
        match choose_with_abort fwasa s with
    -      | None ⇒ false
    -      | Some _ ⇒ true
    +      | None ⇒ false
    +      | Some _ ⇒ true
        end.

      Lemma exists_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (exists_with_abort fwasa s =
    -     exists_ P s).
    - +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (exists_with_abort fwasa s =
    +     exists_ P s).
    +  Proof.
    +    intros fwasa P s H_fwasa H_proper.
    +    apply Logic.eq_sym.
    +    rewrite /exists_with_abort.
    +    move : (choose_with_abort_spec _ _ _ H_fwasa H_proper).
    +    case (choose_with_abort fwasa s). {
    +      move ⇒ e [H_e_in] H_Pe.
    +      rewrite exists_spec /Exists.
    +      by ∃ e.
    +    } {
    +      move ⇒ H_not_ex.
    +      apply not_true_iff_false.
    +      rewrite exists_spec /Exists.
    +      move ⇒ [e] [H_in] H_pe.
    +      move : (H_not_ex e H_in).
    +      rewrite H_pe //.
    +    }
    +  Qed.
    +
    @@ -1133,15 +1394,38 @@

    Library MSetsExtra.MSetFoldWithAbort

      Definition forall_with_abort {B} fwasa s :=
    -     negb (@exists_with_abort B fwasa s).
    +     negb (@exists_with_abort B fwasa s).

      Lemma forall_with_abort_spec {B} : ∀ fwasa s P,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (forall_with_abort fwasa s =
    -     for_all (fun e ⇒ negb (P e)) s).
    - +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (forall_with_abort fwasa s =
    +     for_all (fun e ⇒ negb (P e)) s).
    +  Proof.
    +    intros fwasa s P H_ok H_proper.
    +    rewrite /forall_with_abort exists_with_abort_spec; auto.
    + +
    +    rewrite eq_iff_eq_true negb_true_iff -not_true_iff_false.
    +    rewrite exists_spec.
    +    setoid_rewrite for_all_spec; last solve_proper.
    + +
    +    rewrite /Exists /For_all.
    +    split. {
    +      move ⇒ H_pre x H_x_in.
    +      rewrite negb_true_iff -not_true_iff_false ⇒ H_Px.
    +      apply H_pre.
    +      by ∃ x.
    +    } {
    +      move ⇒ H_pre [x] [H_x_in] H_P_x.
    +      move : (H_pre x H_x_in).
    +      rewrite H_P_x.
    +      done.
    +    }
    +  Qed.
    +
    End HasFoldWithAbortOps.
    @@ -1154,24 +1438,24 @@

    Library MSetsExtra.MSetFoldWithAbort

    Module Type WSetsWithDupsFoldA.
    -  Declare Module E : OrderedType.
    +  Declare Module E : OrderedType.
      Include WSetsOnWithDups E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithDupsFoldA.

    -Module Type WSetsWithFoldA <: WSets.
    -  Declare Module E : OrderedType.
    -  Include WSetsOn E.
    +Module Type WSetsWithFoldA <: WSets.
    +  Declare Module E : OrderedType.
    +  Include WSetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithFoldA.

    -Module Type SetsWithFoldA <: Sets.
    -  Declare Module E : OrderedType.
    -  Include SetsOn E.
    +Module Type SetsWithFoldA <: Sets.
    +  Declare Module E : OrderedType.
    +  Include SetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End SetsWithFoldA.
    @@ -1189,49 +1473,211 @@

    Library MSetsExtra.MSetFoldWithAbort

    Finally, provide such a fold with abort operation for generic trees.
    -Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    -  (Import Raw:Ops E I)
    -  (M : MSetGenTree.Props E I Raw).
    +Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    +  (Import Raw:Ops E I)
    +  (M : MSetGenTree.Props E I Raw).

    -  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
    +  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
        match t with
        | Raw.Leaf ⇒ base
        | Raw.Node _ l x r ⇒
    -        let x_pre := f_pre x in
    -        let st0 := if f_lt x x_pre base then base else foldWithAbort_Raw f_pre f_lt f f_gt l base in
    -        let st1 := f x x_pre st0 in
    -        let st2 := if f_gt x x_pre st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1 in
    +        let x_pre := f_pre x in
    +        let st0 := if f_lt x x_pre base then base else foldWithAbort_Raw f_pre f_lt f f_gt l base in
    +        let st1 := f x x_pre st0 in
    +        let st2 := if f_gt x x_pre st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1 in
            st2
        end.

    -  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i i' : A) (f_pre : E.t → B)
    -      (f : E.t → B → A → A) (f' : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    -      (P : A → A → Prop),
    +  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i i' : A) (f_pre : E.t → B)
    +      (f : E.t → B → A → A) (f' : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    +      (P : A → A → Prop),

    -      (M.bst s) →
    -      Equivalence P →
    -      (∀ st st' e, M.In e s → P st st' → P (f e (f_pre e) st) (f e (f_pre e) st')) →
    -      (∀ e st, M.In e s → P (f e (f_pre e) st) (f' e st)) →
    +      (M.bst s) →
    +      Equivalence P →
    +      (∀ st st' e, M.In e s → P st st' → P (f e (f_pre e) st) (f e (f_pre e) st')) →
    +      (∀ e st, M.In e s → P (f e (f_pre e) st) (f' e st)) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ st' e2, P st st' →
    -                          M.In e2 s → E.lt e2 e1 →
    -                          P st (f e2 (f_pre e2) st'))) →
    +      (∀ e1 st,
    +          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e2 e1 →
    +                          P st (f e2 (f_pre e2) st'))) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ st' e2, P st st' →
    -                          M.In e2 s → E.lt e1 e2 →
    -                          P st (f e2 (f_pre e2) st'))) →
    +      (∀ e1 st,
    +          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e1 e2 →
    +                          P st (f e2 (f_pre e2) st'))) →

    -      P i i' →
    +      P i i' →
          P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold f' s i').
    - End MakeGenTreeFoldA.
    +   Proof.
    +     intros A B i i' f_pre f f' f_lt f_gt s P.
    +     move ⇒ H_bst H_equiv_P H_P_f H_f' H_RL H_RG.
    + +
    +     set base := s.
    + +
    +     move : i i'.
    +     have : (∀ e, M.In e base → M.In e s). {
    +       rewrite /In /base //.
    +     }
    +     have : M.bst base. {
    +       apply H_bst.
    +     }
    +     move : base.
    +     clear H_bst.
    + +
    +     induction base as [|c l IHl e r IHr] using M.tree_ind. {
    +       rewrite /foldWithAbort_Raw /Raw.fold.
    +       move ⇒ _ _ i i' //.
    +     } {
    +       move ⇒ H_bst H_sub i i' H_P_ii'.
    + +
    +       have [H_bst_l [H_bst_r [H_lt_tree_l H_gt_tree_r]]]:
    +         M.bst l ∧ M.bst r ∧ M.lt_tree e l ∧ M.gt_tree e r. {
    +         inversion H_bst. done.
    +       }
    +       
    +       have H_sub_l : (∀ e0 : E.t, M.In e0 l → M.In e0 s ∧ E.lt e0 e). {
    +         intros e0 H_in_l.
    +         split; last by apply H_lt_tree_l.
    +         eapply H_sub.
    +         rewrite /M.In M.In_node_iff.
    +         tauto.
    +       }
    +       move : (IHl H_bst_l) ⇒ {IHl} IHl {H_bst_l} {H_lt_tree_l}.
    +       have H_sub_r : (∀ e0 : E.t, M.In e0 r → M.In e0 s ∧ E.lt e e0). {
    +         intros e0 H_in_r.
    +         split; last by apply H_gt_tree_r.
    +         eapply H_sub.
    +         rewrite /M.In M.In_node_iff.
    +         tauto.
    +       }
    +       move : (IHr H_bst_r) ⇒ {IHr} IHr {H_bst_r} {H_gt_tree_r}.
    +       have H_in_e : M.In e s. {
    +         eapply H_sub.
    +         rewrite /M.In M.In_node_iff.
    +         right; left.
    +         apply Equivalence_Reflexive.
    +       }
    +       move ⇒ {H_sub}.
    + +
    +       rewrite /=.
    +       set st0 := if f_lt e (f_pre e) i then i else foldWithAbort_Raw f_pre f_lt f f_gt l i.
    +       set st0' := Raw.fold f' l i'.
    +       set st1 := f e (f_pre e) st0.
    +       set st1' := f' e st0'.
    +       set st2 := if f_gt e (f_pre e) st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1.
    +       set st2' := Raw.fold f' r st1'.
    + +
    +       have H_P_st0 : P st0 st0'. {
    +         rewrite /st0 /st0'.
    +         case_eq (f_lt e (f_pre e) i). {
    +           move ⇒ H_fl_eq.
    +           move : H_P_ii' H_sub_l.
    +           move : H_equiv_P H_f' (H_RL _ _ H_in_e H_fl_eq).
    +           rewrite /M.lt_tree. clear.
    +           move ⇒ H_equiv_P H_f' H_RL.
    +           move : i'.
    +           induction l as [|c l IHl e' r IHr] using M.tree_ind. {
    +             done.
    +           } {
    +             intros i' H_P_ii' H_sub_l.
    +             rewrite /=.
    +             apply IHr; last first. {
    +               move ⇒ y H_y_in.
    +               apply H_sub_l.
    +               rewrite /M.In M.In_node_iff. tauto.
    +             }
    +             have [] : (M.In e' s ∧ E.lt e' e). {
    +               apply H_sub_l.
    +               rewrite /M.In M.In_node_iff.
    +               right; left.
    +               apply Equivalence_Reflexive.
    +             }
    +             move ⇒ H_e'_in H_lt_in.
    +             suff H_P_i : (P i (f e' (f_pre e') (fold f' l i'))). {
    +               eapply Equivalence_Transitive; first apply H_P_i.
    +               by apply H_f'.
    +             }
    +             eapply H_RL ⇒ //.
    +             apply IHl; last first. {
    +               move ⇒ y H_y_in.
    +               apply H_sub_l.
    +               rewrite /M.In M.In_node_iff. tauto.
    +             }
    +             assumption.
    +           }
    +         } {
    +           move ⇒ _.
    +           apply IHl ⇒ //.
    +           eapply H_sub_l.
    +         }
    +       }
    +       have H_P_st1 : P st1 st1'. {
    +         rewrite /st1 /st1'.
    +         rewrite -H_f' //.
    +         apply H_P_f ⇒ //.
    +       }
    +       have H_P_st2 : P st2 st2'. {
    +         rewrite /st2 /st2'.
    +         clearbody st1 st1'.
    +         case_eq (f_gt e (f_pre e) st1). {
    +           move ⇒ H_gt_eq.
    +           move : H_P_st1 H_sub_r.
    +           move : H_equiv_P (H_RG _ _ H_in_e H_gt_eq) H_f'.
    +           unfold M.gt_tree. clear.
    +           move ⇒ H_equiv_P H_RG H_f'.
    +           move : st1'.
    +           induction r as [|c l IHl e' r IHr] using M.tree_ind. {
    +             done.
    +           } {
    +             intros st1' H_P_st1 H_sub_r.
    +             rewrite /=.
    +             apply IHr; last first. {
    +               move ⇒ y H_y_in.
    +               apply H_sub_r.
    +               rewrite /M.In M.In_node_iff. tauto.
    +             }
    +             have [] : (M.In e' s ∧ E.lt e e'). {
    +               apply H_sub_r.
    +               rewrite /M.In M.In_node_iff.
    +               right; left.
    +               apply Equivalence_Reflexive.
    +             }
    +             move ⇒ H_e'_in H_lt_ee'.
    +             suff H_P_st1_aux : (P st1 (f e' (f_pre e') (fold f' l st1'))). {
    +               eapply Equivalence_Transitive; first apply H_P_st1_aux.
    +               by apply H_f'.
    +             }
    +             eapply H_RG ⇒ //.
    +             apply IHl; last first. {
    +               move ⇒ y H_y_in.
    +               apply H_sub_r.
    +               rewrite /M.In M.In_node_iff. tauto.
    +             }
    +             assumption.
    +           }
    +         } {
    +           move ⇒ _.
    +           apply IHr ⇒ //.
    +           eapply H_sub_r.
    +         }
    +       }
    +       done.
    +     }
    +  Qed.
    +End MakeGenTreeFoldA.

    @@ -1244,16 +1690,25 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetAVL.Make X.
    -  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.
    +Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetAVL.Make X.
    +  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
        foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Proof.
    +    intros A B i i' f_pre f f' f_lt f_gt s P.
    +    move ⇒ H_P_f H_f' H_RL H_RG H_P_ii'.
    + +
    +    rewrite /foldWithAbortPrecompute /fold.
    +    apply foldWithAbort_RawSpec ⇒ //.
    +    case s. rewrite /this /Raw.Ok //.
    +  Qed.

      Include HasFoldWithAbortOps X.
    @@ -1270,16 +1725,25 @@

    Library MSetsExtra.MSetFoldWithAbort

    The generic tree implementation naturally leads to an RBT one.
    -Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetRBT.Make X.
    -  Include MakeGenTreeFoldA X Color Raw Raw.
    +Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetRBT.Make X.
    +  Include MakeGenTreeFoldA X Color Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
        foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Proof.
    +    intros A B i i' f_pre f f' f_lt f_gt s P.
    +    move ⇒ H_P_f H_f' H_RL H_RG H_P_ii'.
    + +
    +    rewrite /foldWithAbortPrecompute /fold.
    +    apply foldWithAbort_RawSpec ⇒ //.
    +    case s. rewrite /this /Raw.Ok //.
    +  Qed.

      Include HasFoldWithAbortOps X.
    @@ -1295,20 +1759,20 @@

    Library MSetsExtra.MSetFoldWithAbort

    -Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetList.Make X.
    +Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetList.Make X.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
      match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) then
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
    +        let pre_x := f_pre x in
    +        let acc := f x (pre_x) acc in
    +        if (f_gt x pre_x acc) then
              acc
    -        else
    +        else
              foldWithAbortRaw f_pre f_lt f f_gt xs acc
          )
      end.
    @@ -1318,8 +1782,93 @@

    Library MSetsExtra.MSetFoldWithAbort

        @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    - +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Proof.
    +    intros A B i i' f_pre f f' f_lt f_gt.
    +    move ⇒ [] l H_is_ok_l P H_equiv_P.
    +    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    +    move ⇒ H_P_f H_f' H_RL H_RG.
    + +
    +    set base := l.
    +    move : i i'.
    +    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    +      rewrite /base //.
    +    }
    +    have : sort X.lt base. {
    +      rewrite Raw.isok_iff /base //.
    +    }
    +    clear H_is_ok_l.
    + +
    +    induction base as [| x xs IH]. {
    +      by simpl.
    +    }
    +    move ⇒ H_sort H_in_xxs i i' Pii' /=.
    + +
    +    have [H_sort_xs H_hd_rel {H_sort}] : Sorted X.lt xs ∧ HdRel X.lt x xs. {
    +      by inversion H_sort.
    +    }
    +
    +    move : H_hd_rel.
    +    rewrite (Raw.ML.Inf_alt x H_sort_xs) ⇒ H_lt_xs.
    + +
    +    have H_x_in_l : InA X.eq x l. {
    +      apply H_in_xxs.
    +      apply InA_cons_hd.
    +      apply X.eq_equiv.
    +    }
    +    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    +      intros e H_in.
    +      apply H_in_xxs, InA_cons_tl ⇒ //.
    +    }
    +   
    +    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    +      rewrite /flip -H_f' //.
    +      apply H_P_f ⇒ //.
    +    }
    +
    +    case_eq (f_gt x (f_pre x) (f x (f_pre x) i)); last first. {
    +      move ⇒ _.
    +      apply IH ⇒ //.
    +    } {
    +      move ⇒ H_gt.
    +      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    +         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
    +         apply H_suff ⇒ //.
    +      }
    +      move : H_in_xs H_lt_xs.
    + +
    +      clear IH H_in_xxs H_sort_xs.
    +      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    +      induction xs as [| x' xs' IH']. {
    +        done.
    +      } {
    +        intros H_in_xs H_lt_xs st H_P_st.
    +        rewrite /=.
    +        have H_x'_in_l : InA X.eq x' l. {
    +          apply H_in_xs.
    +          apply InA_cons_hd, X.eq_equiv.
    +        }
    +        apply IH'. {
    +          intros e H.
    +          apply H_in_xs, InA_cons_tl ⇒ //.
    +        } {
    +          intros e H.
    +          apply H_lt_xs, InA_cons_tl ⇒ //.
    +        } {
    +          rewrite /flip -H_f' //.
    +          apply H_RG_x ⇒ //.
    +          apply H_lt_xs.
    +          apply InA_cons_hd, X.eq_equiv.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Include HasFoldWithAbortOps X.
    @@ -1334,22 +1883,22 @@

    Library MSetsExtra.MSetFoldWithAbort

    -Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    -  Module Raw := MSetWeakList.MakeRaw X.
    +Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    +  Module Raw := MSetWeakList.MakeRaw X.
      Module E := X.
    -  Include WRaw2SetsOn E Raw.
    +  Include WRaw2SetsOn E Raw.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
      match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
    +        let pre_x := f_pre x in
    +        let acc := f x (pre_x) acc in
    +        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
              acc
    -        else
    +        else
              foldWithAbortRaw f_pre f_lt f f_gt xs acc
          )
      end.
    @@ -1359,8 +1908,115 @@

    Library MSetsExtra.MSetFoldWithAbort

        @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    - +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Proof.
    +    intros A B i i' f_pre f f' f_lt f_gt.
    +    move ⇒ [] l H_is_ok_l P H_P_equiv.
    +    rewrite /fold /foldWithAbortPrecompute /In /this /Raw.In /Raw.fold.
    +    move ⇒ H_P_f H_f' H_RL H_RG.
    + +
    +    set base := l.
    +    move : i i'.
    +    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    +      rewrite /base //.
    +    }
    +    have : NoDupA X.eq base. {
    +      apply H_is_ok_l.
    +    }
    +    clear H_is_ok_l.
    + +
    +    induction base as [| x xs IH]. {
    +      by simpl.
    +    }
    +    move ⇒ H_nodup_xxs H_in_xxs i i' Pii' /=.
    + +
    +    have [H_nin_x_xs H_nodup_xs {H_nodup_xxs}] : ¬ InA X.eq x xs ∧ NoDupA X.eq xs. {
    +      by inversion H_nodup_xxs.
    +    }
    +
    +    have H_x_in_l : InA X.eq x l. {
    +      apply H_in_xxs.
    +      apply InA_cons_hd.
    +      apply X.eq_equiv.
    +    }
    +    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    +      intros e H_in.
    +      apply H_in_xxs, InA_cons_tl ⇒ //.
    +    }
    +   
    +    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    +      rewrite /flip -H_f' //.
    +      apply H_P_f ⇒ //.
    +    }
    +
    +    case_eq (f_gt x (f_pre x) (f x (f_pre x) i) &&
    +             f_lt x (f_pre x) (f x (f_pre x) i)); last first. {
    +      move ⇒ _.
    +      apply IH ⇒ //.
    +    } {
    +      move ⇒ /andb_true_iff [H_gt H_lt].
    +      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    +         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
    +         apply H_suff ⇒ //.
    +      }
    +
    +      have H_neq_xs : ∀ e, List.In e xs → X.lt x e ∨ X.lt e x. {
    +        intros e H_in.
    + +
    +        move : (X.compare_spec x e).
    +        case (X.compare x e) ⇒ H_cmp; inversion H_cmp. {
    +          contradict H_nin_x_xs.
    +          rewrite InA_alt.
    +          by ∃ e.
    +        } {
    +          by left.
    +        } {
    +          by right.
    +        }
    +      }
    +      move : H_in_xs H_neq_xs.
    + +
    +      clear IH H_in_xxs H_nodup_xs.
    +      move : (H_RG x _ H_x_in_l H_gt) ⇒ H_RG_x.
    +      move : (H_RL x _ H_x_in_l H_lt) ⇒ H_RL_x.
    +      induction xs as [| x' xs' IH']. {
    +        done.
    +      } {
    +        intros H_in_xs H_neq_xs st H_P_st.
    +        rewrite /=.
    +        have H_x'_in_xxs' : List.In x' (x' :: xs'). {
    +          simpl; by left.
    +        }
    +        have H_x'_in_l : InA X.eq x' l. {
    +          apply H_in_xs.
    +          apply InA_cons_hd, X.eq_equiv.
    +        }
    +        apply IH'. {
    +          intros H.
    +          apply H_nin_x_xs, InA_cons_tl ⇒ //.
    +        } {
    +          intros e H.
    +          apply H_in_xs, InA_cons_tl ⇒ //.
    +        } {
    +          intros e H.
    +          apply H_neq_xs, in_cons ⇒ //.
    +        } {
    +          rewrite /flip -H_f' //.
    +          move : (H_neq_xs x' H_x'_in_xxs') ⇒ [] H_cmp. {
    +            apply H_RG_x ⇒ //.
    +          } {
    +            apply H_RL_x ⇒ //.
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +
      Include HasFoldWithAbortOps X.
    diff --git a/html/MSetsExtra.MSetIntervals.html b/html/MSetsExtra.MSetIntervals.html index 696aaf2..649c296 100644 --- a/html/MSetsExtra.MSetIntervals.html +++ b/html/MSetsExtra.MSetIntervals.html @@ -47,14 +47,14 @@

    Library MSetsExtra.MSetIntervals


    -Require Import MSetInterface OrdersFacts OrdersLists.
    -Require Import BinNat.
    +Require Import MSetInterface OrdersFacts OrdersLists.
    +Require Import BinNat.
    Require Import mathcomp.ssreflect.ssreflect.
    -Require Import NArith.
    -Require Import ZArith.
    -Require Import NOrder.
    -Require Import DecidableTypeEx.
    -Module Import NOP := NOrderProp N.
    +Require Import NArith.
    +Require Import ZArith.
    +Require Import NOrder.
    +Require Import DecidableTypeEx.
    +Module Import NOP := NOrderProp N.
    Open Scope Z_scope.

    @@ -68,34 +68,103 @@

    Library MSetsExtra.MSetIntervals

    Simple auxiliary lemmata
    -Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    -  z ≤ z + Z.of_N n.
    - -
    -Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    -  (n ≠ 0)%N →
    -  z < z + Z.of_N n.
    +Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    +  z ≤ z + Z.of_N n.
    +Proof.
    +  intros z n.
    +  suff : (z + 0 ≤ z + Z.of_N n). {
    +    rewrite Z.add_0_r //.
    +  }
    +  apply Zplus_le_compat_l.
    +  apply N2Z.is_nonneg.
    +Qed.
    + +
    +Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    +  (n ≠ 0)%N →
    +  z < z + Z.of_N n.
    +Proof.
    +  move ⇒ z n H_neq_0.
    +  suff : (z + Z.of_N 0 < z + Z.of_N n). {
    +    rewrite Z.add_0_r //.
    +  }
    +  apply Z.add_lt_mono_l, N2Z.inj_lt.
    +  by apply N.neq_0_lt_0.
    +Qed.

    Lemma Z_lt_le_add_r : ∀ y1 y2 c,
    -  y1 < y2 →
    -  y1 ≤ y2 + Z.of_N c.
    - -
    -Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    -    y < x →
    -    Z.to_N (x - y) ≠ 0%N.
    +  y1 < y2 →
    +  y1 ≤ y2 + Z.of_N c.
    +Proof.
    +  intros y1 y2 c H.
    +  apply Z.le_trans with (m := y2). {
    +    by apply Z.lt_le_incl.
    +  } {
    +    apply Z_le_add_r.
    +  }
    +Qed.
    + +
    +Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    +    y < x →
    +    Z.to_N (x - y) ≠ 0%N.
    +Proof.
    +  intros x y H_y_lt.
    +  apply N.neq_0_lt_0.
    +  apply N2Z.inj_lt.
    +  suff H : 0 < x - y. {
    +    rewrite Z2N.id ⇒ //.
    +    by apply Z.lt_le_incl.
    +  }
    +  by apply Z.lt_0_sub.
    +Qed.
    + +
    +Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    +Proof.
    +  intros x y.
    +  rewrite Z.add_sub_assoc ⇒ //.
    +  rewrite Z.add_sub_swap Z.sub_diag Z.add_0_l //.
    +Qed.
    + +
    +Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    +  NoDupA eqA l →
    +  (∀ x1 x2, List.In x1 l → List.In x2 l →
    +                  eqB (f x1) (f x2) → eqA x1 x2) →
    +  NoDupA eqB (map f l).
    +Proof.
    +  intros eqA eqB f.
    +  induction l as [| x xs IH]. {
    +    move ⇒ _ _; rewrite /=.
    +    apply NoDupA_nil.
    +  } {
    +    move ⇒ H_pre H_eqA_impl.
    +    have [H_nin_x H_no_dup_xs] : ¬ InA eqA x xs ∧ NoDupA eqA xs. {
    +      by inversion_clear H_pre.
    +    }
    +    simpl.
    +    apply NoDupA_cons; last first. {
    +      apply IH ⇒ //.
    +      intros x1 x2 H_in_x1 H_in_x2 H_eqB.
    +      apply H_eqA_impl ⇒ //=; by right.
    +    }
    +    move ⇒ H_in_map; apply H_nin_x.
    +    move : H_in_map.
    +    rewrite !InA_alt ⇒ [[y] [H_eqB_y]].
    +    rewrite in_map_iff ⇒ [[y'] [H_y_eq] H_y'_in].
    +    subst.
    +    âˆƒ y'.
    +    split ⇒ //.
    +    apply H_eqA_impl ⇒ //. {
    +      by simpl; left.
    +    } {
    +      by simpl; right.
    +    }
    +  }
    +Qed.
    -
    -Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    - -
    -Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    -  NoDupA eqA l →
    -  (∀ x1 x2, List.In x1 l → List.In x2 l →
    -                  eqB (f x1) (f x2) → eqA x1 x2) →
    -  NoDupA eqB (map f l).
    -
    @@ -108,14 +177,14 @@

    Library MSetsExtra.MSetIntervals

    rev_map is used for efficiency.
    -Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
    +Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
      match l with
    -   | nil ⇒ acc
    -   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
    +   | nil ⇒ acc
    +   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
      end.

    -Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.
    +Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.

    @@ -124,12 +193,26 @@

    Library MSetsExtra.MSetIntervals

    Lemmata about rev_map
    -Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    -  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    - +Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    +  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    +Proof.
    +  intro f.
    +  induction l as [| x xs IH]. {
    +    intros acc.
    +    by simpl.
    +  } {
    +    intros acc.
    +    rewrite /= IH //.
    +  }
    +Qed.
    +
    -Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    -  rev_map f l = List.rev (List.map f l).
    +Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    +  rev_map f l = List.rev (List.map f l).
    +Proof.
    +  intros f l.
    +  rewrite /rev_map rev_map_aux_alt_def -rev_alt //.
    +Qed.

    @@ -148,11 +231,11 @@

    Library MSetsExtra.MSetIntervals


    Module Type ElementEncode.
    -  Declare Module E : OrderedType.
    +  Declare Module E : OrderedType.

    -  Parameter encode : E.t → Z.
    -  Parameter decode : Z → E.t.
    +  Parameter encode : E.t → Z.
    +  Parameter decode : Z → E.t.

    @@ -164,8 +247,8 @@

    Library MSetsExtra.MSetIntervals

    element e with encode v = z.
    -  Axiom decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +  Axiom decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.

    @@ -174,8 +257,8 @@

    Library MSetsExtra.MSetIntervals

    Encoding is compatible with the equality of elements.
    -  Axiom encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Axiom encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.

    @@ -184,8 +267,8 @@

    Library MSetsExtra.MSetIntervals

    Encoding is compatible with the order of elements.
    -  Axiom encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Axiom encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.

    End ElementEncode.
    @@ -218,7 +301,7 @@

    Library MSetsExtra.MSetIntervals

    - Intervals we represent by tuples (Z, N). The tuple (z, c) represents the + Intervals we represent by tuples (Z, N). The tuple (z, c) represents the interval z-(z+c).
    @@ -229,9 +312,9 @@

    Library MSetsExtra.MSetIntervals

    -Module Ops (Enc : ElementEncode) <: Ops Enc.E.
    +Module Ops (Enc : ElementEncode) <: Ops Enc.E.
      Definition elt := Enc.E.t.
    -  Definition t := list (Z × N).
    +  Definition t := list (Z × N).

    @@ -240,8 +323,8 @@

    Library MSetsExtra.MSetIntervals

    The empty list is trivial to define and check for.
    -  Definition empty : t := nil.
    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Definition empty : t := nil.
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.

    @@ -253,39 +336,46 @@

    Library MSetsExtra.MSetIntervals

    if it needs to be executable.
    -  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
    - -
    -  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    -    match c as c0 return c = c0 → (bool × A) with
    -    | N0 ⇒ fun _ ⇒ (false, acc)
    +  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
    +  Proof.
    +    intros n p H0 H1.
    +    apply H1.
    +    rewrite H0.
    +    apply N.lt_pred_l.
    +    discriminate.
    +  Defined.
    + +
    +  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    +    match c as c0 return c = c0 → (bool × A) with
    +    | N0 ⇒ fun _ ⇒ (false, acc)
        | c ⇒ fun Heq ⇒ match (f acc x) with
    -        | None ⇒ (true, acc)
    -        | Some acc' ⇒
    -          fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    -    end (refl_equal _).
    +        | None ⇒ (true, acc)
    +        | Some acc' ⇒
    +          fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    +    end (refl_equal _).

      Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _).

    -  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
    +  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
        match s with
    -    | nil ⇒ (false, acc)
    -    | (x, c) :: s' ⇒
    +    | nil ⇒ (false, acc)
    +    | (x, c) :: s' ⇒
          match fold_elementsZ_single f acc x c with
    -          (false, acc') ⇒ fold_elementsZ f acc' s'
    -        | (true, acc') ⇒ (true, acc')
    +          (false, acc') ⇒ fold_elementsZ f acc' s'
    +        | (true, acc') ⇒ (true, acc')
          end
        end.

    -  Definition elementsZ (s : t) : list Z :=
    -    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).
    +  Definition elementsZ (s : t) : list Z :=
    +    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).

    -  Definition elements (s : t) : list elt :=
    -    rev_map Enc.decode (elementsZ s).
    +  Definition elements (s : t) : list elt :=
    +    rev_map Enc.decode (elementsZ s).

    @@ -294,12 +384,12 @@

    Library MSetsExtra.MSetIntervals

    membership is easily defined
    -  Fixpoint memZ (x : Z) (s : t) :=
    +  Fixpoint memZ (x : Z) (s : t) :=
        match s with
    -    | nil ⇒ false
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then false else
    -        if (Z.ltb x (y+Z.of_N c)) then true else
    +    | nil ⇒ false
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then false else
    +        if (Z.ltb x (y+Z.of_N c)) then true else
            memZ x l
        end.
    @@ -325,59 +415,59 @@

    Library MSetsExtra.MSetIntervals

        | ICR_after_touch.

    -  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    -    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    -                match (Z.compare yc1 y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒
    -                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    -                        | (Lt, Lt) ⇒ ICR_overlap_before
    -                        | (Lt, _) ⇒ ICR_subsume_2
    -                        | (Eq, Lt) ⇒ ICR_subsume_1
    -                        | (Eq, Gt) ⇒ ICR_subsume_2
    -                        | (Eq, Eq) ⇒ ICR_equal
    -                        | (Gt, Gt) ⇒ ICR_overlap_after
    -                        | (Gt, _) ⇒ ICR_subsume_1
    +  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    +    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    +                match (Z.compare yc1 y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒
    +                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    +                        | (Lt, Lt) ⇒ ICR_overlap_before
    +                        | (Lt, _) ⇒ ICR_subsume_2
    +                        | (Eq, Lt) ⇒ ICR_subsume_1
    +                        | (Eq, Gt) ⇒ ICR_subsume_2
    +                        | (Eq, Eq) ⇒ ICR_equal
    +                        | (Gt, Gt) ⇒ ICR_overlap_after
    +                        | (Gt, _) ⇒ ICR_subsume_1
                            end
                    end
          end
        end.

    -  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    -    match i with (y2, c2) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒ ICR_subsume_1
    +  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    +    match i with (y2, c2) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒ ICR_subsume_1
                    end
          end
        end.

      Fixpoint compare (s1 s2 : t) :=
    -    match (s1, s2) with
    -      | (nil, nil) ⇒ Eq
    -      | (nil, _ :: _) ⇒ Lt
    -      | (_ :: _, nil) ⇒ Gt
    -      | ((y1, c1)::s1', (y2, c2)::s2') ⇒
    -        match (Z.compare y1 y2) with
    -          | Lt ⇒ Lt
    -          | Gt ⇒ Gt
    -          | Eq ⇒ match N.compare c1 c2 with
    -                    | Lt ⇒ Lt
    -                    | Gt ⇒ Gt
    -                    | Eq ⇒ compare s1' s2'
    +    match (s1, s2) with
    +      | (nil, nil) ⇒ Eq
    +      | (nil, _ :: _) ⇒ Lt
    +      | (_ :: _, nil) ⇒ Gt
    +      | ((y1, c1)::s1', (y2, c2)::s2') ⇒
    +        match (Z.compare y1 y2) with
    +          | Lt ⇒ Lt
    +          | Gt ⇒ Gt
    +          | Eq ⇒ match N.compare c1 c2 with
    +                    | Lt ⇒ Lt
    +                    | Gt ⇒ Gt
    +                    | Eq ⇒ compare s1' s2'
                      end
            end
        end.
    @@ -389,18 +479,18 @@

    Library MSetsExtra.MSetIntervals

    Auxiliary functions for inserting at front and merging intervals
    -  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    -    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).
    +  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    +    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).

    -  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
    +  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
        match l with
    -    | nil ⇒ (x,c)::nil
    -    | (y, c')::l' ⇒
    -         match (Z.compare (x + Z.of_N c) y) with
    -         | Lt ⇒ (x, c) :: l
    -         | Eq ⇒ (x, (c+c')%N) :: l'
    -         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y c') l'
    +    | nil ⇒ (x,c)::nil
    +    | (y, c')::l' ⇒
    +         match (Z.compare (x + Z.of_N c) y) with
    +         | Lt ⇒ (x, c) :: l
    +         | Eq ⇒ (x, (c+c')%N) :: l'
    +         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y c') l'
             end
        end.
    @@ -412,21 +502,21 @@

    Library MSetsExtra.MSetIntervals

    generate efficient code
    -  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
    +  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
        match s with
    -    | nil ⇒ List.rev' ((x, (1%N))::acc)
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    -          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    -          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    -          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    -          | _ ⇒ List.rev_append ((y, c)::acc) l
    +    | nil ⇒ List.rev' ((x, (1%N))::acc)
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    +          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    +          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    +          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    +          | _ ⇒ List.rev_append ((y, c)::acc) l
            end
        end.

    -  Definition addZ x s := addZ_aux nil x s.
    +  Definition addZ x s := addZ_aux nil x s.
      Definition add x s := addZ (Enc.encode x) s.

    @@ -437,11 +527,11 @@

    Library MSetsExtra.MSetIntervals

    This is used to define the function from_elements.
    -  Definition add_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ add x s) l s.
    +  Definition add_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ add x s) l s.

    -  Definition from_elements (l : list elt) : t := add_list l empty.
    +  Definition from_elements (l : list elt) : t := add_list l empty.

    @@ -450,11 +540,12 @@

    Library MSetsExtra.MSetIntervals

    singleton is trivial to define
    -  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.
    +  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.

    -  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
    - +  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
    +  Proof. by []. Qed.
    +
    @@ -462,29 +553,29 @@

    Library MSetsExtra.MSetIntervals

    removing needs to be done with code extraction in mind again.
    -  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    -     if (N.eqb c 0) then s else (x, c) :: s.
    +  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    +     if (N.eqb c 0) then s else (x, c) :: s.

    -  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
    +  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
        match s with
    -    | nil ⇒ List.rev' acc
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then List.rev_append acc s else
    -        if (Z.ltb x (y+Z.of_N c)) then (
    -           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    -              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    -             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    -        ) else removeZ_aux ((y,c)::acc) x l
    +    | nil ⇒ List.rev' acc
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then List.rev_append acc s else
    +        if (Z.ltb x (y+Z.of_N c)) then (
    +           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    +              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    +             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    +        ) else removeZ_aux ((y,c)::acc) x l
        end.

    -  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
    +  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
      Definition remove (x : elt) (s : t) : t := removeZ (Enc.encode x) s.

    -  Definition remove_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ remove x s) l s.
    +  Definition remove_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ remove x s) l s.

    @@ -494,19 +585,19 @@

    Library MSetsExtra.MSetIntervals

      Fixpoint union_aux (s1 : t) :=
    -    fix aux (s2 : t) (acc : list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +    fix aux (s2 : t) (acc : list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
                  union_aux l1 (
    -               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
    +               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
              | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
                  union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc
              | ICR_overlap_after ⇒
    @@ -518,7 +609,7 @@

    Library MSetsExtra.MSetIntervals

        end.

    -  Definition union s1 s2 := union_aux s1 s2 nil.
    +  Definition union s1 s2 := union_aux s1 s2 nil.

    @@ -529,38 +620,38 @@

    Library MSetsExtra.MSetIntervals


    -  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
        match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    -          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    -          | ICR_equal ⇒ (acc, l1)
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    +          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    +          | ICR_equal ⇒ (acc, l1)
              | ICR_subsume_1 ⇒ diff_aux y2 c2 acc l1
    -          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    -                (Z.to_N (y2 - y1)) acc),
    -              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
    +          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    +                (Z.to_N (y2 - y1)) acc),
    +              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
            end
        end.

    -  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ rev_append acc s1
    -    | (_, nil) ⇒ rev_append acc s1
    -    | (_, (y2, c2) :: l2) ⇒
    +  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ rev_append acc s1
    +    | (_, nil) ⇒ rev_append acc s1
    +    | (_, (y2, c2) :: l2) ⇒
          match diff_aux y2 c2 acc s1 with
    -        (acc', s1') ⇒ diff_aux2 acc' s1' l2
    +        (acc', s1') ⇒ diff_aux2 acc' s1' l2
          end
        end.

    -  Definition diff s1 s2 := diff_aux2 nil s1 s2.
    +  Definition diff s1 s2 := diff_aux2 nil s1 s2.

    @@ -571,20 +662,20 @@

    Library MSetsExtra.MSetIntervals

      Fixpoint subset (s1 : t) :=
        fix aux (s2 : t) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
              | ICR_after ⇒ aux l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
              | ICR_equal ⇒ subset l1 l2
              | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +          | ICR_subsume_2 ⇒ false
            end
        end.
    @@ -595,10 +686,10 @@

    Library MSetsExtra.MSetIntervals

    equal
    -  Fixpoint equal (s s' : t) : bool := match s, s' with
    -    | nil, nil ⇒ true
    -    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    -    | _, _ ⇒ false
    +  Fixpoint equal (s s' : t) : bool := match s, s' with
    +    | nil, nil ⇒ true
    +    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    +    | _, _ ⇒ false
      end.

    @@ -608,36 +699,36 @@

    Library MSetsExtra.MSetIntervals

    inter
    -  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
        match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
              | ICR_before ⇒ inter_aux y2 c2 acc l1
              | ICR_before_touch ⇒ inter_aux y2 c2 acc l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    -          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    -          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    -          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    +          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    +          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    +          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
            end
        end.

    -  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev' acc
    -    | (_, nil) ⇒ List.rev' acc
    -    | (_, (y2, c2) :: l2) ⇒
    +  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev' acc
    +    | (_, nil) ⇒ List.rev' acc
    +    | (_, (y2, c2) :: l2) ⇒
          match inter_aux y2 c2 acc s1 with
    -        (acc', s1') ⇒ inter_aux2 acc' s1' l2
    +        (acc', s1') ⇒ inter_aux2 acc' s1' l2
          end
        end.

    -  Definition inter s1 s2 := inter_aux2 nil s1 s2.
    +  Definition inter s1 s2 := inter_aux2 nil s1 s2.

    @@ -649,93 +740,93 @@

    Library MSetsExtra.MSetIntervals


      Definition partitionZ_fold_insert
    -             (cur : option (Z × N)) (x : Z) :=
    +             (cur : option (Z × N)) (x : Z) :=
        match cur with
    -       None ⇒ (x, 1%N)
    -     | Some (y, c) ⇒ (y, N.succ c)
    +       None ⇒ (x, 1%N)
    +     | Some (y, c) ⇒ (y, N.succ c)
        end.

    -  Definition partitionZ_fold_skip (acc : list (Z × N))
    -             (cur : option (Z × N)) : (list (Z × N)) :=
    +  Definition partitionZ_fold_skip (acc : list (Z × N))
    +             (cur : option (Z × N)) : (list (Z × N)) :=
        match cur with
    -       None ⇒ acc
    -     | Some yc ⇒ yc::acc
    +       None ⇒ acc
    +     | Some yc ⇒ yc::acc
        end.

    -  Definition partitionZ_fold_fun f st (x : Z) :=
    -    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
    -      if (f x) then
    -        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    -         (partitionZ_fold_skip acc_f c_f, None))
    -      else
    -        ((partitionZ_fold_skip acc_t c_t, None),
    -         (acc_f, Some (partitionZ_fold_insert c_f x)))
    +  Definition partitionZ_fold_fun f st (x : Z) :=
    +    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
    +      if (f x) then
    +        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    +         (partitionZ_fold_skip acc_f c_f, None))
    +      else
    +        ((partitionZ_fold_skip acc_t c_t, None),
    +         (acc_f, Some (partitionZ_fold_insert c_f x)))
        end.

    -  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).
    +  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).

      Definition partitionZ_single f acc_t acc_f x c :=
    -    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    -    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    -        (partitionZ_fold_skip acc_t c_t,
    -         partitionZ_fold_skip acc_f c_f)
    +    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    +    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    +        (partitionZ_fold_skip acc_t c_t,
    +         partitionZ_fold_skip acc_f c_f)
        end.

      Fixpoint partitionZ_aux acc_t acc_f f s :=
        match s with
    -    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    -    | (y, c) :: s' ⇒
    +    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    +    | (y, c) :: s' ⇒
          match partitionZ_single f acc_t acc_f y c with
    -      | (acc_t', acc_f') ⇒ partitionZ_aux acc_t' acc_f' f s'
    +      | (acc_t', acc_f') ⇒ partitionZ_aux acc_t' acc_f' f s'
          end
        end.

    -  Definition partitionZ := partitionZ_aux nil nil.
    +  Definition partitionZ := partitionZ_aux nil nil.

    -  Definition partition (f : elt → bool) : t → (t × t) :=
    +  Definition partition (f : elt → bool) : t → (t × t) :=
        partitionZ (fun z ⇒ f (Enc.decode z)).

    -  Definition filterZ_fold_fun f st (x : Z) :=
    -    match st with (acc_t, c_t) ⇒
    -      if (f x) then
    -        (acc_t, Some (partitionZ_fold_insert c_t x))
    -      else
    -        (partitionZ_fold_skip acc_t c_t, None)
    +  Definition filterZ_fold_fun f st (x : Z) :=
    +    match st with (acc_t, c_t) ⇒
    +      if (f x) then
    +        (acc_t, Some (partitionZ_fold_insert c_t x))
    +      else
    +        (partitionZ_fold_skip acc_t c_t, None)
        end.

    -  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).
    +  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).

      Definition filterZ_single f acc x c :=
    -    match filterZ_single_aux f (acc, None) x c with
    -    | (acc, c) ⇒
    +    match filterZ_single_aux f (acc, None) x c with
    +    | (acc, c) ⇒
            (partitionZ_fold_skip acc c)
        end.

      Fixpoint filterZ_aux acc f s :=
        match s with
    -    | nil ⇒ (List.rev acc)
    -    | (y, c) :: s' ⇒
    +    | nil ⇒ (List.rev acc)
    +    | (y, c) :: s' ⇒
          filterZ_aux (filterZ_single f acc y c) f s'
        end.

    -  Definition filterZ := filterZ_aux nil.
    +  Definition filterZ := filterZ_aux nil.

    -  Definition filter (f : elt → bool) : t → t :=
    +  Definition filter (f : elt → bool) : t → t :=
        filterZ (fun z ⇒ f (Enc.decode z)).

    @@ -749,62 +840,62 @@

    Library MSetsExtra.MSetIntervals


    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).

    -  Definition for_all (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    -      if b then
    -        Some (f (Enc.decode z))
    -      else None) true s).
    +  Definition for_all (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
    +      if b then
    +        Some (f (Enc.decode z))
    +      else None) true s).

    -  Definition exists_ (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    -      if b then
    -        None
    -      else Some (f (Enc.decode z))) false s).
    +  Definition exists_ (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
    +      if b then
    +        None
    +      else Some (f (Enc.decode z))) false s).

    -  Fixpoint cardinalN c (s : t) : N := match s with
    -    | nil ⇒ c
    -    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
    +  Fixpoint cardinalN c (s : t) : N := match s with
    +    | nil ⇒ c
    +    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
      end.

    -  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).
    +  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).

    -  Definition min_eltZ (s : t) : option Z :=
    +  Definition min_eltZ (s : t) : option Z :=
        match s with
    -    | nil ⇒ None
    -    | (x, _) :: _ ⇒ Some x
    +    | nil ⇒ None
    +    | (x, _) :: _ ⇒ Some x
        end.

    -  Definition min_elt (s : t) : option elt :=
    +  Definition min_elt (s : t) : option elt :=
        match (min_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

      Definition choose := min_elt.

    -  Fixpoint max_eltZ (s : t) : option Z :=
    +  Fixpoint max_eltZ (s : t) : option Z :=
        match s with
    -    | nil ⇒ None
    -    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    -    | (x, _) :: s' ⇒ max_eltZ s'
    +    | nil ⇒ None
    +    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    +    | (x, _) :: s' ⇒ max_eltZ s'
        end.

    -  Definition max_elt (s : t) : option elt :=
    +  Definition max_elt (s : t) : option elt :=
        match (max_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

    @@ -837,26 +928,26 @@

    Library MSetsExtra.MSetIntervals

    -  Definition is_encoded_elems_list (l : list Z) : Prop :=
    -    (∀ x, List.In x l → ∃ e, Enc.encode e = x).
    +  Definition is_encoded_elems_list (l : list Z) : Prop :=
    +    (∀ x, List.In x l → ∃ e, Enc.encode e = x).

    -  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
    +  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
        match l with
    -      | nil ⇒ true
    -      | (y, _)::_ ⇒ Z.ltb x y
    +      | nil ⇒ true
    +      | (y, _)::_ ⇒ Z.ltb x y
        end.

      Fixpoint interval_list_invariant (l : t) :=
       match l with
    -   | nil ⇒ true
    -   | (x, c) :: l' ⇒
    -       interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l'
    +   | nil ⇒ true
    +   | (x, c) :: l' ⇒
    +       interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l'
       end.

    -  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).
    +  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).

    @@ -875,13 +966,13 @@

    Library MSetsExtra.MSetIntervals

        Instance IsOk_Ok s `(Hs : IsOk s) : Ok s := { ok := Hs }.

    -    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    -    Definition InZ x s := (List.In x (elementsZ s)).
    -    Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -    Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -    Definition Empty s := ∀ a : elt, ¬ In a s.
    -    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.
    +    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    +    Definition InZ x s := (List.In x (elementsZ s)).
    +    Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +    Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +    Definition Empty s := ∀ a : elt, ¬ In a s.
    +    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.

      End ForNotations.
    @@ -903,173 +994,423 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
    - +  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
    +  Proof. done. Qed.
    +
    -  Lemma elements_nil : (elements (nil : t) = nil).
    - +  Lemma elements_nil : (elements (nil : t) = nil).
    +  Proof. done. Qed.
    +
    -  Definition elementsZ_single (x:Z) (c:N) :=
    -      List.rev' (N.peano_rec (fun _ ⇒ list Z)
    -                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).
    +  Definition elementsZ_single (x:Z) (c:N) :=
    +      List.rev' (N.peano_rec (fun _ ⇒ list Z)
    +                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).

      Definition elements_single x c :=
    -    List.map Enc.decode (elementsZ_single x c).
    +    List.map Enc.decode (elementsZ_single x c).

      Lemma elementsZ_single_base : ∀ x,
    -    elementsZ_single x (0%N) = nil.
    - +    elementsZ_single x (0%N) = nil.
    +  Proof. done. Qed.
    +
      Lemma elementsZ_single_succ : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    elementsZ_single x c ++ (x+Z.of_N c)::nil.
    - +    elementsZ_single x (N.succ c) =
    +    elementsZ_single x c ++ (x+Z.of_N c)::nil.
    +  Proof.
    +    intros x c.
    +    rewrite /elementsZ_single N.peano_rec_succ /rev' -!rev_alt //.
    +  Qed.
    +
      Lemma elementsZ_single_add : ∀ x c2 c1,
    -    elementsZ_single x (c1 + c2)%N =
    -    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
    - +    elementsZ_single x (c1 + c2)%N =
    +    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
    +  Proof.
    +    intros x.
    +    induction c2 as [| c2' IH] using N.peano_ind. {
    +      move ⇒ c1.
    +      rewrite elementsZ_single_base /= app_nil_r N.add_0_r //.
    +    } {
    +      move ⇒ c1.
    +      rewrite N.add_succ_r !elementsZ_single_succ IH app_assoc N2Z.inj_add Z.add_assoc //.
    +    }
    +  Qed.
    +
      Lemma elementsZ_single_succ_front : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    x :: elementsZ_single (Z.succ x) c.
    - +    elementsZ_single x (N.succ c) =
    +    x :: elementsZ_single (Z.succ x) c.
    +  Proof.
    +    intros x c.
    +    rewrite -N.add_1_l elementsZ_single_add.
    +    rewrite N.one_succ elementsZ_single_succ elementsZ_single_base /= Z.add_0_r.
    +    by rewrite Z.add_1_r.
    +  Qed.
    +
      Lemma In_elementsZ_single : ∀ c y x,
    -    List.In y (elementsZ_single x c) ↔
    -    (x ≤ y) ∧ (y < (x+Z.of_N c)).
    - +    List.In y (elementsZ_single x c) ↔
    +    (x ≤ y) ∧ (y < (x+Z.of_N c)).
    +  Proof.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intros y x.
    +      rewrite elementsZ_single_base Z.add_0_r /=.
    +      omega.
    +    } {
    +      intros y x.
    +      rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r.
    +      split. {
    +        move ⇒ [ | []] //. {
    +          move ⇒ [H_x_le H_y_le].
    +          omega.
    +        } {
    +          move ⇒ <-.
    +          split.
    +            - by apply Z_le_add_r.
    +            - by apply Z.le_refl.
    +        }
    +      } {
    +        move ⇒ [H_x_le] H_y_lt.
    +        omega.
    +      }
    +    }
    +  Qed.
    +
      Lemma In_elementsZ_single1 : ∀ y x,
    -    List.In y (elementsZ_single x (1%N)) ↔
    -    (x = y).
    +    List.In y (elementsZ_single x (1%N)) ↔
    +    (x = y).
    +  Proof.
    +    intros y x.
    +    rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r.
    +    omega.
    +  Qed.

      Lemma length_elementsZ_single : ∀ cx x,
    -    length (elementsZ_single x cx) = N.to_nat cx.
    - +    length (elementsZ_single x cx) = N.to_nat cx.
    +  Proof.
    +    induction cx as [| cx' IH] using N.peano_ind. {
    +      by simpl.
    +    } {
    +      intros x.
    +      rewrite elementsZ_single_succ_front /=.
    +      rewrite IH N2Nat.inj_succ //.
    +    }
    +  Qed.
    +
      Lemma fold_elementsZ_aux_irrel {A} :
        âˆ€ f c (acc : A) x H1 H2,
    -      fold_elementsZ_aux f acc x c H1 =
    +      fold_elementsZ_aux f acc x c H1 =
          fold_elementsZ_aux f acc x c H2.
    - +  Proof.
    +    intros f c.
    +    induction c as [c IH] using (well_founded_ind lt_wf_0).
    +    case_eq c. {
    +      intros H_c acc x; case; intro H_H1; case; intro H_H2.
    +      reflexivity.
    +    } {
    +      intros p H_c acc x; case; intro H_H1; case; intro H_H2.
    +      unfold fold_elementsZ_aux; fold (@fold_elementsZ_aux A).
    +      case (f acc x) ⇒ // acc'.
    +      apply IH.
    +      rewrite H_c.
    +      apply N.lt_pred_l.
    +      discriminate.
    +    }
    +  Qed.
    +
      Lemma fold_elementsZ_single_pos {A} : ∀ f (acc : A) x p,
    -    fold_elementsZ_single f acc x (N.pos p) =
    +    fold_elementsZ_single f acc x (N.pos p) =
        match f acc x with
    -    | Some acc' ⇒
    -        fold_elementsZ_single f acc' (Z.succ x)
    -         (N.pred (N.pos p))
    -    | None ⇒ (true, acc)
    +    | Some acc' ⇒
    +        fold_elementsZ_single f acc' (Z.succ x)
    +         (N.pred (N.pos p))
    +    | None ⇒ (true, acc)
        end.
    +  Proof.
    +    intros f acc x p.
    +    unfold fold_elementsZ_single.
    +    unfold fold_elementsZ_aux.
    +    case: (lt_wf_0 _).
    +    fold (@fold_elementsZ_aux A).
    +    intro.
    +    case (f acc x) ⇒ // acc'.
    +    apply fold_elementsZ_aux_irrel.
    +  Qed.

      Lemma fold_elementsZ_single_zero {A} : ∀ f (acc : A) x,
    -      fold_elementsZ_single f acc x (0%N) = (false, acc).
    +      fold_elementsZ_single f acc x (0%N) = (false, acc).
    +  Proof.
    +    intros f acc x.
    +    unfold fold_elementsZ_single.
    +    case (lt_wf_0 (0%N)); intro.
    +    unfold fold_elementsZ_aux.
    +    reflexivity.
    +  Qed.

      Lemma fold_elementsZ_single_succ {A} : ∀ f (acc : A) x c,
    -    fold_elementsZ_single f acc x (N.succ c) =
    +    fold_elementsZ_single f acc x (N.succ c) =
        match f acc x with
    -      | Some acc' ⇒
    -          fold_elementsZ_single f acc' (Z.succ x) c
    -      | None ⇒ (true, acc)
    +      | Some acc' ⇒
    +          fold_elementsZ_single f acc' (Z.succ x) c
    +      | None ⇒ (true, acc)
        end.
    - -
    -  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
    +  Proof.
    +    intros f acc x c.
    +    case c. {
    +      by rewrite fold_elementsZ_single_pos.
    +    } {
    +      intro p; simpl.
    +      rewrite fold_elementsZ_single_pos.
    +      case (f acc x) ⇒ // acc' /=.
    +      by rewrite Pos.pred_N_succ.
    +    }
    +  Qed.
    + +
    +  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
        match bs with
    -      | nil ⇒ (false, acc)
    -      | (b :: bs') ⇒
    +      | nil ⇒ (false, acc)
    +      | (b :: bs') ⇒
            match f acc b with
    -        | Some acc' ⇒ fold_opt f acc' bs'
    -        | None ⇒ (true, acc)
    +        | Some acc' ⇒ fold_opt f acc' bs'
    +        | None ⇒ (true, acc)
            end
        end.

    -  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    -    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    -    (false, List.rev bs ++ acc).
    - +  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    +    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    +    (false, List.rev bs ++ acc).
    +  Proof.
    +    induction bs as [| b bs' IH] ⇒ acc. {
    +      by simpl.
    +    } {
    +      rewrite /= IH -app_assoc //.
    +    }
    +  Qed.
    +
    -  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    -    fold_opt f acc (l1 ++ l2) =
    -    (let (ab, acc') := fold_opt f acc l1 in
    -     if ab then (true, acc') else fold_opt f acc' l2).
    - +  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    +    fold_opt f acc (l1 ++ l2) =
    +    (let (ab, acc') := fold_opt f acc l1 in
    +     if ab then (true, acc') else fold_opt f acc' l2).
    +  Proof.
    +    intros f acc l1 l2.
    +    move : acc.
    +    induction l1 as [| b l1' IH] ⇒ acc. {
    +      rewrite app_nil_l //.
    +    } {
    +      rewrite /=.
    +      case (f acc b); last done.
    +      intro acc'.
    +      rewrite IH //.
    +    }
    +  Qed.
    +

      Lemma fold_elementsZ_single_alt_def {A} : ∀ f c (acc : A) x,
    -     fold_elementsZ_single f acc x c =
    +     fold_elementsZ_single f acc x c =
         fold_opt f acc (elementsZ_single x c).
    - +  Proof.
    +    intro f.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intros acc x.
    +      rewrite fold_elementsZ_single_zero
    +              elementsZ_single_base /fold_opt //.
    +    } {
    +      intros acc x.
    +      rewrite fold_elementsZ_single_succ
    +              elementsZ_single_succ_front /=.
    +      case (f acc x); last reflexivity.
    +      intro acc'.
    +      apply IH.
    +    }
    +  Qed.
    +
      Lemma fold_elementsZ_nil {A} : ∀ f (acc : A),
    -     fold_elementsZ f acc nil = (false, acc).
    - +     fold_elementsZ f acc nil = (false, acc).
    +  Proof. done. Qed.
    +
      Lemma fold_elementsZ_cons {A} : ∀ f (acc : A) y c s,
    -    fold_elementsZ f acc ((y, c)::s) =
    -    (let (ab, acc') := fold_elementsZ_single f acc y c in
    -     if ab then (true, acc') else fold_elementsZ f acc' s).
    +    fold_elementsZ f acc ((y, c)::s) =
    +    (let (ab, acc') := fold_elementsZ_single f acc y c in
    +     if ab then (true, acc') else fold_elementsZ f acc' s).
    +  Proof.
    +    intros f acc y c s.
    +    done.
    +  Qed.

      Lemma fold_elementsZ_alt_def_aux : ∀ (s : t) base,
    -    (snd (fold_elementsZ
    -      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    -    elementsZ s ++ base.
    - +    (snd (fold_elementsZ
    +      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    +    elementsZ s ++ base.
    +  Proof.
    +    induction s as [| [y1 c1] s' IH] ⇒ base. {
    +      rewrite elementsZ_nil /fold_elementsZ /fold_opt /snd
    +        app_nil_l //.
    +    } {
    +      rewrite /elementsZ !fold_elementsZ_cons.
    +      rewrite !fold_elementsZ_single_alt_def !fold_opt_list_cons.
    +      rewrite !IH app_nil_r app_assoc //.
    +    }
    +  Qed.
    +

      Lemma fold_elementsZ_alt_def {A} : ∀ f s (acc : A),
    -     fold_elementsZ f acc s =
    -     fold_opt f acc (rev (elementsZ s)).
    - -
    -  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    -     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
    - -
    -  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    -     ((elements_single x c) ++ elements s).
    - -
    -  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    -     ((elementsZ s2) ++ (elementsZ s1)).
    - -
    -  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
    - -
    -  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    -     List.In y (elementsZ_single x c) ∨ InZ y s.
    - +     fold_elementsZ f acc s =
    +     fold_opt f acc (rev (elementsZ s)).
    +  Proof.
    +    intro f.
    +    induction s as [| [y1 c1] s' IH] ⇒ acc. {
    +      by simpl.
    +    } {
    +      rewrite /elementsZ !fold_elementsZ_cons.
    +      rewrite !fold_elementsZ_single_alt_def
    +              fold_opt_list_cons app_nil_r
    +              fold_elementsZ_alt_def_aux rev_app_distr
    +              rev_involutive fold_opt_app.
    +      case (fold_opt f acc (elementsZ_single y1 c1)).
    +      move ⇒ [] //.
    +    }
    +  Qed.
    + +
    +  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    +     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
    +  Proof.
    +    intros x c s.
    +    rewrite /elementsZ fold_elementsZ_cons
    +            !fold_elementsZ_alt_def
    +            fold_elementsZ_single_alt_def.
    +    rewrite !fold_opt_list_cons.
    +    rewrite !app_nil_r !rev_involutive /=.
    +    rewrite fold_elementsZ_alt_def_aux //.
    +  Qed.
    + +
    +  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    +     ((elements_single x c) ++ elements s).
    +  Proof.
    +    intros x c s.
    +    rewrite /elements /elements_single elementsZ_cons.
    +    rewrite !rev_map_alt_def map_app rev_app_distr map_rev rev_involutive //.
    +  Qed.
    + +
    +  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    +     ((elementsZ s2) ++ (elementsZ s1)).
    +  Proof.
    +    induction s1 as [| [x1 c1] s1 IH1]. {
    +      move ⇒ s2.
    +      rewrite elementsZ_nil app_nil_r //.
    +    }
    +    move ⇒ s2.
    +    rewrite -app_comm_cons !elementsZ_cons IH1 -app_assoc //.
    +  Qed.
    + +
    +  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
    +  Proof.
    +    intro y.
    +    done.
    +  Qed.
    + +
    +  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    +     List.In y (elementsZ_single x c) ∨ InZ y s.
    +  Proof.
    +    intros y x c s.
    +    rewrite /InZ elementsZ_cons in_app_iff -in_rev.
    +    firstorder.
    +  Qed.
    +
      Lemma InZ_app : ∀ s1 s2 y,
    -     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
    - +     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
    +  Proof.
    +    intros s1 s2 y.
    +    rewrite /InZ elementsZ_app in_app_iff.
    +    tauto.
    +  Qed.
    +
      Lemma InZ_rev : ∀ s y,
    -     InZ y (List.rev s) ↔ InZ y s.
    - +     InZ y (List.rev s) ↔ InZ y s.
    +  Proof.
    +    intros s x.
    +    rewrite /InZ.
    +    induction s as [| [y c] s' IH]; first done.
    +    simpl.
    +    rewrite elementsZ_app in_app_iff IH.
    +    rewrite !elementsZ_cons !in_app_iff elementsZ_nil
    +            -!in_rev /=.
    +    tauto.
    +  Qed.
    +
      Lemma In_elementsZ_single_dec : ∀ y x c,
    -    {List.In y (elementsZ_single x c)} +
    -    {¬ List.In y (elementsZ_single x c)}.
    - +    {List.In y (elementsZ_single x c)} +
    +    {¬ List.In y (elementsZ_single x c)}.
    +  Proof.
    +    intros y x c.
    +    case (Z_le_dec x y); last first. {
    +      right; rewrite In_elementsZ_single; tauto.
    +    }
    +    case (Z_lt_dec y (x + Z.of_N c)); last first. {
    +      right; rewrite In_elementsZ_single; tauto.
    +    }
    +    left; rewrite In_elementsZ_single; tauto.
    +  Qed.
    +
      Lemma InZ_dec : ∀ y s,
    -     {InZ y s} + {¬InZ y s}.
    - -
    -  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
    - +     {InZ y s} + {¬InZ y s}.
    +  Proof.
    +    intros y.
    +    induction s as [| [x c] s IH]. {
    +      by right.
    +    }
    +    move : IH ⇒ [] IH. {
    +      by left; rewrite InZ_cons; right.
    +    }
    +    case (In_elementsZ_single_dec y x c). {
    +      by left; rewrite InZ_cons; left.
    +    } {
    +      by right; rewrite InZ_cons; tauto.
    +    }
    +  Qed.
    + +
    +  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
    +  Proof.
    +    intros c x H_c_neq.
    +    rewrite In_elementsZ_single.
    +    split. {
    +      apply Z.le_refl.
    +    } {
    +      apply Z.lt_add_pos_r.
    +      have → : 0 = Z.of_N (0%N) by [].
    +      apply N2Z.inj_lt.
    +      by apply N.neq_0_lt_0.
    +    }
    +  Qed.
    +

    @@ -1083,32 +1424,44 @@

    Library MSetsExtra.MSetIntervals


      Ltac Z_named_compare_cases H := match goal with
    -    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    -      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
    +    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    +      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
      end.

    -  Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H.
    +  Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H.

    -  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    match (interval_compare (y1, c1) (y2, c2)) with
    -      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    -      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    -      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    -      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    match (interval_compare (y1, c1) (y2, c2)) with
    +      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    +      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    +      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
        end.
    +  Proof.
    +    intros y1 c1 y2 c2.
    +    rewrite /interval_compare.
    +    (repeat Z_compare_cases); subst; repeat split;
    +       try (by apply Z.eq_le_incl);
    +       try (by apply Z.lt_le_incl);
    +       try (by left); try (by right).
    + +
    +    apply Z.add_reg_l in H2.
    +    by apply N2Z.inj.
    +  Qed.

    -  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    -    interval_compare (y2, c2) (y1, c1) =
    -    match (interval_compare (y1, c1) (y2, c2)) with
    +  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    +    interval_compare (y2, c2) (y1, c1) =
    +    match (interval_compare (y1, c1) (y2, c2)) with
          | ICR_before ⇒ ICR_after
          | ICR_before_touch ⇒ ICR_after_touch
          | ICR_after ⇒ ICR_before
    @@ -1119,30 +1472,128 @@

    Library MSetsExtra.MSetIntervals

          | ICR_subsume_1 ⇒ ICR_subsume_2
          | ICR_subsume_2 ⇒ ICR_subsume_1
        end.
    - -
    -  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    -    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
    +  Proof.
    +    intros y1 c1 y2 c2 H_c12_neq_0.
    +    rewrite /interval_compare.
    +    move : (Z.compare_antisym y1 y2) ⇒ →.
    +    move : (Z.compare_antisym (y1 + Z.of_N c1) (y2 + Z.of_N c2)) ⇒ →.
    +    have H_suff : y1 + Z.of_N c1 ≤ y2 → y2 + Z.of_N c2 ≤ y1 → False. {
    +      move ⇒ H1 H2.
    +      case H_c12_neq_0 ⇒ H_c_neq_0. {
    +        suff : (y1 + Z.of_N c1 ≤ y1). {
    +          apply Z.nle_gt.
    +          by apply Z_lt_add_r.
    +        }
    +        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
    +        apply Z_le_add_r.
    +      } {
    +        suff : (y2 + Z.of_N c2 ≤ y2). {
    +          apply Z.nle_gt.
    +          by apply Z_lt_add_r.
    +        }
    +        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
    +        apply Z_le_add_r.
    +      }
    +    }
    +    repeat Z_compare_cases. {
    +      exfalso; apply H_suff.
    +        - by rewrite H; apply Z.le_refl.
    +        - by rewrite H0; apply Z.le_refl.
    +    } {
    +      exfalso; apply H_suff.
    +        - by rewrite H; apply Z.le_refl.
    +        - by apply Z.lt_le_incl.
    +    } {
    +      exfalso; apply H_suff.
    +        - by apply Z.lt_le_incl.
    +        - by rewrite H0; apply Z.le_refl.
    +    } {
    +      exfalso; apply H_suff.
    +        - by apply Z.lt_le_incl.
    +        - by apply Z.lt_le_incl.
    +    }
    +  Qed.
    + +
    +  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    +    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
          | ICR_equal ⇒ ICR_subsume_1
          | ICR_subsume_1 ⇒ ICR_subsume_1
          | ICR_subsume_2 ⇒ ICR_subsume_1
          | r ⇒ r
        end.
    - -
    -  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    -    match (interval_1_compare y1 (y2, c2)) with
    -      | ICR_before ⇒ Z.succ y1 < y2
    -      | ICR_before_touch ⇒ y2 = Z.succ y1
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ False
    -      | ICR_overlap_before ⇒ False
    -      | ICR_overlap_after ⇒ False
    -      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    -      | ICR_subsume_2 ⇒ False
    +  Proof.
    +    move ⇒ y1 [y2 c2].
    +    rewrite /interval_1_compare /interval_compare.
    +    replace (y1 + Z.of_N 1) with (Z.succ y1); last done.
    +    repeat Z_compare_cases. {
    +      contradict H1.
    +      by apply Zle_not_lt, Zlt_succ_le.
    +    } {
    +      contradict H.
    +      by apply Zle_not_lt, Zlt_succ_le.
    +    }
    +  Qed.
    + +
    +  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    +    match (interval_1_compare y1 (y2, c2)) with
    +      | ICR_before ⇒ Z.succ y1 < y2
    +      | ICR_before_touch ⇒ y2 = Z.succ y1
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ False
    +      | ICR_overlap_before ⇒ False
    +      | ICR_overlap_after ⇒ False
    +      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    +      | ICR_subsume_2 ⇒ False
        end.
    - +  Proof.
    +    intros y1 y2 c2.
    +    move : (interval_compare_elim y1 (1%N) y2 c2).
    +    rewrite interval_1_compare_alt_def.
    +    have H_succ: ∀ z, z + Z.of_N 1 = Z.succ z by done.
    + +
    +    case_eq (interval_compare (y1, 1%N) (y2, c2)) ⇒ H_comp;
    +      rewrite ?H_succ ?Z.lt_succ_r ?Z.le_succ_l //. {
    +      move ⇒ [H_lt] [H_le] _.
    +      contradict H_lt.
    +      by apply Zle_not_lt.
    +    } {
    +      move ⇒ [_] [H_lt] H_le.
    +      contradict H_lt.
    +      by apply Zle_not_lt.
    +    } {
    +      move ⇒ [->] <-.
    +      rewrite ?Z.lt_succ_r.
    +      right.
    +      split; apply Z.le_refl.
    +    } {
    +      tauto.
    +    } {
    +      case (N.zero_or_succ c2). {
    +        move ⇒ → _; by left.
    +      } {
    +        move ⇒ [c2'] →.
    +        rewrite !N2Z.inj_succ Z.add_succ_r -Z.succ_le_mono Z.le_succ_l.
    +        move ⇒ [H_y1_le] [H_le_y1].
    +        suff → : y1 = y2. {
    +          move ⇒ [] H_pre; contradict H_pre. {
    +            apply Z.lt_irrefl.
    +          } {
    +            apply Zle_not_lt, Z_le_add_r.
    +          }
    +        }
    +        apply Z.le_antisymm ⇒ //.
    +        eapply Z.le_trans; last apply H_le_y1.
    +        apply Z_le_add_r.
    +      }
    +    }
    +  Qed.
    +
    @@ -1152,22 +1603,45 @@

    Library MSetsExtra.MSetIntervals

      Lemma addZ_aux_alt_def : ∀ x s acc,
    -    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
    - +    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
    +  Proof.
    +    intros y1 s.
    +    unfold addZ.
    +    induction s as [| [y2 c2] s' IH] ⇒ acc. {
    +      rewrite /addZ_aux /addZ /= /rev' !rev_append_rev /= app_nil_r //.
    +    } {
    +      unfold addZ_aux.
    +      case (interval_1_compare y1 (y2, c2)); fold addZ_aux;
    +        rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    +      rewrite (IH ((y2,c2)::acc)) (IH ((y2,c2)::nil)).
    +      rewrite /= app_assoc_reverse //.
    +    }
    +  Qed.
    +
      Lemma addZ_alt_def : ∀ x s,
    -    addZ x s =
    +    addZ x s =
        match s with
    -    | nil ⇒ (x, (1%N))::nil
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ (x, (1%N))::s
    -          | ICR_before_touch ⇒ (x, N.succ c)::l
    -          | ICR_after ⇒ (y,c)::(addZ x l)
    -          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    -          | _ ⇒ (y, c)::l
    +    | nil ⇒ (x, (1%N))::nil
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ (x, (1%N))::s
    +          | ICR_before_touch ⇒ (x, N.succ c)::l
    +          | ICR_after ⇒ (y,c)::(addZ x l)
    +          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    +          | _ ⇒ (y, c)::l
            end
        end.
    +  Proof.
    +    intros x s.
    +    rewrite /addZ.
    +    case s ⇒ //.
    +    move ⇒ [y c] s'.
    +    unfold addZ_aux.
    +    case (interval_1_compare x (y, c)); fold addZ_aux;
    +      rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    +    rewrite addZ_aux_alt_def //.
    +  Qed.

    @@ -1182,112 +1656,315 @@

    Library MSetsExtra.MSetIntervals


      Lemma interval_list_elements_greater_cons : ∀ z x c s,
    -    interval_list_elements_greater z ((x, c) :: s) = true ↔
    -    (z < x).
    +    interval_list_elements_greater z ((x, c) :: s) = true ↔
    +    (z < x).
    +  Proof.
    +    intros z x c s.
    +    rewrite /=.
    +    apply Z.ltb_lt.
    +  Qed.

      Lemma interval_list_elements_greater_impl : ∀ x y s,
    -    (y ≤ x) →
    -    interval_list_elements_greater x s = true →
    -    interval_list_elements_greater y s = true.
    +    (y ≤ x) →
    +    interval_list_elements_greater x s = true →
    +    interval_list_elements_greater y s = true.
    +  Proof.
    +    intros x y s.
    +    case s ⇒ //.
    +    move ⇒ [z c] s'.
    +    rewrite /interval_list_elements_greater.
    +    move ⇒ H_y_leq /Z.ltb_lt H_x_lt.
    +    apply Z.ltb_lt.
    +    eapply Z.le_lt_trans; eauto.
    +  Qed.

    -  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.
    +  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.
    +  Proof.
    +    by [].
    +  Qed.

    -  Lemma Ok_nil : Ok nil ↔ True.
    +  Lemma Ok_nil : Ok nil ↔ True.
    +  Proof.
    +    rewrite /Ok /IsOk /interval_list_invariant /is_encoded_elems_list //.
    +  Qed.

      Lemma is_encoded_elems_list_app : ∀ l1 l2,
    -    is_encoded_elems_list (l1 ++ l2) ↔
    -    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).
    +    is_encoded_elems_list (l1 ++ l2) ↔
    +    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).
    +  Proof.
    +    intros l1 l2.
    +    rewrite /is_encoded_elems_list.
    +    setoid_rewrite in_app_iff.
    +    split; firstorder.
    +  Qed.

      Lemma is_encoded_elems_list_rev : ∀ l,
    -    is_encoded_elems_list (List.rev l) ↔
    +    is_encoded_elems_list (List.rev l) ↔
        is_encoded_elems_list l.
    +  Proof.
    +    intros l.
    +    rewrite /is_encoded_elems_list.
    +    split; (
    +      move ⇒ H x H_in;
    +      apply H;
    +      move : H_in;
    +      rewrite -in_rev ⇒ //
    +    ).
    +  Qed.

      Lemma interval_list_invariant_cons : ∀ y c s',
    -    interval_list_invariant ((y, c) :: s') = true ↔
    -    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧
    -      ((c ≠ 0)%N) ∧ interval_list_invariant s' = true).
    - +    interval_list_invariant ((y, c) :: s') = true ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧
    +      ((c ≠ 0)%N) ∧ interval_list_invariant s' = true).
    +  Proof.
    +    rewrite /interval_list_invariant -/interval_list_invariant.
    +    intros y c s'.
    +    rewrite !Bool.andb_true_iff negb_true_iff.
    +    split. {
    +      move ⇒ [] [H_inf] /N.eqb_neq H_c H_s'. tauto.
    +    } {
    +      move ⇒ [H_inf] [/N.eqb_neq H_c] H_s'. tauto.
    +    }
    +  Qed.
    +
      Lemma interval_list_invariant_sing : ∀ x c,
    -    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.
    +    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.
    +  Proof.
    +    intros x c.
    +    rewrite interval_list_invariant_cons.
    +    split; tauto.
    +  Qed.

    -  Lemma Ok_cons : ∀ y c s', Ok ((y, c) :: s') ↔
    -    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧ ((c ≠ 0)%N) ∧
    -     is_encoded_elems_list (elementsZ_single y c) ∧ Ok s').
    +  Lemma Ok_cons : ∀ y c s', Ok ((y, c) :: s') ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧ ((c ≠ 0)%N) ∧
    +     is_encoded_elems_list (elementsZ_single y c) ∧ Ok s').
    +  Proof.
    +    intros y c s'.
    +    rewrite /Ok /IsOk interval_list_invariant_cons elementsZ_cons is_encoded_elems_list_app
    +       is_encoded_elems_list_rev.
    +    tauto.
    +  Qed.

      Lemma Nin_elements_greater : ∀ s y,
    -     interval_list_elements_greater y s = true →
    -     interval_list_invariant s = true →
    -     âˆ€ x, x ≤ y → ~(InZ x s).
    - +     interval_list_elements_greater y s = true →
    +     interval_list_invariant s = true →
    +     âˆ€ x, x ≤ y → ~(InZ x s).
    +  Proof.
    +    induction s as [| [z c] s' IH]. {
    +      intros y _ _ x _.
    +      by simpl.
    +    } {
    +      move ⇒ y /interval_list_elements_greater_cons H_y_lt
    +        /interval_list_invariant_cons [H_gr] [H_c] H_s'
    +        x H_x_le.
    +      rewrite InZ_cons In_elementsZ_single.
    +      have H_x_lt : x < z by eapply Z.le_lt_trans; eauto.
    + +
    +      move ⇒ []. {
    +        move ⇒ [H_z_leq] _; contradict H_z_leq.
    +        by apply Z.nle_gt.
    +      } {
    +        eapply IH; eauto.
    +        by apply Z_lt_le_add_r.
    +      }
    +    }
    +  Qed.
    +
      Lemma Nin_elements_greater_equal :
         âˆ€ x s,
    -       interval_list_elements_greater x s = true →
    -       interval_list_invariant s = true →
    -       Â¬ (InZ x s).
    +       interval_list_elements_greater x s = true →
    +       interval_list_invariant s = true →
    +       Â¬ (InZ x s).
    +  Proof.
    +    move ⇒ x s H_inv H_gr.
    +    apply (Nin_elements_greater s x) ⇒ //.
    +    apply Z.le_refl.
    +  Qed.

      Lemma interval_list_elements_greater_alt_def : ∀ s y,
    -     interval_list_invariant s = true →
    -
    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, x ≤ y → ~(InZ x s))).
    - +     interval_list_invariant s = true →
    +
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, x ≤ y → ~(InZ x s))).
    +  Proof.
    +    intros s y H_inv.
    +    split. {
    +      move ⇒ H_gr.
    +      apply Nin_elements_greater ⇒ //.
    +    } {
    +      move : H_inv.
    +      case s as [| [x2 c] s'] ⇒ //.
    +      rewrite interval_list_invariant_cons interval_list_elements_greater_cons.
    +      move ⇒ [_] [H_c_neq] _ H.
    +      apply Z.nle_gt ⇒ H_ge.
    +      apply (H x2) ⇒ //.
    +      rewrite InZ_cons; left.
    +      apply In_elementsZ_single_hd ⇒ //.
    +    }
    +  Qed.
    +
      Lemma interval_list_elements_greater_alt2_def : ∀ s y,
    -     interval_list_invariant s = true →
    +     interval_list_invariant s = true →

    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, InZ x s → y < x)).
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, InZ x s → y < x)).
    +  Proof.
    +    intros s y H.
    +    rewrite interval_list_elements_greater_alt_def //.
    +    firstorder.
    +    apply Z.nle_gt.
    +    move ⇒ H_lt.
    +    eapply H0; eauto.
    +  Qed.

      Lemma interval_list_elements_greater_intro : ∀ s y,
    -     interval_list_invariant s = true →
    -     (∀ x, InZ x s → y < x) →
    -     interval_list_elements_greater y s = true.
    +     interval_list_invariant s = true →
    +     (∀ x, InZ x s → y < x) →
    +     interval_list_elements_greater y s = true.
    +  Proof.
    +    intros s y H1 H2.
    +    rewrite interval_list_elements_greater_alt2_def //.
    +  Qed.

      Lemma interval_list_elements_greater_app_elim_1 : ∀ s1 s2 y,
    -    interval_list_elements_greater y (s1 ++ s2) = true →
    -    interval_list_elements_greater y s1 = true.
    +    interval_list_elements_greater y (s1 ++ s2) = true →
    +    interval_list_elements_greater y s1 = true.
    +  Proof.
    +    intros s1 s2 y.
    +    case s1 ⇒ //.
    +  Qed.

      Lemma interval_list_invariant_app_intro : ∀ s1 s2,
    -      interval_list_invariant s1 = true →
    -      interval_list_invariant s2 = true →
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -      interval_list_invariant (s1 ++ s2) = true.
    - +      interval_list_invariant s1 = true →
    +      interval_list_invariant s2 = true →
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +      interval_list_invariant (s1 ++ s2) = true.
    +  Proof.
    +    induction s1 as [| [y1 c1] s1' IH]. {
    +      move ⇒ s2 _ //.
    +    } {
    +      move ⇒ s2.
    +      rewrite -app_comm_cons !interval_list_invariant_cons.
    +      move ⇒ [H_gr] [H_c1_neq] H_inv_s1' H_inv_s2 H_inz_s2.
    +      split; last split. {
    +        move : H_gr H_inz_s2.
    +        case s1' as [| [y1' c1'] s1'']; last done.
    +        move ⇒ _ H_inz_s2.
    +        rewrite app_nil_l.
    +        apply interval_list_elements_greater_intro ⇒ //.
    +        move ⇒ x H_x_in_s2.
    +        suff H_inz : InZ (Z.pred (y1 + Z.of_N c1)) ((y1, c1) :: nil). {
    +          move : (H_inz_s2 _ _ H_inz H_x_in_s2).
    +          by rewrite Z.succ_pred.
    +        }
    +        rewrite InZ_cons In_elementsZ_single -Z.lt_le_pred; left.
    +        split. {
    +          by apply Z_lt_add_r.
    +        } {
    +          apply Z.lt_pred_l.
    +        }
    +      } {
    +        assumption.
    +      } {
    +        apply IH ⇒ //.
    +        intros x1 x2 H_in_x1 H_in_x2.
    +        apply H_inz_s2 ⇒ //.
    +        rewrite InZ_cons; by right.
    +      }
    +    }
    +  Qed.
    +
      Lemma interval_list_invariant_app_elim : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true →
    -      interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
    - +      interval_list_invariant (s1 ++ s2) = true →
    +      interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
    +  Proof.
    +    move ⇒ s1 s2.
    +    induction s1 as [| [y1 c1] s1' IH]; first done.
    +    rewrite -app_comm_cons !interval_list_invariant_cons.
    + +
    +    move ⇒ [H_gr] [H_c1_neq_0] /IH [H_inv_s1'] [H_inv_s2] H_in_s1'_s2.
    +    repeat split; try assumption. {
    +      move : H_gr.
    +      case s1'; first done.
    +      move ⇒ [y2 c2] s1''.
    +      rewrite interval_list_elements_greater_cons //.
    +    } {
    +      move ⇒ x1 x2.
    +      rewrite InZ_cons In_elementsZ_single.
    +      move ⇒ []; last by apply H_in_s1'_s2.
    +      move ⇒ [] H_y1_le H_x1_lt H_x2_in.
    +      move : H_gr.
    +      rewrite interval_list_elements_greater_alt2_def; last first. {
    +          by apply interval_list_invariant_app_intro.
    +      }
    +      move ⇒ H_in_s12'.
    +      have : (y1 + Z.of_N c1 < x2). {
    +        apply H_in_s12'.
    +        rewrite InZ_app.
    +        by right.
    +      }
    +      move ⇒ H_lt_x2.
    +      apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +      by apply Zlt_le_succ.
    +    }
    +  Qed.
    +
      Lemma interval_list_invariant_app_iff : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true ↔
    -      (interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
    - +      interval_list_invariant (s1 ++ s2) = true ↔
    +      (interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
    +  Proof.
    +    intros s1 s2.
    +    split. {
    +      by apply interval_list_invariant_app_elim.
    +    } {
    +      move ⇒ [] H_inv_s1 [].
    +      by apply interval_list_invariant_app_intro.
    +    }
    +  Qed.
    +
      Lemma interval_list_invariant_snoc_intro : ∀ s1 y2 c2,
    -      interval_list_invariant s1 = true →
    -      (c2 ≠ 0)%N →
    -      (∀ x, InZ x s1 → Z.succ x < y2) →
    -      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
    - +      interval_list_invariant s1 = true →
    +      (c2 ≠ 0)%N →
    +      (∀ x, InZ x s1 → Z.succ x < y2) →
    +      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
    +  Proof.
    +    intros s1 y2 c2 H_inv_s1 H_c2_neq H_in_s1.
    +    apply interval_list_invariant_app_intro ⇒ //. {
    +      rewrite interval_list_invariant_cons; done.
    +    } {
    +      intros x1 x2 H_in_x1.
    +      rewrite InZ_cons.
    +      move ⇒ [] //.
    +      rewrite In_elementsZ_single.
    +      move ⇒ [H_y2_le] _.
    +      eapply Z.lt_le_trans; eauto.
    +    }
    +  Qed.
    +

    @@ -1300,20 +1977,85 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    -    (Enc.encode (Enc.decode x) = x).
    - -
    -  Lemma In_alt_def : ∀ x s, Ok s →
    -    (In x s ↔ List.In x (elements s)).
    - -
    -  Lemma In_InZ : ∀ x s, Ok s →
    -    (In x s ↔ InZ (Enc.encode x) s).
    - -
    -  Lemma InZ_In : ∀ x s, Ok s →
    -    (InZ x s → In (Enc.decode x) s).
    +  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    +    (Enc.encode (Enc.decode x) = x).
    +  Proof.
    +    intros x s.
    +    rewrite /Ok /IsOk /InZ.
    +    move ⇒ [_] H_enc H_in_x.
    +    move : (H_enc _ H_in_x) ⇒ [x'] <-.
    +    rewrite Enc.decode_encode_ok //.
    +  Qed.
    + +
    +  Lemma In_alt_def : ∀ x s, Ok s →
    +    (In x s ↔ List.In x (elements s)).
    +  Proof.
    +    intros x s H_ok.
    +    rewrite /In InA_alt /elements rev_map_alt_def.
    +    split. {
    +      move ⇒ [y] [H_y_eq].
    +      rewrite -!in_rev !in_map_iff.
    +      move ⇒ [x'] [H_y_eq'] H_x'_in.
    +      suff H_x'_eq : (Enc.encode x = x'). {
    +        âˆƒ x'.
    +        split ⇒ //.
    +        rewrite -H_x'_eq Enc.decode_encode_ok //.
    +      }
    +      have H_enc_list : is_encoded_elems_list (elementsZ s). {
    +        move : H_ok.
    +        rewrite /Ok /IsOk ⇒ [] [] //.
    +      }
    +      move : (H_enc_list _ H_x'_in) ⇒ [x''] H_x'_eq.
    +      move : H_y_eq'.
    +      rewrite -!H_x'_eq Enc.decode_encode_ok ⇒ H_y_eq'.
    +      subst.
    +      suff → : Z.eq (Enc.encode x) (Enc.encode y) by done.
    +      by rewrite Enc.encode_eq.
    +    } {
    +      move ⇒ H_enc_in.
    +      âˆƒ x.
    +      split ⇒ //.
    +      apply Enc.E.eq_equiv.
    +    }
    +  Qed.
    + +
    +  Lemma In_InZ : ∀ x s, Ok s →
    +    (In x s ↔ InZ (Enc.encode x) s).
    +  Proof.
    +    intros x s H_ok.
    +    rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff.
    +    split; last first. {
    +      âˆƒ (Enc.encode x).
    +      by rewrite Enc.decode_encode_ok.
    +    }
    +    move ⇒ [y] [<-] H_y_in.
    +    suff : ∃ z, (Enc.encode z = y). {
    +      move ⇒ [z] H_y_eq.
    +      move : H_y_in.
    +      by rewrite -!H_y_eq Enc.decode_encode_ok.
    +    }
    +    suff H_enc_list : is_encoded_elems_list (elementsZ s). {
    +      by apply H_enc_list.
    +    }
    +    apply H_ok.
    +  Qed.
    + +
    +  Lemma InZ_In : ∀ x s, Ok s →
    +    (InZ x s → In (Enc.decode x) s).
    +  Proof.
    +    intros x s H_ok.
    +    rewrite In_InZ /InZ.
    +    move : H_ok.
    +    rewrite /Ok /IsOk /is_encoded_elems_list.
    +    move ⇒ [_] H_enc.
    +    move ⇒ H_in.
    +    move : (H_enc _ H_in) ⇒ [e] H_x.
    +    subst.
    +    by rewrite Enc.decode_encode_ok.
    +  Qed.

    @@ -1328,16 +2070,67 @@

    Library MSetsExtra.MSetIntervals


      Lemma memZ_spec :
    -    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
    - +    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
    +  Proof.
    +    induction s as [| [y c] s' IH]. {
    +      intros x _.
    +      rewrite /InZ elementsZ_nil //.
    +    } {
    +      move ⇒ x /Ok_cons [H_inf] [H_c] [H_is_enc] H_s'.
    +      rewrite /InZ /memZ elementsZ_cons -/memZ.
    +      rewrite in_app_iff -!in_rev In_elementsZ_single.
    + +
    +      case_eq (x <? y). {
    +        move ⇒ /Z.ltb_lt H_x_lt.
    +        split; first done.
    +        move ⇒ []. {
    +          move ⇒ H_x_in; contradict H_x_in.
    +          apply Nin_elements_greater with (y := (y + Z.of_N c)) ⇒ //. {
    +            apply H_s'.
    +          } {
    +            apply Z_lt_le_add_r ⇒ //.
    +          }
    +        } {
    +          move ⇒ [H_y_le]; contradict H_y_le.
    +          by apply Z.nle_gt.
    +        }
    +      } {
    +        move ⇒ /Z.ltb_ge H_y_le.
    +        case_eq (x <? y + Z.of_N c). {
    +          move ⇒ /Z.ltb_lt H_x_lt.
    +          split; last done.
    +          move ⇒ _.
    +          by right.
    +        } {
    +          move ⇒ /Z.ltb_ge H_yc_le.
    +          rewrite IH.
    +          split; first tauto.
    +          move ⇒ [] //.
    +          move ⇒ [_] H_x_lt; contradict H_x_lt.
    +          by apply Z.nlt_ge.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma mem_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.
    +   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.
    +  Proof.
    +    intros s x Hs.
    +    rewrite /mem memZ_spec In_InZ //.
    +  Qed.

      Lemma merge_interval_size_neq_0 : ∀ x1 c1 x2 c2,
    -     (c1 ≠ 0%N) →
    -     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.
    +     (c1 ≠ 0%N) →
    +     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.
    +  Proof.
    +    intros x1 c1 x2 c2.
    +    rewrite /merge_interval_size !N.neq_0_lt_0 N.max_lt_iff.
    +    by left.
    +  Qed.

    @@ -1350,32 +2143,67 @@

    Library MSetsExtra.MSetIntervals


      Lemma interval_list_invariant_insert_intervalZ_guarded : ∀ x c s,
    -    interval_list_invariant s = true →
    -    interval_list_elements_greater (x + Z.of_N c) s = true →
    -    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
    +    interval_list_invariant s = true →
    +    interval_list_elements_greater (x + Z.of_N c) s = true →
    +    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
    +  Proof.
    +    intros x c s.
    +    rewrite /insert_intervalZ_guarded.
    +    case_eq (c =? 0)%N ⇒ //.
    +    move ⇒ /N.eqb_neq.
    +    rewrite interval_list_invariant_cons.
    +    tauto.
    +  Qed.

      Lemma interval_list_elements_greater_insert_intervalZ_guarded : ∀ x c y s,
    -    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    -    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
    +    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    +    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
    +  Proof.
    +    intros x c y s.
    +    rewrite /insert_intervalZ_guarded.
    +    case (c =? 0)%N ⇒ //.
    +    rewrite /interval_list_elements_greater Z.ltb_lt //.
    +  Qed.

      Lemma insert_intervalZ_guarded_app : ∀ x c s1 s2,
    -    (insert_intervalZ_guarded x c s1) ++ s2 =
    -    insert_intervalZ_guarded x c (s1 ++ s2).
    +    (insert_intervalZ_guarded x c s1) ++ s2 =
    +    insert_intervalZ_guarded x c (s1 ++ s2).
    +  Proof.
    +    intros x c s1 s2.
    +    rewrite /insert_intervalZ_guarded.
    +    case (N.eqb c 0) ⇒ //.
    +  Qed.

      Lemma insert_intervalZ_guarded_rev_nil_app : ∀ x c s,
    -    rev (insert_intervalZ_guarded x c nil) ++ s =
    +    rev (insert_intervalZ_guarded x c nil) ++ s =
        insert_intervalZ_guarded x c s.
    +  Proof.
    +    intros x c s.
    +    rewrite /insert_intervalZ_guarded.
    +    case (N.eqb c 0) ⇒ //.
    +  Qed.

    Lemma elementsZ_insert_intervalZ_guarded : ∀ x c s,
    -    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
    +    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
    +  Proof.
    +    intros x c s.
    +    rewrite /insert_intervalZ_guarded.
    +    case_eq (c =? 0)%N ⇒ //.
    +    move ⇒ /N.eqb_eq →.
    +    rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //.
    +  Qed.

      Lemma InZ_insert_intervalZ_guarded : ∀ y x c s,
    -    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).
    +    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).
    +  Proof.
    +    intros y x c s.
    +    rewrite /InZ elementsZ_insert_intervalZ_guarded //.
    +  Qed.

    @@ -1388,41 +2216,164 @@

    Library MSetsExtra.MSetIntervals


      Lemma merge_interval_size_add : ∀ x c1 c2,
    -     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.
    +     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.
    +  Proof.
    +    intros x c1 c2.
    +    rewrite /merge_interval_size.
    +    replace (x + Z.of_N c1 + Z.of_N c2 - x) with
    +            (Z.of_N c1 + Z.of_N c2) by omega.
    +    rewrite -N2Z.inj_add N2Z.id.
    +    apply N.max_r, N.le_add_r.
    +  Qed.

      Lemma merge_interval_size_eq_max : ∀ y1 c1 y2 c2,
    -     y1 ≤ y2 + Z.of_N c2 →
    -     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    -     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).
    +     y1 ≤ y2 + Z.of_N c2 →
    +     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    +     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).
    +  Proof.
    +    intros y1 c1 y2 c2 H_y1_le.
    +    rewrite /merge_interval_size N2Z.inj_max Z2N.id; last first. {
    +      by apply Zle_minus_le_0.
    +    }
    +    rewrite -Z.add_max_distr_l.
    +    replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by omega.
    +    done.
    +  Qed.

      Lemma merge_interval_size_invariant : ∀ y1 c1 y2 c2 z s,
    -    interval_list_invariant s = true →
    -    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    -    y2 + Z.of_N c2 ≤ z →
    -    interval_list_elements_greater z s = true →
    -    (c1 ≠ 0)%N →
    -    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    -   true.
    - +    interval_list_invariant s = true →
    +    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    +    y2 + Z.of_N c2 ≤ z →
    +    interval_list_elements_greater z s = true →
    +    (c1 ≠ 0)%N →
    +    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    +   true.
    +  Proof.
    +    intros y1 c1 y2 c2 z s H_inv H_le H_le_z H_gr H_c1_neq_0.
    +    rewrite interval_list_invariant_cons.
    +    split; last split. {
    +      rewrite merge_interval_size_eq_max; last first. {
    +        eapply Z.le_trans; last apply H_le.
    +        apply Z_le_add_r.
    +      } {
    +        rewrite Z.max_r ⇒ //.
    +        eapply interval_list_elements_greater_impl; first apply H_le_z.
    +        done.
    +      }
    +    } {
    +      apply merge_interval_size_neq_0.
    +      assumption.
    +    } {
    +      assumption.
    +    }
    +  Qed.
    +
      Lemma In_merge_interval : ∀ x1 c1 x2 c2 y,
    -    x1 ≤ x2 →
    -    x2 ≤ x1 + Z.of_N c1 → (
    -    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    -    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
    - +    x1 ≤ x2 →
    +    x2 ≤ x1 + Z.of_N c1 → (
    +    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    +    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
    +  Proof.
    +    intros x1 c1 x2 c2 y H_x1_le H_x2_le.
    +    rewrite !In_elementsZ_single merge_interval_size_eq_max;
    +      last first. {
    +      eapply Z.le_trans; eauto.
    +      by apply Z_le_add_r.
    +    }
    +    rewrite Z.max_lt_iff.
    +    split. {
    +      move ⇒ [H_x_le] [] H_y_lt. {
    +        by left.
    +      } {
    +        case_eq (Z.leb x2 y). {
    +          move ⇒ /Z.leb_le H_y'_le.
    +          by right.
    +        } {
    +          move ⇒ /Z.leb_gt H_y_lt_x2.
    +          left.
    +          split ⇒ //.
    +          eapply Z.lt_le_trans; eauto.
    +        }
    +      }
    +    } {
    +      move ⇒ []. {
    +        tauto.
    +      } {
    +        move ⇒ [H_x2_le'] H_y_lt.
    +        split. {
    +          eapply Z.le_trans; eauto.
    +        } {
    +          by right.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma insert_interval_begin_spec : ∀ y s x c,
    -     interval_list_invariant s = true →
    -     interval_list_elements_greater x s = true →
    -     (c ≠ 0)%N →
    -      (
    -     interval_list_invariant (insert_interval_begin x c s) = true ∧
    -     (InZ y (insert_interval_begin x c s) ↔
    -     (List.In y (elementsZ_single x c) ∨ InZ y s))).
    - +     interval_list_invariant s = true →
    +     interval_list_elements_greater x s = true →
    +     (c ≠ 0)%N →
    +      (
    +     interval_list_invariant (insert_interval_begin x c s) = true ∧
    +     (InZ y (insert_interval_begin x c s) ↔
    +     (List.In y (elementsZ_single x c) ∨ InZ y s))).
    +  Proof.
    +    intros y.
    +    induction s as [| [y' c'] s' IH]. {
    +      intros x c _ H_c_neq H_z_lt.
    +      rewrite /insert_interval_begin InZ_cons interval_list_invariant_cons //.
    +    } {
    +      intros x c.
    +      rewrite interval_list_invariant_cons
    +       interval_list_elements_greater_cons.
    +      move ⇒ [H_gr] [H_c'_neq_0] H_inv_s' H_x_lt H_c_neq_0.
    +      unfold insert_interval_begin.
    +      Z_named_compare_cases H_y'; fold insert_interval_begin. {
    +        subst.
    +        rewrite !InZ_cons elementsZ_single_add in_app_iff.
    +        split; last tauto.
    +        rewrite interval_list_invariant_cons N2Z.inj_add
    +          Z.add_assoc N.eq_add_0.
    +        tauto.
    +      } {
    +        rewrite !InZ_cons !interval_list_invariant_cons
    +          interval_list_elements_greater_cons.
    +        repeat split ⇒ //.
    +      } {
    +        set c'' := merge_interval_size x c y' c'.
    +        have H_x_lt' : x < y' + Z.of_N c'. {
    +          eapply Z.lt_le_trans with (m := y') ⇒ //.
    +          by apply Z_le_add_r.
    +        }
    +
    +        have H_pre : interval_list_elements_greater x s' = true. {
    +          eapply interval_list_elements_greater_impl; eauto.
    +          by apply Z.lt_le_incl.
    +        }
    +        have H_pre2 : c'' ≠ 0%N. {
    +          by apply merge_interval_size_neq_0.
    +        }
    +        move : (IH x c'' H_inv_s' H_pre H_pre2) ⇒ {IH} {H_pre} {H_pre2} [->] →.
    + +
    +        split; first reflexivity.
    +        unfold c''; clear c''.
    +        rewrite In_merge_interval. {
    +          rewrite InZ_cons.
    +          tauto.
    +        } {
    +          by apply Z.lt_le_incl.
    +        } {
    +          by apply Z.lt_le_incl.
    +        }
    +      }
    +    }
    +  Qed.
    +
    @@ -1432,23 +2383,153 @@

    Library MSetsExtra.MSetIntervals

      Lemma addZ_InZ :
    -   âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
    - +   âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
    +  Proof.
    +    move ⇒ s x y.
    +    induction s as [| [z c] s' IH]. {
    +      move ⇒ _.
    +      rewrite /InZ addZ_alt_def
    +              elementsZ_cons elementsZ_nil app_nil_l -in_rev
    +              In_elementsZ_single1 /=.
    +      firstorder.
    +    } {
    +      move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c'.
    +      move : (IH H_inv_c') ⇒ {IH} IH.
    +      rewrite addZ_alt_def.
    +      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    +      move : (interval_1_compare_elim x z c).
    +      case (interval_1_compare x (z, c));
    +        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    +        move ⇒ →.
    +        rewrite elementsZ_single_succ_front /=.
    +        tauto.
    +      } {
    +        move ⇒ [] // H_x_in.
    +        split; first tauto.
    +        move ⇒ [] // <-.
    +        left.
    +        by rewrite In_elementsZ_single.
    +      } {
    +        rewrite IH.
    +        tauto.
    +      } {
    +        move ⇒ H_x_eq.
    +        have → : (InZ y (insert_interval_begin z (N.succ c) s') ↔
    +                   List.In y (elementsZ_single z (N.succ c)) ∨ InZ y s'). {
    +          eapply insert_interval_begin_spec. {
    +            by apply H_inv_c'.
    +          } {
    +            eapply interval_list_elements_greater_impl; eauto.
    +            apply Z_le_add_r.
    +          } {
    +            by apply N.neq_succ_0.
    +          }
    +        }
    +        rewrite -H_x_eq elementsZ_single_succ in_app_iff /=.
    +        tauto.
    +      }
    +    }
    +  Qed.
    +
      Lemma addZ_invariant : ∀ s x,
    -    interval_list_invariant s = true →
    -    interval_list_invariant (addZ x s) = true.
    - +    interval_list_invariant s = true →
    +    interval_list_invariant (addZ x s) = true.
    +  Proof.
    +    move ⇒ s x.
    +    induction s as [| [z c] s' IH]. {
    +      move ⇒ _.
    +      by simpl.
    +    } {
    +      move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0]
    +              H_inv_c'.
    +      move : (IH H_inv_c') ⇒ {IH} IH.
    +      rewrite addZ_alt_def.
    +      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    +      move : (interval_1_compare_elim x z c).
    +      case_eq (interval_1_compare x (z, c)) ⇒ H_comp;
    +        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    +        move ⇒ H_z_gt.
    +        rewrite interval_list_invariant_cons /= !andb_true_iff !H_succ.
    +        repeat split ⇒ //. {
    +          by apply Z.ltb_lt.
    +        } {
    +          apply negb_true_iff, N.eqb_neq ⇒ //.
    +        }
    +      } {
    +        move ⇒ ?; subst.
    +        rewrite /= !andb_true_iff.
    +        repeat split ⇒ //. {
    +          move : H_greater.
    +          rewrite Z.add_succ_l -Z.add_succ_r N2Z.inj_succ //.
    +        } {
    +          apply negb_true_iff, N.eqb_neq ⇒ //.
    +          apply N.neq_succ_0.
    +        }
    +      } {
    +        move ⇒ [] // _.
    +        rewrite interval_list_invariant_cons /=.
    +        tauto.
    +      } {
    +        rewrite interval_list_invariant_cons.
    +        move ⇒ H_lt_x.
    +        repeat split ⇒ //.
    +        apply interval_list_elements_greater_intro ⇒ //.
    +        move ⇒ xx.
    +        rewrite addZ_InZ ⇒ //.
    +        move ⇒ [<- //|].
    +        apply interval_list_elements_greater_alt2_def ⇒ //.
    +      } {
    +        move ⇒ H_x_eq.
    +        apply insert_interval_begin_spec ⇒ //. {
    +          eapply interval_list_elements_greater_impl; eauto.
    +          apply Z_le_add_r.
    +        } {
    +          by apply N.neq_succ_0.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Global Instance add_ok s x : ∀ `(Ok s), Ok (add x s).
    - +  Proof.
    +    move ⇒ H_ok_s.
    +    move : (H_ok_s).
    +    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    +    move ⇒ [H_isok_s] H_pre.
    +    split. {
    +      apply addZ_invariant ⇒ //.
    +    } {
    +      intros y.
    +      move : (addZ_InZ s (Enc.encode x) y H_isok_s).
    +      rewrite /InZ ⇒ →.
    +      move ⇒ []. {
    +        move ⇒ <-.
    +        by ∃ x.
    +      } {
    +        move ⇒ /H_pre //.
    +      }
    +    }
    +  Qed.
    +
      Lemma add_spec :
       âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
    - +     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
    +  Proof.
    +    intros s x y Hs.
    +    have Hs' := (add_ok s x Hs).
    +    rewrite !In_InZ.
    +    rewrite /add addZ_InZ. {
    +      rewrite -Enc.encode_eq; firstorder.
    +    } {
    +      apply Hs.
    +    }
    +  Qed.
    +
    @@ -1460,12 +2541,23 @@

    Library MSetsExtra.MSetIntervals


      Global Instance empty_ok : Ok empty.
    +  Proof.
    +    rewrite /empty Ok_nil //.
    +  Qed.

    -  Lemma empty_spec' : ∀ x, (In x empty ↔ False).
    +  Lemma empty_spec' : ∀ x, (In x empty ↔ False).
    +    rewrite /Empty /empty /In elements_nil.
    +    intros a.
    +    rewrite InA_nil //.
    +  Qed.

      Lemma empty_spec : Empty empty.
    +  Proof.
    +    rewrite /Empty ⇒ a.
    +    rewrite empty_spec' //.
    +  Qed.

    @@ -1477,8 +2569,28 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
    - +  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
    +  Proof.
    +    intros [ | [x c] s]. {
    +      split ⇒ // _.
    +      apply empty_spec.
    +    } {
    +      rewrite /= /Empty Ok_cons.
    +      move ⇒ [_] [H_c_neq] [H_enc] _.
    +      split ⇒ //.
    +      move ⇒ H.
    +      contradiction (H (Enc.decode x)) ⇒ {H}.
    +      rewrite /In InA_alt elements_cons.
    +      âˆƒ (Enc.decode x).
    +      split; first by apply Enc.E.eq_equiv.
    +      rewrite in_app_iff; left.
    +      rewrite /elements_single in_map_iff.
    +      âˆƒ x.
    +      split ⇒ //.
    +      apply In_elementsZ_single_hd ⇒ //.
    +    }
    +  Qed.
    +
    @@ -1490,10 +2602,25 @@

    Library MSetsExtra.MSetIntervals


      Global Instance singleton_ok x : Ok (singleton x).
    +  Proof.
    +    rewrite singleton_alt_def.
    +    apply add_ok.
    +    apply empty_ok.
    +  Qed.

    -  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
    - +  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
    +  Proof.
    +    intros x y.
    +    rewrite singleton_alt_def.
    +    rewrite (add_spec empty x y) /empty /In elements_nil InA_nil.
    +    split. {
    +      move ⇒ [] //.
    +    } {
    +      by left.
    +    }
    +  Qed.
    +
    @@ -1504,12 +2631,33 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
    - +  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
    +  Proof.
    +    induction l as [| x l' IH]. {
    +      done.
    +    } {
    +      move ⇒ s H_s_ok /=.
    +      apply IH.
    +      by apply add_ok.
    +    }
    +  Qed.
    +
    -  Lemma add_list_spec : ∀ x l s, Ok s →
    -     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
    - +  Lemma add_list_spec : ∀ x l s, Ok s →
    +     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
    +  Proof.
    +    move ⇒ x.
    +    induction l as [| y l' IH]. {
    +      intros s H.
    +      rewrite /= InA_nil.
    +      tauto.
    +    } {
    +      move ⇒ s H_ok /=.
    +      rewrite IH add_spec InA_cons.
    +      tauto.
    +    }
    +  Qed.
    +
    @@ -1521,19 +2669,19 @@

    Library MSetsExtra.MSetIntervals


      Lemma union_aux_flatten_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +    union_aux s1 s2 acc =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
                  union_aux l1 (
    -                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
    +                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
              | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
                  union_aux l1 (
                    insert_interval_begin y1
    @@ -1547,26 +2695,48 @@

    Library MSetsExtra.MSetIntervals

              | ICR_subsume_2 ⇒ union_aux s1 l2 acc
            end
        end.
    +  Proof.
    +    intros s1 s2 acc.
    +    case s1, s2 ⇒ //.
    +  Qed.

      Lemma union_aux_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    List.rev_append acc (union s1 s2).
    +    union_aux s1 s2 acc =
    +    List.rev_append acc (union s1 s2).
    +  Proof.
    +    rewrite /union.
    +    intros s1 s2 acc.
    +    move : acc s2.
    +    induction s1 as [| [y1 c1] l1 IH1]. {
    +      intros acc s2.
    +      rewrite !union_aux_flatten_alt_def.
    +      rewrite !rev_append_rev //.
    +    }
    +    intros acc s2; move : acc.
    +    induction s2 as [| [y2 c2] l2 IH2]; first by simpl.
    +    move ⇒ acc.
    +    rewrite !(union_aux_flatten_alt_def ((y1, c1)::l1) ((y2, c2)::l2)).
    +    case (interval_compare (y1, c1) (y2, c2));
    +      rewrite ?(IH1 ((y1, c1) :: acc)) ?(IH1 ((y1, c1) :: nil))
    +              ?(IH2 ((y2, c2) :: acc)) ?(IH2 ((y2, c2) :: nil))
    +              ?(IH1 acc) //.
    +  Qed.

      Lemma union_alt_def : ∀ (s1 s2 : t),
    -    union s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ s2
    -    | (_, nil) ⇒ s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
    +    union s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ s2
    +    | (_, nil) ⇒ s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
              | ICR_before_touch ⇒
    -              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    -          | ICR_after ⇒ (y2, c2) :: union s1 l2
    +              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    +          | ICR_after ⇒ (y2, c2) :: union s1 l2
              | ICR_after_touch ⇒ union l1
    -              (insert_interval_begin y2 ((c1+c2)%N) l2)
    +              (insert_interval_begin y2 ((c1+c2)%N) l2)
              | ICR_overlap_before ⇒
                  union l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2)
              | ICR_overlap_after ⇒
    @@ -1576,31 +2746,340 @@

    Library MSetsExtra.MSetIntervals

              | ICR_subsume_2 ⇒ union s1 l2
            end
         end.
    +  Proof.
    +    intros s1 s2.
    +    rewrite /union union_aux_flatten_alt_def.
    +    case s1 as [| [y1 c1] l1] ⇒ //.
    +    case s2 as [| [y2 c2] l2] ⇒ //.
    +    case (interval_compare (y1, c1) (y2, c2));
    +      rewrite union_aux_alt_def //.
    +  Qed.

      Lemma union_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
    +  Proof.
    +    intro s1.
    +    induction s1 as [| [y1 c1] l1 IH1]. {
    +      intros s2 _ _ y.
    +      rewrite union_alt_def /InZ /=.
    +      tauto.
    +    } {
    +      induction s2 as [| [y2 c2] l2 IH2]. {
    +        intros _ _ y.
    +        rewrite union_alt_def /InZ /=.
    +        tauto.
    +      } {
    +        move ⇒ H_inv_s1 H_inv_s2.
    +        move : (H_inv_s1) (H_inv_s2).
    +        rewrite !interval_list_invariant_cons.
    +        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    +        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          âˆ€ y : Z, InZ y (union l1 s2) ↔ InZ y l1 ∨ InZ y s2. {
    +          intros. by apply IH1.
    +        }
    +        move ⇒ {IH1} IH1 y.
    +        rewrite union_alt_def.
    +        move : (interval_compare_elim y1 c1 y2 c2).
    +        case (interval_compare (y1, c1) (y2, c2)). {
    +          rewrite !InZ_cons IH1 // InZ_cons.
    +          tauto.
    +        } {
    +          move ⇒ H_y2_eq.
    +          replace (c1 + c2)%N with (merge_interval_size y1 c1 y2 c2);
    +            last first. {
    +            rewrite -H_y2_eq merge_interval_size_add //.
    +          }
    +          set c'' := merge_interval_size y1 c1 y2 c2.
    +          have [H_inv_insert H_InZ_insert] :
    +               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y1 c'' l2) ↔
    +                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
    +            apply insert_interval_begin_spec ⇒ //. {
    +              eapply interval_list_elements_greater_impl; eauto.
    +              rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    +              apply Z_le_add_r.
    +            } {
    +              by apply merge_interval_size_neq_0.
    +            }
    +          }
    +  
    +          rewrite IH1 ⇒ //.
    +          rewrite H_InZ_insert !InZ_cons /c''.
    +          rewrite -H_y2_eq In_merge_interval. {
    +            tauto.
    +          } {
    +            apply Z_le_add_r.
    +          } {
    +            by apply Z.le_refl.
    +          }
    +        } {
    +          move ⇒ [H_y1_lt] [H_y2_lt] H_y1_c1_lt.
    +          set c'' := merge_interval_size y1 c1 y2 c2.
    +          have [H_inv_insert H_InZ_insert] :
    +               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y1 c'' l2) ↔
    +                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
    +            apply insert_interval_begin_spec ⇒ //. {
    +              eapply interval_list_elements_greater_impl; eauto.
    +              apply Z_lt_le_add_r ⇒ //.
    +            } {
    +              by apply merge_interval_size_neq_0.
    +            }
    +          }
    +          rewrite IH1 ⇒ //.
    +          rewrite H_InZ_insert !InZ_cons /c''.
    +          rewrite In_merge_interval. {
    +            tauto.
    +          } {
    +            by apply Z.lt_le_incl.
    +          } {
    +            by apply Z.lt_le_incl.
    +          }
    +        } {
    +          move ⇒ [H_y2_lt] [H_y1_lt] H_y2_c_lt.
    +          set c'' := merge_interval_size y2 c2 y1 c1.
    +          have [H_inv_insert H_InZ_insert] :
    +               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y2 c'' l2) ↔
    +                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
    +            apply insert_interval_begin_spec ⇒ //. {
    +              eapply interval_list_elements_greater_impl; eauto.
    +              apply Z_le_add_r.
    +            } {
    +              by apply merge_interval_size_neq_0.
    +            }
    +          }
    +  
    +          rewrite IH1 ⇒ //.
    +          rewrite H_InZ_insert !InZ_cons /c''.
    +          rewrite In_merge_interval. {
    +            tauto.
    +          } {
    +            by apply Z.lt_le_incl.
    +          } {
    +            by apply Z.lt_le_incl.
    +          }
    +        } {
    +          move ⇒ [? ?]; subst.
    +          rewrite IH1 ⇒ //.
    +          rewrite !InZ_cons.
    +          tauto.
    +        } {
    +          move ⇒ [H_y2_le] [H_y1_c1_le] _.
    +          rewrite IH1 ⇒ //.
    +          rewrite !InZ_cons.
    +          suff : (List.In y (elementsZ_single y1 c1) →
    +                  List.In y (elementsZ_single y2 c2)). {
    +            tauto.
    +          }
    +          rewrite !In_elementsZ_single.
    +          move ⇒ [H_y1_le H_y_lt].
    +          split; omega.
    +        } {
    +          move ⇒ [H_y1_le] [H_y2_c2_le] _.
    +          rewrite IH2.
    +          rewrite !InZ_cons.
    +          suff : (List.In y (elementsZ_single y2 c2) →
    +                  List.In y (elementsZ_single y1 c1)). {
    +            tauto.
    +          }
    +          rewrite !In_elementsZ_single.
    +          move ⇒ [H_y2_le H_y_lt].
    +          split; omega.
    +        } {
    +          rewrite !InZ_cons IH2 !InZ_cons.
    +          tauto.
    +        } {
    +          move ⇒ H_y1_eq.
    +          replace (c1 + c2)%N with (merge_interval_size y2 c2 y1 c1);
    +            last first. {
    +            rewrite -H_y1_eq merge_interval_size_add N.add_comm //.
    +          }
    +          set c'' := merge_interval_size y2 c2 y1 c1.
    +          have [H_inv_insert H_InZ_insert] :
    +               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y2 c'' l2) ↔
    +                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
    +            apply insert_interval_begin_spec ⇒ //. {
    +              eapply interval_list_elements_greater_impl; eauto.
    +              apply Z_le_add_r.
    +            } {
    +              by apply merge_interval_size_neq_0.
    +            }
    +          }
    +  
    +          rewrite IH1 ⇒ //.
    +          rewrite H_InZ_insert !InZ_cons /c''.
    +          rewrite -H_y1_eq In_merge_interval. {
    +            tauto.
    +          } {
    +            apply Z_le_add_r.
    +          } {
    +            by apply Z.le_refl.
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma union_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (union s1 s2) = true.
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (union s1 s2) = true.
    +  Proof.
    +    intro s1.
    +    induction s1 as [| [y1 c1] l1 IH1]. {
    +      intros s2 _ H_inv_s2.
    +      rewrite union_alt_def /InZ //.
    +    } {
    +      induction s2 as [| [y2 c2] l2 IH2]. {
    +        intros H_inv_s1 _.
    +        rewrite union_alt_def /InZ //.
    +      } {
    +        move ⇒ H_inv_s1 H_inv_s2.
    +        move : (H_inv_s1) (H_inv_s2).
    +        rewrite !interval_list_invariant_cons.
    +        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    +        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          interval_list_invariant (union l1 s2) = true. {
    +          intros. by apply IH1.
    +        }
    +        move ⇒ {IH1} IH1.
    + +
    +        rewrite union_alt_def.
    +        move : (interval_compare_elim y1 c1 y2 c2).
    +        case (interval_compare (y1, c1) (y2, c2)). {
    +          move ⇒ H_lt_y2.
    +          have H_inv' : interval_list_invariant (union l1 ((y2, c2) :: l2)) = true. {
    +            by apply IH1.
    +          }
    +
    +          rewrite interval_list_invariant_cons.
    +          repeat split ⇒ //.
    +          apply interval_list_elements_greater_intro ⇒ // x.
    +          rewrite union_InZ ⇒ //.
    +          move ⇒ []. {
    +            apply interval_list_elements_greater_alt2_def ⇒ //.
    +          } {
    +            apply interval_list_elements_greater_alt2_def ⇒ //.
    +            rewrite interval_list_elements_greater_cons //.
    +          }
    +        } {
    +          move ⇒ H_y2_eq.
    +          apply IH1.
    +          apply insert_interval_begin_spec ⇒ //. {
    +            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    +            rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    +            apply Z_le_add_r.
    +          } {
    +            rewrite N.eq_add_0.
    +            tauto.
    +          }
    +        } {
    +          move ⇒ [H_y1_lt] _.
    +          apply IH1.
    +          apply insert_interval_begin_spec ⇒ //. {
    +            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    +            apply Z_lt_le_add_r ⇒ //.
    +          } {
    +            apply merge_interval_size_neq_0 ⇒ //.
    +          }
    +        } {
    +          move ⇒ [H_y2_lt] _.
    +          apply IH1.
    +          apply insert_interval_begin_spec ⇒ //. {
    +            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    +            apply Z_le_add_r ⇒ //.
    +          } {
    +            apply merge_interval_size_neq_0 ⇒ //.
    +          }
    +        } {
    +          move ⇒ [? ?]; subst.
    +          apply IH1 ⇒ //.
    +        } {
    +          move ⇒ _.
    +          apply IH1 ⇒ //.
    +        } {
    +          move ⇒ _.
    +          apply IH2 ⇒ //.
    +        } {
    +          move ⇒ H_lt_y1.
    +          rewrite interval_list_invariant_cons ⇒ //.
    +          repeat split ⇒ //.
    +          apply interval_list_elements_greater_intro ⇒ // x.
    +          rewrite union_InZ ⇒ //.
    +          move ⇒ []. {
    +            apply interval_list_elements_greater_alt2_def ⇒ //.
    +            rewrite interval_list_elements_greater_cons //.
    +          } {
    +            apply interval_list_elements_greater_alt2_def ⇒ //.
    +          }
    +        } {
    +          move ⇒ H_y1_eq.
    +          apply IH1 ⇒ //.
    +          apply insert_interval_begin_spec ⇒ //. {
    +            eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    +            apply Z_le_add_r.
    +          } {
    +            rewrite N.eq_add_0.
    +            tauto.
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +

      Global Instance union_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (union s1 s2).
    - +  Proof.
    +    move ⇒ H_ok_s1 H_ok_s2.
    +    move : (H_ok_s1) (H_ok_s2).
    +    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    +    move ⇒ [H_inv_s1] H_pre1.
    +    move ⇒ [H_inv_s2] H_pre2.
    +    split. {
    +      apply union_invariant ⇒ //.
    +    } {
    +      intros y.
    +      move : (union_InZ s1 s2 H_inv_s1 H_inv_s2).
    +      rewrite /InZ ⇒ →.
    +      move ⇒ []. {
    +        apply H_pre1.
    +      } {
    +        apply H_pre2.
    +      }
    +    }
    +  Qed.
    +
      Lemma union_spec :
       âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (union s s') ↔ In x s ∨ In x s'.
    - +   In x (union s s') ↔ In x s ∨ In x s'.
    +  Proof.
    +    intros s s' x H_ok H_ok'.
    +    rewrite !In_InZ.
    +    rewrite union_InZ ⇒ //. {
    +      apply H_ok.
    +    } {
    +      apply H_ok'.
    +    }
    +  Qed.
    +
    @@ -1612,64 +3091,579 @@

    Library MSetsExtra.MSetIntervals


      Lemma inter_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    -                               (acc', s') ⇒ (acc' ++ acc, s')
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
    - +  Proof.
    +    intros y2 c2.
    +    induction s as [| [y1 c1] s' IH] ⇒ acc. {
    +      rewrite /inter_aux app_nil_l //.
    +    } {
    +      simpl.
    +      case_eq (inter_aux y2 c2 nil s') ⇒ acc'' s'' H_eq.
    +      case (interval_compare (y1, c1) (y2, c2));
    +        rewrite ?(IH acc)
    +                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: acc))
    +                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: nil))
    +                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: acc))
    +                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: nil))
    +                ?(IH ((y1, c1) :: acc))
    +                ?(IH ((y1, c1) :: nil))
    +                
    +                ?H_eq -?app_assoc -?app_comm_cons //.
    +    }
    +  Qed.
    +
      Lemma inter_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    -                     List.In x2 (elementsZ_single y2 c2) →
    -                     Z.succ x1 < x2) →
    -      (c2 ≠ 0%N) →
    -      match (inter_aux y2 c2 acc s) with (acc', s') ⇒
    -        (∀ y, (InZ y acc' ↔
    -                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    -        (∀ y, InZ y s' → InZ y s) ∧
    -        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y s') ∧
    -        interval_list_invariant (rev acc') = true ∧
    -        interval_list_invariant s' = true
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    +                     List.In x2 (elementsZ_single y2 c2) →
    +                     Z.succ x1 < x2) →
    +      (c2 ≠ 0%N) →
    +      match (inter_aux y2 c2 acc s) with (acc', s') ⇒
    +        (∀ y, (InZ y acc' ↔
    +                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    +        (∀ y, InZ y s' → InZ y s) ∧
    +        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y s') ∧
    +        interval_list_invariant (rev acc') = true ∧
    +        interval_list_invariant s' = true
          end.
    - +  Proof.
    +    intros y2 c2.
    +    induction s as [| [y1 c1] s1' IH] ⇒ acc. {
    +      rewrite /inter_aux.
    +      move ⇒ H_inv_acc _ _ _.
    +      split; last split; try done.
    +      move ⇒ y. rewrite InZ_nil.
    +      tauto.
    +    } {
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ H_inv_acc [H_gr_s1'] [H_c1_neq_0] H_inv_s1'.
    +      move ⇒ H_in_acc_lt H_c2_neq_0.
    + +
    +      rewrite inter_aux_alt_def.
    +      case_eq (inter_aux y2 c2 nil ((y1, c1) :: s1')).
    +      move ⇒ acc' s' H_inter_aux_eq.
    + +
    +      set P1 := ∀ y : Z,
    +        (InZ y acc' ↔
    +        ((InZ y ((y1, c1) :: s1') ∧ List.In y (elementsZ_single y2 c2)))).
    +      set P2 := (∀ y,
    +                  (InZ y s' → InZ y ((y1, c1) :: s1')) ∧
    +                  (InZ y ((y1, c1) :: s1') →
    +                     y2 + Z.of_N c2 < y → InZ y s')).
    +      set P3 := interval_list_invariant (rev acc') = true.
    +      set P4 := interval_list_invariant s' = true.
    + +
    +      suff : (P1 ∧ P2 ∧ P3 ∧ P4). {
    +        move ⇒ [H_P1] [H_P2] [H_P3] H_P4.
    +        split; last split; last split; last split. {
    +          move ⇒ y.
    +          move : (H_P1 y).
    +          rewrite !InZ_app InZ_cons !In_elementsZ_single.
    +          move ⇒ <-.
    +          tauto.
    +        } {
    +          move ⇒ y H_y_in.
    +          by apply H_P2.
    +        } {
    +          move ⇒ y H_y_in.
    +          by apply H_P2.
    +        } {
    +          rewrite rev_app_distr.
    +          apply interval_list_invariant_app_intro ⇒ //.
    +          move ⇒ x1 x2.
    +          rewrite !InZ_rev.
    +          move ⇒ H_x1_in /H_P1 [H_x2_in1] H_x2_in2.
    +          apply H_in_acc_lt ⇒ //.
    +        } {
    +          apply H_P4.
    +        }
    +      }
    +
    +      move : (H_gr_s1').
    +      rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1'_alt.
    + +
    +      have : ∀ (acc : list (Z × N)),
    +        interval_list_invariant (rev acc) = true →
    +        (∀ y, InZ y acc ↔ (
    +           y1 ≤ y < y1 + Z.of_N c1 ∧
    +           y2 ≤ y < y2 + Z.of_N c2)) →
    +        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    +        (inter_aux y2 c2 acc s1' = (acc', s')) →
    +        P1 ∧ P2 ∧ P3 ∧ P4. {
    +        
    +        intros acc0 H_inv_acc0 H_in_acc0 H_y2c_lt H_inter_aux_eq0.
    +        have H_in_acc0_lt : (∀ x1 x2 : Z,
    +          InZ x1 acc0 →
    +          InZ x2 s1' →
    +          List.In x2 (elementsZ_single y2 c2) →
    +          Z.succ x1 < x2). {
    +
    +          intros x1 x2 H_x1_in_acc0 H_x2_in_s1' H_x2_in_yc2.
    + +
    +          suff H_yc1_lt_x2 : Z.succ x1 ≤ y1 + Z.of_N c1. {
    +            apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +            by apply H_gr_s1'_alt.
    +          }
    +          move : (H_x1_in_acc0).
    +          rewrite H_in_acc0 Z.le_succ_l.
    +          tauto.
    +        }
    +        
    +        move : (IH acc0 H_inv_acc0 H_inv_s1' H_in_acc0_lt H_c2_neq_0).
    +        rewrite H_inter_aux_eq0.
    +        move ⇒ [H1] [H2] [H3] [H4] H5.
    +        split; last split ⇒ //. {
    +          move ⇒ y.
    +          rewrite (H1 y).
    +          rewrite InZ_cons !In_elementsZ_single
    +                  H_in_acc0.
    +          tauto.
    +        } {
    +          move ⇒ y.
    +          split. {
    +            move ⇒ /H2.
    +            rewrite InZ_cons.
    +            by right.
    +          } {
    +            rewrite InZ_cons In_elementsZ_single.
    +            move ⇒ []. {
    +              move ⇒ [_] H_y_lt H_lt_y.
    +              exfalso.
    +              suff : (y < y) by apply Z.lt_irrefl.
    +              apply Z.lt_le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +              apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    + +
    +              by apply Z.lt_le_incl.
    +            } {
    +              apply H3.
    +            }
    +          }
    +        }
    +      }
    +      move ⇒ {IH} IH.
    + +
    +      clear H_inv_acc H_in_acc_lt acc.
    +      move : (interval_compare_elim y1 c1 y2 c2) H_inter_aux_eq.
    +      unfold inter_aux.
    +      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    +         fold inter_aux. {
    +        move ⇒ H_lt_y2.
    +        apply IH. {
    +          done.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_nil.
    +          split ⇒ //.
    +          omega.
    +        } {
    +          apply Z.le_trans with (m := y2). {
    +            by apply Z.lt_le_incl.
    +          } {
    +            apply Z_le_add_r.
    +          }
    +        }
    +      } {
    +        move ⇒ H_eq_y2.
    +        apply IH. {
    +          done.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_nil.
    +          split ⇒ //.
    +          omega.
    +        } {
    +          rewrite H_eq_y2.
    +          apply Z_le_add_r.
    +        }
    +      } {
    +        move ⇒ [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2.
    +        apply IH. {
    +          rewrite interval_list_invariant_sing.
    +          by apply Z_to_N_minus_neq_0.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last omega.
    +          replace (y1 + (y2 - y1)) with y2 by omega.
    +          split; omega.
    +        } {
    +          by apply Z.lt_le_incl.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3 /P4.
    +        move ⇒ [H_y2_lt] [H_y1_lt] H_yc1_lt.
    +        move ⇒ [] H_acc' H_s'.
    +        clear IH P1 P2 P3 P4 H_comp.
    +        subst s' acc'.
    +        split; last split; last split. {
    +          move ⇒ y.
    +          have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) =
    +                             y2 + Z.of_N c2. {
    +            rewrite Z2N.id; omega.
    +          }
    +          
    +          rewrite !InZ_cons !In_elementsZ_single InZ_nil H_yc2_intro.
    +          split. {
    +            move ⇒ [] //.
    +            move ⇒ [H_y1_le] H_y_lt.
    +            split; last by omega.
    +            left. omega.
    +          } {
    +            move ⇒ [H_in_s] [H_y2_le] H_y_lt.
    +            left.
    +            split; last assumption.
    +            move : H_in_s ⇒ []. {
    +              tauto.
    +            } {
    +              move ⇒ /H_gr_s1'_alt H_lt_y.
    +              apply Z.le_trans with (m := y1 + Z.of_N c1). {
    +                by apply Z_le_add_r.
    +              } {
    +                by apply Z.lt_le_incl.
    +              }
    +            }
    +          }
    +        } {
    +          move ⇒ y.
    +          split; done.
    +        } {
    +          rewrite interval_list_invariant_sing.
    +          by apply Z_to_N_minus_neq_0.
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3 /P4.
    +        move ⇒ [H_y12_eq] H_c12_eq [] H_acc' H_s'.
    +        clear IH P1 P2 P3 P4 H_comp.
    +        subst.
    +        split; last split; last split. {
    +          move ⇒ y.
    +          rewrite !InZ_cons InZ_nil In_elementsZ_single.
    +          split; last by tauto. {
    +            move ⇒ [] //.
    +            tauto.
    +          }
    +        } {
    +          move ⇒ y.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split; first by right.
    +          move ⇒ [] //.
    +          move ⇒ [_] H_y_lt H_lt_y.
    +          exfalso.
    +          suff : (y2 + Z.of_N c2 < y2 + Z.of_N c2) by
    +              apply Z.lt_irrefl.
    +          apply Z.lt_trans with (m := y) ⇒ //.
    +        } {
    +          rewrite interval_list_invariant_sing //.
    +        } {
    +          assumption.
    +        }
    +      } {
    +        move ⇒ [H_y2_le_y1] [H_yc1_le_yc2] _.
    +        apply IH. {
    +          by rewrite interval_list_invariant_sing.
    +        } {
    +          move ⇒ y.
    +          rewrite InZ_cons InZ_nil In_elementsZ_single.
    +          split. {
    +            move ⇒ [] //.
    +            move ⇒ [H_y1_le] H_y_lt.
    +            split; first done.
    +            split; omega.
    +          } {
    +            move ⇒ [?] _.
    +            by left.
    +          }
    +        } {
    +          assumption.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3 /P4.
    +        move ⇒ [H_y1_le] [H_yc2_le] _.
    +        move ⇒ [] H_acc' H_s'.
    +        clear IH P1 P2 P3 P4 H_comp.
    +        subst.
    +        split; last split; last split. {
    +          move ⇒ y.
    +          rewrite !InZ_cons !In_elementsZ_single InZ_nil.
    +          split. {
    +            move ⇒ [] //.
    +            move ⇒ [H_y2_le] H_y_lt.
    +            split; last by omega.
    +            left. omega.
    +          } {
    +            move ⇒ [H_in_s] [H_y2_le] H_y_lt.
    +            by left.
    +          }
    +        } {
    +          tauto.
    +        } {
    +          by rewrite interval_list_invariant_sing.
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3 /P4.
    +        move ⇒ H_yc2_lt [] H_acc' H_s'.
    +        clear IH P1 P2 P3 P4 H_comp.
    +        subst.
    +        split; last split; last split. {
    +          move ⇒ y.
    +          rewrite InZ_cons !In_elementsZ_single InZ_nil.
    +          split; first done.
    +          move ⇒ [] []. {
    +            move ⇒ [H_y1_le_y] H_y_lt_yc1.
    +            move ⇒ [H_y2_le_y] H_y_lt_yc2.
    +            omega.
    +          } {
    +            move ⇒ /H_gr_s1'_alt H_lt_y [_] H_y_lt.
    +            suff : (y1 + Z.of_N c1 < y1). {
    +              apply Z.nlt_ge.
    +              apply Z_le_add_r.
    +            }
    +            omega.
    +          }
    +        } {
    +          tauto.
    +        } {
    +          done.
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3 /P4.
    +        move ⇒ H_y1_eq [] H_acc' H_s'.
    +        clear IH P1 P2 P3 P4 H_comp.
    +        subst acc' s'.
    +        split; last split; last split. {
    +          move ⇒ y.
    +          rewrite InZ_cons !In_elementsZ_single InZ_nil.
    +          split; first done.
    +          move ⇒ [] []. {
    +            move ⇒ [H_y1_le_y] H_y_lt_yc1.
    +            move ⇒ [H_y2_le_y] H_y_lt_yc2.
    +            omega.
    +          } {
    +            move ⇒ /H_gr_s1'_alt H_lt_y [_] H_y_lt.
    +            suff : (y1 + Z.of_N c1 < y1). {
    +              apply Z.nlt_ge.
    +              apply Z_le_add_r.
    +            }
    +            omega.
    +          }
    +        } {
    +          tauto.
    +        } {
    +          done.
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma inter_aux2_props :
       âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev acc) = true →
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    -               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    -    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
    - +    interval_list_invariant (rev acc) = true →
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    +               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    +    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
    +  Proof.
    +    induction s2 as [| [y2 c2] s2' IH]. {
    +      move ⇒ s1 acc.
    +      move ⇒ H_inv_acc _ _ _.
    +      unfold inter_aux2.
    +      replace (match s1 with
    +        | nil ⇒ rev' acc
    +        | _ :: _ ⇒ rev' acc
    +               end) with (rev' acc); last by case s1.
    +      rewrite /rev' rev_append_rev app_nil_r.
    +      split; last done.
    +      move ⇒ y.
    +      rewrite InZ_nil InZ_rev.
    +      tauto.
    +    } {
    +      intros s1 acc H_inv_acc H_inv_s1.
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ [H_gr_s2'] [H_c2_neq_0] H_inv_s2'.
    +      move ⇒ H_acc_s12.
    + +
    +      move : H_gr_s2'.
    +      rewrite interval_list_elements_greater_alt2_def //.
    +      move ⇒ H_gr_s2'.
    + +
    +      rewrite /inter_aux2; fold inter_aux2.
    +      case_eq s1. {
    +        move ⇒ H_s1_eq.
    +        split. {
    +          move ⇒ y.
    +          rewrite /rev' rev_append_rev app_nil_r InZ_nil
    +                  InZ_rev.
    +          tauto.
    +        } {
    +          rewrite /rev' rev_append_rev app_nil_r //.
    +        }
    +      } {
    +        move ⇒ [_ _] _ <-.
    +        case_eq (inter_aux y2 c2 acc s1).
    +        move ⇒ acc' s1' H_inter_aux_eq.
    + +
    +        have H_acc_s1_yc2 : ∀ x1 x2 : Z,
    +          InZ x1 acc →
    +          InZ x2 s1 →
    +          List.In x2 (elementsZ_single y2 c2) →
    +          Z.succ x1 < x2. {
    +          intros x1 x2 H_x1_in H_x2_in1 H_x2_in2.
    +          apply H_acc_s12 ⇒ //.
    +          rewrite InZ_cons; by left.
    +        }
    +
    +        move : (inter_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1_yc2 H_c2_neq_0).
    +        rewrite H_inter_aux_eq.
    +        move ⇒ [H_in_acc'] [H_in_s1'_elim] [H_in_s1'_intro]
    +                [H_inv_acc'] H_inv_s1'.
    + +
    +        have H_in_acc'_s2' : ∀ x1 x2 : Z,
    +            InZ x1 acc' → InZ x2 s1' → InZ x2 s2' → Z.succ x1 < x2. {
    +          move ⇒ x1 x2 /H_in_acc'.
    +          move ⇒ []. {
    +            move ⇒ H_in_acc H_in_s1' H_in_s2'.
    +            apply H_acc_s12 ⇒ //. {
    +              by apply H_in_s1'_elim.
    +            } {
    +              rewrite InZ_cons; by right.
    +            }
    +          } {
    +            rewrite In_elementsZ_single.
    +            move ⇒ [H_in_s1] [_] H_x1_lt _.
    +            move ⇒ /H_gr_s2' H_lt_x2.
    +            apply Z.le_lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +            by apply Z.le_succ_l.
    +          }
    +        }
    +       
    +        move : (IH s1' acc' H_inv_acc' H_inv_s1' H_inv_s2' H_in_acc'_s2').
    +        move ⇒ [H_inZ_res] H_inv_res.
    +        split; last assumption.
    +        move ⇒ y.
    +        rewrite H_inZ_res H_in_acc' InZ_cons
    +                In_elementsZ_single.
    +        split. {
    +          move ⇒ []; first by tauto.
    +          move ⇒ [H_y_in_s1' H_y_in_s2'].
    +          right.
    +          split; last by right.
    +          by apply H_in_s1'_elim.
    +        } {
    +          move ⇒ []. {
    +            move ⇒ H_y_in_acc.
    +            by left; left.
    +          } {
    +            move ⇒ [H_y_in_s1].
    +            move ⇒ []. {
    +              move ⇒ H_in_yc2.
    +              by left; right.
    +            } {
    +              right.
    +              split; last assumption.
    +              apply H_in_s1'_intro ⇒ //.
    +              by apply H_gr_s2'.
    +            }
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma inter_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).
    +  Proof.
    +    intros s1 s2 H_inv_s1 H_inv_s2 y.
    +    rewrite /inter.
    + +
    +    move : (inter_aux2_props s2 s1 nil).
    +    move ⇒ [] //.
    +    move ⇒ H_in_inter _.
    +    rewrite H_in_inter InZ_nil.
    +    tauto.
    +  Qed.

      Lemma inter_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (inter s1 s2) = true.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (inter s1 s2) = true.
    +  Proof.
    +    intros s1 s2 H_inv_s1 H_inv_s2.
    +    rewrite /inter.
    + +
    +    move : (inter_aux2_props s2 s1 nil).
    +    move ⇒ [] //.
    +  Qed.


      Global Instance inter_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (inter s1 s2).
    - +  Proof.
    +    move ⇒ H_ok_s1 H_ok_s2.
    +    move : (H_ok_s1) (H_ok_s2).
    +    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    +    move ⇒ [H_inv_s1] H_pre1.
    +    move ⇒ [H_inv_s2] H_pre2.
    +    split. {
    +      apply inter_invariant ⇒ //.
    +    } {
    +      intros y.
    +      move : (inter_InZ s1 s2 H_inv_s1 H_inv_s2).
    +      rewrite /InZ ⇒ →.
    +      move ⇒ [].
    +      move ⇒ /H_pre1 //.
    +    }
    +  Qed.
    +
      Lemma inter_spec :
       âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (inter s s') ↔ In x s ∧ In x s'.
    - +   In x (inter s s') ↔ In x s ∧ In x s'.
    +  Proof.
    +    intros s s' x H_ok H_ok'.
    +    rewrite !In_InZ.
    +    rewrite inter_InZ ⇒ //. {
    +      apply H_ok.
    +    } {
    +      apply H_ok'.
    +    }
    +  Qed.
    +

    @@ -1683,62 +3677,632 @@

    Library MSetsExtra.MSetIntervals


      Lemma diff_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    -                               (acc', s') ⇒ (acc' ++ acc, s')
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
    - +  Proof.
    +    intros y2 c2.
    +    induction s as [| [y1 c1] acc' IH] ⇒ acc. {
    +      rewrite /diff_aux app_nil_l //.
    +    } {
    +      simpl.
    +      case_eq (diff_aux y2 c2 nil acc') ⇒ acc'' s'' H_eq.
    +      case (interval_compare (y1, c1) (y2, c2));
    +        rewrite ?(IH ((y1, c1)::acc)) ?(IH ((y1, c1)::nil))
    +                ?(IH acc) ?(IH ((y1, Z.to_N (y2 - y1)) :: acc))
    +                ?(IH ((y1, Z.to_N (y2 - y1)) :: nil)) ?H_eq;
    +        rewrite ?insert_intervalZ_guarded_app -?app_assoc -?app_comm_cons //.
    +    }
    +  Qed.
    +

      Lemma diff_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (List.rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    -      (∀ x, InZ x acc → x < y2) →
    -      (c2 ≠ 0%N) →
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (List.rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      (∀ x, InZ x acc → x < y2) →
    +      (c2 ≠ 0%N) →
          match (diff_aux y2 c2 acc s) with
    -        (acc', s') ⇒ (∀ y, InZ y (List.rev_append acc' s') ↔
    -                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    -                      (interval_list_invariant (List.rev_append acc' s') = true) ∧
    -                      (∀ x, InZ x acc' → x < y2 + Z.of_N c2)
    +        (acc', s') ⇒ (∀ y, InZ y (List.rev_append acc' s') ↔
    +                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    +                      (interval_list_invariant (List.rev_append acc' s') = true) ∧
    +                      (∀ x, InZ x acc' → x < y2 + Z.of_N c2)
          end.
    - +  Proof.
    +    intros y2 c2.
    +    induction s as [| [y1 c1] s1' IH] ⇒ acc. {
    +      rewrite /diff_aux -rev_alt.
    +      move ⇒ H_inv_acc _ _ H_in_acc H_c2_neq.
    +      split; last split. {
    +        move ⇒ y; split; last by move ⇒ [] //.
    +        rewrite InZ_rev.
    +        move ⇒ H_in. split ⇒ //.
    +        move ⇒ /In_elementsZ_single ⇒ [] [] /Z.nlt_ge H_neq.
    +        contradict H_neq.
    +        by apply H_in_acc.
    +      } {
    +        assumption.
    +      } {
    +        intros x H_in_acc'.
    +        apply Z.lt_le_trans with (m := y2). {
    +          by apply H_in_acc.
    +        } {
    +          by apply Z_le_add_r.
    +        }
    +      }
    +    } {
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ H_inv_acc [H_gr_s1'] [H_c1_neq_0] H_inv_s1'.
    +      move ⇒ H_in_s1 H_in_acc H_c2_neq_0.
    + +
    +      rewrite diff_aux_alt_def.
    +      case_eq (diff_aux y2 c2 nil ((y1, c1) :: s1')).
    +      move ⇒ acc' s' H_diff_aux_eq.
    + +
    +      set P1 := ∀ y : Z,
    +        (InZ y acc' ∨ InZ y s') ↔
    +        InZ y ((y1, c1) :: s1') ∧ ¬ List.In y (elementsZ_single y2 c2).
    +      set P2 := interval_list_invariant (rev acc' ++ s') = true.
    +      set P3 := ∀ x : Z, InZ x acc' → (x < y2 + Z.of_N c2).
    + +
    +      suff : (P1 ∧ P2 ∧ P3). {
    +        move ⇒ [H_P1] [H_P2] H_P3.
    +        split; last split. {
    +          move ⇒ y.
    +          move : (H_P1 y).
    +          rewrite !rev_append_rev rev_app_distr !InZ_app
    +                  !InZ_rev In_elementsZ_single.
    +          suff : (InZ y acc → ¬ y2 ≤ y < y2 + Z.of_N c2). {
    +            tauto.
    +          }
    +          move ⇒ /H_in_acc H_y_lt [H_y_ge] _.
    +          contradict H_y_ge.
    +          by apply Zlt_not_le.
    +        } {
    +          rewrite rev_append_rev rev_app_distr -app_assoc.
    +          apply interval_list_invariant_app_intro ⇒ //.
    +          move ⇒ x1 x2.
    +          rewrite InZ_app !InZ_rev.
    +          move ⇒ H_in_acc' H_x2_in_s'.
    +          suff : (InZ x2 ((y1, c1)::s1')). {
    +            by apply H_in_s1.
    +          }
    +          move : (H_P1 x2).
    +          tauto.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_app.
    +          move ⇒ []. {
    +            apply H_P3.
    +          } {
    +            move ⇒ /H_in_acc H_x_lt.
    +            eapply Z.lt_trans; eauto.
    +            by apply Z_lt_add_r.
    +          }
    +        }
    +      }
    +
    +      move : (H_gr_s1').
    +      rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1'_alt.
    + +
    +      have : ∀ (acc : list (Z × N)),
    +        interval_list_invariant (rev acc) = true →
    +        (∀ x : Z,
    +            InZ x acc ↔
    +            ((y1 ≤ x < y1 + Z.of_N c1) ∧ (x < y2))) →
    +        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    +        (diff_aux y2 c2 acc s1' = (acc', s')) →
    +        P1 ∧ P2 ∧ P3. {
    +        
    +        intros acc0 H_inv_acc0 H_in_acc0 H_c1_before H_diff_aux_eq0.
    +        have H_in_s1' : (∀ x1 x2 : Z,
    +                            InZ x1 acc0 → InZ x2 s1' → Z.succ x1 < x2). {
    +          intros x1 x2 H_x1_in_acc0.
    +          move ⇒ /H_gr_s1'_alt.
    + +
    +          eapply Z.le_lt_trans.
    +          move : H_x1_in_acc0.
    +          rewrite Z.le_succ_l H_in_acc0.
    +          tauto.
    +        }
    +        have H_in_acc0' : (∀ x : Z, InZ x acc0 → x < y2). {
    +          move ⇒ x.
    +          rewrite H_in_acc0.
    +          move ⇒ [_] //.
    +        }
    +        move : (IH acc0 H_inv_acc0 H_inv_s1' H_in_s1' H_in_acc0' H_c2_neq_0).
    +        rewrite H_diff_aux_eq0 !rev_append_rev.
    +        move ⇒ [H1] [H2] H3.
    +        split; last split ⇒ //. {
    +          move ⇒ y.
    +          move : (H1 y).
    +          rewrite !InZ_app !InZ_rev In_elementsZ_single.
    +          move ⇒ →.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split. {
    +            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    +            tauto.
    +          } {
    +            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    +            move ⇒ [] H_in H_nin_i2.
    +            split; last by assumption.
    +            move : H_in ⇒ [] H_in; last by right.
    +            left.
    +            omega.
    +          }
    +        }
    +      }
    +      move ⇒ {IH} IH.
    + +
    +      clear H_inv_acc H_in_s1 H_in_acc acc.
    +      move : (interval_compare_elim y1 c1 y2 c2) H_diff_aux_eq.
    +      unfold diff_aux.
    +      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    +                                                        fold diff_aux. {
    +        move ⇒ H_lt_y2.
    +        apply IH. {
    +          by rewrite interval_list_invariant_sing.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split; last by tauto.
    +          move ⇒ []; last done.
    +          move ⇒ [H_y1_le H_x_lt].
    +          split; first done.
    +          eapply Z.lt_trans; eauto.
    +        } {
    +          apply Z.le_trans with (m := y2).
    +            - by apply Z.lt_le_incl.
    +            - by apply Z_le_add_r.
    +        }
    +      } {
    +        move ⇒ H_eq_y2.
    +        apply IH. {
    +          by rewrite interval_list_invariant_sing.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_cons In_elementsZ_single -H_eq_y2.
    +          split; last by tauto.
    +          move ⇒ []; last done.
    +          move ⇒ []. done.
    +        } {
    +          rewrite H_eq_y2.
    +          by apply Z_le_add_r.
    +        }
    +      } {
    +        move ⇒ [H_y1_lt_y2] [H_y2_lt_yc1] H_yc1_lt_yc2.
    +        apply IH. {
    +          rewrite interval_list_invariant_sing.
    +          by apply Z_to_N_minus_neq_0.
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_cons In_elementsZ_single Z2N.id; last omega.
    +          replace (y1 + (y2 - y1)) with y2 by omega.
    +          split; last tauto.
    +          move ⇒ [] //.
    +          move ⇒ [H_y1_le] H_x_lt.
    +          repeat split ⇒ //.
    +          apply Z.lt_trans with (m := y2) ⇒ //.
    +        } {
    +          by apply Z.lt_le_incl.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3.
    +        move ⇒ [H_y2_lt] [H_y1_lt] H_yc1_lt [H_acc'] H_s'.
    +        clear IH P1 P2 P3 H_comp.
    +        subst.
    +        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    +          rewrite Z2N.id; omega.
    +        }
    +        have H_nin_yc2 : ∀ y,
    +            InZ y s1' → ¬ y2 ≤ y < y2 + Z.of_N c2. {
    +          move ⇒ y /H_gr_s1'_alt H_lt_y.
    +          move ⇒ [H_y2_le_y].
    +          apply Z.le_ngt, Z.lt_le_incl.
    +          by apply Z.lt_trans with (m := y1 + Z.of_N c1).
    +        }
    +        split; last split. {
    +          move ⇒ y.
    +          rewrite !InZ_cons !In_elementsZ_single H_yc1_intro.
    +          split. {
    +            move ⇒ [] //.
    +            move ⇒ []. {
    +              move ⇒ [H_le_y] H_y_lt.
    +              split. {
    +                left; omega.
    +              } {
    +                move ⇒ [_].
    +                by apply Z.nlt_ge.
    +              }
    +            } {
    +              move : (H_nin_yc2 y). tauto.
    +            }
    +          } {
    +            move ⇒ [] []; last by right; right.
    +            move ⇒ [H_y_ge] H_y_lt_yc1 H_nin_yc2'.
    +            right; left. omega.
    +          }
    +        } {
    +          rewrite interval_list_invariant_cons H_yc1_intro.
    +          split ⇒ //.
    +          split ⇒ //.
    +          by apply Z_to_N_minus_neq_0.
    +        } {
    +          move ⇒ [] //.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3.
    +        move ⇒ [H_y12_eq] H_c12_eq [] H_acc' H_s'.
    +        clear IH P1 P2 P3 H_comp.
    +        subst.
    +        split; last split. {
    +          move ⇒ y.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split; last by tauto. {
    +            move ⇒ [] //.
    +            move ⇒ H_y_in.
    +            split; first by right.
    +            move ⇒ [] _.
    +            by apply Z.nlt_ge, Z.lt_le_incl, H_gr_s1'_alt.
    +          }
    +        } {
    +          apply H_inv_s1'.
    +        } {
    +          move ⇒ x [] //.
    +        }
    +      } {
    +        move ⇒ [H_y2_le_y1] [H_yc1_le_yc2] _.
    +        apply IH. {
    +          done.
    +        } {
    +          move ⇒ x.
    +          split; first done.
    +          omega.
    +        } {
    +          assumption.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3.
    +        move ⇒ [H_y1_le] [H_yc2_le_yc1] _ [] H_acc' H_s'.
    +        clear IH P1 P2 P3 H_comp.
    +        subst.
    +        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    +          rewrite Z2N.id; omega.
    +        }
    +        have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. {
    +          rewrite Z2N.id; omega.
    +        }
    +        split; last split. {
    +          move ⇒ y.
    +          rewrite !InZ_insert_intervalZ_guarded
    +                  !InZ_cons !In_elementsZ_single
    +                  H_yc1_intro H_y1_intro InZ_nil.
    +          split. {
    +            rewrite -!or_assoc.
    +            move ⇒ [[[]|]|] //. {
    +              move ⇒ [H_y1_le_y] H_y_lt.
    +              split. {
    +                left.
    +                split ⇒ //.
    +                apply Z.lt_le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +                apply Z.lt_trans with (m := y2) ⇒ //.
    +                by apply Z_lt_add_r.
    +              } {
    +                move ⇒ [] /Z.le_ngt //.
    +              }
    +            } {
    +              move ⇒ [H_y2c_le_y] H_y_lt_yc1.
    +              split. {
    +                left.
    +                split ⇒ //.
    +                apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +                apply Z.le_trans with (m := y2) ⇒ //.
    +                apply Z_le_add_r.
    +              } {
    +                move ⇒ [] _ /Z.lt_nge //.
    +              }
    +            } {
    +              move ⇒ H_y_in_s1'.
    +              split; first by right.
    +              suff H_suff : y2 + Z.of_N c2 ≤ y. {
    +                move ⇒ [] _ /Z.lt_nge //.
    +              }
    +              apply Z.le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +              apply Z.lt_le_incl.
    +              by apply H_gr_s1'_alt.
    +            }
    +          } {
    +            move ⇒ [] []; last by tauto.
    +            move ⇒ [H_y1_le_y] H_y_lt H_neq_y2.
    +            apply not_and in H_neq_y2; last by apply Z.le_decidable.
    +            case H_neq_y2. {
    +              move ⇒ /Z.nle_gt H_y_lt'.
    +              left; left; done.
    +            } {
    +              move ⇒ /Z.nlt_ge H_le_y.
    +              right; left; done.
    +            }
    +          }
    +        } {
    +          rewrite insert_intervalZ_guarded_rev_nil_app.
    +          rewrite !interval_list_invariant_insert_intervalZ_guarded ⇒ //. {
    +            rewrite H_yc1_intro ⇒ //.
    +          } {
    +            rewrite /insert_intervalZ_guarded.
    +            case_eq ((Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2)) =? 0)%N). {
    +              rewrite H_y1_intro.
    +              move ⇒ /N.eqb_eq /N2Z.inj_iff.
    +              rewrite Z2N.id; last first. {
    +                by apply Z.le_0_sub.
    +              }
    +              move ⇒ /Zminus_eq H_yc1_eq.
    +              eapply interval_list_elements_greater_impl;
    +                last apply H_gr_s1'.
    +              rewrite H_yc1_eq.
    +              apply Z_le_add_r.
    +            } {
    +              move ⇒ _.
    +              rewrite interval_list_elements_greater_cons
    +                      H_y1_intro.
    +              by apply Z_lt_add_r.
    +            }
    +          }
    +        } {
    +          move ⇒ x.
    +          rewrite InZ_insert_intervalZ_guarded InZ_cons In_elementsZ_single H_y1_intro InZ_nil.
    +          move ⇒ [] //.
    +          move ⇒ [_] H_x_lt.
    +          apply Z.lt_le_trans with (m := y2) ⇒ //.
    +          apply Z_le_add_r.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3.
    +        move ⇒ H_yc2_lt [] H_acc' H_s'.
    +        clear IH P1 P2 P3 H_comp.
    +        subst.
    +        split; last split. {
    +          move ⇒ y.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split; last by tauto. {
    +            move ⇒ [] //.
    +            move ⇒ H_y_in.
    +            split; first assumption.
    +            rewrite In_elementsZ_single.
    +            move ⇒ [] H_y2_le H_y_lt.
    +            case H_y_in; first by omega.
    +            move ⇒ /H_gr_s1'_alt H_lt_y.
    +            suff : y2 + Z.of_N c2 < y. {
    +              move ⇒ ?. omega.
    +            }
    +            apply Z.lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +            apply Z.lt_le_trans with (m := y1) ⇒ //.
    +            apply Z_le_add_r.
    +          }
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        } {
    +          done.
    +        }
    +      } {
    +        rewrite /P1 /P2 /P3.
    +        move ⇒ H_yc2_eq [] H_acc' H_s'.
    +        clear IH P1 P2 P3 H_comp.
    +        subst.
    +        split; last split. {
    +          move ⇒ y.
    +          rewrite InZ_cons In_elementsZ_single.
    +          split; last by tauto. {
    +            move ⇒ [] //.
    +            move ⇒ H_y_in.
    +            split; first assumption.
    +            rewrite In_elementsZ_single.
    +            move ⇒ [] H_y2_le H_y_lt.
    +            case H_y_in; first by omega.
    +            move ⇒ /H_gr_s1'_alt H_lt_y.
    +            suff : y2 + Z.of_N c2 < y. {
    +              move ⇒ ?. omega.
    +            }
    +            apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) ⇒ //.
    +            by apply Z_lt_add_r.
    +          }
    +        } {
    +          by rewrite interval_list_invariant_cons.
    +        } {
    +          done.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma diff_aux2_props :
       âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev_append acc s1) = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    -               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    -    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
    - +    interval_list_invariant (rev_append acc s1) = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    +               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    +    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
    +  Proof.
    +    induction s2 as [| [y2 c2] s2' IH]. {
    +      move ⇒ s1 acc H_inv_acc_s1 _ _.
    +      rewrite /diff_aux2.
    +      replace (match s1 with
    +        | nil ⇒ rev_append acc s1
    +        | _ :: _ ⇒ rev_append acc s1
    +       end) with (rev_append acc s1); last by case s1.
    +      split. {
    +        move ⇒ y.
    +        rewrite rev_append_rev InZ_app InZ_rev InZ_nil.
    +        tauto.
    +      } {
    +        assumption.
    +      }
    +    } {
    +      intros s1 acc H_inv_acc_s1.
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ [H_gr_s2'] [H_c2_neq_0] H_inv_s2'.
    +      move ⇒ H_acc_s2.
    +      rewrite /diff_aux2; fold diff_aux2.
    +      case_eq s1. {
    +        move ⇒ H_s1_eq.
    +        split. {
    +          move ⇒ y.
    +          rewrite rev_append_rev InZ_app InZ_nil InZ_rev.
    +          split; last tauto.
    +          move ⇒ [] // H_y_in.
    +          split; first by left.
    +          move ⇒ H_y_in'.
    +          move : (H_acc_s2 _ _ H_y_in H_y_in').
    +          apply Z.nlt_succ_diag_l.
    +        } {
    +          move : H_inv_acc_s1.
    +           by rewrite H_s1_eq.
    +        }
    +      } {
    +        move ⇒ [_ _] _ <-.
    +        case_eq (diff_aux y2 c2 acc s1).
    +        move ⇒ acc' s1' H_diff_aux_eq.
    + +
    +        have H_acc_lt_y2 : (∀ x : Z, InZ x acc → x < y2). {
    +          move ⇒ x H_x_in.
    +          have H_y2_in: (InZ y2 ((y2,c2) :: s2')). {
    +            rewrite InZ_cons.
    +            left.
    +            by apply In_elementsZ_single_hd.
    +          }
    +          move : (H_acc_s2 _ _ H_x_in H_y2_in).
    +          apply Z.lt_trans, Z.lt_succ_diag_r.
    +        }
    +
    +        have [H_inv_acc [H_inv_s1 H_acc_s1]] :
    +          interval_list_invariant (rev acc) = true ∧
    +          interval_list_invariant s1 = true ∧
    +          (∀ x1 x2 : Z,
    +             InZ x1 acc → InZ x2 s1 → Z.succ x1 < x2). {
    +
    +          move : H_inv_acc_s1.
    +          rewrite rev_append_rev.
    +          move ⇒ /interval_list_invariant_app_elim.
    +          move ⇒ [?] [?] H_x.
    +          split; first assumption.
    +          split; first assumption.
    +          move ⇒ x1 x2 H_in_x1.
    +          apply H_x.
    +          by rewrite InZ_rev.
    +        }
    +
    +        move : (diff_aux_props y2 c2 s1 acc H_inv_acc H_inv_s1 H_acc_s1 H_acc_lt_y2 H_c2_neq_0).
    +        rewrite !H_diff_aux_eq.
    +        move ⇒ [H_inZ_res] [H_inv_res] H_inZ_acc'.
    + +
    +        have H_acc'_s2' : (∀ x1 x2 : Z,
    +                              InZ x1 acc' → InZ x2 s2' → Z.succ x1 < x2). {
    +          move ⇒ x1 x2 H_x1_in H_x2_in.
    +          apply Z.le_lt_trans with (m := y2 + Z.of_N c2). {
    +            apply Z.le_succ_l.
    +            by apply H_inZ_acc'.
    +          } {
    +            move : H_gr_s2'.
    +            rewrite interval_list_elements_greater_alt2_def //.
    +            move ⇒ H_gr_s2'.
    +            by apply H_gr_s2'.
    +          }
    +        }
    +
    +        move : (IH s1' acc' H_inv_res H_inv_s2' H_acc'_s2').
    +        move ⇒ [] H_inZ_diff_res →.
    +        split; last done.
    +        move ⇒ y.
    +        rewrite H_inZ_diff_res.
    +        move : (H_inZ_res y).
    +        rewrite !rev_append_rev !InZ_app !InZ_rev InZ_cons.
    +        move ⇒ →.
    +        tauto.
    +      }
    +    }
    +  Qed.
    +
      Lemma diff_InZ :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).
    +  Proof.
    +    intros s1 s2 H_inv_s1 H_inv_s2 y.
    +    rewrite /diff.
    + +
    +    move : (diff_aux2_props s2 s1 nil).
    +    move ⇒ [] //.
    +    move ⇒ H_in_diff _.
    +    rewrite H_in_diff InZ_nil.
    +    tauto.
    +  Qed.

      Lemma diff_invariant :
       âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (diff s1 s2) = true.
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (diff s1 s2) = true.
    +  Proof.
    +    intros s1 s2 H_inv_s1 H_inv_s2.
    +    rewrite /diff.
    + +
    +    move : (diff_aux2_props s2 s1 nil).
    +    move ⇒ [] //.
    +  Qed.


      Global Instance diff_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (diff s1 s2).
    - +  Proof.
    +    move ⇒ H_ok_s1 H_ok_s2.
    +    move : (H_ok_s1) (H_ok_s2).
    +    rewrite /Ok /IsOk /is_encoded_elems_list /add.
    +    move ⇒ [H_inv_s1] H_pre1.
    +    move ⇒ [H_inv_s2] H_pre2.
    +    split. {
    +      apply diff_invariant ⇒ //.
    +    } {
    +      intros y.
    +      move : (diff_InZ s1 s2 H_inv_s1 H_inv_s2).
    +      rewrite /InZ ⇒ →.
    +      move ⇒ [].
    +      move ⇒ /H_pre1 //.
    +    }
    +  Qed.
    +
      Lemma diff_spec :
       âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (diff s s') ↔ In x s ∧ ¬In x s'.
    - +   In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Proof.
    +    intros s s' x H_ok H_ok'.
    +    rewrite !In_InZ.
    +    rewrite diff_InZ ⇒ //. {
    +      apply H_ok.
    +    } {
    +      apply H_ok'.
    +    }
    +  Qed.
    +
    @@ -1750,27 +4314,214 @@

    Library MSetsExtra.MSetIntervals


      Lemma removeZ_alt_def : ∀ x s acc,
    -    interval_list_invariant s = true →
    -    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    -                    (acc', s') ⇒ rev_append acc' s'
    +    interval_list_invariant s = true →
    +    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    +                    (acc', s') ⇒ rev_append acc' s'
                      end.
    - -
    -  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.
    +  Proof.
    +    intros y2.
    +    induction s as [| [y1 c1] s' IH]; first done.
    + +
    +    move ⇒ acc.
    +    rewrite interval_list_invariant_cons /=.
    +    move ⇒ [H_gr] [H_c1_neq_0] H_inv_s'.
    +    move : (interval_1_compare_elim y2 y1 c1).
    +    rewrite interval_1_compare_alt_def.
    +    rewrite !(interval_compare_swap y1 c1 y2); last first. {
    +      right. done.
    +    }
    +    move : (interval_compare_elim y1 c1 y2 (1%N)).
    +    case_eq (interval_compare (y1, c1) (y2, (1%N))) ⇒ H_eq. {
    +      move ⇒ H_lt_y2 _.
    +      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    +        by apply Z.nlt_ge, Z.lt_le_incl.
    +      }
    +      have H_y2_nlt : ~(y2 < y1). {
    +        move ⇒ H_y2_y1.
    +        apply H_yc2_nlt.
    +        apply Z.lt_le_trans with (m := y1) ⇒ //.
    +        apply Z_le_add_r.
    +      }
    +      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    +      rewrite IH //.
    +    } {
    +      move ⇒ H_lt_y2 _.
    +      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    +        apply Z.nlt_ge.
    +        rewrite H_lt_y2.
    +        apply Z.le_refl.
    +      }
    +      have H_y2_nlt : ~(y2 < y1). {
    +        move ⇒ H_y2_y1.
    +        apply H_yc2_nlt.
    +        apply Z.lt_le_trans with (m := y1) ⇒ //.
    +        apply Z_le_add_r.
    +      }
    +      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    +      rewrite IH //.
    +    } {
    +      done.
    +    } {
    +      done.
    +    } {
    +      move ⇒ [H_y1_eq] H_c1_eq.
    +      move ⇒ [] // .
    +      move ⇒ [H_lt_y2] H_y2_lt.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
    +      }
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    +      rewrite /insert_intervalZ_guarded.
    + +
    +      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    +        rewrite H_y1_eq H_c1_eq Z.add_1_r Z.sub_diag //.
    +      }
    +
    +      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    +        rewrite H_y1_eq Z.sub_diag //.
    +      }
    +      done.
    +    } {
    +      move ⇒ [H_y2_le] [H_yc1_le] _.
    +      move ⇒ [] //.
    +      move ⇒ [H_y1_le] H_y2_lt.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
    +      }
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    + +
    +      have H_y1_eq : (y1 = y2) by omega.
    +      have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). {
    +        apply Z.le_antisymm. {
    +          move : H_yc1_le.
    +          rewrite Z.add_1_r //.
    +        } {
    +          by apply Z.le_succ_l.
    +        }
    +      }
    +
    +      rewrite /insert_intervalZ_guarded.
    +      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    +        rewrite H_yc1_eq Z.sub_diag //.
    +      }
    +
    +      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    +        rewrite H_y1_eq Z.sub_diag //.
    +      }
    +
    +      suff → : diff_aux y2 (1%N) acc s' = (acc, s') by done.
    + +
    +      move : H_gr.
    +      rewrite H_yc1_eq.
    +      case s' as [| [y' c'] s'']. {
    +        done.
    +      } {
    +        rewrite interval_list_elements_greater_cons /=
    +                /interval_compare.
    +        move ⇒ H_lt_y'.
    +        have → : y2 + Z.of_N 1 ?= y' = Lt. {
    +          apply Z.compare_lt_iff.
    +          by rewrite Z.add_1_r.
    +        }
    +        done.
    +      }
    +    } {
    +      move ⇒ [H_y1_le] [H_yc2_le] _.
    +      move ⇒ [] //.
    +      move ⇒ [_] H_y2_lt.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
    +      }
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    +      rewrite !rev_append_rev /insert_intervalZ_guarded Z.add_1_r.
    +      case ((Z.to_N (y2 - y1) =? 0)%N), (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0)%N. {
    +        reflexivity.
    +      } {
    +        rewrite /= -!app_assoc //.
    +      } {
    +        reflexivity.
    +      } {
    +        rewrite /= -!app_assoc //.
    +      }
    +    } {
    +      move ⇒ _ H_y2_lt'.
    +      have H_y2_lt : (y2 < y1). {
    +        apply Z.lt_trans with (m := Z.succ y2) ⇒ //.
    +        apply Z.lt_succ_diag_r.
    +      }
    +      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    +    } {
    +      move ⇒ _ H_y1_eq.
    +      have H_y2_lt : (y2 < y1). {
    +        rewrite H_y1_eq.
    +        apply Z.lt_succ_diag_r.
    +      }
    +      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    +    }
    +  Qed.
    + +
    +  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.
    +  Proof.
    +    intros s x H_inv.
    +    rewrite /removeZ removeZ_alt_def //.
    +    move : (diff_aux_props x (1%N) s nil).
    +    case_eq (diff_aux x 1%N nil s).
    +    move ⇒ acc' s' H_eq [] //.
    +    move ⇒ _ [] //.
    +  Qed.

      Lemma removeZ_spec :
    -   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    -    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.
    +   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    +    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.
    +  Proof.
    +    intros s x y H_inv.
    +    rewrite /removeZ removeZ_alt_def //.
    +    move : (diff_aux_props x (1%N) s nil).
    +    case_eq (diff_aux x 1%N nil s).
    +    move ⇒ acc' s' H_eq [] //.
    +    move ⇒ → _.
    +    rewrite rev_append_rev InZ_app InZ_rev InZ_nil
    +            In_elementsZ_single1.
    +    split; move ⇒ [H1 H2]; split ⇒ //;
    +      move ⇒ H3; apply H2; by rewrite H3.
    +  Qed.

      Global Instance remove_ok s x : ∀ `(Ok s), Ok (remove x s).
    - +  Proof.
    +    rewrite /Ok /interval_list_invariant /remove.
    +    move ⇒ [H_is_ok_s H_enc_s].
    +    split. {
    +      by apply removeZ_interval_list_invariant.
    +    } {
    +      rewrite /is_encoded_elems_list ⇒ y.
    +      move : (removeZ_spec s (Enc.encode x) y H_is_ok_s).
    +      rewrite /InZ ⇒ → [] H_y_in _.
    +      apply H_enc_s ⇒ //.
    +    }
    +  Qed.
    +
      Lemma remove_spec :
       âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
    - +    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
    +  Proof.
    +    intros s x y Hs.
    +    have H_rs := (remove_ok s x Hs).
    +    rewrite /remove !In_InZ.
    +    rewrite removeZ_spec. {
    +      rewrite Enc.encode_eq //.
    +    } {
    +      apply Hs.
    +    }
    +  Qed.
    +
    @@ -1781,12 +4532,33 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
    - +  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
    +  Proof.
    +    induction l as [| x l' IH]. {
    +      done.
    +    } {
    +      move ⇒ s H_s_ok /=.
    +      apply IH.
    +      by apply remove_ok.
    +    }
    +  Qed.
    +
    -  Lemma remove_list_spec : ∀ x l s, Ok s →
    -     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
    - +  Lemma remove_list_spec : ∀ x l s, Ok s →
    +     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
    +  Proof.
    +    move ⇒ x.
    +    induction l as [| y l' IH]. {
    +      intros s H.
    +      rewrite /= InA_nil.
    +      tauto.
    +    } {
    +      move ⇒ s H_ok /=.
    +      rewrite IH remove_spec InA_cons.
    +      tauto.
    +    }
    +  Qed.
    +

    @@ -1800,54 +4572,271 @@

    Library MSetsExtra.MSetIntervals


      Lemma subset_flatten_alt_def : ∀ (s1 s2 : t),
    -    subset s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    +    subset s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
              | ICR_after ⇒ subset s1 l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
              | ICR_equal ⇒ subset l1 l2
              | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +          | ICR_subsume_2 ⇒ false
            end
        end.
    +  Proof.
    +    intros s1 s2.
    +    case s1, s2 ⇒ //.
    +  Qed.

      Lemma subset_props_aux : ∀ y1 c1 l1 y2 c2 l2,
    -    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +  Proof.
    +    intros y1 c1 l1 y2 c2 l2.
    +    move ⇒ [y] [H_y_in H_y_nin].
    +    split; first done.
    +    move ⇒ H.
    +    contradict H_y_nin.
    +    by apply H.
    +  Qed.

      Lemma subset_props_aux_before : ∀ y1 c1 l1 y2 c2 l2,
    -    (c1 ≠ 0%N) →
    -    interval_list_invariant ((y2, c2) :: l2) = true →
    -    (y1 < y2) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    - +    (c1 ≠ 0%N) →
    +    interval_list_invariant ((y2, c2) :: l2) = true →
    +    (y1 < y2) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +  Proof.
    +    intros y1 c1 l1 y2 c2 l2.
    +    rewrite interval_list_invariant_cons.
    +    move ⇒ H_c1_neq_0 [H_gr] [H_inv_l2] H_c2_neq_0 H_y1_lt.
    +    apply subset_props_aux.
    +    âˆƒ y1.
    +    split. {
    +      rewrite InZ_cons.
    +      left.
    +      by apply In_elementsZ_single_hd.
    +    } {
    +      rewrite InZ_cons.
    +      suff : ¬ (List.In y1 (elementsZ_single y2 c2)) ∧ ¬ InZ y1 l2 by tauto.
    +      split. {
    +        rewrite In_elementsZ_single.
    +        move ⇒ [] /Z.le_ngt //.
    +      } {
    +        eapply Nin_elements_greater; eauto.
    +        apply Z.le_trans with (m := y2). {
    +          by apply Z.lt_le_incl.
    +        } {
    +          apply Z_le_add_r.
    +        }
    +      }
    +    }
    +  Qed.
    +

      Lemma subset_props : ∀ s1 s2 : t,
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (subset s1 s2 = true ↔
    -     (∀ y, InZ y s1 → InZ y s2)).
    - +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (subset s1 s2 = true ↔
    +     (∀ y, InZ y s1 → InZ y s2)).
    +  Proof.
    +    induction s1 as [| [y1 c1] l1 IH1]. {
    +      move ⇒ s2 _ _.
    +      rewrite subset_flatten_alt_def.
    +      split; done.
    +    } {
    +      induction s2 as [| [y2 c2] l2 IH2]. {
    +        rewrite interval_list_invariant_cons
    +                subset_flatten_alt_def.
    +        move ⇒ [_] [H_c1_neq_0] _ _.
    +        split ⇒ //.
    +        move ⇒ H; move : (H y1).
    +        rewrite InZ_nil ⇒ {H} H.
    +        contradict H.
    +        rewrite InZ_cons; left.
    +        by apply In_elementsZ_single_hd.
    +      } {
    +        move ⇒ H_inv_s1 H_inv_s2.
    +        move : (H_inv_s1) (H_inv_s2).
    +        rewrite !interval_list_invariant_cons.
    +        move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
    +        move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          (subset l1 s2 = true ↔
    +          (∀ y : Z, InZ y l1 → InZ y s2)). {
    +          intros. by apply IH1.
    +        }
    +        move ⇒ {IH1} IH1.
    + +
    +        have H_yc2_nin : ¬ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). {
    +          rewrite !InZ_cons !In_elementsZ_single.
    +          move ⇒ []. {
    +            move ⇒ [_] /Z.lt_irrefl //.
    +          } {
    +            eapply Nin_elements_greater; eauto.
    +            apply Z.le_refl.
    +          }
    +        }
    +          
    +        rewrite subset_flatten_alt_def.
    +        move : (interval_compare_elim y1 c1 y2 c2).
    +        case (interval_compare (y1, c1) (y2, c2)). {
    +          move ⇒ H_lt_y2.
    +          apply subset_props_aux_before ⇒ //.
    +          apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +          apply Z_le_add_r.
    +        } {
    +          move ⇒ H_y2_eq.
    +          apply subset_props_aux_before ⇒ //.
    +          rewrite -H_y2_eq.
    +          by apply Z_lt_add_r.
    +        } {
    +          move ⇒ [H_y1_lt] _.
    +          apply subset_props_aux_before ⇒ //.
    +        } {
    +          move ⇒ [H_y2_lt] [H_y1_lt] H_yc2_lt.
    +          apply subset_props_aux.
    +          âˆƒ (y2 + Z.of_N c2).
    +          split ⇒ //.
    +          rewrite !InZ_cons !In_elementsZ_single.
    +          left.
    +          split ⇒ //.
    +          by apply Z.lt_le_incl.
    +        } {
    +          move ⇒ [H_y1_eq] H_c1_eq; subst.
    +          rewrite IH1 ⇒ //.
    +          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    +            rewrite !InZ_cons. {
    +            tauto.
    +          } {
    +            move ⇒ H_pre H_y_in_l1.
    +            suff : ~(List.In y (elementsZ_single y2 c2)). {
    +              tauto.
    +            }
    +            move : H_gr_l1.
    +            rewrite interval_list_elements_greater_alt2_def
    +              // In_elementsZ_single.
    +            move ⇒ H; move : (H y H_y_in_l1) ⇒ {H}.
    +            move ⇒ /Z.lt_ngt H_neq [_] //.
    +          }
    +        } {
    +          move ⇒ [H_y2_lt_y1] [H_yc1_le] _.
    +          rewrite IH1.
    +          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    +            rewrite !InZ_cons. {
    +            move ⇒ H []; last apply H. move ⇒ {H}.
    +            rewrite !In_elementsZ_single.
    +            move ⇒ [H_y1_le] H_y_lt.
    +            left.
    +            omega.
    +          } {
    +            move ⇒ H_pre H_y_in_l1.
    +            apply H_pre.
    +            by right.
    +          } {
    +            assumption.
    +          }
    +        } {
    +          move ⇒ [H_y1_le] [_] []. {
    +            apply subset_props_aux_before ⇒ //.
    +          } {
    +            move ⇒ H_yc2_lt.
    +            apply subset_props_aux.
    +            âˆƒ (y2 + Z.of_N c2).
    +            split ⇒ //.
    +            rewrite !InZ_cons !In_elementsZ_single.
    +            left.
    +            split ⇒ //.
    +            apply Z.le_trans with (m := y2) ⇒ //.
    +            apply Z_le_add_r.
    +          }
    +        } {
    +          move ⇒ H_yc2_lt_y1.
    +          rewrite IH2.
    +          split; move ⇒ H_pre y; move : (H_pre y) ⇒ {H_pre};
    +                                                        rewrite !InZ_cons. {
    +            tauto.
    +          } {
    +            rewrite !In_elementsZ_single.
    +            move ⇒ H_pre H_y_in.
    +            suff : ~(y2 ≤ y < y2 + Z.of_N c2). {
    +              tauto.
    +            }
    +            move ⇒ [H_y2_le H_y_lt].
    +            move : H_y_in ⇒ []. {
    +              move ⇒ [H_y1_le] H_y_lt'.
    +              omega.
    +            } {
    +              eapply Nin_elements_greater; eauto.
    +              apply Z.le_trans with (m := y1); last first. {
    +                apply Z_le_add_r.
    +              }
    +              apply Z.lt_le_incl.
    +              apply Z.lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +            }
    +          }
    +        } {
    +          move ⇒ H_y1_eq.
    +          apply subset_props_aux.
    +          âˆƒ y1.
    +          rewrite !InZ_cons.
    +          split. {
    +            left.
    +            by apply In_elementsZ_single_hd.
    +          } {
    +            rewrite !In_elementsZ_single H_y1_eq.
    +            move ⇒ []. {
    +              move ⇒ [_] /Z.lt_irrefl //.
    +            } {
    +              eapply Nin_elements_greater; eauto.
    +              rewrite H_y1_eq.
    +              apply Z.le_refl.
    +            }
    +          }
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma subset_spec :
       âˆ€ (s s' : t) (Hs : Ok s) (Hs' : Ok s'),
    -   subset s s' = true ↔ Subset s s'.
    - +   subset s s' = true ↔ Subset s s'.
    +  Proof.
    +    intros s s' Hs Hs'.
    +    move : (Hs) (Hs').
    +    rewrite /Ok /IsOk.
    +    move ⇒ [H_inv_s H_enc_s] [H_inv_s' H_enc_s'].
    +    rewrite (subset_props s s' H_inv_s H_inv_s').
    +    rewrite /Subset.
    +    split. {
    +      move ⇒ H_pre enc_y.
    +      rewrite !In_InZ.
    +      apply H_pre.
    +    } {
    +      move ⇒ H_pre y H_y_in.
    +      move : (H_enc_s _ H_y_in) ⇒ [e] H_e. subst.
    +      move : (H_pre e) H_y_in.
    +      rewrite !In_InZ //.
    +    }
    +  Qed.
    +
    @@ -1858,18 +4847,105 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.
    +  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.
    +  Proof.
    +    intros s x Hs.
    +    by rewrite In_alt_def.
    +  Qed.

      Lemma NoDupA_elementsZ_single: ∀ c x,
    -    NoDupA Z.eq (elementsZ_single x c).
    - -
    -  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
    - -
    -  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
    - +    NoDupA Z.eq (elementsZ_single x c).
    +  Proof.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intros x.
    +      rewrite elementsZ_single_base //.
    +    } {
    +      intros x.
    +      rewrite elementsZ_single_succ.
    +      apply NoDupA_app. {
    +        apply Z.eq_equiv.
    +      } {
    +        apply IH.
    +      } {
    +        apply NoDupA_singleton.
    +      } {
    +        move ⇒ y.
    +        rewrite !InA_alt.
    +        move ⇒ [_] [<-] H_y_in.
    +        move ⇒ [_] [<-] H_y_in'.
    +        move : H_y_in H_y_in'.
    +        rewrite In_elementsZ_single /=.
    +        move ⇒ [H_x_le] H_y_lt [] // H_y_eq.
    +        contradict H_y_lt.
    +        rewrite H_y_eq.
    +        apply Z.lt_irrefl.
    +      }
    +    }
    +  Qed.
    + +
    +  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
    +  Proof.
    +    induction s as [| [x c] s' IH]. {
    +      move ⇒ _.
    +      rewrite elementsZ_nil.
    +      apply NoDupA_nil.
    +    } {
    +      move ⇒ H_ok_s.
    +      move : (H_ok_s) ⇒ /Ok_cons [H_interval_list_elements_greater] [H_c] [H_enc] H_s'.
    +      rewrite elementsZ_cons.
    +      apply NoDupA_app. {
    +        apply Z.eq_equiv.
    +      } {
    +        by apply IH.
    +      } {
    +        apply NoDupA_rev. {
    +          apply Z.eq_equiv.
    +        } {
    +          apply NoDupA_elementsZ_single.
    +        }
    +      } {
    +        move ⇒ y.
    +        rewrite !InA_alt.
    +        move ⇒ [_] [<-] H_y_in.
    +        move ⇒ [_] [<-] H_y_in'.
    +        move : H_y_in'.
    +        rewrite -in_rev In_elementsZ_single /=.
    +        move ⇒ [H_x_le] H_y_lt.
    +        eapply (Nin_elements_greater s' (x + Z.of_N c)) ⇒ //. {
    +          apply H_s'.
    +        } {
    +          apply Z.lt_le_incl, H_y_lt.
    +        } {
    +          apply H_y_in.
    +        }
    +      }
    +    }
    +  Qed.
    + +
    +  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
    +  Proof.
    +    intros s Hs.
    +    rewrite /elements rev_map_alt_def.
    +    apply NoDupA_rev. {
    +      apply Enc.E.eq_equiv.
    +    } {
    +      eapply NoDupA_map; first by apply elementsZ_spec2w.
    + +
    +      intros x1 x2 H_x1_in H_x2_in H_dec_eq.
    +      have H_is_enc: is_encoded_elems_list (elementsZ s). {
    +        apply Hs.
    +      }
    +      move : (H_is_enc _ H_x1_in) ⇒ [y1 H_x1_eq].
    +      move : (H_is_enc _ H_x2_in) ⇒ [y2 H_x2_eq].
    +      move : H_dec_eq.
    +      rewrite -H_x1_eq -H_x2_eq !Enc.decode_encode_ok Enc.encode_eq //.
    +    }
    +  Qed.
    +
    @@ -1881,18 +4957,94 @@

    Library MSetsExtra.MSetIntervals


      Lemma equal_alt_def : ∀ s1 s2,
    -    equal s1 s2 = true ↔ (s1 = s2).
    - +    equal s1 s2 = true ↔ (s1 = s2).
    +  Proof.
    +    induction s1 as [| [x cx] xs IH]. {
    +      move ⇒ [] //.
    +    } {
    +      move ⇒ [] //=.
    +      move ⇒ [y cy] ys.
    +      rewrite !andb_true_iff IH N.eqb_eq Z.eqb_eq.
    +      split. {
    +        move ⇒ [->] [->] → //.
    +      } {
    +        move ⇒ [->] → → //.
    +      }
    +    }
    +  Qed.
    +
      Lemma equal_elementsZ :
        âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    -    (∀ x, (InZ x s ↔ InZ x s')) → (s = s').
    +    (∀ x, (InZ x s ↔ InZ x s')) → (s = s').
    +  Proof.
    +    intros s s'.
    +    move ⇒ H_ok_s H_ok_s' H_InZ_eq.
    +    have [] : ((subset s s' = true) ∧ (subset s' s = true)). {
    +      rewrite !subset_spec /Subset.
    +      split ⇒ x; rewrite !In_InZ H_InZ_eq //.
    +    }
    +    have : interval_list_invariant s' = true by apply H_ok_s'.
    +    have : interval_list_invariant s = true by apply H_ok_s.
    +    clear H_ok_s H_ok_s' H_InZ_eq.
    +    move : s s'.
    +    induction s as [| [x1 c1] s1 IH];
    +      case s' as [| [x2 c2] s2] ⇒ //.
    +    rewrite !interval_list_invariant_cons.
    +    move ⇒ [H_gr_s1] [H_c1_neq_0] H_inv_s1.
    +    move ⇒ [H_gr_s2] [H_c2_neq_0] H_inv_s2.
    +    rewrite subset_flatten_alt_def
    +            (subset_flatten_alt_def ((x2, c2)::s2)).
    +    rewrite (interval_compare_swap x1 c1); last by left.
    +    move : (interval_compare_elim x1 c1 x2 c2).
    +    case (interval_compare (x1, c1) (x2, c2)) ⇒ //.
    +    move ⇒ [->] → H_sub_s12 H_sub_s21.
    + +
    +    suff → : s1 = s2 by done.
    +    by apply IH.
    +  Qed.

      Lemma equal_spec :
        âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    -    equal s s' = true ↔ Equal s s'.
    - +    equal s s' = true ↔ Equal s s'.
    +  Proof.
    +    intros s s' Hs Hs'.
    +    rewrite equal_alt_def /Equal.
    +    split. {
    +      move ⇒ → //.
    +    } {
    +      move ⇒ H.
    +      apply equal_elementsZ ⇒ // x.
    +      move : (H (Enc.decode x)).
    +      rewrite !In_InZ.
    + +
    +      suff H_ex : (∀ s'', Ok s'' → InZ x s'' → (∃ z, Enc.encode z = x)). {
    +        move ⇒ HH.
    +        split. {
    +          move ⇒ H3.
    +          move : HH (H3).
    +          move : (H_ex s Hs H3) ⇒ [z] <-.
    +          rewrite Enc.decode_encode_ok ⇒ <- //.
    +        } {
    +          move ⇒ H3.
    +          move : HH (H3).
    +          move : (H_ex s' Hs' H3) ⇒ [z] <-.
    +          rewrite Enc.decode_encode_ok ⇒ <- //.
    +        }
    +      }
    +      clear.
    +      intros s'' H_ok H_in_x.
    +      have H_enc : is_encoded_elems_list (elementsZ s''). {
    +        apply H_ok.
    +      }
    +      apply H_enc.
    +      apply H_in_x.
    +    }
    +  Qed.
    +
    @@ -1901,42 +5053,203 @@

    Library MSetsExtra.MSetIntervals

    -  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).
    +  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).

      Lemma compare_eq_Eq : ∀ s1 s2,
    -    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
    - +    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
    +  Proof.
    +    induction s1 as [| [y1 c1] s1' IH];
    +      case s2 as [| [y2 c2] s2'] ⇒ //.
    +    rewrite /= !andb_true_iff -IH Z.eqb_eq N.eqb_eq.
    +    move : (Z.compare_eq_iff y1 y2).
    +    case (Z.compare y1 y2). {
    +      move ⇒ H.
    +      have → : y1 = y2. by apply H.
    +      clear H.
    + +
    +      move : (N.compare_eq_iff c1 c2).
    +      case (N.compare c1 c2). {
    +        move ⇒ H.
    +        have → : c1 = c2. by apply H.
    +        tauto.
    +      } {
    +        move ⇒ H.
    +        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    +        tauto.
    +      } {
    +        move ⇒ H.
    +        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    +        tauto.
    +      }
    +    } {
    +      move ⇒ H.
    +      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    +      tauto.
    +    } {
    +      move ⇒ H.
    +      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    +      tauto.
    +    }
    +  Qed.
    +
      Lemma compare_eq_Lt_nil_l : ∀ s,
    -    compare nil s = Lt ↔ s ≠ nil.
    +    compare nil s = Lt ↔ s ≠ nil.
    +  Proof.
    +    intros s.
    +    case s ⇒ //=.
    +  Qed.

      Lemma compare_eq_Lt_nil_r : ∀ s,
    -    ~(compare s nil = Lt).
    +    ~(compare s nil = Lt).
    +  Proof.
    +    intros s.
    +    case s as [| [y1 c1] s'] ⇒ //=.
    +  Qed.

      Lemma compare_eq_Lt_cons : ∀ y1 y2 c1 c2 s1 s2,
    -    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    -    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    -    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
    - +    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    +    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    +    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
    +  Proof.
    +    intros y1 y2 c1 c2 s1 s2.
    +    rewrite /=.
    +    case_eq (Z.compare y1 y2). {
    +      move ⇒ /Z.compare_eq_iff →.
    +      case_eq (N.compare c1 c2). {
    +        move ⇒ /N.compare_eq_iff →.
    +        split. {
    +          move ⇒ H.
    +          right; right.
    +          done.
    +        } {
    +          move ⇒ [| []]. {
    +            move ⇒ /Z.lt_irrefl //.
    +          } {
    +            move ⇒ [_] /N.lt_irrefl //.
    +          } {
    +            move ⇒ [_] [_] → //.
    +          }
    +        }
    +      } {
    +        move ⇒ /N.compare_lt_iff H_c1_lt.
    +        split ⇒ //.
    +        move ⇒ _.
    +        right; left. done.
    +      } {
    +        move ⇒ /N.compare_gt_iff H_c2_lt.
    +        split ⇒ //.
    +        move ⇒ [| []]. {
    +          move ⇒ /Z.lt_irrefl //.
    +        } {
    +          move ⇒ [_] /N.lt_asymm //.
    +        } {
    +          move ⇒ [_] [] H_c1_eq.
    +          contradict H_c2_lt.
    +          subst c1.
    +          by apply N.lt_irrefl.
    +        }
    +      }
    +    } {
    +      move ⇒ /Z.compare_lt_iff.
    +      tauto.
    +    } {
    +      move ⇒ /Z.compare_gt_iff H_y2_lt.
    +      split ⇒ //.
    +      move ⇒ [| []]. {
    +        move ⇒ /Z.lt_asymm //.
    +      } {
    +        move ⇒ [] H_y1_eq.
    +        exfalso. omega.
    +      } {
    +        move ⇒ [] H_y1_eq.
    +        exfalso. omega.
    +      }
    +    }
    +  Qed.
    +

      Lemma compare_antisym: ∀ (s1 s2 : t),
    -    (compare s1 s2) = CompOpp (compare s2 s1).
    +    (compare s1 s2) = CompOpp (compare s2 s1).
    +  Proof.
    +    induction s1 as [| [y1 c1] s1' IH];
    +      case s2 as [| [y2 c2] s2'] ⇒ //.
    +    rewrite /= (Z.compare_antisym y1 y2) (N.compare_antisym c1 c2).
    +    case (Z.compare y1 y2) ⇒ //=.
    +    case (N.compare c1 c2) ⇒ //=.
    +  Qed.

      Lemma compare_spec : ∀ s1 s2,
    -    CompSpec eq lt s1 s2 (compare s1 s2).
    - -
    -  Lemma lt_Irreflexive : Irreflexive lt.
    +    CompSpec eq lt s1 s2 (compare s1 s2).
    +  Proof.
    +    intros s1 s2.
    +    rewrite /CompSpec /lt (compare_antisym s2 s1).
    +    case_eq (compare s1 s2). {
    +      rewrite compare_eq_Eq equal_alt_def ⇒ →.
    +      by apply CompEq.
    +    } {
    +      move ⇒ _.
    +      by apply CompLt.
    +    } {
    +      move ⇒ _.
    +      by apply CompGt.
    +    }
    +  Qed.
    + +
    +  Lemma lt_Irreflexive : Irreflexive lt.
    +  Proof.
    +    rewrite /Irreflexive /Reflexive /complement /lt.
    +    intros x.
    +    suff → : compare x x = Eq by done.
    +    rewrite compare_eq_Eq equal_alt_def //.
    +  Qed.
    + +
    +  Lemma lt_Transitive : Transitive lt.
    +  Proof.
    +    rewrite /Transitive /lt.
    +    induction x as [| [y1 c1] s1' IH];
    +      case y as [| [y2 c2] s2'];
    +      case z as [| [y3 c3] s3'] ⇒ //.
    + +
    +    rewrite !compare_eq_Lt_cons.
    +    move ⇒ [H_y1_lt | [[->] H_c1_lt | [->] [->] H_comp]]
    + [H_y2_lt | [[<-] H_c2_lt | [<-] [<-] H_comp']]. {
    +      left.
    +      by apply Z.lt_trans with (m := y2).
    +    } {
    +      by left.
    +    } {
    +      by left.
    +    } {
    +      by left.
    +    } {
    +      right; left.
    +      split ⇒ //.
    +      by apply N.lt_trans with (m := c2).
    +    } {
    +      by right; left.
    +    } {
    +      by left.
    +    } {
    +      by right; left.
    +    } {
    +      right; right.
    +      split ⇒ //.
    +      split ⇒ //.
    +      by apply (IH s2').
    +    }
    +  Qed.
    -
    -  Lemma lt_Transitive : Transitive lt.
    -
    @@ -1948,20 +5261,112 @@

    Library MSetsExtra.MSetIntervals


      Lemma elementsZ_single_sorted : ∀ c x,
    -    sort Z.lt (elementsZ_single x c).
    - +    sort Z.lt (elementsZ_single x c).
    +  Proof.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intro x.
    +      rewrite elementsZ_single_base.
    +      apply Sorted_nil.
    +    } {
    +      intro x.
    +      rewrite elementsZ_single_succ_front.
    +      apply Sorted_cons. {
    +        apply IH.
    +      } {
    +        case (N.zero_or_succ c'). {
    +          move ⇒ →.
    +          rewrite elementsZ_single_base //.
    +        } {
    +          move ⇒ [c''] →.
    +          rewrite elementsZ_single_succ_front.
    +          constructor.
    +          apply Z.lt_succ_diag_r.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma elementsZ_sorted : ∀ s,
    -    interval_list_invariant s = true →
    -    sort Z.lt (rev (elementsZ s)).
    - +    interval_list_invariant s = true →
    +    sort Z.lt (rev (elementsZ s)).
    +  Proof.
    +    induction s as [| [y c] s' IH]. {
    +      move ⇒ _.
    +      rewrite elementsZ_nil.
    +      apply Sorted_nil.
    +    } {
    +      rewrite interval_list_invariant_cons elementsZ_cons
    +              rev_app_distr rev_involutive.
    +      move ⇒ [H_gr] [H_c_neq_0] H_inv_s'.
    +      apply SortA_app with (eqA := Logic.eq). {
    +        apply eq_equivalence.
    +      } {
    +        apply elementsZ_single_sorted.
    +      } {
    +        by apply IH.
    +      } {
    +        intros x1 x2.
    +        move ⇒ /InA_alt [_] [<-] /In_elementsZ_single [_ H_x1_lt].
    +        move ⇒ /InA_alt [_] [<-].
    +        rewrite -In_rev ⇒ H_x2_in.
    + +
    +        apply Z.lt_trans with (m := (y + Z.of_N c)) ⇒ //.
    +        eapply interval_list_elements_greater_alt2_def;
    +          eauto.
    +      }
    +    }
    +  Qed.
    +

      Lemma elements_sorted : ∀ s,
    -    Ok s →
    -    sort Enc.E.lt (elements s).
    - +    Ok s →
    +    sort Enc.E.lt (elements s).
    +  Proof.
    +    move ⇒ s [H_inv] H_enc.
    +    rewrite /elements rev_map_alt_def -map_rev.
    +    have : (∀ x : Z, List.In x (rev (elementsZ s)) →
    +           âˆƒ e : Enc.E.t, Enc.encode e = x). {
    +      move ⇒ x.
    +      move : (H_enc x).
    +      rewrite In_rev //.
    +    }
    +    move : (elementsZ_sorted s H_inv) ⇒ {H_enc}.
    +    generalize (rev (elementsZ s)).
    +    induction l as [| x xs IH]. {
    +      rewrite /= ⇒ _ _.
    +      apply Sorted_nil.
    +    } {
    +      move ⇒ H_sort H_enc.
    +      apply Sorted_inv in H_sort as [H_sort H_hd_rel].
    +      simpl.
    +      apply Sorted_cons. {
    +        apply IH ⇒ //.
    +        move ⇒ xx H_xx_in.
    +        apply H_enc.
    +        by apply in_cons.
    +      } {
    +        move : H_hd_rel H_enc.
    +        case xs ⇒ //=.
    +        move ⇒ x' xs' H_hd_rel H_enc.
    +        apply HdRel_inv in H_hd_rel.
    +        apply HdRel_cons.
    +        rewrite -Enc.encode_lt.
    +        have [y H_y] : (∃ y, Enc.encode y = x). {
    +          apply H_enc. by left.
    +        }
    +        have [y' H_y'] : (∃ y', Enc.encode y' = x'). {
    +          apply H_enc. by right; left.
    +        }
    +        move : H_hd_rel.
    +        rewrite -!H_y -!H_y' !Enc.decode_encode_ok //.
    +      }
    +    }
    +  Qed.
    +

    @@ -1975,79 +5380,254 @@

    Library MSetsExtra.MSetIntervals


      Definition min_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      min_eltZ s = Some x → InZ x s.
    - +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      min_eltZ s = Some x → InZ x s.
    +  Proof.
    +    intros s x.
    +    case s as [| [x' c] s']. {
    +      rewrite /min_eltZ //.
    +    } {
    +      rewrite /min_eltZ InZ_cons interval_list_invariant_cons.
    +      move ⇒ [_] [H_c_neq] _ [->].
    +      left.
    +      by apply In_elementsZ_single_hd.
    +    }
    +  Qed.
    +
      Lemma min_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    -    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
    - +    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    +    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
    +  Proof.
    +    intros s x y H_ok H_min H_in H_y_lt_x.
    +    eapply (Nin_elements_greater s (Z.pred x)) ⇒ //; last apply H_in. {
    +      move : H_ok H_min.
    +      case s ⇒ //.
    +      move ⇒ [z c] s' _ [<-].
    +      rewrite interval_list_elements_greater_cons.
    +      apply Z.lt_pred_l.
    +    } {
    +      apply H_ok.
    +    } {
    +      by apply Z.lt_le_pred.
    +    }
    +  Qed.
    +
      Definition min_eltZ_spec3 :
        âˆ€ (s : t),
    -      min_eltZ s = None → ∀ x, ¬InZ x s.
    - +      min_eltZ s = None → ∀ x, ¬InZ x s.
    +  Proof.
    +    intros s.
    +    case s as [| [x' c] s'];
    +      rewrite /min_eltZ //.
    +    move ⇒ _ x //.
    +  Qed.
    +
      Definition min_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
    +  Proof.
    +    rewrite /min_elt.
    +    move ⇒ s x H_ok.
    +    case_eq (min_eltZ s) ⇒ //.
    +    move ⇒ z H_min_elt [<-].
    +    apply InZ_In ⇒ //.
    +    apply min_eltZ_spec1 ⇒ //.
    +    apply H_ok.
    +  Qed.
    +
      Definition min_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
    - +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
    +  Proof.
    +    rewrite /min_elt.
    +    move ⇒ s x y H_ok.
    +    case_eq (min_eltZ s) ⇒ //.
    +    move ⇒ z H_min_elt [<-].
    +    rewrite In_InZ ⇒ H_inZ.
    +    have H_y_eq : y = Enc.decode (Enc.encode y). {
    +      by rewrite Enc.decode_encode_ok.
    +    }
    +    rewrite H_y_eq -Enc.encode_lt.
    +    apply (min_eltZ_spec2 _ _ _ H_ok); last first. {
    +      by rewrite Enc.decode_encode_ok.
    +    }
    +    suff → : Enc.encode (Enc.decode z) = z by assumption.
    +    apply encode_decode_eq with (s := s) ⇒ //.
    +    apply min_eltZ_spec1 ⇒ //.
    +    apply H_ok.
    +  Qed.
    +
      Definition min_elt_spec3 :
    -    âˆ€ s : t, min_elt s = None → Empty s.
    - +    âˆ€ s : t, min_elt s = None → Empty s.
    +  Proof.
    +    rewrite /min_elt /min_eltZ /Empty /In.
    +    case s as [| [x' c] s'] ⇒ //.
    +    move ⇒ _ e.
    +    rewrite elements_nil InA_nil //.
    +  Qed.
    +
      Definition choose_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
    +  Proof.
    +    rewrite /choose.
    +    apply min_elt_spec1.
    +  Qed.
    +
      Definition choose_spec2 :
    -    âˆ€ s : t, choose s = None → Empty s.
    - +    âˆ€ s : t, choose s = None → Empty s.
    +  Proof.
    +    rewrite /choose.
    +    apply min_elt_spec3.
    +  Qed.
    +
    -  Lemma choose_spec3: ∀ s s' x x', Ok s → Ok s' →
    -    choose s = Some x → choose s' = Some x' → Equal s s' → x = x'.
    +  Lemma choose_spec3: ∀ s s' x x', Ok s → Ok s' →
    +    choose s = Some x → choose s' = Some x' → Equal s s' → x = x'.
    +  Proof.
    +    intros s s' x x' Hs Hs' Hx Hx'.
    +    rewrite -equal_spec equal_alt_def ⇒ H_s_eq.
    +    move : Hx Hx'.
    +    rewrite H_s_eq ⇒ → [] //.
    +  Qed.


      Definition max_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      max_eltZ s = Some x → InZ x s.
    - +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      max_eltZ s = Some x → InZ x s.
    +  Proof.
    +    intros s x.
    +    induction s as [| [x' c] s' IH]. {
    +      rewrite /max_eltZ //.
    +    } {
    +      rewrite InZ_cons interval_list_invariant_cons /=.
    +      move ⇒ [_] [H_c_neq].
    +      case s' as [| [y' c'] s'']. {
    +        move ⇒ _ [<-].
    +        left. {
    +          rewrite In_elementsZ_single.
    +          split. {
    +            rewrite -Z.lt_le_pred.
    +            by apply Z_lt_add_r.
    +          } {
    +            apply Z.lt_pred_l.
    +          }
    +        }
    +      } {
    +        move ⇒ H_inv H_max_eq.
    +        right.
    +        by apply IH.
    +      }
    +    }
    +  Qed.
    +
      Lemma max_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
    - +    âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
    +  Proof.
    +    induction s as [| [y c] s' IH]. {
    +      done.
    +    } {
    +      move ⇒ x x'.
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ [H_gr] [H_c_neq_0] H_inv_s'.
    +      have H_gr' : (∀ xx : Z, InZ xx (s') → y + Z.of_N c < xx). {
    +        apply interval_list_elements_greater_alt2_def ⇒ //.
    +      }
    +
    +      case s' as [| [y' c'] s'']. {
    +        move ⇒ [<-].
    +        rewrite InZ_cons InZ_nil In_elementsZ_single.
    +        omega.
    +      } {
    +        move ⇒ H_max_eq.
    +        rewrite InZ_cons.
    +        move ⇒ []; last by apply IH.
    +        rewrite In_elementsZ_single.
    +        move ⇒ [_] H_x'_lt H_lt_x'.
    + +
    +        have H_x_in : InZ x ((y', c')::s''). {
    +          by apply max_eltZ_spec1.
    +        }
    +        
    +        move : (H_gr' _ H_x_in).
    +        apply Z.nlt_ge, Z.lt_le_incl.
    +        by apply Z.lt_trans with (m := x').
    +      }
    +    }
    +  Qed.
    +
      Lemma max_eltZ_eq_None :
        âˆ€ (s : t),
    -      max_eltZ s = None → s = nil.
    +      max_eltZ s = None → s = nil.
    +  Proof.
    +    induction s as [| [x' c] s' IH] ⇒ //.
    +    move : IH.
    +    case s' as [| [y' c'] s''] ⇒ //=.
    +    move ⇒ H H_pre.
    +    move : (H H_pre) ⇒ //.
    +  Qed.

      Definition max_eltZ_spec3 :
        âˆ€ (s : t),
    -      max_eltZ s = None → ∀ x, ¬InZ x s.
    +      max_eltZ s = None → ∀ x, ¬InZ x s.
    +  Proof.
    +    move ⇒ s /max_eltZ_eq_None → x /InZ_nil //.
    +  Qed.

      Definition max_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
    - +    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
    +  Proof.
    +    rewrite /max_elt.
    +    move ⇒ s x H_ok.
    +    case_eq (max_eltZ s) ⇒ //.
    +    move ⇒ z H_max_elt [<-].
    +    apply InZ_In ⇒ //.
    +    apply max_eltZ_spec1 ⇒ //.
    +    apply H_ok.
    +  Qed.
    +
      Definition max_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
    - +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
    +  Proof.
    +    rewrite /max_elt.
    +    move ⇒ s x y H_ok.
    +    move : (H_ok) ⇒ [H_inv] _.
    +    case_eq (max_eltZ s) ⇒ //.
    +    move ⇒ z H_max_elt [<-].
    +    rewrite In_InZ ⇒ H_inZ.
    +    rewrite -Enc.encode_lt.
    +    apply (max_eltZ_spec2 _ _ _ H_inv) ⇒ //.
    +    suff → : Enc.encode (Enc.decode z) = z ⇒ //.
    +    apply encode_decode_eq with (s := s) ⇒ //.
    +    apply max_eltZ_spec1 ⇒ //.
    +  Qed.
    +
      Definition max_elt_spec3 :
    -    âˆ€ s : t, max_elt s = None → Empty s.
    +    âˆ€ s : t, max_elt s = None → Empty s.
    +  Proof.
    +    intro s.
    +    rewrite /max_elt /Empty.
    +    case_eq (max_eltZ s) ⇒ //.
    +    move ⇒ /max_eltZ_eq_None → _ x.
    +    rewrite /In elements_nil InA_nil //.
    +  Qed.

    @@ -2060,9 +5640,22 @@

    Library MSetsExtra.MSetIntervals


      Lemma fold_spec :
    -   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    -   fold f s i = fold_left (flip f) (elements s) i.
    - +   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    +   fold f s i = fold_left (flip f) (elements s) i.
    +  Proof.
    +    intros s A i f.
    +    rewrite /fold fold_elementsZ_alt_def /elements
    +            rev_map_alt_def -map_rev.
    +    move : i.
    +    generalize (rev (elementsZ s)).
    +    induction l as [| x xs IH]. {
    +      done.
    +    } {
    +      move ⇒ i.
    +      rewrite /= IH //.
    +    }
    +  Qed.
    +

    @@ -2075,13 +5668,30 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    -    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
    - +  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    +    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
    +  Proof.
    +    induction s as [| [x cx] xs IH]. {
    +      intros c.
    +      rewrite elements_nil /= N.add_0_r //.
    +    } {
    +      intros c.
    +      rewrite /= IH.
    +      rewrite /elements !rev_map_alt_def !rev_length !map_length.
    +      rewrite elementsZ_cons app_length Nat2N.inj_add rev_length.
    +      rewrite length_elementsZ_single N2Nat.id.
    +      ring.
    +    }
    +  Qed.
    +
      Lemma cardinal_spec :
       âˆ€ (s : t),
    -   cardinal s = length (elements s).
    +   cardinal s = length (elements s).
    +  Proof.
    +    intros s.
    +    rewrite /cardinal cardinalN_spec N.add_0_l Nat2N.id //.
    +  Qed.

    @@ -2094,10 +5704,50 @@

    Library MSetsExtra.MSetIntervals


      Lemma for_all_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    - +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Proof.
    +    intros s f Hs H.
    +    rewrite /for_all /For_all /In fold_elementsZ_alt_def
    +            /elements rev_map_alt_def -map_rev.
    +    generalize (rev (elementsZ s)).
    +    induction l as [| x xs IH]. {
    +      split ⇒ // _ x /= /InA_nil //.
    +    } {
    +      rewrite /=.
    +      case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
    +        rewrite IH.
    +        split. {
    +          move ⇒ HH x' /InA_cons []. {
    +            by move ⇒ →.
    +          } {
    +            apply HH.
    +          }
    +        } {
    +          move ⇒ HH x' H_in.
    +          apply HH.
    +          apply InA_cons.
    +          by right.
    +        }
    +      } {
    +        split; move ⇒ HH. {
    +          contradict HH.
    +          case xs ⇒ //.
    +        } {
    +          exfalso.
    +          have H_in: (InA Enc.E.eq (Enc.decode x) (Enc.decode x :: map Enc.decode xs)). {
    +            apply InA_cons.
    +            left.
    +            apply Enc.E.eq_equiv.
    +          }
    +          move : (HH _ H_in).
    +          rewrite H_f_eq ⇒ //.
    +        }
    +      }
    +    }
    +  Qed.
    +
    @@ -2109,10 +5759,49 @@

    Library MSetsExtra.MSetIntervals


      Lemma exists_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    - +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Proof.
    +    intros s f Hs H.
    +    rewrite /exists_ /Exists /In fold_elementsZ_alt_def
    +            /elements rev_map_alt_def -map_rev.
    +    generalize (rev (elementsZ s)).
    +    induction l as [| x xs IH]. {
    +      split ⇒ //.
    +      move ⇒ [x] /= [] /InA_nil //.
    +    } {
    +      rewrite /=.
    +      case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
    +        split ⇒ _. {
    +          âˆƒ (Enc.decode x).
    +          split ⇒ //.
    +          apply InA_cons.
    +          left.
    +          apply Enc.E.eq_equiv.
    +        } {
    +          case xs ⇒ //.
    +        }
    +      } {
    +        rewrite IH.
    +        split. {
    +          move ⇒ [x0] [H_in] H_f_x0.
    +          âˆƒ x0.
    +          split ⇒ //.
    +          apply InA_cons.
    +          by right.
    +        } {
    +          move ⇒ [x0] [] /InA_cons H_in H_f_x0.
    +          âˆƒ x0.
    +          split ⇒ //.
    +          move : H_in ⇒ [] // H_in.
    +          contradict H_f_x0.
    +          rewrite H_in H_f_eq //.
    +        }
    +      }
    +    }
    +  Qed.
    +
    @@ -2123,110 +5812,411 @@

    Library MSetsExtra.MSetIntervals


    -  Definition partitionZ_aux_invariant (x : Z) acc c :=
    -    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
    +  Definition partitionZ_aux_invariant (x : Z) acc c :=
    +    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
        match c with
    -      None ⇒ (∀ y', InZ y' acc → Z.succ y' < x)
    -    | Some (y, c') ⇒ (x = y + Z.of_N c')
    +      None ⇒ (∀ y', InZ y' acc → Z.succ y' < x)
    +    | Some (y, c') ⇒ (x = y + Z.of_N c')
        end.

      Lemma partitionZ_aux_invariant_insert : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) acc
    -      (Some (partitionZ_fold_insert c x)).
    - +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) acc
    +      (Some (partitionZ_fold_insert c x)).
    +  Proof.
    +    intros x acc c.
    +    rewrite /partitionZ_fold_insert /partitionZ_aux_invariant
    +            /partitionZ_fold_skip.
    +    case c; last first. {
    +      move ⇒ [H_inv] H_in.
    +      rewrite /= interval_list_invariant_app_iff Z.add_1_r.
    +      split; last done.
    +      split; first done.
    +      split; first done.
    +      move ⇒ x1 x2.
    +      rewrite InZ_rev InZ_cons InZ_nil In_elementsZ_single1.
    +      move ⇒ H_x1_in [] // <-.
    +      by apply H_in.
    +    } {
    +      move ⇒ [y c'].
    +      rewrite /= !interval_list_invariant_app_iff
    +        N2Z.inj_succ Z.add_succ_r .
    +      rewrite !interval_list_invariant_cons !interval_list_invariant_nil.
    +      move ⇒ [] [H_inv_acc] [] [] _ [H_c_neq_0] _
    +        H_in_c →.
    +      split; last done.
    +      split; first done.
    +      split. {
    +        split; first done.
    +        split; last done.
    +        apply N.neq_succ_0.
    +      } {
    +        move ⇒ x1 x2.
    +        rewrite InZ_cons InZ_nil In_elementsZ_single.
    +        move ⇒ H_x1_in [] // [H_y_le] H_x2_lt.
    +        apply Z.lt_le_trans with (m := y) ⇒ //.
    +        apply H_in_c ⇒ //.
    +        rewrite InZ_cons In_elementsZ_single.
    +        left.
    +        split. {
    +          apply Z.le_refl.
    +        } {
    +          by apply Z_lt_add_r.
    +        }
    +      }
    +    }
    +  Qed.
    +
      Lemma partitionZ_aux_invariant_skip : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
    - -
    -  Definition partitionZ_fold_current (c : option (Z × N)) :=
    +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
    +  Proof.
    +    intros x acc c.
    +    rewrite /partitionZ_fold_skip /partitionZ_aux_invariant
    +            /partitionZ_fold_skip.
    +    case c; last first. {
    +      move ⇒ [H_inv] H_in.
    +      split; first done.
    +      move ⇒ y' H_y'_in.
    +      apply Z.lt_trans with (m := x). {
    +        by apply H_in.
    +      } {
    +        apply Z.lt_succ_diag_r.
    +      }
    +    } {
    +      move ⇒ [y c'] [H_inv] →.
    +      split ⇒ //.
    +      move ⇒ y'.
    +      rewrite InZ_cons In_elementsZ_single.
    +      move ⇒ []. {
    +        move ⇒ [_].
    +        rewrite -Z.succ_lt_mono //.
    +      } {
    +        move : H_inv.
    +        rewrite /= !interval_list_invariant_app_iff interval_list_invariant_cons.
    +        move ⇒ [_] [] [_] [H_c'_neq] _ H_pre H_y'_in.
    +        apply Z.lt_trans with (m := y). {
    +          apply H_pre. {
    +            by rewrite InZ_rev.
    +          } {
    +            rewrite InZ_cons.
    +            left.
    +            by apply In_elementsZ_single_hd.
    +          }
    +        }
    +        apply Z.lt_succ_r, Z_le_add_r.
    +      }
    +    }
    +  Qed.
    + +
    +  Definition partitionZ_fold_current (c : option (Z × N)) :=
        match c with
    -       None ⇒ nil
    -     | Some yc ⇒ yc::nil
    +       None ⇒ nil
    +     | Some yc ⇒ yc::nil
        end.

      Lemma InZ_partitionZ_fold_current_Some : ∀ yc y,
    -     InZ y (partitionZ_fold_current (Some yc)) ↔
    -     InZ y (yc :: nil).
    - +     InZ y (partitionZ_fold_current (Some yc)) ↔
    +     InZ y (yc :: nil).
    +  Proof. done. Qed.
    +
      Lemma InZ_partitionZ_fold_insert : ∀ c x y l,
       match c with
    -   | Some (y, c') ⇒ x = y + Z.of_N c'
    -   | None ⇒ True
    -   end → (
    -   InZ y (partitionZ_fold_insert c x :: l) ↔
    -    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    -       InZ y l)).
    - +   | Some (y, c') ⇒ x = y + Z.of_N c'
    +   | None ⇒ True
    +   end → (
    +   InZ y (partitionZ_fold_insert c x :: l) ↔
    +    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    +       InZ y l)).
    +  Proof.
    +    intros c x y l.
    +    rewrite /partitionZ_fold_insert /partitionZ_fold_current
    +            /partitionZ_fold_skip.
    +    case c. {
    +      move ⇒ [y' c'] →.
    +      rewrite !InZ_cons elementsZ_single_succ in_app_iff
    +              InZ_nil /=.
    +      tauto.
    +    } {
    +      rewrite InZ_cons InZ_nil In_elementsZ_single1.
    +      tauto.
    +    }
    +  Qed.
    +
      Lemma InZ_partitionZ_fold_skip : ∀ c acc y,
    -    InZ y (partitionZ_fold_skip acc c) ↔
    -    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
    - +    InZ y (partitionZ_fold_skip acc c) ↔
    +    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
    +  Proof.
    +    intros c acc y.
    +    rewrite /partitionZ_fold_skip /partitionZ_fold_current
    +            /partitionZ_fold_skip.
    +    case c. {
    +      move ⇒ [y' c'].
    +      rewrite !InZ_cons InZ_nil /=.
    +      tauto.
    +    } {
    +      rewrite InZ_nil.
    +      tauto.
    +    }
    +  Qed.
    +
      Lemma filterZ_single_aux_props :
        âˆ€ f c x acc cur,
    -      partitionZ_aux_invariant x acc cur →
    -      match (filterZ_single_aux f (acc, cur) x c) with
    -        (acc', c') ⇒
    -        let r := partitionZ_fold_skip acc' c' in
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' (partitionZ_fold_skip acc cur) ∨
    -                                    (f y' = true ∧ List.In y' (elementsZ_single x c))))
    +      partitionZ_aux_invariant x acc cur →
    +      match (filterZ_single_aux f (acc, cur) x c) with
    +        (acc', c') ⇒
    +        let r := partitionZ_fold_skip acc' c' in
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' (partitionZ_fold_skip acc cur) ∨
    +                                    (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
    - +  Proof.
    +    intro f.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intros x acc cur.
    +      rewrite /partitionZ_aux_invariant.
    +      move ⇒ [H_inv] _.
    +      rewrite /filterZ_single_aux fold_elementsZ_single_zero /=.
    +      tauto.
    +    }
    +    intros x acc cur H_inv.
    +    have → : filterZ_single_aux f (acc, cur) x (N.succ c') =
    +               filterZ_single_aux f (filterZ_fold_fun f (acc, cur) x) (Z.succ x) c'. {
    +        by rewrite /filterZ_single_aux fold_elementsZ_single_succ.
    +    }
    +    case_eq (filterZ_fold_fun f (acc, cur) x).
    +    move ⇒ acc' cur' H_fold_eq.
    + +
    +    case_eq (filterZ_single_aux f (acc', cur') (Z.succ x) c').
    +    move ⇒ acc'' cur'' H_succ_eq.
    + +
    +    have H_inv' : partitionZ_aux_invariant (Z.succ x) acc' cur'. {
    +      move : H_fold_eq H_inv.
    +      rewrite /filterZ_fold_fun.
    +      case (f x); move ⇒ [<-] <-. {
    +        apply partitionZ_aux_invariant_insert.
    +      } {
    +        apply partitionZ_aux_invariant_skip.
    +      }
    +    }
    +   
    +    move : (IH (Z.succ x) acc' cur' H_inv') ⇒ {IH}.
    +    rewrite H_succ_eq /=.
    +    set r := partitionZ_fold_skip acc'' cur''.
    +    move ⇒ [H_inv_r] H_in_r.
    +    split; first assumption.
    + +
    +    move ⇒ y'.
    +    move : H_fold_eq.
    +    rewrite H_in_r /filterZ_fold_fun.
    +    case_eq (f x) ⇒ H_fx [<-] <-. {
    +      rewrite InZ_partitionZ_fold_skip InZ_partitionZ_fold_current_Some InZ_partitionZ_fold_skip elementsZ_single_succ_front.
    +      rewrite InZ_partitionZ_fold_insert; last first. {
    +        move : H_inv.
    +        rewrite /partitionZ_aux_invariant ⇒ [[_]].
    +        case cur ⇒ //.
    +      }
    +      rewrite InZ_nil /=.
    +      split; last by tauto.
    +      move ⇒ []; last by tauto.
    +      move ⇒ []; last by tauto.
    +      move ⇒ []. {
    +        move ⇒ <-.
    +        tauto.
    +      } {
    +        tauto.
    +      }
    +    } {
    +      rewrite InZ_partitionZ_fold_skip /partitionZ_fold_current InZ_partitionZ_fold_skip elementsZ_single_succ_front !InZ_nil /=.
    +      split; first by tauto.
    +      move ⇒ []; first by tauto.
    +      move ⇒ [] H_fy' []. {
    +        move ⇒ H_x_eq; subst y'.
    +        contradict H_fy'.
    +        by rewrite H_fx.
    +      } {
    +        tauto.
    +      }
    +    }
    +  Qed.
    +
      Lemma filterZ_single_props :
        âˆ€ f c x acc,
    -      interval_list_invariant (rev acc) = true →
    -      (∀ y' : Z, InZ y' acc → Z.succ y' < x) →
    +      interval_list_invariant (rev acc) = true →
    +      (∀ y' : Z, InZ y' acc → Z.succ y' < x) →
          match (filterZ_single f acc x c) with
            r ⇒
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    -                                 (f y' = true ∧ List.In y' (elementsZ_single x c))))
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
    +  Proof.
    +    intros f c x acc.
    +    move ⇒ H_inv H_acc.
    +    rewrite /filterZ_single.
    + +
    +    have H_inv' : partitionZ_aux_invariant x acc None. {
    +      by rewrite /partitionZ_aux_invariant /=.
    +    }
    +    move : (filterZ_single_aux_props f c x acc None H_inv').
    +    case_eq (filterZ_single_aux f (acc, None) x c).
    +    move ⇒ acc' cur' /= H_res.
    +    tauto.
    +  Qed.


      Lemma filterZ_aux_props :
        âˆ€ f s acc,
    -      interval_list_invariant s = true →
    -      interval_list_invariant (rev acc) = true →
    -      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      interval_list_invariant s = true →
    +      interval_list_invariant (rev acc) = true →
    +      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
          match (filterZ_aux acc f s) with
            r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    -                                 (f y' = true ∧ InZ y' s)))
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ InZ y' s)))
          end.
    - +  Proof.
    +    intro f.
    +    induction s as [| [y c] s' IH]. {
    +      intros acc.
    +      move ⇒ _ H_inv _.
    +      rewrite /filterZ_aux.
    +      split; first assumption.
    +      move ⇒ y'; rewrite InZ_rev InZ_nil; tauto.
    +    } {
    +      intros acc.
    +      rewrite interval_list_invariant_cons.
    +      move ⇒ [H_gr] [H_c_neq_0] H_inv_s' H_inv H_in_acc /=.
    +      move : H_gr.
    +      rewrite interval_list_elements_greater_alt2_def ⇒ // H_gr.
    + +
    +      have H_pre : (∀ y' : Z, InZ y' acc → Z.succ y' < y). {
    +        move ⇒ x1 H_x1_in.
    +        apply H_in_acc ⇒ //.
    +        rewrite InZ_cons.
    +        by left; apply In_elementsZ_single_hd.
    +      }
    +      
    +      move : (filterZ_single_props f c y acc H_inv H_pre) ⇒ {H_pre}.
    +      set acc' := filterZ_single f acc y c.
    +      move ⇒ [H_inv'] H_in_acc'.
    + +
    +      have H_pre : (∀ x1 x2 : Z,
    +                      InZ x1 acc' → InZ x2 s' → Z.succ x1 < x2). {
    +        move ⇒ x1 x2.
    +        rewrite H_in_acc' In_elementsZ_single.
    +        move ⇒ []. {
    +          move ⇒ H_x1_in H_x2_in.
    +          apply H_in_acc ⇒ //.
    +          rewrite InZ_cons.
    +          by right.
    +        } {
    +          move ⇒ [_] [_] H_x1_lt H_x2_in.
    +          apply Z.le_lt_trans with (m := y + Z.of_N c).
    +            - by apply Z.le_succ_l.
    +            - by apply H_gr.
    +        }
    +      }
    +      move : (IH acc' H_inv_s' H_inv' H_pre) ⇒ {H_pre}.
    + +
    +      move ⇒ [H_inv_r] H_in_r.
    +      split; first assumption.
    +      move ⇒ y'.
    +      rewrite H_in_r H_in_acc' InZ_cons.
    +      tauto.
    +    }
    +  Qed.
    +
      Lemma filterZ_props :
        âˆ€ f s,
    -      interval_list_invariant s = true →
    +      interval_list_invariant s = true →
          match (filterZ f s) with r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ y', InZ y' r ↔ (f y' = true ∧ InZ y' s))
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (f y' = true ∧ InZ y' s))
          end.
    +  Proof.
    +    intros f s H_inv_s.
    +    rewrite /filterZ.
    + +
    +    have H_pre_1 : interval_list_invariant (rev nil) = true by done.
    +    have H_pre_2 : (∀ x1 x2 : Z, InZ x1 nil → InZ x2 s → Z.succ x1 < x2) by done.
    + +
    +    move : (filterZ_aux_props f s nil H_inv_s H_pre_1 H_pre_2) ⇒ {H_pre_1} {H_pre_2}.
    +    move ⇒ [H_inv'] H_in_r.
    +    split; first assumption.
    +    move ⇒ y'.
    +    rewrite H_in_r InZ_nil.
    +    tauto.
    +  Qed.

      Global Instance filter_ok s f : ∀ `(Ok s), Ok (filter f s).
    +  Proof.
    +    move ⇒ [H_inv H_enc].
    +    rewrite /filter.
    +    set f' := (fun z : Z ⇒ f (Enc.decode z)).
    +    move : (filterZ_props f' s H_inv).
    +    move ⇒ [H_inv'] H_in_r.
    +    rewrite /Ok /IsOk /is_encoded_elems_list.
    +    split; first assumption.
    +    move ⇒ x /H_in_r [_] H_x_in.
    +    by apply H_enc.
    +  Qed.

      Lemma filter_spec :
    -   âˆ€ (s : t) (x : elt) (f : elt → bool),
    -   Ok s →
    -   (In x (filter f s) ↔ In x s ∧ f x = true).
    - +   âˆ€ (s : t) (x : elt) (f : elt → bool),
    +   Ok s →
    +   (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Proof.
    +    move ⇒ s x f H_ok.
    +    suff H_suff :
    +      (∀ x, (InZ x (filter f s)) ↔
    +                 InZ x s ∧ f (Enc.decode x) = true). {
    +      rewrite !In_alt_def /elements !rev_map_alt_def
    +              -!in_rev !in_map_iff.
    +      setoid_rewrite H_suff.
    +      rewrite /InZ.
    +      split. {
    +        move ⇒ [y] [<-] [?] ?.
    +        split ⇒ //.
    +        by ∃ y.
    +      } {
    +        move ⇒ [] [y] [<-] ? ?.
    +        by ∃ y.
    +      }
    +    }
    +    rewrite /filter.
    +    set f' := (fun z : Z ⇒ f (Enc.decode z)).
    +    move : (H_ok) ⇒ [H_inv _].
    +    move : (filterZ_props f' s H_inv).
    +    move ⇒ [H_inv'] H_in_r.
    +    move ⇒ y; rewrite H_in_r; tauto.
    +  Qed.
    +
    @@ -2238,42 +6228,102 @@

    Library MSetsExtra.MSetIntervals


      Lemma partitionZ_single_aux_alt_def : ∀ f c y acc_t c_t acc_f c_f,
    -    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    -    (filterZ_single_aux f (acc_t, c_t) y c,
    -     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).
    +    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    +    (filterZ_single_aux f (acc_t, c_t) y c,
    +     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).
    +  Proof.
    +    intros f.
    +    rewrite /partitionZ_single_aux /filterZ_single_aux.
    +    induction c as [| c' IH] using N.peano_ind. {
    +      intros y acc_t c_t acc_f c_f.
    +      rewrite !fold_elementsZ_single_zero //. } {
    +      intros y acc_t c_t acc_f c_f.
    +      rewrite !fold_elementsZ_single_succ.
    +      case_eq (partitionZ_fold_fun f (acc_t, c_t, (acc_f, c_f)) y) ⇒ [] [acc_t' c_t'] [acc_f' c_f'] H_fold_eq.
    +      rewrite IH ⇒ {IH}.
    +      suff : (filterZ_fold_fun f (acc_t, c_t) y = (acc_t', c_t')) ∧
    +             (filterZ_fold_fun (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y = (acc_f', c_f')). {
    +        move ⇒ [->] → //.
    +      }
    +      move : H_fold_eq.
    +      rewrite /partitionZ_fold_fun /filterZ_fold_fun.
    +      case (f y); move ⇒ [<-] <- <- <- //.
    +    }
    +  Qed.

      Lemma partitionZ_aux_alt_def : ∀ f s acc_t acc_f,
    -   partitionZ_aux acc_t acc_f f s =
    -   (filterZ_aux acc_t f s,
    -    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
    - +   partitionZ_aux acc_t acc_f f s =
    +   (filterZ_aux acc_t f s,
    +    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
    +  Proof.
    +    intros f.
    +    induction s as [| [y c] s' IH]. {
    +      done.
    +    } {
    +      intros acc_t acc_f.
    +      rewrite /= /partitionZ_single /filterZ_single
    +              partitionZ_single_aux_alt_def.
    +      case (filterZ_single_aux f (acc_t, None) y c) ⇒ acc_t' c_t'.
    +      case (filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, None) y c) ⇒ acc_f' c_f'.
    +      rewrite IH //.
    +    }
    +  Qed.
    +
      Lemma partitionZ_alt_def : ∀ f s,
    -    partitionZ f s = (filterZ f s,
    -                      filterZ (fun x ⇒ negb (f x)) s).
    +    partitionZ f s = (filterZ f s,
    +                      filterZ (fun x ⇒ negb (f x)) s).
    +  Proof.
    +    intros f s.
    +    rewrite /partitionZ /filterZ
    +            partitionZ_aux_alt_def //.
    +  Qed.

      Lemma partition_alt_def : ∀ f s,
    -    partition f s = (filter f s,
    -                     filter (fun x ⇒ negb (f x)) s).
    +    partition f s = (filter f s,
    +                     filter (fun x ⇒ negb (f x)) s).
    +  Proof.
    +    intros f s.
    +    rewrite /partition /filter partitionZ_alt_def.
    +    done.
    +  Qed.

    -  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).
    +  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).
    +  Proof.
    +    move ⇒ H_ok.
    +    rewrite partition_alt_def /fst.
    +    by apply filter_ok.
    +  Qed.

    -  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).
    +  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).
    +  Proof.
    +    move ⇒ H_ok.
    +    rewrite partition_alt_def /snd.
    +    by apply filter_ok.
    +  Qed.

      Lemma partition_spec1 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Equal (fst (partition f s)) (filter f s).
    +   âˆ€ (s : t) (f : elt → bool),
    +   Equal (fst (partition f s)) (filter f s).
    +  Proof.
    +    intros s f.
    +    rewrite partition_alt_def /fst /Equal //.
    +  Qed.

      Lemma partition_spec2 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Ok s →
    -   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +   âˆ€ (s : t) (f : elt → bool),
    +   Ok s →
    +   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +  Proof.
    +    intros s f.
    +    rewrite partition_alt_def /snd /Equal //.
    +  Qed.

    End Raw.
    @@ -2293,123 +6343,217 @@

    Library MSetsExtra.MSetIntervals


    -Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
    +Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
      Module E := Enc.E.
      Module Raw := Raw Enc.

    Local Unset Elimination Schemes.
    Local Unset Case Analysis Schemes.

    Definition elt := Raw.elt.
    Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}.
    Definition elt := Raw.elt.
    Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}.
     Definition t := t_.
    Arguments Mkt this {is_ok}.
     Hint Resolve is_ok : typeclass_instances.

    Definition In (x : elt)(s : t) := Raw.In x s.(this).
    Definition Equal (s s' : t) := ∀ a : elt, In a s ↔ In a s'.
    Definition Subset (s s' : t) := ∀ a : elt, In a s → In a s'.
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.
    - -
    Definition mem (x : elt)(s : t) := Raw.mem x s.(this).
    Definition add (x : elt)(s : t) : t := Mkt (Raw.add x s.(this)).
    Definition remove (x : elt)(s : t) : t := Mkt (Raw.remove x s.(this)).
    Definition singleton (x : elt) : t := Mkt (Raw.singleton x).
    Definition union (s s' : t) : t := Mkt (Raw.union s s').
    Definition inter (s s' : t) : t := Mkt (Raw.inter s s').
    Definition diff (s s' : t) : t := Mkt (Raw.diff s s').
    Definition equal (s s' : t) := Raw.equal s s'.
    Definition subset (s s' : t) := Raw.subset s s'.(this).
    Definition empty : t := Mkt Raw.empty.
    Definition is_empty (s : t) := Raw.is_empty s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
    Definition cardinal (s : t) := Raw.cardinal s.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    -   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    - -
    Instance In_compat : Proper (E.eq==>eq==>iff) In.
    - -
    Definition eq : t → t → Prop := Equal.
    - -
    Instance eq_equiv : Equivalence eq.
    - -
    Definition eq_dec : ∀ (s s':t), { eq s s' }+{ ¬eq s s' }.
    - -
    Definition lt : t → t → Prop := Raw.lt.
    - -
    Instance lt_strorder : StrictOrder lt.
    - -
    Instance lt_compat : Proper (eq==>eq==>iff) lt.
    Definition In (x : elt)(s : t) := Raw.In x s.(this).
    Definition Equal (s s' : t) := ∀ a : elt, In a s ↔ In a s'.
    Definition Subset (s s' : t) := ∀ a : elt, In a s → In a s'.
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.
    + +
    Definition mem (x : elt)(s : t) := Raw.mem x s.(this).
    Definition add (x : elt)(s : t) : t := Mkt (Raw.add x s.(this)).
    Definition remove (x : elt)(s : t) : t := Mkt (Raw.remove x s.(this)).
    Definition singleton (x : elt) : t := Mkt (Raw.singleton x).
    Definition union (s s' : t) : t := Mkt (Raw.union s s').
    Definition inter (s s' : t) : t := Mkt (Raw.inter s s').
    Definition diff (s s' : t) : t := Mkt (Raw.diff s s').
    Definition equal (s s' : t) := Raw.equal s s'.
    Definition subset (s s' : t) := Raw.subset s s'.(this).
    Definition empty : t := Mkt Raw.empty.
    Definition is_empty (s : t) := Raw.is_empty s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
    Definition cardinal (s : t) := Raw.cardinal s.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    +   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    + +
    Instance In_compat : Proper (E.eq==>eq==>iff) In.
    Proof.
    +   repeat red.
    +   move ⇒ x y H_eq_xy x' y' →.
    +   rewrite /In /Raw.In.
    +   setoid_rewrite H_eq_xy.
    +   done.
    Qed.
    + +
    Definition eq : t → t → Prop := Equal.
    + +
    Instance eq_equiv : Equivalence eq.
    Proof. firstorder. Qed.
    + +
    Definition eq_dec : ∀ (s s':t), { eq s s' }+{ ¬eq s s' }.
    Proof.
    +  intros (s,Hs) (s',Hs').
    +  change ({Raw.Equal s s'}+{¬Raw.Equal s s'}).
    +  destruct (Raw.equal s s') eqn:H; [left|right];
    +   rewrite <- Raw.equal_spec; congruence.
    Defined.
    + +
    Definition lt : t → t → Prop := Raw.lt.
    + +
    Instance lt_strorder : StrictOrder lt.
    Proof.
    +   unfold lt.
    +   constructor. {
    +     move : Raw.lt_Irreflexive.
    +     rewrite /Irreflexive /complement /Reflexive.
    +     move ⇒ H x.
    +     apply H.
    +   } {
    +     move : Raw.lt_Transitive.
    +     rewrite /Transitive.
    +     move ⇒ H x y z.
    +     apply H.
    +   }
    Qed.
    + +
    Instance lt_compat : Proper (eq==>eq==>iff) lt.
    Proof.
    +   repeat red.
    +   move ⇒ [x1 H_x1_ok] [y1 H_y1_ok] H_eq.
    +   move ⇒ [x2 H_x2_ok] [y2 H_y2_ok].
    +   move : H_eq.
    +   rewrite /eq /lt /Equal /In /=.
    +   replace (∀ a : elt, Raw.In a x1 ↔ Raw.In a y1) with
    +     (Raw.Equal x1 y1) by done.
    +   replace (∀ a : elt, Raw.In a x2 ↔ Raw.In a y2) with
    +     (Raw.Equal x2 y2) by done.
    +   rewrite -!Raw.equal_spec !Raw.equal_alt_def.
    +   move ⇒ → → //.
    Qed.

     Section Spec.
      Variable s s' : t.
      Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    - -
    -  Lemma mem_spec : mem x s = true ↔ In x s.
    -   Lemma equal_spec : equal s s' = true ↔ Equal s s'.
    -   Lemma subset_spec : subset s s' = true ↔ Subset s s'.
    -   Lemma empty_spec : Empty empty.
    -   Lemma is_empty_spec : is_empty s = true ↔ Empty s.
    -   Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    -   Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -   Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
    -   Lemma union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    -   Lemma inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    -   Lemma diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    -   Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
    -   Lemma cardinal_spec : cardinal s = length (elements s).
    -   Lemma filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -   Lemma for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -   Lemma exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -   Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
    -   Lemma partition_spec2 : compatb f →
    -      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    -   Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    -   Lemma elements_spec2w : NoDupA E.eq (elements s).
    -   Lemma elements_spec2 : sort E.lt (elements s).
    -   Lemma choose_spec1 : choose s = Some x → In x s.
    -   Lemma choose_spec2 : choose s = None → Empty s.
    -   Lemma choose_spec3 : choose s = Some x → choose s' = Some y →
    -    Equal s s' → E.eq x y.
    - -
    -  Lemma min_elt_spec1 : choose s = Some x → In x s.
    -   Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
    -   Lemma min_elt_spec3 : choose s = None → Empty s.
    - -
    -  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
    -   Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
    -   Lemma max_elt_spec3 : max_elt s = None → Empty s.
    - -
    -  Lemma compare_spec : CompSpec eq lt s s' (compare s s').
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    + +
    +  Lemma mem_spec : mem x s = true ↔ In x s.
    +  Proof. exact (Raw.mem_spec _ _ _). Qed.
    +  Lemma equal_spec : equal s s' = true ↔ Equal s s'.
    +  Proof. rewrite Raw.equal_spec //. Qed.
    +  Lemma subset_spec : subset s s' = true ↔ Subset s s'.
    +  Proof. exact (Raw.subset_spec _ _ _ _). Qed.
    +  Lemma empty_spec : Empty empty.
    +  Proof. exact Raw.empty_spec. Qed.
    +  Lemma is_empty_spec : is_empty s = true ↔ Empty s.
    +  Proof. rewrite Raw.is_empty_spec //. Qed.
    +  Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Proof. exact (Raw.add_spec _ _ _ _). Qed.
    +  Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Proof. exact (Raw.remove_spec _ _ _ _). Qed.
    +  Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
    +  Proof. exact (Raw.singleton_spec _ _). Qed.
    +  Lemma union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +  Proof. exact (Raw.union_spec _ _ _ _ _). Qed.
    +  Lemma inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +  Proof. exact (Raw.inter_spec _ _ _ _ _). Qed.
    +  Lemma diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Proof. exact (Raw.diff_spec _ _ _ _ _). Qed.
    +  Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
    +  Proof. exact (@Raw.fold_spec _). Qed.
    +  Lemma cardinal_spec : cardinal s = length (elements s).
    +  Proof. exact (@Raw.cardinal_spec s). Qed.
    +  Lemma filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Proof. move ⇒ _; exact (@Raw.filter_spec _ _ _ _). Qed.
    +  Lemma for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Proof. exact (@Raw.for_all_spec _ _ _). Qed.
    +  Lemma exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Proof. exact (@Raw.exists_spec _ _ _). Qed.
    +  Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
    +  Proof. move ⇒ _; exact (@Raw.partition_spec1 _ _). Qed.
    +  Lemma partition_spec2 : compatb f →
    +      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +  Proof. move ⇒ _; exact (@Raw.partition_spec2 _ _ _). Qed.
    +  Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +  Proof. rewrite /In /Raw.In /elements //. Qed.
    +  Lemma elements_spec2w : NoDupA E.eq (elements s).
    +  Proof. exact (Raw.elements_spec2w _ _). Qed.
    +  Lemma elements_spec2 : sort E.lt (elements s).
    +  Proof. exact (Raw.elements_sorted _ _). Qed.
    +  Lemma choose_spec1 : choose s = Some x → In x s.
    +  Proof. exact (Raw.choose_spec1 _ _ _). Qed.
    +  Lemma choose_spec2 : choose s = None → Empty s.
    +  Proof. exact (Raw.choose_spec2 _). Qed.
    +  Lemma choose_spec3 : choose s = Some x → choose s' = Some y →
    +    Equal s s' → E.eq x y.
    +  Proof.
    +    intros H1 H2 H3.
    +    suff → : x = y. {
    +      apply E.eq_equiv.
    +    }
    +    move : H1 H2 H3.
    +    exact (Raw.choose_spec3 _ _ _ _ _ _).
    +  Qed.
    + +
    +  Lemma min_elt_spec1 : choose s = Some x → In x s.
    +  Proof. exact (Raw.min_elt_spec1 _ _ _). Qed.
    +  Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
    +  Proof. exact (Raw.min_elt_spec2 _ _ _ _). Qed.
    +  Lemma min_elt_spec3 : choose s = None → Empty s.
    +  Proof. exact (Raw.min_elt_spec3 _). Qed.
    + +
    +  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
    +  Proof. exact (Raw.max_elt_spec1 _ _ _). Qed.
    +  Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
    +  Proof. exact (Raw.max_elt_spec2 _ _ _ _). Qed.
    +  Lemma max_elt_spec3 : max_elt s = None → Empty s.
    +  Proof. exact (Raw.max_elt_spec3 _). Qed.
    + +
    +  Lemma compare_spec : CompSpec eq lt s s' (compare s s').
    +  Proof.
    +    generalize s s'.
    +    move ⇒ [s1 H_ok_s1] [s2 H_ok_s2].
    +    move : (Raw.compare_spec s1 s2).
    +    rewrite /CompSpec /eq /Equal /In /lt /compare /=.
    +    replace (∀ a : elt, Raw.In a s1 ↔ Raw.In a s2) with
    +    (Raw.Equal s1 s2) by done.
    +    suff H_eq : (Raw.Equal s1 s2) ↔ (s1 = s2). {
    +      move ⇒ [] H; constructor ⇒ //.
    +      by rewrite H_eq.
    +    }
    +    rewrite -Raw.equal_spec Raw.equal_alt_def //.
    +  Qed.

     End Spec.
    @@ -2436,29 +6580,32 @@

    Library MSetsExtra.MSetIntervals


    Module ElementEncodeZ <: ElementEncode.
    -  Module E := Z.
    +  Module E := Z.

    -  Definition encode (z : Z) := z.
    -  Definition decode (z : Z) := z.
    +  Definition encode (z : Z) := z.
    +  Definition decode (z : Z) := z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    - +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
    +  Proof. by []. Qed.
    +
    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    - +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Proof. by []. Qed.
    +
    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    - +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Proof. by []. Qed.
    +
    End ElementEncodeZ.

    -Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.
    +Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.

    @@ -2471,29 +6618,41 @@

    Library MSetsExtra.MSetIntervals


    Module ElementEncodeN <: ElementEncode.
    -  Module E := N.
    +  Module E := N.

    -  Definition encode (n : N) := Z.of_N n.
    -  Definition decode (z : Z) := Z.to_N z.
    +  Definition encode (n : N) := Z.of_N n.
    +  Definition decode (z : Z) := Z.to_N z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    - +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
    +  Proof.
    +    intros e.
    +    rewrite /encode /decode N2Z.id //.
    +  Qed.
    +
    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    - +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Proof.
    +    intros e1 e2.
    +    rewrite /encode /Z.eq N2Z.inj_iff /E.eq //.
    +  Qed.
    +
    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Proof.
    +    intros e1 e2.
    +    rewrite /encode -N2Z.inj_lt //.
    +  Qed.

    End ElementEncodeN.

    -Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.
    +Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.

    @@ -2504,29 +6663,41 @@

    Library MSetsExtra.MSetIntervals

    Module ElementEncodeNat <: ElementEncode.
    -  Module E := Nat.
    +  Module E := Nat.

    -  Definition encode (n : nat) := Z.of_nat n.
    -  Definition decode (z : Z) := Z.to_nat z.
    +  Definition encode (n : nat) := Z.of_nat n.
    +  Definition decode (z : Z) := Z.to_nat z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    - +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
    +  Proof.
    +    intros e.
    +    rewrite /encode /decode Nat2Z.id //.
    +  Qed.
    +
    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    - +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Proof.
    +    intros e1 e2.
    +    rewrite /encode /Z.eq Nat2Z.inj_iff /E.eq //.
    +  Qed.
    +
    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Proof.
    +    intros e1 e2.
    +    rewrite /encode -Nat2Z.inj_lt //.
    +  Qed.

    End ElementEncodeNat.

    -Module MSetIntervalsNat <: SetsOn Nat := MSetIntervals ElementEncodeNat.
    +Module MSetIntervalsNat <: SetsOn Nat := MSetIntervals ElementEncodeNat.

    diff --git a/html/MSetsExtra.MSetListWithDups.html b/html/MSetsExtra.MSetListWithDups.html index 7ec5cc9..26bd69f 100644 --- a/html/MSetsExtra.MSetListWithDups.html +++ b/html/MSetsExtra.MSetListWithDups.html @@ -45,10 +45,10 @@

    Library MSetsExtra.MSetListWithDups


    -Require Export MSetInterface.
    +Require Export MSetInterface.
    Require Import mathcomp.ssreflect.ssreflect.
    -Require Import List OrdersFacts OrdersLists.
    -Require Import Sorting Permutation.
    +Require Import List OrdersFacts OrdersLists.
    +Require Import Sorting Permutation.
    Require Import MSetWithDups.

    @@ -72,7 +72,7 @@

    Library MSetsExtra.MSetListWithDups

    duplicates.
    -Module RemoveDupsFromSorted (Import X:OrderedType).
    +Module RemoveDupsFromSorted (Import X:OrderedType).

    @@ -81,30 +81,41 @@

    Library MSetsExtra.MSetListWithDups

    First, we need some infrastructure for our ordered type
    -  Module Import MX := OrderedTypeFacts X.
    +  Module Import MX := OrderedTypeFacts X.

    -  Module Import XTotalLeBool <: TotalLeBool.
    +  Module Import XTotalLeBool <: TotalLeBool.
        Definition t := X.t.
        Definition leb x y :=
          match X.compare x y with
    -        | Lt ⇒ true
    -        | Eq ⇒ true
    -        | Gt ⇒ false
    +        | Lt ⇒ true
    +        | Eq ⇒ true
    +        | Gt ⇒ false
          end.

    -    Infix "<=?" := leb (at level 35).
    +    Infix "<=?" := leb (at level 35).

    -    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).
    +    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).
    +    Proof.
    +      intros a1 a2.
    +      unfold leb.
    +      rewrite (compare_antisym a1 a2).
    +      case (X.compare a1 a2); rewrite /=; tauto.
    +    Qed.

    -    Definition le x y := (leb x y = true).
    +    Definition le x y := (leb x y = true).
      End XTotalLeBool.

    -  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.
    +  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.
    +  Proof.
    +    intros x y.
    +    rewrite eqb_alt -compare_eq_iff.
    +    case (compare x y) ⇒ //.
    +  Qed.

    @@ -113,22 +124,22 @@

    Library MSetsExtra.MSetListWithDups

    Now we can define our main function
    -  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
    +  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
        match l with
    -    | nil ⇒ List.rev' acc
    -    | x :: xs ⇒
    +    | nil ⇒ List.rev' acc
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ List.rev' (x :: acc)
    -       | y :: ys ⇒
    -           if eqb x y then
    +       | nil ⇒ List.rev' (x :: acc)
    +       | y :: ys ⇒
    +           if eqb x y then
                 remove_dups_from_sortedA_aux acc xs
    -           else
    -             remove_dups_from_sortedA_aux (x::acc) xs
    +           else
    +             remove_dups_from_sortedA_aux (x::acc) xs
           end
        end.

    -  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).
    +  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).

    @@ -137,34 +148,87 @@

    Library MSetsExtra.MSetListWithDups

    We can prove some technical lemmata
    -  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    -    remove_dups_from_sortedA_aux acc l =
    -    List.rev acc ++ (remove_dups_from_sortedA l).
    - +  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    +    remove_dups_from_sortedA_aux acc l =
    +    List.rev acc ++ (remove_dups_from_sortedA l).
    +  Proof.
    +    unfold remove_dups_from_sortedA.
    +    induction l as [| x xs IH] ⇒ acc. {
    +      rewrite /remove_dups_from_sortedA_aux /rev' -!rev_alt /= app_nil_r //.
    +    } {
    +      rewrite /=.
    +      case_eq xs. {
    +        rewrite /rev' -!rev_alt //.
    +      } {
    +        move ⇒ y ys H_xs_eq.
    +        rewrite -!H_xs_eq !(IH acc) !(IH (x :: acc)) (IH (x::nil)).
    +        case (eqb x y) ⇒ //.
    +        rewrite /= -app_assoc //.
    +      }
    +    }
    +  Qed.
    +
      Lemma remove_dups_from_sortedA_alt :
    -    âˆ€ (l : list t),
    -    remove_dups_from_sortedA l =
    +    âˆ€ (l : list t),
    +    remove_dups_from_sortedA l =
        match l with
    -    | nil ⇒ nil
    -    | x :: xs ⇒
    +    | nil ⇒ nil
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ l
    -       | y :: ys ⇒
    -           if eqb x y then
    +       | nil ⇒ l
    +       | y :: ys ⇒
    +           if eqb x y then
                 remove_dups_from_sortedA xs
    -           else
    -             x :: remove_dups_from_sortedA xs
    +           else
    +             x :: remove_dups_from_sortedA xs
           end
        end.
    - +  Proof.
    +    case. {
    +      done.
    +    } {
    +      intros x xs.
    +      rewrite /remove_dups_from_sortedA /= /rev' /=.
    +      case xs ⇒ //.
    +      move ⇒ y ys.
    +      rewrite !remove_dups_from_sortedA_aux_alt /= //.
    +    }
    +  Qed.
    +
      Lemma remove_dups_from_sortedA_hd :
          âˆ€ x xs,
    -      âˆƒ (x':t) xs',
    -        remove_dups_from_sortedA (x :: xs) =
    -        (x' :: xs') ∧ (eqb x x' = true).
    - +      âˆƒ (x':t) xs',
    +        remove_dups_from_sortedA (x :: xs) =
    +        (x' :: xs') ∧ (eqb x x' = true).
    +  Proof.
    +    intros x xs.
    +    move : x;
    +    induction xs as [| y ys IH] ⇒ x. {
    +      rewrite remove_dups_from_sortedA_alt.
    +      âˆƒ x, nil.
    +      split; first reflexivity.
    +      rewrite eqb_alt compare_refl //.
    +    } {
    +      rewrite remove_dups_from_sortedA_alt.
    +      case_eq (eqb x y); last first. {
    +        move ⇒ _.
    +        âˆƒ x, (remove_dups_from_sortedA (y :: ys)).
    +        split; first reflexivity.
    +        rewrite eqb_alt compare_refl //.
    +      } {
    +        move ⇒ H_eqb_xy.
    +        move : (IH y) ⇒ {IH} [x'] [xs'] [->] H_eqb_yx'.
    +        âˆƒ x', xs'.
    +        split; first done.
    +        move : H_eqb_xy H_eqb_yx'.
    +        rewrite !eqb_eq_alt.
    +        apply MX.eq_trans.
    +      }
    +    }
    +  Qed.
    +
    @@ -173,14 +237,102 @@

    Library MSetsExtra.MSetListWithDups

      Lemma remove_dups_from_sortedA_spec :
    -    âˆ€ (l : list t),
    -      Sorted le l →
    -      let l' := remove_dups_from_sortedA l in (
    +    âˆ€ (l : list t),
    +      Sorted le l →
    +      let l' := remove_dups_from_sortedA l in (
        
    -      Sorted lt l' ∧
    -      NoDupA eq l' ∧
    -      (∀ x, InA eq x l ↔ InA eq x l')).
    - +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
    +  Proof.
    +    simpl.
    +    induction l as [| x xs IH]. {
    +      rewrite remove_dups_from_sortedA_alt.
    +      done.
    +    } {
    +      rewrite remove_dups_from_sortedA_alt.
    +      move : IH.
    +      case xs ⇒ {xs}. {
    +        move ⇒ _.
    +        split; last split. {
    +          apply Sorted_cons ⇒ //.
    +        } {
    +          apply NoDupA_singleton.
    +        } {
    +          done.
    +        }
    +      } {
    +        move ⇒ y ys IH H_sorted_x_y_ys.
    +        apply Sorted_inv in H_sorted_x_y_ys as [H_sorted_y_ys H_hd_rel].
    +        apply HdRel_inv in H_hd_rel.
    + +
    +        have : ∃ y' ys',
    +          remove_dups_from_sortedA (y :: ys) = y' :: ys' ∧
    +          eqb y y' = true. {
    +          apply remove_dups_from_sortedA_hd ⇒ //.
    +        }
    +        move ⇒ [y'] [ys'] [H_yys'_intro] /eqb_eq_alt H_eq_y_y'.
    + +
    +        move : (IH H_sorted_y_ys).
    +        rewrite !H_yys'_intro.
    +        move ⇒ {IH} [IH1] [IH2] IH3.
    + +
    +        case_eq (eqb x y). {
    +          rewrite eqb_eq_alt ⇒ H_eq_x_y.
    +          split ⇒ //.
    +          split ⇒ //.
    +          move ⇒ x'.
    +          rewrite InA_cons IH3.
    +          split; last tauto.
    +          move ⇒ [] //.
    +          move ⇒ H_eq_x'_x.
    +          apply InA_cons_hd.
    +          apply eq_trans with (y := x) ⇒ //.
    +          apply eq_trans with (y := y) ⇒ //.
    +        }
    +        move ⇒ H_neqb_x_y.
    + +
    +        have H_sorted : Sorted lt (x :: y' :: ys'). {
    +          apply Sorted_cons ⇒ //.
    +          apply HdRel_cons.
    +          rewrite -compare_lt_iff.
    +          suff : (compare x y = Lt). {
    +            setoid_rewrite compare_compat; eauto;
    +              apply eq_refl.
    +          }
    +          move : H_hd_rel H_neqb_x_y.
    +          rewrite eqb_alt /le /leb.
    +          case (compare x y) ⇒ //.
    +        }
    +        split; last split. {
    +          assumption.
    +        } {
    +          apply NoDupA_cons ⇒ //.
    + +
    +          move ⇒ /InA_alt [x'] [H_eq_xx'] H_in_x'.
    +          have : Forall (lt x) (y' :: ys'). {
    +            apply Sorted_extends ⇒ //.
    +            rewrite /Relations_1.Transitive.
    +            by apply lt_trans.
    +          }
    +          rewrite Forall_forall ⇒ H_forall.
    +          move : (H_forall _ H_in_x') ⇒ {H_forall}.
    +          move : H_eq_xx'.
    +          rewrite -compare_lt_iff -compare_eq_iff.
    +          move ⇒ → //.
    +        } {
    +          move ⇒ x0.
    +          rewrite !(InA_cons eq x0 x) IH3 //.
    +        }
    +      }
    +    }
    +  Qed.
    +
    @@ -188,21 +340,57 @@

    Library MSetsExtra.MSetListWithDups

    Next, we combine it with sorting
    -  Module Import XSort := Sort XTotalLeBool.
    +  Module Import XSort := Sort XTotalLeBool.

    -  Definition remove_dups_by_sortingA (l : list t) : list t :=
    -    remove_dups_from_sortedA (XSort.sort l).
    +  Definition remove_dups_by_sortingA (l : list t) : list t :=
    +    remove_dups_from_sortedA (XSort.sort l).

      Lemma remove_dups_by_sortingA_spec :
    -    âˆ€ (l : list t),
    -      let l' := remove_dups_by_sortingA l in (
    +    âˆ€ (l : list t),
    +      let l' := remove_dups_by_sortingA l in (
        
    -      Sorted lt l' ∧
    -      NoDupA eq l' ∧
    -      (∀ x, InA eq x l ↔ InA eq x l')).
    - +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
    +  Proof.
    +    intro l.
    + +
    +    suff : (∀ x : X.t, InA eq x (sort l) ↔ InA eq x l) ∧
    +           Sorted le (sort l). {
    +      
    +      unfold remove_dups_by_sortingA.
    +      move : (remove_dups_from_sortedA_spec (sort l)).
    +      simpl.
    +      move ⇒ H_spec [H_in_sort H_sorted_sort].
    +      move : (H_spec H_sorted_sort).
    +      move ⇒ [H1] [H2] H3.
    +      split ⇒ //.
    +      split ⇒ //.
    +      move ⇒ x.
    +      rewrite -H_in_sort H3 //.
    +    }
    +
    +    split. {
    +      have H_in_sort : ∀ x, List.In x (XSort.sort l) ↔ List.In x l. {
    +        intros x.
    +        have H_perm := (XSort.Permuted_sort l).
    +        split; apply Permutation_in ⇒ //.
    +        by apply Permutation_sym.
    +      }
    +
    +      intros x.
    +      rewrite !InA_alt.
    +      setoid_rewrite H_in_sort ⇒ //.
    +    } {
    +
    +      move : (LocallySorted_sort l).
    +      rewrite /is_true /le /leb //.
    +    }
    +  Qed.
    +
    End RemoveDupsFromSorted.
    @@ -222,113 +410,113 @@

    Library MSetsExtra.MSetListWithDups


    -Module Ops (X:OrderedType) <: WOps X.
    +Module Ops (X:OrderedType) <: WOps X.

      Module RDFS := RemoveDupsFromSorted X.
    -  Module Import MX := OrderedTypeFacts X.
    +  Module Import MX := OrderedTypeFacts X.

      Definition elt := X.t.
    -  Definition t := list elt.
    +  Definition t := list elt.

    -  Definition empty : t := nil.
    +  Definition empty : t := nil.

    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    -  Fixpoint mem (x : elt) (s : t) : bool :=
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Fixpoint mem (x : elt) (s : t) : bool :=
        match s with
    -    | nil ⇒ false
    -    | y :: l ⇒
    +    | nil ⇒ false
    +    | y :: l ⇒
               match X.compare x y with
    -               Eq ⇒ true
    +               Eq ⇒ true
                 | _ ⇒ mem x l
               end
        end.

    -  Definition add x (s : t) := x :: s.
    -  Definition singleton (x : elt) := x :: nil.
    +  Definition add x (s : t) := x :: s.
    +  Definition singleton (x : elt) := x :: nil.

    -  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
    +  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
        match s with
    -       nil ⇒ acc
    -     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
    +       nil ⇒ acc
    +     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
        end.
    -  Definition rev_filter := rev_filter_aux nil.
    +  Definition rev_filter := rev_filter_aux nil.

    -  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.
    +  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.

      Definition remove x s :=
    -    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.
    +    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.

      Definition union (s1 s2 : t) : t :=
    -    List.rev_append s2 s1.
    +    List.rev_append s2 s1.

      Definition inter (s1 s2 : t) : t :=
        rev_filter (fun y ⇒ mem y s2) s1.

    -  Definition elements (x : t) : list elt := x.
    +  Definition elements (x : t) : list elt := x.

    -  Definition elements_dist (x : t) : list elt :=
    -    RDFS.remove_dups_by_sortingA x.
    +  Definition elements_dist (x : t) : list elt :=
    +    RDFS.remove_dups_by_sortingA x.

    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    fold_left (flip f) (elements s) i.
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    fold_left (flip f) (elements s) i.

      Definition diff (s s' : t) : t := fold remove s' s.

    -  Definition subset (s s' : t) : bool :=
    -    List.forallb (fun x ⇒ mem x s') s.
    +  Definition subset (s s' : t) : bool :=
    +    List.forallb (fun x ⇒ mem x s') s.

    -  Definition equal (s s' : t) : bool := andb (subset s s') (subset s' s).
    +  Definition equal (s s' : t) : bool := andb (subset s s') (subset s' s).

    -  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
    +  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
        match s with
    -    | nil ⇒ true
    -    | x :: l ⇒ if f x then for_all f l else false
    +    | nil ⇒ true
    +    | x :: l ⇒ if f x then for_all f l else false
        end.

    -  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
    +  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
        match s with
    -    | nil ⇒ false
    -    | x :: l ⇒ if f x then true else exists_ f l
    +    | nil ⇒ false
    +    | x :: l ⇒ if f x then true else exists_ f l
        end.

    -  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
    +  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
        match s with
    -    | nil ⇒ (a1, a2)
    -    | x :: l ⇒
    -        if f x then partition_aux (x :: a1) a2 f l else
    -                    partition_aux a1 (x :: a2) f l
    +    | nil ⇒ (a1, a2)
    +    | x :: l ⇒
    +        if f x then partition_aux (x :: a1) a2 f l else
    +                    partition_aux a1 (x :: a2) f l
        end.

    -  Definition partition := partition_aux nil nil.
    +  Definition partition := partition_aux nil nil.

    -  Definition cardinal (s : t) : nat := length (elements_dist s).
    +  Definition cardinal (s : t) : nat := length (elements_dist s).

    -  Definition choose (s : t) : option elt :=
    +  Definition choose (s : t) : option elt :=
         match s with
    -      | nil ⇒ None
    -      | x::_ ⇒ Some x
    +      | nil ⇒ None
    +      | x::_ ⇒ Some x
         end.

    @@ -352,7 +540,7 @@

    Library MSetsExtra.MSetListWithDups

    -Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
    +Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
      Include Ops E.
      Import MX.
    @@ -364,26 +552,36 @@

    Library MSetsExtra.MSetListWithDups

    Logical predicates
    -  Definition In x (s : t) := SetoidList.InA E.eq x s.
    +  Definition In x (s : t) := SetoidList.InA E.eq x s.

    -  Instance In_compat : Proper (E.eq==>eq==>iff) In.
    - +  Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +  Proof. repeat red. intros. rewrite H H0. auto. Qed.
    +
    -  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

    -  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    -  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).
    +  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    +  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Lemma eq_equiv : Equivalence eq.
    - +  Definition eq : t → t → Prop := Equal.
    +  Lemma eq_equiv : Equivalence eq.
    +  Proof.
    +    constructor. {
    +      done.
    +    } {
    +      by constructor; rewrite H.
    +    } {
    +      by constructor; rewrite H H0.
    +    }
    +  Qed.
    +

    @@ -395,107 +593,376 @@

    Library MSetsExtra.MSetListWithDups


    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    - -
    -  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
    - -
    -  Lemma subset_spec : ∀ s s', subset s s' = true ↔ s[<=]s'.
    - -
    -  Lemma equal_spec : ∀ s s', equal s s' = true ↔ s[=]s'.
    - -
    -  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    + +
    +  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
    +  Proof.
    +    induction s as [| y s' IH]. {
    +      move ⇒ x.
    +      rewrite /= /In InA_nil.
    +      split ⇒ //.
    +    } {
    +      move ⇒ x.
    +      rewrite /= /In InA_cons.
    +      move : (MX.compare_eq_iff x y).
    +      case (E.compare x y). {
    +        tauto.
    +      } {
    +        rewrite IH; intuition; inversion H.
    +      } {
    +        rewrite IH; intuition; inversion H.
    +      }
    +    }
    Qed.
    + +
    +  Lemma subset_spec : ∀ s s', subset s s' = true ↔ s[<=]s'.
    +  Proof.
    +    intros s s'.
    +    rewrite /subset forallb_forall /Subset /In.
    +    split. {
    +      move ⇒ H z /InA_alt [] x [H_z_eq] H_in.
    +      move : (H _ H_in).
    +      rewrite mem_spec.
    +      setoid_replace z with x ⇒ //.
    +    } {
    +      move ⇒ H z H_in.
    +      rewrite mem_spec.
    +      apply H, In_InA ⇒ //.
    +      apply E.eq_equiv.
    +    }
    +  Qed.
    + +
    +  Lemma equal_spec : ∀ s s', equal s s' = true ↔ s[=]s'.
    +  Proof.
    +    intros s s'.
    +    rewrite /Equal /equal Bool.andb_true_iff !subset_spec /Subset.
    +    split. {
    +      move ⇒ [H1 H2] a.
    +      split.
    +        - by apply H1.
    +        - by apply H2.
    +    } {
    +      move ⇒ H.
    +      split; move ⇒ a; rewrite H //.
    +    }
    +  Qed.
    + +
    +  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.
    +  Proof.
    +    intros x y.
    +    change ({Equal x y}+{¬Equal x y}).
    +    destruct (equal x y) eqn:H; [left|right];
    +     rewrite <- equal_spec; congruence.
    +  Qed.

      Lemma empty_spec : Empty empty.
    - -
    -  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
    - -
    -  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
    - -
    -  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
    - -
    -  Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv).
    -  Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv).
    -  Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv).
    +  Proof. rewrite /Empty /empty /In. move ⇒ a /InA_nil //. Qed.
    + +
    +  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
    +  Proof.
    +    rewrite /is_empty /Empty /In.
    +    case; split ⇒ //. {
    +      move ⇒ _ a.
    +      rewrite InA_nil //.
    +    } {
    +      move ⇒ H; contradiction (H a).
    +      apply InA_cons_hd.
    +      apply Equivalence_Reflexive.
    +    }
    +  Qed.
    + +
    +  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Proof.
    +    intros s x y.
    +    rewrite /add /In InA_cons //.
    +  Qed.
    + +
    +  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
    +  Proof.
    +    intros x y.
    +    rewrite /singleton /In InA_cons.
    +    split. {
    +      move ⇒ [] // /InA_nil //.
    +    } {
    +      by left.
    +    }
    +  Qed.
    + +
    +  Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv).
    +  Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv).
    +  Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv).
    + +
    +  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    +    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
    +  Proof.
    +    intros s acc x f H_compat.
    +    move : x acc.
    +    induction s as [| y s' IH]. {
    +      intros x acc.
    +      rewrite /rev_filter_aux /In InA_nil.
    +      tauto.
    +    } {
    +      intros x acc.
    +      rewrite /= IH /In.
    +      case_eq (f y) ⇒ H_fy; rewrite !InA_cons; intuition. {
    +        left.
    +        split; first by left.
    +        setoid_replace x with y ⇒ //.
    +      } {
    +        contradict H1.
    +        setoid_replace x with y ⇒ //.
    +        by rewrite H_fy.
    +      }
    +    }
    +  Qed.
    + +
    +  Lemma filter_spec : ∀ s x f, compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Proof.
    +    intros s x f H_compat.
    +    rewrite /filter /rev_filter rev_filter_aux_spec /In InA_nil.
    +    tauto.
    +  Qed.
    + +
    +  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Proof.
    +    intros s x y.
    +    rewrite /remove /rev_filter.
    +    have H_compat : compatb ((fun y0 : elt ⇒
    +         match E.compare x y0 with
    +         | Eq ⇒ false
    +         | _ ⇒ true
    +         end)). {
    +      repeat red; intros.
    +      setoid_replace x0 with y0 ⇒ //.
    +    }
    +    rewrite rev_filter_aux_spec /In InA_nil.
    +    have → : (E.eq y x ↔ E.eq x y). {
    +      split; move ⇒ ?; by apply Equivalence_Symmetric.
    +    }
    +    rewrite -compare_eq_iff.
    +    case (E.compare x y). {
    +      intuition.
    +    } {
    +      intuition.
    +      inversion H0.
    +    } {
    +      intuition.
    +      inversion H0.
    +    }
    +  Qed.
    + +
    +  Lemma union_spec : ∀ s s' x, In x (union s s') ↔ In x s ∨ In x s'.
    +  Proof.
    +    intros s s' x.
    +    rewrite /union /In rev_append_rev InA_app_iff InA_rev; tauto.
    +  Qed.
    + +
    +  Lemma inter_spec : ∀ s s' x, In x (inter s s') ↔ In x s ∧ In x s'.
    +  Proof.
    +    intros s s' x.
    +    have H_compat : compatb (fun y : elt ⇒ mem y s'). {
    +      repeat red; intros.
    +      suff : ( mem x0 s' = true ↔ mem y s' = true). {
    +        case (mem y s'), (mem x0 s'); intuition.
    +      }
    +      rewrite !mem_spec /In.
    +      setoid_replace x0 with y ⇒ //.
    +    }
    +    rewrite /inter rev_filter_aux_spec mem_spec /In InA_nil.
    +    tauto.
    +  Qed.
    + +
    +  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
    +  Proof. done. Qed.
    + +
    +  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
    +  Proof.
    +    intros s x.
    +    rewrite /elements /In //.
    +  Qed.
    + +
    +  Lemma diff_spec : ∀ s s' x, In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Proof.
    +    intros s s' x.
    +    rewrite /diff fold_spec -(elements_spec1 s').
    +    move : s.
    +    induction (elements s') as [| y ys IH] ⇒ s. {
    +      rewrite InA_nil /=; tauto.
    +    } {
    +      rewrite /= IH InA_cons /flip remove_spec.
    +      tauto.
    +    }
    +  Qed.
    + +
    +  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    +  Proof. rewrite /cardinal //. Qed.
    + +
    +  Lemma for_all_spec : ∀ s f, compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Proof.
    +    intros s f H_compat.
    +    rewrite /For_all.
    +    induction s as [| x xs IH]. {
    +      rewrite /= /In.
    +      split ⇒ //.
    +      move ⇒ _ x /InA_nil //.
    +    } {
    +      rewrite /=.
    +      case_eq (f x) ⇒ H_fx. {
    +        rewrite IH.
    +        split. {
    +          move ⇒ H x' /InA_cons []. {
    +            move ⇒ → //.
    +          } {
    +            apply H.
    +          }
    +        } {
    +          move ⇒ H x' H_in.
    +          apply H.
    +          apply InA_cons.
    +          by right.
    +        }
    +      } {
    +        split ⇒ //.
    +        move ⇒ H.
    +        suff : f x = true. {
    +          rewrite H_fx //.
    +        }
    +        apply H.
    +        apply InA_cons_hd.
    +        done.
    +      }
    +    }
    +  Qed.
    + +
    +  Lemma exists_spec : ∀ s f, compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Proof.
    +    intros s f H_compat.
    +    rewrite /Exists.
    +    induction s as [| x xs IH]. {
    +      rewrite /= /In.
    +      split ⇒ //.
    +      move ⇒ [x] [] /InA_nil //.
    +    } {
    +      rewrite /=.
    +      case_eq (f x) ⇒ H_fx. {
    +        split ⇒ // _.
    +        âˆƒ x.
    +        split ⇒ //.
    +        apply InA_cons_hd.
    +        done.
    +      } {
    +        rewrite IH.
    +        split. {
    +          move ⇒ [x'] [H_in] H_fx'.
    +          âˆƒ x'.
    +          split ⇒ //.
    +          apply InA_cons.
    +          by right.
    +        } {
    +          move ⇒ [x'] [] /InA_cons []. {
    +            move ⇒ →.
    +            rewrite H_fx //.
    +          } {
    +            by ∃ x'.
    +          }
    +        }
    +      }
    +    }
    +  Qed.

    -  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    -    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
    - -
    -  Lemma filter_spec : ∀ s x f, compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    - -
    -  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    - -
    -  Lemma union_spec : ∀ s s' x, In x (union s s') ↔ In x s ∨ In x s'.
    +  Lemma partition_aux_spec : ∀ a1 a2 s f,
    +    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
    +  Proof.
    +    move ⇒ a1 a2 s f.
    +    move : a1 a2.
    +    induction s as [| x xs IH]. {
    +      rewrite /partition_aux /rev_filter_aux //.
    +    } {
    +      intros a1 a2.
    +      rewrite /= IH.
    +      case (f x) ⇒ //.

    -  Lemma inter_spec : ∀ s s' x, In x (inter s s') ↔ In x s ∧ In x s'.
    +    }
    +  Qed.

    -  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    - -
    -  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
    +  Lemma partition_spec1 : ∀ s f, compatb f →
    +    fst (partition f s) [=] filter f s.
    +  Proof.
    +    move ⇒ s f _.
    +    rewrite /partition partition_aux_spec /fst /filter /rev_filter //.
    +  Qed.

    -  Lemma diff_spec : ∀ s s' x, In x (diff s s') ↔ In x s ∧ ¬In x s'.
    - -
    -  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    - -
    -  Lemma for_all_spec : ∀ s f, compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    - -
    -  Lemma exists_spec : ∀ s f, compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    - -
    -  Lemma partition_aux_spec : ∀ a1 a2 s f,
    -    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
    - -
    -  Lemma partition_spec1 : ∀ s f, compatb f →
    -    fst (partition f s) [=] filter f s.
    - -
    -  Lemma partition_spec2 : ∀ s f, compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    - +  Lemma partition_spec2 : ∀ s f, compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    +  Proof.
    +    move ⇒ s f _.
    +    rewrite /partition partition_aux_spec /snd /filter /rev_filter //.
    +  Qed.
    +
    -  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
    - +  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
    +  Proof.
    +   move ⇒ [] // y s' x [->].
    +   rewrite /In.
    +   apply InA_cons_hd.
    +   apply Equivalence_Reflexive.
    +  Qed.
    +
    -  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    - +  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    +  Proof. move ⇒ [] // _ a. rewrite /In InA_nil //. Qed.
    +
      Lemma elements_dist_spec_full :
        âˆ€ s,
    -      Sorted E.lt (elements_dist s) ∧
    -      NoDupA E.eq (elements_dist s) ∧
    -      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).
    +      Sorted E.lt (elements_dist s) ∧
    +      NoDupA E.eq (elements_dist s) ∧
    +      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).
    +  Proof.
    +    move ⇒ s.
    +    rewrite /elements_dist /elements.
    +    move : (RDFS.remove_dups_by_sortingA_spec s).
    +    simpl.
    +    firstorder.
    +  Qed.

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    - +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
    +  Proof. intros; apply elements_dist_spec_full. Qed.
    +
    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    - +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Proof. intros; apply elements_dist_spec_full. Qed.
    +
    End Make.
    diff --git a/html/MSetsExtra.MSetWithDups.html b/html/MSetsExtra.MSetWithDups.html index f4d3ac0..9ba7eed 100644 --- a/html/MSetsExtra.MSetWithDups.html +++ b/html/MSetsExtra.MSetWithDups.html @@ -66,7 +66,7 @@

    Library MSetsExtra.MSetWithDups


    -Require Import Coq.MSets.MSetInterface.
    +Require Import Coq.MSets.MSetInterface.
    Require Import mathcomp.ssreflect.ssreflect.

    @@ -91,68 +91,68 @@

    Library MSetsExtra.MSetWithDups

    -Module Type WSetsOnWithDups (E : DecidableType).
    -  Include WOps E.
    +Module Type WSetsOnWithDups (E : DecidableType).
    +  Include WOps E.

    -  Parameter In : elt → t → Prop.
    -  Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +  Parameter In : elt → t → Prop.
    +  Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.

    -  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

    -  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    -  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).
    +  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    +  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Include IsEq.
    +  Definition eq : t → t → Prop := Equal.
    +  Include IsEq.
    eq is obviously an equivalence, for subtyping only
    -  Include HasEqDec.
    +  Include HasEqDec.

      Section Spec.
      Variable s s': t.
      Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).

    -  Parameter mem_spec : mem x s = true ↔ In x s.
    -  Parameter equal_spec : equal s s' = true ↔ s[=]s'.
    -  Parameter subset_spec : subset s s' = true ↔ s[<=]s'.
    +  Parameter mem_spec : mem x s = true ↔ In x s.
    +  Parameter equal_spec : equal s s' = true ↔ s[=]s'.
    +  Parameter subset_spec : subset s s' = true ↔ s[<=]s'.
      Parameter empty_spec : Empty empty.
    -  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    -  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    -  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    -  Parameter union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    -  Parameter inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    -  Parameter diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    -  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    -  Parameter filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Parameter for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Parameter exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Parameter partition_spec1 : compatb f →
    -    fst (partition f s) [=] filter f s.
    -  Parameter partition_spec2 : compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    -  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    -  Parameter choose_spec1 : choose s = Some x → In x s.
    -  Parameter choose_spec2 : choose s = None → Empty s.
    +  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    +  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    +  Parameter union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +  Parameter inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +  Parameter diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
    +  Parameter filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Parameter for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Parameter exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Parameter partition_spec1 : compatb f →
    +    fst (partition f s) [=] filter f s.
    +  Parameter partition_spec2 : compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    +  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +  Parameter choose_spec1 : choose s = Some x → In x s.
    +  Parameter choose_spec2 : choose s = None → Empty s.

      End Spec.
    @@ -174,7 +174,7 @@

    Library MSetsExtra.MSetWithDups

    the original behavior of elements.
    -Module Type WSetsOnWithDupsExtra (E : DecidableType).
    +Module Type WSetsOnWithDupsExtra (E : DecidableType).
      Include WSetsOnWithDups E.

    @@ -184,14 +184,14 @@

    Library MSetsExtra.MSetWithDups

    An operation for getting an elements list without duplicates
    -  Parameter elements_dist : t → list elt.
    +  Parameter elements_dist : t → list elt.

    -  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                              InA E.eq x (elements s).
    +  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                              InA E.eq x (elements s).

    -  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).

    @@ -200,7 +200,7 @@

    Library MSetsExtra.MSetWithDups

    Cardinality can then be specified with respect to elements_dist.
    -  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    +  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    End WSetsOnWithDupsExtra.

    @@ -219,7 +219,7 @@

    Library MSetsExtra.MSetWithDups


    -Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
    +Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
      WSetsOnWithDupsExtra E.

    @@ -229,12 +229,14 @@

    Library MSetsExtra.MSetWithDups

      Definition elements_dist := W.elements.

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    - +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
    +  Proof. done. Qed.
    +
    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    - +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Proof. apply elements_spec2w. Qed.
    +
    End WSetsOn_TO_WSetsOnWithDupsExtra.
    diff --git a/html/index.html b/html/index.html index 51c254e..eb94472 100644 --- a/html/index.html +++ b/html/index.html @@ -627,8 +627,8 @@

    Global Index

    Make.Subset [definition, in MSetsExtra.MSetListWithDups]
    Make.subset_spec [lemma, in MSetsExtra.MSetListWithDups]
    Make.union_spec [lemma, in MSetsExtra.MSetListWithDups]
    -_ [<=] _ [notation, in MSetsExtra.MSetListWithDups]
    -_ [=] _ [notation, in MSetsExtra.MSetListWithDups]
    +_ [<=] _ [notation, in MSetsExtra.MSetListWithDups]
    +_ [=] _ [notation, in MSetsExtra.MSetListWithDups]
    MSetFoldWithAbort [library]
    MSetIntervals [module, in MSetsExtra.MSetIntervals]
    MSetIntervals [library]
    @@ -1042,7 +1042,7 @@

    Global Index

    RemoveDupsFromSorted.XTotalLeBool.leb [definition, in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool.leb_total [lemma, in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool.t [definition, in MSetsExtra.MSetListWithDups]
    -_ <=? _ [notation, in MSetsExtra.MSetListWithDups]
    +_ <=? _ [notation, in MSetsExtra.MSetListWithDups]
    rev_map_alt_def [lemma, in MSetsExtra.MSetIntervals]
    rev_map_aux_alt_def [lemma, in MSetsExtra.MSetIntervals]
    rev_map [definition, in MSetsExtra.MSetIntervals]
    @@ -1092,8 +1092,8 @@

    Global Index

    WSetsOnWithDups.Subset [definition, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.subset_spec [axiom, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.union_spec [axiom, in MSetsExtra.MSetWithDups]
    -_ [<=] _ [notation, in MSetsExtra.MSetWithDups]
    -_ [=] _ [notation, in MSetsExtra.MSetWithDups]
    +_ [<=] _ [notation, in MSetsExtra.MSetWithDups]
    +_ [=] _ [notation, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec2w [lemma, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec1 [lemma, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist [definition, in MSetsExtra.MSetWithDups]
    @@ -1110,13 +1110,13 @@

    Global Index




    Notation Index

    M

    -_ [<=] _ [in MSetsExtra.MSetListWithDups]
    -_ [=] _ [in MSetsExtra.MSetListWithDups]
    +_ [<=] _ [in MSetsExtra.MSetListWithDups]
    +_ [=] _ [in MSetsExtra.MSetListWithDups]


    R

    -_ <=? _ [in MSetsExtra.MSetListWithDups]
    +_ <=? _ [in MSetsExtra.MSetListWithDups]


    W

    -_ [<=] _ [in MSetsExtra.MSetWithDups]
    -_ [=] _ [in MSetsExtra.MSetWithDups]
    +_ [<=] _ [in MSetsExtra.MSetWithDups]
    +_ [=] _ [in MSetsExtra.MSetWithDups]



    Module Index

    E

    From 27b0ba5dd086b83cd176a801086c599a48d536ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20T=C3=BCrk?= Date: Fri, 30 Jun 2023 13:46:51 +0200 Subject: [PATCH 7/7] adapt to Coq 8.16.1 --- MSetFoldWithAbort.v | 8 +- MSetIntervals.v | 139 +- MSetListWithDups.v | 17 +- MSetWithDups.v | 2 +- Makefile | 441 ++- all.pdf | Bin 1106488 -> 1241338 bytes html/MSetsExtra.MSetFoldWithAbort.html | 986 +++--- html/MSetsExtra.MSetIntervals.html | 3900 ++++++++++++------------ html/MSetsExtra.MSetListWithDups.html | 528 ++-- html/MSetsExtra.MSetWithDups.html | 130 +- html/coqdoc.css | 9 + html/index.html | 3353 +++++++++++++++++++- html/toc.html | 8 +- 13 files changed, 6397 insertions(+), 3124 deletions(-) diff --git a/MSetFoldWithAbort.v b/MSetFoldWithAbort.v index f9c212c..145290f 100644 --- a/MSetFoldWithAbort.v +++ b/MSetFoldWithAbort.v @@ -861,7 +861,7 @@ End SetsWithFoldA. (** *** GenTree implementation Finally, provide such a fold with abort operation for generic trees. *) Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp) - (Import Raw:Ops E I) + (Import Raw: MSetGenTree.Ops E I) (M : MSetGenTree.Props E I Raw). Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t -> B) f_lt (f: E.t -> B -> A -> A) f_gt t (base: A) : A := @@ -926,7 +926,7 @@ Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp) M.bst l /\ M.bst r /\ M.lt_tree e l /\ M.gt_tree e r. { inversion H_bst. done. } - + have H_sub_l : (forall e0 : E.t, M.In e0 l -> M.In e0 s /\ E.lt e0 e). { intros e0 H_in_l. split; last by apply H_lt_tree_l. @@ -934,7 +934,7 @@ Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp) rewrite /M.In M.In_node_iff. tauto. } - move : (IHl H_bst_l) => {IHl} IHl {H_bst_l} {H_lt_tree_l}. + move : (IHl H_bst_l) => {} IHl {H_bst_l} {H_lt_tree_l}. have H_sub_r : (forall e0 : E.t, M.In e0 r -> M.In e0 s /\ E.lt e e0). { intros e0 H_in_r. split; last by apply H_gt_tree_r. @@ -942,7 +942,7 @@ Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp) rewrite /M.In M.In_node_iff. tauto. } - move : (IHr H_bst_r) => {IHr} IHr {H_bst_r} {H_gt_tree_r}. + move : (IHr H_bst_r) => {} IHr {H_bst_r} {H_gt_tree_r}. have H_in_e : M.In e s. { eapply H_sub. rewrite /M.In M.In_node_iff. diff --git a/MSetIntervals.v b/MSetIntervals.v index 2828068..4a28c26 100644 --- a/MSetIntervals.v +++ b/MSetIntervals.v @@ -46,6 +46,7 @@ Require Import mathcomp.ssreflect.ssreflect. Require Import NArith. Require Import ZArith. Require Import NOrder. +Require Import Lia. Require Import DecidableTypeEx. Module Import NOP := NOrderProp N. Open Scope Z_scope. @@ -715,8 +716,6 @@ Module Raw (Enc : ElementEncode). Section ForNotations. Class Ok (s:t) : Prop := ok : IsOk s. - Hint Resolve @ok. - Hint Unfold Ok. Instance IsOk_Ok s `(Hs : IsOk s) : Ok s := { ok := Hs }. Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)). @@ -792,14 +791,14 @@ Module Raw (Enc : ElementEncode). induction c as [| c' IH] using N.peano_ind. { intros y x. rewrite elementsZ_single_base Z.add_0_r /=. - omega. + lia. } { intros y x. rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r. split. { move => [ | []] //. { move => [H_x_le H_y_le]. - omega. + lia. } { move => <-. split. @@ -808,7 +807,7 @@ Module Raw (Enc : ElementEncode). } } { move => [H_x_le] H_y_lt. - omega. + lia. } } Qed. @@ -819,7 +818,7 @@ Module Raw (Enc : ElementEncode). Proof. intros y x. rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r. - omega. + lia. Qed. Lemma length_elementsZ_single : forall cx x, @@ -1490,11 +1489,18 @@ Module Raw (Enc : ElementEncode). (forall x, InZ x s -> y < x)). Proof. intros s y H. + rewrite interval_list_elements_greater_alt_def //. - firstorder. - apply Z.nle_gt. - move => H_lt. - eapply H0; eauto. + split. { + move => H_notInZ x H_inZ. + apply Z.nle_gt. + move => H_lt. + move : (H_notInZ x H_lt H_inZ) => //. + } { + move => H_lt x H_le H_inZ. + move : (H_lt x H_inZ). + lia. + } Qed. Lemma interval_list_elements_greater_intro : forall s y, @@ -1838,7 +1844,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, intros x c1 c2. rewrite /merge_interval_size. replace (x + Z.of_N c1 + Z.of_N c2 - x) with - (Z.of_N c1 + Z.of_N c2) by omega. + (Z.of_N c1 + Z.of_N c2) by lia. rewrite -N2Z.inj_add N2Z.id. apply N.max_r, N.le_add_r. Qed. @@ -1853,7 +1859,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, by apply Zle_minus_le_0. } rewrite -Z.add_max_distr_l. - replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by omega. + replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by lia. done. Qed. @@ -2003,7 +2009,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, firstorder. } { move => /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c'. - move : (IH H_inv_c') => {IH} IH. + move : (IH H_inv_c') => {} IH. rewrite addZ_alt_def. have H_succ : forall z, z + Z.of_N 1 = Z.succ z by done. move : (interval_1_compare_elim x z c). @@ -2051,7 +2057,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } { move => /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c'. - move : (IH H_inv_c') => {IH} IH. + move : (IH H_inv_c') => {} IH. rewrite addZ_alt_def. have H_succ : forall z, z + Z.of_N 1 = Z.succ z by done. move : (interval_1_compare_elim x z c). @@ -2128,7 +2134,8 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, have Hs' := (add_ok s x Hs). rewrite !In_InZ. rewrite /add addZ_InZ. { - rewrite -Enc.encode_eq; firstorder. + rewrite -Enc.encode_eq /Z.eq. + firstorder. } { apply Hs. } @@ -2337,13 +2344,13 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, rewrite !interval_list_invariant_cons. move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. - move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + move : (IH2 H_inv_s1 H_inv_l2) => {} IH2. have : forall s2 : t, interval_list_invariant s2 = true -> forall y : Z, InZ y (union l1 s2) <-> InZ y l1 \/ InZ y s2. { intros. by apply IH1. } - move => {IH1} IH1 y. + move => {} IH1 y. rewrite union_alt_def. move : (interval_compare_elim y1 c1 y2 c2). case (interval_compare (y1, c1) (y2, c2)). { @@ -2440,7 +2447,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } rewrite !In_elementsZ_single. move => [H_y1_le H_y_lt]. - split; omega. + split; lia. } { move => [H_y1_le] [H_y2_c2_le] _. rewrite IH2. @@ -2451,7 +2458,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } rewrite !In_elementsZ_single. move => [H_y2_le H_y_lt]. - split; omega. + split; lia. } { rewrite !InZ_cons IH2 !InZ_cons. tauto. @@ -2508,13 +2515,13 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, rewrite !interval_list_invariant_cons. move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. - move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + move : (IH2 H_inv_s1 H_inv_l2) => {} IH2. have : forall s2 : t, interval_list_invariant s2 = true -> interval_list_invariant (union l1 s2) = true. { intros. by apply IH1. } - move => {IH1} IH1. + move => {} IH1. rewrite union_alt_def. move : (interval_compare_elim y1 c1 y2 c2). @@ -2792,8 +2799,8 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } } } - move => {IH} IH. - + move => {} IH. + clear H_inv_acc H_in_acc_lt acc. move : (interval_compare_elim y1 c1 y2 c2) H_inter_aux_eq. unfold inter_aux. @@ -2806,7 +2813,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => x. rewrite InZ_nil. split => //. - omega. + lia. } { apply Z.le_trans with (m := y2). { by apply Z.lt_le_incl. @@ -2822,7 +2829,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => x. rewrite InZ_nil. split => //. - omega. + lia. } { rewrite H_eq_y2. apply Z_le_add_r. @@ -2834,9 +2841,9 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, by apply Z_to_N_minus_neq_0. } { move => x. - rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last omega. - replace (y1 + (y2 - y1)) with y2 by omega. - split; omega. + rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last lia. + replace (y1 + (y2 - y1)) with y2 by lia. + split; lia. } { by apply Z.lt_le_incl. } @@ -2850,15 +2857,15 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => y. have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) = y2 + Z.of_N c2. { - rewrite Z2N.id; omega. + rewrite Z2N.id; lia. } rewrite !InZ_cons !In_elementsZ_single InZ_nil H_yc2_intro. split. { move => [] //. move => [H_y1_le] H_y_lt. - split; last by omega. - left. omega. + split; last by lia. + left. lia. } { move => [H_in_s] [H_y2_le] H_y_lt. left. @@ -2921,7 +2928,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => [] //. move => [H_y1_le] H_y_lt. split; first done. - split; omega. + split; lia. } { move => [?] _. by left. @@ -2941,8 +2948,8 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, split. { move => [] //. move => [H_y2_le] H_y_lt. - split; last by omega. - left. omega. + split; last by lia. + left. lia. } { move => [H_in_s] [H_y2_le] H_y_lt. by left. @@ -2966,14 +2973,14 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => [] []. { move => [H_y1_le_y] H_y_lt_yc1. move => [H_y2_le_y] H_y_lt_yc2. - omega. + lia. } { move => /H_gr_s1'_alt H_lt_y [_] H_y_lt. suff : (y1 + Z.of_N c1 < y1). { apply Z.nlt_ge. apply Z_le_add_r. } - omega. + lia. } } { tauto. @@ -2994,14 +3001,14 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => [] []. { move => [H_y1_le_y] H_y_lt_yc1. move => [H_y2_le_y] H_y_lt_yc2. - omega. + lia. } { move => /H_gr_s1'_alt H_lt_y [_] H_y_lt. suff : (y1 + Z.of_N c1 < y1). { apply Z.nlt_ge. apply Z_le_add_r. } - omega. + lia. } } { tauto. @@ -3348,11 +3355,11 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, split; last by assumption. move : H_in => [] H_in; last by right. left. - omega. + lia. } } } - move => {IH} IH. + move => {} IH. clear H_inv_acc H_in_s1 H_in_acc acc. move : (interval_compare_elim y1 c1 y2 c2) H_diff_aux_eq. @@ -3396,8 +3403,8 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, by apply Z_to_N_minus_neq_0. } { move => x. - rewrite InZ_cons In_elementsZ_single Z2N.id; last omega. - replace (y1 + (y2 - y1)) with y2 by omega. + rewrite InZ_cons In_elementsZ_single Z2N.id; last lia. + replace (y1 + (y2 - y1)) with y2 by lia. split; last tauto. move => [] //. move => [H_y1_le] H_x_lt. @@ -3412,7 +3419,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, clear IH P1 P2 P3 H_comp. subst. have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. { - rewrite Z2N.id; omega. + rewrite Z2N.id; lia. } have H_nin_yc2 : forall y, InZ y s1' -> ~ y2 <= y < y2 + Z.of_N c2. { @@ -3429,7 +3436,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => []. { move => [H_le_y] H_y_lt. split. { - left; omega. + left; lia. } { move => [_]. by apply Z.nlt_ge. @@ -3440,7 +3447,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } { move => [] []; last by right; right. move => [H_y_ge] H_y_lt_yc1 H_nin_yc2'. - right; left. omega. + right; left. lia. } } { rewrite interval_list_invariant_cons H_yc1_intro. @@ -3477,7 +3484,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } { move => x. split; first done. - omega. + lia. } { assumption. } @@ -3487,10 +3494,10 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, clear IH P1 P2 P3 H_comp. subst. have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. { - rewrite Z2N.id; omega. + rewrite Z2N.id; lia. } have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. { - rewrite Z2N.id; omega. + rewrite Z2N.id; lia. } split; last split. { move => y. @@ -3589,10 +3596,10 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, split; first assumption. rewrite In_elementsZ_single. move => [] H_y2_le H_y_lt. - case H_y_in; first by omega. + case H_y_in; first by lia. move => /H_gr_s1'_alt H_lt_y. suff : y2 + Z.of_N c2 < y. { - move => ?. omega. + move => ?. lia. } apply Z.lt_trans with (m := y1 + Z.of_N c1) => //. apply Z.lt_le_trans with (m := y1) => //. @@ -3617,10 +3624,10 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, split; first assumption. rewrite In_elementsZ_single. move => [] H_y2_le H_y_lt. - case H_y_in; first by omega. + case H_y_in; first by lia. move => /H_gr_s1'_alt H_lt_y. suff : y2 + Z.of_N c2 < y. { - move => ?. omega. + move => ?. lia. } apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) => //. by apply Z_lt_add_r. @@ -3885,7 +3892,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, } move : (H_y2_nlt) (H_y2_lt) => /Z.ltb_nlt -> /Z.ltb_lt ->. - have H_y1_eq : (y1 = y2) by omega. + have H_y1_eq : (y1 = y2) by lia. have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). { apply Z.le_antisymm. { move : H_yc1_le. @@ -4130,7 +4137,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => [_] [H_c1_neq_0] _ _. split => //. move => H; move : (H y1). - rewrite InZ_nil => {H} H. + rewrite InZ_nil => {} H. contradict H. rewrite InZ_cons; left. by apply In_elementsZ_single_hd. @@ -4140,14 +4147,14 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, rewrite !interval_list_invariant_cons. move => [H_gr_l1] [H_c1_neq_0] H_inv_l1. move => [H_gr_l2] [H_c2_neq_0] H_inv_l2. - move : (IH2 H_inv_s1 H_inv_l2) => {IH2} IH2. + move : (IH2 H_inv_s1 H_inv_l2) => {} IH2. have : forall s2 : t, interval_list_invariant s2 = true -> (subset l1 s2 = true <-> (forall y : Z, InZ y l1 -> InZ y s2)). { intros. by apply IH1. } - move => {IH1} IH1. + move => {} IH1. have H_yc2_nin : ~ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). { rewrite !InZ_cons !In_elementsZ_single. @@ -4209,7 +4216,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, rewrite !In_elementsZ_single. move => [H_y1_le] H_y_lt. left. - omega. + lia. } { move => H_pre H_y_in_l1. apply H_pre. @@ -4246,7 +4253,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => [H_y2_le H_y_lt]. move : H_y_in => []. { move => [H_y1_le] H_y_lt'. - omega. + lia. } { eapply Nin_elements_greater; eauto. apply Z.le_trans with (m := y1); last first. { @@ -4598,10 +4605,10 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, move => /Z.lt_asymm //. } { move => [] H_y1_eq. - exfalso. omega. + exfalso. lia. } { move => [] H_y1_eq. - exfalso. omega. + exfalso. lia. } } Qed. @@ -4946,7 +4953,7 @@ Lemma elementsZ_insert_intervalZ_guarded : forall x c s, case s' as [| [y' c'] s'']. { move => [<-]. rewrite InZ_cons InZ_nil In_elementsZ_single. - omega. + lia. } { move => H_max_eq. rewrite InZ_cons. @@ -5665,7 +5672,7 @@ Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}. Definition t := t_. Arguments Mkt this {is_ok}. - Hint Resolve is_ok : typeclass_instances. + #[local] Hint Resolve is_ok : typeclass_instances. Definition In (x : elt)(s : t) := Raw.In x s.(this). Definition Equal (s s' : t) := forall a : elt, In a s <-> In a s'. @@ -5698,7 +5705,7 @@ Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. Definition partition (f : elt -> bool)(s : t) : t * t := let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)). - Instance In_compat : Proper (E.eq==>eq==>iff) In. + #[local] Instance In_compat : Proper (E.eq==>eq==>iff) In. Proof. repeat red. move => x y H_eq_xy x' y' ->. @@ -5709,7 +5716,7 @@ Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. Definition eq : t -> t -> Prop := Equal. - Instance eq_equiv : Equivalence eq. + #[local] Instance eq_equiv : Equivalence eq. Proof. firstorder. Qed. Definition eq_dec : forall (s s':t), { eq s s' }+{ ~eq s s' }. @@ -5722,7 +5729,7 @@ Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. Definition lt : t -> t -> Prop := Raw.lt. - Instance lt_strorder : StrictOrder lt. + #[local] Instance lt_strorder : StrictOrder lt. Proof. unfold lt. constructor. { @@ -5738,7 +5745,7 @@ Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E. } Qed. - Instance lt_compat : Proper (eq==>eq==>iff) lt. + #[local] Instance lt_compat : Proper (eq==>eq==>iff) lt. Proof. repeat red. move => [x1 H_x1_ok] [y1 H_y1_ok] H_eq. diff --git a/MSetListWithDups.v b/MSetListWithDups.v index c5e888b..fefef58 100644 --- a/MSetListWithDups.v +++ b/MSetListWithDups.v @@ -325,8 +325,7 @@ Module RemoveDupsFromSorted (Import X:OrderedType). rewrite !InA_alt. setoid_rewrite H_in_sort => //. } { - - move : (LocallySorted_sort l). + move : (Sorted_sort l). rewrite /is_true /le /leb //. } Qed. @@ -447,7 +446,7 @@ Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E. (** Logical predicates *) Definition In x (s : t) := SetoidList.InA E.eq x s. - Instance In_compat : Proper (E.eq==>eq==>iff) In. + #[local] Instance In_compat : Proper (E.eq==>eq==>iff) In. Proof. repeat red. intros. rewrite H H0. auto. Qed. Definition Equal s s' := forall a : elt, In a s <-> In a s'. @@ -489,9 +488,9 @@ Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E. case (E.compare x y). { tauto. } { - rewrite IH; intuition; inversion H. + rewrite IH; intuition; inversion H1. } { - rewrite IH; intuition; inversion H. + rewrite IH; intuition; inversion H1. } } Qed. @@ -570,10 +569,6 @@ Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E. } Qed. - Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv). - Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv). - Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv). - Lemma rev_filter_aux_spec : forall s acc x f, compatb f -> (In x (rev_filter_aux acc f s) <-> (In x s /\ f x = true) \/ (In x acc)). Proof. @@ -717,7 +712,7 @@ Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E. } apply H. apply InA_cons_hd. - done. + apply (@Equivalence_Reflexive _ _ E.eq_equiv). } } Qed. @@ -738,7 +733,7 @@ Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E. exists x. split => //. apply InA_cons_hd. - done. + apply (@Equivalence_Reflexive _ _ E.eq_equiv). } { rewrite IH. split. { diff --git a/MSetWithDups.v b/MSetWithDups.v index 2c4a0c6..87d7d4b 100644 --- a/MSetWithDups.v +++ b/MSetWithDups.v @@ -67,7 +67,7 @@ Module Type WSetsOnWithDups (E : DecidableType). Include WOps E. Parameter In : elt -> t -> Prop. - Declare Instance In_compat : Proper (E.eq==>eq==>iff) In. + #[local] Declare Instance In_compat : Proper (E.eq==>eq==>iff) In. Definition Equal s s' := forall a : elt, In a s <-> In a s'. Definition Subset s s' := forall a : elt, In a s -> In a s'. diff --git a/Makefile b/Makefile index 5e064e4..b10449a 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,13 @@ -############################################################################### -## v # The Coq Proof Assistant ## -## /dev/null 2>/dev/null; echo $$?)) +ifeq (0,$(shell command time -f "" true >/dev/null 2>/dev/null; echo $$?)) STDTIME?=command time -f $(TIMEFMT) else -ifeq (0,$(shell gtime -f $(TIMEFMT) true >/dev/null 2>/dev/null; echo $$?)) +ifeq (0,$(shell gtime -f "" true >/dev/null 2>/dev/null; echo $$?)) STDTIME?=gtime -f $(TIMEFMT) else STDTIME?=command time @@ -81,31 +91,37 @@ else STDTIME?=command time -f $(TIMEFMT) endif +COQBIN?= +ifneq (,$(COQBIN)) +# add an ending / +COQBIN:=$(COQBIN)/ +endif + # Coq binaries COQC ?= "$(COQBIN)coqc" COQTOP ?= "$(COQBIN)coqtop" COQCHK ?= "$(COQBIN)coqchk" +COQNATIVE ?= "$(COQBIN)coqnative" COQDEP ?= "$(COQBIN)coqdep" COQDOC ?= "$(COQBIN)coqdoc" +COQPP ?= "$(COQBIN)coqpp" COQMKFILE ?= "$(COQBIN)coq_makefile" +OCAMLLIBDEP ?= "$(COQBIN)ocamllibdep" # Timing scripts -COQMAKE_ONE_TIME_FILE ?= "$(COQLIB)/tools/make-one-time-file.py" -COQMAKE_BOTH_TIME_FILES ?= "$(COQLIB)/tools/make-both-time-files.py" -COQMAKE_BOTH_SINGLE_TIMING_FILES ?= "$(COQLIB)/tools/make-both-single-timing-files.py" +COQMAKE_ONE_TIME_FILE ?= "$(COQCORELIB)/tools/make-one-time-file.py" +COQMAKE_BOTH_TIME_FILES ?= "$(COQCORELIB)/tools/make-both-time-files.py" +COQMAKE_BOTH_SINGLE_TIMING_FILES ?= "$(COQCORELIB)/tools/make-both-single-timing-files.py" BEFORE ?= AFTER ?= -# FIXME this should be generated by Coq (modules already linked by Coq) -CAMLDONTLINK=camlp5.gramlib,unix,str - # OCaml binaries CAMLC ?= "$(OCAMLFIND)" ocamlc -c CAMLOPTC ?= "$(OCAMLFIND)" opt -c -CAMLLINK ?= "$(OCAMLFIND)" ocamlc -linkpkg -dontlink $(CAMLDONTLINK) -CAMLOPTLINK ?= "$(OCAMLFIND)" opt -linkpkg -dontlink $(CAMLDONTLINK) +CAMLLINK ?= "$(OCAMLFIND)" ocamlc -linkall +CAMLOPTLINK ?= "$(OCAMLFIND)" opt -linkall CAMLDOC ?= "$(OCAMLFIND)" ocamldoc -CAMLDEP ?= "$(OCAMLFIND)" ocamldep -slash -ml-synonym .ml4 -ml-synonym .mlpack +CAMLDEP ?= "$(OCAMLFIND)" ocamldep -slash -ml-synonym .mlpack # DESTDIR is prepended to all installation paths DESTDIR ?= @@ -116,11 +132,20 @@ COQDEBUG ?= # Extra packages to be linked in (as in findlib -package) CAMLPKGS ?= +FINDLIBPKGS = -package coq-core.plugins.ltac $(CAMLPKGS) # Option for making timing files TIMING?= # Option for changing sorting of timing output file TIMING_SORT_BY ?= auto +# Option for changing the fuzz parameter on the output file +TIMING_FUZZ ?= 0 +# Option for changing whether to use real or user time for timing tables +TIMING_REAL?= +# Option for including the memory column(s) +TIMING_INCLUDE_MEM?= +# Option for sorting by the memory column +TIMING_SORT_BY_MEM?= # Output file names for timed builds TIME_OF_BUILD_FILE ?= time-of-build.log TIME_OF_BUILD_BEFORE_FILE ?= time-of-build-before.log @@ -129,6 +154,45 @@ TIME_OF_PRETTY_BUILD_FILE ?= time-of-build-pretty.log TIME_OF_PRETTY_BOTH_BUILD_FILE ?= time-of-build-both.log TIME_OF_PRETTY_BUILD_EXTRA_FILES ?= - # also output to the command line +TGTS ?= + +# Retro compatibility (DESTDIR is standard on Unix, DSTROOT is not) +ifdef DSTROOT +DESTDIR := $(DSTROOT) +endif + +# Substitution of the path by appending $(DESTDIR) if needed. +# The variable $(COQMF_WINDRIVE) can be needed for Cygwin environments. +windrive_path = $(if $(COQMF_WINDRIVE),$(subst $(COQMF_WINDRIVE),/,$(1)),$(1)) +destination_path = $(if $(DESTDIR),$(DESTDIR)/$(call windrive_path,$(1)),$(1)) + +# Installation paths of libraries and documentation. +COQLIBINSTALL ?= $(call destination_path,$(COQLIB)/user-contrib) +COQDOCINSTALL ?= $(call destination_path,$(DOCDIR)/coq/user-contrib) +COQPLUGININSTALL ?= $(call destination_path,$(COQCORELIB)/..) +COQTOPINSTALL ?= $(call destination_path,$(COQLIB)/toploop) # FIXME: Unused variable? + +# findlib files installation +FINDLIBPREINST= mkdir -p "$(COQPLUGININSTALL)/" +FINDLIBDESTDIR= -destdir "$(COQPLUGININSTALL)/" + +# we need to move out of sight $(METAFILE) otherwise findlib thinks the +# package is already installed +findlib_install = \ + $(HIDE)if [ "$(METAFILE)" ]; then \ + $(FINDLIBPREINST) && \ + mv "$(METAFILE)" "$(METAFILE).skip" ; \ + "$(OCAMLFIND)" install $(2) $(FINDLIBDESTDIR) $(FINDLIBPACKAGE) $(1); \ + rc=$$?; \ + mv "$(METAFILE).skip" "$(METAFILE)"; \ + exit $$rc; \ + fi +findlib_remove = \ + $(HIDE)if [ ! -z "$(METAFILE)" ]; then\ + "$(OCAMLFIND)" remove $(FINDLIBDESTDIR) $(FINDLIBPACKAGE); \ + fi + + ########## End of parameters ################################################## # What follows may be relevant to you only if you need to # extend this Makefile. If so, look for 'Extension point' here and @@ -171,13 +235,41 @@ DYNOBJ:=.cmxs DYNLIB:=.cmxs endif -# these variables are meant to be overriden if you want to add *extra* flags +# these variables are meant to be overridden if you want to add *extra* flags COQEXTRAFLAGS?= COQCHKEXTRAFLAGS?= COQDOCEXTRAFLAGS?= +# Find the last argument of the form "-native-compiler FLAG" +COQUSERNATIVEFLAG:=$(strip \ +$(subst -native-compiler-,,\ +$(lastword \ +$(filter -native-compiler-%,\ +$(subst -native-compiler ,-native-compiler-,\ +$(strip $(COQEXTRAFLAGS))))))) + +COQFILTEREDEXTRAFLAGS:=$(strip \ +$(filter-out -native-compiler-%,\ +$(subst -native-compiler ,-native-compiler-,\ +$(strip $(COQEXTRAFLAGS))))) + +COQACTUALNATIVEFLAG:=$(lastword $(COQMF_COQ_NATIVE_COMPILER_DEFAULT) $(COQMF_COQPROJECTNATIVEFLAG) $(COQUSERNATIVEFLAG)) + +ifeq '$(COQACTUALNATIVEFLAG)' 'yes' + COQNATIVEFLAG="-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" + COQDONATIVE="yes" +else +ifeq '$(COQACTUALNATIVEFLAG)' 'ondemand' + COQNATIVEFLAG="-w" "-deprecated-native-compiler-option" "-native-compiler" "ondemand" + COQDONATIVE="no" +else + COQNATIVEFLAG="-w" "-deprecated-native-compiler-option" "-native-compiler" "no" + COQDONATIVE="no" +endif +endif + # these flags do NOT contain the libraries, to make them easier to overwrite -COQFLAGS?=-q $(OPT) $(OTHERFLAGS) $(COQEXTRAFLAGS) +COQFLAGS?=-q $(OTHERFLAGS) $(COQFILTEREDEXTRAFLAGS) $(COQNATIVEFLAG) COQCHKFLAGS?=-silent -o $(COQCHKEXTRAFLAGS) COQDOCFLAGS?=-interpolate -utf8 $(COQDOCEXTRAFLAGS) @@ -186,25 +278,19 @@ COQDOCLIBS?=$(COQLIBS_NOML) # The version of Coq being run and the version of coq_makefile that # generated this makefile COQ_VERSION:=$(shell $(COQC) --print-version | cut -d " " -f 1) -COQMAKEFILE_VERSION:=8.9.0 - -COQSRCLIBS?= $(foreach d,$(COQ_SRC_SUBDIRS), -I "$(COQLIB)$(d)") +COQMAKEFILE_VERSION:=8.16.1 -CAMLFLAGS+=$(OCAMLLIBS) $(COQSRCLIBS) -I $(CAMLP5LIB) +# COQ_SRC_SUBDIRS is for user-overriding, usually to add +# `user-contrib/Foo` to the includes, we keep COQCORE_SRC_SUBDIRS for +# Coq's own core libraries, which should be replaced by ocamlfind +# options at some point. +COQ_SRC_SUBDIRS?= +COQSRCLIBS?= $(foreach d,$(COQ_SRC_SUBDIRS), -I "$(COQLIB)/$(d)") +CAMLFLAGS+=$(OCAMLLIBS) $(COQSRCLIBS) # ocamldoc fails with unknown argument otherwise -CAMLDOCFLAGS=$(filter-out -annot, $(filter-out -bin-annot, $(CAMLFLAGS))) - -# FIXME This should be generated by Coq -GRAMMARS:=grammar.cma -CAMLP5EXTEND=pa_extend.cmo q_MLast.cmo pa_macro.cmo - -CAMLLIB:=$(shell "$(OCAMLFIND)" printconf stdlib 2> /dev/null) -ifeq (,$(CAMLLIB)) -PP=$(error "Cannot find the 'ocamlfind' binary used to build Coq ($(OCAMLFIND)). Pre-compiled binary packages of Coq do not support compiling plugins this way. Please download the sources of Coq and run the Windows build script.") -else -PP:=-pp '$(CAMLP5O) -I $(CAMLLIB) -I "$(COQLIB)/grammar" $(CAMLP5EXTEND) $(GRAMMARS) $(CAMLP5OPTIONS) -impl' -endif +CAMLDOCFLAGS:=$(filter-out -annot, $(filter-out -bin-annot, $(CAMLFLAGS))) +CAMLFLAGS+=$(OCAMLWARN) ifneq (,$(TIMING)) TIMING_ARG=-time @@ -221,26 +307,15 @@ else TIMING_ARG= endif -# Retro compatibility (DESTDIR is standard on Unix, DSTROOT is not) -ifdef DSTROOT -DESTDIR := $(DSTROOT) -endif - -concat_path = $(if $(1),$(1)/$(if $(COQMF_WINDRIVE),$(subst $(COQMF_WINDRIVE),/,$(2)),$(2)),$(2)) - -COQLIBINSTALL = $(call concat_path,$(DESTDIR),$(COQLIB)user-contrib) -COQDOCINSTALL = $(call concat_path,$(DESTDIR),$(DOCDIR)user-contrib) -COQTOPINSTALL = $(call concat_path,$(DESTDIR),$(COQLIB)toploop) - # Files ####################################################################### # # We here define a bunch of variables about the files being part of the # Coq project in order to ease the writing of build target and build rules -VDFILE := .coqdeps +VDFILE := .Makefile.d ALLSRCFILES := \ - $(ML4FILES) \ + $(MLGFILES) \ $(MLFILES) \ $(MLPACKFILES) \ $(MLLIBFILES) \ @@ -251,7 +326,13 @@ vo_to_obj = $(addsuffix .o,\ $(filter-out Warning: Error:,\ $(shell $(COQTOP) -q -noinit -batch -quiet -print-mod-uid $(1)))) strip_dotslash = $(patsubst ./%,%,$(1)) + +# without this we get undefined variables in the expansion for the +# targets of the [deprecated,use-mllib-or-mlpack] rule +with_undef = $(if $(filter-out undefined, $(origin $(1))),$($(1))) + VO = vo +VOS = vos VOFILES = $(VFILES:.v=.$(VO)) GLOBFILES = $(VFILES:.v=.glob) @@ -261,7 +342,7 @@ BEAUTYFILES = $(addsuffix .beautified,$(VFILES)) TEXFILES = $(VFILES:.v=.tex) GTEXFILES = $(VFILES:.v=.g.tex) CMOFILES = \ - $(ML4FILES:.ml4=.cmo) \ + $(MLGFILES:.mlg=.cmo) \ $(MLFILES:.ml=.cmo) \ $(MLPACKFILES:.mlpack=.cmo) CMXFILES = $(CMOFILES:.cmo=.cmx) @@ -272,25 +353,25 @@ CMIFILES = \ $(CMOFILES:.cmo=.cmi) \ $(MLIFILES:.mli=.cmi) # the /if/ is because old _CoqProject did not list a .ml(pack|lib) but just -# a .ml4 file +# a .mlg file CMXSFILES = \ $(MLPACKFILES:.mlpack=.cmxs) \ $(CMXAFILES:.cmxa=.cmxs) \ $(if $(MLPACKFILES)$(CMXAFILES),,\ - $(ML4FILES:.ml4=.cmxs) $(MLFILES:.ml=.cmxs)) + $(MLGFILES:.mlg=.cmxs) $(MLFILES:.ml=.cmxs)) # files that are packed into a plugin (no extension) PACKEDFILES = \ $(call strip_dotslash, \ $(foreach lib, \ - $(call strip_dotslash, \ - $(MLPACKFILES:.mlpack=_MLPACK_DEPENDENCIES)),$($(lib)))) + $(call strip_dotslash, \ + $(MLPACKFILES:.mlpack=_MLPACK_DEPENDENCIES)),$(call with_undef,$(lib)))) # files that are archived into a .cma (mllib) LIBEDFILES = \ $(call strip_dotslash, \ $(foreach lib, \ - $(call strip_dotslash, \ - $(MLLIBFILES:.mllib=_MLLIB_DEPENDENCIES)),$($(lib)))) + $(call strip_dotslash, \ + $(MLLIBFILES:.mllib=_MLLIB_DEPENDENCIES)),$(call with_undef,$(lib)))) CMIFILESTOINSTALL = $(filter-out $(addsuffix .cmi,$(PACKEDFILES)),$(CMIFILES)) CMOFILESTOINSTALL = $(filter-out $(addsuffix .cmo,$(PACKEDFILES)),$(CMOFILES)) OBJFILES = $(call vo_to_obj,$(VOFILES)) @@ -298,6 +379,8 @@ ALLNATIVEFILES = \ $(OBJFILES:.o=.cmi) \ $(OBJFILES:.o=.cmx) \ $(OBJFILES:.o=.cmxs) +FINDLIBPACKAGE=$(patsubst .%,%,$(suffix $(METAFILE))) + # trick: wildcard filters out non-existing files, so that `install` doesn't show # warnings and `clean` doesn't pass to rm a list of files that is too long for # the shell. @@ -307,18 +390,17 @@ FILESTOINSTALL = \ $(VFILES) \ $(GLOBFILES) \ $(NATIVEFILES) \ + $(CMXSFILES) # to be removed when we remove legacy loading +FINDLIBFILESTOINSTALL = \ $(CMIFILESTOINSTALL) -BYTEFILESTOINSTALL = \ - $(CMOFILESTOINSTALL) \ - $(CMAFILES) ifeq '$(HASNATDYNLINK)' 'true' DO_NATDYNLINK = yes -FILESTOINSTALL += $(CMXSFILES) $(CMXAFILES) $(CMOFILESTOINSTALL:.cmo=.cmx) +FINDLIBFILESTOINSTALL += $(CMXSFILES) $(CMXAFILES) $(CMOFILESTOINSTALL:.cmo=.cmx) else DO_NATDYNLINK = endif -ALLDFILES = $(addsuffix .d,$(ALLSRCFILES) $(VDFILE)) +ALLDFILES = $(addsuffix .d,$(ALLSRCFILES)) $(VDFILE) # Compilation targets ######################################################### @@ -334,6 +416,31 @@ all.timing.diff: $(HIDE)$(MAKE) --no-print-directory -f "$(SELF)" post-all .PHONY: all.timing.diff +ifeq (0,$(TIMING_REAL)) +TIMING_REAL_ARG := +TIMING_USER_ARG := --user +else +ifeq (1,$(TIMING_REAL)) +TIMING_REAL_ARG := --real +TIMING_USER_ARG := +else +TIMING_REAL_ARG := +TIMING_USER_ARG := +endif +endif + +ifeq (0,$(TIMING_INCLUDE_MEM)) +TIMING_INCLUDE_MEM_ARG := --no-include-mem +else +TIMING_INCLUDE_MEM_ARG := +endif + +ifeq (1,$(TIMING_SORT_BY_MEM)) +TIMING_SORT_BY_MEM_ARG := --sort-by-mem +else +TIMING_SORT_BY_MEM_ARG := +endif + make-pretty-timed-before:: TIME_OF_BUILD_FILE=$(TIME_OF_BUILD_BEFORE_FILE) make-pretty-timed-after:: TIME_OF_BUILD_FILE=$(TIME_OF_BUILD_AFTER_FILE) make-pretty-timed make-pretty-timed-before make-pretty-timed-after:: @@ -341,9 +448,9 @@ make-pretty-timed make-pretty-timed-before make-pretty-timed-after:: $(HIDE)($(MAKE) --no-print-directory -f "$(PARENT)" $(TGTS) TIMED=1 2>&1 && touch pretty-timed-success.ok) | tee -a $(TIME_OF_BUILD_FILE) $(HIDE)rm pretty-timed-success.ok # must not be -f; must fail if the touch failed print-pretty-timed:: - $(HIDE)$(COQMAKE_ONE_TIME_FILE) $(TIME_OF_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) + $(HIDE)$(COQMAKE_ONE_TIME_FILE) $(TIMING_INCLUDE_MEM_ARG) $(TIMING_SORT_BY_MEM_ARG) $(TIMING_REAL_ARG) $(TIME_OF_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) print-pretty-timed-diff:: - $(HIDE)$(COQMAKE_BOTH_TIME_FILES) --sort-by=$(TIMING_SORT_BY) $(TIME_OF_BUILD_AFTER_FILE) $(TIME_OF_BUILD_BEFORE_FILE) $(TIME_OF_PRETTY_BOTH_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) + $(HIDE)$(COQMAKE_BOTH_TIME_FILES) --sort-by=$(TIMING_SORT_BY) $(TIMING_INCLUDE_MEM_ARG) $(TIMING_SORT_BY_MEM_ARG) $(TIMING_REAL_ARG) $(TIME_OF_BUILD_AFTER_FILE) $(TIME_OF_BUILD_BEFORE_FILE) $(TIME_OF_PRETTY_BOTH_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) ifeq (,$(BEFORE)) print-pretty-single-time-diff:: @echo 'Error: Usage: $(MAKE) print-pretty-single-time-diff AFTER=path/to/file.v.after-timing BEFORE=path/to/file.v.before-timing' @@ -355,7 +462,7 @@ print-pretty-single-time-diff:: $(HIDE)false else print-pretty-single-time-diff:: - $(HIDE)$(COQMAKE_BOTH_SINGLE_TIMING_FILES) --sort-by=$(TIMING_SORT_BY) $(AFTER) $(BEFORE) $(TIME_OF_PRETTY_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) + $(HIDE)$(COQMAKE_BOTH_SINGLE_TIMING_FILES) --fuzz=$(TIMING_FUZZ) --sort-by=$(TIMING_SORT_BY) $(TIMING_USER_ARG) $(AFTER) $(BEFORE) $(TIME_OF_PRETTY_BUILD_FILE) $(TIME_OF_PRETTY_BUILD_EXTRA_FILES) endif endif pretty-timed: @@ -389,7 +496,11 @@ optfiles: $(if $(DO_NATDYNLINK),$(CMXSFILES)) .PHONY: optfiles # FIXME, see Ralf's bugreport -quick: $(VOFILES:.vo=.vio) +# quick is deprecated, now renamed vio +vio: $(VOFILES:.vo=.vio) +.PHONY: vio +quick: vio + $(warning "'make quick' is deprecated, use 'make vio' or consider using 'vos' files") .PHONY: quick vio2vo: @@ -397,8 +508,9 @@ vio2vo: -schedule-vio2vo $(J) $(VOFILES:%.vo=%.vio) .PHONY: vio2vo +# quick2vo is undocumented quick2vo: - $(HIDE)make -j $(J) quick + $(HIDE)make -j $(J) vio $(HIDE)VIOFILES=$$(for vofile in $(VOFILES); do \ viofile="$$(echo "$$vofile" | sed "s/\.vo$$/.vio/")"; \ if [ "$$vofile" -ot "$$viofile" -o ! -e "$$vofile" ]; then printf "$$viofile "; fi; \ @@ -414,8 +526,14 @@ checkproofs: -schedule-vio-checking $(J) $(VOFILES:%.vo=%.vio) .PHONY: checkproofs +vos: $(VOFILES:%.vo=%.vos) +.PHONY: vos + +vok: $(VOFILES:%.vo=%.vok) +.PHONY: vok + validate: $(VOFILES) - $(TIMER) $(COQCHK) $(COQCHKFLAGS) $(COQLIBS) $^ + $(TIMER) $(COQCHK) $(COQCHKFLAGS) $(COQLIBS_NOML) $^ .PHONY: validate only: $(TGTS) @@ -433,24 +551,24 @@ mlihtml: $(MLIFILES:.mli=.cmi) $(SHOW)'CAMLDOC -d $@' $(HIDE)mkdir $@ || rm -rf $@/* $(HIDE)$(CAMLDOC) -html \ - -d $@ -m A $(CAMLDEBUG) $(CAMLDOCFLAGS) $(MLIFILES) + -d $@ -m A $(CAMLDEBUG) $(CAMLDOCFLAGS) $(MLIFILES) $(FINDLIBPKGS) all-mli.tex: $(MLIFILES:.mli=.cmi) $(SHOW)'CAMLDOC -latex $@' $(HIDE)$(CAMLDOC) -latex \ - -o $@ -m A $(CAMLDEBUG) $(CAMLDOCFLAGS) $(MLIFILES) + -o $@ -m A $(CAMLDEBUG) $(CAMLDOCFLAGS) $(MLIFILES) $(FINDLIBPKGS) all.ps: $(VFILES) $(SHOW)'COQDOC -ps $(GAL)' $(HIDE)$(COQDOC) \ -toc $(COQDOCFLAGS) -ps $(GAL) $(COQDOCLIBS) \ - -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)` + -o $@ `$(COQDEP) -sort $(VFILES)` all.pdf: $(VFILES) $(SHOW)'COQDOC -pdf $(GAL)' $(HIDE)$(COQDOC) \ -toc $(COQDOCFLAGS) -pdf $(GAL) $(COQDOCLIBS) \ - -o $@ `$(COQDEP) -sort -suffix .v $(VFILES)` + -o $@ `$(COQDEP) -sort $(VFILES)` # FIXME: not quite right, since the output name is different gallinahtml: GAL=-g @@ -474,7 +592,12 @@ beautify: $(BEAUTYFILES) # There rules can be extended in Makefile.local # Extensions can't assume when they run. -install: +# findlib needs the package to not be installed, so we remove it before +# installing it (see the call to findlib_remove) +install: META + $(HIDE)code=0; for f in $(FILESTOINSTALL); do\ + if ! [ -f "$$f" ]; then >&2 echo $$f does not exist; code=1; fi \ + done; exit $$code $(HIDE)for f in $(FILESTOINSTALL); do\ df="`$(COQMKFILE) -destination-of "$$f" $(COQLIBS)`";\ if [ "$$?" != "0" -o -z "$$df" ]; then\ @@ -485,22 +608,20 @@ install: echo INSTALL "$$f" "$(COQLIBINSTALL)/$$df";\ fi;\ done + $(call findlib_remove) + $(call findlib_install, META $(FINDLIBFILESTOINSTALL)) $(HIDE)$(MAKE) install-extra -f "$(SELF)" install-extra:: @# Extension point .PHONY: install install-extra +META: $(METAFILE) + $(HIDE)if [ "$(METAFILE)" ]; then \ + cat "$(METAFILE)" | grep -v 'directory.*=.*' > META; \ + fi + install-byte: - $(HIDE)for f in $(BYTEFILESTOINSTALL); do\ - df="`$(COQMKFILE) -destination-of "$$f" $(COQLIBS)`";\ - if [ "$$?" != "0" -o -z "$$df" ]; then\ - echo SKIP "$$f" since it has no logical path;\ - else\ - install -d "$(COQLIBINSTALL)/$$df" &&\ - install -m 0644 "$$f" "$(COQLIBINSTALL)/$$df" &&\ - echo INSTALL "$$f" "$(COQLIBINSTALL)/$$df";\ - fi;\ - done + $(call findlib_install, $(CMAFILES) $(CMOFILESTOINSTALL), -add) install-doc:: html mlihtml @# Extension point @@ -521,13 +642,19 @@ install-doc:: html mlihtml uninstall:: @# Extension point + $(call findlib_remove) $(HIDE)for f in $(FILESTOINSTALL); do \ df="`$(COQMKFILE) -destination-of "$$f" $(COQLIBS)`" &&\ instf="$(COQLIBINSTALL)/$$df/`basename $$f`" &&\ rm -f "$$instf" &&\ - echo RM "$$instf" &&\ - (rmdir "$(call concat_path,,$(COQLIBINSTALL)/$$df/)" 2>/dev/null || true); \ + echo RM "$$instf" ;\ + done + $(HIDE)for f in $(FILESTOINSTALL); do \ + df="`$(COQMKFILE) -destination-of "$$f" $(COQLIBS)`" &&\ + echo RMDIR "$(COQLIBINSTALL)/$$df/" &&\ + (rmdir "$(COQLIBINSTALL)/$$df/" 2>/dev/null || true); \ done + .PHONY: uninstall uninstall-doc:: @@ -555,17 +682,21 @@ clean:: $(HIDE)rm -f $(CMXSFILES) $(HIDE)rm -f $(CMOFILES:.cmo=.o) $(HIDE)rm -f $(CMXAFILES:.cmxa=.a) + $(HIDE)rm -f $(MLGFILES:.mlg=.ml) $(HIDE)rm -f $(ALLDFILES) $(HIDE)rm -f $(NATIVEFILES) $(HIDE)find . -name .coq-native -type d -empty -delete $(HIDE)rm -f $(VOFILES) $(HIDE)rm -f $(VOFILES:.vo=.vio) + $(HIDE)rm -f $(VOFILES:.vo=.vos) + $(HIDE)rm -f $(VOFILES:.vo=.vok) $(HIDE)rm -f $(BEAUTYFILES) $(VFILES:=.old) $(HIDE)rm -f all.ps all-gal.ps all.pdf all-gal.pdf all.glob all-mli.tex $(HIDE)rm -f $(VFILES:.v=.glob) $(HIDE)rm -f $(VFILES:.v=.tex) $(HIDE)rm -f $(VFILES:.v=.g.tex) $(HIDE)rm -f pretty-timed-success.ok + $(HIDE)rm -f META $(HIDE)rm -rf html mlihtml .PHONY: clean @@ -578,6 +709,7 @@ cleanall:: clean $(HIDE)rm -f $(VOFILES:.vo=.v.before-timing) $(HIDE)rm -f $(VOFILES:.vo=.v.after-timing) $(HIDE)rm -f $(VOFILES:.vo=.v.timing.diff) + $(HIDE)rm -f .lia.cache .nia.cache .PHONY: cleanall archclean:: @@ -592,64 +724,62 @@ archclean:: $(MLIFILES:.mli=.cmi): %.cmi: %.mli $(SHOW)'CAMLC -c $<' - $(HIDE)$(CAMLC) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) $< - -$(ML4FILES:.ml4=.cmo): %.cmo: %.ml4 - $(SHOW)'CAMLC -pp -c $<' - $(HIDE)$(CAMLC) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) $(PP) -impl $< + $(HIDE)$(TIMER) $(CAMLC) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) $< -$(ML4FILES:.ml4=.cmx): %.cmx: %.ml4 - $(SHOW)'CAMLOPT -pp -c $(FOR_PACK) $<' - $(HIDE)$(CAMLOPTC) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) $(PP) $(FOR_PACK) -impl $< +$(MLGFILES:.mlg=.ml): %.ml: %.mlg + $(SHOW)'COQPP $<' + $(HIDE)$(COQPP) $< -$(MLFILES:.ml=.cmo): %.cmo: %.ml +# Stupid hack around a deficient syntax: we cannot concatenate two expansions +$(filter %.cmo, $(MLFILES:.ml=.cmo) $(MLGFILES:.mlg=.cmo)): %.cmo: %.ml $(SHOW)'CAMLC -c $<' - $(HIDE)$(CAMLC) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) $< + $(HIDE)$(TIMER) $(CAMLC) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) $< -$(MLFILES:.ml=.cmx): %.cmx: %.ml +# Same hack +$(filter %.cmx, $(MLFILES:.ml=.cmx) $(MLGFILES:.mlg=.cmx)): %.cmx: %.ml $(SHOW)'CAMLOPT -c $(FOR_PACK) $<' - $(HIDE)$(CAMLOPTC) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) $(FOR_PACK) $< + $(HIDE)$(TIMER) $(CAMLOPTC) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) $(FOR_PACK) $< $(MLLIBFILES:.mllib=.cmxs): %.cmxs: %.cmxa $(SHOW)'CAMLOPT -shared -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) \ - -linkall -shared -o $@ $< + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) \ + -shared -o $@ $< $(MLLIBFILES:.mllib=.cma): %.cma: | %.mllib $(SHOW)'CAMLC -a -o $@' - $(HIDE)$(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) -a -o $@ $^ + $(HIDE)$(TIMER) $(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -a -o $@ $^ $(MLLIBFILES:.mllib=.cmxa): %.cmxa: | %.mllib $(SHOW)'CAMLOPT -a -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) -a -o $@ $^ + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -a -o $@ $^ $(MLPACKFILES:.mlpack=.cmxs): %.cmxs: %.cmxa $(SHOW)'CAMLOPT -shared -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) \ - -shared -linkall -o $@ $< + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) \ + -shared -o $@ $< -$(MLPACKFILES:.mlpack=.cmxa): %.cmxa: %.cmx +$(MLPACKFILES:.mlpack=.cmxa): %.cmxa: %.cmx | %.mlpack $(SHOW)'CAMLOPT -a -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) -a -o $@ $< + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -a -o $@ $< $(MLPACKFILES:.mlpack=.cma): %.cma: %.cmo | %.mlpack $(SHOW)'CAMLC -a -o $@' - $(HIDE)$(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) -a -o $@ $^ + $(HIDE)$(TIMER) $(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -a -o $@ $^ $(MLPACKFILES:.mlpack=.cmo): %.cmo: | %.mlpack $(SHOW)'CAMLC -pack -o $@' - $(HIDE)$(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) -pack -o $@ $^ + $(HIDE)$(TIMER) $(CAMLLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -pack -o $@ $^ $(MLPACKFILES:.mlpack=.cmx): %.cmx: | %.mlpack $(SHOW)'CAMLOPT -pack -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) -pack -o $@ $^ + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) -pack -o $@ $^ # This rule is for _CoqProject with no .mllib nor .mlpack -$(filter-out $(MLLIBFILES:.mllib=.cmxs) $(MLPACKFILES:.mlpack=.cmxs) $(addsuffix .cmxs,$(PACKEDFILES)) $(addsuffix .cmxs,$(LIBEDFILES)),$(MLFILES:.ml=.cmxs) $(ML4FILES:.ml4=.cmxs)): %.cmxs: %.cmx +$(filter-out $(MLLIBFILES:.mllib=.cmxs) $(MLPACKFILES:.mlpack=.cmxs) $(addsuffix .cmxs,$(PACKEDFILES)) $(addsuffix .cmxs,$(LIBEDFILES)),$(MLFILES:.ml=.cmxs) $(MLGFILES:.mlg=.cmxs)): %.cmxs: %.cmx $(SHOW)'[deprecated,use-mllib-or-mlpack] CAMLOPT -shared -o $@' - $(HIDE)$(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(CAMLPKGS) \ + $(HIDE)$(TIMER) $(CAMLOPTLINK) $(CAMLDEBUG) $(CAMLFLAGS) $(FINDLIBPKGS) \ -shared -o $@ $< ifneq (,$(TIMING)) @@ -658,20 +788,32 @@ else TIMING_EXTRA = endif -$(VOFILES): %.vo: %.v +$(VOFILES): %.vo: %.v | $(VDFILE) $(SHOW)COQC $< $(HIDE)$(TIMER) $(COQC) $(COQDEBUG) $(TIMING_ARG) $(COQFLAGS) $(COQLIBS) $< $(TIMING_EXTRA) +ifeq ($(COQDONATIVE), "yes") + $(SHOW)COQNATIVE $@ + $(HIDE)$(COQNATIVE) $(COQLIBS) $@ +endif # FIXME ?merge with .vo / .vio ? $(GLOBFILES): %.glob: %.v $(TIMER) $(COQC) $(COQDEBUG) $(COQFLAGS) $(COQLIBS) $< $(VFILES:.v=.vio): %.vio: %.v - $(SHOW)COQC -quick $< - $(HIDE)$(TIMER) $(COQC) -quick $(COQDEBUG) $(COQFLAGS) $(COQLIBS) $< + $(SHOW)COQC -vio $< + $(HIDE)$(TIMER) $(COQC) -vio $(COQDEBUG) $(COQFLAGS) $(COQLIBS) $< + +$(VFILES:.v=.vos): %.vos: %.v + $(SHOW)COQC -vos $< + $(HIDE)$(TIMER) $(COQC) -vos $(COQDEBUG) $(COQFLAGS) $(COQLIBS) $< + +$(VFILES:.v=.vok): %.vok: %.v + $(SHOW)COQC -vok $< + $(HIDE)$(TIMER) $(COQC) -vok $(COQDEBUG) $(COQFLAGS) $(COQLIBS) $< $(addsuffix .timing.diff,$(VFILES)): %.timing.diff : %.before-timing %.after-timing - $(SHOW)PYTHON TIMING-DIFF $< + $(SHOW)PYTHON TIMING-DIFF $*.{before,after}-timing $(HIDE)$(MAKE) --no-print-directory -f "$(SELF)" print-pretty-single-time-diff BEFORE=$*.before-timing AFTER=$*.after-timing TIME_OF_PRETTY_BUILD_FILE="$@" $(BEAUTYFILES): %.v.beautified: %.v @@ -696,11 +838,11 @@ $(GHTMLFILES): %.g.html: %.v %.glob # Dependency files ############################################################ -ifneq ($(filter-out archclean clean cleanall printenv make-pretty-timed make-pretty-timed-before make-pretty-timed-after print-pretty-timed print-pretty-timed-diff print-pretty-single-time-diff,$(MAKECMDGOALS)),) - -include $(ALLDFILES) -else - ifeq ($(MAKECMDGOALS),) +ifndef MAKECMDGOALS -include $(ALLDFILES) +else + ifneq ($(filter-out archclean clean cleanall printenv make-pretty-timed make-pretty-timed-before make-pretty-timed-after print-pretty-timed print-pretty-timed-diff print-pretty-single-time-diff,$(MAKECMDGOALS)),) + -include $(ALLDFILES) endif endif @@ -708,34 +850,37 @@ endif redir_if_ok = > "$@" || ( RV=$$?; rm -f "$@"; exit $$RV ) +GENMLFILES:=$(MLGFILES:.mlg=.ml) +$(addsuffix .d,$(ALLSRCFILES)): $(GENMLFILES) + $(addsuffix .d,$(MLIFILES)): %.mli.d: %.mli $(SHOW)'CAMLDEP $<' $(HIDE)$(CAMLDEP) $(OCAMLLIBS) "$<" $(redir_if_ok) -$(addsuffix .d,$(ML4FILES)): %.ml4.d: %.ml4 - $(SHOW)'CAMLDEP -pp $<' - $(HIDE)$(CAMLDEP) $(OCAMLLIBS) $(PP) -impl "$<" $(redir_if_ok) +$(addsuffix .d,$(MLGFILES)): %.mlg.d: %.ml + $(SHOW)'CAMLDEP $<' + $(HIDE)$(CAMLDEP) $(OCAMLLIBS) "$<" $(redir_if_ok) $(addsuffix .d,$(MLFILES)): %.ml.d: %.ml $(SHOW)'CAMLDEP $<' $(HIDE)$(CAMLDEP) $(OCAMLLIBS) "$<" $(redir_if_ok) $(addsuffix .d,$(MLLIBFILES)): %.mllib.d: %.mllib - $(SHOW)'COQDEP $<' - $(HIDE)$(COQDEP) $(OCAMLLIBS) -c "$<" $(redir_if_ok) + $(SHOW)'OCAMLLIBDEP $<' + $(HIDE)$(OCAMLLIBDEP) -c $(OCAMLLIBS) "$<" $(redir_if_ok) $(addsuffix .d,$(MLPACKFILES)): %.mlpack.d: %.mlpack - $(SHOW)'COQDEP $<' - $(HIDE)$(COQDEP) $(OCAMLLIBS) -c "$<" $(redir_if_ok) + $(SHOW)'OCAMLLIBDEP $<' + $(HIDE)$(OCAMLLIBDEP) -c $(OCAMLLIBS) "$<" $(redir_if_ok) # If this makefile is created using a _CoqProject we have coqdep get # options from it. This avoids argument length limits for pathological # projects. Note that extra options might be on the command line. VDFILE_FLAGS:=$(if _CoqProject,-f _CoqProject,) $(CMDLINE_COQLIBS) $(CMDLINE_VFILES) -$(VDFILE).d: $(VFILES) +$(VDFILE): _CoqProject $(VFILES) $(SHOW)'COQDEP VFILES' - $(HIDE)$(COQDEP) -dyndep var $(VDFILE_FLAGS) $(redir_if_ok) + $(HIDE)$(COQDEP) $(if $(strip $(METAFILE)),-m "$(METAFILE)") -vos -dyndep var $(VDFILE_FLAGS) $(redir_if_ok) # Misc ######################################################################## @@ -752,17 +897,14 @@ opt: printenv:: $(warning printenv is deprecated) $(warning write extensions in Makefile.local or include Makefile.conf) - @echo 'LOCAL = $(LOCAL)' @echo 'COQLIB = $(COQLIB)' + @echo 'COQCORELIB = $(COQCORELIB)' @echo 'DOCDIR = $(DOCDIR)' @echo 'OCAMLFIND = $(OCAMLFIND)' - @echo 'CAMLP5O = $(CAMLP5O)' - @echo 'CAMLP5BIN = $(CAMLP5BIN)' - @echo 'CAMLP5LIB = $(CAMLP5LIB)' - @echo 'CAMLP5OPTIONS = $(CAMLP5OPTIONS)' @echo 'HASNATDYNLINK = $(HASNATDYNLINK)' @echo 'SRC_SUBDIRS = $(SRC_SUBDIRS)' @echo 'COQ_SRC_SUBDIRS = $(COQ_SRC_SUBDIRS)' + @echo 'COQCORE_SRC_SUBDIRS = $(COQCORE_SRC_SUBDIRS)' @echo 'OCAMLFIND = $(OCAMLFIND)' @echo 'PP = $(PP)' @echo 'COQFLAGS = $(COQFLAGS)' @@ -776,10 +918,10 @@ printenv:: .merlin: $(SHOW)'FILL .merlin' $(HIDE)echo 'FLG $(COQMF_CAMLFLAGS)' > .merlin - $(HIDE)echo 'B $(COQLIB)' >> .merlin - $(HIDE)echo 'S $(COQLIB)' >> .merlin - $(HIDE)$(foreach d,$(COQ_SRC_SUBDIRS), \ - echo 'B $(COQLIB)$(d)' >> .merlin;) + $(HIDE)echo 'B $(COQCORELIB)' >> .merlin + $(HIDE)echo 'S $(COQCORELIB)' >> .merlin + $(HIDE)$(foreach d,$(COQCORE_SRC_SUBDIRS), \ + echo 'B $(COQCORELIB)$(d)' >> .merlin;) $(HIDE)$(foreach d,$(COQ_SRC_SUBDIRS), \ echo 'S $(COQLIB)$(d)' >> .merlin;) $(HIDE)$(foreach d,$(SRC_SUBDIRS), echo 'B $(d)' >> .merlin;) @@ -800,3 +942,12 @@ debug: .PHONY: debug .DEFAULT_GOAL := all + +# Users can create Makefile.local-late to hook into double-colon rules +# or add other needed Makefile code, using defined +# variables if necessary. +-include Makefile.local-late + +# Local Variables: +# mode: makefile-gmake +# End: diff --git a/all.pdf b/all.pdf index f76df38d1c3355e02d9d423bcad1d3787b5cf4f8..44427998f7409baaf498d064f8196d44e32de010 100644 GIT binary patch literal 1241338 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 $NlkX0i&0HkjnhF}5NlO%4#1yvW^y>i+VK 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�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

    FS+oeBLm_2=z|^W_1KCB&gb!G(1KKDzqld#VW@ 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

    >{SD~(j(9Ne8DO313pDQwrRoc~G*M?U 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 Hqr^V|Fj9zB literal 1106488 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≀RvYMX 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 )TylpAacWcmvHxyML~wsF5F15!jIWf$I$= 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

    VyU1fOd!u+|k!z0#CDDhQ?;#aPx-`;OZ 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

      IORKR4+&Kvhr*%t`io}xu+ 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%0D$I% z|K^QOPRCyb8>{2%`O5 zJ0&->H^7(wpn!V#U+FL5@i#m_zzIK=5@0~7*`G?+=K47HMivl-=(R1bj;>5DfYYmh zGC6lZRATNEe-wvi7GTJYZ2$lxJi0P>0p)#PtXON>|3Z*8e`P}d3qe|jTu=WYCO_~K zN}D@M!z&jQ{hQ*y%*NdKF5c`r!YcjKTzPYjC`Geo*cmBbS6I4|e zl9Wt5^+$iWYtG1x;D7&%~fM*{GQ|dNuTtegYJL!_vIu;Czpl~ zfFu6tyA6HN-}9&K`O_w)vAH{t9h)A6Dlj%Y1YmHicLLzxorIJH|@F zglUj#8(cc08C)jZ3tai7n4!|H^tN6I4|vMtz~aTfXdakeb@UsxBm>6ERULC~jiT95crtE;jJG zw$v||mJfXVRn!y(Wm{&WC&=0mz{7YmeEu>>JmoAs<;uO+52cGN0(d=GU5PeK`+-<# z5tp)hri!3spgrzFrP1voqi-y&YnJ@~%0Y{tFhPs}Gj z_CbWF*-{{@k~4Nudd?%|j@U&>Aq`Maq?~_^NDfDIj*@DPPRs=H<6vc^nQ;ri#4A?a ztaan3UIFm_*D=v3L!)D#Uh{=25*k~zl4T~B!xB@00|pzoGtr(5!G;BrO!^g&7_eKC zSV4dvQ)2LJ1_-iEKwIiQ!f?M#v>3aav#_YmFXBG;?bb=;@8a~Ya44mz?wl`tr@A38 zQR0lU@9kW(`)NkiNvv^!iph^VY%Zw*Gu58HNNB|6bg}aU>N7ZGF>d@!36kfT2cfVX zEgz%)WU9t@H}TlECFNf0ZjVqiKo3OM*nrNq#j)&q0N~C(@GF2ed2@@}N?OF3cqj7c zkHe5&Z}>E}C8ujN&*z}CYyi82QXcL|3L5S|q|6WYw14At{9u@#3T@pB%Tm}uq)p}; z8`AU1+{|e7!CL{TkWm@aj634n#I@*Ypg}Sn@b$`2qMo_w66L>JH5g0b`@vvA3BX2+ zh??k(8U8DC+lGl3m?)em2jWQql7-#f=nuR1Ygq8Se02nwd~+WlyLh>7-ASg}s1os2 zK9mW+6_T?DK7MXi*u{e813Bs%4s(}JUT(&XHve%s)T|(e$+cRr4t|X5$HA?gTcfj1 zkOQ~CBts)E(0+px#}K*Iy!uu@#%8f;c}^j?sbYSG&Tb-O|lewR!^U-&~Z(-5~;EY4~yQ{GgdeQgThz( zEaO$BU_iW!oZ}GATHCf#sRkZGMKw5osaD)Ga9GRU6CasKB-2}pZ~~*qFQC|pNW*KN z^wOv4){R6Jm!$gY_#KYM?dwr5MI_elt#J*w;~dy{T>(;BD{ug)f7WOwex*C@k7}4_ zknxa}Tz8NRdXK~yeG#@#?HfMzcC9GL zty5yTwNqk9S1gAK>S&#&E~$IP(4Dj(gvP@OGVjrAaQLXlmzM&KN9#*xd?-jE|4g(< zEq(@hmNZtxi1Ee6kCAxCaE8R9T~Fl$*IX!CFA}M;U0iFf01>}ipU$<7%S8vGYe-r6 zr`4?paO#n7oIY23%2Bake+hf<5&F;#O6?KO78{Zl#~DMxiFHF%W_B zl6WN`{{pZlP(=^MplXxsL_1K4lXu?U?KVr|kh8enig{tiqoOyvO>>}BjERdkAXV&L z|D=$woNh#KSQ%O732Wl8Ji=pvVc~;JGp(9r7f)Tz=MNw-3gUNI3fnT&P*iOT2> zJ1DP7-z%1zH=SQCe8NBwPa+4WHQo1VwwceC5GD?!5HBL3i9S94a%8X{D;B#%j)qr8 zGQ+tEg;$^EZ9Um|xjWv7BvY&Syy(=dvWHdM4=8Y-)EFtg_(L_L())|#O?aDl8VM=| za?;#i%CG$r=M)^PFW=WLU0Wx%3reih59vVP_wp-4VY@)dC)dj|{MhDO3xF6;3qe6g z^HVAnAgR-`sY~lxU~AMr5nHRG5Q^u>HY%AQ>Kt_fuNu2zfZagjb-wlw^_)c)Y1Gh#_+jch>&e=5M3*cg{O;734D9sE_G*^sTBJ0iTZvh9JwqmTsi6Z1KREEW zMz-466)HU+7+fT@EN{IkPfundEbZ|fbvFFW&EYGh#x5diLTMYMN%~S;;8tkDCRQxaio)+zVg28d( zbjbW$YKU@y{^f>EZ9z(#dT&zXiFy@GrJtgqeuFqe!^t}bVx+H@8JJf9Wl^GBc(F+2 zT)GvjNnlrt24m8W`pt?Bx7wD5wzO?wE7!*DhMf+|rIpx*ih{t5wqLODzX?K@Soc~t z)V-m`Os*4K(UP9Uo$~F9EY{GfNpOf_rEnE~{c0yCH&(b)AU$61i89{A@XT{8HNF|A zvuo!8s6@G8vOuRpi2pKhbdW3kL?(LJB11ZmNk=Sc24ToJ{`a~H&x!??T^!nNXk-Iv zVNRWKJ;pq;snL_udvcR`G}NKaR?u;NVXDFvpH+_2dbRB=1oN%J+4K*-A+ZGo4)@Ii z$X~p}xtjym(qCE6t>D@4?;rJ?uyDJZUIc* zsP`0vu2}?=GFfT$G+5UoX5!Jr7vv*dWwTR8Pl_d}6}t_TfNT6ygpk?Uf7UkTdstU7 zXf1HcLm&97p`|XJjUnfH^W0{ot)E@r>LpA~$@`=C!Oo+vXpI@)Ns^0=9oxrVsESQN z(uF3+;I*o1m-Xj-8>CJ>SsPMrQ8S3{RlIU{W?p{l)KlLnX1RDm94qJ%oqff^)=<;d(T4|}7r0n8R<2fG+*YZ?POEjrE1H^EQ zl}q?E9G7rs(%U=M25Iyd+EeXsvcPSQ)6+6`k_}) z;H!?#pM(aSrRxpKPwqacoK7=bn`1qPr(kZuMTiOyeg1@<`$U}H$?mk_#Am^ZP_@T& z39lKR-3%EjtwAS>mk+mCS424|FdXdKG6SYj^l%hWk`0(|!4O=$<)>QVq$GS2UL*vnYY+zJhz zca?NyKt1x+o6c*YpQmvoB=rA+INSdReLSPYY>ygR!qd;5;rnj zQJMk*Q?`$aSgCuU$bJhs#++^Ur%5E|CrkLgXjLsfwYKMwykV4x>5*zC2!iH=noNaa ztzMNgp{BY@CyHCQb32)>G|t*|-`YHI z^ClnW_+gT1^bahQK0vwA!o+++HgmV-FhZAn%)AWF8LGcfx+c5cD%k8&tv-`_Ph_U# z;ub7*@3R$_&cv3=5!=v)KJ6z8q}h=3Lf9Q>g!t<_98t@Z|B;vZF6rw7zz183}aWVz|p&3O-Om(o{cwmH%2{2aCa{2Re zJo`>I-5KndFVE7`cvQHMAZU_F#^96R00ouPu%u1aIMJ}&t{~^;fD$#>BgkO<7l(-o zAlnMMbz-#eKqBEnTPrfB1V+l$eEH`h5jGqlc1c0kyO1q7-RJtQA#{U?w-FIz83fHg zq330CuFz1en30je1yL0iY}JC&$x#9DMPETk-%_7}6h+Ogfo}h4wgkzYr*|yx4SWUY zNvWch6&F*F58oQjyT-2R7|q2m9O4`}s_;bd zNG#nf^7^0dQq{YesbHZkZM-MKsk2f0Xeu)^7A^|vLnWU8woF#^gZ^p{V+&@#4i}4w zCJ3ly@aBNNq7VO=0ky;&#jr!E0x|E!C4Z-QV+F ziF9R~QZzN6{^nU8j~iPGF%|JisNzO?=IBipK`h25Oav1c%Kgd$o=B)Qk(ikU>aPIE zC^5$otRFoVTE@PYbk==ffO2EWiTZ%A=_D*XC^T!Ews4IgJOVpuWWBDv5Drt>X_Xi~ zrtZ*~;GB%XfQ;s~XgKMaad=8M)+K0p+{=3mO@w1o?ft-`0AJ>CtZ;4&Z(K5JK`0-sY-jOq2!~S-F+dD84P#U$t?4uE5X2h^QzsdZiO?Z z@!_Rkz0(kAv=eWFvVj{zaJpq{-K0Clj@-WC-3+x#I0b~MS;&K4Z&)rB+~XHsQ_Xay z!>HfYlslQtO^yPVHRjJLeb8+!6~=J>(_|4?Y^wZ?&d9%m6-D%Cg9w~IBGNa0-5@QT zGzd$Zn?8~|Z)lb5EEr3JMmB#3Nm2!5sY{JoYVLT71J+LCn7r~sx3$CUOSzN=1i2x{ zp#tUi8@F~JLa)T%FsNU+y~bw=MS6Ej*t;fUp?&|K(49UEyMhnvABdBhWJDdr2Wn)} zQzy(LPujm2!uC<2y;igL8Ye2dc20}!ZJfGUv&G!e6Jsc{0sA60L| z2pw{8VyN!Yoyz^8fPA7d32Mjun|uo!wfyrtLa6Hx?Ir@FpZa>@W*`#Iz znVD)tEWKf?+(-U?*9m7}ubkj_oc{IrKIM0YV;rQuB%IvHhX(Kb*z0>qDjMVcuV8qpaRF|L zcQ?ZyW%@pDrFU>dNf&XR?d~%T?!vzd2Z@l`fb#X>&IfmGB7{GHe95w<{I`7O3ui|w zI*yW4A3S~cdaDXaE+UT2JS^Mye;7N5U_pXyi(cEdZQHhO+qP}@wQaMnZQHi(-*50{ zZ}4YTQIj0hiHywHYi$V4xfXKd0VvVBnFz?WPcckq8+)v)yt^Rc#mTUR`2)si>GRF$ z*7f3{X49>Wpbi5Y#P_rC8*DfR%{t!agq4DI%YvbDNCpjB>tzU~1~P=bqO(u}HvMjL z(6ZMn7YFjoL&$(>VsQmQmAjI6XaKZx=!oo!8f0#`pQ|ImGPY>EA42fBvZgM<4s=y-ew%mo&(3brwH&6kYQ6D>Q}=VYStB%2Ks7#cqa12A zJlPos`m}GpuTs>c^*K(O6KPD@ihLDjGUs#8MY#V=P|6!)a8`{%GJnFq)Am7*zYc)l zBOAG3%SH?|{bNV_%rYGx8QsWTx!%-Rq1Sz+F=tdwG%L4vHw#HBtRUOi!9!CLK61GA zTznHnOR0dLb67^;^jVUa*cCW)k*ACEGB19CFZ0sn+mGGnxFbTj*S}Hg$8tgA4Ykr+ zVjTwXwCjJc)1433rq*5_H5##K93nFNR`mC%z>J((^;(=RDn!i4EF_FF1+2daUh^vq zsQvupA}#uH)%2L-iC9zJHgT3B)5ZSok7X_3YPkStMuBH=#_GQSq83&=P-jw}sVG$U zdEnEn{GJx#c0Nf0M6d{gm^?$cPjp4dD^kz^L;vC2AOt**0dPp}I;k#o-Wm1Z8MzHi3+6WUqMYn0R)Fy^*UbKune z8(TPRI^+Vb%J*vY|6t9YNi5860T2)n#N>u3(Vtf1ocIHaT_*)EqQ zU{-CFBb?4hS)Q+~_4kE~Lrj*487h}*+|nrQaqO2xA|m}qn$Bqjs;u-LKz(O~s7f;Z zpw4}F)7|Bry1*l;;V#e*v6DWzVy~>=yvzIwe6G=Kk_+Ao*Zpf@5{35&czd<&e{Bx~qYl&SyLMpKU6Xjw*%cqWKFxQ|^}rsS06B3Q~?O#75BF+xa}0ei%s zbP%H4R<*izu({%p-0+Q&KP7^47^DOx2$)AZpW#$wWsK-3wKPen>JB*XnQv?DCU2rP zzXVt=e;&(qb`||rNYrG7)V>$#o0t~I=ck98PiPXP*--u!;-GcO2p4T6`u4e5UzuPO z1&bBdELIxXN1Kdth2J;U7V!`V>|-kn%4jT(l59)0OJ?ixp=HVYabi)Q!rxs8{-&P= zPVc&KsFtr%oqY}8a;73LzcfOhj(MfS3eDoc&MDdpl#_gzK#U+UR~>v}Xa-VPs`@Is zz1s3?Oy?!p3jBED%$@>M%IgK&R)RWs0#Tqa*K=!he?SLyXJ6@pnzO~Nf* z)ro8yW%%!bQPx6g9sw(I4Dgn^ia@4PAOAQ$U?gPA;RL4x7KP}d?}?dAdRkV zvx0lgz!chqQH-^qMemfHJ8<*K(ztH`g0;ZkLbm)BqAui_yD1WoacAkzBUV&dm1@M1 zsKg$I;;FHz@|qm2c2~uaJ4^^5)03I#jdT)V2U`NN|Kc8HCvTzyNU>dPUACn|JC{19 z;#>SOYmSVpiM6brA6iD{?=aF4W}(TCB+z0z9=X%wA(QXLfYsBzzly2q40otC+yZp# z7nf1OLiX)vRu)wx+qhO1joSq6 zHe&Zc)dO|O)NxbB;Ie=BAb^x6Fc`zUz!$TU1N$dXze&`2=Thi00 zv4i5gA$bcGHYL#5{t}ZG${q` zK^_ezCT;srkeyStJ5%vb#^OEPXW#{$Tz4+A)9k%V2FIEVM7Br|FUiQv6dgE!FHnmG z_w@Vf4^(!vM5^r8Kwjn4D~H6`N$%OQPi&6;J?(bpmqm$k29W2xd|bgsQah{;xt=RE z{Uk>qDYQQZ%hMX)TwY{uSo6LRxBW z1NwAni>i%`U9;;#-zplkT9EGyJ>op(F(=FV{GO z-xiDMr^CSn`S9gdcdh>30|m9k65URa9xTbVm-;=fFK32CCnZ-wej7npcjz zFg(JsP0oP$MUtN)%ExLntKPwc(l~APVM|ec+$T>vT5=r>0Tcx(3gna(iMWw(GROrw8X;#-oqr`eBhr1H)&R71%n=q1_8PqUR zcKyO#bEIgbWncjD0|<|N3( zNIG`o^%~!xT_k>mo9MyFZCj=zQrBjBMR_u|Wj%dK*wa*OJEZ<`^w>QXaQGp4 zKc1IbDM3n;ni)A`$XaIP&=SB|N)4ZLK+nrQIG^SnY^>Dq?k;*m!|;2C~kBrG?axvtlBSl!^`^hwV+G}a*%vnPih&VCl{_G9{X0s^MK zAq^Dp?AwMt^>M?!?RiyChB_?jT=5CGsAhLidO$6bN0(%qGu!gafx<5AI$VB2($e~? z8X2(6-#uoH+sjrTA@dnD{mzvae?Eqb?>GlvlEtVm8>TcZt7Eo#rjqtDND^3V5$?|` zmCxEzoyh$vWXAIA)UY;xaO|UghvX6)-*>ZQDq77PW-%~Hr5AlVP&4`!B@Zmt@Rq5y z^0XGr6>`$7pYF;I6HewAIiBr7X&)$OvUh}dKIuZNj-iiN#al4WN_Ao|G)McfkJ5vC z6Hu*Ub@0IzP3^`f8?Ew7gjONDduLq2Qzhrdu|rI+c}{^X@ng!uusk|!>^~Y_tB=0X zMJ~4O9uEEIas1{hJHjZ;C*G*TnWkmyhVAXU|W4wF*^*xzK zC2`G{JYQ>{4|%&n{PbUf;NsS7@Kz$^@Y=ifu8 zYWe+sSCf++68lYJ^&|YdFu<(ZZ}l{wsLM+lnQvnr(@Z#?j@r}HnVWW{;Ank^wk`2U zGTc9?8obYxqEG8@xuQK;AS_Cosog_Cv$g~l%!nSU4n^UH-9UH ze}NNECO!0GH%|{qY=_7t6Zy5jhBH-bm%>BmlNZB#Uxz=~Sq|U^-Az4geAQ~0Z~C^( zM!V*Cq-Hbq`kpUOCT4_pV1*NRlJh>yOreaa^P+awoGVfb-+QX2+dx*PQ?UG@9sSRsD+eGe|}Una`HD=68zjzyM%qD zSbRQ|C&3|e*|KrDQMw(7F>d`Z=|0}$^Vh{Hz+eX+PSO4h^AN%4 z_9E+2pLPi*Ypn-Jr6&@*{8UiIUEX`VU5e>`zMo=y%7TlkN#cV2=oB^NSp4PVy|ObA z*HN#8(_=Y?HLU?6^_eQP4hsBfgO_B(L=^dNHl};lFtT{#=JewBh>fn;=dNN-(q%BO zI#DlIbW?=olA*T|DqP)*-8i0M&hY|Rw>%j;^d@r&ajln7io;wT<-Z*>0nxm{asCZP zbxP4NiN%DOeDN7Vk@kG-V)JcBb>;p0;y4$7%Y zx5g5@84>>)Z;=mpS>1f?tyI`AMOM5`m@=vHG|@B+cp{`zqhn^)lJx}^-e6@K5`ZB= zf;*5ICrplurZ=@Mkfx9$7jtBK_NhSXsQ0V2uQ@`O3Gp~x4wa8wc9|S+J~?(K7?M9f zGx)U(b$i770n2I2ROan9aX&IeBZfQ6=jS@UC^#hqM6xhQGCOckpOe0c>@+JCHCVcD{ z+IgAi;QCN!FFHzKJe>xRQ>M5Z3S8L74nD3R;6O;VM_e#YbM}}?IGM*lgZTm`XwhRGxd@h4!~$divJF(TdMc}~Xr7W6tfbEv?v64OPlUZt;x zn$jsmcmTOAOkU$KU+!ouHo)}cN~%*LrYv42_xK}Z^4v=*$%FoE!&n7kkp!(V(RnA1$q@&cFB?Ou2lmv$u+9M9v)^yY62F+PY)2b-GRf*PcSCjWgUHHJN50mb*(l$_wvWwVTPAIC5SydVzN;L8s!<1amjy<{8G8a!BHC zQMk_xKk)Q@_n6^+6Z5BailLIva7WcCra#%vd7j>ZkaEp(*JZY}N+;4bBrm`fWWiiV<(9`D1kN@yr>UWBm(BU1 zXJ_kmf6s^bV}2k-cvbd(Px;EtRO{Z1}i ze1XtShwTPFF3kCtLMO9B60uwBU=I zOUsmJ0SjIpe!ipg|EhOlVBW=1sjje10i(~9gJcyM=P%=GIQ5113a`g6J%>yPF{k8j^`vC)q>Thh|k)TEb zVO7$e#L%7kexCI!p1&ndQAhGzG@=9?rGyIPb3{JdA|)5@BIEWJv#RI3>J7nzf+ z+NW#8l$5?-wyU94x7+8kB!w(6F}CwVfrUYet@MfXw{hvtxbeb>n91}s8V0HL6aFP~ z_`WotBl~rLCnTk7@X1Nk!T+)5a8F$Xn^>_!ixgGLz7VD~id@C+Ws{v!mQS`7=I>sF z<)+abU#i{`IQ6v@3ZFWv%}HrvX)=fs-oFKN_)@6CG_09bQ2(>krBMQ0YpukMWczLI zA(^c$%Z6g}_4Um$DYNdT6JrqZ&6OA%#-Nc!jYv1gpN5%v$;%?oEo zoc|j8x{y8VH>l}=8!?S9#1n-30uObZfO#JUneW&DF5nd-Gz3oKs`fb3v`c^5T18%n zi|F^R`@w1BvQE%I^ski3ZSbEub(1}#GQKo)a4+EcEVn`d0}O0223e}Qag6$#SA0U$ z`i_fEP4^^}E!Lk}J2Ox)>a3;Tr~)O-gZJ)<=*9;Z-Cw_dY7NaJy%9)yMZIZ2pT;wW zjyJ0fLO8re|3j83bXcmdSug$B?)IeOaL`<9f8{TP^1z#o)6GIZ##oEVRAOf&&)QD- ztI;WVpYm5=J@7+vc8x^ub?(Q{UE~@ks>BhG@Y#qzgT-l{@82!{oliB|Kz5<-ec}A} zR5%&>8{olsbOfyB-Cv}gb8iq3KM9M^^J2*;L z4m}tynTO-NFLM|$_=Sf_5eD0kz>1@7mbiM+82xl8JX)^T`Gns?a4+0R=qF@WoU!f4 zdHhDM3v-I(w=7aQJUt8Eehe0d@s6AVZ(b!$LPP=49Z=687LGvC+zANmQzGMUv6 zEA*KwCg0alK=y`7e%^~^wzd9CLlX~+xv_2C7k-s}lriC>gHQA)_S0@DU_ zd~Cz%gT=gicmHSl&`n-neu$ zkLx{b6L<0IV|u!Tu5p1MU|uu%G}4(=NMy5#!l$&Q#u_VTuO1xAqx7Si6X#{F$JC)+$-HT+F`t!GO~!8_ zxZnFW-4R5Ue|}#-&NlwqfH6yy0q}?UgPrK%dYT-+pBMq7Ofohy04L3m{s7V!wiVl? z+t(-lN|OfmhVi+2%GS5B1q*7qfBH_Zn7MYUJsfVPV6i44n zqTLApvot;UBSpgyQ~tzqZC|_~BlCCA4Qf#Nn`}aX4MKR>&(yrc0Nsc@HFZqw>s!Ii zfEN3>ee*>OOU3M$1z+EV${-O#qsPUoNzpn}Sp0$>Gv5nKPR6vw_r$W(CIO6bPm``l z%D*aGVX{b&pK}j1zL>WPfch6pm4=d@Lr3Kx6bPnReJSh(zc3vp zw*PWDOa#pAj0{ZwePt$K`0wMt4{YqL|4&TErqkG=cDj`nXVdLwjZNLgd-y+iPJ_{A zYclF)>o>3W?dz3t*+tdm?9kZ_qxfuPZKi7?V&wWdSCz+F7Q;N_JhKyU%CHJaMmi=Y zV9XN@gNeyN92wXQnp-Oo*bLbgfGe_bKw~6tKqTfJe8_(=9UJr8eG5ag8<>2S!vA18 zX0`@4hQ|943QbL|&Mgc~;CG#!olxyu9dq2BcZHnKRd)qqfRVJm220GQCk$lBz{Q~?z^#C;$9aD8JlD{BY(+1Y2mvVAMd zL-X(WMx}9XYyg^ysDg~1oTvfi48c(heSIq!1jP5VPTJ<=H~w>EVl!yJm2qf$U;2|9 zd%bD<{x!d5xZA(R^MeeGfHAZ&*??hWW@xPpFux133oA=-eLs2i4bk7f#s4^+r~h&~ zF|snhf?XQglbCDi02HCuHdngYvN(W^ZX;xItpJkd!TwaA`00VMp)I4o^mo66KfvhC zte@gsTx4oqVk^HxwAn*6Te2~zG}*t1TT6W(_ys?>>g?~c*JGI&+U;v!=E%wZD(|Oy zvDY>=yg$1gzbKEl%9uy2Ca9?_7C)O{zjDzVSnHVDYngy4Ilqcaee-X1l z!T=+`+c&#>i@zU@U^8)OHvqI^AO5V6hrK<&4K6?Eq$DP%H=?7%AphVTGZ2Ob2PU9) z4G!NQcx_^IadBkrQ~#xhfnSYBkSV_B%@d%<_)DoKX6^%Zj>a#pCds4Mb z%Lq^}^|otHpbeXfeTJ)ZxKVX@*xtJ{2Znifqjx8{&5DFQklBkPFDr~3a7}a6la`>G z^098+L51GA7<8@cU#ho_Ir=wrH`&Z9t3asbWg1ORv)2Ep@b`q_jKb$hu8;o2)YcHTt?d84|&r3 z>%B=A>LYfJ@Hsm$s9UL=HHl|xZJ-u7#hiaN(|p!+6?TsyhxMV7FCWZ@91)N*qxW7w zJ0VqR4(gXW4Syc`-^^6-v_X6SBJa`}nYG$K?pt_I)a7rx1p;K}EV{1gPdQ>Xnqu~OsmLtzY2%H-rG7sXOCI2F!V(^g*T9mN? zI}4GSM_(m`q+vf2(DtZbL*sNd` z_fw)tvXfnSXV06s96Ai}mSmQ5MnxM11OT{$@=qJ{Z;e=FsI1{59vi&hPsu+k#@aHQ zn|ZMVN$C~P=s10?K2l0#c}vV|GK6&O}f22iEjeG@aJ^f!2$Zl#bUegK)$Co z(fhpYwsgtS7VU{fh7nL&Sdz>oyXI$2A1>OsiW@P{sJC#nR%@Gg+-z_t9@%i{m<>Uq zda%931iwssq$S9^Kk{xJ8mteaYf!`IAAH6gLz?YC5*-PEJlKvpXTf8Z~W;4YG;-zD0G_)&v# zgVWwFBZlE9k5zA36Ev*=&$eX|1O)k__Gta6vhN*%^Q8$AgiG&kLRPv$; z$^acI_W-B3Yqxp0cI0YAADd7rum}zmhA`;P)0- zMM0yqD=6#O9_Qj=t(-Glcqxe>&H?QKhy?eno= za~2VFwP09));-v5p3Mz$qN5i>24W%PJ0Y`ZgMaXR^xZyRWm-X^0LE18&j>)OUHvD| zYS3j7ZXKsTOQpERZ7BO{87oMm>J* z1|sNg1I&IU$p zT}$)%bW3Z4h7Up2@V1krXl91f1mky5?LD;-+1`rgya^dar+K zx`YQRlo%twm=6=;l3E|BgHjz#pCmGEJhP?}5Eq0JICA0H7%=Qwwm|&pjD9+=QsBf$ z3f&AC%tG@8F)^BQ%1Tx<8Q}&DiOUHwbVfC3+sOp1{s696 znBLG$AfGIL{HTsQ;t1%%m*zyxe;J$OE9X0Ua9#U)HDFSLa#i!4jAi!AdCd{xspp^Y z+&Hq>v!|YT4(JlxM0sXXT4HE`N9PmsrnV*Sbv#UU(Oa{_u{FVbik8b$lnjc?7DqA2 zUFH+AZ*K%_747nHz~uyG-wuuOctplTL&sTW!IiZNch@ze%}zGt*GK)X>o^1v)(WOT zw4ftOHM*xlwX4m+GSt_)R<}0h9G1ejo`EVVFSy@p_Z`H?3F1#le0nXJ*xyHc3}7vd z9qc+3^hl>aC)NE&^)eLd1(%?*SUH=C#0`>F!l~Qa8{D_oQ0E*ml$8WOHZY;yC!(MR zjOI5f1gJaj@K~Grvwh!)mlG-xepR#=sVvZ}KbF2f0)jk^ope!_YV9Pv5*3VbWs|x) ze>Of)A^m*BC;rIyZnF|(8=(cHh&dcW}3X~iR%d4yyiwB=&^cg@_-K7{y`{qDds85NCp7 zFF%Cwebt*lKbhHmIxSUObpa3)(NW6re`~J{tn4~xCK2gB_!Hv`cd10hFH2br%^5B6 z=N^`+n$Ci9Tp~bu1izHKhOFT`mP0G8lTTd&6VP|als>-ETGwGhY*RRmuOw^BqLCD= zFipiF<`jOVn6{H+ofWKTVMaP`IEcRuAa;f^&(3rRqB&^oBFw;9z6>q#cs zW(+EdbLb~PE52soQc{FQ(sT}MC9uY(M+;p*g6K&ycvB`)ZA3e1!U{$dA!@kvtMdsA zP=&huI<8yPt^D)A-gz90Mg||s0_?t^tf7&`iN35802r8(Wm!sA?oAbcnNgnIxuWAC z(!`Gxi4fhd8GPj?Xcf-FY4i_zc$#bg-f6@lJ*pqFg+~O`Y2-eG^^8?w73o3DNP*Q? z5^b3X5s$%S&Fee6%Xj6$bXR}PQMy)z zE;;4haF={KxcBKPMz;V#RNN3qZe+eE6HuLKpG}kv_WM<@13%#iOQ~E;RzLk?`jY&c zAZj)*SU+4{HP;6e#}o2M1El%SNyO3nvrd& z*~?5&uhAgVYa60&WT#F#&vGQiJ-bXqcT9-_&IAt76^|jB-DXrkpHkpbu%2*4x%v|x zK7`t+T785}Hw2{$TBr-Pn!u<<#*btjE)Y?Kw8yF34H=mGF#n5QyTQdmq%3$KViYyA zNw{&}b4xdB3-6V{&bApEWsC#&FMfNt_iBJQkL-HbmgTJrtzNyZ!i@z=EocCtgse(8a-f4Lgj9I z6r^L=hSaYs7Edy4=ZczYrLI^JPy%^t$2i}Wk@-#sGp~;HcZ9c_1M7XO9k1b)`PS!l z4^6hUm*@38S0kK_Scbr>jKaV!Y-juYEl}it&|a|*SKXw*glTb zWnPMk;|lcjy6&eLv%}wJBTq%F+$P${W-4c#8f)`lZ-=_pX_2}i7wlV&LHdM5*`}S& zhM)R#C*WeH{D+nq0%hW45FmBR3S3*i-Ss^ipUT~^TQK7mv{sdwQL+bi*a4M)DS(8w z)xjBtl1`|tz-s6{Jj7uFlm;gm39(a z;Lh=i!61G7XOs$&9~(7hKlrSUe-Aq5?h5akF|dA#HASp7Ifqv)_+15jnudRem4(9i zFa_CiM6crpon>tLb0-fN{oNhTVjomC#<>J2?Q8Un^7qW*zHNk_8-Kv3KWl4Hl`KG; z)9j|}2XdPA?%gid_GJ!sv7K2_3(L%AvuW0_rR&d0P@f%GT`%)n;1w|O&@GN)+0Mx;w7KxJAmt{~Ke_9D_JWYo3?k8tx!I5Ek3Y5ZdV}LBQF0(z z|5ml)-zDh_!Y0VZX$_U>5c?Unq)MzqKvQ{)KocTUga+L zjY^{u*HFWWdxEJ2(blTr+Lq0J(2wG}$@f2u-iG()PrT=poKWvp0456L z3Ytglkuo7hQ!0c@j8KAfs^nv=VAQ8}0ZwZ?O7S2gYPfqq!0Y6fmkcT*OCK4*lO{T=y5lg8upQMXEL@xsx*CR^tXxUtV^H%gb^uG>~ zxz*1f7a@Wenk|9bKt!* zdaYx5A=O_3TzAZ)DUtO7EC}awwZ>~M@!|W#m|abyopN|MH(dG}c<`Wc2Jm}lb;&B* zIjR)29VmdF0@jN4V|FIl!V zyBKl+PuG;CsgUK2i6)P(1k&AgE^e+TH8Bgzy({h!9LQp*4ushNcd@n%r{Qn}N=^iQR6CH#*jhg{_dzTDy2j zNYM{ou)E(WPUeRn6k`Q}o*30|x*Y{6Pno@e9 z5Ok^@|6^X*dSQirm%a@e#kbBNbPD8l3Mu)cG5v^u z2e+n6vh6?Z_6mne$3|mDxVZR~tD)(d&B~~9go}Hu7_G#ts)VrRF1=fk5L!Srwa5u< zpI3wt)?gLks)0I#VDUr)^dB!~@0XkgzSE)#&x^E`^R;Txv<6hlvg8{AvmnVH#nWmZ z_dWIFZBRP#w_Q?FINKIxon+81)ZmfHuY0&Z+#}*^;ilmc=&#u(x%H`p<1}=n6kIZr z)nd&MCdW_Fm{@q9fXVZUUpK{|7QoGGY$0{)2{6O1Z{)q*g_zVxwmok6v z+C}yeOX@q;k0s+{v{&D(zgT6;)hz{Y||2_to4 zNEmvp)LYefil7hd7Vx1+=y8m^t=~VOd0vc<-5P6D%GSJMu<)v3pd~$5xMI{6Np7ji zBX=M6%{}F^!ZSS!X={^EQmmQGyK?P(Bo6@$6{O>zGUOP9<#VmKfRgp#E4oR09JFcS zV|v2-RMe!n%U*gJa$@DLAX4}z4sZ-2OrY_4&$T}2|JZ$5zX$Jrt@jGnNm|@*4u_gi zJ60TZNSMIHHcZW6!FDcB*n=#AlBe0|Dbc_LylCwX;>b|n0;s2$o?>E3)ExdFyJSuDUiH0vFE-_C{;;zSCMImQMYc zc8BCK87KlH#QMxG5TlN>;7X?jfiQoSjzEoOSIFjhuAlHtKJHtPKj4~j zfE<`j72SOeG?v^^Pk+YzZRZU^r|5ZAm%^wqb{9VH6a!SvRWbp~imNR0$AU^9%Rt7f z7W+BMMS;_dKYWcs$T+>=kFhTG^#*{fUU3nR9VQScG~}`PMJD!JM-KM*fs*OREX$8D zLH^uR?3NPgttkc%)&i(x7P$YI@2cgRns zZ+rQeGz(U|iT47aWG;6zaKMGJ{)8cTGCqQqU=eJ22pUGdDSXb>@-bW-i?LiiUg?B2 zOjM(xI04_6&e0SA!AxqozISEVv{vwz-C*yDiQ*(d+xCJO?|el4pn|Cs_CLd4_Ck~S zquEz-)q^aZyYmbBm|i*#5z~g}VOk;|6DFfvg`I&9f7wgnIu4`UUM0`1YPcIgc(*p;hq3i`Lo!a&3IGJGt^ZvD0Q?eXwNftCvLG}C4Bi79RwDyhDFD- zr*vuyIV)Ul7WZ(htW8{mi5`bms0+MjDRpajS+T3}kVWQVN#8~80FjLQ;e1>KBaBVy zv!&j|(SE}fT`iCNZ0I&`-HO0b9k@Ag&d}PtJCeytRq#Wd2Z0hQ0S-L>O|9v;zTHM0 z$02EihMK;Ph*QgYeytWgYPL7$-OqOyU*t+D$cYhXdZ|oe3Y@%t%cF7p4Wnsih`&*O zf&e4D0DKsFCZ?`hKTvg}$F$KNX}FIMbj>H==?&Kl^2CQNrl4O>19dB7u`Ux8)+1%} zb4WeWYP4TBtBq09gQ_2Cmy_B4IeIVH^FkCK^t0m$vefam#y7YVS5VlXi!n>pqnvM>|P=)APjL`%U#qi8~T(H@MP0kJ!FOf5u#jXPd4f zLs38Yecu7_%lGi28cocBJ^d0_Qkjp7j_NpJ-@$EfD^^hJQ}rffLLZ;ykUK z_n}?n$6Iqgb`wBp>$@=Yg`zEMQ~*NJ{dPm(K{FSHrfifMudPDoB+6jJ;}v?~kg0^D z7{^WS60NddfnJnWmzhX*+x)SKM5#Xus{fK}n+Z8gb?-8j2#Rt z?AIINpLAg2v9ybB0yeIudBGPjeo__YtukG=sKsu(z8bh#p2>X%G!@8Jy;D#o`%jNh zO8gStPn+=vm?Rs&TZl@eHVU3_Alc?yvo{4^^(c#kEQt zHIu0J2TEdGG(lXZR1C-b9BL9IPS3r8+kJ(w<}=YKp{r&C7jE|798*86!|=X2k>lEhgu27@$Wvo6xnK@sUpD7kdwolnuQ;gGv3GuJ{ zv@0KZV$cw;C~noRcDrj>Se^Q`H)5o!p@REX-#cpwzVz)&+)|{DELBC8I zk$^(d1h}wfrvqMMiqukptOcM}YxkxNL2&q>pwYu=W#ka>3)AJC$Bd0mpmv0w-{P@_ zG^Q)rneYVTkJldNAU&H$Y)}x|C^cObG8PbM2&u*puVN(kmRd!+n`z`Tttavb;fCkD zYkp|L?gx8%Gz7&8d1Waey6|M5x7=vsebF>3>#E~5t%!#OBj%Vip9`rqoSQ(s1oWzI zln(yVrp1=&@Uv95lniUxO>7?QKPEhCu~!Uy@*l;1h=WznBKVIjl{tUQG4cMjGJ6P4 z&DV`B$(ibK!aTdX&VY>!0rtScXP`=QQ;r4l6{kCcT-Io@EQJPl~DDqrr(Y-T}KC=cSWgeM|}GhO$Q zen8Q5g4cxUP&C}2QP!iFdGmd}hMo%gxuKHb93y)*3U|J9SrCL-@U7Y~2g&b3QY3T0)R(h;B1qeI^!43 zc$U=6xqb{5p-rxPn~Ul0bW@?t>BAb=@T5l2;WJg^U3-DnVi1m_+W!(cITeY-(Gr17 z9y3bg3+5`t1roSa%`cJ|>~vQTw==n3Bp)#Q7ptcvd@KaoehXy>@{&I`N3#H%vzWlv=R<5n2450AWA?9Tc)Q7-N5b z@8I{@H^%M*pe>!$au1m<(W0lTv-TD-`^&h;Nj4!R@UU0edk@;+@^OYR&yR0nUO~x; zz|wQti6eTLAlg=?+P9}Sr;n^Ao2kQX%E95D-6Q4lL))nRB+w{b1H3#x;;|KMoe7We zMx!6Wf?O#J0Ell-sGATTqAmupapZqDd}3-GP9-O+JtXBNBHF)_0S3LkkGXm2nz9Z# zXbO4Uh7*d%BjfZHz1n?85m!OjBEL9s$!EVORCcooox>#NK>uqS*R2YD<;`wO0gQc* zdw|)&!Yugh$rtUXBS0=7LS3zJW5bH+fW9(TTS~%BJ;Y`IqI2E;o*+?wqt7!n&%OMq zQjQHgWLJ{H3?rQLLbslWM};GN0bJaTbNS#`tL%=-lpeq#4hqa6U zzMhR$621|znel;b=mx3YpCld%cB3Pv@>HTUfqg;aGC2-!FwbU%0W?)(drq6XoC;Nd z!Ya9I6$h|B3f|3oJi5B+K0K>+Oa7jT6rdBSv$`iMiaqL)p@?n{2i(Y_4Hxrg8zJ!B zJ+YJOw?J_lB-XbZE5$Md31pUm-P!`^E;>P3GLIG{22`f;nA7WeJ3ocf5O zyHl_&;Aead3L)bMax!EbOMh0o%vg}-F$QDTUfS4cV=|FkhkEg{PbxsiGP9GU)luy} znfJJr>y#`-Ge64kuFK5HbE-Ma+?*G8HFuKZgut;46$Gz<;JIr2HEpt#_IG1SC=Zo& z9%n~-%KW6Ic1S;NDDhkC{@qfflfINn`L-aN){^1)1aS)3n!(WM<{>j)@I?es%OHpc zflOi3G<*k?UOR6Cqq;kqNVr}!u={ydR#H_~6)iR^?+DUt%(P)nByr~@96jwZ;F^y} zXm08pF%F(~@ajTC6@-L5!+Q}XXu^Zy_WuAqK*GN=*ijZT4p}lS2sN%mk?dKb>yjqb zpc;nalnx0Yrtwxu-uv?JL-edeV+~(3kAUY3XW3s{YvA);y;BQPm*VSwG@o%G%ElXI zCghv?m|VeH?z`Ae%t3rXpY__4c;^Mw_~_3dx%*IvXu%>Q%W=wWkLaSnWd?J5ikq8O zP0msGNmAwB7oYE!FfQhw+rKfk^&0(;o@xU!4#h1`C_K*Mvb~^l2&&N>gTP)zd~=I< z9SkCDtMgRgJ{tR@{Q@u(Fc^61J=gLnbM@eCMwKv;|3c!iRU(S<^g+ztM_?n3Sl(r9 zd)`l}++@0oy_*VTBGQDNAh}N$kRpI`pTozuWu0kp{RPG=`v^&Z-}9JQ+$Dw{f9hw# zC{{2RDqsO1jH}aZ%8s?BHrF1Y_N=xT|AuWTo+E+T{$MH2Zp9s?5w1K7lPfiiGC{r~ z$&(Ywm|67%2QDtkq9j?!&Hm|5r_>EBvw46>~A2ou_6H%tjn0DYREL<)gTP6SO_ zdL6x&zfE()`qGJY+daUyP$_tqgWtk#HEIXEUzeSaL#GE1E|dpy25SzrFEVXSE)f8J zpl4)^eVnz=36i=Y##*NCeM6P4-Kdy5+S;=!h$f%2u_0(@G2PJeI)FnK04ga#26p`8 zXJ+XfZ!YAGX;sQyF-a%WGWSaISIdZ{KRekk_v|X0fo6z7Zhu7L^ENbtzL5pZX1suH zET+*Q#;wH?4eHkwr}qMi_NLf|TYyH3-y)9s|9z)>pjpA8Ft1pxO|uI}=hvF06wLql z%u0;pLJDMcHz;X*6$vI&B;h|z;BK=EYi_%4<@w@tdU2p_MHQ;%=?x&`3}cek=4Ntz zYU7+E1UC-QG4QvOMyM|=0n*ScyT9N$%yuOsl*$oV%I683v5hVsoj{VMW6g6^^ialr zzG06IA`W!ynMxP`J_s%iNo@8Bau%%#CU`Jh*H#_1rJxP&mBR`&uz1be=mP_$j2-NB zNIiJ#9jrly4blxXv|T9d0L$q31?cY|){I4Y$!KV#{aU1y%`#UDri0V6d@g}+xFl!a z=El?)yxWaUt_EI?7cLDTe8KsM$nI;y#Xza6DaK;p)B-iz`|nE<2Q{ZHKpxn>@4DIQ zg?Ed~C_V0L5G`@AfrUf~ok#sf(eGNQpmz?A4#}1&8}(ne8)Ec(8-9Q7zo6SX`;VY4~M*?ZqAj>t>YX3@C~E53Tq zZ3v{_XHg?TXsC{BI>x}S*4}RXh!JiJm-re;P68Yy`=1eexl=x4z8#LFMt~ym)*b|C z>}Q#!1X1eeWo@^R32Z3(|XGdKIJEVQmO2{K8#Q1_FJChS=+3y0Gd{1H| z4Q&%`Zf**)z|=VvWa{?JX{Td>HKtRX`9o|oL0iJpL5UOTKLa|h)8Vn50=|i^8A^#- zE%~cHQfS_B-fF*bOH^)joCP-5i<79~T}Q`rAm^=lY{MXc+pl9yps7j1Ta^5%jT;W( zkgTllkdrsc*x+)|(x_lvo3bR(4ngRfR+Dg#fZISQYI$QeY6My4oc62A!5Ps!1re8I z41}bU^IPekPIq$4*`~}G$QJ4&^zW)ruYX5V!Ki05D2KH+6Bc?;TXtko!&KSBT#aaPBmD2gzBT4p{6bKACY%<^Bm~p-~@&4ulnp;Wyp^uY{)(T?4 zG2}k;PA_44%VOk-YnHfQijs8+21(`M?;a+&S4s3@kcc17f>|sB2~C7nqB&`+?QqEf7mRU`~JvAw17F6OeAn*Vk!KPB2nAik_U-4sohMs z@G<(NaB>xRC`>QQ`Mah6o;R^Cr-Wm$oKL}j3Jf<29~JGD;%vPIGcQ~kuEBWtrd{$5 zd;?X*y80m3k!O=7fvIzd_zPFT;`?5h0f{8gfs9!lPW{T#f=|U;#gtBo^TO>FAqaGy z;k;E60aZ>pk8s7XX5%EuYk%XIgVPPQU!mfN3qFyu*D-w zWh^RnRm_psu}^tYyw0C!Ud7z{tSNr#kdno<%hz{bJfcZayE-2|(DgRGcKV%hwb1a^ z8hg(ABocUgFAqo4rldkMLg}w?@WJD;oK~oyJ2*itgOK5_RFB<6J0bScItcmToo%3< z5*~a_0@HbH0EulSO%n)FjG3taQrfhT$M)dZdXYX#^ZPT(QPyoU{fOrI=lU@)nBn)^ zPsa!sVMe&jCe}4acUNVcw2I&q+^f&11~55)p%IWH5hB%sa7i6@h74GXogJTWgP3TT z_nW|U?jrnz_-AL0A~wC0PB)hw<)yscrSDsMzb|eo?Qc-g=iW7FH}?*5+i}P# z?D*hYZsb*gVEg0I8PfFcL3lU78a1)<=gDu30Nl-dexKWm$gdD@e=W) zU+djK$6iQSh#&?eQFarUfeO6^M{k$xY`bMonBR%Z+VJ0eNFtz3kN=tiJgBJU9g6Hp zRG(l!VurLP#5yK5v0)nLA-5k7uHO>FWzJHdC!=%$NI~QME(MW;)I(|Cr)w zWVXfH!@sD#-&kNIhJ8y_VbpVk3GU|CmA-dk7g`MhQ)ygq-P=#QM4N2+EKyd;40X_5 zs+z@o-gJjA3W}Qd@`lC}ZkITq-rWb}<`>i6S_8zHn}L4mV7KOVX8w#JZX#Xz zJDeN!S_Tw>;n)_+LFs;BrP7O-$vp*7YWLwv6iwE+jrOt$vts|>U$$zR2NAD-_K2j)QtpX!o+dI=E+^RAhC3l~Y8Jsc);q8G4-5*pQtf zvG&_f_!1a)N+i+3S*1;pp|vI6U7DIYV!w%$F~|Q zT>J>d#tHO=-3b&|w)=2(%&5cHxz3$I!$RAB2FipoNcx%^RuWT9y&2cY>WGWe$@+oJ zq8@#C=NT<-XFg!!3TAiw6=Bda9)I^PMcD+zsneQaV6lrmW5^bU{|P~$y*aMJen+*v zZXYV|`BW7@k%>MZ-0TFg?JQYKb55|-owm2;Y_r$Rx}|Ox^cn)M=~2Hrn}u&j^PI$a zqyF+WLP|9Odj=_Ot9M02^G+_Wk>7?8_Tuu8N>1{zJ&%aL8@~6;>tw-2N>Fa;c8dWL zREaA+k~b;2`Dg?iMv~3Gofu3abm1davHLG4FJqmmq}8z7H!ulpXqe%t9>N`?<5R{K z#CmHNhPYIFvKfStFPZaSw?c%@UzZ!?f0$nVrR+j}|9LI;#8?!x4Dfp^dsgyUZtpBN zENscmFz>9%xFF|AbrW4YY)ej(cT}(nk+O8DAISp0geEi0xI5ujR!{=3zLD4g!r`6; zL4WbCbmBQ=;rZBWB&KZVNw5!+3>F1au~+pXX`h2U>AnC1u%YPvZK3qygvK*l2n(FC zXRfMO#5BEH_52IJe6oHQYjBT1*Uy9_58o_ErR>r!bIFeEz8rVLr1FPIung%&R(P|L zc;9O?zKyy6O#_YWGX#Z91k)wFi2W&6-0ktb_0}u2N)!x#f;)HT3)g1$xG>hgTl_k_ zgPEC#m$=hd^v%?KhErl=qCQ0YDa88MB7Fmpo#WBem3?k-P+2hl)9blP=(?5LFb&X8 zK_o-dtA+la1SM`F^ZmUhWY=xMB0!1Qpg|Q2_(-J`s4`%S4})mnl{gpp>*gM7I^HMw>Nb~`@FP2 zpgjUf1S7YL!yp5`+W^XwpH{-d+QPrjfiU=Z+s#gPeQmMJAgPmFPR(d~E^5{08 zvv!pq=)*GlQ@qSp64W=$={vA>_YYZ{KpVJ53#7f$&K0l}H2%0M^r?2CGk{#))&AhD zQ8bQ%l6w%pnBPEPbuilLn4xRFS&SyBh>QuZ@OZXF3gsPk8>In72p!8w7=Zz@E;<(7?m6O%z7MLrh3wk z$XroA%u|!G)`ju~@zZ+HWp3vTL(f{wa)vu_itMW7cv5SD$?~AzV1LLckqx;+%jNw74Jk;ak>5bS6;Igru#^gD3vHW3t>WtcI|6#8Oe zqYQwKR$&A>Ek{ZJ1j+PY2}r$w#*&ojI%J`jCLtrQKN4Z#1Pl8=w#DBM5!?>?yZVdl zGy1LK3D?83UGsPaZIMyQO4C6h0HuOCZP}2GM7G_o^(HfXQxLU9Bi{&{h{uo*j1_!8 zFTNGGJ+^!^Tvg}z2G4RvTHe?9xzwXxyiqlqpH;syYh!IFJ472|DwYPWtChKfS-<=| zuALW0X^)+~_+4Ad8X3bXARk@{8q#75Z$=q2e9nD&&-!}(;;`dhBmMIv9o1I`dUN52 zz*lkBp!JNzV-6tzU6D*h(D7al<6mmw<{J*Ok0cf3B}7ExBsw(17mSM~u&uX??xRUP zc6cJtIUpn6>6@MoPU(rV$K716hU@MHi?e&Zeb%lYzW-UXN9P@9|rBtbtw?`1CN*oC_QVa zWljlYiN|XtV96q6!Hwtdg9)Zc+0shb6_B)!YaSozbrpZYS`Ge_Clf!LYK(^jiP z8r|@)vRUX(VV4WML+HvL)Ze(~=!@&Q)UB?nGp|$bz@xw8FCl(CNpK}SkJLRJmc+B- zMoT3e`Q0sIl;rkk74@a4G{D6q`n-NWEtTsJ>i@W$z{iCVV#3uz`cEH#a9u z;DH6!r3l)H9!f?ngSu1u+4xLHbFO#}7y%MzQ`R7%;`@wXQfO~&5I+q#XCKFZP2bMM z*EqZDc{Emm3Uyf_j%M$$CbWE*o9UBTbc`^HR9S^zxt+$)zRB>CJwGBd18EEaWa--C z-;SprozXcAU{f0H9uCUQ6*8VZC8=xgQX&C+XY^J-uHeDd`0(v)A#1WuBol?ra%*Pd9% zVF$A6-19t%?#rU%U7x(cZJXZf=o9H-GdAQ=f%00#5?}kR*2M`fxySWTu7km$&Me^^ zrmgkG{EnhtBE0$$EukbpF)(C5Zg0$5PpU)1*3;a?MxsCL&WT%8wbi+W1h=W<+1<*< zXl+&)BY5g3q`EF#{La|3)=#jP(~EpzA70fvG%wS8x>!b?Hp%dL8ZGS0+RWpvy)Nq{ z=}bQtE2gNbt2K==+z92cn#OZGo>Xi!K`-7Wp@TP$FL7k5imc$Fw`uvh^`~qC2T96_qESX0S0mH@(n@X2{(G!$rJjwl(EWy2oMXO=L2s{R5^N1W$fYZ z#*ok1#4_JId*Nq8sxPG6dnYOWBcj~#NFnIQO5Ni5A}J6y)%Hm=1|ea6f?FCn?*Yx3 z{qfLR$%dqzL441>5p{}gVaT|A=~uflq{U|sjGpP;-;KWWS0-s!5%2Ufbg#mTzT)>2 z1{Z}oHunLCTQ(r@50HbogZ?7Iv;DD`XwnaMBNaAH!jlbw%xAQgWzW+#BPfPVQwi%P zUgX2gRJz0~1S&B53S(tWg9b{}NqdxH61Z`wjx#PlYDMNPlQ_Tj8S5%jnEeCQK6T>q z*_3RtME;FcKdN_>K`f+EQOM3bS8p%6si7-LvMHR50F*b~42$VktrcJaS~P`X)#Ba| zQV|y+wNE`|N8`RZh_vYLGu!!m4-7gES`0*ql0e!6H}k`OsLxj(9-db&K`ov9iMxyk zNLm*6Hm)3i=L>_TLZjbyg3EV9z?;u15Dp-Bxv3qQ9d$&5(2l1Y*0cRrKBD1EiO(Yg{S*KNHctIrP;cCs6bluh=Xiapa#USZxXUS zFwZ+!Wj3ErDF$-T)rDN)P?pjFIL+kpv9_07r%DBfKtduiYb_jn9g<{CGNUU!z`_a9 zTixQdyAsl*&QcYgRPoJ~g`D61(V8)Eazd$(p101UPMT;*s{%fOeVk*>xX70sbE^0= z(>5R!eaS5hZ^TT>KHvQG@3QmV_D{Ptaip08+Ql$UpS!{7~AYB^ifwkG|(&<t;hH zcg$g<9thbCw7oces%Qx?r6&p_mNovhj>k_$qyXuP+~*kpJ3I^VM2npQsO@EFfj>qy z`V!D*z)a)a_sE}}XpQ&6zVp%+ruRqy+eK2!`p4SaTQVa*NAoXbP=d(IaiMI~GCRlg z4ERvp=yPu$8WEy#By5rjguUx)6#pnv*|V5Q)1|2CyUq#*0lt+@_Y&~EOSPxIp!QAJ zApw!upTZEB8C?3JvS5ItonxCU=zP7`_ZN&4NLitstl%JGr+RT%YmWy1TO;n!NVkgK zTVDztlfZL-fb!+9Ei9BFdTsyRd=K)eeub}w34xs zP&S!SVEevIEG43CQ)41%wjt^+i1iS>i6_8%H*5u28Ev6>=sra+{H7|wH-TCN&pUNF z_GFoOz&%r|RZhrmt-f!Ebkmf|+w{O7IU9blK;uqaC+KUi)Iz*j<;I*S1u!Wwt&Qas)J54{`MonUgEA)Czv2U|mjmvtzCO z-?^Lf@L-V4I?sUB^0TI95WO{+C?wH{8_qa!xCg$L2h8@zDwxcSB?WdvS!fISE8N0W zAEq=G!B|R;4j5ltOi3{hPwn2!+1v;@IqK{}=t(cY9zN9^$7W))_ z@lzjH&FfTPK&yu5dZ^l>n6$(+<}-!gSFUWU5>g7E9i5{RniDK{3v22(g^r$_J;FGY zO>xxc=n~jSpoy{a+09H02!}qzEUuH4vU)F)IvIi**is2zLuK;96-QX(>Nr=W zVKrrYmg}$e?=kJ-7fV=v)R2Jo)sXy&Q^2KHu`YV!aWXG1p#tK?C^z95>wE$v8EnPU zPuQ+k6;xnMeygnUqXx9Y=_7s5im>@xBfB)Q&V59~E}P*vruggjwrXYD4XYZ-j$&8D zneyKLS4&e;W(*6=;Z+jMPhH+(v~`*cSY?IUQoGoac<5W}|Hs8S{s;pwNBnHtwr!iw z*|u%lwr$(CZQHi*+BfZ&_CMHUGc(C%ehbD92vBQ3`$nFamWL7NdjCk7X3Z*`a-81s zPj(_mXEhCSj~O@uUD1!zdA8oViR|Af5#0Vf*eiHS8ndokYp#|>WdrvsKjA%blCIk; zC6D&}94Hpu(>wELR}FT3&9kt&Puw=`NU>)vv9&HFx05nE6DujG6o)`di(6cyVS!B| z-0nEJs+r@n0wK*TDmU;|Pw~76`&=f;4zC*<`A@Koh$Gy00vob#&_Ae_Qy-qL^bPMw z@6XAm?o|s{AvKn6>k6;!GW|wO@!|UiI3yp*1(-2Kp(#3c#Y6JQ0)4q#bLQ3ISN*FD z=BQ$~V-#7y6Pt0Ubc$gSohN)s8~s(e1D0|IXOKjeRKZhWg@;)@AweQCCs=AwC;W+Z zRXdxcRz5Yy$ScKtB+U3sCBSziJwHpq-T`FV6`vwono4paL&6kr=9H?*&Z9Vd_TUGa~1Vw-VW8hf5~SL4j`K z`e^U-&1*OzGL7uzs`GT3^EACWp(*zp>DK1&vZ$jX{>t_|f~NS0P>nt`QDKKBJq@oC zMmmLz>ofgd4sIXey+Hs=+@Z{2y&Dh&R^x^sa4#tisg8XbLbrc;zC?L)BZonqv)iw%?2BqW*G`Ph7pc*f=~@+_v{Xq{|Ixylq=|FBTYD^vEh; z%~thiWR&mP@-nS)hYnWRS+P@nsi&#zy_p6b1wEt|*tT*m&59wkM8?f?w9MAtZCDBl zhQ=QOo?&GYVNnkpq>8EfNnjRVnbpcuAv@-sl`faFXWdj!PIe28?Hd^}|0SDDa=P`4 z0r9Cv+**8?J>5W!=o`y34yD-GLbLL20YUbGElA@EpexFc%4ne5Q_~kY`V zgT-m1kd!Xx3jZbsJu_($!?VKu#Liy&hTWxuS=l7rFw3%}ugbpzE-Shby zsjKs%9SlWp>0!6mwYX8n`+*L2#fjpdYKref$-y&K*HTCYwgK7(?KRtLRU~L>Tv{h1O@#hNKFA(Kq zypxVqYonjdL9gc~G+$1Va>8e!l0eue z;b3($vKo^p&G69RM-Fvp2{lqkECh~kS{Dr{wOQ1toU*~U6DQGgA&E&lYSd@L0BvfQ zY8MJpL&$*8NYaTioR6RMb@&B}csS+x2B#Dj4a`;l$(gBqLhKQi+;$R&=AqFuh(0v= zg+??}sMR2VuPVN~>YFL(M}dS7yf@X`P+J$K<5OnD1z#8>Wn4{T16;n=lo_&4!HN1)8W1Rr(?&C{P{L6T@h&V;Ldt=sfbMbhV?V%1f!I^f4s|{UrwmQWAySF;luxuP z`(iF)*d+1TdND44R^T$8`znBl2`wNU5ig25t`OsYF4emrKk>Z)O@fka&|3wjH0wDz zsnJ-E@Li&<+hL7@~Naz!H;1_IPOf z{4;$SO-CHXQY?ky%y%%c9fG|&zeQcmDeCh_&u8HMFE?Se=s1(yrNmsLS}>C3P`^1R z2VIP6_?(rU*HaG7v;ang8GXYp;}vi@GHK5xe$P|a%cU<2pu*%M4c4jk zQ!T__A^26(NIHznZw0P=hOQ*OO=0qqOemC3db*SF-S|*jnC74 zdYCqaIBg*MnEMlVw>e`BtKnWc)4VCJlR1KJ{_z)$W}$=h7hbBub===9^$4Pi3N-_M z|2i(jFaP2dq-H&&4OBAYCNUL!@0qt1GLcf5a=d(JN8n`;Z9Us@s6drN$V^BHxE*#` zv4YX^X$O)wdHtjGUSxVUa+L{3z0rmW__9OcZzWcePXMQNUMxtc*OyOh7arc69RH0r z@Bk#JE@@+mNR$>RPOkqjK?hzIDF1|dtKm(!6?(RolP>XTXtI61?ZhbZdsG=pZ@k?2 z>no*fp40u62p#at{)XnK5QGr48~jj-@A#^< z6zOMoM(}#GXDi0Je-H_*%fI_{^H+WWXjTgj|2@K!3;`Vn&x%cJpx=-+ZKi_zRxAqw z388L@v$GrLbtu6fB`o~&V>aQTo;9oS*>I(h|hIaiwxTJ4(9?JONV=V+=z^o zh#k(P%0%BB{+g?J@*FnP)lVrB!Nx=TPjO#81UNgS6@R<}FL)BXvf6wlNo2 z$X;{pqX3jM;=@LtYeqwY3_OxiTY^S!hG4d8rW%*W^wLrbpE&-?1GTP(P3k=2uq22a zRf4f?uKCQdHq*T=Z`Ni)AnBq6Oi`|zbUN$uy9G8-?vgK=wBN(>-Z2ax8_GwT)0=u6 zrSUFh%v|(Ad@{hkrrqij&j!Pe>zt|1iDuB%QS!W|PRw2t$`Jj4#3seBFiUB@+y7#o z27Qp_#~~yo$e$o%t_^j4Fz35FQe$145LdYT2l;Z3QFj-BKc-D74cJ{=@5!6G4O`s4 z$0*=UlPuaJkrelKMWYd&IFqSX)lA|tNVvgeW~OUoEr<2^^SidnE)kJ zQ4&x5KQ(Qc7OeBtU$uAO*oPcv;{K8KJaJ@osw5;@?{~|PLeP?UaZTs3J8yZl=GtfP z0I&`yP>0iZp`S$?DRK?qJuTtPf+6KWv5vOdp)T zuX?W;>z=PR{n{cqF=qsd+8eCJzt@icslsRi};=5Ir*@0#o=fKDRme(iFPyqdm!w z)siNCD&>b8S&)hc@Yc+4biTSLmb!kRV^hiFkqKR!{vPajQoFZPu-E^ggD|JBi+3L-4_(V9!Nl3`yP@zB2@Eo(ll=9k$#wwW%*CAdo zf>uV+QDhDNd69#z5g|Bf&6YUnJfW2a!2i*|LYIyR5oa*Bs1xC$DPb0q~OlLdlT2-`iXQ78IJ=w;v1NHU08p-p;Rza>LT$kz_V8#GO;zDv~>^ptluq=Hs1ytG|UfSs2T_rf0!j*zu~p?|I52VT!#y z2Ydw~xeo1;{&-uqD}k_7?{{3MOtV)mRs-CeY;9|U{>g@fCg3}LdHs7K6eozul7o`A zyKM<HKD%|aA(W@?THoqIJ`Y1u=d-3Tr|{@B z)92lav4=0%>{q~g!gDt;>9<+z>gdPIyo22FGtk=VY}62oMczl>pJpAA!56CpuB4~X z%ichXEwcP-w_97J>0ggqjR1FIv$dA|s@e??mOh70(8*XjEpPJ{2Kuc0O8bE;ka~w7 z@dyTKev38GW>cnCs^77#YpS~qR_$dyzAeB)Bn04UZ0%a>A%7niL|T)!Z_qjdH25U# z98BmER~vG2CX>K3kEZDE8Qv8aQ$v? z52(fVLLAPIn7( zA;I$$jc+@>P1tOzc}A#4?enL~)bY$Gv_`na9(tSmk7G!Jx`JPnT*xAAm0!9tV>pTy z;DUPg9698#Fch(|jEVC`Lt*NJ5Ma%=UJ@PCMno$Q^)00_&N9bM=i-mK< zUSk^{nUt$;)waMc<>z8N2Z;oq>XR#8WOJEWx+ZgSx*cOTrt)accO+zL19q(!WJs}1 zEBH>eqnQ*%|K5>UH$__{_V3q1E7}90qo}^y7Dk3laGVpeOv~4~u}av_R8SzJGZr4O zZZjTZ>^i9CMHt<)grQ~xWv7hfA}4#tms10FP_H729%SV**eg${$ze0)2d(gtGdGlq z;3@ruF=lOIlUsMLq*swDG z+b-ZGQtUIMQ1BzyN9X%Dx9Z4|>xO5XlSz5eOcC>586Yv*nWEGn8|1y#amy3rn#5xX z-#leDmTbXpALmthEs9FPpA1V)1H-VcN=DmBp~kd;7&?Tk%dE*G{0hEKsXV+tn8Ds( zM~4kn+q){r>JkR=7i_(GkWfjDG%%!pEI@oqP=wr*C&l*#8&@n!?w3yL83|BHI~J2E z(GYHw*HjK-aF{cjBa1qkA^{g0Db#-m3zlG$bcdI<9`e{?OSrX01Wjic);*fH`=3JI zQ#Uhv4hc%gcEFfi!ahx;6-P&Gy<|JDL8f*=Y@pHicXHlROG6@9c}SENr;wdP*N@47 z#bT+_LH)Z;CS;8dWnC$9(|h@+_)nt3PE{XKK{-&*z6$h6l4u@}{m!?I#0_p>l7q9u8@OiXWPfg4B6y|x za>u&_bY)}i!PAta81j<%5w^fpJ8DRQ+OWo?(Si!DAl1G6TfF{UarKyGZeOc9hlP(l zur|X$LunKTkGnk&TKKK&tDw8%DkC zJTHyQ6;rN9xx)BLvyc@2WmQ=FqE=eU3zplv!nw5a+kN*!uYyfmy-wZBF*U9dfGkN4 zf7K;S6ytR)4eLZNP6C`^EfLRakx?$+2GtAu;x%~Ga%zs8AqUKRVp*34<{}!#W5u_g z{7Zv}qWlaS6<7yKJLIH$Z=qPj`#~h=HXED$3_3V`Xmc_N5Mp$*15H3jI&~)J-IkuT z8t8Bi6X8JnfBS*55j2|BaFZ0)RN|Es<7izB7&lkKSB#)1xf{KpXz++|hcR_;ujcym zz;QN}!@P+Dw9>N>3@8W}6@h3F4~ z;?sR7ci^}Et~0%%+`FWW$M&w-EmnWRdZWVi)KmLZ_J;~+b~v1Ta34SW3cvC^VIn8- ztgM*FEa_8{g(V#2yXW{K)@+die-Ztv!LH!^g$+<@w;M;PiB(7z(Ww^*_D%qg*anP) zl{kxmyxGvO#7wFWyFi`Q=|^KP@&U&yFPmJy&V<$^nT57z`It_T+azmMei=23@DP@B zGa@+M?2`7G5{vA4`1H|7?kvq6n+(nu8f-?@p?JDJgYnJDZ#~SWf8<0HvKa3NP4egI zLmbisC^F0*^poIhm#+)O?0W%2U6zu*tyB^V+x|~^5kJ7Jxo2rQgOa`q5Zrz$)Z1CD z>BPe&pQqajSHv?myVe_DiZpN0|J1hnL$`N{w9&=XPSq~;P@;S z(65b~qyN9t^7*&#-g~^)4l7=4ibW}bzm}Ux-zMeAO0A)~B7^u=37e1!F}h8GEeo6$ z6Y>sZowVkO?mp;gdWAh?qhlgd`cia8j}xS|-z?DyfFLNeei}pOXw{um#P~KNXC|{YEz_5;&qBDX_8J5 z)!@Huq{%ISNSiuxcEMvKjRw6~(a2{X_Ayt9P8OEQh{NDfx8@K5g|z;^35PuYEhWRKli@V{jgLE9msqaXGR3!CYml6IXI}m0 z6Pe;`=se@bu9H>>$Xv9I;%erCEw6Oy)j_!w5U?dP2ZVHcu!nB1=0ppJS_av$hHj%RMWiZI)HX^rW@^-A0cZh>zs$vQ?}yA-`IcloU2K~FMt(#nts zSpsmSEQ=uP1$O4?)O$bhcap8%(Frwi3htTs*T5U;JW+rqv*brc`<3Z^wQrfV5<!_wZ7RhucasT|nySP3l=U`SdG=p-2G>WR zOQ_wAH19=L8c}&||3vJ~8=GOlbku~S(r{j^vy~|-WCkmlAa@Wwd_#c)X;ssUG};sf z2RtbW;-@*A!CuU?2)+dDeajObf0Yu>k=Jdg+8#1eN`YH36d?6*xCu)mt+wn~R=ar% zt8Y2;Wx9MAo_Q=OSnZAcgI>Qpv;%*Xv}6c2n>T_216F2#x^ZEW-cIN2U~PB?T2E%~ zo2{W)-NbW)wH`Js-6XNsD?oxk8s;O`%l`f{CPXY64|W+!x69 zkQzSGu*34&<0+g4-*&EE*Dkv|VJZrssM{cV3fBld0r!{XWNn-ZE&r!*W+whWw`S;F z;o;A@`l2<}B=*L>v#ZGjot9JBYZW|$Tv$zZbUrT8BxGli;+;-wa1J^XQpkZ4) z4%;}e2p*12OSFK`(Na4#O6M9^duJxWfyWM~JT-Mrq8^oqNBZteOP*r--4OBCcy#`N z-qkq$@YY=v%5^ue@ko-OkM6?XiD>z@?S!VD;fEkjL|2Ls7d=2g<6k+SuEcUorZA@U zN;3#)hAgor#_7h>(hkX?Z}4qO5*+$)+S?J?#*pt02(cA!NzX?Jze z4nHwq{!n*y_(VN?Tv_@z5E8Cs8ynCtoX7XB_k0fP3Qg+j>jlBXsZX8U!#qy+a(*Q= zIw0>l&AHuJB=zTaX}LsF0%eY9G!xBWi*Rq}P;ps8o?x-Sk- zVU?OzjKc7G_*0ib$`^eBP@j|t&*cW_T3Ss_WIPC0BIrrbc!8Xzql;_iJa%0Btb35? zr`k&q@3@x#&RV6e>Rzrin_8CFj+TcVjYFX>{HYEfS~cRDWHa0y>KDH2y9h(@N!1hd z;3c>~KS?8XZ`l|FeMrK~b4Jg^rCnYp)RLsq>#aE;kWv*y{ZDtmcglr0h)~mmXep5D zU)+_;jhXBK6=ON5v4X5!y&#{w97n+iK_;iY2&GY&C7Rn+f1OsC`*aS3x;k4u2_7(% zOyx=>y!7}ztGGA(O9(tKi|`20uw*fQyVleTYn!00LdQ@&HQuZQ@mQ!xql6A?C0Lhz z%|~3?HW|ri{!oC!M@E7$D2zFRE^c(G30fQl>R?M|?C$C%U-bi*z(_dM-DfPTeGz72 z5R>zSe;A~2xb?o^X5UHRA$m?{NSu)O2L=hMSy+@607S2<3Ic-z5nf2P5$!$4#LmXJ z_Ur`Dp+fZPqIyE9Zo%?z7`(zX=gtON8i|t>3pG;yy(G@r7LnEdqnz04V?(yV{Qkb1 zizxpfowB(7t=4euRVc^)z}J5X%&oQNQ?h~c)kD$Lb_{H{xKAKWQ#xH=XC|=0m|qNo zX+7|Fski}zPqgqBR!aX+AKLacZpnBwENc%m+8 zcK$hfdjP2LOc76hnDW1HfJ6r~2Qo+8JtvKy|I=9#%e&s#avP(u!Gc??C9Wyw)y3C3 z8|zhF&R|H)jH7~ETx;0X9L{Uq&%eOP**j}6dyAbYrTj30jFV4!tPl9^3#3~UgzJ%}BHX+Dp!H>@CQ)ZFp8@bUKmN*a0(Vs%t-FLw!;-2gUA)Ki4e zin6iME-5Epw0EMIWe+op+f~LOes1aSRyBfnesiFb5`|1&{Heoc^0$!jI9SgwwEiCnqbpVbKt5eE=(%mGcEQc~l++cSljKmt!cN9OhvlP0`& z^W;>NOa9z_ZjT4CsTVZoE>C{<4Hzs#+cHwfxP7U0qHTXja zh)f@0)mSMnL|=%&#Uq{zqe_4XQ7KRfFW^$pDClue@BaSAakLsyDq(E$ z9m>MhPhYRD82U+@QI9vmse);#lFGIy^GrYu3XD6i*L>Hy7=#P(SDS(ayuQ0-5~Fb4 z)_P*l++UH@-0ttK6FeNSSa+E-a*wbu?7r_NP?w-?_9ltFD6Yg_EMdjD;I1MdAlGRX zraykv=ea_niAND&6ZU~^w5COy3kZjuyc}Z9fDJbHV7!Y-CDnWr2m2>D@F}NOA_Ld> z*rM^Qc{RDQ2CKCtlAB%Ixb_+Tm=i5)f5n)QUcD_{KTvpPzsP0BJy$zp5#j zy*seZJ~rP1qBYx5NNEc^FO}~jh)MsIWaF2q?Ie&~&>{#Ir%=6elch47HI3)fw*6J8 zxss*-v)%6pL*6)LO;qe;>L{2dUWUl7x|s-{_Dc>1*!X%k{z5fRM_eCZ_&qY+;#z^D zy3FfP@_~UnX;-5RrlCs->y!CiPkymNp;Pdh{*ahEXcH=n{mAiqjMAXaV)zgBx2kF* zOBLv(UdryLBJg8<5JvsAQe7bv+bKm=6>xPb=m*pEy*zVo6QJWb(lZ7X80e|Jajt2$ z;XddV4^rp-VbIMQnQj)V@#DsdR%*Z}i$^l2Xf@2$$G>y)-(?<9?b>3B>B+LPDdq%6$8l|Hsr@?R0QF2C8xK4|K zw6P21bxVIR+kjFV_`!|#_yqPw?%P0<29lOEDuqLIf)G&1yNihS3|1!$7y}6G$?$lR zwPdHrKe);}B%_UZTGllssQON(e;56Lz9q(Tnb>F0PngrnFkob)OG30f3lqK^_> zf`ba-i&J41%}#&<3s+QqBv_!nIU_0NP|9_=Ojzvgj7Mq7UQ>g{Is_rAId?a;K*zxu zI&E$(gZLh1VnYJ!o84R67F~`g|TE3ZVkC!A+Y0 zs*-ycm{o`ywy~_w9e_PLk7z0#2E7!Q(P~6m%0TACpkUvtP=!PlOy`l_H_v-q=nBXjwb)gX zMF!GEGr*`;I$TDAw5SZhV-yNGGfbj1MX9q6nSkpiS-#I%C-+TAsR({tT;e`HE0@jl z)~CYdnGob0^yg$6vCatm;!a! zf$4qjnz%g`8n5}QI{YG`oN{YueqCL?PTAG|Z~y<(1G1&EOxt0tn7Zb0ndtM^kBuu-SxgYA6s~#E0jI zs*jh^Y-iQSMS#7K+tLna#>aZ?bHX;x#0_TTU;bShjF$>>1`IC z*MvNETFK6I`K#fsYvzv2pi}$5wsQX(SS`PJbW^9o-)NETA7lHxAfLwCApo5?at3GV zXXB9Y{quS|**7KcWh}j+2#j?v1Z;#PF`FhjGlJ5DFz_i{P>9@DNyxh55F#n4!$&YU zq0!1hoH%Uw**!{iMNDxJ6cY}x8Hp4F5l#V2yvs@f-MH20Vx9kg`fV3 zyRvM2UI~7iGLeMsJY(Rz0B5U`csF6~y2MG+sn%Fytj=Yv#PdcxX^m|DXX9K-dGNYv z4F1q+4=c&eaY$euajYAxFa}Uw~TQfep$LV~ocF?vET01YH*( zuY0_CR&b)z{(~R+IA;AWsph|^cJ3Js21YA%Gx2?}8CUWZ@Jv$ml1{Eq{&e&!E-b7z zZ(J0K6##qwBsjxnw^^gb3DSjGRFkn@Qsy-#*4Q()iVjlb!?=}~l zjx)tJT%+srh;85)p?4R$l;?3Mq_>RP^lN)l{CKq{Q@ia`iQ0{1ZJxMwIn<92wDpSU zc@Z-Rm_5g<=G-Lbr@ee30g1b+62<8C7dUcH@EnUE0$NA5udNZSA0z3?TToG{8(m3x z-%1Sd2;AY#hZ2@RZ{j*;y`U)CyD!jkd4RO$c;BNdi&vDXL^Z^2#~d?4(eHt;mJ4We zhFo>j#g9BYgu~|ti4}c4#@XrAku|#`rS^`}MWgcCVa&nyHJcwDI!b8@gN#B;IACR0 zo_K|N8eB2ajk?A`5IAHx2RwWVYdqPhTXw9+(%#{c5QM#}B4a03$8kV#D&?j;NhKxI zJ-yV(#YX(`eY8ThsVvMRubps0>n$^b!;FZv_v-ffIQ|+PvsAG(VOx;U)Wp!<<&tex zVp8VxbpY~wS%f0Q_{A9la^ym`M^cQ+vQvN_-UOcG`9jVI5!k;Iq+|O!!yYRk68MpM z0n?_zZ?V!m^^aE-MMv~To@wa_@mkZ=xx=Q3&}!ilqQt9tZDGZpAsh&t9NM@&_t_QTxJ=bw6!gL zacks~AOI~8Hq-GJIj>}@ZfGYgjGILjW zk9>Dy1W%V7%?E~)9(YLxZ>3NcVI5Nccj(5)vfK+K$oKnzjq|sIvz8~n-gE}g1ic!v za7>l~l+Q^WHh{BN|CI&l%BKmZzU`w#M9=v*G}F#p$el>?%ObhYcn!FW4DLYoxqlKP zyFl}JN|_87eVv*+?U+8wqftKwczs&9jK-fQSv2@>|JoT{dzDt;_$LabWi$`0<6C8IRdm=jGQ9^R&`Uq{5?jfB0qo3$8E2cDvsxxeni6T zYj8qT@v>N9_NmMez(P8UHAI0h&{jZz(w(CRUWl#q!e4k&A1nu9GFI?sVBqFMw}XNz5=Oj zW+mLH)yyezkv8wifNa~_oFH6(d8!#1P4JlsUGdowA>eJnooiaLu?^{8Q!&NUDxUI{ zLXPs-k=A&EoeXVzRP8m*U&z?&j-psa`4MQ|m?1qpk}xB;lOIMfu;MG69*G{vl`H6# zbc^Rl(rBV5gBsl1qjE!X`1qKtyr%X1ap0Xdh{rtpdyk=-yj8BLE(l|oayn2%>n`l@ zYY_W%kds!4n3+Vpuq@%6R48r)Rq=5i8YNf#)PG)l2pW-xKcvHdj&85sr5{CQY`XWc zA1$FT0|j&sc~|%hTG>Y*&r0YZ@)iaL1bv_|?&A$nH*t_7RtHG_MMX66H7zRgNOT0u z`V>iDP{EZ-!7g9*(1WhazEl$Kk#R%M|H)*T6}4w{pNGVJbW9)D_7;iWq8M4~>-M2j zgT-??`oq>wtUzg68iyfd*!i22Q?0#mZdLO~xO}6Dsjh2^{V}5!L_#MLnYdKgC*gc0 z7EltcqhwnhQQ?#%@ZH4(*_5;2e1^;dEE?cl$mIg{KrriHg+3{kJ&boOqK8{f=)mE< zZmfpVe;U;<0NS>nZb=?+$QWP%aobnftjoi^$_NO&KygFV6bf_UY)^|Gv0VZv%EG zzU0Y@!+w_7k9MRv(KZB=Qr^j_HJWlT@oF~op239Tii0 zi2}d_*2S7aGMG2R&D8HZkT`yZEBlBPB(R^O`8M*Ps~V zmoA=;elD+P-y5P8MhqdEH^gZhLoL|H3q^{M-@cd!%~|EyZ@YXAI1~z?q;vwj`8*zq z^&TIOC&|0sy37KL`w=X`K?i!r`w&EtUzImsd^zsR9;;MSL7!Q0@w!60coCR4B~DzQ zBZ*-8^37J#b8mJtLfYv+U@<4XCzH-92|}BQYl2hkGPS;T|Jiz~>*+3aPN?&X$!>VY zZ?M7#dXqt?(KR7Eo5+doZ*;$^_Utw}5u^|=ZBKk0(VrcPQw16;GceP&YeVM&w?-NZ zp>8wBU$Xdd&+4Y47XTt~0*GtGQZi@_NgwrSd7*`3K}>tnTna0A6bbtJl}lBgRj-~5 zwIE1sVE~;U8O0UYL;%4CcqqK0MC0y$y)ji5$?HLiBVD9yZ z-l*}VwC#EH5Jl-XITubt*6SHg+ZK;Gg~2X-77SIroS!9DieN9&$cdw^ilP=Lpj=jp%g8(6qIa&W*h zsu9~ZZ>wLB<0>&eVeClA@wZPzCkhdPQ_uYvtu*X!(^7SFAWyQcovKk8oO{OXI6(pF zB2Pn0pcw5IKViu@MEPbVo4}j6X~%zs2wu-1T_)8v$Wsm-f+Etu(1V}YeizI%T_hyU zZQvI|=k|ggsBW)uo8kO};X663eCXJj#;QU?=fHZwk$^+n<=oz@D?o0+J`j_GyxakR zc?9DtVtFoy0Jy`;K<@DM%W0$FPCTptAKN7@-Lgtj$eFF1zqJrm^k=Ac{=MwR##DtG zx7_QL^;U)rEBE`0?5-Xa5tbF@ao470S2f2^+_HN=0S#d-V`#r2upyoLSA&#a4Q>$iiK;+_#)K;D!Y$^hyD4F?*z@ot{mODeAl~> zS-UFFURE6XR1<6_s(1L-#XzFi;)#c zYZvWgnyi28l~QCZFRlA9!PRy}adC|*A^1jYEF{V@qRDfqTi2xJMOy$@g(Yk`(b8*XC6Y^GXasF*aX_H- zx^6pAOh)eQ7|c)L8W`G5hbL`1v%$YWV$G4f*B$BWEwv4(#-x4k&;^jp`#{rGQ8aq-}fXIQY!|=$@-paW>wE zK9m7A|2RK=G7{b6afx%acQK^y1WE`dPN0>OV+%(o=b!w>`Reh zMKhStxJ`_Ddh_kV7pRw%13cWBmR|Q$qZNi6&9klF<{7f3yPw$`{owitA!e?88pE3M zd5iC%gWIo(#5J&G@naFO_5ymbfb$qLU9JRjsycvKTh%Wdb-w`dxzhONP+ts7K+JkJ zbU5iRRGm{7sb{&#y+b{j-S0Z%1eV6^Xm;{9$Zp z5{P@XMHh|)i1$M9js|1c#HQK@bPYtxh6}Z7vW#1wVJ0jwsxJ1`zxSgv0+qfKUR)Xb z4K&oN8>gG*Oo>)vyEbN%+zv-;`G)2M+r}$~EBRRO*`(9bWfB;!lS@4Jr|!Tvrfr;2Ndep{va1 z;_v8@22GT*l!EHzeM=)NrnmFZpuQ?fjh1zZ7@r$D4Q}3w8OWm#C6V#rej>aem}ADb zv)bT3ZtuS+Ka}s{Bf88HB1&*JFogP+udt(6fg$Ixa)yS7-_<=L4ec0&Ce1Fyo!^Jf z5W46H@vc!8=sHJ*97M}b`MU#bi*HFwaZjUbBl}v~bbz?v2xt;4IgYbRNE%NoeqYXZ z4a^5O@9OLPY3Kp1t8j+Cw*)&0cc1?f&nJPF>}2<`hlgH= z>Ip5xDQvBFYLgUg`+ovRM`YsPK?XCyU-RmOmzr5VELqQ?$AxY?Pf6bpUHA%k+6(V^~; zWO^W;YA#EDq{PPtPqpX_HT_hjfv|VtkdcmO%j>S8L-&XN>B{Fj7lbU>Zp99i_IWQb z7ysSu`sO!jX)T)1tZ*Vd8|h4``|>~sf+#FtZzR2GwUHv|KPRr&XoygW#1 z$!C}M%=Je0@w3itd=MVVBP8+$vZ9P@!18eYzO3*&5{CDu?En!3jAlp_Kl6YoRmb3y zG0k`nfd<=RNiozNz)ajatayF<-aL0rc5Nf@yPFb_92Zn70WIOh&T&_tRQqW#jcK+9 z6Rhw3%JCIR{j3~;3c82O?lnMLQN6)*uU|N&%}7(~`w$9&++6xDDe}6yCgXvG#T`lncA!ng}A*^kh-Ry;fths*7eId7SII0<+GqRVS) z5`{0X%kbRh-R|9$CF;hOPk8x1`#=e}ZZess95um;ljogGe;mV`T;ttsn+;{Ea4Mnk z0=O>omsKTF!h>o5(5?-TOf< zj7q&D?}R`F9A4-MvVq;Y8|y82ZxEm$lt8z4d!U^xDAI(011!(ym!ibFOM94Y{DBPC zLtA!qI@rk9t20NpY8b8RZu_Ds$Nbe-ovtIIg|t)@gq(16ep-hr*%F%MB92o&c{euc zVKDwu<2HH+tq$FjehaoL5pEsILT8gUU@IVyQ#s&|Ny zJK%XGxw%m;1nl$IxxlGf+FQsMg$d(VNyp(NE|45@87AY`(c?rP$GkY4DT{3pj!^CiH>pgehxoGU*ipbt39M)lp>Xk zd*f0QXbB&KhZAq2O7T;^^zQWTc$V6g0oGOLud_|&T(R5LPAkR?mzI@(%fsWTJ>ZDX zGd^@xfR>rV(Nt~od%AC>^bEGWHv5~+cT)7EWto8BA3v~wFv^P1kph(B*bK98y7rK= zL?#m#s1jz*Iq2kqM7sC;>D#Ct&=7Gi2{tOidI?*;R2I4tQ17mklzw*+pqD@mA-hG(O~6Z>LhkYr(tlId82! zK>-mvq04x7_vw;53>XH0@*hqIlbkSK7+rKfdCkgj`dWB5JZ{gY!BDL<r?fH~%o zcuUFMYz3Gq?>n>>^$!!0C58~PoY}PE*+AFR7}mwrSkcS?1tANsW!W86CyC_{o;nFc z&~+m9n(%x?-8?XTfRHOlHi#ZD!V@~QmKc3+7w6rH&R7Xc6^JunMa227(($s8-{J!# ztjLF(kC+B)U`zP?>xTliFph;Kn$DKWk#L7F>!FGOqO9y7=L3lZ|mdwwBrnJiIR;x10DqEI20aaS8cgImWVu@#C; zIL&H)b#bX2(0GH!!2Kf%gZ%}rx&G@hVlKs?+_NA3eWb_VqqqL^SMu@PQ&obZDaT#~ z9gRp6}N<98zp zw=?8H1*S4^Rs~Q~{iw|_8Y33eEgh!q_{d)eK(l@%b~-!0N14=I)HV9k=Q{fo#MP-v zJ7Vo8a4Zen@CPh5HJ(ty$BrG`as!iEyHb*6525BE%t+`_^#t-5d1+GBUmv{1=x)sU zCD7(Ct4h1?pGqpKk=V-h*+JmJY%5~3`>)!(se}xwP6ha6VJTgJn!uUjm)-obI3QXlZj>}D*P@l+BO!PSdVKe-cY`a19Ca`(+gA7ot=@GcL{wb9wi zTo9Xd9s3*lpV{t8Z|C_Nnf$q!ogny09>C>)qSmtWeWM|X4pr3%1)&|a3ICOiy3|Sypq$U}} zqiXO~a$cyA1pkW$t)BF6GgD*8W`Ojyy{>f)+v(-#Gb`ZKg$uE3n6V*%;pDsRX%R(> z2~<0&M-hSI8Fj=wotM}P0_8L5R0w+~7nf2Fl_ht$C~yVa68MqZGr@rg=%35C6c})sZAq#$9)YG@mUnQd#{)Vi=z7Y zg1EEjY#i1ABFVAnhb%wve|%Mv!PGwTUV7n_@G9eiK+{#67n_(bsWMY`BIXYBa&GC3 zd6~-8q>8ut-6iULjW><7s^reX}*d6TN_`E-NbE?R5v#U?e(~(ibKwH*nI|3Yo z$Q@d}sr*I%TCR=tgrz6@hG+Ngv~_ZJ>y3w5H^+^|(N7)kuKp4-_inR>xTG zu9PY|G@{Ql(F%0S^D33(?I*Je5c`+YWxc^<=vQDpl$WZ~q*T|tHS{GgO8=Ju<6?Mo zxwNGhg$`RGPY2FVq_v*~SXs1vPZI0L6iJMfI{FT~;bsWZn?!-!HO(-i*=FT2_>Bk7 z87%Zlg=}(xkI0T1XMcW-OYqTgvN|q`V41%9s_GS@N?97$h(lkmVJ#Z zXn4P;;JD#Y4v2QoE%I%(ZwA&e(g(io@3q`Nbf0RAH{7m zvTcA>xfHO~ozT9r`Y)sLna$`S0yDXv`1RAfC^0}(;EbtCEKeupf-xBDU*<_SF3h3z zU_LHlME$QltG+5-Hs|@7J1=(gE0hvxgBO`>v4pLVjLl>w1m_wUtk5+zX^1Vp)#X~_ zkZi?>yEhd&SCfD#oT4D1^n1WfdXL*3bf69+7En`W!6uL}aV;U3+?M`Y9h~(~hz^%C z5V%?C%Jil^A~q8Yi+ncg&6mXw2b1;Qg#k}~?KLNjv}Mj}y~g#pI7Agb1ZWp&oY%#4 z6p7ln$#t-uF>6{Rox4tVoMr|1L1>s3Oa#n0!KbACoCKzdZ~H7w3s3$T2Z^hRtkthKG=*E&qYABbMxo zA7nM(#XXS4ciT0}g^woWsBoP9$0c~Zuc$29w@I90A41g9OB`!F0T75KP=GIA8TEfb zaXXoBAtcSFL;FgQ7sEo}G&0mNzb>EMn9Vc@H5khkISWdZ^2q0qeAqiP((y1W;uv>4 z<$RRywVRFxAuIcYSNQm$PLzSu(AT&gj!7Xdr<6G~ZP4OTrQ8tV zw^2xryr3UHk^(5Ni(A6dWy~TGsmu$G~RN)Y(8O0jBUy?vF`-$_+%y{*5h+$K_752HeYDY{Ck<- zuAJVQziz#CciPl^>E4tN`Q}LTsw?ye-*k9a&CHY zp%NyY;zP6KsXF};NqHWO_T0f1{uVK{k0m|JoLscH>L*MzfkP@X$S(}lnAgxd!?>Q( z#OZ)w#+y@@#a5Via+~p<-D4K76Q+N=oNLA@wY9rM>zZwDQk)ajF zFz@D$$T82a7y4*KR8pFs*hJ0DQaR@J+9O1s!g($W@O6bbkHg01I+1(ibp zpL~#&HmbAl^#$RKjUGw{>T85}!A*G?C}72ezs7oVQplsz(>H z%Q}XyD(N$`4^UqNLv)&vg8A>od+Wk$O)T|G3LSSzk?j3?>VY#^5bc0*{$7dax6me0 z$GghhWT2);P6~7nX!d*nOcR2gG0~89UF^me31|@`o*W#@zIY zvLPc>UE!;A`3znT}?E?x9s;b{qnJTIKC~IZy`bEg! z^LK@o{RF1xCqEo7gPeFzz?Fw3>L#NeUaZr~wG`tdCMw4Aus^aJhn@&lf<)Tl@yd)a zt+yyr^Z8cZ57}9&!88kRvk=S`KiQ?C!elfNAIIF8RCc!wPm90ifi#D6jC}(5E{oYrTJ2~2 z{oLJvAUv75FxzJ@{m#y2_#zuq|Kw+#Za-@Q?kKWEpDi374z1W>dlXdvo(po>`V5Pe z^fc2mX>vfs-c*QT#4f12#32}+I1u*fFWD+oB}LE+(IoJ>y8Nsb)!=+2yugw3DP7H~ zaZ_!=;PFBzYE(3A+zmWUFy=*G+Q{q$)iUEUj?l}|C@d%U2*HAk26@K^ab|k;OcBzp zJ}!6eE7rz9unHgo%?};QfYD`cc$_KBuvuF+#MBCe9wWaR=x>6B!Ap+9bvm}k)@T3A zZs@j=pCtVAD$Bbk*O;V07D-==l#9y%iquxOVC$`b6svwo+(EkB2DJ3dkFB)p~kCSWLqH_Nsp2 z+Rqb!bkJ89=%{&_1JCZ*c-jir` zVtvpd3xkd)s2XQUV14+yVhrU!2cGq({wYZay&{V6;*^>uIu3l>_lSm)cMebJzMNm3 zTYTc@2G%7%wm=0u*Pf?OqZkt>xgHgGSZah8ARz`=_3nZC+HnzK?OFWEaR;;0%+Gdr zw5VqaUX9xYe*A~>NHmCbdB-0F*_pe2%SPw==rZNYsKD!!+UGy*Pm*@zJ9CcJtHDQT zLNiQ{$zxrPk4?&krTCT&clFX*>sw8<$v}RY!zw9^`;j@O@2U22sSx*RT$xo#=b~?P zh%}p8w=i7#elyfhv}VN4`8*{!!qGjf6^x)W|GhF-6Vrgn`gx25xzj)T_DN3Z>$vZF zs077S9L8GfKEztD3>zzj{P=3NMvnC!sri?MPdf;^(^is)Jl5u)zO5Qt9dO_dOeSDGK%%tKt#v~)fZ(5}dh!0rbc}*S`^h*b*sX*E{Kc%9w zQkJuCneT)WvxihG7Y>FIj8I5b=Z~;vu7H6oWWaK%}4*C32a3Cq}HD zwC=Vz9Tmz#OA2LfWOHOl59obZ9alGc+(XISMaKWo~D5Xfq%%3NK7$ZfA68ATu;IG&mq2ARr(LFGgu> zbY*fNFGg%(bY(CrfRPFC4}=kh6d-Kx@Y~7K+`0-DadUGMaC3I0b8_XQ`=^t#sVTt4!W3X;X=4fy zmRHb}loJO~h|8%0#7*r?oeXUN3a&;rmc{@XOJh?zXH!amnY|Oh=06R9vAvy%<-a&N z)BT%(otvqX%Rj`-oa}7@vZ5-2V)Ak-08wFj6=8s(oe4lj;-BtzF3w#4piPZkT>dpX z8i33HST=_LV;TLA^*>Q3kN;S7FpP`<6H8+kfRU-Wr5z0YzjTwdGqVS<{l{(M>hRyt zKZKnB;Rm4jM?*@0iK*E?XjdB>IYV1h0EMu3`hnrvF(RSyK~B zSKI$|H~mMGe^%AR-p=Ot{~Ph2sr-99dSwMwc_nq~|4D*>hehp-?M*E0%mK73nPGoiPPu*&^2~-ax%4Z`M2o*%;mrBeuO-Bl=DxMt?}`O)4dHq>U}{*l#&Te{5%(?`8|#4zR8uTjxfiukj%B<^ z;*8M-<(&iIh&%CXi%)jql)B`|nOfh!Ob@7Q5a%pH3U7?~U-#ER!t#Ume%+E{>01<5 z1UMXpY2_b08FnI_R-@hFG6%oLyEbZ*fhW_z&|FoNwRkMzS0!nmc2sd~At=cpW?%mq zSHDtovq2bv{Y0-2q1PkT=Y}!A(FBO4S2+|Er5T<#*sf*OKQ?adn&G4ljO!#xb%Ee^No1T-pfOD{A&A)$fy&28>phjfj)R?#VH_qAGnhVcVca(V& z3#**EIVd1yCH3{x`~P=4|vH$W}VJ%LQL#8M6|Wh=Mz8t zb%fUGa&hODh?zQk_3)#MlWOlVHt+gbxn#MVGMhR!dwA)gH2-Z-jPz|?1#V(55*>2) z`HCmK2#oc)9|=>2Zn|xbm%ROG_Z~(_`J&*!t3`%d2^WW;8oAmR5g}zegtF9AeNn;M ze5SJUJyG`h2NQkSyO*%f&v(T)y_sCJjEI0RW+~~?2a2URX!^Z=tmO6xK3}j1 z!&$#;N`L;zK;+!DXC)85=_|MTW4Bm4XMmK2Rm9=&z{B;ZKXE({XRUqSM1J6Ii%dn} zG>1BFD@W7F5nQ?s#6%fSQ-nA0Fn^wfw3&5-OC8$5U}e+6m-xV`Qf7v?2;ZyDUcQed z80d?}VLKixA*-j#S>$cWW_(v@=km@&|CLW9N3SPrZ+q#oL%dAn1L4?vOyB`}G7;~6 z+bzgqEGn)z)uEG^vh0P*<-Mc}@YI{?zXTV~|V%=$RAsZKfc4**UQHz#Wu?9UKwYqjsMQz0X^b1vXpVo&UozmS$z6MEvFY zqh#nxa$U}54^8alDc~ar*==Zt^vm0-UF!u8hY75V7o2BhW;l|f-Bp=huR`##1Zme- z-z%<Od`N&MqScdgjS{cj}Xy(ZLVByP$LE_0LAzv45cd z@nPA<3rhSAIUaS%=IX*v(Nwu~KhX_+c%$2KK`HO`?ZZ+pU9maJV2E@1^Oi60Zn0Vc zgx)L5XoJ`nM=h1N@kCZFb{1oAAhC@%r{@bAqf%!yGO;tF+`Hod9WM1ogE!;wj3>sp zj&SZt%JK!PA`s>N-^Em$l}+v|4u{4$DF*t$k)4e!xpC76INwK&oakTNx?|@8su3K^ zbE53+&K4qs55Zjg`Tbl>OiK|zl4~9{p=8JMMF89LbT=0VNB+|ho*nUcqv5A((?luWt zf7q$nhGEZhzx$5~}7}b7P5%B?Hdi2-l19_G1 zdqiXIf*-FSb5~fhC$p&?!O~snaQl@u5nJ)Z+v)YDHjZmK#HLF=%oS+B+k*=f`xQ}+ zb{CP+O29DLhu3Cf zqe>ojHCMMC(5C+A#gj(Di*e_tu0n{HI4n|E)iTmOtbrVI-@4 zw1WrUy@^`FxP4!Yy<+M|@{fvn^RiQ~B83PxZN;c*5<|7bIw)Vh>EOb9s%teNJCz|I zWE=BpIdAQ8G~FOM5Y?yk)grn}h4XZ0f?Obcgynbp_!wrOiU?5$jwP%qXdC1SQZ1_Z zE7%XvA3}w!JnXADt3lc|qEnszJzuS$1ASFWV#6H{_+Hr1vZWrPS_4UCHx;14<*Uz zADfO1ll=BSvF*TinKj^NcB@?bY0i;hdgKfPv?tW;6jG|*hPfV90gmMI#+0Ik6zOz+ zr$j6`OCl~TC$VjAe>x|ZgwAmTkI2lJDY-wViX*C0$eIq4vBX{CtGu}Or>Pm$y--E< zhzvlea5>Ni6IH`?7uk2{eUryuY|D$Mq=X>Lcj)imDlZBzb_KESB*~xo1P_5n_t|8E z#Vp?L1$T!ss?q2Rs7waMII3~sGQv4wray+R=nR#Ej5&rb5oeU7v^DXOj}}|82;Gaf zEV~RGwS~W29{;TAq4n51Wmsm*v*#Jh3=2zUTHCze`(mg!N{nw13{XGb^cgU-c~Ec z{S%dEkx!{n1WxSTN!||CvrI25omm7ahHllP*V}rR?10kb^F$)hnB6HNQK_j{Lv6$i zTC)N?PsHin2dVMBa?S8zHYs{?*QBFEhGKNtr%|A33a6griVzJ`0))_tU#N#Y*kRRL z-_2g?V6Bh`L8hYb=NvXbDp(~=FlS@IGF>^RWj&i}Sgm25dCjst@NQI&nJ>g6uqy{T zYrM#$@)N!~BsfcgT6)=Rl0?AEA)0Pw;OlnDtjf?lX?$vO_NG-aIX(J1dO=_M&#wDT z%ZRE(^KMh@7d4~XV{1)ua&wd{7Y;3K;B>B6Os`k_I)yQxk(=aan$ z6Bql<7I+i%i&Li<;uJR;<~LcTnsC`&LO#S&vNXTl(pSCyP(u{+$xzZ$kmHMT;u-&L zj!2k2JD^PYxLlDzGAI|?`A%5t-6v*^7}|y|mNq4BeM@wZqI~1YEgvQx^K2Gb(4KDU zH1fvcc=$x7qspF?b05Y}5?R|0{~UAsvJv@%Pgxr6T@NUQ00G^(m)sM?GvOFF@9CbC zxZgoM(%ASU+rs*Gj^O z4U(W-pc)X%dXx?=nqE4Ok;%Y|Nbrj%SSRzS^NtKc(lP1S$PYvs{&FobX`P4Yw~q2v z9_Ty{&GPe;W5W;+c$*AJ!9XBlIMKa>OHkap;oVmg2gnyBi~qvqyYVPY48C^e)`&An zJFjD{?;+^lM3c|hroXs8$464iy6Z3;>!nYUOoN;1tftp*1l|^G#(7-vKYeAB`{-@1 z%2<&exlU(?#1Wcf<8X`}5DF(hziqeXIQkyigm9aBLP+xD8yuQjpAlmfLl9pM5B-`p z_R)6>0`^e1k=Te*)co1-9CLpMS&f?>l7k&AQXa7{%Cocs(p(5-ZE2-!N)^wNu892b7p;M_m%OiY8 z6^^o#N2Tqsm7%}O$hx{0qO16D-xi)(8To|d^wwn)5*A~*jSgIkO)6U|xY#D-=3 z(!eEqQ7kVi`cft34Rs#6?d%7z?5tIXMfff7M>C$A0c5O521ZYCa*|eApqC0uxZN~o zbrs-4tMNQ4=>i@jP(NnPpbIak;iB@uD0~LjBbb_+pU6ivH63z!w&yx7XiO@rOh%$L zlN3tQ!V|^M9xOh#-^D5ahkRg85~I}3J|^| zME|#fkEy?j1Cs%P1AhE)4CKWcc?EtMtkc01N#ACQffL>D*s+o_BdKNhH*Mr=3kPa; z4u8NKXb`|}smfuj8~An(keRY-Vt$Uy`?7BVGL z*=Yv`MQ^BZ#N^|065w>lR)mJtO)`qeLf|ZW>6x!AZpzYMaSaq14=rBxZQ`OcYaog5 z?q_Jeo!_jOKX}b^N5X8HI2Hebx~a|>=$ZyyXVBpGFo7B@AIn=25-n)~Z+Rp;`{krq zJE8*3ucHcK^w80CS1Q{^^+#ffa%DoL77gJ8Lps>Q&p2Z!E;>mFt$ZN0f<}%Kvjr1_ z6}xClQvjEW0{RA}Tgq@iyf;Dwh`L<$sG-e7}tN`0Hahj;WOyWo~QDjQLZ-5N(ejXPm*qH|!JYt3G^Cu5k3w3*kNJa<1)9Shw z4DCR|hg5n>i>b)jTbbCIWPn5e0S#nr~PhDLA*=jPA|+xPL~q}17klV3K=kG;s^ zN>A&GN14AUW_bJSQ;FGnd=_21cSNH%PY~NBphP!nr9Y2yOa$(}ZS~sszPwnRYGU0L z*!bshiT$NBqlDwbpBHcCSN4nf2l9ssGH1p(Jxy@C4Nf|VF z3T=^_w)Kv%1giF`eROxd{Cs|<@(MNK^qQ*jTvr^>5F+fa6f%4%GDL6ta;BB@Wv-2- zQj?F`73l@qQ&lR$9PyYWMuxCz(Z7X7iMlBp(NnrIQI*@AoAS|QGw+!Y`(|yYEw1eJ zJ4D_4yr@7cX|5FgcBzt%>1)Z)vO?u~Zzk-db2pgdqgu4MXD#=^V+b&)i!m>^6z{o# zrVir|FR9yoHBBusB(fwKT}9OtPjpAnm#4TTJ8~pjh@1K?<54>;d3@i~mvDKY7B6&h z`k<3P&P~&t^>YPJRvSi=csY}|*t1T2G{ytiAr-a1_Hlu)VSJy7X6mU5K>1HD&-6DSM~Ts=~&lCt${YURKanne)VXx>WRHa`m*EFRGqc0L0Rqd7vQJqsF_=zpA$%-O^(^KGZiZ28a$a#Q@P+st)Y9Av zc_4|m#JlY-2KeuVrn2E0HA7=Bl#bp;S76jU)V$%BDAo`fi6GV;^kjcAbN|JjiM1oW zyyf%&sE{{+wWO&N&IiX8)@u%o3-p`95orx~S(;J}(@op46K4J4T~+w?D+A>0cbmF9 zrxw-Ba;VPR`l0ikoGdUi@*;x#kV3;f zH@spH(KhO)-f+xdWI{(TqaB2LEw_$Z2rFo~sTP6Yh8(KhlZnz~`E>QCNN*ZX%)&W| z7^+}Naih$bX~hwZ=W8)05|cKg6MV;_Ze1P*Ze{4kJWjT+=WVi(89We%)Jv3{SE@5= z{4&;Z6Ijju?P;sN2x4iK-T&RE){c`sFQt+I&Mp=`EKcF&0aLt(!+O2JZV0(EF9uO8 z6RsnYM>^r?+jN*(pF>enfQ_M!H!lb+!$q=ufFjI_I-DBo-s(&EO7}~=TQ`v}z;NeH zawvQp`%5-{_4Ziwlh_YAfJSVj?sd9bNj<%K`3?OIjZ={bDq>ON?VvY_6!F_)CoDr7 z)m2_q=oCKnjLXN`^8)hHcy&zE$9O`*T+PedZu2{{AdsXXu`f)oMv2I@v+8$d0gnBu zPb>+|!e$h0bcK_sD$8_4)G~!!|2?DRWQ67OnOMeraDI9Y4>bOP zlh+9gFfNwzEQ~JQUdlOco9e^j>scAQ)HihlGBQiw&oUBsadJA8orV|uu2m~hr;iC( z+tB!ATnd2{C3=9{Suif?N?*;!f76d9F9tT{Pq?!wT_zD<1~DEY-Bi2toZ~&Ifmdeh z*V{7t*B}veh-|#05lti(ke!W7zaKL@k2G9)j=^C-^o&nV~ND=f}(<=!&90_V9$NF+*E zGdDgbOi8qFPv0Jlx>oF2_BR-CdUZlNt+f8~M1`e25wHh!htWgQgWQ^J(M9$j=bP^5 zHv3{skOQU$mZcf{pt@PN9@$e~Ft=Kjd9>r7+vF0y;z6g$N?BwgTwdIZhcEbD##$%D zXxUu=GIw9Nk7`vkG4nwiuLQ%wM;C?YilNylaib7FPNxnNB`F+{!hK&jF#9m?*EG5l z7*F#+B(Us`ecZk|*xvd0KDg=7X#Eq7HlN&9e9}IU*s@zOP*$%G*BfY%1{KQ-i){&o zdk+xxda$Y_3A}9u+%&E`!gkgS>Iy9W4kSUbf~YsdDL;7jV{(~)&>oTd`z$AO*kwUC z84le-V0V^Q&adYWW+7bp4txt$&9e3=*O?xK(QM0Cl$+A=nx|H~Rxp$L3--C(lEjvLbfOzq04>oT(SGfq9uKwDs(w93v*~!8=6;1xyrxtdanotU zZ6|2Ex^^b?pL+vE_qlYu8GKG_^dS<$!E?muTwG)@-QLHY*!l(i2d5+o|;p+2`z6mOz&fCwja_mdW9r445D_Ae*I~iORJ&)R6 z2%(=n&rSCh&4CU1kiBp<4z0{_$B5{~1PWRLL-{r|sifV?ERyPK@O!p+;R2*`+q)9X zEzNO}iI1Kt7Z3cTZ7th*OGHwB(zvK;V63w_TQj(!lX8k zYSflq<(qcBf*Q?s*Mr^KGK0`;t2U0v!Ju!3Vsw%`s)7W1-;yA_dn^3O161GGD)BB~ zel~0Z1hwR2w?o&?iIUd+36$?tcsI#RNE(_*)$K01PiWG2>!tHGO6`tGZSpETe-AzZ zas(mGV_V6vL-7v03&Yva7co^57gW^5CGo>mES+>7)!gWT9hm7y7SYaZ6H4z_7J%3S`o#5sggFfeLjnfoI z;@w9Ja5AdTG{G^G8Nw7g^fM-FM2xygDE!1^0pn?|pVN!UyC$&l697<(#)!>|exU95Lj7u4|f3U2;rg`hCf39h&=PxJMy^iGY z_*8F5`oG!_?kqP46>oAgs)Zvw(xB!mE;LTU#FFy%|8$pk|GTWJkk5Sr*T_RdQj-T! zX31}LWRDt3Dm8(_S^gQgP~^;YefU7@%sra(8jXVh>^JegEA_+s<^)1R;E<}!yzpge zOIgLI+GG{4ikPL!NO&sXpoB~T3md7~K&=AF{_3A)8|f2u#y&BSU4{2OX(C#fOtF2s zLyBU6!?6VehFENuVU35Y#^lO2;2OU8JQmTWbazFqPi%7smg!K^2R7iF(R z;ro10y9Ty$?u35LDzvv?p-d%&v+?-!2KKDPp$LdjtD4v?Y2T^+Tum^tXbYmZXx4VX%tbrNiK58HPpKu(c9#U3}nY#9#YAA2jL=-4u zj_oddH&N}#*MQuZ;gU5{DZa~)(L#xfiBZ~~s_;XprXUg&W{{d(;NJF!%=VBSAp`!_@ckF1NYL_UY ze5JkMTPkg{eNUXXcJWXKq=<~=+@J^Ume+JGmR6h|5(lsvDBPp`!2Bz%Y}R?F>1ex!rrFP%$4<>_wZ!l$rTLgnPak^ypurw%JYf54 z2Cx`}2O0&k!Q)Z9i~wN$%wBxoV&VAUL=XrddVp=7fz|;Z0#>aN^Mv=YYqzlcSD&d9 z+q=s@Ra(SBUkW>0k`ie+L%X{9^9I-BBbVl2ZMgLi31=%cQ++MR_mseJGOFN1gu1%{ zIB_b|@G#E6?meRy>OnFqC+JZ-Y7&ohG(uXG?k}bkKZ2HnyjE(03!vl@9VdG323qXa z+CB3JnTc*@x>XfI+jDTp1$3|k%3Dl)+rl#!#0m97rKwy#u{Myl8?zD_<-_zc+raUH z&dXW9EQ>8dwFuuLGkcYBPuSFeG#*CcTUhj(&eNT%>q0?w2ot4WoZ7YiPd3B921Q40K;vebJ z2MkdYR6ipEhh~IH%9RB&Vc5iAz{JuFDdFR|EPH7@@ev^il1NJ5Ux&Qk4~G$Z6rh|8 zKr;;~5_7AAk``C#6V|Njm-F5{4|$98407EiOLPzW!_JlkqJing_2qjT8u$nMxJ3!m zb%Vd6PUSvI)aM@v%adXzo6;JcvbDP}T9LZ7{y?OdZ4|_twcyg<{C%?M+UG6Qx+1nA zI8T+0fhY|_TFs;xa-c2hoWWj5^k!W3yGYNR z%}cL3qbF8tON&Gad`TO;s&c619b1X!8%-Om29e7kY)xtk&euGWaSz>IZP%uBx^Hk9 zp(AHtAGL{(yuGqy^~n0!3>Ikvp;1aW=?N4}z6ohesP2Ai=Hc3gKlZZ#X7H48%)18z zLwF+V&1D!)E?kBFK*6BnS7j?%=(A!(Cb59n>-ftxBq)p= zv=CaFE@CVb~4eYPb=jGLHk%+`klD&8>jaQ5(I#efm%(>^uxD#}&`e z*Km!i_mZe8(V3KJ6gDO8Th^q6_Vmv<1dev&bUmy$1seLfX=E$HaLxH7M6`k|#-r+g zW09qO*q+*A65z44#};nXc>*=$$Y5M)z#v;5CJsc@Z5B%66^;B#B$>gr@05}LSFv{pzD z6us2=Fi(&r9G%mrk}qN~ggZs^(SzaYRq2a7{?J$>0mfk9DO zD?6tpliVTi*iYOXk5WKB!9C^xi!?;H2!|Rr7HDC3?4jAE zVjaELe8^UwWB74qLb??SF#>|ZqJn@rN46jnaeGtTsgn^#lvv~nM1IG-yFO= z&HPohreyeA41w~p{P3ows=~NB4L^F)<+@JSj%E8i*Fy(8ii`n89ODz!Tcv9CZ_#^s ztH&-<_x$JiZ(|ug_O21nrayIKcU1e1r#&jb(NBL)N({wJZM2L~`M!lSP}|&+haO7> zWxBy`u=ITvY?&5FUck(1CPLmP6U$A(kiNtr>Le5AFC5KWS>ji_b!1>01mH^=lkL>} z!H7-Nqt~TQ4r#^F!oDviBt&_OJSgwwOBEVQ&2^1e*4qL( zq@p7+#vTH^?%0m}S*a3NFo8~3(ef$O)=bru7c-{ByNEx?;s2V~NH*pabvfl*fsT_w zz)$n=*v^z6IS*}VQ5J$(BY50qikABf5*-?KU{@*>UdNtJ9Ua%*ikA<)Jow9%!g!Ie zy<%7Z7CU*i*Ay@l;g{phc5HYL;)=~mHfh91OIs(ox6KU_h`08!vs`8cVmQW5s=X4q z*2nYBHCx6TA+#S&84-nOjXTf;azkbE>FLUc(`$U*zp)_JVPYc$XTpO(hh?(}MnNub!XLQkyzb zF=>(dSn_$G*2WEZw0H}65?CzDnNox7?5t=`DLD`9ASqr=Ken`bu4EbUJt&;56mOT| zD)LHaG&V-sN~f2v(>j_Ep(+A3YJg&bIrrHXWZeT-QFVfXu^6P8>U}$fzTV|-jMwL= z@vL1sH1e{5wM8>S26IKhCSnUP^oNcs|7NKNaI>Yu>Rw6(sOEdiGm=qidq|sn1uvqv z`nQ2zL?Kh7G8fr3O2w+4*2Fgs2{5-~oZu-YsyS26UoZub(8)PDxaNKxDMTBJtdMoy zKc2d83I%`hcOBK({flr3>t1(0T#)GQ-$P)%JU3gI$kak;Ka^>rFVs+;IH=y(((8WGvIm*acmuqE$MPI{?>>DTw(feu+X5w zEoxChX85)QNgO4!EW6IqwRhTr_UR4QSz)RAG;O3IRX033m@#l_#NUIyt{mTUg6p@Y zzI7(ykt!EKBExWuF(Kcgi$8`ViaL7Vg#NC%D>4E9Nh{XM5X1On_3|A)dmK&2GKtmP z=)d5pu1F(-JwlneCOJ+x)X;Ewfp>%WDQ6|i1_voW^>Dy0SbqC(8Zgaix4lO|A2w%e zntK>7!U@V?^rnD)$(!LfF>Lh3Go2M48{gQC_^VNiU{MRr^9pNaXq71Xem+~cU2GQj zc+J7wVv{GoaclrPyLzCZX_?VEw`?j4ODW4(L$GFwo!3v^*aOy_G^rpVf66c-u*m1+ zMagPsyX=UylanE;F@-H3m9PD_JbKoAV-PE~TQ}}brXA4hDZXcN8J7X-pO4&)s~!K& zh9`*6hYOk#S;(ZP9Gw#r#KI-TT6fr^=G%L1m+)&@JqBV*>&)O4{4fX;d>H1J&eD2G zSO{+E@c8g+-f)pPI3kgKEV~vw9VCoiB!>Z>(GrPGKAK)dcic9p*+zKGX8iWVV(?c8%8 ze=#LYG2CFhUQw+?eo@6@7GwZ7+3%0C!VXkm1Sz){%gEn(LmwP_<;?=dpN&;6^JZhCoHC$l_CMH zUugy@xvz^aniPbizx_&N&p#4+;^u#c*)~!rt9`#kH|=NF!1(08sD(K+*S9mf$q{LT zWZF1orl`jqhIY-73e4{A1);W(d+#LrFAqLrgeJ8oll94Nh>~q4zdl8|Oi9*e4s9>1 zaINbh&Y0R2A-lQ8bC7ZRc{u&=Nh@_?rAVxbBvv5tON&Ul4O;I{-_puIMLP{M=uu7F z;AA5hVN!!9qgx=c)u20M)1WOw@OySw0zm|T-$Lhx&OuOYMJAJa!I zMHY@>9BW7We^+EN`M^r4ogvAFm8$%2ng1YCzh&~?q4B{Ftci|@!&9s)l1qh$%k~!D z6*(RooGlJ6i%B>$?51R2N-JMPO&(_VP&?%I!;eli)gPTdw*-j(BikX zA3@O~^q8wN0pYZLFLuR3L3SJ20jesWeq>Pbz-v|u5Bt)Yb(D*67>f z+Unn7(DPgY&v!5;^|#_w+pKfX;bfov)3(MtV*AYrOYF-+ILIfvzo=OaWy9lvb1@LA zJ9omM1bKh!9zePO@WTXdgz(d74FY^_d3@(=6Nut<8Mqw{cBtY<5STM7r7;EZ`@mVi z@hY`NY-NF1YtOc~DbQb$>z)FHeR9ub9;r%WxDx?F!kje)b1Qt82`xS)$*6nvg`N=4 zM>~KKQ}n}1Re|)NW{TtFfRBxe8gW?4U~MfvSN15}Ow27XgMnvmjq@WLhW6Wy)`#Zy zj)tkd19y;7ymo%u(AHW!!I%=6hC8t<71ZFerei^E6I`XDY1Y=>kOhqJ<4|0BO|8$Z4h2%L* zBe2g`nf&`UGtu4@I(V2Vaz;AQKyGugZP#gjNT5)=ov=z3uI-U%kT0_2GOIrr4!b?W znwTXwB1h4j_V}}^0(@Gk;uATjKWQ4`az*j)b@4XKBm^v7UX{BbEO=5KO&*Jx`#mF; z_}x;Nl($Vs2@}h?7w~5)IQK8d7oH-q$FFA8#f_oNhOBm0TcF5|HRnis@(dmzfP#WFt*0#5SZ zgXh}7ejZSHvsotsJ@UX^>rF_j9HL=ShHW_~d;{b`g2yPUq~?-O9!>2YE+zS|SgJ+( z9mQ7_Vs0Hy^5urhb>{(`G9maf4(b;OCXpRsILo_#v^<|Hf+OD}GeqXg=7>i#y(T0! zp!C6Pg>30oou=wr5#2eV)NHTD|3*xlW9eLDn=P?=J$lDO=oH ztEn1zL1F7Yp~*3oswh_R3aDjdQ8JI)M}8;&?r-_+kjZ*y6Ed9G#c+?&$q%>jqjIv+ z7%8RFvakjq`jmbp>usyOLK*mmi5gmHuSKJ~Cb2CiVW;FYyswrc&%KbvBZ0O8<8|DG z=X%K+&ouf~dfKXg(PY5bN3(6x|04eMOu-pDZp76vcYlF!I*7sCb7*FQbp5Q0Ir`g* znc2L~?1GGl&e~VoPDTsEKIIq0fGMkY;OsRi$f#+zSfF-Lz8PE&{BI`U$!iWs=W6ar zj&Oun4MdSnl~Cfc5&O*_99rzNh%H?obnPl&>}B!;LU06TmxXZV63qqsClzS4dJd#u zk&Em9`wLY7&vk9$EgUj(!-)XJ>(8I<+t!)3oqHjSYldc`P_|#>U_c$7_2b0>L)Izl zf1Z|T{+4f})KBrb;LMs{KE^3dlmd4~|D;-g{#w1rBcc=ern8E|SF6Cc5qnhYEA(dF zh>sPefY34$^ir<{=fpP(Zr+L`?j|JDOH42|iTDpWH${@?WQbI_R!=%Sp)t%j|JP4APx@7Q;OoR6H#0 zx|HA5X>_4eqZCvI-H={cl^*r{O~5ztDeRw*`lhaJ`(-V{-8VCYQV#Dkf2|zBJ8URK z8%2??er7QzZ6|SE3s3^iQzg@5oJ*Wp6Y(|0`@Giq2_bhVO88`(tHII0O}%HLSym21 zbns4Fh58%RzZz>Q0xQ91L}bEDCHoWelVVOsC+5tt?O_^-x2H|5!1x1sUs37@^uVEo zCrS@{uo<%J@8aw7_8?RnTrF0Urmx{jRjrK6b1Puq_h*386UD)>Z$n4=C!gCkAz5=0rD9GY3*(VQM?w+#*LaG0e!DTq zsr-Z=w&^F&PH~&_KZycPdYGb0B1uiYWaay|6P%T{JH+AiX!Qe|lGLA?hcdROdZ7N1 zKy%D}{5*xp#g7{pEbyt7f@qM>gQx7)UU$ZXPasw`L(-MVTtpGnN~ktNMB7}oG1wf< zGIB|C^JD;(dlpuvQ)#W({g`?h_5-rv9<3}^4?^KCZr9z#*-s`2bPOWf$F5gwf@e&+ zPFUaBZKiOP9Xt_A!xvU6#jbql?Z&P!(9flv$E^%J+_TNFma6&2_bl#5&w$ZDM!O(O z8gUDll4Zhl5|^isDzlWcXT@tzV%WER?z+b`B*uQ0*_LFEGFHyM7Kx=+K6UtGA}9ZN z0oggMa5qUEiUryV_2~%7Z9z!<>Tsy+QM>Wv7e>~9$gPa5Y|-N zHRh2R3oJA!rNITRa%1+S7d!~|&Kz>rWl|A8qG4M7pRtBd7kJJkVT{}5$zgQLpK*0fa);?_^`;bF8+hP` z#M#-gH$0O0*TS3KrNIbfJgZW6DaF(UZ4|B8^||u4!BP>jl-)yX)I39`q%rHsx8`bF zRyJ_|WtioUdzlHc?Y-pE` zIcA;s77Jxp;6`q8{U^MKFHlZmYhr65Bd-ZPNx@x*K|OzujVo% z${gr@Owtkq>8vUOufGw>vvRRCwvQKNz@!-UNli%(z@X|&`8n0)dk(fhFR1YGyb+wT z?9%m1M@7D!#rrp%-amSSyzn;$?5K_^H`3!2Izxrm$aeoWirJtWEcn9W8pWYjCRt#sb?-~cyJs{OR5&|B*WTxfNSC3?hQhBk z2ksEY%oOnel}2hrFB$YPATle5CG#B@X?QA+Gu~ya`Vp}9*NFDUUt==pL5*X?o&@*{)J?Du+Et4Ec1Ft1a?ojGV4E@D5m&KVAsZ`IvMUgimvVzE=JGa=rzYGBJ~SR{(D%>ONP$#7 zkZtbXGix=yR{X^ulwW{;ukSGBL7q#l+ZC7Z02i&hT=KfX-z@Hj!gJ%Az%=ZT z0JFS?Yn06F(|FaPuUu_ucYZ;XG<={+fD_VlOJ?faxvHrV#U=jpkz?o&_`f$l{u=qS z7<}i#Jbj@PvuPJGmDwwOQ5BM*UnUkhvfN{Hl5J5oTU ziE(Azl(Y+s8Dz#>cR;*jXqeRY{mzJ3oJZEw-Wq+mg|Q%J$-?4Le_l3gW43|x`FO!_ z((|nDf#-7g`7L=4C5Qc{(os=(iP^+L86AN5h5keGePUi5+&J9cG88+7Q4`b3W6W*)(-+$>zBM-G?Cka+5BWkadri?y^!8=f7xtfK4S zdJ;{N@r*A|KSR zgIAnFPdTDL2RB`>^m=Ae?=eJ+x3t9C7OL8LlDg>vN!A` zo6_{eH*Q?kEDe2y(L85Tz%=gmCKA2wk^a;Yc{i*n(>{_@ud@XN5Um@a`zmKp<$^AF zlzDaA9(m##=#QjU7#a4(2W3vow#rL0*v9 z6E-yyL!JYL6)Q|D3A&F!^8SH~y!Ig(_NgtQR;=!fU2MGyk92_=(|n$v+({aH2NB1) zkf-WPj}XoWxTBgRCg&maPX-=%_}gH5cBaiGi|}Xv0E~Srg$_Ll-(@OYoNh<^JI3(W z>{xX0ci}wl2`Jw>B>iGIl|3`(kCt<47T#OnYYLYnWG39W)b@o(|G3%yKEdy}?qrOg zKP3noxy^-f$1=v|>4{8Zj_i_|cflF1%PrCv>8uYIS)%n)h7FMP?^gG;iiBBRq>(iw zYQtYd2ZdJ+*@WJ>IqU9kw5(L-2@NmlD>n^=d^$u|(UdI%`tg_xy=HRMBv+y!&N^53Dd>hffy> zr(pqJtXMOgFL{vOdhdJ4oxGAi>RM~+sFJdX1H?s!cN<{-3JMjcSK?3OJL-mt3rIny ze5n(4=#y6n5L-**P6xM9M~b@ixk>YMPVcdRqp3Y5aJ$gz)r zpAtWoD^Ma%Hm9=WGaQ$>a7jvf{TwnHS_`mA?LR(8Eb?5{@s)f|hJ{mV^9xBiQnQFM z0Aktvi~cK06m?-p`zjz9X-N_0h}%khFR`3Eno?;MMetaJjqH>4oySI!NcZ)CHxCdr#YrV8JQD z{xnxEv|$Vjvedh?Wc33hY+mlVP);R2*l7*ox84bopKgieu$6D#z4iOT!l)k!9+x{? zvf2`b!&*ETPxS(WlcDnzHr<@L#LqplGQMLAGX&b9^Ro!oe7dy$}H^pwb8JA3K zi)sZ<3GFLFtt`LZcXmo{7h9!f>VBvneEAu#@55h3(o?r@T*d*U*?nX11jk@Ggn@fi zfeQMHY)ijPw318W{GORfzR5MsbU>`I*{nJRdbDE-R;=HgrE7tDt|_056xl~_ktaS= z=?PY!!M4f>CHD9T6<2LcR4Mkh#^{6cyYM^Pa#?_}%3RubcHwS3xqU`S{wWQ$otnQL zkoc1bVG|spA~dnGP}TQ~zdZ9w>kcf+cXKiut7DBt`EoycpkMCHg>{nCJynP#bN%-t z3+aRc;THa+iUXX-O5=1-b4M0{eZ;mnqlB)@XTNXVZ+*E{kdDXsqjNP~CyMoxqE$fH zLrvzh!-RRAy1aUI=vqycwH7d&_aiEvDxxxRZGjJ=5|mT-s>}d)B*r}!+p>l=n_hm( z?pyHEYWJE8Xo>RWhhxORjvjnbm1os{>_|$JP*N%;{l?iei%3X`1~MwNx#c zW-}1{+=T-Ong2pDY6BE!I~c;gD>-Lyh8 z&L7MzQK?(;=P!4hLW8^WM2 zw1QJYXxYkk%=N)w81YPvdv{H13;HFl=Mlj@^9!nb(q=z$e_YAYJjorR`voF~$c_v2%ojXm^L$KlTfc^J}l z#xl&CFfYF$u>h`%1_Cd;A%PEXRT&3XcAov60LBV>XYGqeymvZb>S7Nj9cOEyZUUI>In%uRxoR9H(Na?+I{Qa*E68P`+=8gwJa0 z>}vGO9xw=p(JEW@nX?5l^mQ?@C;}>zfv}O6iiu|`d-f~ws*8KxcY4F z9%{V_vV(A{!O|XHooa7I%*u_%2Y$rpUWa2x)IL6e_# zqIW{;T5MQWvQs?7)Ewv?2xhqu8=1T9t5LL1YngsuX#;!s0OPj8$kr-VPvMZ@mTada;PeUx1H#~K3F>~kAJN1rs!hX z#*SB+UlC=4kuZ5=v_MbwjR{0}>~&(0i}6=A;=v+`av*4JRR>8+mX~)1-fjA?YH_F$ zCLT>4bE6L>2?4>KM*sxU_2?710?zjAhDZR7RH+2XM_{+(`Vv}_vUGP7+a<7a+;qEt zhN6T-5Wnp-nG=3Wvx%vFxvdLes{cto`Qx(X^jyz-jZQEW8;rH0H|KAZrIt9AQIp{I z#??Hdu6sp<2vN(`fX(@CHnH({Q1mNJ9gQ++UDqnnZ5wv^dTEFG*0qU3$k7>?%#ud< zG=^@fsEA+}hnV&*u^c+vH>v>xt-vn%CmFWSs3@pW4-=$~dR-2X^>)3E#Zo`UdM?16_%%1b8t>QVf6OhBv81fj*-Je4L;G%1tLdw@1eTla z7h#c|j0rWP6k_>7iVi9C%WBzS#T?enlUUm4a9K*iM<5nme^i0EA;(z*;PBt^$syvlj1w{ z?~GHY9KVbp8xXcNvp18(FHlKg)*fy8JHpkp1!$~sc&NznNYPBX62X}c&8Q-7ybS!Q zFwY8|IU|$&CNr68U9MTq2q&U6qA*+zG?}`$yQTMH;ca-=56Si7Z1Sux#JMRS&~1Ld6z=#`sRx8 z3ti#(?nJTmE^r(<{VWcRDVLXu{g2G`WI0nW5!0lCO(*1!XS|Eg@uDif{RC|R?#ta3 zBbf+lE$>@ro|~=^PNJ@B%nmYiM>nc9jK+oQO$v3w7)yAb?slUXif$&ZS>Du!*x8P z%IZuQ%)vT2btAz>MECkIiIFrZMdeX%K1`Jcv$MXK5Gb!joF13Z5f&5&)icX3lAC>D zZ2_x=U6^ip6LCFu3*55JJ>)k6wiMh}@VPi+rND-A2yuvGjpk5?KHcyuYzM~30UqvO z%~?Y@h;ca><8`o7ST1Rs+o31Xx}#Vlc+S&h!XeH7qf@hE>G)8SLVs^{oB=(Pk}`7=+YAPEcE0H%iS;8jVbdPy zH)2hnso=g9%Yr~csB!$ORwOpr%W8w%X#030D9)30cVsd&FOumn7_>HVpyyAE&l|Ga z+{*sW7%!g~`KT;S$L9*!PW4OGg$~0y2Jc8c_{Ths*-DFZ@hhM79F7iu68P8~e*!ZWoOk4BL1Xmf9lXS@tH^ogo7Q;#NK5{LJ5I za=jaC?REqzG2@eI5vu*^T zi68{(60(5PMbb5oFRRuk>#_GO>>&oV7|((Iq~ty{T3w_O1g!cHG67`%1#~^WCD6s< zzi9HHKWV56^5Mh{g{|hOMH(Db9KJT3kSoanoz7{OoXTz7x<-ddj7E$3#B>xLWVKI@ zFmj_D+|AzR3BxyIRzM2$$bZXJ$amrcvdF}+$>SMqCzJev(b+{I|N1puKS2L-6_#J3 zfWdHIxoB@?A0xOY!9r~ffnzUQo>3G^T)P^9g02Ca7W~vQUT;IcR?Vdlh8xwyANJWl z6UHSq{UJnSM_WP8mv|CIVzy7&d_jeiedPH|`tP zctZ;SLITmee?dg5>}j1LQ_YpN?bVZLJIbJ!Ro|M<TGDQe~D3w$;5p;v581Y6dZT$g1VUImW1#_eF_dxMwh2q%5^8C}LxE^Lk3=K=60 z9wa^sge(l=D}W5^M)||MN*!ce;j2rg`kcV2h~B>Lt@@F9>Q?8DkwKKc=rJ*j|)-b8%qo!!?G$JGPcN1H9A zdIwR7S~Z%F!0J7hh`Yh=wk|$CY;uirtXj=3_TUlClq+An{k}W~rf9RRe#42-!S-{Z z;y9-IPP7$=Hsf+mSZvtm-uS)wsCLG+;MjcT_W+bHQlr!rF4uPbdin4(i=7K{D)^gp zM~9pISiJ=BxK^y5WjCzk9CaJK8~>l7g{VWaZWnlAfm{ZjNl;x3R1;aF)iDo=n0w_+ z_%?BcK0TOrY|Fsp0DWe^V- z2LX3D=urk6!uY$81(DRYO%+^ze&64Ra-q(7?QyRfwWJu5g(5EVdMkT!YsA*5?q%;Ncci$w#JQ7qBtO#5i;B4WVSq?XCyRjEtXF z4Ey zbQY5?;)Eo83wm~YTY<8HlfA?Ga`rkV5zE1@z1O=FB!`wFL|sAV9~-~9j&*7t8^H|TO|Vc_+*u)jUvhbDcLhkvl#X}Uq*9vulR4*bbO6t z!M_$>>wc#zySVTV8R!Rf1PLaAE9)RV#~pK%irYOgY}gi3*B^;46laJ!G`>WAOW+k> z`8gD;B$T#p%=D?$z6!Iyzdr~xK@2aQq1a@C0amm9R}AM7=DN2?)5l^G6j81vV5r5ge0W9zLt5Gq~H+N#a5EYnqSpjlf{XOifCtQd^LTyh-b3hdbDY_5*xP9N|m9P!R@n;j{g*S z#V|BAV^^9IVf+y?UN-r4oKZylg~zLskHF>%`~rG?V#TvftlpWLj41A=4inRs@7uVVOa0 zE#mQeVeEUl>SZ7SX>Nlq^qt*|fz6Vro6_s7Ypl`JjR!Et2(F?Rwi;4Gg%7O1QpJKC)QS1`^bXJo z+1Qp~3xZEdW?OfpmG;Smx&gmhoVRi0y(T3tiriy1APG#;N-9v?Ec(~u*HJbnPhBmy#CutefMUZ6faZ2%af`Wywiqa0gI`cZ1+DQ$PX-%ykKy z(4KXn&11aK>@dnyGUZ|+DPfMMrOzjwn;eyeR~nbXNoWtD)gd7nxh#uV05#vim|0LE z!$tFNY%X|@IS3?zIM(U`) z@iv;)U;@vHnaJwWSez!D<=QZs1teB77a9v?dW0%Cii%Z6f8Gzw(~2r& z$B0memfHY)YOFkc@7i~u|1?#9+*0UN~m^$86UBe00B1ZVOUf4i0S18@@)hDdmEuTiF zw=Uji$;Bia(>?K=yeUgcJr*U$lNaAz>{lnf|Hw8g&+M#(S2b}~Vd^l_@ik*rfW=8Yi6T^YX zbLnBi(VYknmpj*kg&_@lYfWAl13B~KA7mt6p3EN zs|=ffZoV*YlxfTlwt~gvR6vpU-#7M7=x)h1yNcF;j3)=|LMpV&DM~)$O*-h`H(cYT zu&tiKR3Ka!f|}e7)JxS{P+O*WnNjX2;Z@<>SWr&dVf5z|XJu{;La1Rh22HQOgE%>Z z`QsqodSmuK(ZBVHjZd(U1En0a!O7J-Mx++@Im9Vy?h@KHSOW}QM!Ae0ZT^=gNup|Z z2^9*+(W(vy;&~Vej#1&L)?%*c)4N|ClMQu2%RhBr#Y$sU1^i4qQa4b1~L1>Q7bnxAx^(hrNa zW6uE9j(VCM_MQ53g%yhL>S3+* zJfunw__yrL{4wNy=C1W5<#bcIe&CUboZek-+f;;=zbn}3_HG2S^dllM7O zbCJgaXu@kU9TcFsna-yVTTcF&R7VzeJ4x-`Gw=XdWOeLl>a2S6hhE!S6p85Y&$@EI z3Bna4`q<%kI zvL75niA9Uvo;-Kl!f1lF1@#fr0HPq?BI=$YdYFd@{MbkK^=M=IwK)?yrxftD$ zTTCOI+L`2j=&ykV=eKaXH3K3FPJ7ome=?rHIOC@nvjWgMtz+EeKM9MZbfgfZj_C@f zqCl<eOYX6Gyji%9Ra*J<%YGBw40nBm*Bhi_p1C5#fLG#J6 z=i#RQp{v(b9Z|K`b*(J86h-T=)zjLV+^%Om<^;gI#gmG03u#QPiTHSTq_$SJlbfRW zh*9&SJoWv){rl>dsIDYMBVpTE)1X4Gt8SA zfDiALa0t6mhM8ZE+%C%v_1RMvoz$1x47cv*fHMnjM<)o#(m>kycySEod&;hCW{~N- z>E~Liw0W!ppo&iY4ls3?1dSa0E8A~*Et zv8ItHxferk zKw_O()vZ<0;ghkH9FZzWdhXj~`&nYva(KewrxixD_m0SvRt@cLtAq(om~1m{0JN&2L2w<({H}N|lpvS!|q@ z5x7q@W%wZ1OwDm^JkHOK%caMxJ;=k~joQ|2g+8#8BE2gAcneNiTq)pfsYC(ykEyVz z2wtsu3XvRwe+Nmyfw`J#yBh4ra&40!+DKeg9ho9cTwNxoK{%adF9d+2o0;2%zx~@_ zjx40LHz#BSHdcuRFIJa|`akZ&rM9BlXhQBAa}!w6LZcd_!E>Mf2?;XD8yfzVIqLht zS|2X}XN=5QL3fvo2Uv#QD*{F=F>$Aj%Y?^k{oZ!;$ELKP$`nXwPp&KH=t-n}RpZEK z?#H33N@mKU_^t7v*T9GOHHI=5@n=B{ESAxoT4DFK5X~5f#o%*58`yY3XTN4;`_F7M zL<_edes`RI{F}dR^+eH|3Lfha`@Q!nVaejEIp<@^tx6Hqtwyw1Ld1pvv>0Sg2nsEm zgkQ$36MlBeFwug3#=NkXe2}xoQ6uV=OP7{eChAv!@@@qEo|DQ z;6y#o!+dCgHv%y9`EX6Cm)U48?BqA7lE8zlBfzM>F`IJbWeSk6OVpXPm`nQg6tTEIY- zGjrPdd>fd#xbwRugiY;^`SkWCAPZ~T1^$bg zB+1?J6yDEAoG`B!p|;_t&04<3!nNquTIj7vt7Ohj2P1ZN0fT2XhHDOUS410XYVUbo z1f@1L&X>V0780D$MwW-zlReJ~Cmx!(0vV8@L?(f`D!cTZMS{;AGMZ@EYfr%#hY_%k zRsWhGcK!FJu1W=bE2yXp035A^n`EVb{T`7?@CI(JR#%ij25j@V9md#}dN6pAP+ix8 zm@H32Zl6lM?fDOn%h<>>R}-@3ol^RbAxnaFNv6W--eEKmA}Q+Q@=OthE){>z3QJvC zlNyITz2`819gnw33kfmDB2`va!VSRl?TGBl%q&_t#5`q}FE_dBL{&}4cU<=H&gPHGTfZOgk#Jka(bZ#Crjm@VM zqX`2+ZCT1amH_ANZiiG4VE~WNSQ;VJ1u4BRBaJA0Se`5v&MmW32%_lX_2W8{5}m@A zpkv{B`R~;mK>_|HV?JgmgiDFl#Vh%L8ytMKN*`xCvX|i)9vPhnSJKPXuWxpz)^(b5 z6oVYWN6D~p$f6yeR#mvJ4CZ5l$BDgVL)#P!UFO+rzxa;3?BLNYK9*}1=Ful)JgW*u zWnXO>m~d@q6jO0w5G~M}kJzvhL@=y8f2 z96L?NaE;y5ETM0K2}Bh}EF}bt>;Rm8kjv#9PTWF)#uCFcuWXM@&91sn#ChzoSKQ}x z0C^HD5O@bsTE=s4VuaH!ntq8k3@RUN!u_)vtnS*Ro)PiS&~`Y2J0p-wz(d6G&Nff- zEK;M2{Hv1OI4Fm5S{fJELIs})45_p>mk}fFLAz2-17-w zQ593xM|cml-PIjm`pS%@lOUM5&6I)m6eb`Z1A8Y4uKN0t{B3(-hYg?fz416I9|(uI z;z&udHh$+#nIt|wUGY5-L_Ep|6^t}y@^3ql&h~iq{8$JOMU&7^Rk{6_uB^Op6uln- zv`XEm6Gi0=(VTIBkZPJ(=h>HvtAxS+G{MYF*LJCotY%j-gsf_j?1#d%VNaDb`An{J@M4Ic_ zD?K9at|yu+=+^47FJpIN&l-D77@x zJByH1J}Y=>`{qqpp55m!B&kl5$f#7Owso3>dAu}a;n;2_1Pmv-muuGPU5X`#L(1Vz z1&DY1h>xP)ABkoRT$sN1tV(OW?A}BDLz1&5Nj$6~AH6j66|sAq8!q?S=4fw}Qd@Jk zN<}@%RI&dkaUmsrnohc-ot9dH;84bJ+P<8W2=s-sK_s^bYuARZ3vOr0ti9JTKB|

      Library MSetsExtra.MSetFoldWithAbort

      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 diff --git a/html/MSetsExtra.MSetFoldWithAbort.html b/html/MSetsExtra.MSetFoldWithAbort.html index 7a645ac..6e61211 100644 --- a/html/MSetsExtra.MSetFoldWithAbort.html +++ b/html/MSetsExtra.MSetFoldWithAbort.html @@ -24,7 +24,7 @@

    ^$#{^;7G7IqW$Q}m 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 z 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

    AnF_Ml}w<&#c|uL%YxD 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∨)a-Q_pa(qQyzMcCtD~O~;}upr57mf_H4fN9teorv@~RFT@5EX4o*J zM-0;AA25p1fKKmncYTqzaeZjfV=J99kAOPpPTeP8;FJA%#*58f^&Qkd%4?q`V!_f}#s<9LYfGfcQwY3Xzx4Ju6Z~{|GA2Y* z=gM5J60=?rGXV*X={H^b?IBJ$e*zv>v4Z{&W$yqZ+uLn>w{7fp_io#^ZQHhO_ipXB zZQHhO+qQB0e{RmX=j3~H@_t!Kr81vYRVgHE)_CUl4HGR!JRsma0R;Ho=D3Nt3?W7> zJwbG5X0)Akv7_K@p>oLROp z_Z?u-+dKvZ0EbWcCX^(AJf(4h^_`wKD=^Ki30sH7?6WwQU>9<1M>5ygr^64I_y`T) znuht3#ha|?1{VHx58|r)l~TSJ+=bZ&r(PD5?lVQ)wMb{+1w>&HAS@`*EDxxUdFmQ{ z-wxK19ic5BWg+ri(0RI`-6Zj#QTf~>SP4?Dkysdo%iFf-hF9mh^#Z$-s@rpU7i~-e9L0F)n>C^B} zw5r_?1_&PP;`CsPsAu9yHvs!W$cD+)^>%}nf{E(hW^G&revR}I8{A2s_MM4^0RGfM zMPjlOY>ZJd!9ax46^^xIv&f(d4{C*w1Xwvi(h0v}a4SaAh#D}X-4Ry8Q-874Nuzrh z*-%>J0J~tX1_M^r7XFTizc5D(5}uY|ic)C++ft}-j<>Y(mIlUMSkB76KFQ+Sxi9KD z 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

    -

    Fold with abort for sets

    +

    Fold with abort for sets

    @@ -38,18 +38,18 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Require Export MSetInterface.
    +Require Export MSetInterface.
    Require Import mathcomp.ssreflect.ssreflect.
    Require Import MSetWithDups.
    -Require Import Int.
    -Require Import MSetGenTree MSetAVL MSetRBT.
    -Require Import MSetList MSetWeakList.
    +Require Import Int.
    +Require Import MSetGenTree MSetAVL MSetRBT.
    +Require Import MSetList MSetWeakList.

    -

    Fold With Abort Operations

    +

    Fold With Abort Operations

    @@ -62,60 +62,59 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Definition foldWithAbortType
    -    elt
    +Definition foldWithAbortType
    +    elt
    element type of set
    -    t
    +    t
    type of set
    -    A
    +    A
    -return type -
    +return type +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_abort
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value
    -    A.
    +    A.

    -Definition foldWithAbortSpecPred {elt t : Type}
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbort : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=
    +Definition foldWithAbortSpecPred {elt t : Type}
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (foldWithAbort : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    -      (A : Type)
    +      (A : Type)
          
    @@ -123,7 +122,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i i' : A)
    +      (i i' : A)
          
    @@ -131,7 +130,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -139,7 +138,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_abort : elt → A → bool)
    +      (f_abort : elt → A → bool)
          
    @@ -147,28 +146,27 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (s : t)
    +      (s : t)
    sets to fold over

    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    -equivalence relation on results -
    +equivalence relation on results
    ,

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →
          
        
    @@ -176,28 +174,28 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and f' agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_abort is OK, i.e. all other elements can be skipped without +f_abort is OK, i.e. all other elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_abort e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → e2 ≠ e1 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_abort e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → e2 ≠ e1 →
    +                        P st (f e2 st'))) →

        
    @@ -205,7 +203,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -213,7 +211,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -    P (foldWithAbort f f_abort s i) (fold f' s i').
    +    P (foldWithAbort f f_abort s i) (fold f' s i').

    @@ -228,61 +226,60 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Definition foldWithAbortGtType
    -    elt
    +Definition foldWithAbortGtType
    +    elt
    element type of set
    -    t
    +    t
    type of set
    -    A
    +    A
    -return type -
    +return type +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value
    -    A.
    +    A.

    -Definition foldWithAbortGtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortGt : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=
    +Definition foldWithAbortGtSpecPred {elt t : Type}
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (foldWithAbortGt : ∀ {A : Type}, foldWithAbortType elt t A) : Prop :=

        âˆ€
    -      (A : Type)
    +      (A : Type)
          
    @@ -290,7 +287,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i i' : A)
    +      (i i' : A)
          
    @@ -298,7 +295,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -306,7 +303,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_gt : elt → A → bool)
    +      (f_gt : elt → A → bool)
          
    @@ -314,18 +311,17 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (s : t)
    +      (s : t)
    sets to fold over

    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    -equivalence relation on results -
    +equivalence relation on results
    ,

    @@ -333,10 +329,10 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -344,28 +340,28 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and f' agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_abort is OK, i.e. all other elements can be skipped without +f_abort is OK, i.e. all other elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -373,7 +369,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -381,7 +377,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -    P (foldWithAbortGt f f_gt s i) (fold f' s i').
    +    P (foldWithAbortGt f f_gt s i) (fold f' s i').

    @@ -404,67 +400,66 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Definition foldWithAbortGtLtType
    -    elt
    +Definition foldWithAbortGtLtType
    +    elt
    element type of set
    -    t
    +    t
    type of set
    -    A
    +    A
    -return type -
    +return type +    (elt → A → bool) →
    f_lt
    +    (elt → A → A) →
    f
    +    (elt → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value
    -    A.
    +    A.

    -Definition foldWithAbortGtLtSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortGtLt : ∀ {A : Type}, foldWithAbortGtLtType elt t A) : Prop :=
    +Definition foldWithAbortGtLtSpecPred {elt t : Type}
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (foldWithAbortGtLt : ∀ {A : Type}, foldWithAbortGtLtType elt t A) : Prop :=

        âˆ€
    -      (A : Type)
    +      (A : Type)
          
    @@ -472,7 +467,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i i' : A)
    +      (i i' : A)
          
    @@ -480,7 +475,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → A → A) (f' : elt → A → A)
    +      (f : elt → A → A) (f' : elt → A → A)
          
    @@ -488,7 +483,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → A → bool)
    +      (f_lt f_gt : elt → A → bool)
          
    @@ -496,18 +491,17 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (s : t)
    +      (s : t)
    sets to fold over

    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    -equivalence relation on results -
    +equivalence relation on results
    ,

    @@ -515,10 +509,10 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -526,41 +520,41 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e st) (f e st')) →

        
    -f and f' agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e st) (f' e st))) →

        
    -f_lt is OK, i.e. smaller elements can be skipped without +f_lt is OK, i.e. smaller elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 st'))) →

        
    -f_gt is OK, i.e. greater elements can be skipped without +f_gt is OK, i.e. greater elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 st'))) →

        
    @@ -568,7 +562,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -576,7 +570,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -    P (foldWithAbortGtLt f_lt f f_gt s i) (fold f' s i').
    +    P (foldWithAbortGtLt f_lt f f_gt s i) (fold f' s i').

    @@ -584,101 +578,100 @@

    Library MSetsExtra.MSetFoldWithAbort

    We are interested in folding with abort mainly for runtime performance reasons of extracted code. The argument functions - f_lt, f_gt and f of foldWithAbortGtLt often share a large, + f_lt, f_gt and f of foldWithAbortGtLt often share a large, comparably expensive part of their computation.
    In order to further improve runtime performance, therefore another - version foldWithAbortPrecompute f_precompute f_lt f f_gt that - uses an extra function f_precompute to allows to compute the + version foldWithAbortPrecompute f_precompute f_lt f f_gt that + uses an extra function f_precompute to allows to compute the commonly used parts of these functions only once. This leads to the following definitions.

    -Definition foldWithAbortPrecomputeType
    -    elt
    +Definition foldWithAbortPrecomputeType
    +    elt
    element type of set
    -    t
    +    t
    type of set
    -    A
    +    A
    return type
    -    B
    +    B
    -type of precomputed results -
    +type of precomputed results
    :=

    -    (elt → B) →
    +    (elt → B) →
    f_precompute
    +    (elt → B → A → bool) →
    f_lt
    +    (elt → B → A → A) →
    f
    +    (elt → B → A → bool) →
    f_gt
    -    t →
    +    t →
    input set
    -    A →
    +    A →
    base value
    -    A.
    +    A.

    The specification is similar to the one without precompute, - but uses f_precompute so avoid doing computations multiple times + but uses f_precompute so avoid doing computations multiple times
    -Definition foldWithAbortPrecomputeSpecPred {elt t : Type}
    -    (lt : elt → elt → Prop)
    -    (In : elt → t → Prop)
    -    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    -    (foldWithAbortPrecompute : ∀ {A B : Type}, foldWithAbortPrecomputeType elt t A B) : Prop :=
    +Definition foldWithAbortPrecomputeSpecPred {elt t : Type}
    +    (lt : elt → elt → Prop)
    +    (In : elt → t → Prop)
    +    (fold : ∀ {A : Type}, (elt → A → A) → t → A → A)
    +    (foldWithAbortPrecompute : ∀ {A B : Type}, foldWithAbortPrecomputeType elt t A B) : Prop :=

        âˆ€
    -      (A B : Type)
    +      (A B : Type)
          
    @@ -686,7 +679,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (i i' : A)
    +      (i i' : A)
          
    @@ -694,7 +687,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_precompute : elt → B)
    +      (f_precompute : elt → B)
          
    @@ -702,7 +695,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f : elt → B → A → A) (f' : elt → A → A)
    +      (f : elt → B → A → A) (f' : elt → A → A)
          
    @@ -710,7 +703,7 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (f_lt f_gt : elt → B → A → bool)
    +      (f_lt f_gt : elt → B → A → bool)
          
    @@ -718,18 +711,17 @@

    Library MSetsExtra.MSetFoldWithAbort


    -      (s : t)
    +      (s : t)
    sets to fold over

    -      (P : A → A → Prop)
    +      (P : A → A → Prop)
    -equivalence relation on results -
    +equivalence relation on results
    ,

    @@ -737,10 +729,10 @@

    Library MSetsExtra.MSetFoldWithAbort

        
    -P is an equivalence relation +P is an equivalence relation
    -    Equivalence P →
    +    Equivalence P →

        
    @@ -748,41 +740,41 @@

    Library MSetsExtra.MSetFoldWithAbort

    f is for the elements of s compatible with the equivalence relation P
    -    (∀ st st' e, In e s → P st st' → P (f e (f_precompute e) st) (f e (f_precompute e) st')) →
    +    (∀ st st' e, In e s → P st st' → P (f e (f_precompute e) st) (f e (f_precompute e) st')) →

        
    -f and f' agree for the elements of s +f and f' agree for the elements of s
    -    (∀ e st, In e s → (P (f e (f_precompute e) st) (f' e st))) →
    +    (∀ e st, In e s → (P (f e (f_precompute e) st) (f' e st))) →

        
    -f_lt is OK, i.e. smaller elements can be skipped without +f_lt is OK, i.e. smaller elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_lt e1 (f_precompute e1) st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e2 e1 →
    -                        P st (f e2 (f_precompute e2) st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_lt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e2 e1 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    -f_gt is OK, i.e. greater elements can be skipped without +f_gt is OK, i.e. greater elements can be skipped without leaving the equivalence relation.
    -    (∀ e1 st,
    -        In e1 s → f_gt e1 (f_precompute e1) st = true →
    -        (∀ st' e2, P st st' →
    -                        In e2 s → lt e1 e2 →
    -                        P st (f e2 (f_precompute e2) st'))) →
    +    (∀ e1 st,
    +        In e1 s → f_gt e1 (f_precompute e1) st = true →
    +        (∀ st' e2, P st st' →
    +                        In e2 s → lt e1 e2 →
    +                        P st (f e2 (f_precompute e2) st'))) →

        
    @@ -790,7 +782,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    The base values are in equivalence relation
    -    P i i' →
    +    P i i' →

        
    @@ -798,13 +790,13 @@

    Library MSetsExtra.MSetFoldWithAbort

    The results are in equivalence relation
    -

    Module Types

    +

    Module Types

    @@ -815,14 +807,14 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).
    +Module Type HasFoldWithAbort (E : OrderedType) (Import C : WSetsOnWithDups E).

    -  Parameter foldWithAbortPrecompute : ∀ {A B : Type},
    -    foldWithAbortPrecomputeType elt t A B.
    +  Parameter foldWithAbortPrecompute : ∀ {A B : Type},
    +    foldWithAbortPrecomputeType elt t A B.

    -  Parameter foldWithAbortPrecomputeSpec :
    +  Parameter foldWithAbortPrecomputeSpec :
         foldWithAbortPrecomputeSpecPred E.lt In (@fold) (@foldWithAbortPrecompute).

    @@ -832,7 +824,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Derived operations

    +

    Derived operations

    @@ -844,29 +836,29 @@

    Library MSetsExtra.MSetFoldWithAbort


    -Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
    +Module HasFoldWithAbortOps (E : OrderedType) (C : WSetsOnWithDups E)
                               (FT : HasFoldWithAbort E C).

    -  Import FT.
    -  Import C.
    +  Import FT.
    +  Import C.

    -

    First lets define the other folding with abort variants

    +

    First lets define the other folding with abort variants


    -  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).
    +  Definition foldWithAbortGtLt {A} f_lt (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_lt e st)
    +      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

    -  Lemma foldWithAbortGtLtSpec :
    +  Lemma foldWithAbortGtLtSpec :
         foldWithAbortGtLtSpecPred E.lt In (@fold) (@foldWithAbortGtLt).
      Proof.
        rewrite /foldWithAbortGtLt /foldWithAbortGtLtSpecPred.
    @@ -876,12 +868,12 @@

    Library MSetsExtra.MSetFoldWithAbort

      Qed.

    -  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).
    +  Definition foldWithAbortGt {A} (f : (elt → A → A)) f_gt :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun _ _ _ ⇒ false)
    +      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_gt e st).

    -  Lemma foldWithAbortGtSpec :
    +  Lemma foldWithAbortGtSpec :
         foldWithAbortGtSpecPred E.lt In (@fold) (@foldWithAbortGt).
      Proof.
        rewrite /foldWithAbortGt /foldWithAbortGtSpecPred.
    @@ -891,22 +883,22 @@

    Library MSetsExtra.MSetFoldWithAbort

      Qed.

    -  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    -    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
    -      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_abort e st).
    +  Definition foldWithAbort {A} (f : (elt → A → A)) f_abort :=
    +    foldWithAbortPrecompute (fun _ ⇒ tt) (fun e _ st ⇒ f_abort e st)
    +      (fun e _ st ⇒ f e st) (fun e _ st ⇒ f_abort e st).

    -  Lemma foldWithAbortSpec :
    +  Lemma foldWithAbortSpec :
         foldWithAbortSpecPred In (@fold) (@foldWithAbort).
      Proof.
        rewrite /foldWithAbort /foldWithAbortGtSpecPred.
        intros A i i' f f' f_abort s P.
        move ⇒ H_equiv_P H_f_compat H_ff' H_abort H_ii'.
    -    have H_lt_neq: (∀ e1 e2, E.lt e1 e2 → e1 ≠ e2). {
    +    have H_lt_neq: (∀ e1 e2, E.lt e1 e2 → e1 ≠ e2). {
          move ⇒ e1 e2 H_lt H_e12_eq.
          rewrite H_e12_eq in H_lt.
    -      have : ( Irreflexive E.lt) by apply StrictOrder_Irreflexive.
    -      rewrite /Irreflexive /Reflexive /complement ⇒ H.
    +      have : ( Irreflexive E.lt) by apply StrictOrder_Irreflexive.
    +      rewrite /Irreflexive /Reflexive /complement ⇒ H.
          eapply H, H_lt.
        }
        apply foldWithAbortPrecomputeSpec ⇒ //; (
    @@ -920,7 +912,7 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Specialisations for equality

    +

    Specialisations for equality

    @@ -928,30 +920,30 @@

    Library MSetsExtra.MSetFoldWithAbort

    of an arbitrary equivalence relation on results.
    -  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    -      (f : elt → B → A → A) (f' : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),
    +  Lemma foldWithAbortPrecomputeSpec_Equal : ∀ (A B : Type) (i : A) (f_pre : elt → B)
    +      (f : elt → B → A → A) (f' : elt → A → A) (f_lt f_gt : elt → B → A → bool) (s : t),

    -      (∀ e st, In e s → (f e (f_pre e) st = f' e st)) →
    +      (∀ e st, In e s → (f e (f_pre e) st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 (f_pre e2) st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 (f_pre e2) st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 (f_pre e2) st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 (f_pre e2) st = st))) →

    -      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold f' s i).
    +      (foldWithAbortPrecompute f_pre f_lt f f_gt s i) = (fold f' s i).
      Proof.
        intros A B i f_pre f f' f_lt f_gt s H_f' H_lt H_gt.

         eapply (foldWithAbortPrecomputeSpec A B i i f_pre f f'); eauto. {
    -       apply eq_equivalence.
    +       apply eq_equivalence.
         } {
           move ⇒ st1 st2 e H_in → //.
         } {
    @@ -966,30 +958,30 @@

    Library MSetsExtra.MSetFoldWithAbort

      Qed.

    -  Lemma foldWithAbortGtLtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),
    +  Lemma foldWithAbortGtLtSpec_Equal : ∀ (A : Type) (i : A)
    +      (f : elt → A → A) (f' : elt → A → A) (f_lt f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_lt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_lt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 →
    +                      (f e2 st = st))) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbortGtLt f_lt f f_gt s i) = (fold f' s i).
    +      (foldWithAbortGtLt f_lt f f_gt s i) = (fold f' s i).
      Proof.
        intros A i f f' f_lt f_gt s H_f' H_lt H_gt.

         eapply (foldWithAbortGtLtSpec A i i f f'); eauto. {
    -       apply eq_equivalence.
    +       apply eq_equivalence.
         } {
           move ⇒ st1 st2 e H_in → //.
         } {
    @@ -1004,24 +996,24 @@

    Library MSetsExtra.MSetFoldWithAbort

      Qed.

    -  Lemma foldWithAbortGtSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_gt : elt → A → bool) (s : t),
    +  Lemma foldWithAbortGtSpec_Equal : ∀ (A : Type) (i : A)
    +      (f : elt → A → A) (f' : elt → A → A) (f_gt : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_gt e1 st = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_gt e1 st = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbortGt f f_gt s i) = (fold f' s i).
    +      (foldWithAbortGt f f_gt s i) = (fold f' s i).
      Proof.
        intros A i f f' f_gt s H_f' H_gt.

         eapply (foldWithAbortGtSpec A i i f f'); eauto. {
    -       apply eq_equivalence.
    +       apply eq_equivalence.
         } {
           move ⇒ st1 st2 e H_in → //.
         } {
    @@ -1032,24 +1024,24 @@

    Library MSetsExtra.MSetFoldWithAbort

      Qed.

    -  Lemma foldWithAbortSpec_Equal : ∀ (A : Type) (i : A)
    -      (f : elt → A → A) (f' : elt → A → A) (f_abort : elt → A → bool) (s : t),
    +  Lemma foldWithAbortSpec_Equal : ∀ (A : Type) (i : A)
    +      (f : elt → A → A) (f' : elt → A → A) (f_abort : elt → A → bool) (s : t),

    -      (∀ e st, In e s → (f e st = f' e st)) →
    +      (∀ e st, In e s → (f e st = f' e st)) →

          
    -      (∀ e1 st,
    -          In e1 s → f_abort e1 st = true →
    -          (∀ e2, In e2 s → e1 ≠ e2 →
    -                      (f e2 st = st))) →
    +      (∀ e1 st,
    +          In e1 s → f_abort e1 st = true →
    +          (∀ e2, In e2 s → e1 ≠ e2 →
    +                      (f e2 st = st))) →

    -      (foldWithAbort f f_abort s i) = (fold f' s i).
    +      (foldWithAbort f f_abort s i) = (fold f' s i).
      Proof.
         intros A i f f' f_abort s H_f' H_abort.

         eapply (foldWithAbortSpec A i i f f'); eauto. {
    -       apply eq_equivalence.
    +       apply eq_equivalence.
         } {
           move ⇒ st1 st2 e H_in → //.
         } {
    @@ -1063,44 +1055,44 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    FoldWithAbortSpecArgs

    +

    FoldWithAbortSpecArgs

    While folding, we are often interested in skipping elements that do not - satisfy a certain property P. This needs expressing in terms of + satisfy a certain property P. This needs expressing in terms of skips of smaller of larger elements in order to be done efficiently by our folding functions. Formally, this leads to the definition of foldWithAbortSpecForPred.
    - Given a FoldWithAbortSpecArg for a predicate P and a + Given a FoldWithAbortSpecArg for a predicate P and a set s, many operations can be implemented efficiently. Below we will provide efficient versions of filter, choose, ∃, ∀ and more.
    -  Record FoldWithAbortSpecArg {B} := {
    -     fwasa_f_pre : (elt → B);
    +  Record FoldWithAbortSpecArg {B} := {
    +     fwasa_f_pre : (elt → B);
    The precompute function
    -     fwasa_f_lt : (elt → B → bool);
    +     fwasa_f_lt : (elt → B → bool);
    f_lt without state argument
    -     fwasa_f_gt : (elt → B → bool);
    +     fwasa_f_gt : (elt → B → bool);
    f_gt without state argument
    -     fwasa_P' : (elt → B → bool)
    +     fwasa_P' : (elt → B → bool)
    the predicate P @@ -1112,20 +1104,20 @@

    Library MSetsExtra.MSetFoldWithAbort

    -foldWithAbortSpecForPred s P fwasa holds, if - the argument fwasa fits the predicate P for set s. +foldWithAbortSpecForPred s P fwasa holds, if + the argument fwasa fits the predicate P for set s.
    -  Definition foldWithAbortSpecArgsForPred {A : Type}
    -     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=
    +  Definition foldWithAbortSpecArgsForPred {A : Type}
    +     (s : t) (P : elt → bool) (fwasa : @FoldWithAbortSpecArg A) :=

         
    -the predicate P' coincides for s and the given precomputation with P +the predicate P' coincides for s and the given precomputation with P
    -     (∀ e, In e s → (fwasa_P' fwasa e (fwasa_f_pre fwasa e) = P e)) ∧
    +     (∀ e, In e s → (fwasa_P' fwasa e (fwasa_f_pre fwasa e) = P e)) ∧

         
    @@ -1134,9 +1126,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧
    +     (∀ e1,
    +          In e1 s → fwasa_f_lt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e2 e1 → (P e2 = false))) ∧

         
    @@ -1145,9 +1137,9 @@

    Library MSetsExtra.MSetFoldWithAbort

    don't satisfy predicate P.
    -     (∀ e1,
    -          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    -          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).
    +     (∀ e1,
    +          In e1 s → fwasa_f_gt fwasa e1 (fwasa_f_pre fwasa e1) = true →
    +          (∀ e2, In e2 s → E.lt e1 e2 → (P e2 = false))).

    @@ -1155,21 +1147,21 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Filter with abort

    +

    Filter with abort

    -  Definition filter_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -     @foldWithAbortPrecompute t B (fwasa_f_pre fwasa) (fun e p _ ⇒ fwasa_f_lt fwasa e p)
    -       (fun e e_pre s ⇒ if fwasa_P' fwasa e e_pre then add e s else s)
    -       (fun e p _ ⇒ fwasa_f_gt fwasa e p) s empty.
    +  Definition filter_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    +     @foldWithAbortPrecompute t B (fwasa_f_pre fwasa) (fun e p _ ⇒ fwasa_f_lt fwasa e p)
    +       (fun e e_pre s ⇒ if fwasa_P' fwasa e e_pre then add e s else s)
    +       (fun e p _ ⇒ fwasa_f_gt fwasa e p) s empty.

    -  Lemma filter_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    Equal (filter_with_abort fwasa s)
    -          (filter P s).
    +  Lemma filter_with_abort_spec {B} : ∀ fwasa P s,
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    Equal (filter_with_abort fwasa s)
    +          (filter P s).
      Proof.
        unfold foldWithAbortSpecArgsForPred.
        move ⇒ [] f_pre f_lt f_gt P' P s /=.
    @@ -1177,22 +1169,22 @@

    Library MSetsExtra.MSetFoldWithAbort

        rewrite /filter_with_abort /=.

    -    have → : (foldWithAbortPrecompute f_pre (fun e p _ ⇒ f_lt e p)
    -     (fun (e : elt) (e_pre : B) (s0 : t) ⇒
    -      if P' e e_pre then add e s0 else s0) (fun e p _ ⇒ f_gt e p) s empty =
    -     (fold (fun e s0 ⇒ if P e then add e s0 else s0) s empty)). {
    +    have → : (foldWithAbortPrecompute f_pre (fun e p _ ⇒ f_lt e p)
    +     (fun (e : elt) (e_pre : B) (s0 : t) ⇒
    +      if P' e e_pre then add e s0 else s0) (fun e p _ ⇒ f_gt e p) s empty =
    +     (fold (fun e s0 ⇒ if P e then add e s0 else s0) s empty)). {
          apply foldWithAbortPrecomputeSpec_Equal. {
            intros e st H_e_in.
            rewrite H_f' //.
          } {
            intros e1 st H_e1_in H_f_lt_eq e2 H_e2_in H_lt_e2_e1.
            rewrite (H_f' _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    +        suff → : (P e2 = false) by done.
            apply (H_lt e1); eauto.
          } {
            intros e1 st H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
            rewrite (H_f' _ H_e2_in).
    -        suff → : (P e2 = false) by done.
    +        suff → : (P e2 = false) by done.
            apply (H_gt e1); eauto.
          }
        }
    @@ -1202,18 +1194,18 @@

    Library MSetsExtra.MSetFoldWithAbort

        setoid_rewrite filter_spec ⇒ //.

    -    suff → : ∀ acc, In e
    -      (fold_left
    -         (flip (fun (e0 : elt) (s0 : t) ⇒ if P e0 then add e0 s0 else s0))
    -         (elements s) acc) ↔ (InA E.eq e (elements s) ∧ P e = true) ∨ (In e acc). {
    +    suff → : ∀ acc, In e
    +      (fold_left
    +         (flip (fun (e0 : elt) (s0 : t) ⇒ if P e0 then add e0 s0 else s0))
    +         (elements s) acc) ↔ (InA E.eq e (elements s) ∧ P e = true) ∨ (In e acc). {
          rewrite elements_spec1.
    -      suff : (¬In e empty) by tauto.
    +      suff : (¬In e empty) by tauto.
          apply empty_spec.
        }
        induction (elements s) as [| x xs IH] ⇒ acc. {
    -      rewrite /= InA_nil. tauto.
    +      rewrite /= InA_nil. tauto.
        } {
    -      rewrite /= /flip IH InA_cons.
    +      rewrite /= /flip IH InA_cons.
          case_eq (P x). {
            rewrite add_spec.
            intuition.
    @@ -1221,7 +1213,7 @@

    Library MSetsExtra.MSetFoldWithAbort

            rewrite H0.
            split ⇒ //.
            left.
    -        apply Equivalence_Reflexive.
    +        apply Equivalence_Reflexive.
          } {
            intuition.
            contradict H2.
    @@ -1235,27 +1227,27 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Choose with abort

    +

    Choose with abort

    -  Definition choose_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -     foldWithAbortPrecompute (fwasa_f_pre fwasa)
    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    -       (fun e e_pre st ⇒ match st with None ⇒
    -          if (fwasa_P' fwasa e e_pre) then Some e else None | _ ⇒ st end)
    +  Definition choose_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    +     foldWithAbortPrecompute (fwasa_f_pre fwasa)
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_lt fwasa e p) | _ ⇒ true end)
    +       (fun e e_pre st ⇒ match st with None ⇒
    +          if (fwasa_P' fwasa e e_pre) then Some e else None | _ ⇒ st end)

    -       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    -       s None.
    +       (fun e p st ⇒ match st with None ⇒ (fwasa_f_gt fwasa e p) | _ ⇒ true end)
    +       s None.

    -  Lemma choose_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, In e s → P e = false)
    -       | Some e ⇒ In e s ∧ (P e = true)
    -     end).
    +  Lemma choose_with_abort_spec {B} : ∀ fwasa P s,
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (match (choose_with_abort fwasa s) with
    +       | None ⇒ (∀ e, In e s → P e = false)
    +       | Some e ⇒ In e s ∧ (P e = true)
    +     end).
      Proof.
        rewrite /foldWithAbortSpecArgsForPred.
        move ⇒ [] f_pre f_lt f_gt P' P s /=.
    @@ -1263,15 +1255,15 @@

    Library MSetsExtra.MSetFoldWithAbort


        set fwasa := {|
    -       fwasa_f_pre := f_pre;
    -       fwasa_f_lt := f_lt;
    -       fwasa_f_gt := f_gt;
    -       fwasa_P' := P' |}.
    +       fwasa_f_pre := f_pre;
    +       fwasa_f_lt := f_lt;
    +       fwasa_f_gt := f_gt;
    +       fwasa_P' := P' |}.

        suff : (match (choose_with_abort fwasa s) with
    -       | None ⇒ (∀ e, InA E.eq e (elements s) → P e = false)
    -       | Some e ⇒ InA E.eq e (elements s) ∧ (P e = true)
    +       | None ⇒ (∀ e, InA E.eq e (elements s) → P e = false)
    +       | Some e ⇒ InA E.eq e (elements s) ∧ (P e = true)
         end). {
           case (choose_with_abort fwasa s). {
             move ⇒ e.
    @@ -1283,11 +1275,11 @@

    Library MSetsExtra.MSetFoldWithAbort

           }
        }

    -    have → : (choose_with_abort fwasa s =
    -      (fold (fun e st ⇒
    -        match st with
    -          | None ⇒ if P e then Some e else None
    -          | _ ⇒ st end) s None)). {
    +    have → : (choose_with_abort fwasa s =
    +      (fold (fun e st ⇒
    +        match st with
    +          | None ⇒ if P e then Some e else None
    +          | _ ⇒ st end) s None)). {
          apply foldWithAbortPrecomputeSpec_Equal. {
            intros e st H_e_in.
            case st ⇒ //=.
    @@ -1297,44 +1289,44 @@

    Library MSetsExtra.MSetFoldWithAbort

            rewrite (H_f' _ H_e2_in).
            case_eq (P e2) ⇒ // H_P_e2.
            contradict H_P_e2.
    -        apply not_true_iff_false, (H_lt e1); auto.
    +        apply not_true_iff_false, (H_lt e1); auto.
          } {
            move ⇒ e1 [] //= H_e1_in H_f_gt_eq e2 H_e2_in H_gt_e2_e1.
            rewrite (H_f' _ H_e2_in).
            case_eq (P e2) ⇒ // H_P_e2.
            contradict H_P_e2.
    -        apply not_true_iff_false, (H_gt e1); auto.
    +        apply not_true_iff_false, (H_gt e1); auto.
          }
        }

    -    rewrite fold_spec /flip.
    +    rewrite fold_spec /flip.
        induction (elements s) as [| x xs IH]. {
          rewrite /=.
    -      move ⇒ e /InA_nil //.
    +      move ⇒ e /InA_nil //.
        } {
          case_eq (P x) ⇒ H_Px; rewrite /= H_Px. {
    -        have → : ∀ xs, fold_left (fun (x0 : option elt) (y : elt) ⇒
    -                    match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -                    end) xs (Some x) = Some x. {
    +        have → : ∀ xs, fold_left (fun (x0 : option elt) (y : elt) ⇒
    +                    match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    +                    end) xs (Some x) = Some x. {
              move ⇒ ys.
              induction ys ⇒ //.
            }
            split; last assumption.
    -        apply InA_cons_hd.
    +        apply InA_cons_hd.
            apply E.eq_equiv.
          } {
            move : IH.
    -        case (fold_left
    -          (fun (x0 : option elt) (y : elt) ⇒
    -             match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    -             end) xs None). {
    +        case (fold_left
    +          (fun (x0 : option elt) (y : elt) ⇒
    +             match x0 with | Some _ ⇒ x0 | None ⇒ if P y then Some y else None
    +             end) xs None). {

                 move ⇒ e [H_e_in] H_Pe.
                 split; last assumption.
    -             apply InA_cons_tl ⇒ //.
    +             apply InA_cons_tl ⇒ //.
            } {
              move ⇒ H_e_nin e H_e_in.
    -          have : (InA E.eq e xs ∨ (E.eq e x)). {
    +          have : (InA E.eq e xs ∨ (E.eq e x)). {
                inversion H_e_in; tauto.
              }
              move ⇒ []. {
    @@ -1351,25 +1343,25 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Exists and Forall with abort

    +

    Exists and Forall with abort

    -  Definition exists_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    -    match choose_with_abort fwasa s with
    -      | None ⇒ false
    -      | Some _ ⇒ true
    +  Definition exists_with_abort {B} (fwasa : @FoldWithAbortSpecArg B) s :=
    +    match choose_with_abort fwasa s with
    +      | None ⇒ false
    +      | Some _ ⇒ true
        end.

    -  Lemma exists_with_abort_spec {B} : ∀ fwasa P s,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (exists_with_abort fwasa s =
    -     exists_ P s).
    +  Lemma exists_with_abort_spec {B} : ∀ fwasa P s,
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (exists_with_abort fwasa s =
    +     exists_ P s).
      Proof.
        intros fwasa P s H_fwasa H_proper.
    -    apply Logic.eq_sym.
    +    apply Logic.eq_sym.
        rewrite /exists_with_abort.
        move : (choose_with_abort_spec _ _ _ H_fwasa H_proper).
        case (choose_with_abort fwasa s). {
    @@ -1378,7 +1370,7 @@

    Library MSetsExtra.MSetFoldWithAbort

          by ∃ e.
        } {
          move ⇒ H_not_ex.
    -      apply not_true_iff_false.
    +      apply not_true_iff_false.
          rewrite exists_spec /Exists.
          move ⇒ [e] [H_in] H_pe.
          move : (H_not_ex e H_in).
    @@ -1393,21 +1385,21 @@

    Library MSetsExtra.MSetFoldWithAbort

    Negation leads to forall.
    -  Definition forall_with_abort {B} fwasa s :=
    -     negb (@exists_with_abort B fwasa s).
    +  Definition forall_with_abort {B} fwasa s :=
    +     negb (@exists_with_abort B fwasa s).

    -  Lemma forall_with_abort_spec {B} : ∀ fwasa s P,
    -    @foldWithAbortSpecArgsForPred B s P fwasa →
    -    Proper (E.eq ==> Logic.eq) P →
    -    (forall_with_abort fwasa s =
    -     for_all (fun e ⇒ negb (P e)) s).
    +  Lemma forall_with_abort_spec {B} : ∀ fwasa s P,
    +    @foldWithAbortSpecArgsForPred B s P fwasa →
    +    Proper (E.eq ==> Logic.eq) P →
    +    (forall_with_abort fwasa s =
    +     for_all (fun e ⇒ negb (P e)) s).
      Proof.
        intros fwasa s P H_ok H_proper.
        rewrite /forall_with_abort exists_with_abort_spec; auto.

    -    rewrite eq_iff_eq_true negb_true_iff -not_true_iff_false.
    +    rewrite eq_iff_eq_true negb_true_iff -not_true_iff_false.
        rewrite exists_spec.
        setoid_rewrite for_all_spec; last solve_proper.
    @@ -1415,7 +1407,7 @@

    Library MSetsExtra.MSetFoldWithAbort

        rewrite /Exists /For_all.
        split. {
          move ⇒ H_pre x H_x_in.
    -      rewrite negb_true_iff -not_true_iff_false ⇒ H_Px.
    +      rewrite negb_true_iff -not_true_iff_false ⇒ H_Px.
          apply H_pre.
          by ∃ x.
        } {
    @@ -1433,29 +1425,29 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Modules Types For Sets with Fold with Abort

    +

    Modules Types For Sets with Fold with Abort

    -Module Type WSetsWithDupsFoldA.
    -  Declare Module E : OrderedType.
    +Module Type WSetsWithDupsFoldA.
    +  Declare Module E : OrderedType.
      Include WSetsOnWithDups E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithDupsFoldA.

    -Module Type WSetsWithFoldA <: WSets.
    -  Declare Module E : OrderedType.
    -  Include WSetsOn E.
    +Module Type WSetsWithFoldA <: WSets.
    +  Declare Module E : OrderedType.
    +  Include WSetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End WSetsWithFoldA.

    -Module Type SetsWithFoldA <: Sets.
    -  Declare Module E : OrderedType.
    -  Include SetsOn E.
    +Module Type SetsWithFoldA <: Sets.
    +  Declare Module E : OrderedType.
    +  Include SetsOn E.
      Include HasFoldWithAbort E.
      Include HasFoldWithAbortOps E.
    End SetsWithFoldA.
    @@ -1464,57 +1456,57 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Implementations

    +

    Implementations

    -

    GenTree implementation

    +

    GenTree implementation

    Finally, provide such a fold with abort operation for generic trees.
    -Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    -  (Import Raw:Ops E I)
    -  (M : MSetGenTree.Props E I Raw).
    +Module MakeGenTreeFoldA (Import E : OrderedType) (Import I:InfoTyp)
    +  (Import Raw: MSetGenTree.Ops E I)
    +  (M : MSetGenTree.Props E I Raw).

    -  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
    -    match t with
    -    | Raw.Leaf ⇒ base
    +  Fixpoint foldWithAbort_Raw {A B: Type} (f_pre : E.t → B) f_lt (f: E.t → B → A → A) f_gt t (base: A) : A :=
    +    match t with
    +    | Raw.Leaf ⇒ base
        | Raw.Node _ l x r ⇒
    -        let x_pre := f_pre x in
    -        let st0 := if f_lt x x_pre base then base else foldWithAbort_Raw f_pre f_lt f f_gt l base in
    -        let st1 := f x x_pre st0 in
    -        let st2 := if f_gt x x_pre st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1 in
    -        st2
    +        let x_pre := f_pre x in
    +        let st0 := if f_lt x x_pre base then base else foldWithAbort_Raw f_pre f_lt f f_gt l base in
    +        let st1 := f x x_pre st0 in
    +        let st2 := if f_gt x x_pre st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1 in
    +        st2
        end.

    -  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i i' : A) (f_pre : E.t → B)
    -      (f : E.t → B → A → A) (f' : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    -      (P : A → A → Prop),
    +  Lemma foldWithAbort_RawSpec : ∀ (A B : Type) (i i' : A) (f_pre : E.t → B)
    +      (f : E.t → B → A → A) (f' : E.t → A → A) (f_lt f_gt : E.t → B → A → bool) (s : Raw.tree)
    +      (P : A → A → Prop),

    -      (M.bst s) →
    -      Equivalence P →
    -      (∀ st st' e, M.In e s → P st st' → P (f e (f_pre e) st) (f e (f_pre e) st')) →
    -      (∀ e st, M.In e s → P (f e (f_pre e) st) (f' e st)) →
    +      (M.bst s) →
    +      Equivalence P →
    +      (∀ st st' e, M.In e s → P st st' → P (f e (f_pre e) st) (f e (f_pre e) st')) →
    +      (∀ e st, M.In e s → P (f e (f_pre e) st) (f' e st)) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    -          (∀ st' e2, P st st' →
    -                          M.In e2 s → E.lt e2 e1 →
    -                          P st (f e2 (f_pre e2) st'))) →
    +      (∀ e1 st,
    +          M.In e1 s → f_lt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e2 e1 →
    +                          P st (f e2 (f_pre e2) st'))) →

          
    -      (∀ e1 st,
    -          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    -          (∀ st' e2, P st st' →
    -                          M.In e2 s → E.lt e1 e2 →
    -                          P st (f e2 (f_pre e2) st'))) →
    -
    -      P i i' →
    -      P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold f' s i').
    +      (∀ e1 st,
    +          M.In e1 s → f_gt e1 (f_pre e1) st = true →
    +          (∀ st' e2, P st st' →
    +                          M.In e2 s → E.lt e1 e2 →
    +                          P st (f e2 (f_pre e2) st'))) →
    +
    +      P i i' →
    +      P (foldWithAbort_Raw f_pre f_lt f f_gt s i) (fold f' s i').
       Proof.
         intros A B i i' f_pre f f' f_lt f_gt s P.
         move ⇒ H_bst H_equiv_P H_P_f H_f' H_RL H_RG.
    @@ -1524,8 +1516,8 @@

    Library MSetsExtra.MSetFoldWithAbort


         move : i i'.
    -     have : (∀ e, M.In e base → M.In e s). {
    -       rewrite /In /base //.
    +     have : (∀ e, M.In e base → M.In e s). {
    +       rewrite /In /base //.
         }
         have : M.bst base. {
           apply H_bst.
    @@ -1542,41 +1534,41 @@

    Library MSetsExtra.MSetFoldWithAbort


           have [H_bst_l [H_bst_r [H_lt_tree_l H_gt_tree_r]]]:
    -         M.bst l ∧ M.bst r ∧ M.lt_tree e l ∧ M.gt_tree e r. {
    +         M.bst l ∧ M.bst r ∧ M.lt_tree e l ∧ M.gt_tree e r. {
             inversion H_bst. done.
           }
    -       
    -       have H_sub_l : (∀ e0 : E.t, M.In e0 l → M.In e0 s ∧ E.lt e0 e). {
    +
    +       have H_sub_l : (∀ e0 : E.t, M.In e0 l → M.In e0 s ∧ E.lt e0 e). {
             intros e0 H_in_l.
             split; last by apply H_lt_tree_l.
             eapply H_sub.
             rewrite /M.In M.In_node_iff.
             tauto.
           }
    -       move : (IHl H_bst_l) ⇒ {IHl} IHl {H_bst_l} {H_lt_tree_l}.
    -       have H_sub_r : (∀ e0 : E.t, M.In e0 r → M.In e0 s ∧ E.lt e e0). {
    +       move : (IHl H_bst_l) ⇒ {} IHl {H_bst_l} {H_lt_tree_l}.
    +       have H_sub_r : (∀ e0 : E.t, M.In e0 r → M.In e0 s ∧ E.lt e e0). {
             intros e0 H_in_r.
             split; last by apply H_gt_tree_r.
             eapply H_sub.
             rewrite /M.In M.In_node_iff.
             tauto.
           }
    -       move : (IHr H_bst_r) ⇒ {IHr} IHr {H_bst_r} {H_gt_tree_r}.
    +       move : (IHr H_bst_r) ⇒ {} IHr {H_bst_r} {H_gt_tree_r}.
           have H_in_e : M.In e s. {
             eapply H_sub.
             rewrite /M.In M.In_node_iff.
             right; left.
    -         apply Equivalence_Reflexive.
    +         apply Equivalence_Reflexive.
           }
           move ⇒ {H_sub}.

           rewrite /=.
    -       set st0 := if f_lt e (f_pre e) i then i else foldWithAbort_Raw f_pre f_lt f f_gt l i.
    +       set st0 := if f_lt e (f_pre e) i then i else foldWithAbort_Raw f_pre f_lt f f_gt l i.
           set st0' := Raw.fold f' l i'.
           set st1 := f e (f_pre e) st0.
           set st1' := f' e st0'.
    -       set st2 := if f_gt e (f_pre e) st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1.
    +       set st2 := if f_gt e (f_pre e) st1 then st1 else foldWithAbort_Raw f_pre f_lt f f_gt r st1.
           set st2' := Raw.fold f' r st1'.

    @@ -1599,15 +1591,15 @@

    Library MSetsExtra.MSetFoldWithAbort

                   apply H_sub_l.
                   rewrite /M.In M.In_node_iff. tauto.
                 }
    -             have [] : (M.In e' s ∧ E.lt e' e). {
    +             have [] : (M.In e' s ∧ E.lt e' e). {
                   apply H_sub_l.
                   rewrite /M.In M.In_node_iff.
                   right; left.
    -               apply Equivalence_Reflexive.
    +               apply Equivalence_Reflexive.
                 }
                 move ⇒ H_e'_in H_lt_in.
                 suff H_P_i : (P i (f e' (f_pre e') (fold f' l i'))). {
    -               eapply Equivalence_Transitive; first apply H_P_i.
    +               eapply Equivalence_Transitive; first apply H_P_i.
                   by apply H_f'.
                 }
                 eapply H_RL ⇒ //.
    @@ -1649,15 +1641,15 @@

    Library MSetsExtra.MSetFoldWithAbort

                   apply H_sub_r.
                   rewrite /M.In M.In_node_iff. tauto.
                 }
    -             have [] : (M.In e' s ∧ E.lt e e'). {
    +             have [] : (M.In e' s ∧ E.lt e e'). {
                   apply H_sub_r.
                   rewrite /M.In M.In_node_iff.
                   right; left.
    -               apply Equivalence_Reflexive.
    +               apply Equivalence_Reflexive.
                 }
                 move ⇒ H_e'_in H_lt_ee'.
                 suff H_P_st1_aux : (P st1 (f e' (f_pre e') (fold f' l st1'))). {
    -               eapply Equivalence_Transitive; first apply H_P_st1_aux.
    +               eapply Equivalence_Transitive; first apply H_P_st1_aux.
                   by apply H_f'.
                 }
                 eapply H_RG ⇒ //.
    @@ -1683,23 +1675,23 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    AVL implementation

    +

    AVL implementation

    The generic tree implementation naturally leads to an AVL one.

    -Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetAVL.Make X.
    -  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.
    +Module MakeAVLSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetAVL.Make X.
    +  Include MakeGenTreeFoldA X Z_as_Int Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    -    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
      Proof.
        intros A B i i' f_pre f f' f_lt f_gt s P.
        move ⇒ H_P_f H_f' H_RL H_RG H_P_ii'.
    @@ -1720,21 +1712,21 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    RBT implementation

    +

    RBT implementation

    The generic tree implementation naturally leads to an RBT one.
    -Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetRBT.Make X.
    -  Include MakeGenTreeFoldA X Color Raw Raw.
    +Module MakeRBTSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetRBT.Make X.
    +  Include MakeGenTreeFoldA X Color Raw Raw.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    -    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt (f: elt → B → A → A) f_gt t (base: A) : A :=
    +    foldWithAbort_Raw f_pre f_lt f f_gt (t.(this)) base.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
      Proof.
        intros A B i i' f_pre f f' f_lt f_gt s P.
        move ⇒ H_P_f H_f' H_RL H_RG H_P_ii'.
    @@ -1755,34 +1747,34 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Sorted Lists Implementation

    +

    Sorted Lists Implementation

    -Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    -  Include MSetList.Make X.
    +Module MakeListSetsWithFoldA (X : OrderedType) <: SetsWithFoldA with Module E := X.
    +  Include MSetList.Make X.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    -  match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) then
    -          acc
    -        else
    -          foldWithAbortRaw f_pre f_lt f f_gt xs acc
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  match t with
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
    +        let pre_x := f_pre x in
    +        let acc := f x (pre_x) acc in
    +        if (f_gt x pre_x acc) then
    +          acc
    +        else
    +          foldWithAbortRaw f_pre f_lt f f_gt xs acc
          )
      end.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    -    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    +    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
      Proof.
        intros A B i i' f_pre f f' f_lt f_gt.
        move ⇒ [] l H_is_ok_l P H_equiv_P.
    @@ -1792,10 +1784,10 @@

    Library MSetsExtra.MSetFoldWithAbort


        set base := l.
        move : i i'.
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    +    have : (∀ e, InA X.eq e base → InA X.eq e l). {
          rewrite /base //.
        }
    -    have : sort X.lt base. {
    +    have : sort X.lt base. {
          rewrite Raw.isok_iff /base //.
        }
        clear H_is_ok_l.
    @@ -1807,7 +1799,7 @@

    Library MSetsExtra.MSetFoldWithAbort

        move ⇒ H_sort H_in_xxs i i' Pii' /=.

    -    have [H_sort_xs H_hd_rel {H_sort}] : Sorted X.lt xs ∧ HdRel X.lt x xs. {
    +    have [H_sort_xs H_hd_rel {H_sort}] : Sorted X.lt xs ∧ HdRel X.lt x xs. {
          by inversion H_sort.
        }

    @@ -1815,18 +1807,18 @@

    Library MSetsExtra.MSetFoldWithAbort

        rewrite (Raw.ML.Inf_alt x H_sort_xs) ⇒ H_lt_xs.

    -    have H_x_in_l : InA X.eq x l. {
    +    have H_x_in_l : InA X.eq x l. {
          apply H_in_xxs.
    -      apply InA_cons_hd.
    +      apply InA_cons_hd.
          apply X.eq_equiv.
        }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    +    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
          intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    +      apply H_in_xxs, InA_cons_tl ⇒ //.
        }
       
    -    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    -      rewrite /flip -H_f' //.
    +    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    +      rewrite /flip -H_f' //.
          apply H_P_f ⇒ //.
        }

    @@ -1835,8 +1827,8 @@

    Library MSetsExtra.MSetFoldWithAbort

          apply IH ⇒ //.
        } {
          move ⇒ H_gt.
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
    +      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    +         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
             apply H_suff ⇒ //.
          }
          move : H_in_xs H_lt_xs.
    @@ -1849,21 +1841,21 @@

    Library MSetsExtra.MSetFoldWithAbort

          } {
            intros H_in_xs H_lt_xs st H_P_st.
            rewrite /=.
    -        have H_x'_in_l : InA X.eq x' l. {
    +        have H_x'_in_l : InA X.eq x' l. {
              apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    +          apply InA_cons_hd, X.eq_equiv.
            }
            apply IH'. {
              intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    +          apply H_in_xs, InA_cons_tl ⇒ //.
            } {
              intros e H.
    -          apply H_lt_xs, InA_cons_tl ⇒ //.
    +          apply H_lt_xs, InA_cons_tl ⇒ //.
            } {
    -          rewrite /flip -H_f' //.
    +          rewrite /flip -H_f' //.
              apply H_RG_x ⇒ //.
              apply H_lt_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    +          apply InA_cons_hd, X.eq_equiv.
            }
          }
        }
    @@ -1879,36 +1871,36 @@

    Library MSetsExtra.MSetFoldWithAbort

    -

    Unsorted Lists without Dups Implementation

    +

    Unsorted Lists without Dups Implementation

    -Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    -  Module Raw := MSetWeakList.MakeRaw X.
    -  Module E := X.
    -  Include WRaw2SetsOn E Raw.
    +Module MakeWeakListSetsWithFoldA (X : OrderedType) <: WSetsWithFoldA with Module E := X.
    +  Module Raw := MSetWeakList.MakeRaw X.
    +  Module E := X.
    +  Include WRaw2SetsOn E Raw.

    -  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    -    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    -  match t with
    -    | nil ⇒ acc
    -    | x :: xs ⇒ (
    -        let pre_x := f_pre x in
    -        let acc := f x (pre_x) acc in
    -        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
    -          acc
    -        else
    -          foldWithAbortRaw f_pre f_lt f f_gt xs acc
    +  Fixpoint foldWithAbortRaw {A B: Type} (f_pre : X.t → B) (f_lt : X.t → B → A → bool)
    +    (f: X.t → B → A → A) (f_gt : X.t → B → A → bool) (t : list X.t) (acc : A) : A :=
    +  match t with
    +    | nil ⇒ acc
    +    | x :: xs ⇒ (
    +        let pre_x := f_pre x in
    +        let acc := f x (pre_x) acc in
    +        if (f_gt x pre_x acc) && (f_lt x pre_x acc) then
    +          acc
    +        else
    +          foldWithAbortRaw f_pre f_lt f f_gt xs acc
          )
      end.

    -  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    -    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.
    +  Definition foldWithAbortPrecompute {A B: Type} f_pre f_lt f f_gt t acc :=
    +    @foldWithAbortRaw A B f_pre f_lt f f_gt t.(this) acc.

    -  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
    +  Lemma foldWithAbortPrecomputeSpec : foldWithAbortPrecomputeSpecPred X.lt In fold (@foldWithAbortPrecompute).
      Proof.
        intros A B i i' f_pre f f' f_lt f_gt.
        move ⇒ [] l H_is_ok_l P H_P_equiv.
    @@ -1918,10 +1910,10 @@

    Library MSetsExtra.MSetFoldWithAbort


        set base := l.
        move : i i'.
    -    have : (∀ e, InA X.eq e base → InA X.eq e l). {
    +    have : (∀ e, InA X.eq e base → InA X.eq e l). {
          rewrite /base //.
        }
    -    have : NoDupA X.eq base. {
    +    have : NoDupA X.eq base. {
          apply H_is_ok_l.
        }
        clear H_is_ok_l.
    @@ -1933,44 +1925,44 @@

    Library MSetsExtra.MSetFoldWithAbort

        move ⇒ H_nodup_xxs H_in_xxs i i' Pii' /=.

    -    have [H_nin_x_xs H_nodup_xs {H_nodup_xxs}] : ¬ InA X.eq x xs ∧ NoDupA X.eq xs. {
    +    have [H_nin_x_xs H_nodup_xs {H_nodup_xxs}] : ¬ InA X.eq x xs ∧ NoDupA X.eq xs. {
          by inversion H_nodup_xxs.
        }

    -    have H_x_in_l : InA X.eq x l. {
    +    have H_x_in_l : InA X.eq x l. {
          apply H_in_xxs.
    -      apply InA_cons_hd.
    +      apply InA_cons_hd.
          apply X.eq_equiv.
        }
    -    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
    +    have H_in_xs : (∀ e : X.t, InA X.eq e xs → InA X.eq e l). {
          intros e H_in.
    -      apply H_in_xxs, InA_cons_tl ⇒ //.
    +      apply H_in_xxs, InA_cons_tl ⇒ //.
        }
       
    -    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    -      rewrite /flip -H_f' //.
    +    have H_P_next : P (f x (f_pre x) i) (flip f' i' x). {
    +      rewrite /flip -H_f' //.
          apply H_P_f ⇒ //.
        }

    -    case_eq (f_gt x (f_pre x) (f x (f_pre x) i) &&
    +    case_eq (f_gt x (f_pre x) (f x (f_pre x) i) &&
                 f_lt x (f_pre x) (f x (f_pre x) i)); last first. {
          move ⇒ _.
          apply IH ⇒ //.
        } {
    -      move ⇒ /andb_true_iff [H_gt H_lt].
    -      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    -         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
    +      move ⇒ /andb_true_iff [H_gt H_lt].
    +      suff H_suff : (∀ st, P (f x (f_pre x) i) st →
    +         P (f x (f_pre x) i) (fold_left (flip f') xs st)). {
             apply H_suff ⇒ //.
          }

    -      have H_neq_xs : ∀ e, List.In e xs → X.lt x e ∨ X.lt e x. {
    +      have H_neq_xs : ∀ e, List.In e xs → X.lt x e ∨ X.lt e x. {
            intros e H_in.

            move : (X.compare_spec x e).
            case (X.compare x e) ⇒ H_cmp; inversion H_cmp. {
              contradict H_nin_x_xs.
    -          rewrite InA_alt.
    +          rewrite InA_alt.
              by ∃ e.
            } {
              by left.
    @@ -1989,24 +1981,24 @@

    Library MSetsExtra.MSetFoldWithAbort

          } {
            intros H_in_xs H_neq_xs st H_P_st.
            rewrite /=.
    -        have H_x'_in_xxs' : List.In x' (x' :: xs'). {
    +        have H_x'_in_xxs' : List.In x' (x' :: xs'). {
              simpl; by left.
            }
    -        have H_x'_in_l : InA X.eq x' l. {
    +        have H_x'_in_l : InA X.eq x' l. {
              apply H_in_xs.
    -          apply InA_cons_hd, X.eq_equiv.
    +          apply InA_cons_hd, X.eq_equiv.
            }
            apply IH'. {
              intros H.
    -          apply H_nin_x_xs, InA_cons_tl ⇒ //.
    +          apply H_nin_x_xs, InA_cons_tl ⇒ //.
            } {
              intros e H.
    -          apply H_in_xs, InA_cons_tl ⇒ //.
    +          apply H_in_xs, InA_cons_tl ⇒ //.
            } {
              intros e H.
    -          apply H_neq_xs, in_cons ⇒ //.
    +          apply H_neq_xs, in_cons ⇒ //.
            } {
    -          rewrite /flip -H_f' //.
    +          rewrite /flip -H_f' //.
              move : (H_neq_xs x' H_x'_in_xxs') ⇒ [] H_cmp. {
                apply H_RG_x ⇒ //.
              } {
    diff --git a/html/MSetsExtra.MSetIntervals.html b/html/MSetsExtra.MSetIntervals.html index 649c296..d66b966 100644 --- a/html/MSetsExtra.MSetIntervals.html +++ b/html/MSetsExtra.MSetIntervals.html @@ -26,7 +26,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Weak sets implemented by interval lists

    +

    Weak sets implemented by interval lists

    @@ -47,113 +47,114 @@

    Library MSetsExtra.MSetIntervals


    -Require Import MSetInterface OrdersFacts OrdersLists.
    -Require Import BinNat.
    +Require Import MSetInterface OrdersFacts OrdersLists.
    +Require Import BinNat.
    Require Import mathcomp.ssreflect.ssreflect.
    -Require Import NArith.
    -Require Import ZArith.
    -Require Import NOrder.
    -Require Import DecidableTypeEx.
    -Module Import NOP := NOrderProp N.
    +Require Import NArith.
    +Require Import ZArith.
    +Require Import NOrder.
    +Require Import Lia.
    +Require Import DecidableTypeEx.
    +Module Import NOP := NOrderProp N.
    Open Scope Z_scope.

    -

    Auxiliary stuff

    +

    Auxiliary stuff

    Simple auxiliary lemmata
    -Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    -  z ≤ z + Z.of_N n.
    +Lemma Z_le_add_r : ∀ (z : Z) (n : N),
    +  z ≤ z + Z.of_N n.
    Proof.
      intros z n.
    -  suff : (z + 0 ≤ z + Z.of_N n). {
    -    rewrite Z.add_0_r //.
    +  suff : (z + 0 ≤ z + Z.of_N n). {
    +    rewrite Z.add_0_r //.
      }
    -  apply Zplus_le_compat_l.
    -  apply N2Z.is_nonneg.
    +  apply Zplus_le_compat_l.
    +  apply N2Z.is_nonneg.
    Qed.

    -Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    -  (n ≠ 0)%N →
    -  z < z + Z.of_N n.
    +Lemma Z_lt_add_r : ∀ (z : Z) (n : N),
    +  (n ≠ 0)%N →
    +  z < z + Z.of_N n.
    Proof.
      move ⇒ z n H_neq_0.
    -  suff : (z + Z.of_N 0 < z + Z.of_N n). {
    -    rewrite Z.add_0_r //.
    +  suff : (z + Z.of_N 0 < z + Z.of_N n). {
    +    rewrite Z.add_0_r //.
      }
    -  apply Z.add_lt_mono_l, N2Z.inj_lt.
    -  by apply N.neq_0_lt_0.
    +  apply Z.add_lt_mono_l, N2Z.inj_lt.
    +  by apply N.neq_0_lt_0.
    Qed.

    -Lemma Z_lt_le_add_r : ∀ y1 y2 c,
    -  y1 < y2 →
    -  y1 ≤ y2 + Z.of_N c.
    +Lemma Z_lt_le_add_r : ∀ y1 y2 c,
    +  y1 < y2 →
    +  y1 ≤ y2 + Z.of_N c.
    Proof.
      intros y1 y2 c H.
    -  apply Z.le_trans with (m := y2). {
    -    by apply Z.lt_le_incl.
    +  apply Z.le_trans with (m := y2). {
    +    by apply Z.lt_le_incl.
      } {
        apply Z_le_add_r.
      }
    Qed.

    -Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    -    y < x →
    -    Z.to_N (x - y) ≠ 0%N.
    +Lemma Z_to_N_minus_neq_0 : ∀ (x y : Z),
    +    y < x →
    +    Z.to_N (x - y) ≠ 0%N.
    Proof.
      intros x y H_y_lt.
    -  apply N.neq_0_lt_0.
    -  apply N2Z.inj_lt.
    -  suff H : 0 < x - y. {
    -    rewrite Z2N.id ⇒ //.
    -    by apply Z.lt_le_incl.
    +  apply N.neq_0_lt_0.
    +  apply N2Z.inj_lt.
    +  suff H : 0 < x - y. {
    +    rewrite Z2N.id ⇒ //.
    +    by apply Z.lt_le_incl.
      }
    -  by apply Z.lt_0_sub.
    +  by apply Z.lt_0_sub.
    Qed.

    -Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    +Lemma add_add_sub_eq : ∀ (x y : Z), (x + (y - x) = y).
    Proof.
      intros x y.
    -  rewrite Z.add_sub_assoc ⇒ //.
    -  rewrite Z.add_sub_swap Z.sub_diag Z.add_0_l //.
    +  rewrite Z.add_sub_assoc ⇒ //.
    +  rewrite Z.add_sub_swap Z.sub_diag Z.add_0_l //.
    Qed.

    -Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    -  NoDupA eqA l →
    -  (∀ x1 x2, List.In x1 l → List.In x2 l →
    -                  eqB (f x1) (f x2) → eqA x1 x2) →
    -  NoDupA eqB (map f l).
    +Lemma NoDupA_map {A B} : ∀ (eqA : A → A → Prop) (eqB : B → B → Prop) (f : A → B) l,
    +  NoDupA eqA l →
    +  (∀ x1 x2, List.In x1 l → List.In x2 l →
    +                  eqB (f x1) (f x2) → eqA x1 x2) →
    +  NoDupA eqB (map f l).
    Proof.
      intros eqA eqB f.
      induction l as [| x xs IH]. {
        move ⇒ _ _; rewrite /=.
    -    apply NoDupA_nil.
    +    apply NoDupA_nil.
      } {
        move ⇒ H_pre H_eqA_impl.
    -    have [H_nin_x H_no_dup_xs] : ¬ InA eqA x xs ∧ NoDupA eqA xs. {
    +    have [H_nin_x H_no_dup_xs] : ¬ InA eqA x xs ∧ NoDupA eqA xs. {
          by inversion_clear H_pre.
        }
        simpl.
    -    apply NoDupA_cons; last first. {
    +    apply NoDupA_cons; last first. {
          apply IH ⇒ //.
          intros x1 x2 H_in_x1 H_in_x2 H_eqB.
          apply H_eqA_impl ⇒ //=; by right.
        }
        move ⇒ H_in_map; apply H_nin_x.
        move : H_in_map.
    -    rewrite !InA_alt ⇒ [[y] [H_eqB_y]].
    -    rewrite in_map_iff ⇒ [[y'] [H_y_eq] H_y'_in].
    +    rewrite !InA_alt ⇒ [[y] [H_eqB_y]].
    +    rewrite in_map_iff ⇒ [[y'] [H_y_eq] H_y'_in].
        subst.
        âˆƒ y'.
        split ⇒ //.
    @@ -169,7 +170,7 @@

    Library MSetsExtra.MSetIntervals

    -

    rev_map

    +

    rev_map

    @@ -177,14 +178,14 @@

    Library MSetsExtra.MSetIntervals

    rev_map is used for efficiency.
    -Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
    -  match l with
    -   | nil ⇒ acc
    -   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
    +Fixpoint rev_map_aux {A B} (f : A → B) (acc : list B) (l : list A) :=
    +  match l with
    +   | nil ⇒ acc
    +   | x :: xs ⇒ rev_map_aux f ((f x)::acc) xs
      end.

    -Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.
    +Definition rev_map {A B} (f : A → B) (l : list A) : list B := rev_map_aux f nil l.

    @@ -193,8 +194,8 @@

    Library MSetsExtra.MSetIntervals

    Lemmata about rev_map
    -Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    -  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    +Lemma rev_map_aux_alt_def {A B} : ∀ (f : A → B) l acc,
    +  rev_map_aux f acc l = List.rev_append (List.map f l) acc.
    Proof.
      intro f.
      induction l as [| x xs IH]. {
    @@ -207,18 +208,18 @@

    Library MSetsExtra.MSetIntervals

    Qed.

    -Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    -  rev_map f l = List.rev (List.map f l).
    +Lemma rev_map_alt_def {A B} : ∀ (f : A → B) l,
    +  rev_map f l = List.rev (List.map f l).
    Proof.
      intros f l.
    -  rewrite /rev_map rev_map_aux_alt_def -rev_alt //.
    +  rewrite /rev_map rev_map_aux_alt_def -rev_alt //.
    Qed.

    -

    Encoding Elements

    +

    Encoding Elements

    @@ -230,12 +231,12 @@

    Library MSetsExtra.MSetIntervals


    -Module Type ElementEncode.
    -  Declare Module E : OrderedType.
    +Module Type ElementEncode.
    +  Declare Module E : OrderedType.

    -  Parameter encode : E.t → Z.
    -  Parameter decode : Z → E.t.
    +  Parameter encode : E.t → Z.
    +  Parameter decode : Z → E.t.

    @@ -243,12 +244,12 @@

    Library MSetsExtra.MSetIntervals

    Decoding is the inverse of encoding. Notice that the reverse is not demanded. This means that - we do need to provide for all integers z an - element e with encode v = z. + we do need to provide for all integers z an + element e with encode v = z.
    -  Axiom decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +  Axiom decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.

    @@ -257,8 +258,8 @@

    Library MSetsExtra.MSetIntervals

    Encoding is compatible with the equality of elements.
    -  Axiom encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Axiom encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.

    @@ -267,8 +268,8 @@

    Library MSetsExtra.MSetIntervals

    Encoding is compatible with the order of elements.
    -  Axiom encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Axiom encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.

    End ElementEncode.
    @@ -277,7 +278,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Set Operations

    +

    Set Operations

    @@ -301,8 +302,8 @@

    Library MSetsExtra.MSetIntervals

    - Intervals we represent by tuples (Z, N). The tuple (z, c) represents the - interval z-(z+c). + Intervals we represent by tuples (Z, N). The tuple (z, c) represents the + interval z-(z+c).
    @@ -312,9 +313,9 @@

    Library MSetsExtra.MSetIntervals

    -Module Ops (Enc : ElementEncode) <: Ops Enc.E.
    -  Definition elt := Enc.E.t.
    -  Definition t := list (Z × N).
    +Module Ops (Enc : ElementEncode) <: Ops Enc.E.
    +  Definition elt := Enc.E.t.
    +  Definition t := list (Z × N).

    @@ -323,8 +324,8 @@

    Library MSetsExtra.MSetIntervals

    The empty list is trivial to define and check for.
    -  Definition empty : t := nil.
    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Definition empty : t := nil.
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.

    @@ -336,46 +337,46 @@

    Library MSetsExtra.MSetIntervals

    if it needs to be executable.
    -  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
    +  Lemma acc_pred : ∀ n p, n = Npos p → Acc N.lt n → Acc N.lt (N.pred n).
      Proof.
        intros n p H0 H1.
        apply H1.
        rewrite H0.
    -    apply N.lt_pred_l.
    +    apply N.lt_pred_l.
        discriminate.
      Defined.

    -  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    -    match c as c0 return c = c0 → (bool × A) with
    -    | N0 ⇒ fun _ ⇒ (false, acc)
    -    | c ⇒ fun Heq ⇒ match (f acc x) with
    -        | None ⇒ (true, acc)
    -        | Some acc' ⇒
    -          fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    -    end (refl_equal _).
    +  Fixpoint fold_elementsZ_aux {A} (f : A → Z → option A) (acc : A) (x : Z) (c : N) (H : Acc N.lt c) { struct H } : (bool × A) :=
    +    match c as c0 return c = c0 → (bool × A) with
    +    | N0 ⇒ fun _ ⇒ (false, acc)
    +    | c ⇒ fun Heq ⇒ match (f acc x) with
    +        | None ⇒ (true, acc)
    +        | Some acc' ⇒
    +          fold_elementsZ_aux f acc' (Z.succ x) (N.pred c) (acc_pred _ _ Heq H) end
    +    end (refl_equal _).

    -  Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _).
    +  Definition fold_elementsZ_single {A} f (acc : A) x c := fold_elementsZ_aux f acc x c (lt_wf_0 _).

    -  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
    -    match s with
    -    | nil ⇒ (false, acc)
    -    | (x, c) :: s' ⇒
    -      match fold_elementsZ_single f acc x c with
    -          (false, acc') ⇒ fold_elementsZ f acc' s'
    -        | (true, acc') ⇒ (true, acc')
    +  Fixpoint fold_elementsZ {A} f (acc : A) (s : t) : (bool × A) :=
    +    match s with
    +    | nil ⇒ (false, acc)
    +    | (x, c) :: s' ⇒
    +      match fold_elementsZ_single f acc x c with
    +          (false, acc') ⇒ fold_elementsZ f acc' s'
    +        | (true, acc') ⇒ (true, acc')
          end
        end.

    -  Definition elementsZ (s : t) : list Z :=
    -    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).
    +  Definition elementsZ (s : t) : list Z :=
    +    snd (fold_elementsZ (fun l x ⇒ Some (x :: l)) nil s).

    -  Definition elements (s : t) : list elt :=
    -    rev_map Enc.decode (elementsZ s).
    +  Definition elements (s : t) : list elt :=
    +    rev_map Enc.decode (elementsZ s).

    @@ -384,17 +385,17 @@

    Library MSetsExtra.MSetIntervals

    membership is easily defined
    -  Fixpoint memZ (x : Z) (s : t) :=
    -    match s with
    -    | nil ⇒ false
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then false else
    -        if (Z.ltb x (y+Z.of_N c)) then true else
    -        memZ x l
    +  Fixpoint memZ (x : Z) (s : t) :=
    +    match s with
    +    | nil ⇒ false
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then false else
    +        if (Z.ltb x (y+Z.of_N c)) then true else
    +        memZ x l
        end.

    -  Definition mem (x : elt) (s : t) := memZ (Enc.encode x) s.
    +  Definition mem (x : elt) (s : t) := memZ (Enc.encode x) s.

    @@ -403,71 +404,71 @@

    Library MSetsExtra.MSetIntervals

    Comparing intervals
    -  Inductive interval_compare_result :=
    -      ICR_before
    -    | ICR_before_touch
    -    | ICR_overlap_before
    -    | ICR_overlap_after
    -    | ICR_equal
    -    | ICR_subsume_1
    -    | ICR_subsume_2
    -    | ICR_after
    -    | ICR_after_touch.
    - -
    -  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    -    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    -                match (Z.compare yc1 y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒
    -                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    -                        | (Lt, Lt) ⇒ ICR_overlap_before
    -                        | (Lt, _) ⇒ ICR_subsume_2
    -                        | (Eq, Lt) ⇒ ICR_subsume_1
    -                        | (Eq, Gt) ⇒ ICR_subsume_2
    -                        | (Eq, Eq) ⇒ ICR_equal
    -                        | (Gt, Gt) ⇒ ICR_overlap_after
    -                        | (Gt, _) ⇒ ICR_subsume_1
    +  Inductive interval_compare_result :=
    +      ICR_before
    +    | ICR_before_touch
    +    | ICR_overlap_before
    +    | ICR_overlap_after
    +    | ICR_equal
    +    | ICR_subsume_1
    +    | ICR_subsume_2
    +    | ICR_after
    +    | ICR_after_touch.
    + +
    +  Definition interval_compare (i1 i2 : (Z × N)) : interval_compare_result :=
    +    match (i1, i2) with ((y1, c1), (y2, c2)) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ let yc1 := (y1+Z.of_N c1) in
    +                match (Z.compare yc1 y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒
    +                        match (Z.compare y1 y2, Z.compare yc1 yc2) with
    +                        | (Lt, Lt) ⇒ ICR_overlap_before
    +                        | (Lt, _) ⇒ ICR_subsume_2
    +                        | (Eq, Lt) ⇒ ICR_subsume_1
    +                        | (Eq, Gt) ⇒ ICR_subsume_2
    +                        | (Eq, Eq) ⇒ ICR_equal
    +                        | (Gt, Gt) ⇒ ICR_overlap_after
    +                        | (Gt, _) ⇒ ICR_subsume_1
                            end
                    end
          end
        end.

    -  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    -    match i with (y2, c2) ⇒
    -      let yc2 := (y2+Z.of_N c2) in
    -      match (Z.compare yc2 y1) with
    -        | Lt ⇒ ICR_after
    -        | Eq ⇒ ICR_after_touch
    -        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    -                | Lt ⇒ ICR_before
    -                | Eq ⇒ ICR_before_touch
    -                | Gt ⇒ ICR_subsume_1
    +  Definition interval_1_compare (y1 : Z) (i : (Z × N)) : interval_compare_result :=
    +    match i with (y2, c2) ⇒
    +      let yc2 := (y2+Z.of_N c2) in
    +      match (Z.compare yc2 y1) with
    +        | Lt ⇒ ICR_after
    +        | Eq ⇒ ICR_after_touch
    +        | Gt ⇒ match (Z.compare (Z.succ y1) y2) with
    +                | Lt ⇒ ICR_before
    +                | Eq ⇒ ICR_before_touch
    +                | Gt ⇒ ICR_subsume_1
                    end
          end
        end.

    -  Fixpoint compare (s1 s2 : t) :=
    -    match (s1, s2) with
    -      | (nil, nil) ⇒ Eq
    -      | (nil, _ :: _) ⇒ Lt
    -      | (_ :: _, nil) ⇒ Gt
    -      | ((y1, c1)::s1', (y2, c2)::s2') ⇒
    -        match (Z.compare y1 y2) with
    -          | Lt ⇒ Lt
    -          | Gt ⇒ Gt
    -          | Eq ⇒ match N.compare c1 c2 with
    -                    | Lt ⇒ Lt
    -                    | Gt ⇒ Gt
    -                    | Eq ⇒ compare s1' s2'
    +  Fixpoint compare (s1 s2 : t) :=
    +    match (s1, s2) with
    +      | (nil, nil) ⇒ Eq
    +      | (nil, _ :: _) ⇒ Lt
    +      | (_ :: _, nil) ⇒ Gt
    +      | ((y1, c1)::s1', (y2, c2)::s2') ⇒
    +        match (Z.compare y1 y2) with
    +          | Lt ⇒ Lt
    +          | Gt ⇒ Gt
    +          | Eq ⇒ match N.compare c1 c2 with
    +                    | Lt ⇒ Lt
    +                    | Gt ⇒ Gt
    +                    | Eq ⇒ compare s1' s2'
                      end
            end
        end.
    @@ -479,18 +480,18 @@

    Library MSetsExtra.MSetIntervals

    Auxiliary functions for inserting at front and merging intervals
    -  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    -    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).
    - -
    -  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
    -    match l with
    -    | nil ⇒ (x,c)::nil
    -    | (y, c')::l' ⇒
    -         match (Z.compare (x + Z.of_N c) y) with
    -         | Lt ⇒ (x, c) :: l
    -         | Eq ⇒ (x, (c+c')%N) :: l'
    -         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y c') l'
    +  Definition merge_interval_size (x1 : Z) (c1 : N) (x2 : Z) (c2 : N) : N :=
    +    (N.max c1 (Z.to_N (x2 + Z.of_N c2 - x1))).
    + +
    +  Fixpoint insert_interval_begin (x : Z) (c : N) (l : t) :=
    +    match l with
    +    | nil ⇒ (x,c)::nil
    +    | (y, c')::l' ⇒
    +         match (Z.compare (x + Z.of_N c) y) with
    +         | Lt ⇒ (x, c) :: l
    +         | Eq ⇒ (x, (c+c')%N) :: l'
    +         | Gt ⇒ insert_interval_begin x (merge_interval_size x c y c') l'
             end
        end.
    @@ -502,22 +503,22 @@

    Library MSetsExtra.MSetIntervals

    generate efficient code
    -  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
    -    match s with
    -    | nil ⇒ List.rev' ((x, (1%N))::acc)
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    -          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    -          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    -          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    -          | _ ⇒ List.rev_append ((y, c)::acc) l
    +  Fixpoint addZ_aux (acc : list (Z × N)) (x : Z) (s : t) :=
    +    match s with
    +    | nil ⇒ List.rev' ((x, (1%N))::acc)
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ List.rev_append ((x, (1%N))::acc) s
    +          | ICR_before_touch ⇒ List.rev_append ((x, N.succ c)::acc) l
    +          | ICR_after ⇒ addZ_aux ((y,c) :: acc) x l
    +          | ICR_after_touch ⇒ List.rev_append acc (insert_interval_begin y (N.succ c) l)
    +          | _ ⇒ List.rev_append ((y, c)::acc) l
            end
        end.

    -  Definition addZ x s := addZ_aux nil x s.
    -  Definition add x s := addZ (Enc.encode x) s.
    +  Definition addZ x s := addZ_aux nil x s.
    +  Definition add x s := addZ (Enc.encode x) s.

    @@ -527,11 +528,11 @@

    Library MSetsExtra.MSetIntervals

    This is used to define the function from_elements.
    -  Definition add_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ add x s) l s.
    +  Definition add_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ add x s) l s.

    -  Definition from_elements (l : list elt) : t := add_list l empty.
    +  Definition from_elements (l : list elt) : t := add_list l empty.

    @@ -540,10 +541,10 @@

    Library MSetsExtra.MSetIntervals

    singleton is trivial to define
    -  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.
    +  Definition singleton (x : elt) : t := (Enc.encode x, 1%N) :: nil.

    -  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
    +  Lemma singleton_alt_def : ∀ x, singleton x = add x empty.
      Proof. by []. Qed.

    @@ -553,29 +554,29 @@

    Library MSetsExtra.MSetIntervals

    removing needs to be done with code extraction in mind again.
    -  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    -     if (N.eqb c 0) then s else (x, c) :: s.
    - -
    -  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
    -    match s with
    -    | nil ⇒ List.rev' acc
    -    | (y, c) :: l ⇒
    -        if (Z.ltb x y) then List.rev_append acc s else
    -        if (Z.ltb x (y+Z.of_N c)) then (
    -           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    -              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    -             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    -        ) else removeZ_aux ((y,c)::acc) x l
    +  Definition insert_intervalZ_guarded (x : Z) (c : N) s :=
    +     if (N.eqb c 0) then s else (x, c) :: s.
    + +
    +  Fixpoint removeZ_aux (acc : list (Z × N)) (x : Z) (s : t) : t :=
    +    match s with
    +    | nil ⇒ List.rev' acc
    +    | (y, c) :: l ⇒
    +        if (Z.ltb x y) then List.rev_append acc s else
    +        if (Z.ltb x (y+Z.of_N c)) then (
    +           List.rev_append (insert_intervalZ_guarded (Z.succ x)
    +              (Z.to_N ((y+Z.of_N c)- (Z.succ x)))
    +             (insert_intervalZ_guarded y (Z.to_N (x-y)) acc)) l
    +        ) else removeZ_aux ((y,c)::acc) x l
        end.

    -  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
    -  Definition remove (x : elt) (s : t) : t := removeZ (Enc.encode x) s.
    +  Definition removeZ (x : Z) (s : t) : t := removeZ_aux nil x s.
    +  Definition remove (x : elt) (s : t) : t := removeZ (Enc.encode x) s.

    -  Definition remove_list (l : list elt) (s : t) : t :=
    -     List.fold_left (fun s x ⇒ remove x s) l s.
    +  Definition remove_list (l : list elt) (s : t) : t :=
    +     List.fold_left (fun s x ⇒ remove x s) l s.

    @@ -584,32 +585,32 @@

    Library MSetsExtra.MSetIntervals

    union
    -  Fixpoint union_aux (s1 : t) :=
    -    fix aux (s2 : t) (acc : list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +  Fixpoint union_aux (s1 : t) :=
    +    fix aux (s2 : t) (acc : list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
    -              union_aux l1 (
    -               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
    -          | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              union_aux l1 (
    +               insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ aux l2 ((y2, c2)::acc)
    +          | ICR_after_touch ⇒ union_aux l1 (
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
    -              union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc
    +              union_aux l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2) acc
              | ICR_overlap_after ⇒
    -              union_aux l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2) acc
    -          | ICR_equal ⇒ union_aux l1 s2 acc
    -          | ICR_subsume_1 ⇒ union_aux l1 s2 acc
    -          | ICR_subsume_2 ⇒ aux l2 acc
    +              union_aux l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2) acc
    +          | ICR_equal ⇒ union_aux l1 s2 acc
    +          | ICR_subsume_1 ⇒ union_aux l1 s2 acc
    +          | ICR_subsume_2 ⇒ aux l2 acc
            end
        end.

    -  Definition union s1 s2 := union_aux s1 s2 nil.
    +  Definition union s1 s2 := union_aux s1 s2 nil.

    @@ -620,38 +621,38 @@

    Library MSetsExtra.MSetIntervals


    -  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    -    match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    -          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    -          | ICR_equal ⇒ (acc, l1)
    -          | ICR_subsume_1 ⇒ diff_aux y2 c2 acc l1
    -          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    -                (Z.to_N (y2 - y1)) acc),
    -              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
    +  Fixpoint diff_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +    match s with
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_before_touch ⇒ diff_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ diff_aux y2 c2 ((y1, Z.to_N (y2 - y1))::acc) l1
    +          | ICR_overlap_after ⇒ (acc, (y2+Z.of_N c2, Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) :: l1)
    +          | ICR_equal ⇒ (acc, l1)
    +          | ICR_subsume_1 ⇒ diff_aux y2 c2 acc l1
    +          | ICR_subsume_2 ⇒ ((insert_intervalZ_guarded y1
    +                (Z.to_N (y2 - y1)) acc),
    +              insert_intervalZ_guarded (y2+Z.of_N c2) (Z.to_N ((y1 + Z.of_N c1) - (y2 + Z.of_N c2))) l1)
            end
        end.

    -  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ rev_append acc s1
    -    | (_, nil) ⇒ rev_append acc s1
    -    | (_, (y2, c2) :: l2) ⇒
    -      match diff_aux y2 c2 acc s1 with
    -        (acc', s1') ⇒ diff_aux2 acc' s1' l2
    +  Fixpoint diff_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ rev_append acc s1
    +    | (_, nil) ⇒ rev_append acc s1
    +    | (_, (y2, c2) :: l2) ⇒
    +      match diff_aux y2 c2 acc s1 with
    +        (acc', s1') ⇒ diff_aux2 acc' s1' l2
          end
        end.

    -  Definition diff s1 s2 := diff_aux2 nil s1 s2.
    +  Definition diff s1 s2 := diff_aux2 nil s1 s2.

    @@ -660,22 +661,22 @@

    Library MSetsExtra.MSetIntervals

    subset
    -  Fixpoint subset (s1 : t) :=
    -    fix aux (s2 : t) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    -          | ICR_after ⇒ aux l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    -          | ICR_equal ⇒ subset l1 l2
    -          | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +  Fixpoint subset (s1 : t) :=
    +    fix aux (s2 : t) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
    +          | ICR_after ⇒ aux l2
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
    +          | ICR_equal ⇒ subset l1 l2
    +          | ICR_subsume_1 ⇒ subset l1 s2
    +          | ICR_subsume_2 ⇒ false
            end
        end.
    @@ -686,10 +687,10 @@

    Library MSetsExtra.MSetIntervals

    equal
    -  Fixpoint equal (s s' : t) : bool := match s, s' with
    -    | nil, nil ⇒ true
    -    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    -    | _, _ ⇒ false
    +  Fixpoint equal (s s' : t) : bool := match s, s' with
    +    | nil, nil ⇒ true
    +    | ((x,cx)::xs), ((y,cy)::ys) ⇒ andb (Z.eqb x y) (andb (N.eqb cx cy) (equal xs ys))
    +    | _, _ ⇒ false
      end.

    @@ -699,36 +700,36 @@

    Library MSetsExtra.MSetIntervals

    inter
    -  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    -    match s with
    -    | nil ⇒ (acc, nil)
    -    | ((y1, c1) :: l1) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ inter_aux y2 c2 acc l1
    -          | ICR_before_touch ⇒ inter_aux y2 c2 acc l1
    -          | ICR_after ⇒ (acc, s)
    -          | ICR_after_touch ⇒ (acc, s)
    -          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    -          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    -          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    -          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    -          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
    +  Fixpoint inter_aux (y2 : Z) (c2 : N) (acc : list (Z × N)) (s : t) : (list (Z × N) × t) :=
    +    match s with
    +    | nil ⇒ (acc, nil)
    +    | ((y1, c1) :: l1) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ inter_aux y2 c2 acc l1
    +          | ICR_before_touch ⇒ inter_aux y2 c2 acc l1
    +          | ICR_after ⇒ (acc, s)
    +          | ICR_after_touch ⇒ (acc, s)
    +          | ICR_overlap_before ⇒ inter_aux y2 c2 ((y2, Z.to_N (y1 + Z.of_N c1 - y2))::acc) l1
    +          | ICR_overlap_after ⇒ ((y1, Z.to_N (y2 + Z.of_N c2 - y1))::acc, s)
    +          | ICR_equal ⇒ ((y1,c1)::acc, l1)
    +          | ICR_subsume_1 ⇒ inter_aux y2 c2 ((y1, c1)::acc) l1
    +          | ICR_subsume_2 ⇒ ((y2, c2)::acc, s)
            end
        end.

    -  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev' acc
    -    | (_, nil) ⇒ List.rev' acc
    -    | (_, (y2, c2) :: l2) ⇒
    -      match inter_aux y2 c2 acc s1 with
    -        (acc', s1') ⇒ inter_aux2 acc' s1' l2
    +  Fixpoint inter_aux2 (acc : list (Z × N)) (s1 s2 : t) : (list (Z × N)) :=
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev' acc
    +    | (_, nil) ⇒ List.rev' acc
    +    | (_, (y2, c2) :: l2) ⇒
    +      match inter_aux y2 c2 acc s1 with
    +        (acc', s1') ⇒ inter_aux2 acc' s1' l2
          end
        end.

    -  Definition inter s1 s2 := inter_aux2 nil s1 s2.
    +  Definition inter s1 s2 := inter_aux2 nil s1 s2.

    @@ -739,95 +740,95 @@

    Library MSetsExtra.MSetIntervals


    -  Definition partitionZ_fold_insert
    -             (cur : option (Z × N)) (x : Z) :=
    -    match cur with
    -       None ⇒ (x, 1%N)
    -     | Some (y, c) ⇒ (y, N.succ c)
    +  Definition partitionZ_fold_insert
    +             (cur : option (Z × N)) (x : Z) :=
    +    match cur with
    +       None ⇒ (x, 1%N)
    +     | Some (y, c) ⇒ (y, N.succ c)
        end.

    -  Definition partitionZ_fold_skip (acc : list (Z × N))
    -             (cur : option (Z × N)) : (list (Z × N)) :=
    -    match cur with
    -       None ⇒ acc
    -     | Some yc ⇒ yc::acc
    +  Definition partitionZ_fold_skip (acc : list (Z × N))
    +             (cur : option (Z × N)) : (list (Z × N)) :=
    +    match cur with
    +       None ⇒ acc
    +     | Some yc ⇒ yc::acc
        end.

    -  Definition partitionZ_fold_fun f st (x : Z) :=
    -    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
    -      if (f x) then
    -        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    -         (partitionZ_fold_skip acc_f c_f, None))
    -      else
    -        ((partitionZ_fold_skip acc_t c_t, None),
    -         (acc_f, Some (partitionZ_fold_insert c_f x)))
    +  Definition partitionZ_fold_fun f st (x : Z) :=
    +    match st with ((acc_t, c_t), (acc_f, c_f)) ⇒
    +      if (f x) then
    +        ((acc_t, Some (partitionZ_fold_insert c_t x)),
    +         (partitionZ_fold_skip acc_f c_f, None))
    +      else
    +        ((partitionZ_fold_skip acc_t c_t, None),
    +         (acc_f, Some (partitionZ_fold_insert c_f x)))
        end.

    -  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).
    +  Definition partitionZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (partitionZ_fold_fun f st x)) st x c).

    -  Definition partitionZ_single f acc_t acc_f x c :=
    -    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    -    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    -        (partitionZ_fold_skip acc_t c_t,
    -         partitionZ_fold_skip acc_f c_f)
    +  Definition partitionZ_single f acc_t acc_f x c :=
    +    match partitionZ_single_aux f ((acc_t, None), (acc_f, None)) x c with
    +    | ((acc_t, c_t), (acc_f, c_f)) ⇒
    +        (partitionZ_fold_skip acc_t c_t,
    +         partitionZ_fold_skip acc_f c_f)
        end.

    -  Fixpoint partitionZ_aux acc_t acc_f f s :=
    -    match s with
    -    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    -    | (y, c) :: s' ⇒
    -      match partitionZ_single f acc_t acc_f y c with
    -      | (acc_t', acc_f') ⇒ partitionZ_aux acc_t' acc_f' f s'
    +  Fixpoint partitionZ_aux acc_t acc_f f s :=
    +    match s with
    +    | nil ⇒ (List.rev acc_t, List.rev acc_f)
    +    | (y, c) :: s' ⇒
    +      match partitionZ_single f acc_t acc_f y c with
    +      | (acc_t', acc_f') ⇒ partitionZ_aux acc_t' acc_f' f s'
          end
        end.

    -  Definition partitionZ := partitionZ_aux nil nil.
    +  Definition partitionZ := partitionZ_aux nil nil.

    -  Definition partition (f : elt → bool) : t → (t × t) :=
    -    partitionZ (fun z ⇒ f (Enc.decode z)).
    +  Definition partition (f : elt → bool) : t → (t × t) :=
    +    partitionZ (fun z ⇒ f (Enc.decode z)).

    -  Definition filterZ_fold_fun f st (x : Z) :=
    -    match st with (acc_t, c_t) ⇒
    -      if (f x) then
    -        (acc_t, Some (partitionZ_fold_insert c_t x))
    -      else
    -        (partitionZ_fold_skip acc_t c_t, None)
    +  Definition filterZ_fold_fun f st (x : Z) :=
    +    match st with (acc_t, c_t) ⇒
    +      if (f x) then
    +        (acc_t, Some (partitionZ_fold_insert c_t x))
    +      else
    +        (partitionZ_fold_skip acc_t c_t, None)
        end.

    -  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    -    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).
    +  Definition filterZ_single_aux f st (x : Z) (c : N) :=
    +    snd (fold_elementsZ_single (fun st x ⇒ Some (filterZ_fold_fun f st x)) st x c).

    -  Definition filterZ_single f acc x c :=
    -    match filterZ_single_aux f (acc, None) x c with
    -    | (acc, c) ⇒
    -        (partitionZ_fold_skip acc c)
    +  Definition filterZ_single f acc x c :=
    +    match filterZ_single_aux f (acc, None) x c with
    +    | (acc, c) ⇒
    +        (partitionZ_fold_skip acc c)
        end.

    -  Fixpoint filterZ_aux acc f s :=
    -    match s with
    -    | nil ⇒ (List.rev acc)
    -    | (y, c) :: s' ⇒
    -      filterZ_aux (filterZ_single f acc y c) f s'
    +  Fixpoint filterZ_aux acc f s :=
    +    match s with
    +    | nil ⇒ (List.rev acc)
    +    | (y, c) :: s' ⇒
    +      filterZ_aux (filterZ_single f acc y c) f s'
        end.

    -  Definition filterZ := filterZ_aux nil.
    +  Definition filterZ := filterZ_aux nil.

    -  Definition filter (f : elt → bool) : t → t :=
    -    filterZ (fun z ⇒ f (Enc.decode z)).
    +  Definition filter (f : elt → bool) : t → t :=
    +    filterZ (fun z ⇒ f (Enc.decode z)).

    @@ -840,62 +841,62 @@

    Library MSetsExtra.MSetIntervals


    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    snd (fold_elementsZ (fun b z ⇒ Some (f (Enc.decode z) b)) i s).

    -  Definition for_all (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    -      if b then
    -        Some (f (Enc.decode z))
    -      else None) true s).
    +  Definition for_all (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
    +      if b then
    +        Some (f (Enc.decode z))
    +      else None) true s).

    -  Definition exists_ (f : elt → bool) (s : t) : bool :=
    -    snd (fold_elementsZ (fun b z ⇒
    -      if b then
    -        None
    -      else Some (f (Enc.decode z))) false s).
    +  Definition exists_ (f : elt → bool) (s : t) : bool :=
    +    snd (fold_elementsZ (fun b z ⇒
    +      if b then
    +        None
    +      else Some (f (Enc.decode z))) false s).

    -  Fixpoint cardinalN c (s : t) : N := match s with
    -    | nil ⇒ c
    -    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
    +  Fixpoint cardinalN c (s : t) : N := match s with
    +    | nil ⇒ c
    +    | (_,cx)::xs ⇒ cardinalN (c + cx)%N xs
      end.

    -  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).
    +  Definition cardinal (s : t) : nat := N.to_nat (cardinalN (0%N) s).

    -  Definition min_eltZ (s : t) : option Z :=
    -    match s with
    -    | nil ⇒ None
    -    | (x, _) :: _ ⇒ Some x
    +  Definition min_eltZ (s : t) : option Z :=
    +    match s with
    +    | nil ⇒ None
    +    | (x, _) :: _ ⇒ Some x
        end.

    -  Definition min_elt (s : t) : option elt :=
    -    match (min_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +  Definition min_elt (s : t) : option elt :=
    +    match (min_eltZ s) with
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

    -  Definition choose := min_elt.
    +  Definition choose := min_elt.

    -  Fixpoint max_eltZ (s : t) : option Z :=
    -    match s with
    -    | nil ⇒ None
    -    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    -    | (x, _) :: s' ⇒ max_eltZ s'
    +  Fixpoint max_eltZ (s : t) : option Z :=
    +    match s with
    +    | nil ⇒ None
    +    | (x, c) :: nil ⇒ Some (Z.pred (x + Z.of_N c))
    +    | (x, _) :: s' ⇒ max_eltZ s'
        end.

    -  Definition max_elt (s : t) : option elt :=
    -    match (max_eltZ s) with
    -    | None ⇒ None
    -    | Some x ⇒ Some (Enc.decode x)
    +  Definition max_elt (s : t) : option elt :=
    +    match (max_eltZ s) with
    +    | None ⇒ None
    +    | Some x ⇒ Some (Enc.decode x)
        end.

    @@ -905,7 +906,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Raw Module

    +

    Raw Module

    @@ -917,62 +918,60 @@

    Library MSetsExtra.MSetIntervals

    the WSetsOn interface.
    -Module Raw (Enc : ElementEncode).
    +Module Raw (Enc : ElementEncode).
      Include (Ops Enc).

    -

    Defining invariant IsOk

    +

    Defining invariant IsOk

    -  Definition is_encoded_elems_list (l : list Z) : Prop :=
    -    (∀ x, List.In x l → ∃ e, Enc.encode e = x).
    +  Definition is_encoded_elems_list (l : list Z) : Prop :=
    +    (∀ x, List.In x l → ∃ e, Enc.encode e = x).

    -  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
    -    match l with
    -      | nil ⇒ true
    -      | (y, _)::_ ⇒ Z.ltb x y
    +  Definition interval_list_elements_greater (x : Z) (l : t) : bool :=
    +    match l with
    +      | nil ⇒ true
    +      | (y, _)::_ ⇒ Z.ltb x y
        end.

    -  Fixpoint interval_list_invariant (l : t) :=
    -   match l with
    -   | nil ⇒ true
    -   | (x, c) :: l' ⇒
    -       interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l'
    +  Fixpoint interval_list_invariant (l : t) :=
    +   match l with
    +   | nil ⇒ true
    +   | (x, c) :: l' ⇒
    +       interval_list_elements_greater (x + (Z.of_N c)) l' && negb (N.eqb c 0) && interval_list_invariant l'
       end.

    -  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).
    +  Definition IsOk s := (interval_list_invariant s = true ∧ is_encoded_elems_list (elementsZ s)).

    -

    Defining notations

    +

    Defining notations

    -  Section ForNotations.
    +  Section ForNotations.

    -    Class Ok (s:t) : Prop := ok : IsOk s.
    -    Hint Resolve @ok.
    -    Hint Unfold Ok.
    -    Instance IsOk_Ok s `(Hs : IsOk s) : Ok s := { ok := Hs }.
    +    Class Ok (s:t) : Prop := ok : IsOk s.
    +    Instance IsOk_Ok s `(Hs : IsOk s) : Ok s := { ok := Hs }.

    -    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    -    Definition InZ x s := (List.In x (elementsZ s)).
    -    Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -    Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -    Definition Empty s := ∀ a : elt, ¬ In a s.
    -    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.
    +    Definition In x s := (SetoidList.InA Enc.E.eq x (elements s)).
    +    Definition InZ x s := (List.In x (elementsZ s)).
    +    Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +    Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +    Definition Empty s := ∀ a : elt, ¬ In a s.
    +    Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +    Definition Exists (P : elt → Prop) (s : t) := ∃ x, In x s ∧ P x.

      End ForNotations.
    @@ -981,7 +980,7 @@

    Library MSetsExtra.MSetIntervals

    -

    elements list properties

    +

    elements list properties

    @@ -994,122 +993,122 @@

    Library MSetsExtra.MSetIntervals


    -  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
    +  Lemma elementsZ_nil : (elementsZ (nil : t) = nil).
      Proof. done. Qed.

    -  Lemma elements_nil : (elements (nil : t) = nil).
    +  Lemma elements_nil : (elements (nil : t) = nil).
      Proof. done. Qed.

    -  Definition elementsZ_single (x:Z) (c:N) :=
    -      List.rev' (N.peano_rec (fun _ ⇒ list Z)
    -                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).
    +  Definition elementsZ_single (x:Z) (c:N) :=
    +      List.rev' (N.peano_rec (fun _ ⇒ list Z)
    +                  nil (fun n ls ⇒ (x+Z.of_N n)%Z :: ls) c).

    -  Definition elements_single x c :=
    -    List.map Enc.decode (elementsZ_single x c).
    +  Definition elements_single x c :=
    +    List.map Enc.decode (elementsZ_single x c).

    -  Lemma elementsZ_single_base : ∀ x,
    -    elementsZ_single x (0%N) = nil.
    +  Lemma elementsZ_single_base : ∀ x,
    +    elementsZ_single x (0%N) = nil.
      Proof. done. Qed.

    -  Lemma elementsZ_single_succ : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    elementsZ_single x c ++ (x+Z.of_N c)::nil.
    +  Lemma elementsZ_single_succ : ∀ x c,
    +    elementsZ_single x (N.succ c) =
    +    elementsZ_single x c ++ (x+Z.of_N c)::nil.
      Proof.
        intros x c.
    -    rewrite /elementsZ_single N.peano_rec_succ /rev' -!rev_alt //.
    +    rewrite /elementsZ_single N.peano_rec_succ /rev' -!rev_alt //.
      Qed.

    -  Lemma elementsZ_single_add : ∀ x c2 c1,
    -    elementsZ_single x (c1 + c2)%N =
    -    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
    +  Lemma elementsZ_single_add : ∀ x c2 c1,
    +    elementsZ_single x (c1 + c2)%N =
    +    elementsZ_single x c1 ++ elementsZ_single (x+Z.of_N c1) c2.
      Proof.
        intros x.
    -    induction c2 as [| c2' IH] using N.peano_ind. {
    +    induction c2 as [| c2' IH] using N.peano_ind. {
          move ⇒ c1.
    -      rewrite elementsZ_single_base /= app_nil_r N.add_0_r //.
    +      rewrite elementsZ_single_base /= app_nil_r N.add_0_r //.
        } {
          move ⇒ c1.
    -      rewrite N.add_succ_r !elementsZ_single_succ IH app_assoc N2Z.inj_add Z.add_assoc //.
    +      rewrite N.add_succ_r !elementsZ_single_succ IH app_assoc N2Z.inj_add Z.add_assoc //.
        }
      Qed.

    -  Lemma elementsZ_single_succ_front : ∀ x c,
    -    elementsZ_single x (N.succ c) =
    -    x :: elementsZ_single (Z.succ x) c.
    +  Lemma elementsZ_single_succ_front : ∀ x c,
    +    elementsZ_single x (N.succ c) =
    +    x :: elementsZ_single (Z.succ x) c.
      Proof.
        intros x c.
    -    rewrite -N.add_1_l elementsZ_single_add.
    -    rewrite N.one_succ elementsZ_single_succ elementsZ_single_base /= Z.add_0_r.
    -    by rewrite Z.add_1_r.
    +    rewrite -N.add_1_l elementsZ_single_add.
    +    rewrite N.one_succ elementsZ_single_succ elementsZ_single_base /= Z.add_0_r.
    +    by rewrite Z.add_1_r.
      Qed.

    -  Lemma In_elementsZ_single : ∀ c y x,
    -    List.In y (elementsZ_single x c) ↔
    -    (x ≤ y) ∧ (y < (x+Z.of_N c)).
    +  Lemma In_elementsZ_single : ∀ c y x,
    +    List.In y (elementsZ_single x c) ↔
    +    (x ≤ y) ∧ (y < (x+Z.of_N c)).
      Proof.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intros y x.
    -      rewrite elementsZ_single_base Z.add_0_r /=.
    -      omega.
    +      rewrite elementsZ_single_base Z.add_0_r /=.
    +      lia.
        } {
          intros y x.
    -      rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r.
    +      rewrite elementsZ_single_succ in_app_iff IH /= N2Z.inj_succ Z.add_succ_r Z.lt_succ_r.
          split. {
            move ⇒ [ | []] //. {
              move ⇒ [H_x_le H_y_le].
    -          omega.
    +          lia.
            } {
              move ⇒ <-.
              split.
                - by apply Z_le_add_r.
    -            - by apply Z.le_refl.
    +            - by apply Z.le_refl.
            }
          } {
            move ⇒ [H_x_le] H_y_lt.
    -        omega.
    +        lia.
          }
        }
      Qed.

    -  Lemma In_elementsZ_single1 : ∀ y x,
    -    List.In y (elementsZ_single x (1%N)) ↔
    -    (x = y).
    +  Lemma In_elementsZ_single1 : ∀ y x,
    +    List.In y (elementsZ_single x (1%N)) ↔
    +    (x = y).
      Proof.
        intros y x.
    -    rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r.
    -    omega.
    +    rewrite In_elementsZ_single /= Z.add_1_r Z.lt_succ_r.
    +    lia.
      Qed.

    -  Lemma length_elementsZ_single : ∀ cx x,
    -    length (elementsZ_single x cx) = N.to_nat cx.
    +  Lemma length_elementsZ_single : ∀ cx x,
    +    length (elementsZ_single x cx) = N.to_nat cx.
      Proof.
    -    induction cx as [| cx' IH] using N.peano_ind. {
    +    induction cx as [| cx' IH] using N.peano_ind. {
          by simpl.
        } {
          intros x.
          rewrite elementsZ_single_succ_front /=.
    -      rewrite IH N2Nat.inj_succ //.
    +      rewrite IH N2Nat.inj_succ //.
        }
      Qed.

    -  Lemma fold_elementsZ_aux_irrel {A} :
    -    âˆ€ f c (acc : A) x H1 H2,
    -      fold_elementsZ_aux f acc x c H1 =
    -      fold_elementsZ_aux f acc x c H2.
    +  Lemma fold_elementsZ_aux_irrel {A} :
    +    âˆ€ f c (acc : A) x H1 H2,
    +      fold_elementsZ_aux f acc x c H1 =
    +      fold_elementsZ_aux f acc x c H2.
      Proof.
        intros f c.
    -    induction c as [c IH] using (well_founded_ind lt_wf_0).
    +    induction c as [c IH] using (well_founded_ind lt_wf_0).
        case_eq c. {
          intros H_c acc x; case; intro H_H1; case; intro H_H2.
          reflexivity.
    @@ -1119,19 +1118,19 @@

    Library MSetsExtra.MSetIntervals

          case (f acc x) ⇒ // acc'.
          apply IH.
          rewrite H_c.
    -      apply N.lt_pred_l.
    +      apply N.lt_pred_l.
          discriminate.
        }
      Qed.

    -  Lemma fold_elementsZ_single_pos {A} : ∀ f (acc : A) x p,
    -    fold_elementsZ_single f acc x (N.pos p) =
    -    match f acc x with
    -    | Some acc' ⇒
    -        fold_elementsZ_single f acc' (Z.succ x)
    -         (N.pred (N.pos p))
    -    | None ⇒ (true, acc)
    +  Lemma fold_elementsZ_single_pos {A} : ∀ f (acc : A) x p,
    +    fold_elementsZ_single f acc x (N.pos p) =
    +    match f acc x with
    +    | Some acc' ⇒
    +        fold_elementsZ_single f acc' (Z.succ x)
    +         (N.pred (N.pos p))
    +    | None ⇒ (true, acc)
        end.
      Proof.
        intros f acc x p.
    @@ -1145,8 +1144,8 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma fold_elementsZ_single_zero {A} : ∀ f (acc : A) x,
    -      fold_elementsZ_single f acc x (0%N) = (false, acc).
    +  Lemma fold_elementsZ_single_zero {A} : ∀ f (acc : A) x,
    +      fold_elementsZ_single f acc x (0%N) = (false, acc).
      Proof.
        intros f acc x.
        unfold fold_elementsZ_single.
    @@ -1156,12 +1155,12 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma fold_elementsZ_single_succ {A} : ∀ f (acc : A) x c,
    -    fold_elementsZ_single f acc x (N.succ c) =
    -    match f acc x with
    -      | Some acc' ⇒
    -          fold_elementsZ_single f acc' (Z.succ x) c
    -      | None ⇒ (true, acc)
    +  Lemma fold_elementsZ_single_succ {A} : ∀ f (acc : A) x c,
    +    fold_elementsZ_single f acc x (N.succ c) =
    +    match f acc x with
    +      | Some acc' ⇒
    +          fold_elementsZ_single f acc' (Z.succ x) c
    +      | None ⇒ (true, acc)
        end.
      Proof.
        intros f acc x c.
    @@ -1171,43 +1170,43 @@

    Library MSetsExtra.MSetIntervals

          intro p; simpl.
          rewrite fold_elementsZ_single_pos.
          case (f acc x) ⇒ // acc' /=.
    -      by rewrite Pos.pred_N_succ.
    +      by rewrite Pos.pred_N_succ.
        }
      Qed.

    -  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
    -    match bs with
    -      | nil ⇒ (false, acc)
    -      | (b :: bs') ⇒
    -        match f acc b with
    -        | Some acc' ⇒ fold_opt f acc' bs'
    -        | None ⇒ (true, acc)
    +  Fixpoint fold_opt {A B} f (acc : A) (bs : list B) : (bool × A) :=
    +    match bs with
    +      | nil ⇒ (false, acc)
    +      | (b :: bs') ⇒
    +        match f acc b with
    +        | Some acc' ⇒ fold_opt f acc' bs'
    +        | None ⇒ (true, acc)
            end
        end.

    -  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    -    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    -    (false, List.rev bs ++ acc).
    +  Lemma fold_opt_list_cons : ∀ {A} (bs : list A) (acc : list A),
    +    fold_opt (fun l x ⇒ Some (x :: l)) acc bs =
    +    (false, List.rev bs ++ acc).
      Proof.
        induction bs as [| b bs' IH] ⇒ acc. {
          by simpl.
        } {
    -      rewrite /= IH -app_assoc //.
    +      rewrite /= IH -app_assoc //.
        }
      Qed.

    -  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    -    fold_opt f acc (l1 ++ l2) =
    -    (let (ab, acc') := fold_opt f acc l1 in
    -     if ab then (true, acc') else fold_opt f acc' l2).
    +  Lemma fold_opt_app {A B} : ∀ f (acc : A) (l1 l2 : list B),
    +    fold_opt f acc (l1 ++ l2) =
    +    (let (ab, acc') := fold_opt f acc l1 in
    +     if ab then (true, acc') else fold_opt f acc' l2).
      Proof.
        intros f acc l1 l2.
        move : acc.
        induction l1 as [| b l1' IH] ⇒ acc. {
    -      rewrite app_nil_l //.
    +      rewrite app_nil_l //.
        } {
          rewrite /=.
          case (f acc b); last done.
    @@ -1219,12 +1218,12 @@

    Library MSetsExtra.MSetIntervals



    -  Lemma fold_elementsZ_single_alt_def {A} : ∀ f c (acc : A) x,
    -     fold_elementsZ_single f acc x c =
    -     fold_opt f acc (elementsZ_single x c).
    +  Lemma fold_elementsZ_single_alt_def {A} : ∀ f c (acc : A) x,
    +     fold_elementsZ_single f acc x c =
    +     fold_opt f acc (elementsZ_single x c).
      Proof.
        intro f.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intros acc x.
          rewrite fold_elementsZ_single_zero
                  elementsZ_single_base /fold_opt //.
    @@ -1239,42 +1238,42 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma fold_elementsZ_nil {A} : ∀ f (acc : A),
    -     fold_elementsZ f acc nil = (false, acc).
    +  Lemma fold_elementsZ_nil {A} : ∀ f (acc : A),
    +     fold_elementsZ f acc nil = (false, acc).
      Proof. done. Qed.

    -  Lemma fold_elementsZ_cons {A} : ∀ f (acc : A) y c s,
    -    fold_elementsZ f acc ((y, c)::s) =
    -    (let (ab, acc') := fold_elementsZ_single f acc y c in
    -     if ab then (true, acc') else fold_elementsZ f acc' s).
    +  Lemma fold_elementsZ_cons {A} : ∀ f (acc : A) y c s,
    +    fold_elementsZ f acc ((y, c)::s) =
    +    (let (ab, acc') := fold_elementsZ_single f acc y c in
    +     if ab then (true, acc') else fold_elementsZ f acc' s).
      Proof.
        intros f acc y c s.
        done.
      Qed.

    -  Lemma fold_elementsZ_alt_def_aux : ∀ (s : t) base,
    -    (snd (fold_elementsZ
    -      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    -    elementsZ s ++ base.
    +  Lemma fold_elementsZ_alt_def_aux : ∀ (s : t) base,
    +    (snd (fold_elementsZ
    +      (fun (l : list Z) (x : Z) ⇒ Some (x :: l)) base s)) =
    +    elementsZ s ++ base.
      Proof.
        induction s as [| [y1 c1] s' IH] ⇒ base. {
    -      rewrite elementsZ_nil /fold_elementsZ /fold_opt /snd
    -        app_nil_l //.
    +      rewrite elementsZ_nil /fold_elementsZ /fold_opt /snd
    +        app_nil_l //.
        } {
          rewrite /elementsZ !fold_elementsZ_cons.
          rewrite !fold_elementsZ_single_alt_def !fold_opt_list_cons.
    -      rewrite !IH app_nil_r app_assoc //.
    +      rewrite !IH app_nil_r app_assoc //.
        }
      Qed.


    -  Lemma fold_elementsZ_alt_def {A} : ∀ f s (acc : A),
    -     fold_elementsZ f acc s =
    -     fold_opt f acc (rev (elementsZ s)).
    +  Lemma fold_elementsZ_alt_def {A} : ∀ f s (acc : A),
    +     fold_elementsZ f acc s =
    +     fold_opt f acc (rev (elementsZ s)).
      Proof.
        intro f.
        induction s as [| [y1 c1] s' IH] ⇒ acc. {
    @@ -1282,105 +1281,105 @@

    Library MSetsExtra.MSetIntervals

        } {
          rewrite /elementsZ !fold_elementsZ_cons.
          rewrite !fold_elementsZ_single_alt_def
    -              fold_opt_list_cons app_nil_r
    -              fold_elementsZ_alt_def_aux rev_app_distr
    -              rev_involutive fold_opt_app.
    +              fold_opt_list_cons app_nil_r
    +              fold_elementsZ_alt_def_aux rev_app_distr
    +              rev_involutive fold_opt_app.
          case (fold_opt f acc (elementsZ_single y1 c1)).
          move ⇒ [] //.
        }
      Qed.

    -  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    -     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
    +  Lemma elementsZ_cons : ∀ x c s, elementsZ (((x, c) :: s) : t) =
    +     ((elementsZ s) ++ (List.rev (elementsZ_single x c))).
      Proof.
        intros x c s.
        rewrite /elementsZ fold_elementsZ_cons
                !fold_elementsZ_alt_def
                fold_elementsZ_single_alt_def.
        rewrite !fold_opt_list_cons.
    -    rewrite !app_nil_r !rev_involutive /=.
    +    rewrite !app_nil_r !rev_involutive /=.
        rewrite fold_elementsZ_alt_def_aux //.
      Qed.

    -  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    -     ((elements_single x c) ++ elements s).
    +  Lemma elements_cons : ∀ x c s, elements (((x, c) :: s) : t) =
    +     ((elements_single x c) ++ elements s).
      Proof.
        intros x c s.
        rewrite /elements /elements_single elementsZ_cons.
    -    rewrite !rev_map_alt_def map_app rev_app_distr map_rev rev_involutive //.
    +    rewrite !rev_map_alt_def map_app rev_app_distr map_rev rev_involutive //.
      Qed.

    -  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    -     ((elementsZ s2) ++ (elementsZ s1)).
    +  Lemma elementsZ_app : ∀ (s1 s2 : t), elementsZ (s1 ++ s2) =
    +     ((elementsZ s2) ++ (elementsZ s1)).
      Proof.
        induction s1 as [| [x1 c1] s1 IH1]. {
          move ⇒ s2.
    -      rewrite elementsZ_nil app_nil_r //.
    +      rewrite elementsZ_nil app_nil_r //.
        }
        move ⇒ s2.
    -    rewrite -app_comm_cons !elementsZ_cons IH1 -app_assoc //.
    +    rewrite -app_comm_cons !elementsZ_cons IH1 -app_assoc //.
      Qed.

    -  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
    +  Lemma InZ_nil : ∀ y, InZ y nil ↔ False.
      Proof.
        intro y.
        done.
      Qed.

    -  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    -     List.In y (elementsZ_single x c) ∨ InZ y s.
    +  Lemma InZ_cons : ∀ y x c s, InZ y (((x, c) :: s) : t) ↔
    +     List.In y (elementsZ_single x c) ∨ InZ y s.
      Proof.
        intros y x c s.
    -    rewrite /InZ elementsZ_cons in_app_iff -in_rev.
    +    rewrite /InZ elementsZ_cons in_app_iff -in_rev.
        firstorder.
      Qed.

    -  Lemma InZ_app : ∀ s1 s2 y,
    -     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
    +  Lemma InZ_app : ∀ s1 s2 y,
    +     InZ y (s1 ++ s2) ↔ InZ y s1 ∨ InZ y s2.
      Proof.
        intros s1 s2 y.
    -    rewrite /InZ elementsZ_app in_app_iff.
    +    rewrite /InZ elementsZ_app in_app_iff.
        tauto.
      Qed.

    -  Lemma InZ_rev : ∀ s y,
    -     InZ y (List.rev s) ↔ InZ y s.
    +  Lemma InZ_rev : ∀ s y,
    +     InZ y (List.rev s) ↔ InZ y s.
      Proof.
        intros s x.
        rewrite /InZ.
        induction s as [| [y c] s' IH]; first done.
        simpl.
    -    rewrite elementsZ_app in_app_iff IH.
    -    rewrite !elementsZ_cons !in_app_iff elementsZ_nil
    -            -!in_rev /=.
    +    rewrite elementsZ_app in_app_iff IH.
    +    rewrite !elementsZ_cons !in_app_iff elementsZ_nil
    +            -!in_rev /=.
        tauto.
      Qed.

    -  Lemma In_elementsZ_single_dec : ∀ y x c,
    -    {List.In y (elementsZ_single x c)} +
    -    {¬ List.In y (elementsZ_single x c)}.
    +  Lemma In_elementsZ_single_dec : ∀ y x c,
    +    {List.In y (elementsZ_single x c)} +
    +    {¬ List.In y (elementsZ_single x c)}.
      Proof.
        intros y x c.
    -    case (Z_le_dec x y); last first. {
    +    case (Z_le_dec x y); last first. {
          right; rewrite In_elementsZ_single; tauto.
        }
    -    case (Z_lt_dec y (x + Z.of_N c)); last first. {
    +    case (Z_lt_dec y (x + Z.of_N c)); last first. {
          right; rewrite In_elementsZ_single; tauto.
        }
        left; rewrite In_elementsZ_single; tauto.
      Qed.

    -  Lemma InZ_dec : ∀ y s,
    -     {InZ y s} + {¬InZ y s}.
    +  Lemma InZ_dec : ∀ y s,
    +     {InZ y s} + {¬InZ y s}.
      Proof.
        intros y.
        induction s as [| [x c] s IH]. {
    @@ -1397,17 +1396,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
    +  Lemma In_elementsZ_single_hd : ∀ (c : N) x, (c ≠ 0)%N → List.In x (elementsZ_single x c).
      Proof.
        intros c x H_c_neq.
        rewrite In_elementsZ_single.
        split. {
    -      apply Z.le_refl.
    +      apply Z.le_refl.
        } {
    -      apply Z.lt_add_pos_r.
    -      have → : 0 = Z.of_N (0%N) by [].
    -      apply N2Z.inj_lt.
    -      by apply N.neq_0_lt_0.
    +      apply Z.lt_add_pos_r.
    +      have → : 0 = Z.of_N (0%N) by [].
    +      apply N2Z.inj_lt.
    +      by apply N.neq_0_lt_0.
        }
      Qed.
    @@ -1417,51 +1416,51 @@

    Library MSetsExtra.MSetIntervals

    -

    comparing intervals

    +

    comparing intervals


      Ltac Z_named_compare_cases H := match goal with
    -    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    -      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
    +    | [ |- context [Z.compare ?z1 ?z2] ] ⇒
    +      case_eq (Z.compare z1 z2); [move ⇒ /Z.compare_eq_iff | move ⇒ /Z.compare_lt_iff | move ⇒ /Z.compare_gt_iff]; move ⇒ H //
      end.

      Ltac Z_compare_cases := let H := fresh "H" in Z_named_compare_cases H.

    -  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    match (interval_compare (y1, c1) (y2, c2)) with
    -      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    -      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    -      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    -      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    -      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +  Lemma interval_compare_elim : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    match (interval_compare (y1, c1) (y2, c2)) with
    +      | ICR_before ⇒ (y1 + Z.of_N c1) < y2
    +      | ICR_before_touch ⇒ (y1 + Z.of_N c1) = y2
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ (y1 = y2) ∧ (c1 = c2)
    +      | ICR_overlap_before ⇒ (y1 < y2) ∧ (y2 < y1 + Z.of_N c1) ∧ (y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_overlap_after ⇒ (y2 < y1) ∧ (y1 < y2 + Z.of_N c2) ∧ (y2 + Z.of_N c2 < y1 + Z.of_N c1)
    +      | ICR_subsume_1 ⇒ (y2 ≤ y1) ∧ (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) ∧ (y2 < y1 ∨ y1 + Z.of_N c1 < y2 + Z.of_N c2)
    +      | ICR_subsume_2 ⇒ (y1 ≤ y2) ∧ (y2 + Z.of_N c2 ≤ y1 + Z.of_N c1) ∧ (y1 < y2 ∨ y2 + Z.of_N c2 < y1 + Z.of_N c1)
        end.
      Proof.
        intros y1 c1 y2 c2.
        rewrite /interval_compare.
        (repeat Z_compare_cases); subst; repeat split;
    -       try (by apply Z.eq_le_incl);
    -       try (by apply Z.lt_le_incl);
    +       try (by apply Z.eq_le_incl);
    +       try (by apply Z.lt_le_incl);
           try (by left); try (by right).

    -    apply Z.add_reg_l in H2.
    -    by apply N2Z.inj.
    +    apply Z.add_reg_l in H2.
    +    by apply N2Z.inj.
      Qed.

    -  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    -    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    -    interval_compare (y2, c2) (y1, c1) =
    -    match (interval_compare (y1, c1) (y2, c2)) with
    +  Lemma interval_compare_swap : ∀ (y1 : Z) (c1 : N) (y2 : Z) (c2 : N),
    +    (c1 ≠ 0%N) ∨ (c2 ≠ 0%N) →
    +    interval_compare (y2, c2) (y1, c1) =
    +    match (interval_compare (y1, c1) (y2, c2)) with
          | ICR_before ⇒ ICR_after
          | ICR_before_touch ⇒ ICR_after_touch
          | ICR_after ⇒ ICR_before
    @@ -1475,50 +1474,50 @@

    Library MSetsExtra.MSetIntervals

      Proof.
        intros y1 c1 y2 c2 H_c12_neq_0.
        rewrite /interval_compare.
    -    move : (Z.compare_antisym y1 y2) ⇒ →.
    -    move : (Z.compare_antisym (y1 + Z.of_N c1) (y2 + Z.of_N c2)) ⇒ →.
    -    have H_suff : y1 + Z.of_N c1 ≤ y2 → y2 + Z.of_N c2 ≤ y1 → False. {
    +    move : (Z.compare_antisym y1 y2) ⇒ →.
    +    move : (Z.compare_antisym (y1 + Z.of_N c1) (y2 + Z.of_N c2)) ⇒ →.
    +    have H_suff : y1 + Z.of_N c1 ≤ y2 → y2 + Z.of_N c2 ≤ y1 → False. {
          move ⇒ H1 H2.
          case H_c12_neq_0 ⇒ H_c_neq_0. {
    -        suff : (y1 + Z.of_N c1 ≤ y1). {
    -          apply Z.nle_gt.
    +        suff : (y1 + Z.of_N c1 ≤ y1). {
    +          apply Z.nle_gt.
              by apply Z_lt_add_r.
            }
    -        eapply Z.le_trans; eauto.
    -        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
            apply Z_le_add_r.
          } {
    -        suff : (y2 + Z.of_N c2 ≤ y2). {
    -          apply Z.nle_gt.
    +        suff : (y2 + Z.of_N c2 ≤ y2). {
    +          apply Z.nle_gt.
              by apply Z_lt_add_r.
            }
    -        eapply Z.le_trans; eauto.
    -        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
    +        eapply Z.le_trans; eauto.
            apply Z_le_add_r.
          }
        }
        repeat Z_compare_cases. {
          exfalso; apply H_suff.
    -        - by rewrite H; apply Z.le_refl.
    -        - by rewrite H0; apply Z.le_refl.
    +        - by rewrite H; apply Z.le_refl.
    +        - by rewrite H0; apply Z.le_refl.
        } {
          exfalso; apply H_suff.
    -        - by rewrite H; apply Z.le_refl.
    -        - by apply Z.lt_le_incl.
    +        - by rewrite H; apply Z.le_refl.
    +        - by apply Z.lt_le_incl.
        } {
          exfalso; apply H_suff.
    -        - by apply Z.lt_le_incl.
    -        - by rewrite H0; apply Z.le_refl.
    +        - by apply Z.lt_le_incl.
    +        - by rewrite H0; apply Z.le_refl.
        } {
          exfalso; apply H_suff.
    -        - by apply Z.lt_le_incl.
    -        - by apply Z.lt_le_incl.
    +        - by apply Z.lt_le_incl.
    +        - by apply Z.lt_le_incl.
        }
      Qed.

    -  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    -    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
    +  Lemma interval_1_compare_alt_def : ∀ (y : Z) (i : (Z × N)),
    +    interval_1_compare y i = match (interval_compare (y, (1%N)) i) with
          | ICR_equal ⇒ ICR_subsume_1
          | ICR_subsume_1 ⇒ ICR_subsume_1
          | ICR_subsume_2 ⇒ ICR_subsume_1
    @@ -1527,68 +1526,68 @@

    Library MSetsExtra.MSetIntervals

      Proof.
        move ⇒ y1 [y2 c2].
        rewrite /interval_1_compare /interval_compare.
    -    replace (y1 + Z.of_N 1) with (Z.succ y1); last done.
    +    replace (y1 + Z.of_N 1) with (Z.succ y1); last done.
        repeat Z_compare_cases. {
          contradict H1.
    -      by apply Zle_not_lt, Zlt_succ_le.
    +      by apply Zle_not_lt, Zlt_succ_le.
        } {
          contradict H.
    -      by apply Zle_not_lt, Zlt_succ_le.
    +      by apply Zle_not_lt, Zlt_succ_le.
        }
      Qed.

    -  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    -    match (interval_1_compare y1 (y2, c2)) with
    -      | ICR_before ⇒ Z.succ y1 < y2
    -      | ICR_before_touch ⇒ y2 = Z.succ y1
    -      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    -      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    -      | ICR_equal ⇒ False
    -      | ICR_overlap_before ⇒ False
    -      | ICR_overlap_after ⇒ False
    -      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    -      | ICR_subsume_2 ⇒ False
    +  Lemma interval_1_compare_elim : ∀ (y1 : Z) (y2 : Z) (c2 : N),
    +    match (interval_1_compare y1 (y2, c2)) with
    +      | ICR_before ⇒ Z.succ y1 < y2
    +      | ICR_before_touch ⇒ y2 = Z.succ y1
    +      | ICR_after ⇒ (y2 + Z.of_N c2) < y1
    +      | ICR_after_touch ⇒ (y2 + Z.of_N c2) = y1
    +      | ICR_equal ⇒ False
    +      | ICR_overlap_before ⇒ False
    +      | ICR_overlap_after ⇒ False
    +      | ICR_subsume_1 ⇒ (c2 = 0%N) ∨ ((y2 ≤ y1) ∧ (y1 < y2 + Z.of_N c2))
    +      | ICR_subsume_2 ⇒ False
        end.
      Proof.
        intros y1 y2 c2.
        move : (interval_compare_elim y1 (1%N) y2 c2).
        rewrite interval_1_compare_alt_def.
    -    have H_succ: ∀ z, z + Z.of_N 1 = Z.succ z by done.
    +    have H_succ: ∀ z, z + Z.of_N 1 = Z.succ z by done.

    -    case_eq (interval_compare (y1, 1%N) (y2, c2)) ⇒ H_comp;
    -      rewrite ?H_succ ?Z.lt_succ_r ?Z.le_succ_l //. {
    +    case_eq (interval_compare (y1, 1%N) (y2, c2)) ⇒ H_comp;
    +      rewrite ?H_succ ?Z.lt_succ_r ?Z.le_succ_l //. {
          move ⇒ [H_lt] [H_le] _.
          contradict H_lt.
    -      by apply Zle_not_lt.
    +      by apply Zle_not_lt.
        } {
          move ⇒ [_] [H_lt] H_le.
          contradict H_lt.
    -      by apply Zle_not_lt.
    +      by apply Zle_not_lt.
        } {
          move ⇒ [->] <-.
    -      rewrite ?Z.lt_succ_r.
    +      rewrite ?Z.lt_succ_r.
          right.
    -      split; apply Z.le_refl.
    +      split; apply Z.le_refl.
        } {
          tauto.
        } {
    -      case (N.zero_or_succ c2). {
    +      case (N.zero_or_succ c2). {
            move ⇒ → _; by left.
          } {
            move ⇒ [c2'] →.
    -        rewrite !N2Z.inj_succ Z.add_succ_r -Z.succ_le_mono Z.le_succ_l.
    +        rewrite !N2Z.inj_succ Z.add_succ_r -Z.succ_le_mono Z.le_succ_l.
            move ⇒ [H_y1_le] [H_le_y1].
    -        suff → : y1 = y2. {
    +        suff → : y1 = y2. {
              move ⇒ [] H_pre; contradict H_pre. {
    -            apply Z.lt_irrefl.
    +            apply Z.lt_irrefl.
              } {
    -            apply Zle_not_lt, Z_le_add_r.
    +            apply Zle_not_lt, Z_le_add_r.
              }
            }
    -        apply Z.le_antisymm ⇒ //.
    -        eapply Z.le_trans; last apply H_le_y1.
    +        apply Z.le_antisymm ⇒ //.
    +        eapply Z.le_trans; last apply H_le_y1.
            apply Z_le_add_r.
          }
        }
    @@ -1598,38 +1597,38 @@

    Library MSetsExtra.MSetIntervals

    -

    Alternative definition of addZ

    +

    Alternative definition of addZ

    -  Lemma addZ_aux_alt_def : ∀ x s acc,
    -    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
    +  Lemma addZ_aux_alt_def : ∀ x s acc,
    +    addZ_aux acc x s = (List.rev acc) ++ addZ x s.
      Proof.
        intros y1 s.
        unfold addZ.
        induction s as [| [y2 c2] s' IH] ⇒ acc. {
    -      rewrite /addZ_aux /addZ /= /rev' !rev_append_rev /= app_nil_r //.
    +      rewrite /addZ_aux /addZ /= /rev' !rev_append_rev /= app_nil_r //.
        } {
          unfold addZ_aux.
    -      case (interval_1_compare y1 (y2, c2)); fold addZ_aux;
    -        rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    -      rewrite (IH ((y2,c2)::acc)) (IH ((y2,c2)::nil)).
    -      rewrite /= app_assoc_reverse //.
    +      case (interval_1_compare y1 (y2, c2)); fold addZ_aux;
    +        rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    +      rewrite (IH ((y2,c2)::acc)) (IH ((y2,c2)::nil)).
    +      rewrite /= app_assoc_reverse //.
        }
      Qed.

    -  Lemma addZ_alt_def : ∀ x s,
    -    addZ x s =
    -    match s with
    -    | nil ⇒ (x, (1%N))::nil
    -    | (y, c) :: l ⇒
    -        match (interval_1_compare x (y,c)) with
    -          | ICR_before ⇒ (x, (1%N))::s
    -          | ICR_before_touch ⇒ (x, N.succ c)::l
    -          | ICR_after ⇒ (y,c)::(addZ x l)
    -          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    -          | _ ⇒ (y, c)::l
    +  Lemma addZ_alt_def : ∀ x s,
    +    addZ x s =
    +    match s with
    +    | nil ⇒ (x, (1%N))::nil
    +    | (y, c) :: l ⇒
    +        match (interval_1_compare x (y,c)) with
    +          | ICR_before ⇒ (x, (1%N))::s
    +          | ICR_before_touch ⇒ (x, N.succ c)::l
    +          | ICR_after ⇒ (y,c)::(addZ x l)
    +          | ICR_after_touch ⇒ insert_interval_begin y (N.succ c) l
    +          | _ ⇒ (y, c)::l
            end
        end.
      Proof.
    @@ -1638,8 +1637,8 @@

    Library MSetsExtra.MSetIntervals

        case s ⇒ //.
        move ⇒ [y c] s'.
        unfold addZ_aux.
    -    case (interval_1_compare x (y, c)); fold addZ_aux;
    -      rewrite ?rev_append_rev /= ?app_assoc_reverse //.
    +    case (interval_1_compare x (y, c)); fold addZ_aux;
    +      rewrite ?rev_append_rev /= ?app_assoc_reverse //.
        rewrite addZ_aux_alt_def //.
      Qed.
    @@ -1649,63 +1648,63 @@

    Library MSetsExtra.MSetIntervals

    -

    Auxiliary Lemmata about Invariant

    +

    Auxiliary Lemmata about Invariant


    -  Lemma interval_list_elements_greater_cons : ∀ z x c s,
    -    interval_list_elements_greater z ((x, c) :: s) = true ↔
    -    (z < x).
    +  Lemma interval_list_elements_greater_cons : ∀ z x c s,
    +    interval_list_elements_greater z ((x, c) :: s) = true ↔
    +    (z < x).
      Proof.
        intros z x c s.
        rewrite /=.
    -    apply Z.ltb_lt.
    +    apply Z.ltb_lt.
      Qed.

    -  Lemma interval_list_elements_greater_impl : ∀ x y s,
    -    (y ≤ x) →
    -    interval_list_elements_greater x s = true →
    -    interval_list_elements_greater y s = true.
    +  Lemma interval_list_elements_greater_impl : ∀ x y s,
    +    (y ≤ x) →
    +    interval_list_elements_greater x s = true →
    +    interval_list_elements_greater y s = true.
      Proof.
        intros x y s.
        case s ⇒ //.
        move ⇒ [z c] s'.
        rewrite /interval_list_elements_greater.
    -    move ⇒ H_y_leq /Z.ltb_lt H_x_lt.
    -    apply Z.ltb_lt.
    -    eapply Z.le_lt_trans; eauto.
    +    move ⇒ H_y_leq /Z.ltb_lt H_x_lt.
    +    apply Z.ltb_lt.
    +    eapply Z.le_lt_trans; eauto.
      Qed.

    -  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.
    +  Lemma interval_list_invariant_nil : interval_list_invariant nil = true.
      Proof.
        by [].
      Qed.

    -  Lemma Ok_nil : Ok nil ↔ True.
    +  Lemma Ok_nil : Ok nil ↔ True.
      Proof.
        rewrite /Ok /IsOk /interval_list_invariant /is_encoded_elems_list //.
      Qed.

    -  Lemma is_encoded_elems_list_app : ∀ l1 l2,
    -    is_encoded_elems_list (l1 ++ l2) ↔
    -    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).
    +  Lemma is_encoded_elems_list_app : ∀ l1 l2,
    +    is_encoded_elems_list (l1 ++ l2) ↔
    +    (is_encoded_elems_list l1 ∧ is_encoded_elems_list l2).
      Proof.
        intros l1 l2.
        rewrite /is_encoded_elems_list.
    -    setoid_rewrite in_app_iff.
    +    setoid_rewrite in_app_iff.
        split; firstorder.
      Qed.

    -  Lemma is_encoded_elems_list_rev : ∀ l,
    -    is_encoded_elems_list (List.rev l) ↔
    -    is_encoded_elems_list l.
    +  Lemma is_encoded_elems_list_rev : ∀ l,
    +    is_encoded_elems_list (List.rev l) ↔
    +    is_encoded_elems_list l.
      Proof.
        intros l.
        rewrite /is_encoded_elems_list.
    @@ -1713,29 +1712,29 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ H x H_in;
          apply H;
          move : H_in;
    -      rewrite -in_rev ⇒ //
    +      rewrite -in_rev ⇒ //
        ).
      Qed.

    -  Lemma interval_list_invariant_cons : ∀ y c s',
    -    interval_list_invariant ((y, c) :: s') = true ↔
    -    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧
    -      ((c ≠ 0)%N) ∧ interval_list_invariant s' = true).
    +  Lemma interval_list_invariant_cons : ∀ y c s',
    +    interval_list_invariant ((y, c) :: s') = true ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧
    +      ((c ≠ 0)%N) ∧ interval_list_invariant s' = true).
      Proof.
        rewrite /interval_list_invariant -/interval_list_invariant.
        intros y c s'.
    -    rewrite !Bool.andb_true_iff negb_true_iff.
    +    rewrite !Bool.andb_true_iff negb_true_iff.
        split. {
    -      move ⇒ [] [H_inf] /N.eqb_neq H_c H_s'. tauto.
    +      move ⇒ [] [H_inf] /N.eqb_neq H_c H_s'. tauto.
        } {
    -      move ⇒ [H_inf] [/N.eqb_neq H_c] H_s'. tauto.
    +      move ⇒ [H_inf] [/N.eqb_neq H_c] H_s'. tauto.
        }
      Qed.

    -  Lemma interval_list_invariant_sing : ∀ x c,
    -    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.
    +  Lemma interval_list_invariant_sing : ∀ x c,
    +    interval_list_invariant ((x, c)::nil) = true ↔ (c ≠ 0)%N.
      Proof.
        intros x c.
        rewrite interval_list_invariant_cons.
    @@ -1743,9 +1742,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma Ok_cons : ∀ y c s', Ok ((y, c) :: s') ↔
    -    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧ ((c ≠ 0)%N) ∧
    -     is_encoded_elems_list (elementsZ_single y c) ∧ Ok s').
    +  Lemma Ok_cons : ∀ y c s', Ok ((y, c) :: s') ↔
    +    (interval_list_elements_greater (y+Z.of_N c) s' = true ∧ ((c ≠ 0)%N) ∧
    +     is_encoded_elems_list (elementsZ_single y c) ∧ Ok s').
      Proof.
        intros y c s'.
        rewrite /Ok /IsOk interval_list_invariant_cons elementsZ_cons is_encoded_elems_list_app
    @@ -1754,10 +1753,10 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma Nin_elements_greater : ∀ s y,
    -     interval_list_elements_greater y s = true →
    -     interval_list_invariant s = true →
    -     âˆ€ x, x ≤ y → ~(InZ x s).
    +  Lemma Nin_elements_greater : ∀ s y,
    +     interval_list_elements_greater y s = true →
    +     interval_list_invariant s = true →
    +     âˆ€ x, x ≤ y → ~(InZ x s).
      Proof.
        induction s as [| [z c] s' IH]. {
          intros y _ _ x _.
    @@ -1767,12 +1766,12 @@

    Library MSetsExtra.MSetIntervals

            /interval_list_invariant_cons [H_gr] [H_c] H_s'
            x H_x_le.
          rewrite InZ_cons In_elementsZ_single.
    -      have H_x_lt : x < z by eapply Z.le_lt_trans; eauto.
    +      have H_x_lt : x < z by eapply Z.le_lt_trans; eauto.

          move ⇒ []. {
            move ⇒ [H_z_leq] _; contradict H_z_leq.
    -        by apply Z.nle_gt.
    +        by apply Z.nle_gt.
          } {
            eapply IH; eauto.
            by apply Z_lt_le_add_r.
    @@ -1781,23 +1780,23 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma Nin_elements_greater_equal :
    -     âˆ€ x s,
    -       interval_list_elements_greater x s = true →
    -       interval_list_invariant s = true →
    -       Â¬ (InZ x s).
    +  Lemma Nin_elements_greater_equal :
    +     âˆ€ x s,
    +       interval_list_elements_greater x s = true →
    +       interval_list_invariant s = true →
    +       Â¬ (InZ x s).
      Proof.
        move ⇒ x s H_inv H_gr.
        apply (Nin_elements_greater s x) ⇒ //.
    -    apply Z.le_refl.
    +    apply Z.le_refl.
      Qed.

    -  Lemma interval_list_elements_greater_alt_def : ∀ s y,
    -     interval_list_invariant s = true →
    +  Lemma interval_list_elements_greater_alt_def : ∀ s y,
    +     interval_list_invariant s = true →

    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, x ≤ y → ~(InZ x s))).
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, x ≤ y → ~(InZ x s))).
      Proof.
        intros s y H_inv.
        split. {
    @@ -1808,7 +1807,7 @@

    Library MSetsExtra.MSetIntervals

          case s as [| [x2 c] s'] ⇒ //.
          rewrite interval_list_invariant_cons interval_list_elements_greater_cons.
          move ⇒ [_] [H_c_neq] _ H.
    -      apply Z.nle_gt ⇒ H_ge.
    +      apply Z.nle_gt ⇒ H_ge.
          apply (H x2) ⇒ //.
          rewrite InZ_cons; left.
          apply In_elementsZ_single_hd ⇒ //.
    @@ -1816,68 +1815,76 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma interval_list_elements_greater_alt2_def : ∀ s y,
    -     interval_list_invariant s = true →
    +  Lemma interval_list_elements_greater_alt2_def : ∀ s y,
    +     interval_list_invariant s = true →

    -     (interval_list_elements_greater y s = true ↔
    -      (∀ x, InZ x s → y < x)).
    +     (interval_list_elements_greater y s = true ↔
    +      (∀ x, InZ x s → y < x)).
      Proof.
        intros s y H.
    + +
        rewrite interval_list_elements_greater_alt_def //.
    -    firstorder.
    -    apply Z.nle_gt.
    -    move ⇒ H_lt.
    -    eapply H0; eauto.
    +    split. {
    +      move ⇒ H_notInZ x H_inZ.
    +      apply Z.nle_gt.
    +      move ⇒ H_lt.
    +      move : (H_notInZ x H_lt H_inZ) ⇒ //.
    +    } {
    +      move ⇒ H_lt x H_le H_inZ.
    +      move : (H_lt x H_inZ).
    +      lia.
    +    }
      Qed.

    -  Lemma interval_list_elements_greater_intro : ∀ s y,
    -     interval_list_invariant s = true →
    -     (∀ x, InZ x s → y < x) →
    -     interval_list_elements_greater y s = true.
    +  Lemma interval_list_elements_greater_intro : ∀ s y,
    +     interval_list_invariant s = true →
    +     (∀ x, InZ x s → y < x) →
    +     interval_list_elements_greater y s = true.
      Proof.
        intros s y H1 H2.
        rewrite interval_list_elements_greater_alt2_def //.
      Qed.

    -  Lemma interval_list_elements_greater_app_elim_1 : ∀ s1 s2 y,
    -    interval_list_elements_greater y (s1 ++ s2) = true →
    -    interval_list_elements_greater y s1 = true.
    +  Lemma interval_list_elements_greater_app_elim_1 : ∀ s1 s2 y,
    +    interval_list_elements_greater y (s1 ++ s2) = true →
    +    interval_list_elements_greater y s1 = true.
      Proof.
        intros s1 s2 y.
        case s1 ⇒ //.
      Qed.

    -  Lemma interval_list_invariant_app_intro : ∀ s1 s2,
    -      interval_list_invariant s1 = true →
    -      interval_list_invariant s2 = true →
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -      interval_list_invariant (s1 ++ s2) = true.
    +  Lemma interval_list_invariant_app_intro : ∀ s1 s2,
    +      interval_list_invariant s1 = true →
    +      interval_list_invariant s2 = true →
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +      interval_list_invariant (s1 ++ s2) = true.
      Proof.
        induction s1 as [| [y1 c1] s1' IH]. {
          move ⇒ s2 _ //.
        } {
          move ⇒ s2.
    -      rewrite -app_comm_cons !interval_list_invariant_cons.
    +      rewrite -app_comm_cons !interval_list_invariant_cons.
          move ⇒ [H_gr] [H_c1_neq] H_inv_s1' H_inv_s2 H_inz_s2.
          split; last split. {
            move : H_gr H_inz_s2.
            case s1' as [| [y1' c1'] s1'']; last done.
            move ⇒ _ H_inz_s2.
    -        rewrite app_nil_l.
    +        rewrite app_nil_l.
            apply interval_list_elements_greater_intro ⇒ //.
            move ⇒ x H_x_in_s2.
    -        suff H_inz : InZ (Z.pred (y1 + Z.of_N c1)) ((y1, c1) :: nil). {
    +        suff H_inz : InZ (Z.pred (y1 + Z.of_N c1)) ((y1, c1) :: nil). {
              move : (H_inz_s2 _ _ H_inz H_x_in_s2).
    -          by rewrite Z.succ_pred.
    +          by rewrite Z.succ_pred.
            }
    -        rewrite InZ_cons In_elementsZ_single -Z.lt_le_pred; left.
    +        rewrite InZ_cons In_elementsZ_single -Z.lt_le_pred; left.
            split. {
              by apply Z_lt_add_r.
            } {
    -          apply Z.lt_pred_l.
    +          apply Z.lt_pred_l.
            }
          } {
            assumption.
    @@ -1891,15 +1898,15 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma interval_list_invariant_app_elim : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true →
    -      interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
    +  Lemma interval_list_invariant_app_elim : ∀ s1 s2,
    +      interval_list_invariant (s1 ++ s2) = true →
    +      interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2).
      Proof.
        move ⇒ s1 s2.
        induction s1 as [| [y1 c1] s1' IH]; first done.
    -    rewrite -app_comm_cons !interval_list_invariant_cons.
    +    rewrite -app_comm_cons !interval_list_invariant_cons.

        move ⇒ [H_gr] [H_c1_neq_0] /IH [H_inv_s1'] [H_inv_s2] H_in_s1'_s2.
    @@ -1918,23 +1925,23 @@

    Library MSetsExtra.MSetIntervals

              by apply interval_list_invariant_app_intro.
          }
          move ⇒ H_in_s12'.
    -      have : (y1 + Z.of_N c1 < x2). {
    +      have : (y1 + Z.of_N c1 < x2). {
            apply H_in_s12'.
            rewrite InZ_app.
            by right.
          }
          move ⇒ H_lt_x2.
    -      apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -      by apply Zlt_le_succ.
    +      apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +      by apply Zlt_le_succ.
        }
      Qed.

    -  Lemma interval_list_invariant_app_iff : ∀ s1 s2,
    -      interval_list_invariant (s1 ++ s2) = true ↔
    -      (interval_list_invariant s1 = true ∧
    -      interval_list_invariant s2 = true ∧
    -      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
    +  Lemma interval_list_invariant_app_iff : ∀ s1 s2,
    +      interval_list_invariant (s1 ++ s2) = true ↔
    +      (interval_list_invariant s1 = true ∧
    +      interval_list_invariant s2 = true ∧
    +      (∀ (x1 x2 : Z), InZ x1 s1 → InZ x2 s2 → Z.succ x1 < x2)).
      Proof.
        intros s1 s2.
        split. {
    @@ -1946,11 +1953,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma interval_list_invariant_snoc_intro : ∀ s1 y2 c2,
    -      interval_list_invariant s1 = true →
    -      (c2 ≠ 0)%N →
    -      (∀ x, InZ x s1 → Z.succ x < y2) →
    -      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
    +  Lemma interval_list_invariant_snoc_intro : ∀ s1 y2 c2,
    +      interval_list_invariant s1 = true →
    +      (c2 ≠ 0)%N →
    +      (∀ x, InZ x s1 → Z.succ x < y2) →
    +      interval_list_invariant (s1 ++ ((y2, c2)::nil)) = true.
      Proof.
        intros s1 y2 c2 H_inv_s1 H_c2_neq H_in_s1.
        apply interval_list_invariant_app_intro ⇒ //. {
    @@ -1961,7 +1968,7 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ [] //.
          rewrite In_elementsZ_single.
          move ⇒ [H_y2_le] _.
    -      eapply Z.lt_le_trans; eauto.
    +      eapply Z.lt_le_trans; eauto.
        }
      Qed.
    @@ -1971,14 +1978,14 @@

    Library MSetsExtra.MSetIntervals

    -

    Properties of In and InZ

    +

    Properties of In and InZ


    -  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    -    (Enc.encode (Enc.decode x) = x).
    +  Lemma encode_decode_eq : ∀ x s, Ok s → InZ x s →
    +    (Enc.encode (Enc.decode x) = x).
      Proof.
        intros x s.
        rewrite /Ok /IsOk /InZ.
    @@ -1988,16 +1995,16 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma In_alt_def : ∀ x s, Ok s →
    -    (In x s ↔ List.In x (elements s)).
    +  Lemma In_alt_def : ∀ x s, Ok s →
    +    (In x s ↔ List.In x (elements s)).
      Proof.
        intros x s H_ok.
    -    rewrite /In InA_alt /elements rev_map_alt_def.
    +    rewrite /In InA_alt /elements rev_map_alt_def.
        split. {
          move ⇒ [y] [H_y_eq].
    -      rewrite -!in_rev !in_map_iff.
    +      rewrite -!in_rev !in_map_iff.
          move ⇒ [x'] [H_y_eq'] H_x'_in.
    -      suff H_x'_eq : (Enc.encode x = x'). {
    +      suff H_x'_eq : (Enc.encode x = x'). {
            âˆƒ x'.
            split ⇒ //.
            rewrite -H_x'_eq Enc.decode_encode_ok //.
    @@ -2010,7 +2017,7 @@

    Library MSetsExtra.MSetIntervals

          move : H_y_eq'.
          rewrite -!H_x'_eq Enc.decode_encode_ok ⇒ H_y_eq'.
          subst.
    -      suff → : Z.eq (Enc.encode x) (Enc.encode y) by done.
    +      suff → : Z.eq (Enc.encode x) (Enc.encode y) by done.
          by rewrite Enc.encode_eq.
        } {
          move ⇒ H_enc_in.
    @@ -2021,17 +2028,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma In_InZ : ∀ x s, Ok s →
    -    (In x s ↔ InZ (Enc.encode x) s).
    +  Lemma In_InZ : ∀ x s, Ok s →
    +    (In x s ↔ InZ (Enc.encode x) s).
      Proof.
        intros x s H_ok.
    -    rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff.
    +    rewrite /InZ In_alt_def /elements rev_map_alt_def -in_rev in_map_iff.
        split; last first. {
          âˆƒ (Enc.encode x).
          by rewrite Enc.decode_encode_ok.
        }
        move ⇒ [y] [<-] H_y_in.
    -    suff : ∃ z, (Enc.encode z = y). {
    +    suff : ∃ z, (Enc.encode z = y). {
          move ⇒ [z] H_y_eq.
          move : H_y_in.
          by rewrite -!H_y_eq Enc.decode_encode_ok.
    @@ -2043,8 +2050,8 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma InZ_In : ∀ x s, Ok s →
    -    (InZ x s → In (Enc.decode x) s).
    +  Lemma InZ_In : ∀ x s, Ok s →
    +    (InZ x s → In (Enc.decode x) s).
      Proof.
        intros x s H_ok.
        rewrite In_InZ /InZ.
    @@ -2063,14 +2070,14 @@

    Library MSetsExtra.MSetIntervals

    -

    Membership specification

    +

    Membership specification


    -  Lemma memZ_spec :
    -    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
    +  Lemma memZ_spec :
    +    âˆ€ (s : t) (x : Z) (Hs : Ok s), memZ x s = true ↔ InZ x s.
      Proof.
        induction s as [| [y c] s' IH]. {
          intros x _.
    @@ -2078,57 +2085,57 @@

    Library MSetsExtra.MSetIntervals

        } {
          move ⇒ x /Ok_cons [H_inf] [H_c] [H_is_enc] H_s'.
          rewrite /InZ /memZ elementsZ_cons -/memZ.
    -      rewrite in_app_iff -!in_rev In_elementsZ_single.
    +      rewrite in_app_iff -!in_rev In_elementsZ_single.

    -      case_eq (x <? y). {
    -        move ⇒ /Z.ltb_lt H_x_lt.
    +      case_eq (x <? y). {
    +        move ⇒ /Z.ltb_lt H_x_lt.
            split; first done.
            move ⇒ []. {
              move ⇒ H_x_in; contradict H_x_in.
    -          apply Nin_elements_greater with (y := (y + Z.of_N c)) ⇒ //. {
    +          apply Nin_elements_greater with (y := (y + Z.of_N c)) ⇒ //. {
                apply H_s'.
              } {
                apply Z_lt_le_add_r ⇒ //.
              }
            } {
              move ⇒ [H_y_le]; contradict H_y_le.
    -          by apply Z.nle_gt.
    +          by apply Z.nle_gt.
            }
          } {
    -        move ⇒ /Z.ltb_ge H_y_le.
    -        case_eq (x <? y + Z.of_N c). {
    -          move ⇒ /Z.ltb_lt H_x_lt.
    +        move ⇒ /Z.ltb_ge H_y_le.
    +        case_eq (x <? y + Z.of_N c). {
    +          move ⇒ /Z.ltb_lt H_x_lt.
              split; last done.
              move ⇒ _.
              by right.
            } {
    -          move ⇒ /Z.ltb_ge H_yc_le.
    +          move ⇒ /Z.ltb_ge H_yc_le.
              rewrite IH.
              split; first tauto.
              move ⇒ [] //.
              move ⇒ [_] H_x_lt; contradict H_x_lt.
    -          by apply Z.nlt_ge.
    +          by apply Z.nlt_ge.
            }
          }
        }
      Qed.

    -  Lemma mem_spec :
    -   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.
    +  Lemma mem_spec :
    +   âˆ€ (s : t) (x : elt) (Hs : Ok s), mem x s = true ↔ In x s.
      Proof.
        intros s x Hs.
        rewrite /mem memZ_spec In_InZ //.
      Qed.

    -  Lemma merge_interval_size_neq_0 : ∀ x1 c1 x2 c2,
    -     (c1 ≠ 0%N) →
    -     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.
    +  Lemma merge_interval_size_neq_0 : ∀ x1 c1 x2 c2,
    +     (c1 ≠ 0%N) →
    +     (merge_interval_size x1 c1 x2 c2 ≠ 0)%N.
      Proof.
        intros x1 c1 x2 c2.
    -    rewrite /merge_interval_size !N.neq_0_lt_0 N.max_lt_iff.
    +    rewrite /merge_interval_size !N.neq_0_lt_0 N.max_lt_iff.
        by left.
      Qed.
    @@ -2136,70 +2143,70 @@

    Library MSetsExtra.MSetIntervals

    -

    insert if length not 0

    +

    insert if length not 0


    -  Lemma interval_list_invariant_insert_intervalZ_guarded : ∀ x c s,
    -    interval_list_invariant s = true →
    -    interval_list_elements_greater (x + Z.of_N c) s = true →
    -    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
    +  Lemma interval_list_invariant_insert_intervalZ_guarded : ∀ x c s,
    +    interval_list_invariant s = true →
    +    interval_list_elements_greater (x + Z.of_N c) s = true →
    +    interval_list_invariant (insert_intervalZ_guarded x c s) = true.
      Proof.
        intros x c s.
        rewrite /insert_intervalZ_guarded.
    -    case_eq (c =? 0)%N ⇒ //.
    -    move ⇒ /N.eqb_neq.
    +    case_eq (c =? 0)%N ⇒ //.
    +    move ⇒ /N.eqb_neq.
        rewrite interval_list_invariant_cons.
        tauto.
      Qed.

    -  Lemma interval_list_elements_greater_insert_intervalZ_guarded : ∀ x c y s,
    -    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    -    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
    +  Lemma interval_list_elements_greater_insert_intervalZ_guarded : ∀ x c y s,
    +    interval_list_elements_greater y (insert_intervalZ_guarded x c s) = true ↔
    +    (if (c =? 0)%N then (interval_list_elements_greater y s = true) else (y < x)).
      Proof.
        intros x c y s.
        rewrite /insert_intervalZ_guarded.
    -    case (c =? 0)%N ⇒ //.
    -    rewrite /interval_list_elements_greater Z.ltb_lt //.
    +    case (c =? 0)%N ⇒ //.
    +    rewrite /interval_list_elements_greater Z.ltb_lt //.
      Qed.

    -  Lemma insert_intervalZ_guarded_app : ∀ x c s1 s2,
    -    (insert_intervalZ_guarded x c s1) ++ s2 =
    -    insert_intervalZ_guarded x c (s1 ++ s2).
    +  Lemma insert_intervalZ_guarded_app : ∀ x c s1 s2,
    +    (insert_intervalZ_guarded x c s1) ++ s2 =
    +    insert_intervalZ_guarded x c (s1 ++ s2).
      Proof.
        intros x c s1 s2.
        rewrite /insert_intervalZ_guarded.
    -    case (N.eqb c 0) ⇒ //.
    +    case (N.eqb c 0) ⇒ //.
      Qed.

    -  Lemma insert_intervalZ_guarded_rev_nil_app : ∀ x c s,
    -    rev (insert_intervalZ_guarded x c nil) ++ s =
    -    insert_intervalZ_guarded x c s.
    +  Lemma insert_intervalZ_guarded_rev_nil_app : ∀ x c s,
    +    rev (insert_intervalZ_guarded x c nil) ++ s =
    +    insert_intervalZ_guarded x c s.
      Proof.
        intros x c s.
        rewrite /insert_intervalZ_guarded.
    -    case (N.eqb c 0) ⇒ //.
    +    case (N.eqb c 0) ⇒ //.
      Qed.

    -Lemma elementsZ_insert_intervalZ_guarded : ∀ x c s,
    -    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
    +Lemma elementsZ_insert_intervalZ_guarded : ∀ x c s,
    +    elementsZ (insert_intervalZ_guarded x c s) = elementsZ ((x, c) :: s).
      Proof.
        intros x c s.
        rewrite /insert_intervalZ_guarded.
    -    case_eq (c =? 0)%N ⇒ //.
    -    move ⇒ /N.eqb_eq →.
    -    rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //.
    +    case_eq (c =? 0)%N ⇒ //.
    +    move ⇒ /N.eqb_eq →.
    +    rewrite elementsZ_cons elementsZ_single_base /= app_nil_r //.
      Qed.

    -  Lemma InZ_insert_intervalZ_guarded : ∀ y x c s,
    -    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).
    +  Lemma InZ_insert_intervalZ_guarded : ∀ y x c s,
    +    InZ y (insert_intervalZ_guarded x c s) = InZ y ((x, c) :: s).
      Proof.
        intros y x c s.
        rewrite /InZ elementsZ_insert_intervalZ_guarded //.
    @@ -2209,56 +2216,56 @@

    Library MSetsExtra.MSetIntervals

    -

    Merging intervals

    +

    Merging intervals


    -  Lemma merge_interval_size_add : ∀ x c1 c2,
    -     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.
    +  Lemma merge_interval_size_add : ∀ x c1 c2,
    +     (merge_interval_size x c1 (x + Z.of_N c1) c2 = (c1 + c2))%N.
      Proof.
        intros x c1 c2.
        rewrite /merge_interval_size.
    -    replace (x + Z.of_N c1 + Z.of_N c2 - x) with
    -            (Z.of_N c1 + Z.of_N c2) by omega.
    -    rewrite -N2Z.inj_add N2Z.id.
    -    apply N.max_r, N.le_add_r.
    +    replace (x + Z.of_N c1 + Z.of_N c2 - x) with
    +            (Z.of_N c1 + Z.of_N c2) by lia.
    +    rewrite -N2Z.inj_add N2Z.id.
    +    apply N.max_r, N.le_add_r.
      Qed.

    -  Lemma merge_interval_size_eq_max : ∀ y1 c1 y2 c2,
    -     y1 ≤ y2 + Z.of_N c2 →
    -     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    -     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).
    +  Lemma merge_interval_size_eq_max : ∀ y1 c1 y2 c2,
    +     y1 ≤ y2 + Z.of_N c2 →
    +     y1 + Z.of_N (merge_interval_size y1 c1 y2 c2) =
    +     Z.max (y1 + Z.of_N c1) (y2 + Z.of_N c2).
      Proof.
        intros y1 c1 y2 c2 H_y1_le.
    -    rewrite /merge_interval_size N2Z.inj_max Z2N.id; last first. {
    -      by apply Zle_minus_le_0.
    +    rewrite /merge_interval_size N2Z.inj_max Z2N.id; last first. {
    +      by apply Zle_minus_le_0.
        }
    -    rewrite -Z.add_max_distr_l.
    -    replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by omega.
    +    rewrite -Z.add_max_distr_l.
    +    replace (y1 + (y2 + Z.of_N c2 - y1)) with (y2 + Z.of_N c2) by lia.
        done.
      Qed.

    -  Lemma merge_interval_size_invariant : ∀ y1 c1 y2 c2 z s,
    -    interval_list_invariant s = true →
    -    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    -    y2 + Z.of_N c2 ≤ z →
    -    interval_list_elements_greater z s = true →
    -    (c1 ≠ 0)%N →
    -    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    -   true.
    +  Lemma merge_interval_size_invariant : ∀ y1 c1 y2 c2 z s,
    +    interval_list_invariant s = true →
    +    y1 + Z.of_N c1 ≤ y2 + Z.of_N c2 →
    +    y2 + Z.of_N c2 ≤ z →
    +    interval_list_elements_greater z s = true →
    +    (c1 ≠ 0)%N →
    +    interval_list_invariant ((y1, merge_interval_size y1 c1 y2 c2) :: s) =
    +   true.
      Proof.
        intros y1 c1 y2 c2 z s H_inv H_le H_le_z H_gr H_c1_neq_0.
        rewrite interval_list_invariant_cons.
        split; last split. {
          rewrite merge_interval_size_eq_max; last first. {
    -        eapply Z.le_trans; last apply H_le.
    +        eapply Z.le_trans; last apply H_le.
            apply Z_le_add_r.
          } {
    -        rewrite Z.max_r ⇒ //.
    +        rewrite Z.max_r ⇒ //.
            eapply interval_list_elements_greater_impl; first apply H_le_z.
            done.
          }
    @@ -2271,31 +2278,31 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma In_merge_interval : ∀ x1 c1 x2 c2 y,
    -    x1 ≤ x2 →
    -    x2 ≤ x1 + Z.of_N c1 → (
    -    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    -    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
    +  Lemma In_merge_interval : ∀ x1 c1 x2 c2 y,
    +    x1 ≤ x2 →
    +    x2 ≤ x1 + Z.of_N c1 → (
    +    List.In y (elementsZ_single x1 (merge_interval_size x1 c1 x2 c2)) ↔
    +    List.In y (elementsZ_single x1 c1) ∨ List.In y (elementsZ_single x2 c2)).
      Proof.
        intros x1 c1 x2 c2 y H_x1_le H_x2_le.
        rewrite !In_elementsZ_single merge_interval_size_eq_max;
          last first. {
    -      eapply Z.le_trans; eauto.
    +      eapply Z.le_trans; eauto.
          by apply Z_le_add_r.
        }
    -    rewrite Z.max_lt_iff.
    +    rewrite Z.max_lt_iff.
        split. {
          move ⇒ [H_x_le] [] H_y_lt. {
            by left.
          } {
    -        case_eq (Z.leb x2 y). {
    -          move ⇒ /Z.leb_le H_y'_le.
    +        case_eq (Z.leb x2 y). {
    +          move ⇒ /Z.leb_le H_y'_le.
              by right.
            } {
    -          move ⇒ /Z.leb_gt H_y_lt_x2.
    +          move ⇒ /Z.leb_gt H_y_lt_x2.
              left.
              split ⇒ //.
    -          eapply Z.lt_le_trans; eauto.
    +          eapply Z.lt_le_trans; eauto.
            }
          }
        } {
    @@ -2304,7 +2311,7 @@

    Library MSetsExtra.MSetIntervals

          } {
            move ⇒ [H_x2_le'] H_y_lt.
            split. {
    -          eapply Z.le_trans; eauto.
    +          eapply Z.le_trans; eauto.
            } {
              by right.
            }
    @@ -2313,14 +2320,14 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma insert_interval_begin_spec : ∀ y s x c,
    -     interval_list_invariant s = true →
    -     interval_list_elements_greater x s = true →
    -     (c ≠ 0)%N →
    -      (
    -     interval_list_invariant (insert_interval_begin x c s) = true ∧
    -     (InZ y (insert_interval_begin x c s) ↔
    -     (List.In y (elementsZ_single x c) ∨ InZ y s))).
    +  Lemma insert_interval_begin_spec : ∀ y s x c,
    +     interval_list_invariant s = true →
    +     interval_list_elements_greater x s = true →
    +     (c ≠ 0)%N →
    +      (
    +     interval_list_invariant (insert_interval_begin x c s) = true ∧
    +     (InZ y (insert_interval_begin x c s) ↔
    +     (List.In y (elementsZ_single x c) ∨ InZ y s))).
      Proof.
        intros y.
        induction s as [| [y' c'] s' IH]. {
    @@ -2334,10 +2341,10 @@

    Library MSetsExtra.MSetIntervals

          unfold insert_interval_begin.
          Z_named_compare_cases H_y'; fold insert_interval_begin. {
            subst.
    -        rewrite !InZ_cons elementsZ_single_add in_app_iff.
    +        rewrite !InZ_cons elementsZ_single_add in_app_iff.
            split; last tauto.
    -        rewrite interval_list_invariant_cons N2Z.inj_add
    -          Z.add_assoc N.eq_add_0.
    +        rewrite interval_list_invariant_cons N2Z.inj_add
    +          Z.add_assoc N.eq_add_0.
            tauto.
          } {
            rewrite !InZ_cons !interval_list_invariant_cons
    @@ -2345,16 +2352,16 @@

    Library MSetsExtra.MSetIntervals

            repeat split ⇒ //.
          } {
            set c'' := merge_interval_size x c y' c'.
    -        have H_x_lt' : x < y' + Z.of_N c'. {
    -          eapply Z.lt_le_trans with (m := y') ⇒ //.
    +        have H_x_lt' : x < y' + Z.of_N c'. {
    +          eapply Z.lt_le_trans with (m := y') ⇒ //.
              by apply Z_le_add_r.
            }

    -        have H_pre : interval_list_elements_greater x s' = true. {
    +        have H_pre : interval_list_elements_greater x s' = true. {
              eapply interval_list_elements_greater_impl; eauto.
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            }
    -        have H_pre2 : c'' ≠ 0%N. {
    +        have H_pre2 : c'' ≠ 0%N. {
              by apply merge_interval_size_neq_0.
            }
            move : (IH x c'' H_inv_s' H_pre H_pre2) ⇒ {IH} {H_pre} {H_pre2} [->] →.
    @@ -2366,9 +2373,9 @@

    Library MSetsExtra.MSetIntervals

              rewrite InZ_cons.
              tauto.
            } {
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            } {
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            }
          }
        }
    @@ -2378,30 +2385,30 @@

    Library MSetsExtra.MSetIntervals

    -

    add specification

    +

    add specification

    -  Lemma addZ_InZ :
    -   âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
    +  Lemma addZ_InZ :
    +   âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    (InZ y (addZ x s) ↔ x = y ∨ InZ y s).
      Proof.
        move ⇒ s x y.
        induction s as [| [z c] s' IH]. {
          move ⇒ _.
          rewrite /InZ addZ_alt_def
    -              elementsZ_cons elementsZ_nil app_nil_l -in_rev
    +              elementsZ_cons elementsZ_nil app_nil_l -in_rev
                  In_elementsZ_single1 /=.
          firstorder.
        } {
          move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0] H_inv_c'.
    -      move : (IH H_inv_c') ⇒ {IH} IH.
    +      move : (IH H_inv_c') ⇒ {} IH.
          rewrite addZ_alt_def.
    -      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    +      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
          move : (interval_1_compare_elim x z c).
    -      case (interval_1_compare x (z, c));
    -        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    +      case (interval_1_compare x (z, c));
    +        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
            move ⇒ →.
            rewrite elementsZ_single_succ_front /=.
            tauto.
    @@ -2416,27 +2423,27 @@

    Library MSetsExtra.MSetIntervals

            tauto.
          } {
            move ⇒ H_x_eq.
    -        have → : (InZ y (insert_interval_begin z (N.succ c) s') ↔
    -                   List.In y (elementsZ_single z (N.succ c)) ∨ InZ y s'). {
    +        have → : (InZ y (insert_interval_begin z (N.succ c) s') ↔
    +                   List.In y (elementsZ_single z (N.succ c)) ∨ InZ y s'). {
              eapply insert_interval_begin_spec. {
                by apply H_inv_c'.
              } {
                eapply interval_list_elements_greater_impl; eauto.
                apply Z_le_add_r.
              } {
    -            by apply N.neq_succ_0.
    +            by apply N.neq_succ_0.
              }
            }
    -        rewrite -H_x_eq elementsZ_single_succ in_app_iff /=.
    +        rewrite -H_x_eq elementsZ_single_succ in_app_iff /=.
            tauto.
          }
        }
      Qed.

    -  Lemma addZ_invariant : ∀ s x,
    -    interval_list_invariant s = true →
    -    interval_list_invariant (addZ x s) = true.
    +  Lemma addZ_invariant : ∀ s x,
    +    interval_list_invariant s = true →
    +    interval_list_invariant (addZ x s) = true.
      Proof.
        move ⇒ s x.
        induction s as [| [z c] s' IH]. {
    @@ -2445,28 +2452,28 @@

    Library MSetsExtra.MSetIntervals

        } {
          move ⇒ /interval_list_invariant_cons [H_greater] [H_c_neq_0]
                  H_inv_c'.
    -      move : (IH H_inv_c') ⇒ {IH} IH.
    +      move : (IH H_inv_c') ⇒ {} IH.
          rewrite addZ_alt_def.
    -      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
    +      have H_succ : ∀ z, z + Z.of_N 1 = Z.succ z by done.
          move : (interval_1_compare_elim x z c).
    -      case_eq (interval_1_compare x (z, c)) ⇒ H_comp;
    -        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
    +      case_eq (interval_1_compare x (z, c)) ⇒ H_comp;
    +        rewrite ?InZ_cons ?In_elementsZ_single1 ?H_succ ?Z.lt_succ_r //. {
            move ⇒ H_z_gt.
    -        rewrite interval_list_invariant_cons /= !andb_true_iff !H_succ.
    +        rewrite interval_list_invariant_cons /= !andb_true_iff !H_succ.
            repeat split ⇒ //. {
    -          by apply Z.ltb_lt.
    +          by apply Z.ltb_lt.
            } {
    -          apply negb_true_iff, N.eqb_neq ⇒ //.
    +          apply negb_true_iff, N.eqb_neq ⇒ //.
            }
          } {
            move ⇒ ?; subst.
    -        rewrite /= !andb_true_iff.
    +        rewrite /= !andb_true_iff.
            repeat split ⇒ //. {
              move : H_greater.
    -          rewrite Z.add_succ_l -Z.add_succ_r N2Z.inj_succ //.
    +          rewrite Z.add_succ_l -Z.add_succ_r N2Z.inj_succ //.
            } {
    -          apply negb_true_iff, N.eqb_neq ⇒ //.
    -          apply N.neq_succ_0.
    +          apply negb_true_iff, N.eqb_neq ⇒ //.
    +          apply N.neq_succ_0.
            }
          } {
            move ⇒ [] // _.
    @@ -2487,14 +2494,14 @@

    Library MSetsExtra.MSetIntervals

              eapply interval_list_elements_greater_impl; eauto.
              apply Z_le_add_r.
            } {
    -          by apply N.neq_succ_0.
    +          by apply N.neq_succ_0.
            }
          }
        }
      Qed.

    -  Global Instance add_ok s x : ∀ `(Ok s), Ok (add x s).
    +  Global Instance add_ok s x : ∀ `(Ok s), Ok (add x s).
      Proof.
        move ⇒ H_ok_s.
        move : (H_ok_s).
    @@ -2516,15 +2523,16 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma add_spec :
    -   âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
    +  Lemma add_spec :
    +   âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    +     In y (add x s) ↔ Enc.E.eq y x ∨ In y s.
      Proof.
        intros s x y Hs.
        have Hs' := (add_ok s x Hs).
        rewrite !In_InZ.
        rewrite /add addZ_InZ. {
    -      rewrite -Enc.encode_eq; firstorder.
    +      rewrite -Enc.encode_eq /Z.eq.
    +      firstorder.
        } {
          apply Hs.
        }
    @@ -2534,26 +2542,26 @@

    Library MSetsExtra.MSetIntervals

    -

    empty specification

    +

    empty specification


    -  Global Instance empty_ok : Ok empty.
    +  Global Instance empty_ok : Ok empty.
      Proof.
        rewrite /empty Ok_nil //.
      Qed.

    -  Lemma empty_spec' : ∀ x, (In x empty ↔ False).
    +  Lemma empty_spec' : ∀ x, (In x empty ↔ False).
        rewrite /Empty /empty /In elements_nil.
        intros a.
    -    rewrite InA_nil //.
    +    rewrite InA_nil //.
      Qed.

    -  Lemma empty_spec : Empty empty.
    +  Lemma empty_spec : Empty empty.
      Proof.
        rewrite /Empty ⇒ a.
        rewrite empty_spec' //.
    @@ -2563,13 +2571,13 @@

    Library MSetsExtra.MSetIntervals

    -

    is_empty specification

    +

    is_empty specification


    -  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
    +  Lemma is_empty_spec : ∀ (s : t) (Hs : Ok s), is_empty s = true ↔ Empty s.
      Proof.
        intros [ | [x c] s]. {
          split ⇒ // _.
    @@ -2580,11 +2588,11 @@

    Library MSetsExtra.MSetIntervals

          split ⇒ //.
          move ⇒ H.
          contradiction (H (Enc.decode x)) ⇒ {H}.
    -      rewrite /In InA_alt elements_cons.
    +      rewrite /In InA_alt elements_cons.
          âˆƒ (Enc.decode x).
          split; first by apply Enc.E.eq_equiv.
    -      rewrite in_app_iff; left.
    -      rewrite /elements_single in_map_iff.
    +      rewrite in_app_iff; left.
    +      rewrite /elements_single in_map_iff.
          âˆƒ x.
          split ⇒ //.
          apply In_elementsZ_single_hd ⇒ //.
    @@ -2595,13 +2603,13 @@

    Library MSetsExtra.MSetIntervals

    -

    singleton specification

    +

    singleton specification


    -  Global Instance singleton_ok x : Ok (singleton x).
    +  Global Instance singleton_ok x : Ok (singleton x).
      Proof.
        rewrite singleton_alt_def.
        apply add_ok.
    @@ -2609,11 +2617,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
    +  Lemma singleton_spec : ∀ x y : elt, In y (singleton x) ↔ Enc.E.eq y x.
      Proof.
        intros x y.
        rewrite singleton_alt_def.
    -    rewrite (add_spec empty x y) /empty /In elements_nil InA_nil.
    +    rewrite (add_spec empty x y) /empty /In elements_nil InA_nil.
        split. {
          move ⇒ [] //.
        } {
    @@ -2625,13 +2633,13 @@

    Library MSetsExtra.MSetIntervals

    -

    add_list specification

    +

    add_list specification


    -  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
    +  Lemma add_list_ok : ∀ l s, Ok s → Ok (add_list l s).
      Proof.
        induction l as [| x l' IH]. {
          done.
    @@ -2643,17 +2651,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma add_list_spec : ∀ x l s, Ok s →
    -     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
    +  Lemma add_list_spec : ∀ x l s, Ok s →
    +     (In x (add_list l s) ↔ (SetoidList.InA Enc.E.eq x l) ∨ In x s).
      Proof.
        move ⇒ x.
        induction l as [| y l' IH]. {
          intros s H.
    -      rewrite /= InA_nil.
    +      rewrite /= InA_nil.
          tauto.
        } {
          move ⇒ s H_ok /=.
    -      rewrite IH add_spec InA_cons.
    +      rewrite IH add_spec InA_cons.
          tauto.
        }
      Qed.
    @@ -2662,37 +2670,37 @@

    Library MSetsExtra.MSetIntervals

    -

    union specification

    +

    union specification


    -  Lemma union_aux_flatten_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ List.rev_append acc s2
    -    | (_, nil) ⇒ List.rev_append acc s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
    +  Lemma union_aux_flatten_alt_def : ∀ (s1 s2 : t) acc,
    +    union_aux s1 s2 acc =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ List.rev_append acc s2
    +    | (_, nil) ⇒ List.rev_append acc s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ union_aux l1 s2 ((y1, c1)::acc)
              | ICR_before_touch ⇒
                  union_aux l1 (
    -                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    -          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
    +                insert_interval_begin y1 ((c1+c2)%N) l2) acc
    +          | ICR_after ⇒ union_aux s1 l2 ((y2, c2)::acc)
              | ICR_after_touch ⇒ union_aux l1 (
    -              insert_interval_begin y2 ((c1+c2)%N) l2) acc
    +              insert_interval_begin y2 ((c1+c2)%N) l2) acc
              | ICR_overlap_before ⇒
                  union_aux l1 (
                    insert_interval_begin y1
    -                  (merge_interval_size y1 c1 y2 c2) l2) acc
    +                  (merge_interval_size y1 c1 y2 c2) l2) acc
              | ICR_overlap_after ⇒
                  union_aux l1 (
                    insert_interval_begin y2
    -                  (merge_interval_size y2 c2 y1 c1) l2) acc
    -          | ICR_equal ⇒ union_aux l1 s2 acc
    -          | ICR_subsume_1 ⇒ union_aux l1 s2 acc
    -          | ICR_subsume_2 ⇒ union_aux s1 l2 acc
    +                  (merge_interval_size y2 c2 y1 c1) l2) acc
    +          | ICR_equal ⇒ union_aux l1 s2 acc
    +          | ICR_subsume_1 ⇒ union_aux l1 s2 acc
    +          | ICR_subsume_2 ⇒ union_aux s1 l2 acc
            end
        end.
      Proof.
    @@ -2701,9 +2709,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma union_aux_alt_def : ∀ (s1 s2 : t) acc,
    -    union_aux s1 s2 acc =
    -    List.rev_append acc (union s1 s2).
    +  Lemma union_aux_alt_def : ∀ (s1 s2 : t) acc,
    +    union_aux s1 s2 acc =
    +    List.rev_append acc (union s1 s2).
      Proof.
        rewrite /union.
        intros s1 s2 acc.
    @@ -2711,39 +2719,39 @@

    Library MSetsExtra.MSetIntervals

        induction s1 as [| [y1 c1] l1 IH1]. {
          intros acc s2.
          rewrite !union_aux_flatten_alt_def.
    -      rewrite !rev_append_rev //.
    +      rewrite !rev_append_rev //.
        }
        intros acc s2; move : acc.
        induction s2 as [| [y2 c2] l2 IH2]; first by simpl.
        move ⇒ acc.
    -    rewrite !(union_aux_flatten_alt_def ((y1, c1)::l1) ((y2, c2)::l2)).
    -    case (interval_compare (y1, c1) (y2, c2));
    -      rewrite ?(IH1 ((y1, c1) :: acc)) ?(IH1 ((y1, c1) :: nil))
    -              ?(IH2 ((y2, c2) :: acc)) ?(IH2 ((y2, c2) :: nil))
    +    rewrite !(union_aux_flatten_alt_def ((y1, c1)::l1) ((y2, c2)::l2)).
    +    case (interval_compare (y1, c1) (y2, c2));
    +      rewrite ?(IH1 ((y1, c1) :: acc)) ?(IH1 ((y1, c1) :: nil))
    +              ?(IH2 ((y2, c2) :: acc)) ?(IH2 ((y2, c2) :: nil))
                  ?(IH1 acc) //.
      Qed.

    -  Lemma union_alt_def : ∀ (s1 s2 : t),
    -    union s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ s2
    -    | (_, nil) ⇒ s1
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
    +  Lemma union_alt_def : ∀ (s1 s2 : t),
    +    union s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ s2
    +    | (_, nil) ⇒ s1
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ (y1, c1) :: (union l1 s2)
              | ICR_before_touch ⇒
    -              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    -          | ICR_after ⇒ (y2, c2) :: union s1 l2
    +              union l1 (insert_interval_begin y1 ((c1+c2)%N) l2)
    +          | ICR_after ⇒ (y2, c2) :: union s1 l2
              | ICR_after_touch ⇒ union l1
    -              (insert_interval_begin y2 ((c1+c2)%N) l2)
    +              (insert_interval_begin y2 ((c1+c2)%N) l2)
              | ICR_overlap_before ⇒
                  union l1 (insert_interval_begin y1 (merge_interval_size y1 c1 y2 c2) l2)
              | ICR_overlap_after ⇒
                  union l1 (insert_interval_begin y2 (merge_interval_size y2 c2 y1 c1) l2)
    -          | ICR_equal ⇒ union l1 s2
    -          | ICR_subsume_1 ⇒ union l1 s2
    -          | ICR_subsume_2 ⇒ union s1 l2
    +          | ICR_equal ⇒ union l1 s2
    +          | ICR_subsume_1 ⇒ union l1 s2
    +          | ICR_subsume_2 ⇒ union s1 l2
            end
         end.
      Proof.
    @@ -2751,16 +2759,16 @@

    Library MSetsExtra.MSetIntervals

        rewrite /union union_aux_flatten_alt_def.
        case s1 as [| [y1 c1] l1] ⇒ //.
        case s2 as [| [y2 c2] l2] ⇒ //.
    -    case (interval_compare (y1, c1) (y2, c2));
    +    case (interval_compare (y1, c1) (y2, c2));
          rewrite union_aux_alt_def //.
      Qed.

    -  Lemma union_InZ :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
    +  Lemma union_InZ :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (union s1 s2) ↔ InZ y s1 ∨ InZ y s2).
      Proof.
        intro s1.
        induction s1 as [| [y1 c1] l1 IH1]. {
    @@ -2778,32 +2786,32 @@

    Library MSetsExtra.MSetIntervals

            rewrite !interval_list_invariant_cons.
            move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
            move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          âˆ€ y : Z, InZ y (union l1 s2) ↔ InZ y l1 ∨ InZ y s2. {
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          âˆ€ y : Z, InZ y (union l1 s2) ↔ InZ y l1 ∨ InZ y s2. {
              intros. by apply IH1.
            }
    -        move ⇒ {IH1} IH1 y.
    +        move ⇒ {} IH1 y.
            rewrite union_alt_def.
            move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    +        case (interval_compare (y1, c1) (y2, c2)). {
              rewrite !InZ_cons IH1 // InZ_cons.
              tauto.
            } {
              move ⇒ H_y2_eq.
    -          replace (c1 + c2)%N with (merge_interval_size y1 c1 y2 c2);
    +          replace (c1 + c2)%N with (merge_interval_size y1 c1 y2 c2);
                last first. {
                rewrite -H_y2_eq merge_interval_size_add //.
              }
              set c'' := merge_interval_size y1 c1 y2 c2.
              have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    -                (InZ y (insert_interval_begin y1 c'' l2) ↔
    -                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
    +               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y1 c'' l2) ↔
    +                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
                apply insert_interval_begin_spec ⇒ //. {
                  eapply interval_list_elements_greater_impl; eauto.
    -              rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    +              rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
                  apply Z_le_add_r.
                } {
                  by apply merge_interval_size_neq_0.
    @@ -2817,15 +2825,15 @@

    Library MSetsExtra.MSetIntervals

              } {
                apply Z_le_add_r.
              } {
    -            by apply Z.le_refl.
    +            by apply Z.le_refl.
              }
            } {
              move ⇒ [H_y1_lt] [H_y2_lt] H_y1_c1_lt.
              set c'' := merge_interval_size y1 c1 y2 c2.
              have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    -                (InZ y (insert_interval_begin y1 c'' l2) ↔
    -                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
    +               interval_list_invariant (insert_interval_begin y1 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y1 c'' l2) ↔
    +                List.In y (elementsZ_single y1 c'') ∨ InZ y l2). {
                apply insert_interval_begin_spec ⇒ //. {
                  eapply interval_list_elements_greater_impl; eauto.
                  apply Z_lt_le_add_r ⇒ //.
    @@ -2838,17 +2846,17 @@

    Library MSetsExtra.MSetIntervals

              rewrite In_merge_interval. {
                tauto.
              } {
    -            by apply Z.lt_le_incl.
    +            by apply Z.lt_le_incl.
              } {
    -            by apply Z.lt_le_incl.
    +            by apply Z.lt_le_incl.
              }
            } {
              move ⇒ [H_y2_lt] [H_y1_lt] H_y2_c_lt.
              set c'' := merge_interval_size y2 c2 y1 c1.
              have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    -                (InZ y (insert_interval_begin y2 c'' l2) ↔
    -                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
    +               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y2 c'' l2) ↔
    +                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
                apply insert_interval_begin_spec ⇒ //. {
                  eapply interval_list_elements_greater_impl; eauto.
                  apply Z_le_add_r.
    @@ -2862,9 +2870,9 @@

    Library MSetsExtra.MSetIntervals

              rewrite In_merge_interval. {
                tauto.
              } {
    -            by apply Z.lt_le_incl.
    +            by apply Z.lt_le_incl.
              } {
    -            by apply Z.lt_le_incl.
    +            by apply Z.lt_le_incl.
              }
            } {
              move ⇒ [? ?]; subst.
    @@ -2875,38 +2883,38 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ [H_y2_le] [H_y1_c1_le] _.
              rewrite IH1 ⇒ //.
              rewrite !InZ_cons.
    -          suff : (List.In y (elementsZ_single y1 c1) →
    -                  List.In y (elementsZ_single y2 c2)). {
    +          suff : (List.In y (elementsZ_single y1 c1) →
    +                  List.In y (elementsZ_single y2 c2)). {
                tauto.
              }
              rewrite !In_elementsZ_single.
              move ⇒ [H_y1_le H_y_lt].
    -          split; omega.
    +          split; lia.
            } {
              move ⇒ [H_y1_le] [H_y2_c2_le] _.
              rewrite IH2.
              rewrite !InZ_cons.
    -          suff : (List.In y (elementsZ_single y2 c2) →
    -                  List.In y (elementsZ_single y1 c1)). {
    +          suff : (List.In y (elementsZ_single y2 c2) →
    +                  List.In y (elementsZ_single y1 c1)). {
                tauto.
              }
              rewrite !In_elementsZ_single.
              move ⇒ [H_y2_le H_y_lt].
    -          split; omega.
    +          split; lia.
            } {
              rewrite !InZ_cons IH2 !InZ_cons.
              tauto.
            } {
              move ⇒ H_y1_eq.
    -          replace (c1 + c2)%N with (merge_interval_size y2 c2 y1 c1);
    +          replace (c1 + c2)%N with (merge_interval_size y2 c2 y1 c1);
                last first. {
    -            rewrite -H_y1_eq merge_interval_size_add N.add_comm //.
    +            rewrite -H_y1_eq merge_interval_size_add N.add_comm //.
              }
              set c'' := merge_interval_size y2 c2 y1 c1.
              have [H_inv_insert H_InZ_insert] :
    -               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    -                (InZ y (insert_interval_begin y2 c'' l2) ↔
    -                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
    +               interval_list_invariant (insert_interval_begin y2 c'' l2) = true ∧
    +                (InZ y (insert_interval_begin y2 c'' l2) ↔
    +                List.In y (elementsZ_single y2 c'') ∨ InZ y l2). {
                apply insert_interval_begin_spec ⇒ //. {
                  eapply interval_list_elements_greater_impl; eauto.
                  apply Z_le_add_r.
    @@ -2922,7 +2930,7 @@

    Library MSetsExtra.MSetIntervals

              } {
                apply Z_le_add_r.
              } {
    -            by apply Z.le_refl.
    +            by apply Z.le_refl.
              }
            }
          }
    @@ -2930,11 +2938,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma union_invariant :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (union s1 s2) = true.
    +  Lemma union_invariant :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (union s1 s2) = true.
      Proof.
        intro s1.
        induction s1 as [| [y1 c1] l1 IH1]. {
    @@ -2950,20 +2958,20 @@

    Library MSetsExtra.MSetIntervals

            rewrite !interval_list_invariant_cons.
            move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
            move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          interval_list_invariant (union l1 s2) = true. {
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          interval_list_invariant (union l1 s2) = true. {
              intros. by apply IH1.
            }
    -        move ⇒ {IH1} IH1.
    +        move ⇒ {} IH1.

            rewrite union_alt_def.
            move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    +        case (interval_compare (y1, c1) (y2, c2)). {
              move ⇒ H_lt_y2.
    -          have H_inv' : interval_list_invariant (union l1 ((y2, c2) :: l2)) = true. {
    +          have H_inv' : interval_list_invariant (union l1 ((y2, c2) :: l2)) = true. {
                by apply IH1.
              }

    @@ -2982,10 +2990,10 @@

    Library MSetsExtra.MSetIntervals

              apply IH1.
              apply insert_interval_begin_spec ⇒ //. {
                eapply interval_list_elements_greater_impl; last apply H_gr_l2.
    -            rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
    +            rewrite -H_y2_eq -Z.add_assoc -N2Z.inj_add.
                apply Z_le_add_r.
              } {
    -            rewrite N.eq_add_0.
    +            rewrite N.eq_add_0.
                tauto.
              }
            } {
    @@ -3034,7 +3042,7 @@

    Library MSetsExtra.MSetIntervals

                eapply interval_list_elements_greater_impl; last apply H_gr_l2.
                apply Z_le_add_r.
              } {
    -            rewrite N.eq_add_0.
    +            rewrite N.eq_add_0.
                tauto.
              }
            }
    @@ -3045,7 +3053,7 @@

    Library MSetsExtra.MSetIntervals



    -  Global Instance union_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (union s1 s2).
    +  Global Instance union_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (union s1 s2).
      Proof.
        move ⇒ H_ok_s1 H_ok_s2.
        move : (H_ok_s1) (H_ok_s2).
    @@ -3067,9 +3075,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma union_spec :
    -   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (union s s') ↔ In x s ∨ In x s'.
    +  Lemma union_spec :
    +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (union s s') ↔ In x s ∨ In x s'.
      Proof.
        intros s s' x H_ok H_ok'.
        rewrite !In_InZ.
    @@ -3084,53 +3092,53 @@

    Library MSetsExtra.MSetIntervals

    -

    inter specification

    +

    inter specification


    -  Lemma inter_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    -                               (acc', s') ⇒ (acc' ++ acc, s')
    +  Lemma inter_aux_alt_def :
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      inter_aux y2 c2 acc s = match inter_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
      Proof.
        intros y2 c2.
        induction s as [| [y1 c1] s' IH] ⇒ acc. {
    -      rewrite /inter_aux app_nil_l //.
    +      rewrite /inter_aux app_nil_l //.
        } {
          simpl.
    -      case_eq (inter_aux y2 c2 nil s') ⇒ acc'' s'' H_eq.
    -      case (interval_compare (y1, c1) (y2, c2));
    +      case_eq (inter_aux y2 c2 nil s') ⇒ acc'' s'' H_eq.
    +      case (interval_compare (y1, c1) (y2, c2));
            rewrite ?(IH acc)
    -                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: acc))
    -                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: nil))
    -                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: acc))
    -                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: nil))
    -                ?(IH ((y1, c1) :: acc))
    -                ?(IH ((y1, c1) :: nil))
    +                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: acc))
    +                ?(IH ((y2, Z.to_N (y1 + Z.of_N c1 - y2)) :: nil))
    +                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: acc))
    +                ?(IH ((y1, Z.to_N (y2 + Z.of_N c2 - y1)) :: nil))
    +                ?(IH ((y1, c1) :: acc))
    +                ?(IH ((y1, c1) :: nil))
                    
    -                ?H_eq -?app_assoc -?app_comm_cons //.
    +                ?H_eq -?app_assoc -?app_comm_cons //.
        }
      Qed.

    -  Lemma inter_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    -                     List.In x2 (elementsZ_single y2 c2) →
    -                     Z.succ x1 < x2) →
    -      (c2 ≠ 0%N) →
    -      match (inter_aux y2 c2 acc s) with (acc', s') ⇒
    -        (∀ y, (InZ y acc' ↔
    -                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    -        (∀ y, InZ y s' → InZ y s) ∧
    -        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y s') ∧
    -        interval_list_invariant (rev acc') = true ∧
    -        interval_list_invariant s' = true
    +  Lemma inter_aux_props :
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s →
    +                     List.In x2 (elementsZ_single y2 c2) →
    +                     Z.succ x1 < x2) →
    +      (c2 ≠ 0%N) →
    +      match (inter_aux y2 c2 acc s) with (acc', s') ⇒
    +        (∀ y, (InZ y acc' ↔
    +                   (InZ y acc ∨ (InZ y s ∧ (List.In y (elementsZ_single y2 c2)))))) ∧
    +        (∀ y, InZ y s' → InZ y s) ∧
    +        (∀ y, InZ y s → y2 + Z.of_N c2 < y → InZ y s') ∧
    +        interval_list_invariant (rev acc') = true ∧
    +        interval_list_invariant s' = true
          end.
      Proof.
        intros y2 c2.
    @@ -3147,22 +3155,22 @@

    Library MSetsExtra.MSetIntervals


          rewrite inter_aux_alt_def.
    -      case_eq (inter_aux y2 c2 nil ((y1, c1) :: s1')).
    +      case_eq (inter_aux y2 c2 nil ((y1, c1) :: s1')).
          move ⇒ acc' s' H_inter_aux_eq.

    -      set P1 := ∀ y : Z,
    -        (InZ y acc' ↔
    -        ((InZ y ((y1, c1) :: s1') ∧ List.In y (elementsZ_single y2 c2)))).
    -      set P2 := (∀ y,
    -                  (InZ y s' → InZ y ((y1, c1) :: s1')) ∧
    -                  (InZ y ((y1, c1) :: s1') →
    -                     y2 + Z.of_N c2 < y → InZ y s')).
    -      set P3 := interval_list_invariant (rev acc') = true.
    -      set P4 := interval_list_invariant s' = true.
    +      set P1 := ∀ y : Z,
    +        (InZ y acc' ↔
    +        ((InZ y ((y1, c1) :: s1') ∧ List.In y (elementsZ_single y2 c2)))).
    +      set P2 := (∀ y,
    +                  (InZ y s' → InZ y ((y1, c1) :: s1')) ∧
    +                  (InZ y ((y1, c1) :: s1') →
    +                     y2 + Z.of_N c2 < y → InZ y s')).
    +      set P3 := interval_list_invariant (rev acc') = true.
    +      set P4 := interval_list_invariant s' = true.

    -      suff : (P1 ∧ P2 ∧ P3 ∧ P4). {
    +      suff : (P1 ∧ P2 ∧ P3 ∧ P4). {
            move ⇒ [H_P1] [H_P2] [H_P3] H_P4.
            split; last split; last split; last split. {
              move ⇒ y.
    @@ -3177,7 +3185,7 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ y H_y_in.
              by apply H_P2.
            } {
    -          rewrite rev_app_distr.
    +          rewrite rev_app_distr.
              apply interval_list_invariant_app_intro ⇒ //.
              move ⇒ x1 x2.
              rewrite !InZ_rev.
    @@ -3192,31 +3200,31 @@

    Library MSetsExtra.MSetIntervals

          rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1'_alt.

    -      have : ∀ (acc : list (Z × N)),
    -        interval_list_invariant (rev acc) = true →
    -        (∀ y, InZ y acc ↔ (
    -           y1 ≤ y < y1 + Z.of_N c1 ∧
    -           y2 ≤ y < y2 + Z.of_N c2)) →
    -        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    -        (inter_aux y2 c2 acc s1' = (acc', s')) →
    -        P1 ∧ P2 ∧ P3 ∧ P4. {
    +      have : ∀ (acc : list (Z × N)),
    +        interval_list_invariant (rev acc) = true →
    +        (∀ y, InZ y acc ↔ (
    +           y1 ≤ y < y1 + Z.of_N c1 ∧
    +           y2 ≤ y < y2 + Z.of_N c2)) →
    +        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    +        (inter_aux y2 c2 acc s1' = (acc', s')) →
    +        P1 ∧ P2 ∧ P3 ∧ P4. {
            
            intros acc0 H_inv_acc0 H_in_acc0 H_y2c_lt H_inter_aux_eq0.
    -        have H_in_acc0_lt : (∀ x1 x2 : Z,
    -          InZ x1 acc0 →
    -          InZ x2 s1' →
    -          List.In x2 (elementsZ_single y2 c2) →
    -          Z.succ x1 < x2). {
    +        have H_in_acc0_lt : (∀ x1 x2 : Z,
    +          InZ x1 acc0 →
    +          InZ x2 s1' →
    +          List.In x2 (elementsZ_single y2 c2) →
    +          Z.succ x1 < x2). {

              intros x1 x2 H_x1_in_acc0 H_x2_in_s1' H_x2_in_yc2.

    -          suff H_yc1_lt_x2 : Z.succ x1 ≤ y1 + Z.of_N c1. {
    -            apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +          suff H_yc1_lt_x2 : Z.succ x1 ≤ y1 + Z.of_N c1. {
    +            apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
                by apply H_gr_s1'_alt.
              }
              move : (H_x1_in_acc0).
    -          rewrite H_in_acc0 Z.le_succ_l.
    +          rewrite H_in_acc0 Z.le_succ_l.
              tauto.
            }
            
    @@ -3240,25 +3248,25 @@

    Library MSetsExtra.MSetIntervals

                move ⇒ []. {
                  move ⇒ [_] H_y_lt H_lt_y.
                  exfalso.
    -              suff : (y < y) by apply Z.lt_irrefl.
    -              apply Z.lt_le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -              apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +              suff : (y < y) by apply Z.lt_irrefl.
    +              apply Z.lt_le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +              apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.

    -              by apply Z.lt_le_incl.
    +              by apply Z.lt_le_incl.
                } {
                  apply H3.
                }
              }
            }
          }
    -      move ⇒ {IH} IH.
    +      move ⇒ {} IH.

          clear H_inv_acc H_in_acc_lt acc.
          move : (interval_compare_elim y1 c1 y2 c2) H_inter_aux_eq.
          unfold inter_aux.
    -      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    +      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
             fold inter_aux. {
            move ⇒ H_lt_y2.
            apply IH. {
    @@ -3267,10 +3275,10 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ x.
              rewrite InZ_nil.
              split ⇒ //.
    -          omega.
    +          lia.
            } {
    -          apply Z.le_trans with (m := y2). {
    -            by apply Z.lt_le_incl.
    +          apply Z.le_trans with (m := y2). {
    +            by apply Z.lt_le_incl.
              } {
                apply Z_le_add_r.
              }
    @@ -3283,7 +3291,7 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ x.
              rewrite InZ_nil.
              split ⇒ //.
    -          omega.
    +          lia.
            } {
              rewrite H_eq_y2.
              apply Z_le_add_r.
    @@ -3295,11 +3303,11 @@

    Library MSetsExtra.MSetIntervals

              by apply Z_to_N_minus_neq_0.
            } {
              move ⇒ x.
    -          rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last omega.
    -          replace (y1 + (y2 - y1)) with y2 by omega.
    -          split; omega.
    +          rewrite InZ_cons InZ_nil In_elementsZ_single Z2N.id; last lia.
    +          replace (y1 + (y2 - y1)) with y2 by lia.
    +          split; lia.
            } {
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            }
          } {
            rewrite /P1 /P2 /P3 /P4.
    @@ -3309,17 +3317,17 @@

    Library MSetsExtra.MSetIntervals

            subst s' acc'.
            split; last split; last split. {
              move ⇒ y.
    -          have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) =
    -                             y2 + Z.of_N c2. {
    -            rewrite Z2N.id; omega.
    +          have H_yc2_intro : y1 + Z.of_N (Z.to_N (y2 + Z.of_N c2 - y1)) =
    +                             y2 + Z.of_N c2. {
    +            rewrite Z2N.id; lia.
              }
              
              rewrite !InZ_cons !In_elementsZ_single InZ_nil H_yc2_intro.
              split. {
                move ⇒ [] //.
                move ⇒ [H_y1_le] H_y_lt.
    -            split; last by omega.
    -            left. omega.
    +            split; last by lia.
    +            left. lia.
              } {
                move ⇒ [H_in_s] [H_y2_le] H_y_lt.
                left.
    @@ -3328,10 +3336,10 @@

    Library MSetsExtra.MSetIntervals

                  tauto.
                } {
                  move ⇒ /H_gr_s1'_alt H_lt_y.
    -              apply Z.le_trans with (m := y1 + Z.of_N c1). {
    +              apply Z.le_trans with (m := y1 + Z.of_N c1). {
                    by apply Z_le_add_r.
                  } {
    -                by apply Z.lt_le_incl.
    +                by apply Z.lt_le_incl.
                  }
                }
              }
    @@ -3363,9 +3371,9 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ [] //.
              move ⇒ [_] H_y_lt H_lt_y.
              exfalso.
    -          suff : (y2 + Z.of_N c2 < y2 + Z.of_N c2) by
    -              apply Z.lt_irrefl.
    -          apply Z.lt_trans with (m := y) ⇒ //.
    +          suff : (y2 + Z.of_N c2 < y2 + Z.of_N c2) by
    +              apply Z.lt_irrefl.
    +          apply Z.lt_trans with (m := y) ⇒ //.
            } {
              rewrite interval_list_invariant_sing //.
            } {
    @@ -3382,7 +3390,7 @@

    Library MSetsExtra.MSetIntervals

                move ⇒ [] //.
                move ⇒ [H_y1_le] H_y_lt.
                split; first done.
    -            split; omega.
    +            split; lia.
              } {
                move ⇒ [?] _.
                by left.
    @@ -3402,8 +3410,8 @@

    Library MSetsExtra.MSetIntervals

              split. {
                move ⇒ [] //.
                move ⇒ [H_y2_le] H_y_lt.
    -            split; last by omega.
    -            left. omega.
    +            split; last by lia.
    +            left. lia.
              } {
                move ⇒ [H_in_s] [H_y2_le] H_y_lt.
                by left.
    @@ -3427,14 +3435,14 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ [] []. {
                move ⇒ [H_y1_le_y] H_y_lt_yc1.
                move ⇒ [H_y2_le_y] H_y_lt_yc2.
    -            omega.
    +            lia.
              } {
                move ⇒ /H_gr_s1'_alt H_lt_y [_] H_y_lt.
    -            suff : (y1 + Z.of_N c1 < y1). {
    -              apply Z.nlt_ge.
    +            suff : (y1 + Z.of_N c1 < y1). {
    +              apply Z.nlt_ge.
                  apply Z_le_add_r.
                }
    -            omega.
    +            lia.
              }
            } {
              tauto.
    @@ -3455,14 +3463,14 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ [] []. {
                move ⇒ [H_y1_le_y] H_y_lt_yc1.
                move ⇒ [H_y2_le_y] H_y_lt_yc2.
    -            omega.
    +            lia.
              } {
                move ⇒ /H_gr_s1'_alt H_lt_y [_] H_y_lt.
    -            suff : (y1 + Z.of_N c1 < y1). {
    -              apply Z.nlt_ge.
    +            suff : (y1 + Z.of_N c1 < y1). {
    +              apply Z.nlt_ge.
                  apply Z_le_add_r.
                }
    -            omega.
    +            lia.
              }
            } {
              tauto.
    @@ -3476,25 +3484,25 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma inter_aux2_props :
    -   âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev acc) = true →
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    -               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    -    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
    +  Lemma inter_aux2_props :
    +   âˆ€ (s2 s1 acc : t),
    +    interval_list_invariant (rev acc) = true →
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s1 → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (inter_aux2 acc s1 s2) ↔
    +               (InZ y acc) ∨ ((InZ y s1) ∧ InZ y s2))) ∧
    +    (interval_list_invariant (inter_aux2 acc s1 s2) = true)).
      Proof.
        induction s2 as [| [y2 c2] s2' IH]. {
          move ⇒ s1 acc.
          move ⇒ H_inv_acc _ _ _.
          unfold inter_aux2.
          replace (match s1 with
    -        | nil ⇒ rev' acc
    -        | _ :: _ ⇒ rev' acc
    -               end) with (rev' acc); last by case s1.
    -      rewrite /rev' rev_append_rev app_nil_r.
    +        | nil ⇒ rev' acc
    +        | _ :: _ ⇒ rev' acc
    +               end) with (rev' acc); last by case s1.
    +      rewrite /rev' rev_append_rev app_nil_r.
          split; last done.
          move ⇒ y.
          rewrite InZ_nil InZ_rev.
    @@ -3516,11 +3524,11 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ H_s1_eq.
            split. {
              move ⇒ y.
    -          rewrite /rev' rev_append_rev app_nil_r InZ_nil
    +          rewrite /rev' rev_append_rev app_nil_r InZ_nil
                      InZ_rev.
              tauto.
            } {
    -          rewrite /rev' rev_append_rev app_nil_r //.
    +          rewrite /rev' rev_append_rev app_nil_r //.
            }
          } {
            move ⇒ [_ _] _ <-.
    @@ -3528,11 +3536,11 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ acc' s1' H_inter_aux_eq.

    -        have H_acc_s1_yc2 : ∀ x1 x2 : Z,
    -          InZ x1 acc →
    -          InZ x2 s1 →
    -          List.In x2 (elementsZ_single y2 c2) →
    -          Z.succ x1 < x2. {
    +        have H_acc_s1_yc2 : ∀ x1 x2 : Z,
    +          InZ x1 acc →
    +          InZ x2 s1 →
    +          List.In x2 (elementsZ_single y2 c2) →
    +          Z.succ x1 < x2. {
              intros x1 x2 H_x1_in H_x2_in1 H_x2_in2.
              apply H_acc_s12 ⇒ //.
              rewrite InZ_cons; by left.
    @@ -3544,8 +3552,8 @@

    Library MSetsExtra.MSetIntervals

                    [H_inv_acc'] H_inv_s1'.

    -        have H_in_acc'_s2' : ∀ x1 x2 : Z,
    -            InZ x1 acc' → InZ x2 s1' → InZ x2 s2' → Z.succ x1 < x2. {
    +        have H_in_acc'_s2' : ∀ x1 x2 : Z,
    +            InZ x1 acc' → InZ x2 s1' → InZ x2 s2' → Z.succ x1 < x2. {
              move ⇒ x1 x2 /H_in_acc'.
              move ⇒ []. {
                move ⇒ H_in_acc H_in_s1' H_in_s2'.
    @@ -3558,8 +3566,8 @@

    Library MSetsExtra.MSetIntervals

                rewrite In_elementsZ_single.
                move ⇒ [H_in_s1] [_] H_x1_lt _.
                move ⇒ /H_gr_s2' H_lt_x2.
    -            apply Z.le_lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -            by apply Z.le_succ_l.
    +            apply Z.le_lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +            by apply Z.le_succ_l.
              }
            }
           
    @@ -3597,17 +3605,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma inter_InZ :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).
    +  Lemma inter_InZ :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (inter s1 s2) ↔ InZ y s1 ∧ InZ y s2).
      Proof.
        intros s1 s2 H_inv_s1 H_inv_s2 y.
        rewrite /inter.

    -    move : (inter_aux2_props s2 s1 nil).
    +    move : (inter_aux2_props s2 s1 nil).
        move ⇒ [] //.
        move ⇒ H_in_inter _.
        rewrite H_in_inter InZ_nil.
    @@ -3615,24 +3623,24 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma inter_invariant :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (inter s1 s2) = true.
    +  Lemma inter_invariant :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (inter s1 s2) = true.
      Proof.
        intros s1 s2 H_inv_s1 H_inv_s2.
        rewrite /inter.

    -    move : (inter_aux2_props s2 s1 nil).
    +    move : (inter_aux2_props s2 s1 nil).
        move ⇒ [] //.
      Qed.


    -  Global Instance inter_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (inter s1 s2).
    +  Global Instance inter_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (inter s1 s2).
      Proof.
        move ⇒ H_ok_s1 H_ok_s2.
        move : (H_ok_s1) (H_ok_s2).
    @@ -3651,9 +3659,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma inter_spec :
    -   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (inter s s') ↔ In x s ∧ In x s'.
    +  Lemma inter_spec :
    +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (inter s s') ↔ In x s ∧ In x s'.
      Proof.
        intros s s' x H_ok H_ok'.
        rewrite !In_InZ.
    @@ -3670,65 +3678,65 @@

    Library MSetsExtra.MSetIntervals

    -

    diff specification

    +

    diff specification


    -  Lemma diff_aux_alt_def :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    -                               (acc', s') ⇒ (acc' ++ acc, s')
    +  Lemma diff_aux_alt_def :
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      diff_aux y2 c2 acc s = match diff_aux y2 c2 nil s with
    +                               (acc', s') ⇒ (acc' ++ acc, s')
                                 end.
      Proof.
        intros y2 c2.
        induction s as [| [y1 c1] acc' IH] ⇒ acc. {
    -      rewrite /diff_aux app_nil_l //.
    +      rewrite /diff_aux app_nil_l //.
        } {
          simpl.
    -      case_eq (diff_aux y2 c2 nil acc') ⇒ acc'' s'' H_eq.
    -      case (interval_compare (y1, c1) (y2, c2));
    -        rewrite ?(IH ((y1, c1)::acc)) ?(IH ((y1, c1)::nil))
    -                ?(IH acc) ?(IH ((y1, Z.to_N (y2 - y1)) :: acc))
    -                ?(IH ((y1, Z.to_N (y2 - y1)) :: nil)) ?H_eq;
    -        rewrite ?insert_intervalZ_guarded_app -?app_assoc -?app_comm_cons //.
    +      case_eq (diff_aux y2 c2 nil acc') ⇒ acc'' s'' H_eq.
    +      case (interval_compare (y1, c1) (y2, c2));
    +        rewrite ?(IH ((y1, c1)::acc)) ?(IH ((y1, c1)::nil))
    +                ?(IH acc) ?(IH ((y1, Z.to_N (y2 - y1)) :: acc))
    +                ?(IH ((y1, Z.to_N (y2 - y1)) :: nil)) ?H_eq;
    +        rewrite ?insert_intervalZ_guarded_app -?app_assoc -?app_comm_cons //.
        }
      Qed.


    -  Lemma diff_aux_props :
    -    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    -      interval_list_invariant (List.rev acc) = true →
    -      interval_list_invariant s = true →
    -      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    -      (∀ x, InZ x acc → x < y2) →
    -      (c2 ≠ 0%N) →
    -      match (diff_aux y2 c2 acc s) with
    -        (acc', s') ⇒ (∀ y, InZ y (List.rev_append acc' s') ↔
    -                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    -                      (interval_list_invariant (List.rev_append acc' s') = true) ∧
    -                      (∀ x, InZ x acc' → x < y2 + Z.of_N c2)
    +  Lemma diff_aux_props :
    +    âˆ€ (y2 : Z) (c2 : N) (s : t) acc,
    +      interval_list_invariant (List.rev acc) = true →
    +      interval_list_invariant s = true →
    +      (∀ x1 x2, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      (∀ x, InZ x acc → x < y2) →
    +      (c2 ≠ 0%N) →
    +      match (diff_aux y2 c2 acc s) with
    +        (acc', s') ⇒ (∀ y, InZ y (List.rev_append acc' s') ↔
    +                                 InZ y (List.rev_append acc s) ∧ ~(List.In y (elementsZ_single y2 c2))) ∧
    +                      (interval_list_invariant (List.rev_append acc' s') = true) ∧
    +                      (∀ x, InZ x acc' → x < y2 + Z.of_N c2)
          end.
      Proof.
        intros y2 c2.
        induction s as [| [y1 c1] s1' IH] ⇒ acc. {
    -      rewrite /diff_aux -rev_alt.
    +      rewrite /diff_aux -rev_alt.
          move ⇒ H_inv_acc _ _ H_in_acc H_c2_neq.
          split; last split. {
            move ⇒ y; split; last by move ⇒ [] //.
            rewrite InZ_rev.
            move ⇒ H_in. split ⇒ //.
    -        move ⇒ /In_elementsZ_single ⇒ [] [] /Z.nlt_ge H_neq.
    +        move ⇒ /In_elementsZ_single ⇒ [] [] /Z.nlt_ge H_neq.
            contradict H_neq.
            by apply H_in_acc.
          } {
            assumption.
          } {
            intros x H_in_acc'.
    -        apply Z.lt_le_trans with (m := y2). {
    +        apply Z.lt_le_trans with (m := y2). {
              by apply H_in_acc.
            } {
              by apply Z_le_add_r.
    @@ -3741,37 +3749,37 @@

    Library MSetsExtra.MSetIntervals


          rewrite diff_aux_alt_def.
    -      case_eq (diff_aux y2 c2 nil ((y1, c1) :: s1')).
    +      case_eq (diff_aux y2 c2 nil ((y1, c1) :: s1')).
          move ⇒ acc' s' H_diff_aux_eq.

    -      set P1 := ∀ y : Z,
    -        (InZ y acc' ∨ InZ y s') ↔
    -        InZ y ((y1, c1) :: s1') ∧ ¬ List.In y (elementsZ_single y2 c2).
    -      set P2 := interval_list_invariant (rev acc' ++ s') = true.
    -      set P3 := ∀ x : Z, InZ x acc' → (x < y2 + Z.of_N c2).
    +      set P1 := ∀ y : Z,
    +        (InZ y acc' ∨ InZ y s') ↔
    +        InZ y ((y1, c1) :: s1') ∧ ¬ List.In y (elementsZ_single y2 c2).
    +      set P2 := interval_list_invariant (rev acc' ++ s') = true.
    +      set P3 := ∀ x : Z, InZ x acc' → (x < y2 + Z.of_N c2).

    -      suff : (P1 ∧ P2 ∧ P3). {
    +      suff : (P1 ∧ P2 ∧ P3). {
            move ⇒ [H_P1] [H_P2] H_P3.
            split; last split. {
              move ⇒ y.
              move : (H_P1 y).
    -          rewrite !rev_append_rev rev_app_distr !InZ_app
    +          rewrite !rev_append_rev rev_app_distr !InZ_app
                      !InZ_rev In_elementsZ_single.
    -          suff : (InZ y acc → ¬ y2 ≤ y < y2 + Z.of_N c2). {
    +          suff : (InZ y acc → ¬ y2 ≤ y < y2 + Z.of_N c2). {
                tauto.
              }
              move ⇒ /H_in_acc H_y_lt [H_y_ge] _.
              contradict H_y_ge.
    -          by apply Zlt_not_le.
    +          by apply Zlt_not_le.
            } {
    -          rewrite rev_append_rev rev_app_distr -app_assoc.
    +          rewrite rev_append_rev rev_app_distr -app_assoc.
              apply interval_list_invariant_app_intro ⇒ //.
              move ⇒ x1 x2.
              rewrite InZ_app !InZ_rev.
              move ⇒ H_in_acc' H_x2_in_s'.
    -          suff : (InZ x2 ((y1, c1)::s1')). {
    +          suff : (InZ x2 ((y1, c1)::s1')). {
                by apply H_in_s1.
              }
              move : (H_P1 x2).
    @@ -3783,7 +3791,7 @@

    Library MSetsExtra.MSetIntervals

                apply H_P3.
              } {
                move ⇒ /H_in_acc H_x_lt.
    -            eapply Z.lt_trans; eauto.
    +            eapply Z.lt_trans; eauto.
                by apply Z_lt_add_r.
              }
            }
    @@ -3793,34 +3801,34 @@

    Library MSetsExtra.MSetIntervals

          rewrite interval_list_elements_greater_alt2_def ⇒ // ⇒ H_gr_s1'_alt.

    -      have : ∀ (acc : list (Z × N)),
    -        interval_list_invariant (rev acc) = true →
    -        (∀ x : Z,
    -            InZ x acc ↔
    -            ((y1 ≤ x < y1 + Z.of_N c1) ∧ (x < y2))) →
    -        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    -        (diff_aux y2 c2 acc s1' = (acc', s')) →
    -        P1 ∧ P2 ∧ P3. {
    +      have : ∀ (acc : list (Z × N)),
    +        interval_list_invariant (rev acc) = true →
    +        (∀ x : Z,
    +            InZ x acc ↔
    +            ((y1 ≤ x < y1 + Z.of_N c1) ∧ (x < y2))) →
    +        (y1 + Z.of_N c1 ≤ y2 + Z.of_N c2) →
    +        (diff_aux y2 c2 acc s1' = (acc', s')) →
    +        P1 ∧ P2 ∧ P3. {
            
            intros acc0 H_inv_acc0 H_in_acc0 H_c1_before H_diff_aux_eq0.
    -        have H_in_s1' : (∀ x1 x2 : Z,
    -                            InZ x1 acc0 → InZ x2 s1' → Z.succ x1 < x2). {
    +        have H_in_s1' : (∀ x1 x2 : Z,
    +                            InZ x1 acc0 → InZ x2 s1' → Z.succ x1 < x2). {
              intros x1 x2 H_x1_in_acc0.
              move ⇒ /H_gr_s1'_alt.

    -          eapply Z.le_lt_trans.
    +          eapply Z.le_lt_trans.
              move : H_x1_in_acc0.
    -          rewrite Z.le_succ_l H_in_acc0.
    +          rewrite Z.le_succ_l H_in_acc0.
              tauto.
            }
    -        have H_in_acc0' : (∀ x : Z, InZ x acc0 → x < y2). {
    +        have H_in_acc0' : (∀ x : Z, InZ x acc0 → x < y2). {
              move ⇒ x.
              rewrite H_in_acc0.
              move ⇒ [_] //.
            }
            move : (IH acc0 H_inv_acc0 H_inv_s1' H_in_s1' H_in_acc0' H_c2_neq_0).
    -        rewrite H_diff_aux_eq0 !rev_append_rev.
    +        rewrite H_diff_aux_eq0 !rev_append_rev.
            move ⇒ [H1] [H2] H3.
            split; last split ⇒ //. {
              move ⇒ y.
    @@ -3829,25 +3837,25 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ →.
              rewrite InZ_cons In_elementsZ_single.
              split. {
    -            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    +            rewrite H_in_acc0 -(Z.nle_gt y2 y).
                tauto.
              } {
    -            rewrite H_in_acc0 -(Z.nle_gt y2 y).
    +            rewrite H_in_acc0 -(Z.nle_gt y2 y).
                move ⇒ [] H_in H_nin_i2.
                split; last by assumption.
                move : H_in ⇒ [] H_in; last by right.
                left.
    -            omega.
    +            lia.
              }
            }
          }
    -      move ⇒ {IH} IH.
    +      move ⇒ {} IH.

          clear H_inv_acc H_in_s1 H_in_acc acc.
          move : (interval_compare_elim y1 c1 y2 c2) H_diff_aux_eq.
          unfold diff_aux.
    -      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
    +      case_eq (interval_compare (y1, c1) (y2, c2)) ⇒ H_comp;
                                                            fold diff_aux. {
            move ⇒ H_lt_y2.
            apply IH. {
    @@ -3859,10 +3867,10 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ []; last done.
              move ⇒ [H_y1_le H_x_lt].
              split; first done.
    -          eapply Z.lt_trans; eauto.
    +          eapply Z.lt_trans; eauto.
            } {
    -          apply Z.le_trans with (m := y2).
    -            - by apply Z.lt_le_incl.
    +          apply Z.le_trans with (m := y2).
    +            - by apply Z.lt_le_incl.
                - by apply Z_le_add_r.
            }
          } {
    @@ -3886,30 +3894,30 @@

    Library MSetsExtra.MSetIntervals

              by apply Z_to_N_minus_neq_0.
            } {
              move ⇒ x.
    -          rewrite InZ_cons In_elementsZ_single Z2N.id; last omega.
    -          replace (y1 + (y2 - y1)) with y2 by omega.
    +          rewrite InZ_cons In_elementsZ_single Z2N.id; last lia.
    +          replace (y1 + (y2 - y1)) with y2 by lia.
              split; last tauto.
              move ⇒ [] //.
              move ⇒ [H_y1_le] H_x_lt.
              repeat split ⇒ //.
    -          apply Z.lt_trans with (m := y2) ⇒ //.
    +          apply Z.lt_trans with (m := y2) ⇒ //.
            } {
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            }
          } {
            rewrite /P1 /P2 /P3.
            move ⇒ [H_y2_lt] [H_y1_lt] H_yc1_lt [H_acc'] H_s'.
            clear IH P1 P2 P3 H_comp.
            subst.
    -        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    -          rewrite Z2N.id; omega.
    +        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    +          rewrite Z2N.id; lia.
            }
    -        have H_nin_yc2 : ∀ y,
    -            InZ y s1' → ¬ y2 ≤ y < y2 + Z.of_N c2. {
    +        have H_nin_yc2 : ∀ y,
    +            InZ y s1' → ¬ y2 ≤ y < y2 + Z.of_N c2. {
              move ⇒ y /H_gr_s1'_alt H_lt_y.
              move ⇒ [H_y2_le_y].
    -          apply Z.le_ngt, Z.lt_le_incl.
    -          by apply Z.lt_trans with (m := y1 + Z.of_N c1).
    +          apply Z.le_ngt, Z.lt_le_incl.
    +          by apply Z.lt_trans with (m := y1 + Z.of_N c1).
            }
            split; last split. {
              move ⇒ y.
    @@ -3919,10 +3927,10 @@

    Library MSetsExtra.MSetIntervals

                move ⇒ []. {
                  move ⇒ [H_le_y] H_y_lt.
                  split. {
    -                left; omega.
    +                left; lia.
                  } {
                    move ⇒ [_].
    -                by apply Z.nlt_ge.
    +                by apply Z.nlt_ge.
                  }
                } {
                  move : (H_nin_yc2 y). tauto.
    @@ -3930,7 +3938,7 @@

    Library MSetsExtra.MSetIntervals

              } {
                move ⇒ [] []; last by right; right.
                move ⇒ [H_y_ge] H_y_lt_yc1 H_nin_yc2'.
    -            right; left. omega.
    +            right; left. lia.
              }
            } {
              rewrite interval_list_invariant_cons H_yc1_intro.
    @@ -3953,7 +3961,7 @@

    Library MSetsExtra.MSetIntervals

                move ⇒ H_y_in.
                split; first by right.
                move ⇒ [] _.
    -            by apply Z.nlt_ge, Z.lt_le_incl, H_gr_s1'_alt.
    +            by apply Z.nlt_ge, Z.lt_le_incl, H_gr_s1'_alt.
              }
            } {
              apply H_inv_s1'.
    @@ -3967,7 +3975,7 @@

    Library MSetsExtra.MSetIntervals

            } {
              move ⇒ x.
              split; first done.
    -          omega.
    +          lia.
            } {
              assumption.
            }
    @@ -3976,11 +3984,11 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ [H_y1_le] [H_yc2_le_yc1] _ [] H_acc' H_s'.
            clear IH P1 P2 P3 H_comp.
            subst.
    -        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    -          rewrite Z2N.id; omega.
    +        have H_yc1_intro : y2 + Z.of_N c2 + Z.of_N (Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2))) = y1 + Z.of_N c1. {
    +          rewrite Z2N.id; lia.
            }
    -        have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. {
    -          rewrite Z2N.id; omega.
    +        have H_y1_intro : y1 + Z.of_N (Z.to_N (y2 - y1)) = y2. {
    +          rewrite Z2N.id; lia.
            }
            split; last split. {
              move ⇒ y.
    @@ -3988,48 +3996,48 @@

    Library MSetsExtra.MSetIntervals

                      !InZ_cons !In_elementsZ_single
                      H_yc1_intro H_y1_intro InZ_nil.
              split. {
    -            rewrite -!or_assoc.
    +            rewrite -!or_assoc.
                move ⇒ [[[]|]|] //. {
                  move ⇒ [H_y1_le_y] H_y_lt.
                  split. {
                    left.
                    split ⇒ //.
    -                apply Z.lt_le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -                apply Z.lt_trans with (m := y2) ⇒ //.
    +                apply Z.lt_le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +                apply Z.lt_trans with (m := y2) ⇒ //.
                    by apply Z_lt_add_r.
                  } {
    -                move ⇒ [] /Z.le_ngt //.
    +                move ⇒ [] /Z.le_ngt //.
                  }
                } {
                  move ⇒ [H_y2c_le_y] H_y_lt_yc1.
                  split. {
                    left.
                    split ⇒ //.
    -                apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    -                apply Z.le_trans with (m := y2) ⇒ //.
    +                apply Z.le_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +                apply Z.le_trans with (m := y2) ⇒ //.
                    apply Z_le_add_r.
                  } {
    -                move ⇒ [] _ /Z.lt_nge //.
    +                move ⇒ [] _ /Z.lt_nge //.
                  }
                } {
                  move ⇒ H_y_in_s1'.
                  split; first by right.
    -              suff H_suff : y2 + Z.of_N c2 ≤ y. {
    -                move ⇒ [] _ /Z.lt_nge //.
    +              suff H_suff : y2 + Z.of_N c2 ≤ y. {
    +                move ⇒ [] _ /Z.lt_nge //.
                  }
    -              apply Z.le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -              apply Z.lt_le_incl.
    +              apply Z.le_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +              apply Z.lt_le_incl.
                  by apply H_gr_s1'_alt.
                }
              } {
                move ⇒ [] []; last by tauto.
                move ⇒ [H_y1_le_y] H_y_lt H_neq_y2.
    -            apply not_and in H_neq_y2; last by apply Z.le_decidable.
    +            apply not_and in H_neq_y2; last by apply Z.le_decidable.
                case H_neq_y2. {
    -              move ⇒ /Z.nle_gt H_y_lt'.
    +              move ⇒ /Z.nle_gt H_y_lt'.
                  left; left; done.
                } {
    -              move ⇒ /Z.nlt_ge H_le_y.
    +              move ⇒ /Z.nlt_ge H_le_y.
                  right; left; done.
                }
              }
    @@ -4039,13 +4047,13 @@

    Library MSetsExtra.MSetIntervals

                rewrite H_yc1_intro ⇒ //.
              } {
                rewrite /insert_intervalZ_guarded.
    -            case_eq ((Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2)) =? 0)%N). {
    +            case_eq ((Z.to_N (y1 + Z.of_N c1 - (y2 + Z.of_N c2)) =? 0)%N). {
                  rewrite H_y1_intro.
    -              move ⇒ /N.eqb_eq /N2Z.inj_iff.
    -              rewrite Z2N.id; last first. {
    -                by apply Z.le_0_sub.
    +              move ⇒ /N.eqb_eq /N2Z.inj_iff.
    +              rewrite Z2N.id; last first. {
    +                by apply Z.le_0_sub.
                  }
    -              move ⇒ /Zminus_eq H_yc1_eq.
    +              move ⇒ /Zminus_eq H_yc1_eq.
                  eapply interval_list_elements_greater_impl;
                    last apply H_gr_s1'.
                  rewrite H_yc1_eq.
    @@ -4062,7 +4070,7 @@

    Library MSetsExtra.MSetIntervals

              rewrite InZ_insert_intervalZ_guarded InZ_cons In_elementsZ_single H_y1_intro InZ_nil.
              move ⇒ [] //.
              move ⇒ [_] H_x_lt.
    -          apply Z.lt_le_trans with (m := y2) ⇒ //.
    +          apply Z.lt_le_trans with (m := y2) ⇒ //.
              apply Z_le_add_r.
            }
          } {
    @@ -4079,13 +4087,13 @@

    Library MSetsExtra.MSetIntervals

                split; first assumption.
                rewrite In_elementsZ_single.
                move ⇒ [] H_y2_le H_y_lt.
    -            case H_y_in; first by omega.
    +            case H_y_in; first by lia.
                move ⇒ /H_gr_s1'_alt H_lt_y.
    -            suff : y2 + Z.of_N c2 < y. {
    -              move ⇒ ?. omega.
    +            suff : y2 + Z.of_N c2 < y. {
    +              move ⇒ ?. lia.
                }
    -            apply Z.lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    -            apply Z.lt_le_trans with (m := y1) ⇒ //.
    +            apply Z.lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +            apply Z.lt_le_trans with (m := y1) ⇒ //.
                apply Z_le_add_r.
              }
            } {
    @@ -4107,12 +4115,12 @@

    Library MSetsExtra.MSetIntervals

                split; first assumption.
                rewrite In_elementsZ_single.
                move ⇒ [] H_y2_le H_y_lt.
    -            case H_y_in; first by omega.
    +            case H_y_in; first by lia.
                move ⇒ /H_gr_s1'_alt H_lt_y.
    -            suff : y2 + Z.of_N c2 < y. {
    -              move ⇒ ?. omega.
    +            suff : y2 + Z.of_N c2 < y. {
    +              move ⇒ ?. lia.
                }
    -            apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) ⇒ //.
    +            apply Z.lt_trans with (m := (y2 + Z.of_N c2) + Z.of_N c1) ⇒ //.
                by apply Z_lt_add_r.
              }
            } {
    @@ -4125,25 +4133,25 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma diff_aux2_props :
    -   âˆ€ (s2 s1 acc : t),
    -    interval_list_invariant (rev_append acc s1) = true →
    -    interval_list_invariant s2 = true →
    -    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    -    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    -               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    -    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
    +  Lemma diff_aux2_props :
    +   âˆ€ (s2 s1 acc : t),
    +    interval_list_invariant (rev_append acc s1) = true →
    +    interval_list_invariant s2 = true →
    +    (∀ x1 x2, InZ x1 acc → InZ x2 s2 → Z.succ x1 < x2) →
    +    ((∀ y, (InZ y (diff_aux2 acc s1 s2) ↔
    +               ((InZ y acc) ∨ (InZ y s1)) ∧ ¬InZ y s2)) ∧
    +    (interval_list_invariant (diff_aux2 acc s1 s2) = true)).
      Proof.
        induction s2 as [| [y2 c2] s2' IH]. {
          move ⇒ s1 acc H_inv_acc_s1 _ _.
          rewrite /diff_aux2.
          replace (match s1 with
    -        | nil ⇒ rev_append acc s1
    -        | _ :: _ ⇒ rev_append acc s1
    -       end) with (rev_append acc s1); last by case s1.
    +        | nil ⇒ rev_append acc s1
    +        | _ :: _ ⇒ rev_append acc s1
    +       end) with (rev_append acc s1); last by case s1.
          split. {
            move ⇒ y.
    -        rewrite rev_append_rev InZ_app InZ_rev InZ_nil.
    +        rewrite rev_append_rev InZ_app InZ_rev InZ_nil.
            tauto.
          } {
            assumption.
    @@ -4158,13 +4166,13 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ H_s1_eq.
            split. {
              move ⇒ y.
    -          rewrite rev_append_rev InZ_app InZ_nil InZ_rev.
    +          rewrite rev_append_rev InZ_app InZ_nil InZ_rev.
              split; last tauto.
              move ⇒ [] // H_y_in.
              split; first by left.
              move ⇒ H_y_in'.
              move : (H_acc_s2 _ _ H_y_in H_y_in').
    -          apply Z.nlt_succ_diag_l.
    +          apply Z.nlt_succ_diag_l.
            } {
              move : H_inv_acc_s1.
               by rewrite H_s1_eq.
    @@ -4175,25 +4183,25 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ acc' s1' H_diff_aux_eq.

    -        have H_acc_lt_y2 : (∀ x : Z, InZ x acc → x < y2). {
    +        have H_acc_lt_y2 : (∀ x : Z, InZ x acc → x < y2). {
              move ⇒ x H_x_in.
    -          have H_y2_in: (InZ y2 ((y2,c2) :: s2')). {
    +          have H_y2_in: (InZ y2 ((y2,c2) :: s2')). {
                rewrite InZ_cons.
                left.
                by apply In_elementsZ_single_hd.
              }
              move : (H_acc_s2 _ _ H_x_in H_y2_in).
    -          apply Z.lt_trans, Z.lt_succ_diag_r.
    +          apply Z.lt_trans, Z.lt_succ_diag_r.
            }

            have [H_inv_acc [H_inv_s1 H_acc_s1]] :
    -          interval_list_invariant (rev acc) = true ∧
    -          interval_list_invariant s1 = true ∧
    -          (∀ x1 x2 : Z,
    -             InZ x1 acc → InZ x2 s1 → Z.succ x1 < x2). {
    +          interval_list_invariant (rev acc) = true ∧
    +          interval_list_invariant s1 = true ∧
    +          (∀ x1 x2 : Z,
    +             InZ x1 acc → InZ x2 s1 → Z.succ x1 < x2). {

              move : H_inv_acc_s1.
    -          rewrite rev_append_rev.
    +          rewrite rev_append_rev.
              move ⇒ /interval_list_invariant_app_elim.
              move ⇒ [?] [?] H_x.
              split; first assumption.
    @@ -4208,11 +4216,11 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ [H_inZ_res] [H_inv_res] H_inZ_acc'.

    -        have H_acc'_s2' : (∀ x1 x2 : Z,
    -                              InZ x1 acc' → InZ x2 s2' → Z.succ x1 < x2). {
    +        have H_acc'_s2' : (∀ x1 x2 : Z,
    +                              InZ x1 acc' → InZ x2 s2' → Z.succ x1 < x2). {
              move ⇒ x1 x2 H_x1_in H_x2_in.
    -          apply Z.le_lt_trans with (m := y2 + Z.of_N c2). {
    -            apply Z.le_succ_l.
    +          apply Z.le_lt_trans with (m := y2 + Z.of_N c2). {
    +            apply Z.le_succ_l.
                by apply H_inZ_acc'.
              } {
                move : H_gr_s2'.
    @@ -4228,7 +4236,7 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ y.
            rewrite H_inZ_diff_res.
            move : (H_inZ_res y).
    -        rewrite !rev_append_rev !InZ_app !InZ_rev InZ_cons.
    +        rewrite !rev_append_rev !InZ_app !InZ_rev InZ_cons.
            move ⇒ →.
            tauto.
          }
    @@ -4236,17 +4244,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma diff_InZ :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).
    +  Lemma diff_InZ :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    âˆ€ y, (InZ y (diff s1 s2) ↔ InZ y s1 ∧ ¬InZ y s2).
      Proof.
        intros s1 s2 H_inv_s1 H_inv_s2 y.
        rewrite /diff.

    -    move : (diff_aux2_props s2 s1 nil).
    +    move : (diff_aux2_props s2 s1 nil).
        move ⇒ [] //.
        move ⇒ H_in_diff _.
        rewrite H_in_diff InZ_nil.
    @@ -4254,24 +4262,24 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma diff_invariant :
    -   âˆ€ (s1 s2 : t),
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    interval_list_invariant (diff s1 s2) = true.
    +  Lemma diff_invariant :
    +   âˆ€ (s1 s2 : t),
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    interval_list_invariant (diff s1 s2) = true.
      Proof.
        intros s1 s2 H_inv_s1 H_inv_s2.
        rewrite /diff.

    -    move : (diff_aux2_props s2 s1 nil).
    +    move : (diff_aux2_props s2 s1 nil).
        move ⇒ [] //.
      Qed.


    -  Global Instance diff_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (diff s1 s2).
    +  Global Instance diff_ok s1 s2 : ∀ `(Ok s1, Ok s2), Ok (diff s1 s2).
      Proof.
        move ⇒ H_ok_s1 H_ok_s2.
        move : (H_ok_s1) (H_ok_s2).
    @@ -4290,9 +4298,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma diff_spec :
    -   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    -   In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Lemma diff_spec :
    +   âˆ€ (s s' : t) (x : elt) (Hs : Ok s) (Hs' : Ok s'),
    +   In x (diff s s') ↔ In x s ∧ ¬In x s'.
      Proof.
        intros s s' x H_ok H_ok'.
        rewrite !In_InZ.
    @@ -4307,16 +4315,16 @@

    Library MSetsExtra.MSetIntervals

    -

    remove specification

    +

    remove specification


    -  Lemma removeZ_alt_def : ∀ x s acc,
    -    interval_list_invariant s = true →
    -    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    -                    (acc', s') ⇒ rev_append acc' s'
    +  Lemma removeZ_alt_def : ∀ x s acc,
    +    interval_list_invariant s = true →
    +    removeZ_aux acc x s = match diff_aux x (1%N) acc s with
    +                    (acc', s') ⇒ rev_append acc' s'
                      end.
      Proof.
        intros y2.
    @@ -4332,33 +4340,33 @@

    Library MSetsExtra.MSetIntervals

          right. done.
        }
        move : (interval_compare_elim y1 c1 y2 (1%N)).
    -    case_eq (interval_compare (y1, c1) (y2, (1%N))) ⇒ H_eq. {
    +    case_eq (interval_compare (y1, c1) (y2, (1%N))) ⇒ H_eq. {
          move ⇒ H_lt_y2 _.
    -      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    -        by apply Z.nlt_ge, Z.lt_le_incl.
    +      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    +        by apply Z.nlt_ge, Z.lt_le_incl.
          }
    -      have H_y2_nlt : ~(y2 < y1). {
    +      have H_y2_nlt : ~(y2 < y1). {
            move ⇒ H_y2_y1.
            apply H_yc2_nlt.
    -        apply Z.lt_le_trans with (m := y1) ⇒ //.
    +        apply Z.lt_le_trans with (m := y1) ⇒ //.
            apply Z_le_add_r.
          }
    -      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    +      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
          rewrite IH //.
        } {
          move ⇒ H_lt_y2 _.
    -      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    -        apply Z.nlt_ge.
    +      have H_yc2_nlt : ~(y2 < y1 + Z.of_N c1). {
    +        apply Z.nlt_ge.
            rewrite H_lt_y2.
    -        apply Z.le_refl.
    +        apply Z.le_refl.
          }
    -      have H_y2_nlt : ~(y2 < y1). {
    +      have H_y2_nlt : ~(y2 < y1). {
            move ⇒ H_y2_y1.
            apply H_yc2_nlt.
    -        apply Z.lt_le_trans with (m := y1) ⇒ //.
    +        apply Z.lt_le_trans with (m := y1) ⇒ //.
            apply Z_le_add_r.
          }
    -      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
    +      move : (H_y2_nlt) (H_yc2_nlt) ⇒ /Z.ltb_nlt → /Z.ltb_nlt →.
          rewrite IH //.
        } {
          done.
    @@ -4368,51 +4376,51 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ [H_y1_eq] H_c1_eq.
          move ⇒ [] // .
          move ⇒ [H_lt_y2] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
          }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
          rewrite /insert_intervalZ_guarded.

    -      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    -        rewrite H_y1_eq H_c1_eq Z.add_1_r Z.sub_diag //.
    +      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    +        rewrite H_y1_eq H_c1_eq Z.add_1_r Z.sub_diag //.
          }

    -      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    -        rewrite H_y1_eq Z.sub_diag //.
    +      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    +        rewrite H_y1_eq Z.sub_diag //.
          }
          done.
        } {
          move ⇒ [H_y2_le] [H_yc1_le] _.
          move ⇒ [] //.
          move ⇒ [H_y1_le] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
          }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.

    -      have H_y1_eq : (y1 = y2) by omega.
    -      have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). {
    -        apply Z.le_antisymm. {
    +      have H_y1_eq : (y1 = y2) by lia.
    +      have H_yc1_eq : (y1 + Z.of_N c1 = Z.succ y2). {
    +        apply Z.le_antisymm. {
              move : H_yc1_le.
    -          rewrite Z.add_1_r //.
    +          rewrite Z.add_1_r //.
            } {
    -          by apply Z.le_succ_l.
    +          by apply Z.le_succ_l.
            }
          }

          rewrite /insert_intervalZ_guarded.
    -      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    -        rewrite H_yc1_eq Z.sub_diag //.
    +      have → : (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0 = true)%N. {
    +        rewrite H_yc1_eq Z.sub_diag //.
          }

    -      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    -        rewrite H_y1_eq Z.sub_diag //.
    +      have → : (Z.to_N (y2 - y1) =? 0 = true)%N. {
    +        rewrite H_y1_eq Z.sub_diag //.
          }

    -      suff → : diff_aux y2 (1%N) acc s' = (acc, s') by done.
    +      suff → : diff_aux y2 (1%N) acc s' = (acc, s') by done.

          move : H_gr.
    @@ -4423,9 +4431,9 @@

    Library MSetsExtra.MSetIntervals

            rewrite interval_list_elements_greater_cons /=
                    /interval_compare.
            move ⇒ H_lt_y'.
    -        have → : y2 + Z.of_N 1 ?= y' = Lt. {
    -          apply Z.compare_lt_iff.
    -          by rewrite Z.add_1_r.
    +        have → : y2 + Z.of_N 1 ?= y' = Lt. {
    +          apply Z.compare_lt_iff.
    +          by rewrite Z.add_1_r.
            }
            done.
          }
    @@ -4433,67 +4441,67 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ [H_y1_le] [H_yc2_le] _.
          move ⇒ [] //.
          move ⇒ [_] H_y2_lt.
    -      have H_y2_nlt : ~(y2 < y1). {
    -        apply Z.nlt_ge ⇒ //.
    +      have H_y2_nlt : ~(y2 < y1). {
    +        apply Z.nlt_ge ⇒ //.
          }
    -      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    -      rewrite !rev_append_rev /insert_intervalZ_guarded Z.add_1_r.
    -      case ((Z.to_N (y2 - y1) =? 0)%N), (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0)%N. {
    +      move : (H_y2_nlt) (H_y2_lt) ⇒ /Z.ltb_nlt → /Z.ltb_lt →.
    +      rewrite !rev_append_rev /insert_intervalZ_guarded Z.add_1_r.
    +      case ((Z.to_N (y2 - y1) =? 0)%N), (Z.to_N (y1 + Z.of_N c1 - Z.succ y2) =? 0)%N. {
            reflexivity.
          } {
    -        rewrite /= -!app_assoc //.
    +        rewrite /= -!app_assoc //.
          } {
            reflexivity.
          } {
    -        rewrite /= -!app_assoc //.
    +        rewrite /= -!app_assoc //.
          }
        } {
          move ⇒ _ H_y2_lt'.
    -      have H_y2_lt : (y2 < y1). {
    -        apply Z.lt_trans with (m := Z.succ y2) ⇒ //.
    -        apply Z.lt_succ_diag_r.
    +      have H_y2_lt : (y2 < y1). {
    +        apply Z.lt_trans with (m := Z.succ y2) ⇒ //.
    +        apply Z.lt_succ_diag_r.
          }
    -      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    +      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
        } {
          move ⇒ _ H_y1_eq.
    -      have H_y2_lt : (y2 < y1). {
    +      have H_y2_lt : (y2 < y1). {
            rewrite H_y1_eq.
    -        apply Z.lt_succ_diag_r.
    +        apply Z.lt_succ_diag_r.
          }
    -      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
    +      move : (H_y2_lt) ⇒ /Z.ltb_lt → //.
        }
      Qed.

    -  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.
    +  Lemma removeZ_interval_list_invariant : ∀ s x, interval_list_invariant s = true → interval_list_invariant (removeZ x s) = true.
      Proof.
        intros s x H_inv.
        rewrite /removeZ removeZ_alt_def //.
    -    move : (diff_aux_props x (1%N) s nil).
    -    case_eq (diff_aux x 1%N nil s).
    +    move : (diff_aux_props x (1%N) s nil).
    +    case_eq (diff_aux x 1%N nil s).
        move ⇒ acc' s' H_eq [] //.
        move ⇒ _ [] //.
      Qed.

    -  Lemma removeZ_spec :
    -   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    -    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.
    +  Lemma removeZ_spec :
    +   âˆ€ (s : t) (x y : Z) (Hs : interval_list_invariant s = true),
    +    InZ y (removeZ x s) ↔ InZ y s ∧ ¬Z.eq y x.
      Proof.
        intros s x y H_inv.
        rewrite /removeZ removeZ_alt_def //.
    -    move : (diff_aux_props x (1%N) s nil).
    -    case_eq (diff_aux x 1%N nil s).
    +    move : (diff_aux_props x (1%N) s nil).
    +    case_eq (diff_aux x 1%N nil s).
        move ⇒ acc' s' H_eq [] //.
        move ⇒ → _.
    -    rewrite rev_append_rev InZ_app InZ_rev InZ_nil
    +    rewrite rev_append_rev InZ_app InZ_rev InZ_nil
                In_elementsZ_single1.
        split; move ⇒ [H1 H2]; split ⇒ //;
          move ⇒ H3; apply H2; by rewrite H3.
      Qed.

    -  Global Instance remove_ok s x : ∀ `(Ok s), Ok (remove x s).
    +  Global Instance remove_ok s x : ∀ `(Ok s), Ok (remove x s).
      Proof.
        rewrite /Ok /interval_list_invariant /remove.
        move ⇒ [H_is_ok_s H_enc_s].
    @@ -4508,9 +4516,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma remove_spec :
    -   âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    -    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
    +  Lemma remove_spec :
    +   âˆ€ (s : t) (x y : elt) (Hs : Ok s),
    +    In y (remove x s) ↔ In y s ∧ ¬Enc.E.eq y x.
      Proof.
        intros s x y Hs.
        have H_rs := (remove_ok s x Hs).
    @@ -4526,13 +4534,13 @@

    Library MSetsExtra.MSetIntervals

    -

    remove_list specification

    +

    remove_list specification


    -  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
    +  Lemma remove_list_ok : ∀ l s, Ok s → Ok (remove_list l s).
      Proof.
        induction l as [| x l' IH]. {
          done.
    @@ -4544,17 +4552,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma remove_list_spec : ∀ x l s, Ok s →
    -     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
    +  Lemma remove_list_spec : ∀ x l s, Ok s →
    +     (In x (remove_list l s) ↔ ~(InA Enc.E.eq x l) ∧ In x s).
      Proof.
        move ⇒ x.
        induction l as [| y l' IH]. {
          intros s H.
    -      rewrite /= InA_nil.
    +      rewrite /= InA_nil.
          tauto.
        } {
          move ⇒ s H_ok /=.
    -      rewrite IH remove_spec InA_cons.
    +      rewrite IH remove_spec InA_cons.
          tauto.
        }
      Qed.
    @@ -4565,28 +4573,28 @@

    Library MSetsExtra.MSetIntervals

    -

    subset specification

    +

    subset specification


    -  Lemma subset_flatten_alt_def : ∀ (s1 s2 : t),
    -    subset s1 s2 =
    -    match (s1, s2) with
    -    | (nil, _) ⇒ true
    -    | (_ :: _, nil) ⇒ false
    -    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    -        match (interval_compare (y1, c1) (y2,c2)) with
    -          | ICR_before ⇒ false
    -          | ICR_before_touch ⇒ false
    -          | ICR_after ⇒ subset s1 l2
    -          | ICR_after_touch ⇒ false
    -          | ICR_overlap_before ⇒ false
    -          | ICR_overlap_after ⇒ false
    +  Lemma subset_flatten_alt_def : ∀ (s1 s2 : t),
    +    subset s1 s2 =
    +    match (s1, s2) with
    +    | (nil, _) ⇒ true
    +    | (_ :: _, nil) ⇒ false
    +    | ((y1, c1) :: l1, (y2, c2) :: l2) ⇒
    +        match (interval_compare (y1, c1) (y2,c2)) with
    +          | ICR_before ⇒ false
    +          | ICR_before_touch ⇒ false
    +          | ICR_after ⇒ subset s1 l2
    +          | ICR_after_touch ⇒ false
    +          | ICR_overlap_before ⇒ false
    +          | ICR_overlap_after ⇒ false
              | ICR_equal ⇒ subset l1 l2
    -          | ICR_subsume_1 ⇒ subset l1 s2
    -          | ICR_subsume_2 ⇒ false
    +          | ICR_subsume_1 ⇒ subset l1 s2
    +          | ICR_subsume_2 ⇒ false
            end
        end.
      Proof.
    @@ -4595,11 +4603,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma subset_props_aux : ∀ y1 c1 l1 y2 c2 l2,
    -    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +  Lemma subset_props_aux : ∀ y1 c1 l1 y2 c2 l2,
    +    (∃ y, InZ y ((y1, c1) :: l1) ∧ ¬InZ y ((y2, c2) :: l2)) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
      Proof.
        intros y1 c1 l1 y2 c2 l2.
        move ⇒ [y] [H_y_in H_y_nin].
    @@ -4610,13 +4618,13 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma subset_props_aux_before : ∀ y1 c1 l1 y2 c2 l2,
    -    (c1 ≠ 0%N) →
    -    interval_list_invariant ((y2, c2) :: l2) = true →
    -    (y1 < y2) →
    -    (false = true ↔
    -    (∀ y : Z,
    -        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
    +  Lemma subset_props_aux_before : ∀ y1 c1 l1 y2 c2 l2,
    +    (c1 ≠ 0%N) →
    +    interval_list_invariant ((y2, c2) :: l2) = true →
    +    (y1 < y2) →
    +    (false = true ↔
    +    (∀ y : Z,
    +        InZ y ((y1, c1) :: l1) → InZ y ((y2, c2) :: l2))).
      Proof.
        intros y1 c1 l1 y2 c2 l2.
        rewrite interval_list_invariant_cons.
    @@ -4629,14 +4637,14 @@

    Library MSetsExtra.MSetIntervals

          by apply In_elementsZ_single_hd.
        } {
          rewrite InZ_cons.
    -      suff : ¬ (List.In y1 (elementsZ_single y2 c2)) ∧ ¬ InZ y1 l2 by tauto.
    +      suff : ¬ (List.In y1 (elementsZ_single y2 c2)) ∧ ¬ InZ y1 l2 by tauto.
          split. {
            rewrite In_elementsZ_single.
    -        move ⇒ [] /Z.le_ngt //.
    +        move ⇒ [] /Z.le_ngt //.
          } {
            eapply Nin_elements_greater; eauto.
    -        apply Z.le_trans with (m := y2). {
    -          by apply Z.lt_le_incl.
    +        apply Z.le_trans with (m := y2). {
    +          by apply Z.lt_le_incl.
            } {
              apply Z_le_add_r.
            }
    @@ -4647,11 +4655,11 @@

    Library MSetsExtra.MSetIntervals



    -  Lemma subset_props : ∀ s1 s2 : t,
    -    interval_list_invariant s1 = true →
    -    interval_list_invariant s2 = true →
    -    (subset s1 s2 = true ↔
    -     (∀ y, InZ y s1 → InZ y s2)).
    +  Lemma subset_props : ∀ s1 s2 : t,
    +    interval_list_invariant s1 = true →
    +    interval_list_invariant s2 = true →
    +    (subset s1 s2 = true ↔
    +     (∀ y, InZ y s1 → InZ y s2)).
      Proof.
        induction s1 as [| [y1 c1] l1 IH1]. {
          move ⇒ s2 _ _.
    @@ -4664,7 +4672,7 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ [_] [H_c1_neq_0] _ _.
            split ⇒ //.
            move ⇒ H; move : (H y1).
    -        rewrite InZ_nil ⇒ {H} H.
    +        rewrite InZ_nil ⇒ {} H.
            contradict H.
            rewrite InZ_cons; left.
            by apply In_elementsZ_single_hd.
    @@ -4674,32 +4682,32 @@

    Library MSetsExtra.MSetIntervals

            rewrite !interval_list_invariant_cons.
            move ⇒ [H_gr_l1] [H_c1_neq_0] H_inv_l1.
            move ⇒ [H_gr_l2] [H_c2_neq_0] H_inv_l2.
    -        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {IH2} IH2.
    -        have : ∀ s2 : t,
    -          interval_list_invariant s2 = true →
    -          (subset l1 s2 = true ↔
    -          (∀ y : Z, InZ y l1 → InZ y s2)). {
    +        move : (IH2 H_inv_s1 H_inv_l2) ⇒ {} IH2.
    +        have : ∀ s2 : t,
    +          interval_list_invariant s2 = true →
    +          (subset l1 s2 = true ↔
    +          (∀ y : Z, InZ y l1 → InZ y s2)). {
              intros. by apply IH1.
            }
    -        move ⇒ {IH1} IH1.
    +        move ⇒ {} IH1.

    -        have H_yc2_nin : ¬ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). {
    +        have H_yc2_nin : ¬ InZ (y2 + Z.of_N c2) ((y2, c2) :: l2). {
              rewrite !InZ_cons !In_elementsZ_single.
              move ⇒ []. {
    -            move ⇒ [_] /Z.lt_irrefl //.
    +            move ⇒ [_] /Z.lt_irrefl //.
              } {
                eapply Nin_elements_greater; eauto.
    -            apply Z.le_refl.
    +            apply Z.le_refl.
              }
            }
              
            rewrite subset_flatten_alt_def.
            move : (interval_compare_elim y1 c1 y2 c2).
    -        case (interval_compare (y1, c1) (y2, c2)). {
    +        case (interval_compare (y1, c1) (y2, c2)). {
              move ⇒ H_lt_y2.
              apply subset_props_aux_before ⇒ //.
    -          apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
    +          apply Z.le_lt_trans with (m := y1 + Z.of_N c1) ⇒ //.
              apply Z_le_add_r.
            } {
              move ⇒ H_y2_eq.
    @@ -4712,12 +4720,12 @@

    Library MSetsExtra.MSetIntervals

            } {
              move ⇒ [H_y2_lt] [H_y1_lt] H_yc2_lt.
              apply subset_props_aux.
    -          âˆƒ (y2 + Z.of_N c2).
    +          âˆƒ (y2 + Z.of_N c2).
              split ⇒ //.
              rewrite !InZ_cons !In_elementsZ_single.
              left.
              split ⇒ //.
    -          by apply Z.lt_le_incl.
    +          by apply Z.lt_le_incl.
            } {
              move ⇒ [H_y1_eq] H_c1_eq; subst.
              rewrite IH1 ⇒ //.
    @@ -4726,14 +4734,14 @@

    Library MSetsExtra.MSetIntervals

                tauto.
              } {
                move ⇒ H_pre H_y_in_l1.
    -            suff : ~(List.In y (elementsZ_single y2 c2)). {
    +            suff : ~(List.In y (elementsZ_single y2 c2)). {
                  tauto.
                }
                move : H_gr_l1.
                rewrite interval_list_elements_greater_alt2_def
                  // In_elementsZ_single.
                move ⇒ H; move : (H y H_y_in_l1) ⇒ {H}.
    -            move ⇒ /Z.lt_ngt H_neq [_] //.
    +            move ⇒ /Z.lt_ngt H_neq [_] //.
              }
            } {
              move ⇒ [H_y2_lt_y1] [H_yc1_le] _.
    @@ -4744,7 +4752,7 @@

    Library MSetsExtra.MSetIntervals

                rewrite !In_elementsZ_single.
                move ⇒ [H_y1_le] H_y_lt.
                left.
    -            omega.
    +            lia.
              } {
                move ⇒ H_pre H_y_in_l1.
                apply H_pre.
    @@ -4758,12 +4766,12 @@

    Library MSetsExtra.MSetIntervals

              } {
                move ⇒ H_yc2_lt.
                apply subset_props_aux.
    -            âˆƒ (y2 + Z.of_N c2).
    +            âˆƒ (y2 + Z.of_N c2).
                split ⇒ //.
                rewrite !InZ_cons !In_elementsZ_single.
                left.
                split ⇒ //.
    -            apply Z.le_trans with (m := y2) ⇒ //.
    +            apply Z.le_trans with (m := y2) ⇒ //.
                apply Z_le_add_r.
              }
            } {
    @@ -4775,20 +4783,20 @@

    Library MSetsExtra.MSetIntervals

              } {
                rewrite !In_elementsZ_single.
                move ⇒ H_pre H_y_in.
    -            suff : ~(y2 ≤ y < y2 + Z.of_N c2). {
    +            suff : ~(y2 ≤ y < y2 + Z.of_N c2). {
                  tauto.
                }
                move ⇒ [H_y2_le H_y_lt].
                move : H_y_in ⇒ []. {
                  move ⇒ [H_y1_le] H_y_lt'.
    -              omega.
    +              lia.
                } {
                  eapply Nin_elements_greater; eauto.
    -              apply Z.le_trans with (m := y1); last first. {
    +              apply Z.le_trans with (m := y1); last first. {
                    apply Z_le_add_r.
                  }
    -              apply Z.lt_le_incl.
    -              apply Z.lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
    +              apply Z.lt_le_incl.
    +              apply Z.lt_trans with (m := y2 + Z.of_N c2) ⇒ //.
                }
              }
            } {
    @@ -4802,11 +4810,11 @@

    Library MSetsExtra.MSetIntervals

              } {
                rewrite !In_elementsZ_single H_y1_eq.
                move ⇒ []. {
    -              move ⇒ [_] /Z.lt_irrefl //.
    +              move ⇒ [_] /Z.lt_irrefl //.
                } {
                  eapply Nin_elements_greater; eauto.
                  rewrite H_y1_eq.
    -              apply Z.le_refl.
    +              apply Z.le_refl.
                }
              }
            }
    @@ -4815,9 +4823,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma subset_spec :
    -   âˆ€ (s s' : t) (Hs : Ok s) (Hs' : Ok s'),
    -   subset s s' = true ↔ Subset s s'.
    +  Lemma subset_spec :
    +   âˆ€ (s s' : t) (Hs : Ok s) (Hs' : Ok s'),
    +   subset s s' = true ↔ Subset s s'.
      Proof.
        intros s s' Hs Hs'.
        move : (Hs) (Hs').
    @@ -4841,37 +4849,37 @@

    Library MSetsExtra.MSetIntervals

    -

    elements and elementsZ specification

    +

    elements and elementsZ specification


    -  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.
    +  Lemma elements_spec1 : ∀ (s : t) (x : elt) (Hs : Ok s), List.In x (elements s) ↔ In x s.
      Proof.
        intros s x Hs.
        by rewrite In_alt_def.
      Qed.

    -  Lemma NoDupA_elementsZ_single: ∀ c x,
    -    NoDupA Z.eq (elementsZ_single x c).
    +  Lemma NoDupA_elementsZ_single: ∀ c x,
    +    NoDupA Z.eq (elementsZ_single x c).
      Proof.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intros x.
          rewrite elementsZ_single_base //.
        } {
          intros x.
          rewrite elementsZ_single_succ.
    -      apply NoDupA_app. {
    -        apply Z.eq_equiv.
    +      apply NoDupA_app. {
    +        apply Z.eq_equiv.
          } {
            apply IH.
          } {
    -        apply NoDupA_singleton.
    +        apply NoDupA_singleton.
          } {
            move ⇒ y.
    -        rewrite !InA_alt.
    +        rewrite !InA_alt.
            move ⇒ [_] [<-] H_y_in.
            move ⇒ [_] [<-] H_y_in'.
            move : H_y_in H_y_in'.
    @@ -4879,44 +4887,44 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ [H_x_le] H_y_lt [] // H_y_eq.
            contradict H_y_lt.
            rewrite H_y_eq.
    -        apply Z.lt_irrefl.
    +        apply Z.lt_irrefl.
          }
        }
      Qed.

    -  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
    +  Lemma elementsZ_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Z.eq (elementsZ s).
      Proof.
        induction s as [| [x c] s' IH]. {
          move ⇒ _.
          rewrite elementsZ_nil.
    -      apply NoDupA_nil.
    +      apply NoDupA_nil.
        } {
          move ⇒ H_ok_s.
          move : (H_ok_s) ⇒ /Ok_cons [H_interval_list_elements_greater] [H_c] [H_enc] H_s'.
          rewrite elementsZ_cons.
    -      apply NoDupA_app. {
    -        apply Z.eq_equiv.
    +      apply NoDupA_app. {
    +        apply Z.eq_equiv.
          } {
            by apply IH.
          } {
    -        apply NoDupA_rev. {
    -          apply Z.eq_equiv.
    +        apply NoDupA_rev. {
    +          apply Z.eq_equiv.
            } {
              apply NoDupA_elementsZ_single.
            }
          } {
            move ⇒ y.
    -        rewrite !InA_alt.
    +        rewrite !InA_alt.
            move ⇒ [_] [<-] H_y_in.
            move ⇒ [_] [<-] H_y_in'.
            move : H_y_in'.
    -        rewrite -in_rev In_elementsZ_single /=.
    +        rewrite -in_rev In_elementsZ_single /=.
            move ⇒ [H_x_le] H_y_lt.
    -        eapply (Nin_elements_greater s' (x + Z.of_N c)) ⇒ //. {
    +        eapply (Nin_elements_greater s' (x + Z.of_N c)) ⇒ //. {
              apply H_s'.
            } {
    -          apply Z.lt_le_incl, H_y_lt.
    +          apply Z.lt_le_incl, H_y_lt.
            } {
              apply H_y_in.
            }
    @@ -4925,11 +4933,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
    +  Lemma elements_spec2w : ∀ (s : t) (Hs : Ok s), NoDupA Enc.E.eq (elements s).
      Proof.
        intros s Hs.
        rewrite /elements rev_map_alt_def.
    -    apply NoDupA_rev. {
    +    apply NoDupA_rev. {
          apply Enc.E.eq_equiv.
        } {
          eapply NoDupA_map; first by apply elementsZ_spec2w.
    @@ -4950,21 +4958,21 @@

    Library MSetsExtra.MSetIntervals

    -

    equal specification

    +

    equal specification


    -  Lemma equal_alt_def : ∀ s1 s2,
    -    equal s1 s2 = true ↔ (s1 = s2).
    +  Lemma equal_alt_def : ∀ s1 s2,
    +    equal s1 s2 = true ↔ (s1 = s2).
      Proof.
        induction s1 as [| [x cx] xs IH]. {
          move ⇒ [] //.
        } {
          move ⇒ [] //=.
          move ⇒ [y cy] ys.
    -      rewrite !andb_true_iff IH N.eqb_eq Z.eqb_eq.
    +      rewrite !andb_true_iff IH N.eqb_eq Z.eqb_eq.
          split. {
            move ⇒ [->] [->] → //.
          } {
    @@ -4974,18 +4982,18 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma equal_elementsZ :
    -    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    -    (∀ x, (InZ x s ↔ InZ x s')) → (s = s').
    +  Lemma equal_elementsZ :
    +    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    +    (∀ x, (InZ x s ↔ InZ x s')) → (s = s').
      Proof.
        intros s s'.
        move ⇒ H_ok_s H_ok_s' H_InZ_eq.
    -    have [] : ((subset s s' = true) ∧ (subset s' s = true)). {
    +    have [] : ((subset s s' = true) ∧ (subset s' s = true)). {
          rewrite !subset_spec /Subset.
          split ⇒ x; rewrite !In_InZ H_InZ_eq //.
        }
    -    have : interval_list_invariant s' = true by apply H_ok_s'.
    -    have : interval_list_invariant s = true by apply H_ok_s.
    +    have : interval_list_invariant s' = true by apply H_ok_s'.
    +    have : interval_list_invariant s = true by apply H_ok_s.
        clear H_ok_s H_ok_s' H_InZ_eq.
        move : s s'.
        induction s as [| [x1 c1] s1 IH];
    @@ -4994,21 +5002,21 @@

    Library MSetsExtra.MSetIntervals

        move ⇒ [H_gr_s1] [H_c1_neq_0] H_inv_s1.
        move ⇒ [H_gr_s2] [H_c2_neq_0] H_inv_s2.
        rewrite subset_flatten_alt_def
    -            (subset_flatten_alt_def ((x2, c2)::s2)).
    +            (subset_flatten_alt_def ((x2, c2)::s2)).
        rewrite (interval_compare_swap x1 c1); last by left.
        move : (interval_compare_elim x1 c1 x2 c2).
    -    case (interval_compare (x1, c1) (x2, c2)) ⇒ //.
    +    case (interval_compare (x1, c1) (x2, c2)) ⇒ //.
        move ⇒ [->] → H_sub_s12 H_sub_s21.

    -    suff → : s1 = s2 by done.
    +    suff → : s1 = s2 by done.
        by apply IH.
      Qed.

    -  Lemma equal_spec :
    -    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    -    equal s s' = true ↔ Equal s s'.
    +  Lemma equal_spec :
    +    âˆ€ (s s' : t) {Hs : Ok s} {Hs' : Ok s'},
    +    equal s s' = true ↔ Equal s s'.
      Proof.
        intros s s' Hs Hs'.
        rewrite equal_alt_def /Equal.
    @@ -5021,7 +5029,7 @@

    Library MSetsExtra.MSetIntervals

          rewrite !In_InZ.

    -      suff H_ex : (∀ s'', Ok s'' → InZ x s'' → (∃ z, Enc.encode z = x)). {
    +      suff H_ex : (∀ s'', Ok s'' → InZ x s'' → (∃ z, Enc.encode z = x)). {
            move ⇒ HH.
            split. {
              move ⇒ H3.
    @@ -5049,125 +5057,125 @@

    Library MSetsExtra.MSetIntervals

    -

    compare

    +

    compare

    -  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).
    +  Definition lt (s1 s2 : t) : Prop := (compare s1 s2 = Lt).

    -  Lemma compare_eq_Eq : ∀ s1 s2,
    -    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
    +  Lemma compare_eq_Eq : ∀ s1 s2,
    +    (compare s1 s2 = Eq ↔ equal s1 s2 = true).
      Proof.
        induction s1 as [| [y1 c1] s1' IH];
          case s2 as [| [y2 c2] s2'] ⇒ //.
    -    rewrite /= !andb_true_iff -IH Z.eqb_eq N.eqb_eq.
    -    move : (Z.compare_eq_iff y1 y2).
    -    case (Z.compare y1 y2). {
    +    rewrite /= !andb_true_iff -IH Z.eqb_eq N.eqb_eq.
    +    move : (Z.compare_eq_iff y1 y2).
    +    case (Z.compare y1 y2). {
          move ⇒ H.
    -      have → : y1 = y2. by apply H.
    +      have → : y1 = y2. by apply H.
          clear H.

    -      move : (N.compare_eq_iff c1 c2).
    -      case (N.compare c1 c2). {
    +      move : (N.compare_eq_iff c1 c2).
    +      case (N.compare c1 c2). {
            move ⇒ H.
    -        have → : c1 = c2. by apply H.
    +        have → : c1 = c2. by apply H.
            tauto.
          } {
            move ⇒ H.
    -        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    +        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
            tauto.
          } {
            move ⇒ H.
    -        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
    +        have H_neq : ~(c1 = c2). by rewrite -H ⇒ {H}.
            tauto.
          }
        } {
          move ⇒ H.
    -      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    +      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
          tauto.
        } {
          move ⇒ H.
    -      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
    +      have H_neq : ~(y1 = y2). by rewrite -H ⇒ {H}.
          tauto.
        }
      Qed.

    -  Lemma compare_eq_Lt_nil_l : ∀ s,
    -    compare nil s = Lt ↔ s ≠ nil.
    +  Lemma compare_eq_Lt_nil_l : ∀ s,
    +    compare nil s = Lt ↔ s ≠ nil.
      Proof.
        intros s.
        case s ⇒ //=.
      Qed.

    -  Lemma compare_eq_Lt_nil_r : ∀ s,
    -    ~(compare s nil = Lt).
    +  Lemma compare_eq_Lt_nil_r : ∀ s,
    +    ~(compare s nil = Lt).
      Proof.
        intros s.
        case s as [| [y1 c1] s'] ⇒ //=.
      Qed.

    -  Lemma compare_eq_Lt_cons : ∀ y1 y2 c1 c2 s1 s2,
    -    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    -    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    -    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
    +  Lemma compare_eq_Lt_cons : ∀ y1 y2 c1 c2 s1 s2,
    +    compare ((y1, c1)::s1) ((y2, c2)::s2) = Lt ↔
    +    (y1 < y2) ∨ ((y1 = y2) ∧ (c1 < c2)%N) ∨
    +    ((y1 = y2) ∧ (c1 = c2) ∧ compare s1 s2 = Lt).
      Proof.
        intros y1 y2 c1 c2 s1 s2.
        rewrite /=.
    -    case_eq (Z.compare y1 y2). {
    -      move ⇒ /Z.compare_eq_iff →.
    -      case_eq (N.compare c1 c2). {
    -        move ⇒ /N.compare_eq_iff →.
    +    case_eq (Z.compare y1 y2). {
    +      move ⇒ /Z.compare_eq_iff →.
    +      case_eq (N.compare c1 c2). {
    +        move ⇒ /N.compare_eq_iff →.
            split. {
              move ⇒ H.
              right; right.
              done.
            } {
              move ⇒ [| []]. {
    -            move ⇒ /Z.lt_irrefl //.
    +            move ⇒ /Z.lt_irrefl //.
              } {
    -            move ⇒ [_] /N.lt_irrefl //.
    +            move ⇒ [_] /N.lt_irrefl //.
              } {
                move ⇒ [_] [_] → //.
              }
            }
          } {
    -        move ⇒ /N.compare_lt_iff H_c1_lt.
    +        move ⇒ /N.compare_lt_iff H_c1_lt.
            split ⇒ //.
            move ⇒ _.
            right; left. done.
          } {
    -        move ⇒ /N.compare_gt_iff H_c2_lt.
    +        move ⇒ /N.compare_gt_iff H_c2_lt.
            split ⇒ //.
            move ⇒ [| []]. {
    -          move ⇒ /Z.lt_irrefl //.
    +          move ⇒ /Z.lt_irrefl //.
            } {
    -          move ⇒ [_] /N.lt_asymm //.
    +          move ⇒ [_] /N.lt_asymm //.
            } {
              move ⇒ [_] [] H_c1_eq.
              contradict H_c2_lt.
              subst c1.
    -          by apply N.lt_irrefl.
    +          by apply N.lt_irrefl.
            }
          }
        } {
    -      move ⇒ /Z.compare_lt_iff.
    +      move ⇒ /Z.compare_lt_iff.
          tauto.
        } {
    -      move ⇒ /Z.compare_gt_iff H_y2_lt.
    +      move ⇒ /Z.compare_gt_iff H_y2_lt.
          split ⇒ //.
          move ⇒ [| []]. {
    -        move ⇒ /Z.lt_asymm //.
    +        move ⇒ /Z.lt_asymm //.
          } {
            move ⇒ [] H_y1_eq.
    -        exfalso. omega.
    +        exfalso. lia.
          } {
            move ⇒ [] H_y1_eq.
    -        exfalso. omega.
    +        exfalso. lia.
          }
        }
      Qed.
    @@ -5175,47 +5183,47 @@

    Library MSetsExtra.MSetIntervals



    -  Lemma compare_antisym: ∀ (s1 s2 : t),
    -    (compare s1 s2) = CompOpp (compare s2 s1).
    +  Lemma compare_antisym: ∀ (s1 s2 : t),
    +    (compare s1 s2) = CompOpp (compare s2 s1).
      Proof.
        induction s1 as [| [y1 c1] s1' IH];
          case s2 as [| [y2 c2] s2'] ⇒ //.
    -    rewrite /= (Z.compare_antisym y1 y2) (N.compare_antisym c1 c2).
    -    case (Z.compare y1 y2) ⇒ //=.
    -    case (N.compare c1 c2) ⇒ //=.
    +    rewrite /= (Z.compare_antisym y1 y2) (N.compare_antisym c1 c2).
    +    case (Z.compare y1 y2) ⇒ //=.
    +    case (N.compare c1 c2) ⇒ //=.
      Qed.

    -  Lemma compare_spec : ∀ s1 s2,
    -    CompSpec eq lt s1 s2 (compare s1 s2).
    +  Lemma compare_spec : ∀ s1 s2,
    +    CompSpec eq lt s1 s2 (compare s1 s2).
      Proof.
        intros s1 s2.
    -    rewrite /CompSpec /lt (compare_antisym s2 s1).
    +    rewrite /CompSpec /lt (compare_antisym s2 s1).
        case_eq (compare s1 s2). {
          rewrite compare_eq_Eq equal_alt_def ⇒ →.
    -      by apply CompEq.
    +      by apply CompEq.
        } {
          move ⇒ _.
    -      by apply CompLt.
    +      by apply CompLt.
        } {
          move ⇒ _.
    -      by apply CompGt.
    +      by apply CompGt.
        }
      Qed.

    -  Lemma lt_Irreflexive : Irreflexive lt.
    +  Lemma lt_Irreflexive : Irreflexive lt.
      Proof.
    -    rewrite /Irreflexive /Reflexive /complement /lt.
    +    rewrite /Irreflexive /Reflexive /complement /lt.
        intros x.
    -    suff → : compare x x = Eq by done.
    +    suff → : compare x x = Eq by done.
        rewrite compare_eq_Eq equal_alt_def //.
      Qed.

    -  Lemma lt_Transitive : Transitive lt.
    +  Lemma lt_Transitive : Transitive lt.
      Proof.
    -    rewrite /Transitive /lt.
    +    rewrite /Transitive /lt.
        induction x as [| [y1 c1] s1' IH];
          case y as [| [y2 c2] s2'];
          case z as [| [y3 c3] s3'] ⇒ //.
    @@ -5225,7 +5233,7 @@

    Library MSetsExtra.MSetIntervals

        move ⇒ [H_y1_lt | [[->] H_c1_lt | [->] [->] H_comp]]
    [H_y2_lt | [[<-] H_c2_lt | [<-] [<-] H_comp']]. {
          left.
    -      by apply Z.lt_trans with (m := y2).
    +      by apply Z.lt_trans with (m := y2).
        } {
          by left.
        } {
    @@ -5235,7 +5243,7 @@

    Library MSetsExtra.MSetIntervals

        } {
          right; left.
          split ⇒ //.
    -      by apply N.lt_trans with (m := c2).
    +      by apply N.lt_trans with (m := c2).
        } {
          by right; left.
        } {
    @@ -5254,65 +5262,65 @@

    Library MSetsExtra.MSetIntervals

    -

    elements is sorted

    +

    elements is sorted


    -  Lemma elementsZ_single_sorted : ∀ c x,
    -    sort Z.lt (elementsZ_single x c).
    +  Lemma elementsZ_single_sorted : ∀ c x,
    +    sort Z.lt (elementsZ_single x c).
      Proof.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intro x.
          rewrite elementsZ_single_base.
    -      apply Sorted_nil.
    +      apply Sorted_nil.
        } {
          intro x.
          rewrite elementsZ_single_succ_front.
    -      apply Sorted_cons. {
    +      apply Sorted_cons. {
            apply IH.
          } {
    -        case (N.zero_or_succ c'). {
    +        case (N.zero_or_succ c'). {
              move ⇒ →.
              rewrite elementsZ_single_base //.
            } {
              move ⇒ [c''] →.
              rewrite elementsZ_single_succ_front.
              constructor.
    -          apply Z.lt_succ_diag_r.
    +          apply Z.lt_succ_diag_r.
            }
          }
        }
      Qed.

    -  Lemma elementsZ_sorted : ∀ s,
    -    interval_list_invariant s = true →
    -    sort Z.lt (rev (elementsZ s)).
    +  Lemma elementsZ_sorted : ∀ s,
    +    interval_list_invariant s = true →
    +    sort Z.lt (rev (elementsZ s)).
      Proof.
        induction s as [| [y c] s' IH]. {
          move ⇒ _.
          rewrite elementsZ_nil.
    -      apply Sorted_nil.
    +      apply Sorted_nil.
        } {
          rewrite interval_list_invariant_cons elementsZ_cons
    -              rev_app_distr rev_involutive.
    +              rev_app_distr rev_involutive.
          move ⇒ [H_gr] [H_c_neq_0] H_inv_s'.
    -      apply SortA_app with (eqA := Logic.eq). {
    -        apply eq_equivalence.
    +      apply SortA_app with (eqA := Logic.eq). {
    +        apply eq_equivalence.
          } {
            apply elementsZ_single_sorted.
          } {
            by apply IH.
          } {
            intros x1 x2.
    -        move ⇒ /InA_alt [_] [<-] /In_elementsZ_single [_ H_x1_lt].
    -        move ⇒ /InA_alt [_] [<-].
    -        rewrite -In_rev ⇒ H_x2_in.
    +        move ⇒ /InA_alt [_] [<-] /In_elementsZ_single [_ H_x1_lt].
    +        move ⇒ /InA_alt [_] [<-].
    +        rewrite -In_rev ⇒ H_x2_in.

    -        apply Z.lt_trans with (m := (y + Z.of_N c)) ⇒ //.
    +        apply Z.lt_trans with (m := (y + Z.of_N c)) ⇒ //.
            eapply interval_list_elements_greater_alt2_def;
              eauto.
          }
    @@ -5322,43 +5330,43 @@

    Library MSetsExtra.MSetIntervals



    -  Lemma elements_sorted : ∀ s,
    -    Ok s →
    -    sort Enc.E.lt (elements s).
    +  Lemma elements_sorted : ∀ s,
    +    Ok s →
    +    sort Enc.E.lt (elements s).
      Proof.
        move ⇒ s [H_inv] H_enc.
    -    rewrite /elements rev_map_alt_def -map_rev.
    -    have : (∀ x : Z, List.In x (rev (elementsZ s)) →
    -           âˆƒ e : Enc.E.t, Enc.encode e = x). {
    +    rewrite /elements rev_map_alt_def -map_rev.
    +    have : (∀ x : Z, List.In x (rev (elementsZ s)) →
    +           âˆƒ e : Enc.E.t, Enc.encode e = x). {
          move ⇒ x.
          move : (H_enc x).
    -      rewrite In_rev //.
    +      rewrite In_rev //.
        }
        move : (elementsZ_sorted s H_inv) ⇒ {H_enc}.
    -    generalize (rev (elementsZ s)).
    +    generalize (rev (elementsZ s)).
        induction l as [| x xs IH]. {
          rewrite /= ⇒ _ _.
    -      apply Sorted_nil.
    +      apply Sorted_nil.
        } {
          move ⇒ H_sort H_enc.
    -      apply Sorted_inv in H_sort as [H_sort H_hd_rel].
    +      apply Sorted_inv in H_sort as [H_sort H_hd_rel].
          simpl.
    -      apply Sorted_cons. {
    +      apply Sorted_cons. {
            apply IH ⇒ //.
            move ⇒ xx H_xx_in.
            apply H_enc.
    -        by apply in_cons.
    +        by apply in_cons.
          } {
            move : H_hd_rel H_enc.
            case xs ⇒ //=.
            move ⇒ x' xs' H_hd_rel H_enc.
    -        apply HdRel_inv in H_hd_rel.
    -        apply HdRel_cons.
    +        apply HdRel_inv in H_hd_rel.
    +        apply HdRel_cons.
            rewrite -Enc.encode_lt.
    -        have [y H_y] : (∃ y, Enc.encode y = x). {
    +        have [y H_y] : (∃ y, Enc.encode y = x). {
              apply H_enc. by left.
            }
    -        have [y' H_y'] : (∃ y', Enc.encode y' = x'). {
    +        have [y' H_y'] : (∃ y', Enc.encode y' = x'). {
              apply H_enc. by right; left.
            }
            move : H_hd_rel.
    @@ -5373,16 +5381,16 @@

    Library MSetsExtra.MSetIntervals

    -

    choose specification

    +

    choose specification


    -  Definition min_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      min_eltZ s = Some x → InZ x s.
    +  Definition min_eltZ_spec1 :
    +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      min_eltZ s = Some x → InZ x s.
      Proof.
        intros s x.
        case s as [| [x' c] s']. {
    @@ -5396,28 +5404,28 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma min_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    -    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
    +  Lemma min_eltZ_spec2 :
    +    âˆ€ (s : t) (x y : Z) (Hs : Ok s),
    +    min_eltZ s = Some x → InZ y s → ¬ Z.lt y x.
      Proof.
        intros s x y H_ok H_min H_in H_y_lt_x.
    -    eapply (Nin_elements_greater s (Z.pred x)) ⇒ //; last apply H_in. {
    +    eapply (Nin_elements_greater s (Z.pred x)) ⇒ //; last apply H_in. {
          move : H_ok H_min.
          case s ⇒ //.
          move ⇒ [z c] s' _ [<-].
          rewrite interval_list_elements_greater_cons.
    -      apply Z.lt_pred_l.
    +      apply Z.lt_pred_l.
        } {
          apply H_ok.
        } {
    -      by apply Z.lt_le_pred.
    +      by apply Z.lt_le_pred.
        }
      Qed.

    -  Definition min_eltZ_spec3 :
    -    âˆ€ (s : t),
    -      min_eltZ s = None → ∀ x, ¬InZ x s.
    +  Definition min_eltZ_spec3 :
    +    âˆ€ (s : t),
    +      min_eltZ s = None → ∀ x, ¬InZ x s.
      Proof.
        intros s.
        case s as [| [x' c] s'];
    @@ -5426,8 +5434,8 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Definition min_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
    +  Definition min_elt_spec1 :
    +    âˆ€ (s : t) (x : elt) (Hs : Ok s), min_elt s = Some x → In x s.
      Proof.
        rewrite /min_elt.
        move ⇒ s x H_ok.
    @@ -5439,56 +5447,56 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Definition min_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
    +  Definition min_elt_spec2 :
    +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), min_elt s = Some x → In y s → ~(Enc.E.lt y x).
      Proof.
        rewrite /min_elt.
        move ⇒ s x y H_ok.
        case_eq (min_eltZ s) ⇒ //.
        move ⇒ z H_min_elt [<-].
        rewrite In_InZ ⇒ H_inZ.
    -    have H_y_eq : y = Enc.decode (Enc.encode y). {
    +    have H_y_eq : y = Enc.decode (Enc.encode y). {
          by rewrite Enc.decode_encode_ok.
        }
        rewrite H_y_eq -Enc.encode_lt.
        apply (min_eltZ_spec2 _ _ _ H_ok); last first. {
          by rewrite Enc.decode_encode_ok.
        }
    -    suff → : Enc.encode (Enc.decode z) = z by assumption.
    +    suff → : Enc.encode (Enc.decode z) = z by assumption.
        apply encode_decode_eq with (s := s) ⇒ //.
        apply min_eltZ_spec1 ⇒ //.
        apply H_ok.
      Qed.

    -  Definition min_elt_spec3 :
    -    âˆ€ s : t, min_elt s = None → Empty s.
    +  Definition min_elt_spec3 :
    +    âˆ€ s : t, min_elt s = None → Empty s.
      Proof.
        rewrite /min_elt /min_eltZ /Empty /In.
        case s as [| [x' c] s'] ⇒ //.
        move ⇒ _ e.
    -    rewrite elements_nil InA_nil //.
    +    rewrite elements_nil InA_nil //.
      Qed.

    -  Definition choose_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
    +  Definition choose_spec1 :
    +    âˆ€ (s : t) (x : elt) (Hs : Ok s), choose s = Some x → In x s.
      Proof.
        rewrite /choose.
        apply min_elt_spec1.
      Qed.

    -  Definition choose_spec2 :
    -    âˆ€ s : t, choose s = None → Empty s.
    +  Definition choose_spec2 :
    +    âˆ€ s : t, choose s = None → Empty s.
      Proof.
        rewrite /choose.
        apply min_elt_spec3.
      Qed.

    -  Lemma choose_spec3: ∀ s s' x x', Ok s → Ok s' →
    -    choose s = Some x → choose s' = Some x' → Equal s s' → x = x'.
    +  Lemma choose_spec3: ∀ s s' x x', Ok s → Ok s' →
    +    choose s = Some x → choose s' = Some x' → Equal s s' → x = x'.
      Proof.
        intros s s' x x' Hs Hs' Hx Hx'.
        rewrite -equal_spec equal_alt_def ⇒ H_s_eq.
    @@ -5499,10 +5507,10 @@

    Library MSetsExtra.MSetIntervals



    -  Definition max_eltZ_spec1 :
    -    âˆ€ (s : t) (x : Z),
    -      interval_list_invariant s = true →
    -      max_eltZ s = Some x → InZ x s.
    +  Definition max_eltZ_spec1 :
    +    âˆ€ (s : t) (x : Z),
    +      interval_list_invariant s = true →
    +      max_eltZ s = Some x → InZ x s.
      Proof.
        intros s x.
        induction s as [| [x' c] s' IH]. {
    @@ -5515,10 +5523,10 @@

    Library MSetsExtra.MSetIntervals

            left. {
              rewrite In_elementsZ_single.
              split. {
    -            rewrite -Z.lt_le_pred.
    +            rewrite -Z.lt_le_pred.
                by apply Z_lt_add_r.
              } {
    -            apply Z.lt_pred_l.
    +            apply Z.lt_pred_l.
              }
            }
          } {
    @@ -5530,10 +5538,10 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma max_eltZ_spec2 :
    -    âˆ€ (s : t) (x y : Z),
    -    interval_list_invariant s = true →
    -    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
    +  Lemma max_eltZ_spec2 :
    +    âˆ€ (s : t) (x y : Z),
    +    interval_list_invariant s = true →
    +    max_eltZ s = Some x → InZ y s → ¬ Z.lt x y.
      Proof.
        induction s as [| [y c] s' IH]. {
          done.
    @@ -5541,14 +5549,14 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ x x'.
          rewrite interval_list_invariant_cons.
          move ⇒ [H_gr] [H_c_neq_0] H_inv_s'.
    -      have H_gr' : (∀ xx : Z, InZ xx (s') → y + Z.of_N c < xx). {
    +      have H_gr' : (∀ xx : Z, InZ xx (s') → y + Z.of_N c < xx). {
            apply interval_list_elements_greater_alt2_def ⇒ //.
          }

          case s' as [| [y' c'] s'']. {
            move ⇒ [<-].
            rewrite InZ_cons InZ_nil In_elementsZ_single.
    -        omega.
    +        lia.
          } {
            move ⇒ H_max_eq.
            rewrite InZ_cons.
    @@ -5557,21 +5565,21 @@

    Library MSetsExtra.MSetIntervals

            move ⇒ [_] H_x'_lt H_lt_x'.

    -        have H_x_in : InZ x ((y', c')::s''). {
    +        have H_x_in : InZ x ((y', c')::s''). {
              by apply max_eltZ_spec1.
            }
            
            move : (H_gr' _ H_x_in).
    -        apply Z.nlt_ge, Z.lt_le_incl.
    -        by apply Z.lt_trans with (m := x').
    +        apply Z.nlt_ge, Z.lt_le_incl.
    +        by apply Z.lt_trans with (m := x').
          }
        }
      Qed.

    -  Lemma max_eltZ_eq_None :
    -    âˆ€ (s : t),
    -      max_eltZ s = None → s = nil.
    +  Lemma max_eltZ_eq_None :
    +    âˆ€ (s : t),
    +      max_eltZ s = None → s = nil.
      Proof.
        induction s as [| [x' c] s' IH] ⇒ //.
        move : IH.
    @@ -5581,16 +5589,16 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Definition max_eltZ_spec3 :
    -    âˆ€ (s : t),
    -      max_eltZ s = None → ∀ x, ¬InZ x s.
    +  Definition max_eltZ_spec3 :
    +    âˆ€ (s : t),
    +      max_eltZ s = None → ∀ x, ¬InZ x s.
      Proof.
        move ⇒ s /max_eltZ_eq_None → x /InZ_nil //.
      Qed.

    -  Definition max_elt_spec1 :
    -    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
    +  Definition max_elt_spec1 :
    +    âˆ€ (s : t) (x : elt) (Hs : Ok s), max_elt s = Some x → In x s.
      Proof.
        rewrite /max_elt.
        move ⇒ s x H_ok.
    @@ -5602,8 +5610,8 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Definition max_elt_spec2 :
    -    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
    +  Definition max_elt_spec2 :
    +    âˆ€ (s : t) (x y : elt) (Hs : Ok s), max_elt s = Some x → In y s → ~(Enc.E.lt x y).
      Proof.
        rewrite /max_elt.
        move ⇒ s x y H_ok.
    @@ -5613,41 +5621,41 @@

    Library MSetsExtra.MSetIntervals

        rewrite In_InZ ⇒ H_inZ.
        rewrite -Enc.encode_lt.
        apply (max_eltZ_spec2 _ _ _ H_inv) ⇒ //.
    -    suff → : Enc.encode (Enc.decode z) = z ⇒ //.
    +    suff → : Enc.encode (Enc.decode z) = z ⇒ //.
        apply encode_decode_eq with (s := s) ⇒ //.
        apply max_eltZ_spec1 ⇒ //.
      Qed.

    -  Definition max_elt_spec3 :
    -    âˆ€ s : t, max_elt s = None → Empty s.
    +  Definition max_elt_spec3 :
    +    âˆ€ s : t, max_elt s = None → Empty s.
      Proof.
        intro s.
        rewrite /max_elt /Empty.
        case_eq (max_eltZ s) ⇒ //.
        move ⇒ /max_eltZ_eq_None → _ x.
    -    rewrite /In elements_nil InA_nil //.
    +    rewrite /In elements_nil InA_nil //.
      Qed.

    -

    fold specification

    +

    fold specification


    -  Lemma fold_spec :
    -   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    -   fold f s i = fold_left (flip f) (elements s) i.
    +  Lemma fold_spec :
    +   âˆ€ (s : t) (A : Type) (i : A) (f : elt → A → A),
    +   fold f s i = fold_left (flip f) (elements s) i.
      Proof.
        intros s A i f.
        rewrite /fold fold_elementsZ_alt_def /elements
    -            rev_map_alt_def -map_rev.
    +            rev_map_alt_def -map_rev.
        move : i.
    -    generalize (rev (elementsZ s)).
    +    generalize (rev (elementsZ s)).
        induction l as [| x xs IH]. {
          done.
        } {
    @@ -5662,64 +5670,64 @@

    Library MSetsExtra.MSetIntervals

    -

    cardinal specification

    +

    cardinal specification


    -  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    -    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
    +  Lemma cardinalN_spec : ∀ (s : t) (c : N),
    +    cardinalN c s = (c + N.of_nat (length (elements s)))%N.
      Proof.
        induction s as [| [x cx] xs IH]. {
          intros c.
    -      rewrite elements_nil /= N.add_0_r //.
    +      rewrite elements_nil /= N.add_0_r //.
        } {
          intros c.
          rewrite /= IH.
    -      rewrite /elements !rev_map_alt_def !rev_length !map_length.
    -      rewrite elementsZ_cons app_length Nat2N.inj_add rev_length.
    -      rewrite length_elementsZ_single N2Nat.id.
    +      rewrite /elements !rev_map_alt_def !rev_length !map_length.
    +      rewrite elementsZ_cons app_length Nat2N.inj_add rev_length.
    +      rewrite length_elementsZ_single N2Nat.id.
          ring.
        }
      Qed.

    -  Lemma cardinal_spec :
    -   âˆ€ (s : t),
    -   cardinal s = length (elements s).
    +  Lemma cardinal_spec :
    +   âˆ€ (s : t),
    +   cardinal s = length (elements s).
      Proof.
        intros s.
    -    rewrite /cardinal cardinalN_spec N.add_0_l Nat2N.id //.
    +    rewrite /cardinal cardinalN_spec N.add_0_l Nat2N.id //.
      Qed.

    -

    for_all specification

    +

    for_all specification


    -  Lemma for_all_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Lemma for_all_spec :
    +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
      Proof.
        intros s f Hs H.
        rewrite /for_all /For_all /In fold_elementsZ_alt_def
    -            /elements rev_map_alt_def -map_rev.
    -    generalize (rev (elementsZ s)).
    +            /elements rev_map_alt_def -map_rev.
    +    generalize (rev (elementsZ s)).
        induction l as [| x xs IH]. {
    -      split ⇒ // _ x /= /InA_nil //.
    +      split ⇒ // _ x /= /InA_nil //.
        } {
          rewrite /=.
          case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
            rewrite IH.
            split. {
    -          move ⇒ HH x' /InA_cons []. {
    +          move ⇒ HH x' /InA_cons []. {
                by move ⇒ →.
              } {
                apply HH.
    @@ -5727,7 +5735,7 @@

    Library MSetsExtra.MSetIntervals

            } {
              move ⇒ HH x' H_in.
              apply HH.
    -          apply InA_cons.
    +          apply InA_cons.
              by right.
            }
          } {
    @@ -5736,8 +5744,8 @@

    Library MSetsExtra.MSetIntervals

              case xs ⇒ //.
            } {
              exfalso.
    -          have H_in: (InA Enc.E.eq (Enc.decode x) (Enc.decode x :: map Enc.decode xs)). {
    -            apply InA_cons.
    +          have H_in: (InA Enc.E.eq (Enc.decode x) (Enc.decode x :: map Enc.decode xs)). {
    +            apply InA_cons.
                left.
                apply Enc.E.eq_equiv.
              }
    @@ -5752,31 +5760,31 @@

    Library MSetsExtra.MSetIntervals

    -

    exists specification

    +

    exists specification


    -  Lemma exists_spec :
    -   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    -   Proper (Enc.E.eq==>eq) f →
    -   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Lemma exists_spec :
    +   âˆ€ (s : t) (f : elt → bool) (Hs : Ok s),
    +   Proper (Enc.E.eq==>eq) f →
    +   (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
      Proof.
        intros s f Hs H.
        rewrite /exists_ /Exists /In fold_elementsZ_alt_def
    -            /elements rev_map_alt_def -map_rev.
    -    generalize (rev (elementsZ s)).
    +            /elements rev_map_alt_def -map_rev.
    +    generalize (rev (elementsZ s)).
        induction l as [| x xs IH]. {
          split ⇒ //.
    -      move ⇒ [x] /= [] /InA_nil //.
    +      move ⇒ [x] /= [] /InA_nil //.
        } {
          rewrite /=.
          case_eq (f (Enc.decode x)) ⇒ H_f_eq. {
            split ⇒ _. {
              âˆƒ (Enc.decode x).
              split ⇒ //.
    -          apply InA_cons.
    +          apply InA_cons.
              left.
              apply Enc.E.eq_equiv.
            } {
    @@ -5788,10 +5796,10 @@

    Library MSetsExtra.MSetIntervals

              move ⇒ [x0] [H_in] H_f_x0.
              âˆƒ x0.
              split ⇒ //.
    -          apply InA_cons.
    +          apply InA_cons.
              by right.
            } {
    -          move ⇒ [x0] [] /InA_cons H_in H_f_x0.
    +          move ⇒ [x0] [] /InA_cons H_in H_f_x0.
              âˆƒ x0.
              split ⇒ //.
              move : H_in ⇒ [] // H_in.
    @@ -5806,31 +5814,31 @@

    Library MSetsExtra.MSetIntervals

    -

    filter specification

    +

    filter specification


    -  Definition partitionZ_aux_invariant (x : Z) acc c :=
    -    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
    -    match c with
    -      None ⇒ (∀ y', InZ y' acc → Z.succ y' < x)
    -    | Some (y, c') ⇒ (x = y + Z.of_N c')
    +  Definition partitionZ_aux_invariant (x : Z) acc c :=
    +    interval_list_invariant (List.rev (partitionZ_fold_skip acc c)) = true ∧
    +    match c with
    +      None ⇒ (∀ y', InZ y' acc → Z.succ y' < x)
    +    | Some (y, c') ⇒ (x = y + Z.of_N c')
        end.

    -  Lemma partitionZ_aux_invariant_insert : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) acc
    -      (Some (partitionZ_fold_insert c x)).
    +  Lemma partitionZ_aux_invariant_insert : ∀ x acc c,
    +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) acc
    +      (Some (partitionZ_fold_insert c x)).
      Proof.
        intros x acc c.
        rewrite /partitionZ_fold_insert /partitionZ_aux_invariant
                /partitionZ_fold_skip.
        case c; last first. {
          move ⇒ [H_inv] H_in.
    -      rewrite /= interval_list_invariant_app_iff Z.add_1_r.
    +      rewrite /= interval_list_invariant_app_iff Z.add_1_r.
          split; last done.
          split; first done.
          split; first done.
    @@ -5841,7 +5849,7 @@

    Library MSetsExtra.MSetIntervals

        } {
          move ⇒ [y c'].
          rewrite /= !interval_list_invariant_app_iff
    -        N2Z.inj_succ Z.add_succ_r .
    +        N2Z.inj_succ Z.add_succ_r .
          rewrite !interval_list_invariant_cons !interval_list_invariant_nil.
          move ⇒ [] [H_inv_acc] [] [] _ [H_c_neq_0] _
            H_in_c →.
    @@ -5850,17 +5858,17 @@

    Library MSetsExtra.MSetIntervals

          split. {
            split; first done.
            split; last done.
    -        apply N.neq_succ_0.
    +        apply N.neq_succ_0.
          } {
            move ⇒ x1 x2.
            rewrite InZ_cons InZ_nil In_elementsZ_single.
            move ⇒ H_x1_in [] // [H_y_le] H_x2_lt.
    -        apply Z.lt_le_trans with (m := y) ⇒ //.
    +        apply Z.lt_le_trans with (m := y) ⇒ //.
            apply H_in_c ⇒ //.
            rewrite InZ_cons In_elementsZ_single.
            left.
            split. {
    -          apply Z.le_refl.
    +          apply Z.le_refl.
            } {
              by apply Z_lt_add_r.
            }
    @@ -5869,9 +5877,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma partitionZ_aux_invariant_skip : ∀ x acc c,
    -    partitionZ_aux_invariant x acc c →
    -    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
    +  Lemma partitionZ_aux_invariant_skip : ∀ x acc c,
    +    partitionZ_aux_invariant x acc c →
    +    partitionZ_aux_invariant (Z.succ x) (partitionZ_fold_skip acc c) None.
      Proof.
        intros x acc c.
        rewrite /partitionZ_fold_skip /partitionZ_aux_invariant
    @@ -5880,10 +5888,10 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ [H_inv] H_in.
          split; first done.
          move ⇒ y' H_y'_in.
    -      apply Z.lt_trans with (m := x). {
    +      apply Z.lt_trans with (m := x). {
            by apply H_in.
          } {
    -        apply Z.lt_succ_diag_r.
    +        apply Z.lt_succ_diag_r.
          }
        } {
          move ⇒ [y c'] [H_inv] →.
    @@ -5892,12 +5900,12 @@

    Library MSetsExtra.MSetIntervals

          rewrite InZ_cons In_elementsZ_single.
          move ⇒ []. {
            move ⇒ [_].
    -        rewrite -Z.succ_lt_mono //.
    +        rewrite -Z.succ_lt_mono //.
          } {
            move : H_inv.
            rewrite /= !interval_list_invariant_app_iff interval_list_invariant_cons.
            move ⇒ [_] [] [_] [H_c'_neq] _ H_pre H_y'_in.
    -        apply Z.lt_trans with (m := y). {
    +        apply Z.lt_trans with (m := y). {
              apply H_pre. {
                by rewrite InZ_rev.
              } {
    @@ -5906,40 +5914,40 @@

    Library MSetsExtra.MSetIntervals

                by apply In_elementsZ_single_hd.
              }
            }
    -        apply Z.lt_succ_r, Z_le_add_r.
    +        apply Z.lt_succ_r, Z_le_add_r.
          }
        }
      Qed.

    -  Definition partitionZ_fold_current (c : option (Z × N)) :=
    -    match c with
    -       None ⇒ nil
    -     | Some yc ⇒ yc::nil
    +  Definition partitionZ_fold_current (c : option (Z × N)) :=
    +    match c with
    +       None ⇒ nil
    +     | Some yc ⇒ yc::nil
        end.

    -  Lemma InZ_partitionZ_fold_current_Some : ∀ yc y,
    -     InZ y (partitionZ_fold_current (Some yc)) ↔
    -     InZ y (yc :: nil).
    +  Lemma InZ_partitionZ_fold_current_Some : ∀ yc y,
    +     InZ y (partitionZ_fold_current (Some yc)) ↔
    +     InZ y (yc :: nil).
      Proof. done. Qed.

    -  Lemma InZ_partitionZ_fold_insert : ∀ c x y l,
    -   match c with
    -   | Some (y, c') ⇒ x = y + Z.of_N c'
    -   | None ⇒ True
    -   end → (
    -   InZ y (partitionZ_fold_insert c x :: l) ↔
    -    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    -       InZ y l)).
    +  Lemma InZ_partitionZ_fold_insert : ∀ c x y l,
    +   match c with
    +   | Some (y, c') ⇒ x = y + Z.of_N c'
    +   | None ⇒ True
    +   end → (
    +   InZ y (partitionZ_fold_insert c x :: l) ↔
    +    ((x = y) ∨ InZ y (partitionZ_fold_current c) ∨
    +       InZ y l)).
      Proof.
        intros c x y l.
        rewrite /partitionZ_fold_insert /partitionZ_fold_current
                /partitionZ_fold_skip.
        case c. {
          move ⇒ [y' c'] →.
    -      rewrite !InZ_cons elementsZ_single_succ in_app_iff
    +      rewrite !InZ_cons elementsZ_single_succ in_app_iff
                  InZ_nil /=.
          tauto.
        } {
    @@ -5949,9 +5957,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma InZ_partitionZ_fold_skip : ∀ c acc y,
    -    InZ y (partitionZ_fold_skip acc c) ↔
    -    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
    +  Lemma InZ_partitionZ_fold_skip : ∀ c acc y,
    +    InZ y (partitionZ_fold_skip acc c) ↔
    +    (InZ y (partitionZ_fold_current c) ∨ InZ y acc).
      Proof.
        intros c acc y.
        rewrite /partitionZ_fold_skip /partitionZ_fold_current
    @@ -5967,20 +5975,20 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma filterZ_single_aux_props :
    -    âˆ€ f c x acc cur,
    -      partitionZ_aux_invariant x acc cur →
    -      match (filterZ_single_aux f (acc, cur) x c) with
    -        (acc', c') ⇒
    -        let r := partitionZ_fold_skip acc' c' in
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' (partitionZ_fold_skip acc cur) ∨
    -                                    (f y' = true ∧ List.In y' (elementsZ_single x c))))
    +  Lemma filterZ_single_aux_props :
    +    âˆ€ f c x acc cur,
    +      partitionZ_aux_invariant x acc cur →
    +      match (filterZ_single_aux f (acc, cur) x c) with
    +        (acc', c') ⇒
    +        let r := partitionZ_fold_skip acc' c' in
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' (partitionZ_fold_skip acc cur) ∨
    +                                    (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
      Proof.
        intro f.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intros x acc cur.
          rewrite /partitionZ_aux_invariant.
          move ⇒ [H_inv] _.
    @@ -5988,19 +5996,19 @@

    Library MSetsExtra.MSetIntervals

          tauto.
        }
        intros x acc cur H_inv.
    -    have → : filterZ_single_aux f (acc, cur) x (N.succ c') =
    -               filterZ_single_aux f (filterZ_fold_fun f (acc, cur) x) (Z.succ x) c'. {
    +    have → : filterZ_single_aux f (acc, cur) x (N.succ c') =
    +               filterZ_single_aux f (filterZ_fold_fun f (acc, cur) x) (Z.succ x) c'. {
            by rewrite /filterZ_single_aux fold_elementsZ_single_succ.
        }
    -    case_eq (filterZ_fold_fun f (acc, cur) x).
    +    case_eq (filterZ_fold_fun f (acc, cur) x).
        move ⇒ acc' cur' H_fold_eq.

    -    case_eq (filterZ_single_aux f (acc', cur') (Z.succ x) c').
    +    case_eq (filterZ_single_aux f (acc', cur') (Z.succ x) c').
        move ⇒ acc'' cur'' H_succ_eq.

    -    have H_inv' : partitionZ_aux_invariant (Z.succ x) acc' cur'. {
    +    have H_inv' : partitionZ_aux_invariant (Z.succ x) acc' cur'. {
          move : H_fold_eq H_inv.
          rewrite /filterZ_fold_fun.
          case (f x); move ⇒ [<-] <-. {
    @@ -6010,7 +6018,7 @@

    Library MSetsExtra.MSetIntervals

          }
        }
       
    -    move : (IH (Z.succ x) acc' cur' H_inv') ⇒ {IH}.
    +    move : (IH (Z.succ x) acc' cur' H_inv') ⇒ {IH}.
        rewrite H_succ_eq /=.
        set r := partitionZ_fold_skip acc'' cur''.
        move ⇒ [H_inv_r] H_in_r.
    @@ -6052,15 +6060,15 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma filterZ_single_props :
    -    âˆ€ f c x acc,
    -      interval_list_invariant (rev acc) = true →
    -      (∀ y' : Z, InZ y' acc → Z.succ y' < x) →
    -      match (filterZ_single f acc x c) with
    +  Lemma filterZ_single_props :
    +    âˆ€ f c x acc,
    +      interval_list_invariant (rev acc) = true →
    +      (∀ y' : Z, InZ y' acc → Z.succ y' < x) →
    +      match (filterZ_single f acc x c) with
            r ⇒
    -        interval_list_invariant (List.rev r) = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    -                                 (f y' = true ∧ List.In y' (elementsZ_single x c))))
    +        interval_list_invariant (List.rev r) = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ List.In y' (elementsZ_single x c))))

          end.
      Proof.
    @@ -6069,11 +6077,11 @@

    Library MSetsExtra.MSetIntervals

        rewrite /filterZ_single.

    -    have H_inv' : partitionZ_aux_invariant x acc None. {
    +    have H_inv' : partitionZ_aux_invariant x acc None. {
          by rewrite /partitionZ_aux_invariant /=.
        }
    -    move : (filterZ_single_aux_props f c x acc None H_inv').
    -    case_eq (filterZ_single_aux f (acc, None) x c).
    +    move : (filterZ_single_aux_props f c x acc None H_inv').
    +    case_eq (filterZ_single_aux f (acc, None) x c).
        move ⇒ acc' cur' /= H_res.
        tauto.
      Qed.
    @@ -6081,16 +6089,16 @@

    Library MSetsExtra.MSetIntervals



    -  Lemma filterZ_aux_props :
    -    âˆ€ f s acc,
    -      interval_list_invariant s = true →
    -      interval_list_invariant (rev acc) = true →
    -      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    -      match (filterZ_aux acc f s) with
    +  Lemma filterZ_aux_props :
    +    âˆ€ f s acc,
    +      interval_list_invariant s = true →
    +      interval_list_invariant (rev acc) = true →
    +      (∀ x1 x2 : Z, InZ x1 acc → InZ x2 s → Z.succ x1 < x2) →
    +      match (filterZ_aux acc f s) with
            r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    -                                 (f y' = true ∧ InZ y' s)))
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (InZ y' acc ∨
    +                                 (f y' = true ∧ InZ y' s)))
          end.
      Proof.
        intro f.
    @@ -6108,7 +6116,7 @@

    Library MSetsExtra.MSetIntervals

          rewrite interval_list_elements_greater_alt2_def ⇒ // H_gr.

    -      have H_pre : (∀ y' : Z, InZ y' acc → Z.succ y' < y). {
    +      have H_pre : (∀ y' : Z, InZ y' acc → Z.succ y' < y). {
            move ⇒ x1 H_x1_in.
            apply H_in_acc ⇒ //.
            rewrite InZ_cons.
    @@ -6120,8 +6128,8 @@

    Library MSetsExtra.MSetIntervals

          move ⇒ [H_inv'] H_in_acc'.

    -      have H_pre : (∀ x1 x2 : Z,
    -                      InZ x1 acc' → InZ x2 s' → Z.succ x1 < x2). {
    +      have H_pre : (∀ x1 x2 : Z,
    +                      InZ x1 acc' → InZ x2 s' → Z.succ x1 < x2). {
            move ⇒ x1 x2.
            rewrite H_in_acc' In_elementsZ_single.
            move ⇒ []. {
    @@ -6131,8 +6139,8 @@

    Library MSetsExtra.MSetIntervals

              by right.
            } {
              move ⇒ [_] [_] H_x1_lt H_x2_in.
    -          apply Z.le_lt_trans with (m := y + Z.of_N c).
    -            - by apply Z.le_succ_l.
    +          apply Z.le_lt_trans with (m := y + Z.of_N c).
    +            - by apply Z.le_succ_l.
                - by apply H_gr.
            }
          }
    @@ -6148,23 +6156,23 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma filterZ_props :
    -    âˆ€ f s,
    -      interval_list_invariant s = true →
    -      match (filterZ f s) with r ⇒
    -        interval_list_invariant r = true ∧
    -        (∀ y', InZ y' r ↔ (f y' = true ∧ InZ y' s))
    +  Lemma filterZ_props :
    +    âˆ€ f s,
    +      interval_list_invariant s = true →
    +      match (filterZ f s) with r ⇒
    +        interval_list_invariant r = true ∧
    +        (∀ y', InZ y' r ↔ (f y' = true ∧ InZ y' s))
          end.
      Proof.
        intros f s H_inv_s.
        rewrite /filterZ.

    -    have H_pre_1 : interval_list_invariant (rev nil) = true by done.
    -    have H_pre_2 : (∀ x1 x2 : Z, InZ x1 nil → InZ x2 s → Z.succ x1 < x2) by done.
    +    have H_pre_1 : interval_list_invariant (rev nil) = true by done.
    +    have H_pre_2 : (∀ x1 x2 : Z, InZ x1 nil → InZ x2 s → Z.succ x1 < x2) by done.

    -    move : (filterZ_aux_props f s nil H_inv_s H_pre_1 H_pre_2) ⇒ {H_pre_1} {H_pre_2}.
    +    move : (filterZ_aux_props f s nil H_inv_s H_pre_1 H_pre_2) ⇒ {H_pre_1} {H_pre_2}.
        move ⇒ [H_inv'] H_in_r.
        split; first assumption.
        move ⇒ y'.
    @@ -6173,11 +6181,11 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Global Instance filter_ok s f : ∀ `(Ok s), Ok (filter f s).
    +  Global Instance filter_ok s f : ∀ `(Ok s), Ok (filter f s).
      Proof.
        move ⇒ [H_inv H_enc].
        rewrite /filter.
    -    set f' := (fun z : Z ⇒ f (Enc.decode z)).
    +    set f' := (fun z : Z ⇒ f (Enc.decode z)).
        move : (filterZ_props f' s H_inv).
        move ⇒ [H_inv'] H_in_r.
        rewrite /Ok /IsOk /is_encoded_elems_list.
    @@ -6187,17 +6195,17 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma filter_spec :
    -   âˆ€ (s : t) (x : elt) (f : elt → bool),
    -   Ok s →
    -   (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Lemma filter_spec :
    +   âˆ€ (s : t) (x : elt) (f : elt → bool),
    +   Ok s →
    +   (In x (filter f s) ↔ In x s ∧ f x = true).
      Proof.
        move ⇒ s x f H_ok.
        suff H_suff :
    -      (∀ x, (InZ x (filter f s)) ↔
    -                 InZ x s ∧ f (Enc.decode x) = true). {
    +      (∀ x, (InZ x (filter f s)) ↔
    +                 InZ x s ∧ f (Enc.decode x) = true). {
          rewrite !In_alt_def /elements !rev_map_alt_def
    -              -!in_rev !in_map_iff.
    +              -!in_rev !in_map_iff.
          setoid_rewrite H_suff.
          rewrite /InZ.
          split. {
    @@ -6210,7 +6218,7 @@

    Library MSetsExtra.MSetIntervals

          }
        }
        rewrite /filter.
    -    set f' := (fun z : Z ⇒ f (Enc.decode z)).
    +    set f' := (fun z : Z ⇒ f (Enc.decode z)).
        move : (H_ok) ⇒ [H_inv _].
        move : (filterZ_props f' s H_inv).
        move ⇒ [H_inv'] H_in_r.
    @@ -6221,28 +6229,28 @@

    Library MSetsExtra.MSetIntervals

    -

    partition specification

    +

    partition specification


    -  Lemma partitionZ_single_aux_alt_def : ∀ f c y acc_t c_t acc_f c_f,
    -    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    -    (filterZ_single_aux f (acc_t, c_t) y c,
    -     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).
    +  Lemma partitionZ_single_aux_alt_def : ∀ f c y acc_t c_t acc_f c_f,
    +    partitionZ_single_aux f ((acc_t, c_t), (acc_f, c_f)) y c =
    +    (filterZ_single_aux f (acc_t, c_t) y c,
    +     filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y c).
      Proof.
        intros f.
        rewrite /partitionZ_single_aux /filterZ_single_aux.
    -    induction c as [| c' IH] using N.peano_ind. {
    +    induction c as [| c' IH] using N.peano_ind. {
          intros y acc_t c_t acc_f c_f.
          rewrite !fold_elementsZ_single_zero //. } {
          intros y acc_t c_t acc_f c_f.
          rewrite !fold_elementsZ_single_succ.
    -      case_eq (partitionZ_fold_fun f (acc_t, c_t, (acc_f, c_f)) y) ⇒ [] [acc_t' c_t'] [acc_f' c_f'] H_fold_eq.
    +      case_eq (partitionZ_fold_fun f (acc_t, c_t, (acc_f, c_f)) y) ⇒ [] [acc_t' c_t'] [acc_f' c_f'] H_fold_eq.
          rewrite IH ⇒ {IH}.
    -      suff : (filterZ_fold_fun f (acc_t, c_t) y = (acc_t', c_t')) ∧
    -             (filterZ_fold_fun (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y = (acc_f', c_f')). {
    +      suff : (filterZ_fold_fun f (acc_t, c_t) y = (acc_t', c_t')) ∧
    +             (filterZ_fold_fun (fun x : Z ⇒ negb (f x)) (acc_f, c_f) y = (acc_f', c_f')). {
            move ⇒ [->] → //.
          }
          move : H_fold_eq.
    @@ -6252,10 +6260,10 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma partitionZ_aux_alt_def : ∀ f s acc_t acc_f,
    -   partitionZ_aux acc_t acc_f f s =
    -   (filterZ_aux acc_t f s,
    -    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
    +  Lemma partitionZ_aux_alt_def : ∀ f s acc_t acc_f,
    +   partitionZ_aux acc_t acc_f f s =
    +   (filterZ_aux acc_t f s,
    +    filterZ_aux acc_f (fun x : Z ⇒ negb (f x)) s).
      Proof.
        intros f.
        induction s as [| [y c] s' IH]. {
    @@ -6264,16 +6272,16 @@

    Library MSetsExtra.MSetIntervals

          intros acc_t acc_f.
          rewrite /= /partitionZ_single /filterZ_single
                  partitionZ_single_aux_alt_def.
    -      case (filterZ_single_aux f (acc_t, None) y c) ⇒ acc_t' c_t'.
    -      case (filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, None) y c) ⇒ acc_f' c_f'.
    +      case (filterZ_single_aux f (acc_t, None) y c) ⇒ acc_t' c_t'.
    +      case (filterZ_single_aux (fun x : Z ⇒ negb (f x)) (acc_f, None) y c) ⇒ acc_f' c_f'.
          rewrite IH //.
        }
      Qed.

    -  Lemma partitionZ_alt_def : ∀ f s,
    -    partitionZ f s = (filterZ f s,
    -                      filterZ (fun x ⇒ negb (f x)) s).
    +  Lemma partitionZ_alt_def : ∀ f s,
    +    partitionZ f s = (filterZ f s,
    +                      filterZ (fun x ⇒ negb (f x)) s).
      Proof.
        intros f s.
        rewrite /partitionZ /filterZ
    @@ -6281,9 +6289,9 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma partition_alt_def : ∀ f s,
    -    partition f s = (filter f s,
    -                     filter (fun x ⇒ negb (f x)) s).
    +  Lemma partition_alt_def : ∀ f s,
    +    partition f s = (filter f s,
    +                     filter (fun x ⇒ negb (f x)) s).
      Proof.
        intros f s.
        rewrite /partition /filter partitionZ_alt_def.
    @@ -6291,38 +6299,38 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).
    +  Global Instance partition_ok1 s f : ∀ `(Ok s), Ok (fst (partition f s)).
      Proof.
        move ⇒ H_ok.
    -    rewrite partition_alt_def /fst.
    +    rewrite partition_alt_def /fst.
        by apply filter_ok.
      Qed.

    -  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).
    +  Global Instance partition_ok2 s f : ∀ `(Ok s), Ok (snd (partition f s)).
      Proof.
        move ⇒ H_ok.
    -    rewrite partition_alt_def /snd.
    +    rewrite partition_alt_def /snd.
        by apply filter_ok.
      Qed.

    -  Lemma partition_spec1 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Equal (fst (partition f s)) (filter f s).
    +  Lemma partition_spec1 :
    +   âˆ€ (s : t) (f : elt → bool),
    +   Equal (fst (partition f s)) (filter f s).
      Proof.
        intros s f.
    -    rewrite partition_alt_def /fst /Equal //.
    +    rewrite partition_alt_def /fst /Equal //.
      Qed.

    -  Lemma partition_spec2 :
    -   âˆ€ (s : t) (f : elt → bool),
    -   Ok s →
    -   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +  Lemma partition_spec2 :
    +   âˆ€ (s : t) (f : elt → bool),
    +   Ok s →
    +   Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
      Proof.
        intros s f.
    -    rewrite partition_alt_def /snd /Equal //.
    +    rewrite partition_alt_def /snd /Equal //.
      Qed.

    @@ -6332,7 +6340,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Main Module

    +

    Main Module

    @@ -6343,56 +6351,56 @@

    Library MSetsExtra.MSetIntervals


    -Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
    -  Module E := Enc.E.
    -  Module Raw := Raw Enc.
    +Module MSetIntervals (Enc : ElementEncode) <: SetsOn Enc.E.
    +  Module E := Enc.E.
    +  Module Raw := Raw Enc.

     Local Unset Elimination Schemes.
     Local Unset Case Analysis Schemes.

    Definition elt := Raw.elt.
    Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}.
    Definition t := t_.
    Arguments Mkt this {is_ok}.
    Hint Resolve is_ok : typeclass_instances.
    - -
    Definition In (x : elt)(s : t) := Raw.In x s.(this).
    Definition Equal (s s' : t) := ∀ a : elt, In a s ↔ In a s'.
    Definition Subset (s s' : t) := ∀ a : elt, In a s → In a s'.
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.
    - -
    Definition mem (x : elt)(s : t) := Raw.mem x s.(this).
    Definition add (x : elt)(s : t) : t := Mkt (Raw.add x s.(this)).
    Definition remove (x : elt)(s : t) : t := Mkt (Raw.remove x s.(this)).
    Definition singleton (x : elt) : t := Mkt (Raw.singleton x).
    Definition union (s s' : t) : t := Mkt (Raw.union s s').
    Definition inter (s s' : t) : t := Mkt (Raw.inter s s').
    Definition diff (s s' : t) : t := Mkt (Raw.diff s s').
    Definition equal (s s' : t) := Raw.equal s s'.
    Definition subset (s s' : t) := Raw.subset s s'.(this).
    Definition empty : t := Mkt Raw.empty.
    Definition is_empty (s : t) := Raw.is_empty s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
    Definition cardinal (s : t) := Raw.cardinal s.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    -   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    - -
    Instance In_compat : Proper (E.eq==>eq==>iff) In.
    Definition elt := Raw.elt.
    Record t_ := Mkt {this :> Raw.t; is_ok : Raw.Ok this}.
    Definition t := t_.
    Arguments Mkt this {is_ok}.
    + #[local] Hint Resolve is_ok : typeclass_instances.
    + +
    Definition In (x : elt)(s : t) := Raw.In x s.(this).
    Definition Equal (s s' : t) := ∀ a : elt, In a s ↔ In a s'.
    Definition Subset (s s' : t) := ∀ a : elt, In a s → In a s'.
    Definition Empty (s : t) := ∀ a : elt, ¬ In a s.
    Definition For_all (P : elt → Prop)(s : t) := ∀ x, In x s → P x.
    Definition Exists (P : elt → Prop)(s : t) := ∃ x, In x s ∧ P x.
    + +
    Definition mem (x : elt)(s : t) := Raw.mem x s.(this).
    Definition add (x : elt)(s : t) : t := Mkt (Raw.add x s.(this)).
    Definition remove (x : elt)(s : t) : t := Mkt (Raw.remove x s.(this)).
    Definition singleton (x : elt) : t := Mkt (Raw.singleton x).
    Definition union (s s' : t) : t := Mkt (Raw.union s s').
    Definition inter (s s' : t) : t := Mkt (Raw.inter s s').
    Definition diff (s s' : t) : t := Mkt (Raw.diff s s').
    Definition equal (s s' : t) := Raw.equal s s'.
    Definition subset (s s' : t) := Raw.subset s s'.(this).
    Definition empty : t := Mkt Raw.empty.
    Definition is_empty (s : t) := Raw.is_empty s.
    Definition elements (s : t) : list elt := Raw.elements s.
    Definition min_elt (s : t) : option elt := Raw.min_elt s.
    Definition max_elt (s : t) : option elt := Raw.max_elt s.
    Definition choose (s : t) : option elt := Raw.choose s.
    Definition compare (s1 s2 : t) : comparison := Raw.compare s1 s2.
    Definition fold {A : Type}(f : elt → A → A)(s : t) : A → A := Raw.fold f s.
    Definition cardinal (s : t) := Raw.cardinal s.
    Definition filter (f : elt → bool)(s : t) : t := Mkt (Raw.filter f s).
    Definition for_all (f : elt → bool)(s : t) := Raw.for_all f s.
    Definition exists_ (f : elt → bool)(s : t) := Raw.exists_ f s.
    Definition partition (f : elt → bool)(s : t) : t × t :=
    +   let p := Raw.partition f s in (Mkt (fst p), Mkt (snd p)).
    + +
    + #[local] Instance In_compat : Proper (E.eq==>eq==>iff) In.
     Proof.
       repeat red.
       move ⇒ x y H_eq_xy x' y' →.
    @@ -6402,121 +6410,121 @@

    Library MSetsExtra.MSetIntervals

     Qed.

    Definition eq : t → t → Prop := Equal.
    Definition eq : t → t → Prop := Equal.

    Instance eq_equiv : Equivalence eq.
    + #[local] Instance eq_equiv : Equivalence eq.
     Proof. firstorder. Qed.

    Definition eq_dec : ∀ (s s':t), { eq s s' }+{ ¬eq s s' }.
    Definition eq_dec : ∀ (s s':t), { eq s s' }+{ ¬eq s s' }.
     Proof.
      intros (s,Hs) (s',Hs').
    -  change ({Raw.Equal s s'}+{¬Raw.Equal s s'}).
    +  change ({Raw.Equal s s'}+{¬Raw.Equal s s'}).
      destruct (Raw.equal s s') eqn:H; [left|right];
       rewrite <- Raw.equal_spec; congruence.
     Defined.

    Definition lt : t → t → Prop := Raw.lt.
    Definition lt : t → t → Prop := Raw.lt.

    Instance lt_strorder : StrictOrder lt.
    + #[local] Instance lt_strorder : StrictOrder lt.
     Proof.
       unfold lt.
       constructor. {
         move : Raw.lt_Irreflexive.
    -     rewrite /Irreflexive /complement /Reflexive.
    +     rewrite /Irreflexive /complement /Reflexive.
         move ⇒ H x.
         apply H.
       } {
         move : Raw.lt_Transitive.
    -     rewrite /Transitive.
    +     rewrite /Transitive.
         move ⇒ H x y z.
         apply H.
       }
     Qed.

    Instance lt_compat : Proper (eq==>eq==>iff) lt.
    + #[local] Instance lt_compat : Proper (eq==>eq==>iff) lt.
     Proof.
       repeat red.
       move ⇒ [x1 H_x1_ok] [y1 H_y1_ok] H_eq.
       move ⇒ [x2 H_x2_ok] [y2 H_y2_ok].
       move : H_eq.
       rewrite /eq /lt /Equal /In /=.
    -   replace (∀ a : elt, Raw.In a x1 ↔ Raw.In a y1) with
    +   replace (∀ a : elt, Raw.In a x1 ↔ Raw.In a y1) with
         (Raw.Equal x1 y1) by done.
    -   replace (∀ a : elt, Raw.In a x2 ↔ Raw.In a y2) with
    +   replace (∀ a : elt, Raw.In a x2 ↔ Raw.In a y2) with
         (Raw.Equal x2 y2) by done.
       rewrite -!Raw.equal_spec !Raw.equal_alt_def.
       move ⇒ → → //.
     Qed.

    Section Spec.
    -  Variable s s' : t.
    -  Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    Section Spec.
    +  Variable s s' : t.
    +  Variable x y : elt.
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).

    -  Lemma mem_spec : mem x s = true ↔ In x s.
    +  Lemma mem_spec : mem x s = true ↔ In x s.
      Proof. exact (Raw.mem_spec _ _ _). Qed.
    -  Lemma equal_spec : equal s s' = true ↔ Equal s s'.
    +  Lemma equal_spec : equal s s' = true ↔ Equal s s'.
      Proof. rewrite Raw.equal_spec //. Qed.
    -  Lemma subset_spec : subset s s' = true ↔ Subset s s'.
    +  Lemma subset_spec : subset s s' = true ↔ Subset s s'.
      Proof. exact (Raw.subset_spec _ _ _ _). Qed.
    -  Lemma empty_spec : Empty empty.
    +  Lemma empty_spec : Empty empty.
      Proof. exact Raw.empty_spec. Qed.
    -  Lemma is_empty_spec : is_empty s = true ↔ Empty s.
    +  Lemma is_empty_spec : is_empty s = true ↔ Empty s.
      Proof. rewrite Raw.is_empty_spec //. Qed.
    -  Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Lemma add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
      Proof. exact (Raw.add_spec _ _ _ _). Qed.
    -  Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Lemma remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
      Proof. exact (Raw.remove_spec _ _ _ _). Qed.
    -  Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
    +  Lemma singleton_spec : In y (singleton x) ↔ E.eq y x.
      Proof. exact (Raw.singleton_spec _ _). Qed.
    -  Lemma union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +  Lemma union_spec : In x (union s s') ↔ In x s ∨ In x s'.
      Proof. exact (Raw.union_spec _ _ _ _ _). Qed.
    -  Lemma inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +  Lemma inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
      Proof. exact (Raw.inter_spec _ _ _ _ _). Qed.
    -  Lemma diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Lemma diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
      Proof. exact (Raw.diff_spec _ _ _ _ _). Qed.
    -  Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
    +  Lemma fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +      fold f s i = fold_left (fun a e ⇒ f e a) (elements s) i.
      Proof. exact (@Raw.fold_spec _). Qed.
    -  Lemma cardinal_spec : cardinal s = length (elements s).
    +  Lemma cardinal_spec : cardinal s = length (elements s).
      Proof. exact (@Raw.cardinal_spec s). Qed.
    -  Lemma filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Lemma filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
      Proof. move ⇒ _; exact (@Raw.filter_spec _ _ _ _). Qed.
    -  Lemma for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Lemma for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
      Proof. exact (@Raw.for_all_spec _ _ _). Qed.
    -  Lemma exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Lemma exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
      Proof. exact (@Raw.exists_spec _ _ _). Qed.
    -  Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
    +  Lemma partition_spec1 : compatb f → Equal (fst (partition f s)) (filter f s).
      Proof. move ⇒ _; exact (@Raw.partition_spec1 _ _). Qed.
    -  Lemma partition_spec2 : compatb f →
    -      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
    +  Lemma partition_spec2 : compatb f →
    +      Equal (snd (partition f s)) (filter (fun x ⇒ negb (f x)) s).
      Proof. move ⇒ _; exact (@Raw.partition_spec2 _ _ _). Qed.
    -  Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +  Lemma elements_spec1 : InA E.eq x (elements s) ↔ In x s.
      Proof. rewrite /In /Raw.In /elements //. Qed.
    -  Lemma elements_spec2w : NoDupA E.eq (elements s).
    +  Lemma elements_spec2w : NoDupA E.eq (elements s).
      Proof. exact (Raw.elements_spec2w _ _). Qed.
    -  Lemma elements_spec2 : sort E.lt (elements s).
    +  Lemma elements_spec2 : sort E.lt (elements s).
      Proof. exact (Raw.elements_sorted _ _). Qed.
    -  Lemma choose_spec1 : choose s = Some x → In x s.
    +  Lemma choose_spec1 : choose s = Some x → In x s.
      Proof. exact (Raw.choose_spec1 _ _ _). Qed.
    -  Lemma choose_spec2 : choose s = None → Empty s.
    +  Lemma choose_spec2 : choose s = None → Empty s.
      Proof. exact (Raw.choose_spec2 _). Qed.
    -  Lemma choose_spec3 : choose s = Some x → choose s' = Some y →
    -    Equal s s' → E.eq x y.
    +  Lemma choose_spec3 : choose s = Some x → choose s' = Some y →
    +    Equal s s' → E.eq x y.
      Proof.
        intros H1 H2 H3.
    -    suff → : x = y. {
    +    suff → : x = y. {
          apply E.eq_equiv.
        }
        move : H1 H2 H3.
    @@ -6524,31 +6532,31 @@

    Library MSetsExtra.MSetIntervals

      Qed.

    -  Lemma min_elt_spec1 : choose s = Some x → In x s.
    +  Lemma min_elt_spec1 : choose s = Some x → In x s.
      Proof. exact (Raw.min_elt_spec1 _ _ _). Qed.
    -  Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
    +  Lemma min_elt_spec2 : min_elt s = Some x → In y s → ¬ E.lt y x.
      Proof. exact (Raw.min_elt_spec2 _ _ _ _). Qed.
    -  Lemma min_elt_spec3 : choose s = None → Empty s.
    +  Lemma min_elt_spec3 : choose s = None → Empty s.
      Proof. exact (Raw.min_elt_spec3 _). Qed.

    -  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
    +  Lemma max_elt_spec1 : max_elt s = Some x → In x s.
      Proof. exact (Raw.max_elt_spec1 _ _ _). Qed.
    -  Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
    +  Lemma max_elt_spec2 : max_elt s = Some x → In y s → ¬ E.lt x y.
      Proof. exact (Raw.max_elt_spec2 _ _ _ _). Qed.
    -  Lemma max_elt_spec3 : max_elt s = None → Empty s.
    +  Lemma max_elt_spec3 : max_elt s = None → Empty s.
      Proof. exact (Raw.max_elt_spec3 _). Qed.

    -  Lemma compare_spec : CompSpec eq lt s s' (compare s s').
    +  Lemma compare_spec : CompSpec eq lt s s' (compare s s').
      Proof.
        generalize s s'.
        move ⇒ [s1 H_ok_s1] [s2 H_ok_s2].
        move : (Raw.compare_spec s1 s2).
    -    rewrite /CompSpec /eq /Equal /In /lt /compare /=.
    -    replace (∀ a : elt, Raw.In a s1 ↔ Raw.In a s2) with
    +    rewrite /CompSpec /eq /Equal /In /lt /compare /=.
    +    replace (∀ a : elt, Raw.In a s1 ↔ Raw.In a s2) with
        (Raw.Equal s1 s2) by done.
    -    suff H_eq : (Raw.Equal s1 s2) ↔ (s1 = s2). {
    +    suff H_eq : (Raw.Equal s1 s2) ↔ (s1 = s2). {
          move ⇒ [] H; constructor ⇒ //.
          by rewrite H_eq.
        }
    @@ -6565,7 +6573,7 @@

    Library MSetsExtra.MSetIntervals

    -

    Instantiations

    +

    Instantiations

    @@ -6573,131 +6581,131 @@

    Library MSetsExtra.MSetIntervals

    It remains to provide instantiations for commonly used datatypes.
    -

    Z

    +

    Z


    -Module ElementEncodeZ <: ElementEncode.
    -  Module E := Z.
    +Module ElementEncodeZ <: ElementEncode.
    +  Module E := Z.

    -  Definition encode (z : Z) := z.
    -  Definition decode (z : Z) := z.
    +  Definition encode (z : Z) := z.
    +  Definition decode (z : Z) := z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
      Proof. by []. Qed.

    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
      Proof. by []. Qed.

    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
      Proof. by []. Qed.

    End ElementEncodeZ.

    -Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.
    +Module MSetIntervalsZ <: SetsOn Z := MSetIntervals ElementEncodeZ.

    -

    N

    +

    N


    -Module ElementEncodeN <: ElementEncode.
    -  Module E := N.
    +Module ElementEncodeN <: ElementEncode.
    +  Module E := N.

    -  Definition encode (n : N) := Z.of_N n.
    -  Definition decode (z : Z) := Z.to_N z.
    +  Definition encode (n : N) := Z.of_N n.
    +  Definition decode (z : Z) := Z.to_N z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
      Proof.
        intros e.
    -    rewrite /encode /decode N2Z.id //.
    +    rewrite /encode /decode N2Z.id //.
      Qed.

    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
      Proof.
        intros e1 e2.
    -    rewrite /encode /Z.eq N2Z.inj_iff /E.eq //.
    +    rewrite /encode /Z.eq N2Z.inj_iff /E.eq //.
      Qed.

    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
      Proof.
        intros e1 e2.
    -    rewrite /encode -N2Z.inj_lt //.
    +    rewrite /encode -N2Z.inj_lt //.
      Qed.

    End ElementEncodeN.

    -Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.
    +Module MSetIntervalsN <: SetsOn N := MSetIntervals ElementEncodeN.

    -

    nat

    +

    nat

    -Module ElementEncodeNat <: ElementEncode.
    -  Module E := Nat.
    +Module ElementEncodeNat <: ElementEncode.
    +  Module E := Nat.

    -  Definition encode (n : nat) := Z.of_nat n.
    -  Definition decode (z : Z) := Z.to_nat z.
    +  Definition encode (n : nat) := Z.of_nat n.
    +  Definition decode (z : Z) := Z.to_nat z.

    -  Lemma decode_encode_ok: ∀ (e : E.t),
    -    decode (encode e) = e.
    +  Lemma decode_encode_ok: ∀ (e : E.t),
    +    decode (encode e) = e.
      Proof.
        intros e.
    -    rewrite /encode /decode Nat2Z.id //.
    +    rewrite /encode /decode Nat2Z.id //.
      Qed.

    -  Lemma encode_eq : ∀ (e1 e2 : E.t),
    -    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
    +  Lemma encode_eq : ∀ (e1 e2 : E.t),
    +    (Z.eq (encode e1) (encode e2)) ↔ E.eq e1 e2.
      Proof.
        intros e1 e2.
    -    rewrite /encode /Z.eq Nat2Z.inj_iff /E.eq //.
    +    rewrite /encode /Z.eq Nat2Z.inj_iff /E.eq //.
      Qed.

    -  Lemma encode_lt : ∀ (e1 e2 : E.t),
    -    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
    +  Lemma encode_lt : ∀ (e1 e2 : E.t),
    +    (Z.lt (encode e1) (encode e2)) ↔ E.lt e1 e2.
      Proof.
        intros e1 e2.
    -    rewrite /encode -Nat2Z.inj_lt //.
    +    rewrite /encode -Nat2Z.inj_lt //.
      Qed.

    End ElementEncodeNat.

    -Module MSetIntervalsNat <: SetsOn Nat := MSetIntervals ElementEncodeNat.
    +Module MSetIntervalsNat <: SetsOn Nat := MSetIntervals ElementEncodeNat.

    diff --git a/html/MSetsExtra.MSetListWithDups.html b/html/MSetsExtra.MSetListWithDups.html index 26bd69f..4b0ff38 100644 --- a/html/MSetsExtra.MSetListWithDups.html +++ b/html/MSetsExtra.MSetListWithDups.html @@ -24,7 +24,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Weak sets implemented as lists with duplicates

    +

    Weak sets implemented as lists with duplicates

    @@ -45,17 +45,17 @@

    Library MSetsExtra.MSetListWithDups


    -Require Export MSetInterface.
    +Require Export MSetInterface.
    Require Import mathcomp.ssreflect.ssreflect.
    -Require Import List OrdersFacts OrdersLists.
    -Require Import Sorting Permutation.
    +Require Import List OrdersFacts OrdersLists.
    +Require Import Sorting Permutation.
    Require Import MSetWithDups.

    -

    Removing duplicates from sorted lists

    +

    Removing duplicates from sorted lists

    @@ -72,7 +72,7 @@

    Library MSetsExtra.MSetListWithDups

    duplicates.
    -Module RemoveDupsFromSorted (Import X:OrderedType).
    +Module RemoveDupsFromSorted (Import X:OrderedType).

    @@ -81,23 +81,23 @@

    Library MSetsExtra.MSetListWithDups

    First, we need some infrastructure for our ordered type
    -  Module Import MX := OrderedTypeFacts X.
    +  Module Import MX := OrderedTypeFacts X.

    -  Module Import XTotalLeBool <: TotalLeBool.
    -    Definition t := X.t.
    -    Definition leb x y :=
    -      match X.compare x y with
    -        | Lt ⇒ true
    -        | Eq ⇒ true
    -        | Gt ⇒ false
    +  Module Import XTotalLeBool <: TotalLeBool.
    +    Definition t := X.t.
    +    Definition leb x y :=
    +      match X.compare x y with
    +        | Lt ⇒ true
    +        | Eq ⇒ true
    +        | Gt ⇒ false
          end.

    -    Infix "<=?" := leb (at level 35).
    +    Infix "<=?" := leb (at level 35).

    -    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).
    +    Theorem leb_total : ∀ (a1 a2 : t), (a1 <=? a2 = true) ∨ (a2 <=? a1 = true).
        Proof.
          intros a1 a2.
          unfold leb.
    @@ -106,11 +106,11 @@

    Library MSetsExtra.MSetListWithDups

        Qed.

    -    Definition le x y := (leb x y = true).
    +    Definition le x y := (leb x y = true).
      End XTotalLeBool.

    -  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.
    +  Lemma eqb_eq_alt : ∀ x y, eqb x y = true ↔ eq x y.
      Proof.
        intros x y.
        rewrite eqb_alt -compare_eq_iff.
    @@ -124,22 +124,22 @@

    Library MSetsExtra.MSetListWithDups

    Now we can define our main function
    -  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
    -    match l with
    -    | nil ⇒ List.rev' acc
    -    | x :: xs ⇒
    +  Fixpoint remove_dups_from_sortedA_aux (acc : list t) (l : list t) : list t :=
    +    match l with
    +    | nil ⇒ List.rev' acc
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ List.rev' (x :: acc)
    -       | y :: ys ⇒
    -           if eqb x y then
    -             remove_dups_from_sortedA_aux acc xs
    -           else
    -             remove_dups_from_sortedA_aux (x::acc) xs
    +       | nil ⇒ List.rev' (x :: acc)
    +       | y :: ys ⇒
    +           if eqb x y then
    +             remove_dups_from_sortedA_aux acc xs
    +           else
    +             remove_dups_from_sortedA_aux (x::acc) xs
           end
        end.

    -  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).
    +  Definition remove_dups_from_sortedA := remove_dups_from_sortedA_aux (nil : list t).

    @@ -148,40 +148,40 @@

    Library MSetsExtra.MSetListWithDups

    We can prove some technical lemmata
    -  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    -    remove_dups_from_sortedA_aux acc l =
    -    List.rev acc ++ (remove_dups_from_sortedA l).
    +  Lemma remove_dups_from_sortedA_aux_alt : ∀ (l : list X.t) acc,
    +    remove_dups_from_sortedA_aux acc l =
    +    List.rev acc ++ (remove_dups_from_sortedA l).
      Proof.
        unfold remove_dups_from_sortedA.
        induction l as [| x xs IH] ⇒ acc. {
    -      rewrite /remove_dups_from_sortedA_aux /rev' -!rev_alt /= app_nil_r //.
    +      rewrite /remove_dups_from_sortedA_aux /rev' -!rev_alt /= app_nil_r //.
        } {
          rewrite /=.
          case_eq xs. {
    -        rewrite /rev' -!rev_alt //.
    +        rewrite /rev' -!rev_alt //.
          } {
            move ⇒ y ys H_xs_eq.
    -        rewrite -!H_xs_eq !(IH acc) !(IH (x :: acc)) (IH (x::nil)).
    +        rewrite -!H_xs_eq !(IH acc) !(IH (x :: acc)) (IH (x::nil)).
            case (eqb x y) ⇒ //.
    -        rewrite /= -app_assoc //.
    +        rewrite /= -app_assoc //.
          }
        }
      Qed.

    -  Lemma remove_dups_from_sortedA_alt :
    -    âˆ€ (l : list t),
    -    remove_dups_from_sortedA l =
    -    match l with
    -    | nil ⇒ nil
    -    | x :: xs ⇒
    +  Lemma remove_dups_from_sortedA_alt :
    +    âˆ€ (l : list t),
    +    remove_dups_from_sortedA l =
    +    match l with
    +    | nil ⇒ nil
    +    | x :: xs ⇒
           match xs with
    -       | nil ⇒ l
    -       | y :: ys ⇒
    -           if eqb x y then
    +       | nil ⇒ l
    +       | y :: ys ⇒
    +           if eqb x y then
                 remove_dups_from_sortedA xs
    -           else
    -             x :: remove_dups_from_sortedA xs
    +           else
    +             x :: remove_dups_from_sortedA xs
           end
        end.
      Proof.
    @@ -189,7 +189,7 @@

    Library MSetsExtra.MSetListWithDups

          done.
        } {
          intros x xs.
    -      rewrite /remove_dups_from_sortedA /= /rev' /=.
    +      rewrite /remove_dups_from_sortedA /= /rev' /=.
          case xs ⇒ //.
          move ⇒ y ys.
          rewrite !remove_dups_from_sortedA_aux_alt /= //.
    @@ -197,24 +197,24 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma remove_dups_from_sortedA_hd :
    -      âˆ€ x xs,
    -      âˆƒ (x':t) xs',
    -        remove_dups_from_sortedA (x :: xs) =
    -        (x' :: xs') ∧ (eqb x x' = true).
    +  Lemma remove_dups_from_sortedA_hd :
    +      âˆ€ x xs,
    +      âˆƒ (x':t) xs',
    +        remove_dups_from_sortedA (x :: xs) =
    +        (x' :: xs') ∧ (eqb x x' = true).
      Proof.
        intros x xs.
        move : x;
        induction xs as [| y ys IH] ⇒ x. {
          rewrite remove_dups_from_sortedA_alt.
    -      âˆƒ x, nil.
    +      âˆƒ x, nil.
          split; first reflexivity.
          rewrite eqb_alt compare_refl //.
        } {
          rewrite remove_dups_from_sortedA_alt.
          case_eq (eqb x y); last first. {
            move ⇒ _.
    -        âˆƒ x, (remove_dups_from_sortedA (y :: ys)).
    +        âˆƒ x, (remove_dups_from_sortedA (y :: ys)).
            split; first reflexivity.
            rewrite eqb_alt compare_refl //.
          } {
    @@ -236,14 +236,14 @@

    Library MSetsExtra.MSetListWithDups

    Finally we get our main result for removing duplicates from sorted lists
    -  Lemma remove_dups_from_sortedA_spec :
    -    âˆ€ (l : list t),
    -      Sorted le l →
    -      let l' := remove_dups_from_sortedA l in (
    +  Lemma remove_dups_from_sortedA_spec :
    +    âˆ€ (l : list t),
    +      Sorted le l →
    +      let l' := remove_dups_from_sortedA l in (
        
    -      Sorted lt l' ∧
    -      NoDupA eq l' ∧
    -      (∀ x, InA eq x l ↔ InA eq x l')).
    +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
      Proof.
        simpl.
        induction l as [| x xs IH]. {
    @@ -255,21 +255,21 @@

    Library MSetsExtra.MSetListWithDups

          case xs ⇒ {xs}. {
            move ⇒ _.
            split; last split. {
    -          apply Sorted_cons ⇒ //.
    +          apply Sorted_cons ⇒ //.
            } {
    -          apply NoDupA_singleton.
    +          apply NoDupA_singleton.
            } {
              done.
            }
          } {
            move ⇒ y ys IH H_sorted_x_y_ys.
    -        apply Sorted_inv in H_sorted_x_y_ys as [H_sorted_y_ys H_hd_rel].
    -        apply HdRel_inv in H_hd_rel.
    +        apply Sorted_inv in H_sorted_x_y_ys as [H_sorted_y_ys H_hd_rel].
    +        apply HdRel_inv in H_hd_rel.

    -        have : ∃ y' ys',
    -          remove_dups_from_sortedA (y :: ys) = y' :: ys' ∧
    -          eqb y y' = true. {
    +        have : ∃ y' ys',
    +          remove_dups_from_sortedA (y :: ys) = y' :: ys' ∧
    +          eqb y y' = true. {
              apply remove_dups_from_sortedA_hd ⇒ //.
            }
            move ⇒ [y'] [ys'] [H_yys'_intro] /eqb_eq_alt H_eq_y_y'.
    @@ -285,22 +285,22 @@

    Library MSetsExtra.MSetListWithDups

              split ⇒ //.
              split ⇒ //.
              move ⇒ x'.
    -          rewrite InA_cons IH3.
    +          rewrite InA_cons IH3.
              split; last tauto.
              move ⇒ [] //.
              move ⇒ H_eq_x'_x.
    -          apply InA_cons_hd.
    +          apply InA_cons_hd.
              apply eq_trans with (y := x) ⇒ //.
              apply eq_trans with (y := y) ⇒ //.
            }
            move ⇒ H_neqb_x_y.

    -        have H_sorted : Sorted lt (x :: y' :: ys'). {
    -          apply Sorted_cons ⇒ //.
    -          apply HdRel_cons.
    +        have H_sorted : Sorted lt (x :: y' :: ys'). {
    +          apply Sorted_cons ⇒ //.
    +          apply HdRel_cons.
              rewrite -compare_lt_iff.
    -          suff : (compare x y = Lt). {
    +          suff : (compare x y = Lt). {
                setoid_rewrite compare_compat; eauto;
                  apply eq_refl.
              }
    @@ -311,23 +311,23 @@

    Library MSetsExtra.MSetListWithDups

            split; last split. {
              assumption.
            } {
    -          apply NoDupA_cons ⇒ //.
    +          apply NoDupA_cons ⇒ //.

    -          move ⇒ /InA_alt [x'] [H_eq_xx'] H_in_x'.
    -          have : Forall (lt x) (y' :: ys'). {
    -            apply Sorted_extends ⇒ //.
    -            rewrite /Relations_1.Transitive.
    +          move ⇒ /InA_alt [x'] [H_eq_xx'] H_in_x'.
    +          have : Forall (lt x) (y' :: ys'). {
    +            apply Sorted_extends ⇒ //.
    +            rewrite /Relations_1.Transitive.
                by apply lt_trans.
              }
    -          rewrite Forall_forall ⇒ H_forall.
    +          rewrite Forall_forall ⇒ H_forall.
              move : (H_forall _ H_in_x') ⇒ {H_forall}.
              move : H_eq_xx'.
              rewrite -compare_lt_iff -compare_eq_iff.
              move ⇒ → //.
            } {
              move ⇒ x0.
    -          rewrite !(InA_cons eq x0 x) IH3 //.
    +          rewrite !(InA_cons eq x0 x) IH3 //.
            }
          }
        }
    @@ -340,26 +340,26 @@

    Library MSetsExtra.MSetListWithDups

    Next, we combine it with sorting
    -  Module Import XSort := Sort XTotalLeBool.
    +  Module Import XSort := Sort XTotalLeBool.

    -  Definition remove_dups_by_sortingA (l : list t) : list t :=
    -    remove_dups_from_sortedA (XSort.sort l).
    +  Definition remove_dups_by_sortingA (l : list t) : list t :=
    +    remove_dups_from_sortedA (XSort.sort l).

    -  Lemma remove_dups_by_sortingA_spec :
    -    âˆ€ (l : list t),
    -      let l' := remove_dups_by_sortingA l in (
    +  Lemma remove_dups_by_sortingA_spec :
    +    âˆ€ (l : list t),
    +      let l' := remove_dups_by_sortingA l in (
        
    -      Sorted lt l' ∧
    -      NoDupA eq l' ∧
    -      (∀ x, InA eq x l ↔ InA eq x l')).
    +      Sorted lt l' ∧
    +      NoDupA eq l' ∧
    +      (∀ x, InA eq x l ↔ InA eq x l')).
      Proof.
        intro l.

    -    suff : (∀ x : X.t, InA eq x (sort l) ↔ InA eq x l) ∧
    -           Sorted le (sort l). {
    +    suff : (∀ x : X.t, InA eq x (sort l) ↔ InA eq x l) ∧
    +           Sorted le (sort l). {
          
          unfold remove_dups_by_sortingA.
          move : (remove_dups_from_sortedA_spec (sort l)).
    @@ -374,20 +374,19 @@

    Library MSetsExtra.MSetListWithDups

        }

        split. {
    -      have H_in_sort : ∀ x, List.In x (XSort.sort l) ↔ List.In x l. {
    +      have H_in_sort : ∀ x, List.In x (XSort.sort l) ↔ List.In x l. {
            intros x.
            have H_perm := (XSort.Permuted_sort l).
    -        split; apply Permutation_in ⇒ //.
    -        by apply Permutation_sym.
    +        split; apply Permutation_in ⇒ //.
    +        by apply Permutation_sym.
          }

          intros x.
    -      rewrite !InA_alt.
    +      rewrite !InA_alt.
          setoid_rewrite H_in_sort ⇒ //.
        } {
    -
    -      move : (LocallySorted_sort l).
    -      rewrite /is_true /le /leb //.
    +      move : (Sorted_sort l).
    +      rewrite /is_true /le /leb //.
        }
      Qed.
    @@ -398,7 +397,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Operations Module

    +

    Operations Module

    @@ -410,113 +409,113 @@

    Library MSetsExtra.MSetListWithDups


    -Module Ops (X:OrderedType) <: WOps X.
    +Module Ops (X:OrderedType) <: WOps X.

    -  Module RDFS := RemoveDupsFromSorted X.
    -  Module Import MX := OrderedTypeFacts X.
    +  Module RDFS := RemoveDupsFromSorted X.
    +  Module Import MX := OrderedTypeFacts X.

    -  Definition elt := X.t.
    -  Definition t := list elt.
    +  Definition elt := X.t.
    +  Definition t := list elt.

    -  Definition empty : t := nil.
    +  Definition empty : t := nil.

    -  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    -  Fixpoint mem (x : elt) (s : t) : bool :=
    -    match s with
    -    | nil ⇒ false
    -    | y :: l ⇒
    -           match X.compare x y with
    -               Eq ⇒ true
    -             | _ ⇒ mem x l
    +  Definition is_empty (l : t) := match l with nil ⇒ true | _ ⇒ false end.
    +  Fixpoint mem (x : elt) (s : t) : bool :=
    +    match s with
    +    | nil ⇒ false
    +    | y :: l ⇒
    +           match X.compare x y with
    +               Eq ⇒ true
    +             | _ ⇒ mem x l
               end
        end.

    -  Definition add x (s : t) := x :: s.
    -  Definition singleton (x : elt) := x :: nil.
    +  Definition add x (s : t) := x :: s.
    +  Definition singleton (x : elt) := x :: nil.

    -  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
    -    match s with
    -       nil ⇒ acc
    -     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
    +  Fixpoint rev_filter_aux acc (f : elt → bool) s :=
    +    match s with
    +       nil ⇒ acc
    +     | (x :: xs) ⇒ rev_filter_aux (if (f x) then (x :: acc) else acc) f xs
        end.
    -  Definition rev_filter := rev_filter_aux nil.
    +  Definition rev_filter := rev_filter_aux nil.

    -  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.
    +  Definition filter (f : elt → bool) (s : t) : t := rev_filter f s.

    -  Definition remove x s :=
    -    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.
    +  Definition remove x s :=
    +    rev_filter (fun y ⇒ match X.compare x y with Eq ⇒ false | _ ⇒ true end) s.

    -  Definition union (s1 s2 : t) : t :=
    -    List.rev_append s2 s1.
    +  Definition union (s1 s2 : t) : t :=
    +    List.rev_append s2 s1.

    -  Definition inter (s1 s2 : t) : t :=
    -    rev_filter (fun y ⇒ mem y s2) s1.
    +  Definition inter (s1 s2 : t) : t :=
    +    rev_filter (fun y ⇒ mem y s2) s1.

    -  Definition elements (x : t) : list elt := x.
    +  Definition elements (x : t) : list elt := x.

    -  Definition elements_dist (x : t) : list elt :=
    -    RDFS.remove_dups_by_sortingA x.
    +  Definition elements_dist (x : t) : list elt :=
    +    RDFS.remove_dups_by_sortingA x.

    -  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    -    fold_left (flip f) (elements s) i.
    +  Definition fold {B : Type} (f : elt → B → B) (s : t) (i : B) : B :=
    +    fold_left (flip f) (elements s) i.

    -  Definition diff (s s' : t) : t := fold remove s' s.
    +  Definition diff (s s' : t) : t := fold remove s' s.

    -  Definition subset (s s' : t) : bool :=
    -    List.forallb (fun x ⇒ mem x s') s.
    +  Definition subset (s s' : t) : bool :=
    +    List.forallb (fun x ⇒ mem x s') s.

    -  Definition equal (s s' : t) : bool := andb (subset s s') (subset s' s).
    +  Definition equal (s s' : t) : bool := andb (subset s s') (subset s' s).

    -  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
    -    match s with
    -    | nil ⇒ true
    -    | x :: l ⇒ if f x then for_all f l else false
    +  Fixpoint for_all (f : elt → bool) (s : t) : bool :=
    +    match s with
    +    | nil ⇒ true
    +    | x :: l ⇒ if f x then for_all f l else false
        end.

    -  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
    -    match s with
    -    | nil ⇒ false
    -    | x :: l ⇒ if f x then true else exists_ f l
    +  Fixpoint exists_ (f : elt → bool) (s : t) : bool :=
    +    match s with
    +    | nil ⇒ false
    +    | x :: l ⇒ if f x then true else exists_ f l
        end.

    -  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
    -    match s with
    -    | nil ⇒ (a1, a2)
    -    | x :: l ⇒
    -        if f x then partition_aux (x :: a1) a2 f l else
    -                    partition_aux a1 (x :: a2) f l
    +  Fixpoint partition_aux (a1 a2 : t) (f : elt → bool) (s : t) : t × t :=
    +    match s with
    +    | nil ⇒ (a1, a2)
    +    | x :: l ⇒
    +        if f x then partition_aux (x :: a1) a2 f l else
    +                    partition_aux a1 (x :: a2) f l
        end.

    -  Definition partition := partition_aux nil nil.
    +  Definition partition := partition_aux nil nil.

    -  Definition cardinal (s : t) : nat := length (elements_dist s).
    +  Definition cardinal (s : t) : nat := length (elements_dist s).

    -  Definition choose (s : t) : option elt :=
    -     match s with
    -      | nil ⇒ None
    -      | x::_ ⇒ Some x
    +  Definition choose (s : t) : option elt :=
    +     match s with
    +      | nil ⇒ None
    +      | x::_ ⇒ Some x
         end.

    @@ -526,7 +525,7 @@

    Library MSetsExtra.MSetListWithDups

    -

    Main Module

    +

    Main Module

    @@ -540,38 +539,38 @@

    Library MSetsExtra.MSetListWithDups

    -Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
    +Module Make (E:OrderedType) <: WSetsOnWithDupsExtra E.
      Include Ops E.
    -  Import MX.
    +  Import MX.

    -

    Proofs of set operation specifications.

    +

    Proofs of set operation specifications.

    Logical predicates
    -  Definition In x (s : t) := SetoidList.InA E.eq x s.
    +  Definition In x (s : t) := SetoidList.InA E.eq x s.

    -  Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +  #[local] Instance In_compat : Proper (E.eq==>eq==>iff) In.
      Proof. repeat red. intros. rewrite H H0. auto. Qed.

    -  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

    -  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    -  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).
    +  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    +  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Lemma eq_equiv : Equivalence eq.
    +  Definition eq : t → t → Prop := Equal.
    +  Lemma eq_equiv : Equivalence eq.
      Proof.
        constructor. {
          done.
    @@ -593,52 +592,52 @@

    Library MSetsExtra.MSetListWithDups


    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).

    -  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
    +  Lemma mem_spec : ∀ s x, mem x s = true ↔ In x s.
      Proof.
        induction s as [| y s' IH]. {
          move ⇒ x.
    -      rewrite /= /In InA_nil.
    +      rewrite /= /In InA_nil.
          split ⇒ //.
        } {
          move ⇒ x.
    -      rewrite /= /In InA_cons.
    +      rewrite /= /In InA_cons.
          move : (MX.compare_eq_iff x y).
          case (E.compare x y). {
            tauto.
          } {
    -        rewrite IH; intuition; inversion H.
    +        rewrite IH; intuition; inversion H1.
          } {
    -        rewrite IH; intuition; inversion H.
    +        rewrite IH; intuition; inversion H1.
          }
        }
     Qed.

    -  Lemma subset_spec : ∀ s s', subset s s' = true ↔ s[<=]s'.
    +  Lemma subset_spec : ∀ s s', subset s s' = true ↔ s[<=]s'.
      Proof.
        intros s s'.
    -    rewrite /subset forallb_forall /Subset /In.
    +    rewrite /subset forallb_forall /Subset /In.
        split. {
    -      move ⇒ H z /InA_alt [] x [H_z_eq] H_in.
    +      move ⇒ H z /InA_alt [] x [H_z_eq] H_in.
          move : (H _ H_in).
          rewrite mem_spec.
          setoid_replace z with x ⇒ //.
        } {
          move ⇒ H z H_in.
          rewrite mem_spec.
    -      apply H, In_InA ⇒ //.
    +      apply H, In_InA ⇒ //.
          apply E.eq_equiv.
        }
      Qed.

    -  Lemma equal_spec : ∀ s s', equal s s' = true ↔ s[=]s'.
    +  Lemma equal_spec : ∀ s s', equal s s' = true ↔ s[=]s'.
      Proof.
        intros s s'.
    -    rewrite /Equal /equal Bool.andb_true_iff !subset_spec /Subset.
    +    rewrite /Equal /equal Bool.andb_true_iff !subset_spec /Subset.
        split. {
          move ⇒ [H1 H2] a.
          split.
    @@ -651,70 +650,65 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.
    +  Lemma eq_dec : ∀ x y : t, {eq x y} + {¬ eq x y}.
      Proof.
        intros x y.
    -    change ({Equal x y}+{¬Equal x y}).
    +    change ({Equal x y}+{¬Equal x y}).
        destruct (equal x y) eqn:H; [left|right];
         rewrite <- equal_spec; congruence.
      Qed.

    -  Lemma empty_spec : Empty empty.
    -  Proof. rewrite /Empty /empty /In. move ⇒ a /InA_nil //. Qed.
    +  Lemma empty_spec : Empty empty.
    +  Proof. rewrite /Empty /empty /In. move ⇒ a /InA_nil //. Qed.

    -  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
    +  Lemma is_empty_spec : ∀ s, is_empty s = true ↔ Empty s.
      Proof.
        rewrite /is_empty /Empty /In.
        case; split ⇒ //. {
          move ⇒ _ a.
    -      rewrite InA_nil //.
    +      rewrite InA_nil //.
        } {
          move ⇒ H; contradiction (H a).
    -      apply InA_cons_hd.
    -      apply Equivalence_Reflexive.
    +      apply InA_cons_hd.
    +      apply Equivalence_Reflexive.
        }
      Qed.

    -  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Lemma add_spec : ∀ s x y, In y (add x s) ↔ E.eq y x ∨ In y s.
      Proof.
        intros s x y.
    -    rewrite /add /In InA_cons //.
    +    rewrite /add /In InA_cons //.
      Qed.

    -  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
    +  Lemma singleton_spec : ∀ x y, In y (singleton x) ↔ E.eq y x.
      Proof.
        intros x y.
    -    rewrite /singleton /In InA_cons.
    +    rewrite /singleton /In InA_cons.
        split. {
    -      move ⇒ [] // /InA_nil //.
    +      move ⇒ [] // /InA_nil //.
        } {
          by left.
        }
      Qed.

    -  Hint Resolve (@Equivalence_Reflexive _ _ E.eq_equiv).
    -  Hint Immediate (@Equivalence_Symmetric _ _ E.eq_equiv).
    -  Hint Resolve (@Equivalence_Transitive _ _ E.eq_equiv).
    - -
    -  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    -    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
    +  Lemma rev_filter_aux_spec : ∀ s acc x f, compatb f →
    +    (In x (rev_filter_aux acc f s) ↔ (In x s ∧ f x = true) ∨ (In x acc)).
      Proof.
        intros s acc x f H_compat.
        move : x acc.
        induction s as [| y s' IH]. {
          intros x acc.
    -      rewrite /rev_filter_aux /In InA_nil.
    +      rewrite /rev_filter_aux /In InA_nil.
          tauto.
        } {
          intros x acc.
          rewrite /= IH /In.
    -      case_eq (f y) ⇒ H_fy; rewrite !InA_cons; intuition. {
    +      case_eq (f y) ⇒ H_fy; rewrite !InA_cons; intuition. {
            left.
            split; first by left.
            setoid_replace x with y ⇒ //.
    @@ -727,30 +721,30 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma filter_spec : ∀ s x f, compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Lemma filter_spec : ∀ s x f, compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
      Proof.
        intros s x f H_compat.
    -    rewrite /filter /rev_filter rev_filter_aux_spec /In InA_nil.
    +    rewrite /filter /rev_filter rev_filter_aux_spec /In InA_nil.
        tauto.
      Qed.

    -  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Lemma remove_spec : ∀ s x y, In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
      Proof.
        intros s x y.
        rewrite /remove /rev_filter.
    -    have H_compat : compatb ((fun y0 : elt ⇒
    -         match E.compare x y0 with
    -         | Eq ⇒ false
    -         | _ ⇒ true
    +    have H_compat : compatb ((fun y0 : elt ⇒
    +         match E.compare x y0 with
    +         | Eq ⇒ false
    +         | _ ⇒ true
             end)). {
          repeat red; intros.
          setoid_replace x0 with y0 ⇒ //.
        }
    -    rewrite rev_filter_aux_spec /In InA_nil.
    -    have → : (E.eq y x ↔ E.eq x y). {
    -      split; move ⇒ ?; by apply Equivalence_Symmetric.
    +    rewrite rev_filter_aux_spec /In InA_nil.
    +    have → : (E.eq y x ↔ E.eq x y). {
    +      split; move ⇒ ?; by apply Equivalence_Symmetric.
        }
        rewrite -compare_eq_iff.
        case (E.compare x y). {
    @@ -765,74 +759,74 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma union_spec : ∀ s s' x, In x (union s s') ↔ In x s ∨ In x s'.
    +  Lemma union_spec : ∀ s s' x, In x (union s s') ↔ In x s ∨ In x s'.
      Proof.
        intros s s' x.
    -    rewrite /union /In rev_append_rev InA_app_iff InA_rev; tauto.
    +    rewrite /union /In rev_append_rev InA_app_iff InA_rev; tauto.
      Qed.

    -  Lemma inter_spec : ∀ s s' x, In x (inter s s') ↔ In x s ∧ In x s'.
    +  Lemma inter_spec : ∀ s s' x, In x (inter s s') ↔ In x s ∧ In x s'.
      Proof.
        intros s s' x.
    -    have H_compat : compatb (fun y : elt ⇒ mem y s'). {
    +    have H_compat : compatb (fun y : elt ⇒ mem y s'). {
          repeat red; intros.
    -      suff : ( mem x0 s' = true ↔ mem y s' = true). {
    +      suff : ( mem x0 s' = true ↔ mem y s' = true). {
            case (mem y s'), (mem x0 s'); intuition.
          }
          rewrite !mem_spec /In.
          setoid_replace x0 with y ⇒ //.
        }
    -    rewrite /inter rev_filter_aux_spec mem_spec /In InA_nil.
    +    rewrite /inter rev_filter_aux_spec mem_spec /In InA_nil.
        tauto.
      Qed.

    -  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    +  Lemma fold_spec : ∀ s (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
      Proof. done. Qed.

    -  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
    +  Lemma elements_spec1 : ∀ s x, InA E.eq x (elements s) ↔ In x s.
      Proof.
        intros s x.
        rewrite /elements /In //.
      Qed.

    -  Lemma diff_spec : ∀ s s' x, In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Lemma diff_spec : ∀ s s' x, In x (diff s s') ↔ In x s ∧ ¬In x s'.
      Proof.
        intros s s' x.
        rewrite /diff fold_spec -(elements_spec1 s').
        move : s.
        induction (elements s') as [| y ys IH] ⇒ s. {
    -      rewrite InA_nil /=; tauto.
    +      rewrite InA_nil /=; tauto.
        } {
    -      rewrite /= IH InA_cons /flip remove_spec.
    +      rewrite /= IH InA_cons /flip remove_spec.
          tauto.
        }
      Qed.

    -  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    +  Lemma cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
      Proof. rewrite /cardinal //. Qed.

    -  Lemma for_all_spec : ∀ s f, compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Lemma for_all_spec : ∀ s f, compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
      Proof.
        intros s f H_compat.
        rewrite /For_all.
        induction s as [| x xs IH]. {
          rewrite /= /In.
          split ⇒ //.
    -      move ⇒ _ x /InA_nil //.
    +      move ⇒ _ x /InA_nil //.
        } {
          rewrite /=.
          case_eq (f x) ⇒ H_fx. {
            rewrite IH.
            split. {
    -          move ⇒ H x' /InA_cons []. {
    +          move ⇒ H x' /InA_cons []. {
                move ⇒ → //.
              } {
                apply H.
    @@ -840,50 +834,50 @@

    Library MSetsExtra.MSetListWithDups

            } {
              move ⇒ H x' H_in.
              apply H.
    -          apply InA_cons.
    +          apply InA_cons.
              by right.
            }
          } {
            split ⇒ //.
            move ⇒ H.
    -        suff : f x = true. {
    +        suff : f x = true. {
              rewrite H_fx //.
            }
            apply H.
    -        apply InA_cons_hd.
    -        done.
    +        apply InA_cons_hd.
    +        apply (@Equivalence_Reflexive _ _ E.eq_equiv).
          }
        }
      Qed.

    -  Lemma exists_spec : ∀ s f, compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Lemma exists_spec : ∀ s f, compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
      Proof.
        intros s f H_compat.
        rewrite /Exists.
        induction s as [| x xs IH]. {
          rewrite /= /In.
          split ⇒ //.
    -      move ⇒ [x] [] /InA_nil //.
    +      move ⇒ [x] [] /InA_nil //.
        } {
          rewrite /=.
          case_eq (f x) ⇒ H_fx. {
            split ⇒ // _.
            âˆƒ x.
            split ⇒ //.
    -        apply InA_cons_hd.
    -        done.
    +        apply InA_cons_hd.
    +        apply (@Equivalence_Reflexive _ _ E.eq_equiv).
          } {
            rewrite IH.
            split. {
              move ⇒ [x'] [H_in] H_fx'.
              âˆƒ x'.
              split ⇒ //.
    -          apply InA_cons.
    +          apply InA_cons.
              by right.
            } {
    -          move ⇒ [x'] [] /InA_cons []. {
    +          move ⇒ [x'] [] /InA_cons []. {
                move ⇒ →.
                rewrite H_fx //.
              } {
    @@ -895,8 +889,8 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma partition_aux_spec : ∀ a1 a2 s f,
    -    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
    +  Lemma partition_aux_spec : ∀ a1 a2 s f,
    +    (partition_aux a1 a2 f s = (rev_filter_aux a1 f s, rev_filter_aux a2 (fun x ⇒ negb (f x)) s)).
      Proof.
        move ⇒ a1 a2 s f.
        move : a1 a2.
    @@ -912,40 +906,40 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma partition_spec1 : ∀ s f, compatb f →
    -    fst (partition f s) [=] filter f s.
    +  Lemma partition_spec1 : ∀ s f, compatb f →
    +    fst (partition f s) [=] filter f s.
      Proof.
        move ⇒ s f _.
    -    rewrite /partition partition_aux_spec /fst /filter /rev_filter //.
    +    rewrite /partition partition_aux_spec /fst /filter /rev_filter //.
      Qed.

    -  Lemma partition_spec2 : ∀ s f, compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    +  Lemma partition_spec2 : ∀ s f, compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
      Proof.
        move ⇒ s f _.
    -    rewrite /partition partition_aux_spec /snd /filter /rev_filter //.
    +    rewrite /partition partition_aux_spec /snd /filter /rev_filter //.
      Qed.

    -  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
    +  Lemma choose_spec1 : ∀ s x, choose s = Some x → In x s.
      Proof.
       move ⇒ [] // y s' x [->].
       rewrite /In.
    -   apply InA_cons_hd.
    -   apply Equivalence_Reflexive.
    +   apply InA_cons_hd.
    +   apply Equivalence_Reflexive.
      Qed.

    -  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    -  Proof. move ⇒ [] // _ a. rewrite /In InA_nil //. Qed.
    +  Lemma choose_spec2 : ∀ s, choose s = None → Empty s.
    +  Proof. move ⇒ [] // _ a. rewrite /In InA_nil //. Qed.

    -  Lemma elements_dist_spec_full :
    -    âˆ€ s,
    -      Sorted E.lt (elements_dist s) ∧
    -      NoDupA E.eq (elements_dist s) ∧
    -      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).
    +  Lemma elements_dist_spec_full :
    +    âˆ€ s,
    +      Sorted E.lt (elements_dist s) ∧
    +      NoDupA E.eq (elements_dist s) ∧
    +      (∀ x, InA E.eq x (elements_dist s) ↔ InA E.eq x (elements s)).
      Proof.
        move ⇒ s.
        rewrite /elements_dist /elements.
    @@ -955,12 +949,12 @@

    Library MSetsExtra.MSetListWithDups

      Qed.

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
      Proof. intros; apply elements_dist_spec_full. Qed.

    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
      Proof. intros; apply elements_dist_spec_full. Qed.

    diff --git a/html/MSetsExtra.MSetWithDups.html b/html/MSetsExtra.MSetWithDups.html index 9ba7eed..85666d1 100644 --- a/html/MSetsExtra.MSetWithDups.html +++ b/html/MSetsExtra.MSetWithDups.html @@ -24,7 +24,7 @@

    Library MSetsExtra.MSetWithDups

    -

    Signature for weak sets which may contain duplicates

    +

    Signature for weak sets which may contain duplicates

    @@ -66,14 +66,14 @@

    Library MSetsExtra.MSetWithDups


    -Require Import Coq.MSets.MSetInterface.
    +Require Import Coq.MSets.MSetInterface.
    Require Import mathcomp.ssreflect.ssreflect.

    -

    WSetsOnWithDups

    +

    WSetsOnWithDups

    @@ -91,68 +91,68 @@

    Library MSetsExtra.MSetWithDups

    -Module Type WSetsOnWithDups (E : DecidableType).
    -  Include WOps E.
    +Module Type WSetsOnWithDups (E : DecidableType).
    +  Include WOps E.

    -  Parameter In : elt → t → Prop.
    -  Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.
    +  Parameter In : elt → t → Prop.
    +  #[local] Declare Instance In_compat : Proper (E.eq==>eq==>iff) In.

    -  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    -  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    -  Definition Empty s := ∀ a : elt, ¬ In a s.
    -  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    -  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.
    +  Definition Equal s s' := ∀ a : elt, In a s ↔ In a s'.
    +  Definition Subset s s' := ∀ a : elt, In a s → In a s'.
    +  Definition Empty s := ∀ a : elt, ¬ In a s.
    +  Definition For_all (P : elt → Prop) s := ∀ x, In x s → P x.
    +  Definition Exists (P : elt → Prop) s := ∃ x, In x s ∧ P x.

    -  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    -  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).
    +  Notation "s [=] t" := (Equal s t) (at level 70, no associativity).
    +  Notation "s [<=] t" := (Subset s t) (at level 70, no associativity).

    -  Definition eq : t → t → Prop := Equal.
    -  Include IsEq.
    +  Definition eq : t → t → Prop := Equal.
    +  Include IsEq.
    eq is obviously an equivalence, for subtyping only
    -  Include HasEqDec.
    - -
    -  Section Spec.
    -  Variable s s': t.
    -  Variable x y : elt.
    -  Variable f : elt → bool.
    -  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    - -
    -  Parameter mem_spec : mem x s = true ↔ In x s.
    -  Parameter equal_spec : equal s s' = true ↔ s[=]s'.
    -  Parameter subset_spec : subset s s' = true ↔ s[<=]s'.
    -  Parameter empty_spec : Empty empty.
    -  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    -  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    -  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    -  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    -  Parameter union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    -  Parameter inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    -  Parameter diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    -  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    -    fold f s i = fold_left (flip f) (elements s) i.
    -  Parameter filter_spec : compatb f →
    -    (In x (filter f s) ↔ In x s ∧ f x = true).
    -  Parameter for_all_spec : compatb f →
    -    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    -  Parameter exists_spec : compatb f →
    -    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    -  Parameter partition_spec1 : compatb f →
    -    fst (partition f s) [=] filter f s.
    -  Parameter partition_spec2 : compatb f →
    -    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    -  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    -  Parameter choose_spec1 : choose s = Some x → In x s.
    -  Parameter choose_spec2 : choose s = None → Empty s.
    +  Include HasEqDec.
    + +
    +  Section Spec.
    +  Variable s s': t.
    +  Variable x y : elt.
    +  Variable f : elt → bool.
    +  Notation compatb := (Proper (E.eq==>Logic.eq)) (only parsing).
    + +
    +  Parameter mem_spec : mem x s = true ↔ In x s.
    +  Parameter equal_spec : equal s s' = true ↔ s[=]s'.
    +  Parameter subset_spec : subset s s' = true ↔ s[<=]s'.
    +  Parameter empty_spec : Empty empty.
    +  Parameter is_empty_spec : is_empty s = true ↔ Empty s.
    +  Parameter add_spec : In y (add x s) ↔ E.eq y x ∨ In y s.
    +  Parameter remove_spec : In y (remove x s) ↔ In y s ∧ ¬E.eq y x.
    +  Parameter singleton_spec : In y (singleton x) ↔ E.eq y x.
    +  Parameter union_spec : In x (union s s') ↔ In x s ∨ In x s'.
    +  Parameter inter_spec : In x (inter s s') ↔ In x s ∧ In x s'.
    +  Parameter diff_spec : In x (diff s s') ↔ In x s ∧ ¬In x s'.
    +  Parameter fold_spec : ∀ (A : Type) (i : A) (f : elt → A → A),
    +    fold f s i = fold_left (flip f) (elements s) i.
    +  Parameter filter_spec : compatb f →
    +    (In x (filter f s) ↔ In x s ∧ f x = true).
    +  Parameter for_all_spec : compatb f →
    +    (for_all f s = true ↔ For_all (fun x ⇒ f x = true) s).
    +  Parameter exists_spec : compatb f →
    +    (exists_ f s = true ↔ Exists (fun x ⇒ f x = true) s).
    +  Parameter partition_spec1 : compatb f →
    +    fst (partition f s) [=] filter f s.
    +  Parameter partition_spec2 : compatb f →
    +    snd (partition f s) [=] filter (fun x ⇒ negb (f x)) s.
    +  Parameter elements_spec1 : InA E.eq x (elements s) ↔ In x s.
    +  Parameter choose_spec1 : choose s = Some x → In x s.
    +  Parameter choose_spec2 : choose s = None → Empty s.

      End Spec.
    @@ -164,7 +164,7 @@

    Library MSetsExtra.MSetWithDups

    -

    WSetsOnWithDupsExtra

    +

    WSetsOnWithDupsExtra

    @@ -174,7 +174,7 @@

    Library MSetsExtra.MSetWithDups

    the original behavior of elements.
    -Module Type WSetsOnWithDupsExtra (E : DecidableType).
    +Module Type WSetsOnWithDupsExtra (E : DecidableType).
      Include WSetsOnWithDups E.

    @@ -184,14 +184,14 @@

    Library MSetsExtra.MSetWithDups

    An operation for getting an elements list without duplicates
    -  Parameter elements_dist : t → list elt.
    +  Parameter elements_dist : t → list elt.

    -  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                              InA E.eq x (elements s).
    +  Parameter elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                              InA E.eq x (elements s).

    -  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Parameter elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).

    @@ -200,14 +200,14 @@

    Library MSetsExtra.MSetWithDups

    Cardinality can then be specified with respect to elements_dist.
    -  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    +  Parameter cardinal_spec : ∀ s, cardinal s = length (elements_dist s).
    End WSetsOnWithDupsExtra.

    -

    WSetOn to WSetsOnWithDupsExtra

    +

    WSetOn to WSetsOnWithDupsExtra

    @@ -219,22 +219,22 @@

    Library MSetsExtra.MSetWithDups


    -Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
    +Module WSetsOn_TO_WSetsOnWithDupsExtra (E : DecidableType) (W : WSetsOn E) <:
      WSetsOnWithDupsExtra E.

      Include W.

    -  Definition elements_dist := W.elements.
    +  Definition elements_dist := W.elements.

    -  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    -                                          InA E.eq x (elements s).
    +  Lemma elements_dist_spec1 : ∀ x s, InA E.eq x (elements_dist s) ↔
    +                                          InA E.eq x (elements s).
      Proof. done. Qed.

    -  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
    +  Lemma elements_dist_spec2w : ∀ s, NoDupA E.eq (elements_dist s).
      Proof. apply elements_spec2w. Qed.

    diff --git a/html/coqdoc.css b/html/coqdoc.css index dbc930f..48096e5 100644 --- a/html/coqdoc.css +++ b/html/coqdoc.css @@ -230,6 +230,10 @@ tr.infrulemiddle hr { color: rgb(40%,0%,40%); } +.id[title="binder"] { + color: rgb(40%,0%,40%); +} + .id[type="definition"] { color: rgb(0%,40%,0%); } @@ -327,3 +331,8 @@ ul.doclist { margin-top: 0em; margin-bottom: 0em; } + +.code :target { + border: 2px solid #D4D4D4; + background-color: #e5eecc; +} diff --git a/html/index.html b/html/index.html index eb94472..f5b604f 100644 --- a/html/index.html +++ b/html/index.html @@ -20,34 +20,34 @@ Global Index A -B -C +B +C D E F G H -I +I J K -L +L M N O -P +P Q R S -T +T U V W -X -Y +X +Y Z _ other -(596 entries) +(2110 entries) Notation Index @@ -82,6 +82,38 @@ (5 entries) +Binder Index +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +X +Y +Z +_ +other +(1515 entries) + + Module Index A B @@ -255,7 +287,7 @@ J K L -M +M N O P @@ -271,7 +303,7 @@ Z _ other -(11 entries) +(10 entries) Projection Index @@ -338,7 +370,7 @@ (2 entries) -Instance Index +Section Index A B C @@ -351,26 +383,26 @@ J K L -M +M N O P Q -R +R S T U V -W +W X Y Z _ other -(17 entries) +(3 entries) -Section Index +Instance Index A B C @@ -383,23 +415,23 @@ J K L -M +M N O P Q -R +R S T U V -W +W X Y Z _ other -(3 entries) +(17 entries) Abbreviation Index @@ -500,9 +532,286 @@

    Global Index

    -

    A

    +

    A

    +ab:347 [binder, in MSetsExtra.MSetIntervals]
    +ab:363 [binder, in MSetsExtra.MSetIntervals]
    +acc_f:906 [binder, in MSetsExtra.MSetIntervals]
    +acc_t:905 [binder, in MSetsExtra.MSetIntervals]
    +acc_f:899 [binder, in MSetsExtra.MSetIntervals]
    +acc_t:897 [binder, in MSetsExtra.MSetIntervals]
    +acc_f:200 [binder, in MSetsExtra.MSetIntervals]
    +acc_t:199 [binder, in MSetsExtra.MSetIntervals]
    +acc_f:196 [binder, in MSetsExtra.MSetIntervals]
    +acc_t:195 [binder, in MSetsExtra.MSetIntervals]
    +acc':348 [binder, in MSetsExtra.MSetIntervals]
    +acc':364 [binder, in MSetsExtra.MSetIntervals]
    +acc:106 [binder, in MSetsExtra.MSetIntervals]
    +acc:119 [binder, in MSetsExtra.MSetListWithDups]
    +acc:125 [binder, in MSetsExtra.MSetIntervals]
    +acc:141 [binder, in MSetsExtra.MSetIntervals]
    +acc:147 [binder, in MSetsExtra.MSetIntervals]
    +acc:15 [binder, in MSetsExtra.MSetListWithDups]
    +acc:151 [binder, in MSetsExtra.MSetIntervals]
    +acc:168 [binder, in MSetsExtra.MSetIntervals]
    +acc:172 [binder, in MSetsExtra.MSetIntervals]
    +acc:181 [binder, in MSetsExtra.MSetIntervals]
    +acc:218 [binder, in MSetsExtra.MSetIntervals]
    +acc:221 [binder, in MSetsExtra.MSetIntervals]
    +acc:23 [binder, in MSetsExtra.MSetIntervals]
    +acc:250 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:311 [binder, in MSetsExtra.MSetIntervals]
    +acc:317 [binder, in MSetsExtra.MSetIntervals]
    +acc:322 [binder, in MSetsExtra.MSetIntervals]
    +acc:326 [binder, in MSetsExtra.MSetIntervals]
    +acc:332 [binder, in MSetsExtra.MSetIntervals]
    +acc:338 [binder, in MSetsExtra.MSetIntervals]
    +acc:344 [binder, in MSetsExtra.MSetIntervals]
    +acc:35 [binder, in MSetsExtra.MSetIntervals]
    +acc:352 [binder, in MSetsExtra.MSetIntervals]
    +acc:356 [binder, in MSetsExtra.MSetIntervals]
    +acc:359 [binder, in MSetsExtra.MSetIntervals]
    +acc:366 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:370 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:372 [binder, in MSetsExtra.MSetIntervals]
    +acc:378 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:389 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:393 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:401 [binder, in MSetsExtra.MSetFoldWithAbort]
    +acc:414 [binder, in MSetsExtra.MSetIntervals]
    +acc:43 [binder, in MSetsExtra.MSetListWithDups]
    +acc:558 [binder, in MSetsExtra.MSetIntervals]
    +acc:56 [binder, in MSetsExtra.MSetIntervals]
    +acc:561 [binder, in MSetsExtra.MSetIntervals]
    +acc:584 [binder, in MSetsExtra.MSetIntervals]
    +acc:588 [binder, in MSetsExtra.MSetIntervals]
    +acc:600 [binder, in MSetsExtra.MSetIntervals]
    +acc:606 [binder, in MSetsExtra.MSetIntervals]
    +acc:633 [binder, in MSetsExtra.MSetIntervals]
    +acc:637 [binder, in MSetsExtra.MSetIntervals]
    +acc:649 [binder, in MSetsExtra.MSetIntervals]
    +acc:65 [binder, in MSetsExtra.MSetIntervals]
    +acc:657 [binder, in MSetsExtra.MSetIntervals]
    +acc:684 [binder, in MSetsExtra.MSetIntervals]
    +acc:70 [binder, in MSetsExtra.MSetIntervals]
    +acc:832 [binder, in MSetsExtra.MSetIntervals]
    +acc:837 [binder, in MSetsExtra.MSetIntervals]
    +acc:840 [binder, in MSetsExtra.MSetIntervals]
    +acc:852 [binder, in MSetsExtra.MSetIntervals]
    +acc:857 [binder, in MSetsExtra.MSetIntervals]
    +acc:864 [binder, in MSetsExtra.MSetIntervals]
    +acc:869 [binder, in MSetsExtra.MSetIntervals]
    +acc:9 [binder, in MSetsExtra.MSetListWithDups]
    add_add_sub_eq [lemma, in MSetsExtra.MSetIntervals]
    -

    E

    +a1:152 [binder, in MSetsExtra.MSetListWithDups]
    +a1:3 [binder, in MSetsExtra.MSetListWithDups]
    +a1:79 [binder, in MSetsExtra.MSetListWithDups]
    +a2:153 [binder, in MSetsExtra.MSetListWithDups]
    +a2:4 [binder, in MSetsExtra.MSetListWithDups]
    +a2:80 [binder, in MSetsExtra.MSetListWithDups]
    +a:1002 [binder, in MSetsExtra.MSetIntervals]
    +a:1003 [binder, in MSetsExtra.MSetIntervals]
    +A:102 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:11 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:12 [binder, in MSetsExtra.MSetIntervals]
    +A:126 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:130 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:137 [binder, in MSetsExtra.MSetListWithDups]
    +A:140 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:147 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:158 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:175 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:190 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:20 [binder, in MSetsExtra.MSetIntervals]
    +A:201 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:218 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:27 [binder, in MSetsExtra.MSetIntervals]
    +a:275 [binder, in MSetsExtra.MSetIntervals]
    +a:278 [binder, in MSetsExtra.MSetIntervals]
    +a:280 [binder, in MSetsExtra.MSetIntervals]
    +A:3 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:30 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:302 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:308 [binder, in MSetsExtra.MSetIntervals]
    +A:31 [binder, in MSetsExtra.MSetIntervals]
    +A:315 [binder, in MSetsExtra.MSetIntervals]
    +A:316 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:32 [binder, in MSetsExtra.MSetWithDups]
    +A:320 [binder, in MSetsExtra.MSetIntervals]
    +A:324 [binder, in MSetsExtra.MSetIntervals]
    +A:329 [binder, in MSetsExtra.MSetIntervals]
    +A:336 [binder, in MSetsExtra.MSetIntervals]
    +A:341 [binder, in MSetsExtra.MSetIntervals]
    +A:343 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:349 [binder, in MSetsExtra.MSetIntervals]
    +A:35 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:351 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:354 [binder, in MSetsExtra.MSetIntervals]
    +A:357 [binder, in MSetsExtra.MSetIntervals]
    +A:359 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:36 [binder, in MSetsExtra.MSetIntervals]
    +A:369 [binder, in MSetsExtra.MSetIntervals]
    +A:37 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:371 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:382 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:39 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:394 [binder, in MSetsExtra.MSetFoldWithAbort]
    +a:4 [binder, in MSetsExtra.MSetWithDups]
    +A:54 [binder, in MSetsExtra.MSetIntervals]
    +A:58 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:63 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:63 [binder, in MSetsExtra.MSetIntervals]
    +A:65 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:67 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:68 [binder, in MSetsExtra.MSetIntervals]
    +A:7 [binder, in MSetsExtra.MSetFoldWithAbort]
    +a:7 [binder, in MSetsExtra.MSetWithDups]
    +A:817 [binder, in MSetsExtra.MSetIntervals]
    +A:9 [binder, in MSetsExtra.MSetFoldWithAbort]
    +a:9 [binder, in MSetsExtra.MSetWithDups]
    +A:91 [binder, in MSetsExtra.MSetFoldWithAbort]
    +a:92 [binder, in MSetsExtra.MSetListWithDups]
    +a:934 [binder, in MSetsExtra.MSetIntervals]
    +a:937 [binder, in MSetsExtra.MSetIntervals]
    +a:939 [binder, in MSetsExtra.MSetIntervals]
    +a:95 [binder, in MSetsExtra.MSetListWithDups]
    +A:97 [binder, in MSetsExtra.MSetFoldWithAbort]
    +a:97 [binder, in MSetsExtra.MSetListWithDups]
    +A:970 [binder, in MSetsExtra.MSetIntervals]
    +a:985 [binder, in MSetsExtra.MSetIntervals]
    +a:986 [binder, in MSetsExtra.MSetIntervals]
    +a:987 [binder, in MSetsExtra.MSetIntervals]
    +a:988 [binder, in MSetsExtra.MSetIntervals]
    +A:99 [binder, in MSetsExtra.MSetFoldWithAbort]
    +A:994 [binder, in MSetsExtra.MSetIntervals]
    +a:997 [binder, in MSetsExtra.MSetIntervals]
    +

    B

    +base:309 [binder, in MSetsExtra.MSetFoldWithAbort]
    +base:350 [binder, in MSetsExtra.MSetFoldWithAbort]
    +base:358 [binder, in MSetsExtra.MSetFoldWithAbort]
    +base:366 [binder, in MSetsExtra.MSetIntervals]
    +bs:333 [binder, in MSetsExtra.MSetIntervals]
    +bs:337 [binder, in MSetsExtra.MSetIntervals]
    +B:100 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:103 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:127 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:13 [binder, in MSetsExtra.MSetIntervals]
    +B:159 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:21 [binder, in MSetsExtra.MSetIntervals]
    +B:212 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:227 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:228 [binder, in MSetsExtra.MSetIntervals]
    +b:232 [binder, in MSetsExtra.MSetIntervals]
    +b:236 [binder, in MSetsExtra.MSetIntervals]
    +B:237 [binder, in MSetsExtra.MSetFoldWithAbort]
    +b:240 [binder, in MSetsExtra.MSetIntervals]
    +B:253 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:268 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:28 [binder, in MSetsExtra.MSetIntervals]
    +B:287 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:290 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:294 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:297 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:303 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:317 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:32 [binder, in MSetsExtra.MSetIntervals]
    +B:330 [binder, in MSetsExtra.MSetIntervals]
    +B:342 [binder, in MSetsExtra.MSetIntervals]
    +B:344 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:352 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:360 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:37 [binder, in MSetsExtra.MSetIntervals]
    +B:372 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:383 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:395 [binder, in MSetsExtra.MSetFoldWithAbort]
    +B:60 [binder, in MSetsExtra.MSetListWithDups]
    +B:92 [binder, in MSetsExtra.MSetFoldWithAbort]
    +

    C

    +cur:178 [binder, in MSetsExtra.MSetIntervals]
    +cur:182 [binder, in MSetsExtra.MSetIntervals]
    +cur:858 [binder, in MSetsExtra.MSetIntervals]
    +cx:306 [binder, in MSetsExtra.MSetIntervals]
    +c_f:900 [binder, in MSetsExtra.MSetIntervals]
    +c_t:898 [binder, in MSetsExtra.MSetIntervals]
    +c1:298 [binder, in MSetsExtra.MSetIntervals]
    +c1:399 [binder, in MSetsExtra.MSetIntervals]
    +c1:403 [binder, in MSetsExtra.MSetIntervals]
    +c1:485 [binder, in MSetsExtra.MSetIntervals]
    +c1:510 [binder, in MSetsExtra.MSetIntervals]
    +c1:513 [binder, in MSetsExtra.MSetIntervals]
    +c1:517 [binder, in MSetsExtra.MSetIntervals]
    +c1:523 [binder, in MSetsExtra.MSetIntervals]
    +c1:706 [binder, in MSetsExtra.MSetIntervals]
    +c1:714 [binder, in MSetsExtra.MSetIntervals]
    +c1:759 [binder, in MSetsExtra.MSetIntervals]
    +c1:98 [binder, in MSetsExtra.MSetIntervals]
    +c2:100 [binder, in MSetsExtra.MSetIntervals]
    +c2:146 [binder, in MSetsExtra.MSetIntervals]
    +c2:167 [binder, in MSetsExtra.MSetIntervals]
    +c2:297 [binder, in MSetsExtra.MSetIntervals]
    +c2:401 [binder, in MSetsExtra.MSetIntervals]
    +c2:405 [binder, in MSetsExtra.MSetIntervals]
    +c2:410 [binder, in MSetsExtra.MSetIntervals]
    +c2:467 [binder, in MSetsExtra.MSetIntervals]
    +c2:487 [binder, in MSetsExtra.MSetIntervals]
    +c2:511 [binder, in MSetsExtra.MSetIntervals]
    +c2:515 [binder, in MSetsExtra.MSetIntervals]
    +c2:519 [binder, in MSetsExtra.MSetIntervals]
    +c2:525 [binder, in MSetsExtra.MSetIntervals]
    +c2:582 [binder, in MSetsExtra.MSetIntervals]
    +c2:586 [binder, in MSetsExtra.MSetIntervals]
    +c2:631 [binder, in MSetsExtra.MSetIntervals]
    +c2:635 [binder, in MSetsExtra.MSetIntervals]
    +c2:709 [binder, in MSetsExtra.MSetIntervals]
    +c2:717 [binder, in MSetsExtra.MSetIntervals]
    +c2:760 [binder, in MSetsExtra.MSetIntervals]
    +c:102 [binder, in MSetsExtra.MSetIntervals]
    +c:123 [binder, in MSetsExtra.MSetIntervals]
    +c:191 [binder, in MSetsExtra.MSetIntervals]
    +c:198 [binder, in MSetsExtra.MSetIntervals]
    +c:214 [binder, in MSetsExtra.MSetIntervals]
    +c:220 [binder, in MSetsExtra.MSetIntervals]
    +c:242 [binder, in MSetsExtra.MSetIntervals]
    +c:288 [binder, in MSetsExtra.MSetIntervals]
    +c:292 [binder, in MSetsExtra.MSetIntervals]
    +c:295 [binder, in MSetsExtra.MSetIntervals]
    +c:300 [binder, in MSetsExtra.MSetIntervals]
    +c:301 [binder, in MSetsExtra.MSetIntervals]
    +c:310 [binder, in MSetsExtra.MSetIntervals]
    +c:328 [binder, in MSetsExtra.MSetIntervals]
    +c:351 [binder, in MSetsExtra.MSetIntervals]
    +c:361 [binder, in MSetsExtra.MSetIntervals]
    +c:374 [binder, in MSetsExtra.MSetIntervals]
    +c:377 [binder, in MSetsExtra.MSetIntervals]
    +c:384 [binder, in MSetsExtra.MSetIntervals]
    +c:393 [binder, in MSetsExtra.MSetIntervals]
    +c:396 [binder, in MSetsExtra.MSetIntervals]
    +c:420 [binder, in MSetsExtra.MSetIntervals]
    +c:429 [binder, in MSetsExtra.MSetIntervals]
    +c:432 [binder, in MSetsExtra.MSetIntervals]
    +c:434 [binder, in MSetsExtra.MSetIntervals]
    +c:489 [binder, in MSetsExtra.MSetIntervals]
    +c:492 [binder, in MSetsExtra.MSetIntervals]
    +c:496 [binder, in MSetsExtra.MSetIntervals]
    +c:500 [binder, in MSetsExtra.MSetIntervals]
    +c:503 [binder, in MSetsExtra.MSetIntervals]
    +c:507 [binder, in MSetsExtra.MSetIntervals]
    +c:530 [binder, in MSetsExtra.MSetIntervals]
    +c:58 [binder, in MSetsExtra.MSetIntervals]
    +c:67 [binder, in MSetsExtra.MSetIntervals]
    +c:7 [binder, in MSetsExtra.MSetIntervals]
    +c:732 [binder, in MSetsExtra.MSetIntervals]
    +c:767 [binder, in MSetsExtra.MSetIntervals]
    +c:821 [binder, in MSetsExtra.MSetIntervals]
    +c:833 [binder, in MSetsExtra.MSetIntervals]
    +c:838 [binder, in MSetsExtra.MSetIntervals]
    +c:841 [binder, in MSetsExtra.MSetIntervals]
    +c:842 [binder, in MSetsExtra.MSetIntervals]
    +c:846 [binder, in MSetsExtra.MSetIntervals]
    +c:851 [binder, in MSetsExtra.MSetIntervals]
    +c:855 [binder, in MSetsExtra.MSetIntervals]
    +c:862 [binder, in MSetsExtra.MSetIntervals]
    +c:895 [binder, in MSetsExtra.MSetIntervals]
    +

    E

    ElementEncode [module, in MSetsExtra.MSetIntervals]
    ElementEncodeN [module, in MSetsExtra.MSetIntervals]
    ElementEncodeNat [module, in MSetsExtra.MSetIntervals]
    @@ -531,16 +840,288 @@

    Global Index

    ElementEncode.encode [axiom, in MSetsExtra.MSetIntervals]
    ElementEncode.encode_lt [axiom, in MSetsExtra.MSetIntervals]
    ElementEncode.encode_eq [axiom, in MSetsExtra.MSetIntervals]
    -

    F

    +elt:1 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:28 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:31 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:4 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:56 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:59 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:89 [binder, in MSetsExtra.MSetFoldWithAbort]
    +elt:93 [binder, in MSetsExtra.MSetFoldWithAbort]
    +eqA:14 [binder, in MSetsExtra.MSetIntervals]
    +eqB:15 [binder, in MSetsExtra.MSetIntervals]
    +e_pre:261 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e_pre:244 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e_pre:233 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e0:251 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e0:341 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e0:342 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:1007 [binder, in MSetsExtra.MSetIntervals]
    +e1:1009 [binder, in MSetsExtra.MSetIntervals]
    +e1:1014 [binder, in MSetsExtra.MSetIntervals]
    +e1:1016 [binder, in MSetsExtra.MSetIntervals]
    +e1:1021 [binder, in MSetsExtra.MSetIntervals]
    +e1:1023 [binder, in MSetsExtra.MSetIntervals]
    +e1:118 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:122 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:156 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:169 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:172 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:184 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:187 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:198 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:209 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:223 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:225 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:24 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:332 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:336 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:44 [binder, in MSetsExtra.MSetIntervals]
    +e1:47 [binder, in MSetsExtra.MSetIntervals]
    +e1:52 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:81 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e1:85 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:1008 [binder, in MSetsExtra.MSetIntervals]
    +e2:1010 [binder, in MSetsExtra.MSetIntervals]
    +e2:1015 [binder, in MSetsExtra.MSetIntervals]
    +e2:1017 [binder, in MSetsExtra.MSetIntervals]
    +e2:1022 [binder, in MSetsExtra.MSetIntervals]
    +e2:1024 [binder, in MSetsExtra.MSetIntervals]
    +e2:121 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:125 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:157 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:171 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:174 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:186 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:189 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:200 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:211 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:224 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:226 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:27 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:335 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:339 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:45 [binder, in MSetsExtra.MSetIntervals]
    +e2:48 [binder, in MSetsExtra.MSetIntervals]
    +e2:55 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:84 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e2:88 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:1006 [binder, in MSetsExtra.MSetIntervals]
    +e:1013 [binder, in MSetsExtra.MSetIntervals]
    +e:1020 [binder, in MSetsExtra.MSetIntervals]
    +e:115 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:116 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:134 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:136 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:138 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:143 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:145 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:150 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:152 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:154 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:167 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:182 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:196 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:207 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:21 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:22 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:222 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:230 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:232 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:235 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:241 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:243 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:246 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:248 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:256 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:256 [binder, in MSetsExtra.MSetIntervals]
    +e:260 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:264 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:272 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:273 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:274 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:301 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:329 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:330 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:340 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:379 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:380 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:402 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:403 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:405 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:42 [binder, in MSetsExtra.MSetIntervals]
    +e:49 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:50 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:772 [binder, in MSetsExtra.MSetIntervals]
    +e:78 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:79 [binder, in MSetsExtra.MSetFoldWithAbort]
    +e:998 [binder, in MSetsExtra.MSetIntervals]
    +

    F

    foldWithAbortGtLtSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortGtLtType [definition, in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbortGtLt:66 [binder, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortGtSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortGtType [definition, in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbortGt:38 [binder, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortPrecomputeSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortPrecomputeType [definition, in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbortPrecompute:101 [binder, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortSpecPred [definition, in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortType [definition, in MSetsExtra.MSetFoldWithAbort]
    -

    H

    +foldWithAbort:10 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fold:36 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fold:64 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fold:8 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fold:98 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:221 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:228 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:238 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:254 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:269 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:288 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:291 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:295 [binder, in MSetsExtra.MSetFoldWithAbort]
    +fwasa:298 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:399 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:397 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:396 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:387 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:385 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:384 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:376 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:374 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:373 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:364 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:362 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:361 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:356 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:354 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:353 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:348 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:346 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:345 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:324 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:323 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:320 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:307 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:305 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:304 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_abort:205 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:194 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:180 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:179 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:165 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:164 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_pre:161 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_abort:149 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:142 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:133 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:131 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:110 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:109 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_precompute:106 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:73 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_lt:72 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_gt:44 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f_abort:16 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':108 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':15 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':163 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':178 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':193 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':204 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':322 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':43 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f':71 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:107 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:121 [binder, in MSetsExtra.MSetListWithDups]
    +f:124 [binder, in MSetsExtra.MSetListWithDups]
    +f:132 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:139 [binder, in MSetsExtra.MSetListWithDups]
    +f:14 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:141 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:147 [binder, in MSetsExtra.MSetListWithDups]
    +f:148 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:150 [binder, in MSetsExtra.MSetListWithDups]
    +f:155 [binder, in MSetsExtra.MSetListWithDups]
    +f:158 [binder, in MSetsExtra.MSetListWithDups]
    +f:16 [binder, in MSetsExtra.MSetIntervals]
    +f:160 [binder, in MSetsExtra.MSetListWithDups]
    +f:162 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:177 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:184 [binder, in MSetsExtra.MSetIntervals]
    +f:188 [binder, in MSetsExtra.MSetIntervals]
    +f:192 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:194 [binder, in MSetsExtra.MSetIntervals]
    +f:201 [binder, in MSetsExtra.MSetIntervals]
    +f:203 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:205 [binder, in MSetsExtra.MSetIntervals]
    +f:207 [binder, in MSetsExtra.MSetIntervals]
    +f:211 [binder, in MSetsExtra.MSetIntervals]
    +f:217 [binder, in MSetsExtra.MSetIntervals]
    +f:22 [binder, in MSetsExtra.MSetIntervals]
    +f:222 [binder, in MSetsExtra.MSetIntervals]
    +f:226 [binder, in MSetsExtra.MSetIntervals]
    +f:229 [binder, in MSetsExtra.MSetIntervals]
    +f:234 [binder, in MSetsExtra.MSetIntervals]
    +f:238 [binder, in MSetsExtra.MSetIntervals]
    +f:29 [binder, in MSetsExtra.MSetIntervals]
    +f:306 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:309 [binder, in MSetsExtra.MSetIntervals]
    +f:316 [binder, in MSetsExtra.MSetIntervals]
    +f:321 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:321 [binder, in MSetsExtra.MSetIntervals]
    +f:325 [binder, in MSetsExtra.MSetIntervals]
    +f:33 [binder, in MSetsExtra.MSetIntervals]
    +f:331 [binder, in MSetsExtra.MSetIntervals]
    +f:34 [binder, in MSetsExtra.MSetWithDups]
    +f:343 [binder, in MSetsExtra.MSetIntervals]
    +f:347 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:350 [binder, in MSetsExtra.MSetIntervals]
    +f:355 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:355 [binder, in MSetsExtra.MSetIntervals]
    +f:358 [binder, in MSetsExtra.MSetIntervals]
    +f:363 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:370 [binder, in MSetsExtra.MSetIntervals]
    +f:375 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:38 [binder, in MSetsExtra.MSetIntervals]
    +f:386 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:398 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:42 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:44 [binder, in MSetsExtra.MSetListWithDups]
    +f:48 [binder, in MSetsExtra.MSetListWithDups]
    +f:55 [binder, in MSetsExtra.MSetIntervals]
    +f:61 [binder, in MSetsExtra.MSetListWithDups]
    +f:64 [binder, in MSetsExtra.MSetIntervals]
    +f:69 [binder, in MSetsExtra.MSetIntervals]
    +f:70 [binder, in MSetsExtra.MSetFoldWithAbort]
    +f:71 [binder, in MSetsExtra.MSetListWithDups]
    +f:75 [binder, in MSetsExtra.MSetListWithDups]
    +f:81 [binder, in MSetsExtra.MSetListWithDups]
    +f:819 [binder, in MSetsExtra.MSetIntervals]
    +f:824 [binder, in MSetsExtra.MSetIntervals]
    +f:828 [binder, in MSetsExtra.MSetIntervals]
    +f:854 [binder, in MSetsExtra.MSetIntervals]
    +f:861 [binder, in MSetsExtra.MSetIntervals]
    +f:867 [binder, in MSetsExtra.MSetIntervals]
    +f:876 [binder, in MSetsExtra.MSetIntervals]
    +f:882 [binder, in MSetsExtra.MSetIntervals]
    +f:889 [binder, in MSetsExtra.MSetIntervals]
    +f:894 [binder, in MSetsExtra.MSetIntervals]
    +f:903 [binder, in MSetsExtra.MSetIntervals]
    +f:910 [binder, in MSetsExtra.MSetIntervals]
    +f:913 [binder, in MSetsExtra.MSetIntervals]
    +f:917 [binder, in MSetsExtra.MSetIntervals]
    +f:920 [binder, in MSetsExtra.MSetIntervals]
    +f:923 [binder, in MSetsExtra.MSetIntervals]
    +f:925 [binder, in MSetsExtra.MSetIntervals]
    +f:971 [binder, in MSetsExtra.MSetIntervals]
    +f:974 [binder, in MSetsExtra.MSetIntervals]
    +f:976 [binder, in MSetsExtra.MSetIntervals]
    +f:978 [binder, in MSetsExtra.MSetIntervals]
    +f:980 [binder, in MSetsExtra.MSetIntervals]
    +f:996 [binder, in MSetsExtra.MSetIntervals]
    +

    H

    HasFoldWithAbort [module, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps [module, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.choose_with_abort_spec [lemma, in MSetsExtra.MSetFoldWithAbort]
    @@ -569,7 +1150,125 @@

    Global Index

    HasFoldWithAbortOps.fwasa_f_pre [projection, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbort.foldWithAbortPrecompute [axiom, in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbort.foldWithAbortPrecomputeSpec [axiom, in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +Heq:62 [binder, in MSetsExtra.MSetIntervals]
    +Hs':580 [binder, in MSetsExtra.MSetIntervals]
    +Hs':629 [binder, in MSetsExtra.MSetIntervals]
    +Hs':681 [binder, in MSetsExtra.MSetIntervals]
    +Hs':728 [binder, in MSetsExtra.MSetIntervals]
    +Hs':743 [binder, in MSetsExtra.MSetIntervals]
    +Hs':748 [binder, in MSetsExtra.MSetIntervals]
    +Hs:268 [binder, in MSetsExtra.MSetIntervals]
    +Hs:480 [binder, in MSetsExtra.MSetIntervals]
    +Hs:483 [binder, in MSetsExtra.MSetIntervals]
    +Hs:544 [binder, in MSetsExtra.MSetIntervals]
    +Hs:547 [binder, in MSetsExtra.MSetIntervals]
    +Hs:579 [binder, in MSetsExtra.MSetIntervals]
    +Hs:628 [binder, in MSetsExtra.MSetIntervals]
    +Hs:680 [binder, in MSetsExtra.MSetIntervals]
    +Hs:690 [binder, in MSetsExtra.MSetIntervals]
    +Hs:697 [binder, in MSetsExtra.MSetIntervals]
    +Hs:727 [binder, in MSetsExtra.MSetIntervals]
    +Hs:731 [binder, in MSetsExtra.MSetIntervals]
    +Hs:735 [binder, in MSetsExtra.MSetIntervals]
    +Hs:737 [binder, in MSetsExtra.MSetIntervals]
    +Hs:742 [binder, in MSetsExtra.MSetIntervals]
    +Hs:747 [binder, in MSetsExtra.MSetIntervals]
    +Hs:780 [binder, in MSetsExtra.MSetIntervals]
    +Hs:785 [binder, in MSetsExtra.MSetIntervals]
    +Hs:789 [binder, in MSetsExtra.MSetIntervals]
    +Hs:793 [binder, in MSetsExtra.MSetIntervals]
    +Hs:810 [binder, in MSetsExtra.MSetIntervals]
    +Hs:814 [binder, in MSetsExtra.MSetIntervals]
    +Hs:825 [binder, in MSetsExtra.MSetIntervals]
    +Hs:829 [binder, in MSetsExtra.MSetIntervals]
    +H0:575 [binder, in MSetsExtra.MSetIntervals]
    +H0:624 [binder, in MSetsExtra.MSetIntervals]
    +H0:676 [binder, in MSetsExtra.MSetIntervals]
    +H1:313 [binder, in MSetsExtra.MSetIntervals]
    +H2:314 [binder, in MSetsExtra.MSetIntervals]
    +H:540 [binder, in MSetsExtra.MSetIntervals]
    +H:574 [binder, in MSetsExtra.MSetIntervals]
    +H:59 [binder, in MSetsExtra.MSetIntervals]
    +H:623 [binder, in MSetsExtra.MSetIntervals]
    +H:675 [binder, in MSetsExtra.MSetIntervals]
    +H:693 [binder, in MSetsExtra.MSetIntervals]
    +H:883 [binder, in MSetsExtra.MSetIntervals]
    +H:918 [binder, in MSetsExtra.MSetIntervals]
    +H:921 [binder, in MSetsExtra.MSetIntervals]
    +

    I

    +In:34 [binder, in MSetsExtra.MSetFoldWithAbort]
    +In:6 [binder, in MSetsExtra.MSetFoldWithAbort]
    +In:62 [binder, in MSetsExtra.MSetFoldWithAbort]
    +In:96 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i':105 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i':13 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i':319 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i':41 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i':69 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i1:86 [binder, in MSetsExtra.MSetIntervals]
    +i2:87 [binder, in MSetsExtra.MSetIntervals]
    +i:104 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:12 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:138 [binder, in MSetsExtra.MSetListWithDups]
    +i:160 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:176 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:191 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:202 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:231 [binder, in MSetsExtra.MSetIntervals]
    +i:318 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:33 [binder, in MSetsExtra.MSetWithDups]
    +i:40 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:407 [binder, in MSetsExtra.MSetIntervals]
    +i:63 [binder, in MSetsExtra.MSetListWithDups]
    +i:68 [binder, in MSetsExtra.MSetFoldWithAbort]
    +i:818 [binder, in MSetsExtra.MSetIntervals]
    +i:91 [binder, in MSetsExtra.MSetIntervals]
    +i:995 [binder, in MSetsExtra.MSetIntervals]
    +

    L

    +ls:290 [binder, in MSetsExtra.MSetIntervals]
    +lt:33 [binder, in MSetsExtra.MSetFoldWithAbort]
    +lt:61 [binder, in MSetsExtra.MSetFoldWithAbort]
    +lt:95 [binder, in MSetsExtra.MSetFoldWithAbort]
    +l':24 [binder, in MSetsExtra.MSetListWithDups]
    +l':30 [binder, in MSetsExtra.MSetListWithDups]
    +l1:345 [binder, in MSetsExtra.MSetIntervals]
    +l1:425 [binder, in MSetsExtra.MSetIntervals]
    +l1:707 [binder, in MSetsExtra.MSetIntervals]
    +l1:715 [binder, in MSetsExtra.MSetIntervals]
    +l2:346 [binder, in MSetsExtra.MSetIntervals]
    +l2:426 [binder, in MSetsExtra.MSetIntervals]
    +l2:710 [binder, in MSetsExtra.MSetIntervals]
    +l2:718 [binder, in MSetsExtra.MSetIntervals]
    +l:10 [binder, in MSetsExtra.MSetListWithDups]
    +l:103 [binder, in MSetsExtra.MSetIntervals]
    +l:115 [binder, in MSetsExtra.MSetIntervals]
    +l:119 [binder, in MSetsExtra.MSetIntervals]
    +l:134 [binder, in MSetsExtra.MSetIntervals]
    +l:14 [binder, in MSetsExtra.MSetListWithDups]
    +l:16 [binder, in MSetsExtra.MSetListWithDups]
    +l:17 [binder, in MSetsExtra.MSetIntervals]
    +l:23 [binder, in MSetsExtra.MSetListWithDups]
    +l:24 [binder, in MSetsExtra.MSetIntervals]
    +l:254 [binder, in MSetsExtra.MSetIntervals]
    +l:258 [binder, in MSetsExtra.MSetIntervals]
    +l:260 [binder, in MSetsExtra.MSetIntervals]
    +l:28 [binder, in MSetsExtra.MSetListWithDups]
    +l:29 [binder, in MSetsExtra.MSetListWithDups]
    +l:30 [binder, in MSetsExtra.MSetIntervals]
    +l:339 [binder, in MSetsExtra.MSetIntervals]
    +l:34 [binder, in MSetsExtra.MSetListWithDups]
    +l:34 [binder, in MSetsExtra.MSetIntervals]
    +l:367 [binder, in MSetsExtra.MSetIntervals]
    +l:39 [binder, in MSetsExtra.MSetIntervals]
    +l:427 [binder, in MSetsExtra.MSetIntervals]
    +l:50 [binder, in MSetsExtra.MSetIntervals]
    +l:551 [binder, in MSetsExtra.MSetIntervals]
    +l:554 [binder, in MSetsExtra.MSetIntervals]
    +l:698 [binder, in MSetsExtra.MSetIntervals]
    +l:701 [binder, in MSetsExtra.MSetIntervals]
    +l:75 [binder, in MSetsExtra.MSetIntervals]
    +l:849 [binder, in MSetsExtra.MSetIntervals]
    +

    M

    Make [module, in MSetsExtra.MSetListWithDups]
    MakeAVLSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    MakeAVLSetsWithFoldA.foldWithAbortPrecompute [definition, in MSetsExtra.MSetFoldWithAbort]
    @@ -627,7 +1326,7 @@

    Global Index

    Make.Subset [definition, in MSetsExtra.MSetListWithDups]
    Make.subset_spec [lemma, in MSetsExtra.MSetListWithDups]
    Make.union_spec [lemma, in MSetsExtra.MSetListWithDups]
    -_ [<=] _ [notation, in MSetsExtra.MSetListWithDups]
    +_ [<=] _ [notation, in MSetsExtra.MSetListWithDups]
    _ [=] _ [notation, in MSetsExtra.MSetListWithDups]
    MSetFoldWithAbort [library]
    MSetIntervals [module, in MSetsExtra.MSetIntervals]
    @@ -693,7 +1392,6 @@

    Global Index

    MSetIntervals.min_elt_spec2 [lemma, in MSetsExtra.MSetIntervals]
    MSetIntervals.min_elt_spec1 [lemma, in MSetsExtra.MSetIntervals]
    MSetIntervals.min_elt [definition, in MSetsExtra.MSetIntervals]
    -MSetIntervals.Mkt [constructor, in MSetsExtra.MSetIntervals]
    MSetIntervals.partition [definition, in MSetsExtra.MSetIntervals]
    MSetIntervals.partition_spec2 [lemma, in MSetsExtra.MSetIntervals]
    MSetIntervals.partition_spec1 [lemma, in MSetsExtra.MSetIntervals]
    @@ -718,10 +1416,16 @@

    Global Index

    MSetIntervals.union_spec [lemma, in MSetsExtra.MSetIntervals]
    MSetListWithDups [library]
    MSetWithDups [library]
    -

    N

    +

    N

    NoDupA_map [lemma, in MSetsExtra.MSetIntervals]
    NOP [module, in MSetsExtra.MSetIntervals]
    -

    O

    +n:1011 [binder, in MSetsExtra.MSetIntervals]
    +n:1018 [binder, in MSetsExtra.MSetIntervals]
    +n:2 [binder, in MSetsExtra.MSetIntervals]
    +n:289 [binder, in MSetsExtra.MSetIntervals]
    +n:4 [binder, in MSetsExtra.MSetIntervals]
    +n:52 [binder, in MSetsExtra.MSetIntervals]
    +

    O

    Ops [module, in MSetsExtra.MSetListWithDups]
    Ops [module, in MSetsExtra.MSetIntervals]
    Ops.acc_pred [lemma, in MSetsExtra.MSetIntervals]
    @@ -824,7 +1528,37 @@

    Global Index

    Ops.union [definition, in MSetsExtra.MSetListWithDups]
    Ops.union [definition, in MSetsExtra.MSetIntervals]
    Ops.union_aux [definition, in MSetsExtra.MSetIntervals]
    -

    R

    +

    P

    +pre_x:392 [binder, in MSetsExtra.MSetFoldWithAbort]
    +pre_x:369 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:10 [binder, in MSetsExtra.MSetWithDups]
    +P:101 [binder, in MSetsExtra.MSetListWithDups]
    +P:112 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:13 [binder, in MSetsExtra.MSetWithDups]
    +P:18 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:220 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:231 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:236 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:239 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:242 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:247 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:257 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:265 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:270 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:281 [binder, in MSetsExtra.MSetIntervals]
    +P:284 [binder, in MSetsExtra.MSetIntervals]
    +P:292 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:300 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:319 [binder, in MSetsExtra.MSetIntervals]
    +P:326 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:46 [binder, in MSetsExtra.MSetFoldWithAbort]
    +p:53 [binder, in MSetsExtra.MSetIntervals]
    +P:75 [binder, in MSetsExtra.MSetFoldWithAbort]
    +P:940 [binder, in MSetsExtra.MSetIntervals]
    +P:943 [binder, in MSetsExtra.MSetIntervals]
    +P:98 [binder, in MSetsExtra.MSetListWithDups]
    +p:982 [binder, in MSetsExtra.MSetIntervals]
    +

    R

    Raw [module, in MSetsExtra.MSetIntervals]
    Raw.addZ_invariant [lemma, in MSetsExtra.MSetIntervals]
    Raw.addZ_InZ [lemma, in MSetsExtra.MSetIntervals]
    @@ -1042,15 +1776,448 @@

    Global Index

    RemoveDupsFromSorted.XTotalLeBool.leb [definition, in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool.leb_total [lemma, in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool.t [definition, in MSetsExtra.MSetListWithDups]
    -_ <=? _ [notation, in MSetsExtra.MSetListWithDups]
    +_ <=? _ [notation, in MSetsExtra.MSetListWithDups]
    rev_map_alt_def [lemma, in MSetsExtra.MSetIntervals]
    rev_map_aux_alt_def [lemma, in MSetsExtra.MSetIntervals]
    rev_map [definition, in MSetsExtra.MSetIntervals]
    rev_map_aux [definition, in MSetsExtra.MSetIntervals]
    -

    S

    +r:859 [binder, in MSetsExtra.MSetIntervals]
    +

    S

    SetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    SetsWithFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]
    -

    W

    +st':114 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':120 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':124 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':20 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':26 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':328 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':334 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':338 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':48 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':54 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':77 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':83 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st':87 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st0:313 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st1:314 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st2:315 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:113 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:117 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:119 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:123 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:135 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:137 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:139 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:144 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:146 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:151 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:153 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:155 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:168 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:170 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:173 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:183 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:185 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:185 [binder, in MSetsExtra.MSetIntervals]
    +st:188 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:189 [binder, in MSetsExtra.MSetIntervals]
    +st:19 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:192 [binder, in MSetsExtra.MSetIntervals]
    +st:197 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:199 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:208 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:208 [binder, in MSetsExtra.MSetIntervals]
    +st:210 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:212 [binder, in MSetsExtra.MSetIntervals]
    +st:215 [binder, in MSetsExtra.MSetIntervals]
    +st:23 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:25 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:258 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:262 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:266 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:275 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:327 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:331 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:333 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:337 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:381 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:404 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:47 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:51 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:53 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:76 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:80 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:82 [binder, in MSetsExtra.MSetFoldWithAbort]
    +st:86 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s'':749 [binder, in MSetsExtra.MSetIntervals]
    +s':107 [binder, in MSetsExtra.MSetListWithDups]
    +s':109 [binder, in MSetsExtra.MSetListWithDups]
    +s':130 [binder, in MSetsExtra.MSetListWithDups]
    +s':133 [binder, in MSetsExtra.MSetListWithDups]
    +s':143 [binder, in MSetsExtra.MSetListWithDups]
    +s':162 [binder, in MSetsExtra.MSetIntervals]
    +s':274 [binder, in MSetsExtra.MSetIntervals]
    +s':277 [binder, in MSetsExtra.MSetIntervals]
    +s':3 [binder, in MSetsExtra.MSetWithDups]
    +s':430 [binder, in MSetsExtra.MSetIntervals]
    +s':435 [binder, in MSetsExtra.MSetIntervals]
    +s':577 [binder, in MSetsExtra.MSetIntervals]
    +s':6 [binder, in MSetsExtra.MSetWithDups]
    +s':626 [binder, in MSetsExtra.MSetIntervals]
    +s':65 [binder, in MSetsExtra.MSetListWithDups]
    +s':67 [binder, in MSetsExtra.MSetListWithDups]
    +s':678 [binder, in MSetsExtra.MSetIntervals]
    +s':70 [binder, in MSetsExtra.MSetListWithDups]
    +s':726 [binder, in MSetsExtra.MSetIntervals]
    +s':741 [binder, in MSetsExtra.MSetIntervals]
    +s':746 [binder, in MSetsExtra.MSetIntervals]
    +s':796 [binder, in MSetsExtra.MSetIntervals]
    +s':91 [binder, in MSetsExtra.MSetListWithDups]
    +s':933 [binder, in MSetsExtra.MSetIntervals]
    +s':936 [binder, in MSetsExtra.MSetIntervals]
    +s':94 [binder, in MSetsExtra.MSetListWithDups]
    +s':954 [binder, in MSetsExtra.MSetIntervals]
    +s':956 [binder, in MSetsExtra.MSetIntervals]
    +s':958 [binder, in MSetsExtra.MSetIntervals]
    +s':960 [binder, in MSetsExtra.MSetIntervals]
    +s':962 [binder, in MSetsExtra.MSetIntervals]
    +s':984 [binder, in MSetsExtra.MSetIntervals]
    +s0:245 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s0:249 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s0:252 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s1:138 [binder, in MSetsExtra.MSetIntervals]
    +s1:143 [binder, in MSetsExtra.MSetIntervals]
    +s1:152 [binder, in MSetsExtra.MSetIntervals]
    +s1:155 [binder, in MSetsExtra.MSetIntervals]
    +s1:157 [binder, in MSetsExtra.MSetIntervals]
    +s1:173 [binder, in MSetsExtra.MSetIntervals]
    +s1:176 [binder, in MSetsExtra.MSetIntervals]
    +s1:379 [binder, in MSetsExtra.MSetIntervals]
    +s1:386 [binder, in MSetsExtra.MSetIntervals]
    +s1:450 [binder, in MSetsExtra.MSetIntervals]
    +s1:453 [binder, in MSetsExtra.MSetIntervals]
    +s1:457 [binder, in MSetsExtra.MSetIntervals]
    +s1:461 [binder, in MSetsExtra.MSetIntervals]
    +s1:465 [binder, in MSetsExtra.MSetIntervals]
    +s1:497 [binder, in MSetsExtra.MSetIntervals]
    +s1:53 [binder, in MSetsExtra.MSetListWithDups]
    +s1:55 [binder, in MSetsExtra.MSetListWithDups]
    +s1:556 [binder, in MSetsExtra.MSetIntervals]
    +s1:559 [binder, in MSetsExtra.MSetIntervals]
    +s1:562 [binder, in MSetsExtra.MSetIntervals]
    +s1:564 [binder, in MSetsExtra.MSetIntervals]
    +s1:569 [binder, in MSetsExtra.MSetIntervals]
    +s1:572 [binder, in MSetsExtra.MSetIntervals]
    +s1:605 [binder, in MSetsExtra.MSetIntervals]
    +s1:616 [binder, in MSetsExtra.MSetIntervals]
    +s1:619 [binder, in MSetsExtra.MSetIntervals]
    +s1:621 [binder, in MSetsExtra.MSetIntervals]
    +s1:656 [binder, in MSetsExtra.MSetIntervals]
    +s1:668 [binder, in MSetsExtra.MSetIntervals]
    +s1:671 [binder, in MSetsExtra.MSetIntervals]
    +s1:673 [binder, in MSetsExtra.MSetIntervals]
    +s1:703 [binder, in MSetsExtra.MSetIntervals]
    +s1:720 [binder, in MSetsExtra.MSetIntervals]
    +s1:738 [binder, in MSetsExtra.MSetIntervals]
    +s1:751 [binder, in MSetsExtra.MSetIntervals]
    +s1:753 [binder, in MSetsExtra.MSetIntervals]
    +s1:761 [binder, in MSetsExtra.MSetIntervals]
    +s1:763 [binder, in MSetsExtra.MSetIntervals]
    +s1:765 [binder, in MSetsExtra.MSetIntervals]
    +s1:94 [binder, in MSetsExtra.MSetIntervals]
    +s1:968 [binder, in MSetsExtra.MSetIntervals]
    +s2:140 [binder, in MSetsExtra.MSetIntervals]
    +s2:144 [binder, in MSetsExtra.MSetIntervals]
    +s2:153 [binder, in MSetsExtra.MSetIntervals]
    +s2:156 [binder, in MSetsExtra.MSetIntervals]
    +s2:159 [binder, in MSetsExtra.MSetIntervals]
    +s2:174 [binder, in MSetsExtra.MSetIntervals]
    +s2:177 [binder, in MSetsExtra.MSetIntervals]
    +s2:380 [binder, in MSetsExtra.MSetIntervals]
    +s2:387 [binder, in MSetsExtra.MSetIntervals]
    +s2:451 [binder, in MSetsExtra.MSetIntervals]
    +s2:454 [binder, in MSetsExtra.MSetIntervals]
    +s2:458 [binder, in MSetsExtra.MSetIntervals]
    +s2:462 [binder, in MSetsExtra.MSetIntervals]
    +s2:498 [binder, in MSetsExtra.MSetIntervals]
    +s2:54 [binder, in MSetsExtra.MSetListWithDups]
    +s2:557 [binder, in MSetsExtra.MSetIntervals]
    +s2:56 [binder, in MSetsExtra.MSetListWithDups]
    +s2:560 [binder, in MSetsExtra.MSetIntervals]
    +s2:563 [binder, in MSetsExtra.MSetIntervals]
    +s2:565 [binder, in MSetsExtra.MSetIntervals]
    +s2:567 [binder, in MSetsExtra.MSetIntervals]
    +s2:570 [binder, in MSetsExtra.MSetIntervals]
    +s2:571 [binder, in MSetsExtra.MSetIntervals]
    +s2:573 [binder, in MSetsExtra.MSetIntervals]
    +s2:604 [binder, in MSetsExtra.MSetIntervals]
    +s2:617 [binder, in MSetsExtra.MSetIntervals]
    +s2:620 [binder, in MSetsExtra.MSetIntervals]
    +s2:622 [binder, in MSetsExtra.MSetIntervals]
    +s2:655 [binder, in MSetsExtra.MSetIntervals]
    +s2:669 [binder, in MSetsExtra.MSetIntervals]
    +s2:672 [binder, in MSetsExtra.MSetIntervals]
    +s2:674 [binder, in MSetsExtra.MSetIntervals]
    +s2:704 [binder, in MSetsExtra.MSetIntervals]
    +s2:721 [binder, in MSetsExtra.MSetIntervals]
    +s2:723 [binder, in MSetsExtra.MSetIntervals]
    +s2:739 [binder, in MSetsExtra.MSetIntervals]
    +s2:752 [binder, in MSetsExtra.MSetIntervals]
    +s2:754 [binder, in MSetsExtra.MSetIntervals]
    +s2:762 [binder, in MSetsExtra.MSetIntervals]
    +s2:764 [binder, in MSetsExtra.MSetIntervals]
    +s2:766 [binder, in MSetsExtra.MSetIntervals]
    +s2:95 [binder, in MSetsExtra.MSetIntervals]
    +s2:969 [binder, in MSetsExtra.MSetIntervals]
    +s:102 [binder, in MSetsExtra.MSetListWithDups]
    +s:104 [binder, in MSetsExtra.MSetListWithDups]
    +s:106 [binder, in MSetsExtra.MSetListWithDups]
    +s:108 [binder, in MSetsExtra.MSetListWithDups]
    +s:108 [binder, in MSetsExtra.MSetIntervals]
    +s:11 [binder, in MSetsExtra.MSetWithDups]
    +s:111 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:112 [binder, in MSetsExtra.MSetListWithDups]
    +s:112 [binder, in MSetsExtra.MSetIntervals]
    +s:113 [binder, in MSetsExtra.MSetListWithDups]
    +s:114 [binder, in MSetsExtra.MSetIntervals]
    +s:116 [binder, in MSetsExtra.MSetIntervals]
    +s:117 [binder, in MSetsExtra.MSetIntervals]
    +s:118 [binder, in MSetsExtra.MSetListWithDups]
    +s:122 [binder, in MSetsExtra.MSetListWithDups]
    +s:124 [binder, in MSetsExtra.MSetIntervals]
    +s:125 [binder, in MSetsExtra.MSetListWithDups]
    +s:127 [binder, in MSetsExtra.MSetIntervals]
    +s:129 [binder, in MSetsExtra.MSetListWithDups]
    +s:131 [binder, in MSetsExtra.MSetIntervals]
    +s:132 [binder, in MSetsExtra.MSetListWithDups]
    +s:133 [binder, in MSetsExtra.MSetIntervals]
    +s:135 [binder, in MSetsExtra.MSetIntervals]
    +s:136 [binder, in MSetsExtra.MSetListWithDups]
    +s:136 [binder, in MSetsExtra.MSetIntervals]
    +s:14 [binder, in MSetsExtra.MSetWithDups]
    +s:140 [binder, in MSetsExtra.MSetListWithDups]
    +s:142 [binder, in MSetsExtra.MSetListWithDups]
    +s:145 [binder, in MSetsExtra.MSetListWithDups]
    +s:146 [binder, in MSetsExtra.MSetListWithDups]
    +s:148 [binder, in MSetsExtra.MSetIntervals]
    +s:149 [binder, in MSetsExtra.MSetListWithDups]
    +s:154 [binder, in MSetsExtra.MSetListWithDups]
    +s:157 [binder, in MSetsExtra.MSetListWithDups]
    +s:159 [binder, in MSetsExtra.MSetListWithDups]
    +s:161 [binder, in MSetsExtra.MSetIntervals]
    +s:162 [binder, in MSetsExtra.MSetListWithDups]
    +s:164 [binder, in MSetsExtra.MSetListWithDups]
    +s:165 [binder, in MSetsExtra.MSetListWithDups]
    +s:166 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:168 [binder, in MSetsExtra.MSetListWithDups]
    +s:169 [binder, in MSetsExtra.MSetListWithDups]
    +s:169 [binder, in MSetsExtra.MSetIntervals]
    +s:17 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:181 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:195 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:2 [binder, in MSetsExtra.MSetWithDups]
    +s:202 [binder, in MSetsExtra.MSetIntervals]
    +s:206 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:219 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:223 [binder, in MSetsExtra.MSetIntervals]
    +s:229 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:230 [binder, in MSetsExtra.MSetIntervals]
    +s:234 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:235 [binder, in MSetsExtra.MSetIntervals]
    +s:239 [binder, in MSetsExtra.MSetIntervals]
    +s:240 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:243 [binder, in MSetsExtra.MSetIntervals]
    +s:246 [binder, in MSetsExtra.MSetIntervals]
    +s:247 [binder, in MSetsExtra.MSetIntervals]
    +s:249 [binder, in MSetsExtra.MSetIntervals]
    +s:250 [binder, in MSetsExtra.MSetIntervals]
    +s:253 [binder, in MSetsExtra.MSetIntervals]
    +s:255 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:263 [binder, in MSetsExtra.MSetIntervals]
    +s:264 [binder, in MSetsExtra.MSetIntervals]
    +s:267 [binder, in MSetsExtra.MSetIntervals]
    +s:270 [binder, in MSetsExtra.MSetIntervals]
    +s:271 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:272 [binder, in MSetsExtra.MSetIntervals]
    +s:273 [binder, in MSetsExtra.MSetIntervals]
    +s:276 [binder, in MSetsExtra.MSetIntervals]
    +s:279 [binder, in MSetsExtra.MSetIntervals]
    +s:282 [binder, in MSetsExtra.MSetIntervals]
    +s:285 [binder, in MSetsExtra.MSetIntervals]
    +s:289 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:293 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:296 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:299 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:325 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:362 [binder, in MSetsExtra.MSetIntervals]
    +s:365 [binder, in MSetsExtra.MSetIntervals]
    +s:37 [binder, in MSetsExtra.MSetListWithDups]
    +s:371 [binder, in MSetsExtra.MSetIntervals]
    +s:375 [binder, in MSetsExtra.MSetIntervals]
    +s:378 [binder, in MSetsExtra.MSetIntervals]
    +s:385 [binder, in MSetsExtra.MSetIntervals]
    +s:389 [binder, in MSetsExtra.MSetIntervals]
    +s:395 [binder, in MSetsExtra.MSetIntervals]
    +s:41 [binder, in MSetsExtra.MSetListWithDups]
    +s:413 [binder, in MSetsExtra.MSetIntervals]
    +s:416 [binder, in MSetsExtra.MSetIntervals]
    +s:421 [binder, in MSetsExtra.MSetIntervals]
    +s:424 [binder, in MSetsExtra.MSetIntervals]
    +s:436 [binder, in MSetsExtra.MSetIntervals]
    +s:440 [binder, in MSetsExtra.MSetIntervals]
    +s:441 [binder, in MSetsExtra.MSetIntervals]
    +s:444 [binder, in MSetsExtra.MSetIntervals]
    +s:447 [binder, in MSetsExtra.MSetIntervals]
    +s:45 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:45 [binder, in MSetsExtra.MSetListWithDups]
    +s:470 [binder, in MSetsExtra.MSetIntervals]
    +s:472 [binder, in MSetsExtra.MSetIntervals]
    +s:474 [binder, in MSetsExtra.MSetIntervals]
    +s:477 [binder, in MSetsExtra.MSetIntervals]
    +s:478 [binder, in MSetsExtra.MSetIntervals]
    +s:481 [binder, in MSetsExtra.MSetIntervals]
    +s:49 [binder, in MSetsExtra.MSetWithDups]
    +s:49 [binder, in MSetsExtra.MSetListWithDups]
    +s:490 [binder, in MSetsExtra.MSetIntervals]
    +s:494 [binder, in MSetsExtra.MSetIntervals]
    +s:5 [binder, in MSetsExtra.MSetWithDups]
    +s:501 [binder, in MSetsExtra.MSetIntervals]
    +s:504 [binder, in MSetsExtra.MSetIntervals]
    +s:508 [binder, in MSetsExtra.MSetIntervals]
    +s:51 [binder, in MSetsExtra.MSetWithDups]
    +s:51 [binder, in MSetsExtra.MSetListWithDups]
    +s:521 [binder, in MSetsExtra.MSetIntervals]
    +s:528 [binder, in MSetsExtra.MSetIntervals]
    +s:53 [binder, in MSetsExtra.MSetWithDups]
    +s:531 [binder, in MSetsExtra.MSetIntervals]
    +s:535 [binder, in MSetsExtra.MSetIntervals]
    +s:538 [binder, in MSetsExtra.MSetIntervals]
    +s:541 [binder, in MSetsExtra.MSetIntervals]
    +s:546 [binder, in MSetsExtra.MSetIntervals]
    +s:552 [binder, in MSetsExtra.MSetIntervals]
    +s:555 [binder, in MSetsExtra.MSetIntervals]
    +s:56 [binder, in MSetsExtra.MSetWithDups]
    +s:57 [binder, in MSetsExtra.MSetWithDups]
    +s:576 [binder, in MSetsExtra.MSetIntervals]
    +s:583 [binder, in MSetsExtra.MSetIntervals]
    +s:587 [binder, in MSetsExtra.MSetIntervals]
    +s:62 [binder, in MSetsExtra.MSetListWithDups]
    +s:625 [binder, in MSetsExtra.MSetIntervals]
    +s:632 [binder, in MSetsExtra.MSetIntervals]
    +s:636 [binder, in MSetsExtra.MSetIntervals]
    +s:64 [binder, in MSetsExtra.MSetListWithDups]
    +s:66 [binder, in MSetsExtra.MSetListWithDups]
    +s:677 [binder, in MSetsExtra.MSetIntervals]
    +s:683 [binder, in MSetsExtra.MSetIntervals]
    +s:685 [binder, in MSetsExtra.MSetIntervals]
    +s:687 [binder, in MSetsExtra.MSetIntervals]
    +s:69 [binder, in MSetsExtra.MSetListWithDups]
    +s:691 [binder, in MSetsExtra.MSetIntervals]
    +s:694 [binder, in MSetsExtra.MSetIntervals]
    +s:699 [binder, in MSetsExtra.MSetIntervals]
    +s:702 [binder, in MSetsExtra.MSetIntervals]
    +s:71 [binder, in MSetsExtra.MSetIntervals]
    +s:72 [binder, in MSetsExtra.MSetListWithDups]
    +s:725 [binder, in MSetsExtra.MSetIntervals]
    +s:729 [binder, in MSetsExtra.MSetIntervals]
    +s:734 [binder, in MSetsExtra.MSetIntervals]
    +s:736 [binder, in MSetsExtra.MSetIntervals]
    +s:74 [binder, in MSetsExtra.MSetFoldWithAbort]
    +s:74 [binder, in MSetsExtra.MSetIntervals]
    +s:740 [binder, in MSetsExtra.MSetIntervals]
    +s:745 [binder, in MSetsExtra.MSetIntervals]
    +s:755 [binder, in MSetsExtra.MSetIntervals]
    +s:756 [binder, in MSetsExtra.MSetIntervals]
    +s:76 [binder, in MSetsExtra.MSetListWithDups]
    +s:769 [binder, in MSetsExtra.MSetIntervals]
    +s:77 [binder, in MSetsExtra.MSetIntervals]
    +s:770 [binder, in MSetsExtra.MSetIntervals]
    +s:775 [binder, in MSetsExtra.MSetIntervals]
    +s:777 [binder, in MSetsExtra.MSetIntervals]
    +s:781 [binder, in MSetsExtra.MSetIntervals]
    +s:783 [binder, in MSetsExtra.MSetIntervals]
    +s:786 [binder, in MSetsExtra.MSetIntervals]
    +s:79 [binder, in MSetsExtra.MSetIntervals]
    +s:790 [binder, in MSetsExtra.MSetIntervals]
    +s:791 [binder, in MSetsExtra.MSetIntervals]
    +s:794 [binder, in MSetsExtra.MSetIntervals]
    +s:795 [binder, in MSetsExtra.MSetIntervals]
    +s:799 [binder, in MSetsExtra.MSetIntervals]
    +s:8 [binder, in MSetsExtra.MSetWithDups]
    +s:801 [binder, in MSetsExtra.MSetIntervals]
    +s:805 [binder, in MSetsExtra.MSetIntervals]
    +s:806 [binder, in MSetsExtra.MSetIntervals]
    +s:808 [binder, in MSetsExtra.MSetIntervals]
    +s:811 [binder, in MSetsExtra.MSetIntervals]
    +s:815 [binder, in MSetsExtra.MSetIntervals]
    +s:816 [binder, in MSetsExtra.MSetIntervals]
    +s:82 [binder, in MSetsExtra.MSetListWithDups]
    +s:820 [binder, in MSetsExtra.MSetIntervals]
    +s:822 [binder, in MSetsExtra.MSetIntervals]
    +s:823 [binder, in MSetsExtra.MSetIntervals]
    +s:827 [binder, in MSetsExtra.MSetIntervals]
    +s:83 [binder, in MSetsExtra.MSetIntervals]
    +s:85 [binder, in MSetsExtra.MSetListWithDups]
    +s:86 [binder, in MSetsExtra.MSetListWithDups]
    +s:868 [binder, in MSetsExtra.MSetIntervals]
    +s:877 [binder, in MSetsExtra.MSetIntervals]
    +s:881 [binder, in MSetsExtra.MSetIntervals]
    +s:887 [binder, in MSetsExtra.MSetIntervals]
    +s:89 [binder, in MSetsExtra.MSetListWithDups]
    +s:90 [binder, in MSetsExtra.MSetListWithDups]
    +s:904 [binder, in MSetsExtra.MSetIntervals]
    +s:911 [binder, in MSetsExtra.MSetIntervals]
    +s:914 [binder, in MSetsExtra.MSetIntervals]
    +s:916 [binder, in MSetsExtra.MSetIntervals]
    +s:919 [binder, in MSetsExtra.MSetIntervals]
    +s:922 [binder, in MSetsExtra.MSetIntervals]
    +s:924 [binder, in MSetsExtra.MSetIntervals]
    +s:93 [binder, in MSetsExtra.MSetListWithDups]
    +s:931 [binder, in MSetsExtra.MSetIntervals]
    +s:932 [binder, in MSetsExtra.MSetIntervals]
    +s:935 [binder, in MSetsExtra.MSetIntervals]
    +s:938 [binder, in MSetsExtra.MSetIntervals]
    +s:941 [binder, in MSetsExtra.MSetIntervals]
    +s:944 [binder, in MSetsExtra.MSetIntervals]
    +s:947 [binder, in MSetsExtra.MSetIntervals]
    +s:949 [binder, in MSetsExtra.MSetIntervals]
    +s:951 [binder, in MSetsExtra.MSetIntervals]
    +s:953 [binder, in MSetsExtra.MSetIntervals]
    +s:955 [binder, in MSetsExtra.MSetIntervals]
    +s:957 [binder, in MSetsExtra.MSetIntervals]
    +s:959 [binder, in MSetsExtra.MSetIntervals]
    +s:96 [binder, in MSetsExtra.MSetListWithDups]
    +s:961 [binder, in MSetsExtra.MSetIntervals]
    +s:963 [binder, in MSetsExtra.MSetIntervals]
    +s:964 [binder, in MSetsExtra.MSetIntervals]
    +s:965 [binder, in MSetsExtra.MSetIntervals]
    +s:966 [binder, in MSetsExtra.MSetIntervals]
    +s:967 [binder, in MSetsExtra.MSetIntervals]
    +s:972 [binder, in MSetsExtra.MSetIntervals]
    +s:973 [binder, in MSetsExtra.MSetIntervals]
    +s:975 [binder, in MSetsExtra.MSetIntervals]
    +s:977 [binder, in MSetsExtra.MSetIntervals]
    +s:979 [binder, in MSetsExtra.MSetIntervals]
    +s:981 [binder, in MSetsExtra.MSetIntervals]
    +s:983 [binder, in MSetsExtra.MSetIntervals]
    +s:99 [binder, in MSetsExtra.MSetListWithDups]
    +

    T

    +t:2 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:29 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:308 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:32 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:349 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:357 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:365 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:377 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:388 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:400 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:5 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:57 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:60 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:90 [binder, in MSetsExtra.MSetFoldWithAbort]
    +t:94 [binder, in MSetsExtra.MSetFoldWithAbort]
    +

    W

    WSetsOnWithDups [module, in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra [module, in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra.cardinal_spec [axiom, in MSetsExtra.MSetWithDups]
    @@ -1092,7 +2259,7 @@

    Global Index

    WSetsOnWithDups.Subset [definition, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.subset_spec [axiom, in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.union_spec [axiom, in MSetsExtra.MSetWithDups]
    -_ [<=] _ [notation, in MSetsExtra.MSetWithDups]
    +_ [<=] _ [notation, in MSetsExtra.MSetWithDups]
    _ [=] _ [notation, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec2w [lemma, in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec1 [lemma, in MSetsExtra.MSetWithDups]
    @@ -1102,24 +2269,1944 @@

    Global Index

    WSetsWithDupsFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]
    WSetsWithFoldA [module, in MSetsExtra.MSetFoldWithAbort]
    WSetsWithFoldA.E [module, in MSetsExtra.MSetFoldWithAbort]
    -

    Z

    +

    X

    +xs':22 [binder, in MSetsExtra.MSetListWithDups]
    +xs:20 [binder, in MSetsExtra.MSetListWithDups]
    +xs:277 [binder, in MSetsExtra.MSetFoldWithAbort]
    +xx:804 [binder, in MSetsExtra.MSetIntervals]
    +x_pre:312 [binder, in MSetsExtra.MSetFoldWithAbort]
    +x':21 [binder, in MSetsExtra.MSetListWithDups]
    +x':798 [binder, in MSetsExtra.MSetIntervals]
    +x0:278 [binder, in MSetsExtra.MSetFoldWithAbort]
    +x0:281 [binder, in MSetsExtra.MSetFoldWithAbort]
    +x0:284 [binder, in MSetsExtra.MSetFoldWithAbort]
    +x1:18 [binder, in MSetsExtra.MSetIntervals]
    +x1:455 [binder, in MSetsExtra.MSetIntervals]
    +x1:459 [binder, in MSetsExtra.MSetIntervals]
    +x1:463 [binder, in MSetsExtra.MSetIntervals]
    +x1:484 [binder, in MSetsExtra.MSetIntervals]
    +x1:522 [binder, in MSetsExtra.MSetIntervals]
    +x1:589 [binder, in MSetsExtra.MSetIntervals]
    +x1:602 [binder, in MSetsExtra.MSetIntervals]
    +x1:607 [binder, in MSetsExtra.MSetIntervals]
    +x1:612 [binder, in MSetsExtra.MSetIntervals]
    +x1:614 [binder, in MSetsExtra.MSetIntervals]
    +x1:638 [binder, in MSetsExtra.MSetIntervals]
    +x1:651 [binder, in MSetsExtra.MSetIntervals]
    +x1:658 [binder, in MSetsExtra.MSetIntervals]
    +x1:664 [binder, in MSetsExtra.MSetIntervals]
    +x1:666 [binder, in MSetsExtra.MSetIntervals]
    +x1:870 [binder, in MSetsExtra.MSetIntervals]
    +x1:874 [binder, in MSetsExtra.MSetIntervals]
    +x1:879 [binder, in MSetsExtra.MSetIntervals]
    +x1:97 [binder, in MSetsExtra.MSetIntervals]
    +x2:19 [binder, in MSetsExtra.MSetIntervals]
    +x2:456 [binder, in MSetsExtra.MSetIntervals]
    +x2:460 [binder, in MSetsExtra.MSetIntervals]
    +x2:464 [binder, in MSetsExtra.MSetIntervals]
    +x2:486 [binder, in MSetsExtra.MSetIntervals]
    +x2:524 [binder, in MSetsExtra.MSetIntervals]
    +x2:590 [binder, in MSetsExtra.MSetIntervals]
    +x2:603 [binder, in MSetsExtra.MSetIntervals]
    +x2:608 [binder, in MSetsExtra.MSetIntervals]
    +x2:613 [binder, in MSetsExtra.MSetIntervals]
    +x2:615 [binder, in MSetsExtra.MSetIntervals]
    +x2:639 [binder, in MSetsExtra.MSetIntervals]
    +x2:652 [binder, in MSetsExtra.MSetIntervals]
    +x2:659 [binder, in MSetsExtra.MSetIntervals]
    +x2:665 [binder, in MSetsExtra.MSetIntervals]
    +x2:667 [binder, in MSetsExtra.MSetIntervals]
    +x2:871 [binder, in MSetsExtra.MSetIntervals]
    +x2:875 [binder, in MSetsExtra.MSetIntervals]
    +x2:880 [binder, in MSetsExtra.MSetIntervals]
    +x2:99 [binder, in MSetsExtra.MSetIntervals]
    +x:1 [binder, in MSetsExtra.MSetListWithDups]
    +x:10 [binder, in MSetsExtra.MSetIntervals]
    +x:100 [binder, in MSetsExtra.MSetListWithDups]
    +x:1000 [binder, in MSetsExtra.MSetIntervals]
    +x:1001 [binder, in MSetsExtra.MSetIntervals]
    +x:101 [binder, in MSetsExtra.MSetIntervals]
    +x:103 [binder, in MSetsExtra.MSetListWithDups]
    +x:105 [binder, in MSetsExtra.MSetListWithDups]
    +x:107 [binder, in MSetsExtra.MSetIntervals]
    +x:110 [binder, in MSetsExtra.MSetListWithDups]
    +x:111 [binder, in MSetsExtra.MSetIntervals]
    +x:113 [binder, in MSetsExtra.MSetIntervals]
    +x:114 [binder, in MSetsExtra.MSetListWithDups]
    +x:116 [binder, in MSetsExtra.MSetListWithDups]
    +x:118 [binder, in MSetsExtra.MSetIntervals]
    +x:12 [binder, in MSetsExtra.MSetWithDups]
    +x:120 [binder, in MSetsExtra.MSetListWithDups]
    +x:120 [binder, in MSetsExtra.MSetIntervals]
    +x:121 [binder, in MSetsExtra.MSetIntervals]
    +x:122 [binder, in MSetsExtra.MSetIntervals]
    +x:123 [binder, in MSetsExtra.MSetListWithDups]
    +x:126 [binder, in MSetsExtra.MSetListWithDups]
    +x:126 [binder, in MSetsExtra.MSetIntervals]
    +x:130 [binder, in MSetsExtra.MSetIntervals]
    +x:131 [binder, in MSetsExtra.MSetListWithDups]
    +x:132 [binder, in MSetsExtra.MSetIntervals]
    +x:134 [binder, in MSetsExtra.MSetListWithDups]
    +x:137 [binder, in MSetsExtra.MSetIntervals]
    +x:141 [binder, in MSetsExtra.MSetListWithDups]
    +x:144 [binder, in MSetsExtra.MSetListWithDups]
    +x:148 [binder, in MSetsExtra.MSetListWithDups]
    +x:15 [binder, in MSetsExtra.MSetWithDups]
    +x:151 [binder, in MSetsExtra.MSetListWithDups]
    +x:156 [binder, in MSetsExtra.MSetListWithDups]
    +x:161 [binder, in MSetsExtra.MSetListWithDups]
    +x:163 [binder, in MSetsExtra.MSetListWithDups]
    +x:166 [binder, in MSetsExtra.MSetListWithDups]
    +x:167 [binder, in MSetsExtra.MSetListWithDups]
    +x:179 [binder, in MSetsExtra.MSetIntervals]
    +x:186 [binder, in MSetsExtra.MSetIntervals]
    +x:19 [binder, in MSetsExtra.MSetListWithDups]
    +x:190 [binder, in MSetsExtra.MSetIntervals]
    +x:193 [binder, in MSetsExtra.MSetIntervals]
    +x:197 [binder, in MSetsExtra.MSetIntervals]
    +x:209 [binder, in MSetsExtra.MSetIntervals]
    +x:213 [binder, in MSetsExtra.MSetIntervals]
    +x:216 [binder, in MSetsExtra.MSetIntervals]
    +x:219 [binder, in MSetsExtra.MSetIntervals]
    +x:25 [binder, in MSetsExtra.MSetListWithDups]
    +x:255 [binder, in MSetsExtra.MSetIntervals]
    +x:257 [binder, in MSetsExtra.MSetIntervals]
    +x:269 [binder, in MSetsExtra.MSetIntervals]
    +x:271 [binder, in MSetsExtra.MSetIntervals]
    +x:283 [binder, in MSetsExtra.MSetIntervals]
    +x:286 [binder, in MSetsExtra.MSetIntervals]
    +x:287 [binder, in MSetsExtra.MSetIntervals]
    +x:291 [binder, in MSetsExtra.MSetIntervals]
    +x:293 [binder, in MSetsExtra.MSetIntervals]
    +x:294 [binder, in MSetsExtra.MSetIntervals]
    +x:296 [binder, in MSetsExtra.MSetIntervals]
    +x:299 [binder, in MSetsExtra.MSetIntervals]
    +x:303 [binder, in MSetsExtra.MSetIntervals]
    +x:305 [binder, in MSetsExtra.MSetIntervals]
    +x:307 [binder, in MSetsExtra.MSetIntervals]
    +x:31 [binder, in MSetsExtra.MSetListWithDups]
    +x:312 [binder, in MSetsExtra.MSetIntervals]
    +x:318 [binder, in MSetsExtra.MSetIntervals]
    +x:32 [binder, in MSetsExtra.MSetListWithDups]
    +x:323 [binder, in MSetsExtra.MSetIntervals]
    +x:327 [binder, in MSetsExtra.MSetIntervals]
    +x:33 [binder, in MSetsExtra.MSetListWithDups]
    +x:340 [binder, in MSetsExtra.MSetIntervals]
    +x:353 [binder, in MSetsExtra.MSetIntervals]
    +x:36 [binder, in MSetsExtra.MSetListWithDups]
    +x:368 [binder, in MSetsExtra.MSetIntervals]
    +x:37 [binder, in MSetsExtra.MSetWithDups]
    +x:373 [binder, in MSetsExtra.MSetIntervals]
    +x:376 [binder, in MSetsExtra.MSetIntervals]
    +x:383 [binder, in MSetsExtra.MSetIntervals]
    +x:39 [binder, in MSetsExtra.MSetWithDups]
    +x:392 [binder, in MSetsExtra.MSetIntervals]
    +x:397 [binder, in MSetsExtra.MSetIntervals]
    +x:40 [binder, in MSetsExtra.MSetListWithDups]
    +x:412 [binder, in MSetsExtra.MSetIntervals]
    +x:415 [binder, in MSetsExtra.MSetIntervals]
    +x:419 [binder, in MSetsExtra.MSetIntervals]
    +x:42 [binder, in MSetsExtra.MSetWithDups]
    +x:42 [binder, in MSetsExtra.MSetListWithDups]
    +x:422 [binder, in MSetsExtra.MSetIntervals]
    +x:431 [binder, in MSetsExtra.MSetIntervals]
    +x:438 [binder, in MSetsExtra.MSetIntervals]
    +x:439 [binder, in MSetsExtra.MSetIntervals]
    +x:443 [binder, in MSetsExtra.MSetIntervals]
    +x:446 [binder, in MSetsExtra.MSetIntervals]
    +x:449 [binder, in MSetsExtra.MSetIntervals]
    +x:468 [binder, in MSetsExtra.MSetIntervals]
    +x:469 [binder, in MSetsExtra.MSetIntervals]
    +x:471 [binder, in MSetsExtra.MSetIntervals]
    +x:473 [binder, in MSetsExtra.MSetIntervals]
    +x:476 [binder, in MSetsExtra.MSetIntervals]
    +x:479 [binder, in MSetsExtra.MSetIntervals]
    +x:48 [binder, in MSetsExtra.MSetWithDups]
    +x:482 [binder, in MSetsExtra.MSetIntervals]
    +x:488 [binder, in MSetsExtra.MSetIntervals]
    +x:491 [binder, in MSetsExtra.MSetIntervals]
    +x:495 [binder, in MSetsExtra.MSetIntervals]
    +x:499 [binder, in MSetsExtra.MSetIntervals]
    +x:5 [binder, in MSetsExtra.MSetListWithDups]
    +x:50 [binder, in MSetsExtra.MSetListWithDups]
    +x:502 [binder, in MSetsExtra.MSetIntervals]
    +x:506 [binder, in MSetsExtra.MSetIntervals]
    +x:509 [binder, in MSetsExtra.MSetIntervals]
    +x:529 [binder, in MSetsExtra.MSetIntervals]
    +x:532 [binder, in MSetsExtra.MSetIntervals]
    +x:536 [binder, in MSetsExtra.MSetIntervals]
    +x:539 [binder, in MSetsExtra.MSetIntervals]
    +x:542 [binder, in MSetsExtra.MSetIntervals]
    +x:545 [binder, in MSetsExtra.MSetIntervals]
    +x:548 [binder, in MSetsExtra.MSetIntervals]
    +x:549 [binder, in MSetsExtra.MSetIntervals]
    +x:55 [binder, in MSetsExtra.MSetWithDups]
    +x:553 [binder, in MSetsExtra.MSetIntervals]
    +x:57 [binder, in MSetsExtra.MSetIntervals]
    +x:578 [binder, in MSetsExtra.MSetIntervals]
    +x:58 [binder, in MSetsExtra.MSetListWithDups]
    +x:59 [binder, in MSetsExtra.MSetListWithDups]
    +x:627 [binder, in MSetsExtra.MSetIntervals]
    +x:640 [binder, in MSetsExtra.MSetIntervals]
    +x:642 [binder, in MSetsExtra.MSetIntervals]
    +x:646 [binder, in MSetsExtra.MSetIntervals]
    +x:647 [binder, in MSetsExtra.MSetIntervals]
    +x:648 [binder, in MSetsExtra.MSetIntervals]
    +x:650 [binder, in MSetsExtra.MSetIntervals]
    +x:653 [binder, in MSetsExtra.MSetIntervals]
    +x:66 [binder, in MSetsExtra.MSetIntervals]
    +x:663 [binder, in MSetsExtra.MSetIntervals]
    +x:679 [binder, in MSetsExtra.MSetIntervals]
    +x:68 [binder, in MSetsExtra.MSetListWithDups]
    +x:682 [binder, in MSetsExtra.MSetIntervals]
    +x:686 [binder, in MSetsExtra.MSetIntervals]
    +x:688 [binder, in MSetsExtra.MSetIntervals]
    +x:692 [binder, in MSetsExtra.MSetIntervals]
    +x:695 [binder, in MSetsExtra.MSetIntervals]
    +x:7 [binder, in MSetsExtra.MSetListWithDups]
    +x:700 [binder, in MSetsExtra.MSetIntervals]
    +x:730 [binder, in MSetsExtra.MSetIntervals]
    +x:733 [binder, in MSetsExtra.MSetIntervals]
    +x:744 [binder, in MSetsExtra.MSetIntervals]
    +x:76 [binder, in MSetsExtra.MSetIntervals]
    +x:768 [binder, in MSetsExtra.MSetIntervals]
    +x:771 [binder, in MSetsExtra.MSetIntervals]
    +x:776 [binder, in MSetsExtra.MSetIntervals]
    +x:778 [binder, in MSetsExtra.MSetIntervals]
    +x:78 [binder, in MSetsExtra.MSetIntervals]
    +x:782 [binder, in MSetsExtra.MSetIntervals]
    +x:784 [binder, in MSetsExtra.MSetIntervals]
    +x:787 [binder, in MSetsExtra.MSetIntervals]
    +x:792 [binder, in MSetsExtra.MSetIntervals]
    +x:797 [binder, in MSetsExtra.MSetIntervals]
    +x:8 [binder, in MSetsExtra.MSetIntervals]
    +x:800 [binder, in MSetsExtra.MSetIntervals]
    +x:802 [binder, in MSetsExtra.MSetIntervals]
    +x:807 [binder, in MSetsExtra.MSetIntervals]
    +x:809 [binder, in MSetsExtra.MSetIntervals]
    +x:812 [binder, in MSetsExtra.MSetIntervals]
    +x:82 [binder, in MSetsExtra.MSetIntervals]
    +x:826 [binder, in MSetsExtra.MSetIntervals]
    +x:830 [binder, in MSetsExtra.MSetIntervals]
    +x:831 [binder, in MSetsExtra.MSetIntervals]
    +x:836 [binder, in MSetsExtra.MSetIntervals]
    +x:839 [binder, in MSetsExtra.MSetIntervals]
    +x:847 [binder, in MSetsExtra.MSetIntervals]
    +x:856 [binder, in MSetsExtra.MSetIntervals]
    +x:863 [binder, in MSetsExtra.MSetIntervals]
    +x:88 [binder, in MSetsExtra.MSetListWithDups]
    +x:888 [binder, in MSetsExtra.MSetIntervals]
    +x:890 [binder, in MSetsExtra.MSetIntervals]
    +x:901 [binder, in MSetsExtra.MSetIntervals]
    +x:902 [binder, in MSetsExtra.MSetIntervals]
    +x:907 [binder, in MSetsExtra.MSetIntervals]
    +x:908 [binder, in MSetsExtra.MSetIntervals]
    +x:909 [binder, in MSetsExtra.MSetIntervals]
    +x:912 [binder, in MSetsExtra.MSetIntervals]
    +x:915 [binder, in MSetsExtra.MSetIntervals]
    +x:926 [binder, in MSetsExtra.MSetIntervals]
    +x:930 [binder, in MSetsExtra.MSetIntervals]
    +x:942 [binder, in MSetsExtra.MSetIntervals]
    +x:945 [binder, in MSetsExtra.MSetIntervals]
    +x:946 [binder, in MSetsExtra.MSetIntervals]
    +x:948 [binder, in MSetsExtra.MSetIntervals]
    +x:950 [binder, in MSetsExtra.MSetIntervals]
    +x:952 [binder, in MSetsExtra.MSetIntervals]
    +x:999 [binder, in MSetsExtra.MSetIntervals]
    +

    Y

    +yc1:89 [binder, in MSetsExtra.MSetIntervals]
    +yc2:88 [binder, in MSetsExtra.MSetIntervals]
    +yc2:93 [binder, in MSetsExtra.MSetIntervals]
    +yc:844 [binder, in MSetsExtra.MSetIntervals]
    +ys':27 [binder, in MSetsExtra.MSetListWithDups]
    +y':26 [binder, in MSetsExtra.MSetListWithDups]
    +y':774 [binder, in MSetsExtra.MSetIntervals]
    +y':835 [binder, in MSetsExtra.MSetIntervals]
    +y':860 [binder, in MSetsExtra.MSetIntervals]
    +y':865 [binder, in MSetsExtra.MSetIntervals]
    +y':866 [binder, in MSetsExtra.MSetIntervals]
    +y':872 [binder, in MSetsExtra.MSetIntervals]
    +y':873 [binder, in MSetsExtra.MSetIntervals]
    +y':878 [binder, in MSetsExtra.MSetIntervals]
    +y0:128 [binder, in MSetsExtra.MSetListWithDups]
    +y1:398 [binder, in MSetsExtra.MSetIntervals]
    +y1:402 [binder, in MSetsExtra.MSetIntervals]
    +y1:408 [binder, in MSetsExtra.MSetIntervals]
    +y1:5 [binder, in MSetsExtra.MSetIntervals]
    +y1:512 [binder, in MSetsExtra.MSetIntervals]
    +y1:516 [binder, in MSetsExtra.MSetIntervals]
    +y1:705 [binder, in MSetsExtra.MSetIntervals]
    +y1:713 [binder, in MSetsExtra.MSetIntervals]
    +y1:757 [binder, in MSetsExtra.MSetIntervals]
    +y1:90 [binder, in MSetsExtra.MSetIntervals]
    +y2:145 [binder, in MSetsExtra.MSetIntervals]
    +y2:166 [binder, in MSetsExtra.MSetIntervals]
    +y2:400 [binder, in MSetsExtra.MSetIntervals]
    +y2:404 [binder, in MSetsExtra.MSetIntervals]
    +y2:409 [binder, in MSetsExtra.MSetIntervals]
    +y2:466 [binder, in MSetsExtra.MSetIntervals]
    +y2:514 [binder, in MSetsExtra.MSetIntervals]
    +y2:518 [binder, in MSetsExtra.MSetIntervals]
    +y2:581 [binder, in MSetsExtra.MSetIntervals]
    +y2:585 [binder, in MSetsExtra.MSetIntervals]
    +y2:6 [binder, in MSetsExtra.MSetIntervals]
    +y2:630 [binder, in MSetsExtra.MSetIntervals]
    +y2:634 [binder, in MSetsExtra.MSetIntervals]
    +y2:708 [binder, in MSetsExtra.MSetIntervals]
    +y2:716 [binder, in MSetsExtra.MSetIntervals]
    +y2:758 [binder, in MSetsExtra.MSetIntervals]
    +y:11 [binder, in MSetsExtra.MSetIntervals]
    +y:111 [binder, in MSetsExtra.MSetListWithDups]
    +y:115 [binder, in MSetsExtra.MSetListWithDups]
    +y:117 [binder, in MSetsExtra.MSetListWithDups]
    +y:127 [binder, in MSetsExtra.MSetListWithDups]
    +y:135 [binder, in MSetsExtra.MSetListWithDups]
    +y:2 [binder, in MSetsExtra.MSetListWithDups]
    +y:279 [binder, in MSetsExtra.MSetFoldWithAbort]
    +y:282 [binder, in MSetsExtra.MSetFoldWithAbort]
    +y:285 [binder, in MSetsExtra.MSetFoldWithAbort]
    +y:302 [binder, in MSetsExtra.MSetIntervals]
    +y:304 [binder, in MSetsExtra.MSetIntervals]
    +y:360 [binder, in MSetsExtra.MSetIntervals]
    +y:381 [binder, in MSetsExtra.MSetIntervals]
    +y:382 [binder, in MSetsExtra.MSetIntervals]
    +y:388 [binder, in MSetsExtra.MSetIntervals]
    +y:390 [binder, in MSetsExtra.MSetIntervals]
    +y:391 [binder, in MSetsExtra.MSetIntervals]
    +y:394 [binder, in MSetsExtra.MSetIntervals]
    +y:406 [binder, in MSetsExtra.MSetIntervals]
    +y:423 [binder, in MSetsExtra.MSetIntervals]
    +y:428 [binder, in MSetsExtra.MSetIntervals]
    +y:433 [binder, in MSetsExtra.MSetIntervals]
    +y:437 [binder, in MSetsExtra.MSetIntervals]
    +y:442 [binder, in MSetsExtra.MSetIntervals]
    +y:445 [binder, in MSetsExtra.MSetIntervals]
    +y:448 [binder, in MSetsExtra.MSetIntervals]
    +y:452 [binder, in MSetsExtra.MSetIntervals]
    +y:493 [binder, in MSetsExtra.MSetIntervals]
    +y:505 [binder, in MSetsExtra.MSetIntervals]
    +y:52 [binder, in MSetsExtra.MSetListWithDups]
    +y:526 [binder, in MSetsExtra.MSetIntervals]
    +y:527 [binder, in MSetsExtra.MSetIntervals]
    +y:533 [binder, in MSetsExtra.MSetIntervals]
    +y:543 [binder, in MSetsExtra.MSetIntervals]
    +y:550 [binder, in MSetsExtra.MSetIntervals]
    +y:566 [binder, in MSetsExtra.MSetIntervals]
    +y:568 [binder, in MSetsExtra.MSetIntervals]
    +y:57 [binder, in MSetsExtra.MSetListWithDups]
    +y:591 [binder, in MSetsExtra.MSetIntervals]
    +y:592 [binder, in MSetsExtra.MSetIntervals]
    +y:593 [binder, in MSetsExtra.MSetIntervals]
    +y:594 [binder, in MSetsExtra.MSetIntervals]
    +y:595 [binder, in MSetsExtra.MSetIntervals]
    +y:596 [binder, in MSetsExtra.MSetIntervals]
    +y:597 [binder, in MSetsExtra.MSetIntervals]
    +y:598 [binder, in MSetsExtra.MSetIntervals]
    +y:599 [binder, in MSetsExtra.MSetIntervals]
    +y:6 [binder, in MSetsExtra.MSetListWithDups]
    +y:601 [binder, in MSetsExtra.MSetIntervals]
    +y:609 [binder, in MSetsExtra.MSetIntervals]
    +y:618 [binder, in MSetsExtra.MSetIntervals]
    +y:641 [binder, in MSetsExtra.MSetIntervals]
    +y:643 [binder, in MSetsExtra.MSetIntervals]
    +y:644 [binder, in MSetsExtra.MSetIntervals]
    +y:645 [binder, in MSetsExtra.MSetIntervals]
    +y:654 [binder, in MSetsExtra.MSetIntervals]
    +y:660 [binder, in MSetsExtra.MSetIntervals]
    +y:670 [binder, in MSetsExtra.MSetIntervals]
    +y:689 [binder, in MSetsExtra.MSetIntervals]
    +y:696 [binder, in MSetsExtra.MSetIntervals]
    +y:711 [binder, in MSetsExtra.MSetIntervals]
    +y:712 [binder, in MSetsExtra.MSetIntervals]
    +y:719 [binder, in MSetsExtra.MSetIntervals]
    +y:722 [binder, in MSetsExtra.MSetIntervals]
    +y:724 [binder, in MSetsExtra.MSetIntervals]
    +y:773 [binder, in MSetsExtra.MSetIntervals]
    +y:779 [binder, in MSetsExtra.MSetIntervals]
    +y:788 [binder, in MSetsExtra.MSetIntervals]
    +y:8 [binder, in MSetsExtra.MSetListWithDups]
    +y:803 [binder, in MSetsExtra.MSetIntervals]
    +y:813 [binder, in MSetsExtra.MSetIntervals]
    +y:845 [binder, in MSetsExtra.MSetIntervals]
    +y:848 [binder, in MSetsExtra.MSetIntervals]
    +y:853 [binder, in MSetsExtra.MSetIntervals]
    +y:896 [binder, in MSetsExtra.MSetIntervals]
    +y:9 [binder, in MSetsExtra.MSetIntervals]
    +

    Z

    Z_to_N_minus_neq_0 [lemma, in MSetsExtra.MSetIntervals]
    Z_lt_le_add_r [lemma, in MSetsExtra.MSetIntervals]
    Z_lt_add_r [lemma, in MSetsExtra.MSetIntervals]
    Z_le_add_r [lemma, in MSetsExtra.MSetIntervals]
    +z:1 [binder, in MSetsExtra.MSetIntervals]
    +z:1004 [binder, in MSetsExtra.MSetIntervals]
    +z:1005 [binder, in MSetsExtra.MSetIntervals]
    +z:1012 [binder, in MSetsExtra.MSetIntervals]
    +z:1019 [binder, in MSetsExtra.MSetIntervals]
    +z:206 [binder, in MSetsExtra.MSetIntervals]
    +z:227 [binder, in MSetsExtra.MSetIntervals]
    +z:233 [binder, in MSetsExtra.MSetIntervals]
    +z:237 [binder, in MSetsExtra.MSetIntervals]
    +z:241 [binder, in MSetsExtra.MSetIntervals]
    +z:3 [binder, in MSetsExtra.MSetIntervals]
    +z:411 [binder, in MSetsExtra.MSetIntervals]
    +z:418 [binder, in MSetsExtra.MSetIntervals]
    +z:475 [binder, in MSetsExtra.MSetIntervals]
    +z:520 [binder, in MSetsExtra.MSetIntervals]
    +z:534 [binder, in MSetsExtra.MSetIntervals]
    +z:537 [binder, in MSetsExtra.MSetIntervals]
    +z:750 [binder, in MSetsExtra.MSetIntervals]
    +z:884 [binder, in MSetsExtra.MSetIntervals]
    +z:885 [binder, in MSetsExtra.MSetIntervals]
    +z:886 [binder, in MSetsExtra.MSetIntervals]
    +z:891 [binder, in MSetsExtra.MSetIntervals]
    +z:892 [binder, in MSetsExtra.MSetIntervals]
    +z:893 [binder, in MSetsExtra.MSetIntervals]



    Notation Index

    -

    M

    -_ [<=] _ [in MSetsExtra.MSetListWithDups]
    +

    M

    +_ [<=] _ [in MSetsExtra.MSetListWithDups]
    _ [=] _ [in MSetsExtra.MSetListWithDups]
    -

    R

    -_ <=? _ [in MSetsExtra.MSetListWithDups]
    -

    W

    -_ [<=] _ [in MSetsExtra.MSetWithDups]
    +

    R

    +_ <=? _ [in MSetsExtra.MSetListWithDups]
    +

    W

    +_ [<=] _ [in MSetsExtra.MSetWithDups]
    _ [=] _ [in MSetsExtra.MSetWithDups]



    +

    Binder Index

    +

    A

    +ab:347 [in MSetsExtra.MSetIntervals]
    +ab:363 [in MSetsExtra.MSetIntervals]
    +acc_f:906 [in MSetsExtra.MSetIntervals]
    +acc_t:905 [in MSetsExtra.MSetIntervals]
    +acc_f:899 [in MSetsExtra.MSetIntervals]
    +acc_t:897 [in MSetsExtra.MSetIntervals]
    +acc_f:200 [in MSetsExtra.MSetIntervals]
    +acc_t:199 [in MSetsExtra.MSetIntervals]
    +acc_f:196 [in MSetsExtra.MSetIntervals]
    +acc_t:195 [in MSetsExtra.MSetIntervals]
    +acc':348 [in MSetsExtra.MSetIntervals]
    +acc':364 [in MSetsExtra.MSetIntervals]
    +acc:106 [in MSetsExtra.MSetIntervals]
    +acc:119 [in MSetsExtra.MSetListWithDups]
    +acc:125 [in MSetsExtra.MSetIntervals]
    +acc:141 [in MSetsExtra.MSetIntervals]
    +acc:147 [in MSetsExtra.MSetIntervals]
    +acc:15 [in MSetsExtra.MSetListWithDups]
    +acc:151 [in MSetsExtra.MSetIntervals]
    +acc:168 [in MSetsExtra.MSetIntervals]
    +acc:172 [in MSetsExtra.MSetIntervals]
    +acc:181 [in MSetsExtra.MSetIntervals]
    +acc:218 [in MSetsExtra.MSetIntervals]
    +acc:221 [in MSetsExtra.MSetIntervals]
    +acc:23 [in MSetsExtra.MSetIntervals]
    +acc:250 [in MSetsExtra.MSetFoldWithAbort]
    +acc:311 [in MSetsExtra.MSetIntervals]
    +acc:317 [in MSetsExtra.MSetIntervals]
    +acc:322 [in MSetsExtra.MSetIntervals]
    +acc:326 [in MSetsExtra.MSetIntervals]
    +acc:332 [in MSetsExtra.MSetIntervals]
    +acc:338 [in MSetsExtra.MSetIntervals]
    +acc:344 [in MSetsExtra.MSetIntervals]
    +acc:35 [in MSetsExtra.MSetIntervals]
    +acc:352 [in MSetsExtra.MSetIntervals]
    +acc:356 [in MSetsExtra.MSetIntervals]
    +acc:359 [in MSetsExtra.MSetIntervals]
    +acc:366 [in MSetsExtra.MSetFoldWithAbort]
    +acc:370 [in MSetsExtra.MSetFoldWithAbort]
    +acc:372 [in MSetsExtra.MSetIntervals]
    +acc:378 [in MSetsExtra.MSetFoldWithAbort]
    +acc:389 [in MSetsExtra.MSetFoldWithAbort]
    +acc:393 [in MSetsExtra.MSetFoldWithAbort]
    +acc:401 [in MSetsExtra.MSetFoldWithAbort]
    +acc:414 [in MSetsExtra.MSetIntervals]
    +acc:43 [in MSetsExtra.MSetListWithDups]
    +acc:558 [in MSetsExtra.MSetIntervals]
    +acc:56 [in MSetsExtra.MSetIntervals]
    +acc:561 [in MSetsExtra.MSetIntervals]
    +acc:584 [in MSetsExtra.MSetIntervals]
    +acc:588 [in MSetsExtra.MSetIntervals]
    +acc:600 [in MSetsExtra.MSetIntervals]
    +acc:606 [in MSetsExtra.MSetIntervals]
    +acc:633 [in MSetsExtra.MSetIntervals]
    +acc:637 [in MSetsExtra.MSetIntervals]
    +acc:649 [in MSetsExtra.MSetIntervals]
    +acc:65 [in MSetsExtra.MSetIntervals]
    +acc:657 [in MSetsExtra.MSetIntervals]
    +acc:684 [in MSetsExtra.MSetIntervals]
    +acc:70 [in MSetsExtra.MSetIntervals]
    +acc:832 [in MSetsExtra.MSetIntervals]
    +acc:837 [in MSetsExtra.MSetIntervals]
    +acc:840 [in MSetsExtra.MSetIntervals]
    +acc:852 [in MSetsExtra.MSetIntervals]
    +acc:857 [in MSetsExtra.MSetIntervals]
    +acc:864 [in MSetsExtra.MSetIntervals]
    +acc:869 [in MSetsExtra.MSetIntervals]
    +acc:9 [in MSetsExtra.MSetListWithDups]
    +a1:152 [in MSetsExtra.MSetListWithDups]
    +a1:3 [in MSetsExtra.MSetListWithDups]
    +a1:79 [in MSetsExtra.MSetListWithDups]
    +a2:153 [in MSetsExtra.MSetListWithDups]
    +a2:4 [in MSetsExtra.MSetListWithDups]
    +a2:80 [in MSetsExtra.MSetListWithDups]
    +a:1002 [in MSetsExtra.MSetIntervals]
    +a:1003 [in MSetsExtra.MSetIntervals]
    +A:102 [in MSetsExtra.MSetFoldWithAbort]
    +A:11 [in MSetsExtra.MSetFoldWithAbort]
    +A:12 [in MSetsExtra.MSetIntervals]
    +A:126 [in MSetsExtra.MSetFoldWithAbort]
    +A:130 [in MSetsExtra.MSetFoldWithAbort]
    +A:137 [in MSetsExtra.MSetListWithDups]
    +A:140 [in MSetsExtra.MSetFoldWithAbort]
    +A:147 [in MSetsExtra.MSetFoldWithAbort]
    +A:158 [in MSetsExtra.MSetFoldWithAbort]
    +A:175 [in MSetsExtra.MSetFoldWithAbort]
    +A:190 [in MSetsExtra.MSetFoldWithAbort]
    +A:20 [in MSetsExtra.MSetIntervals]
    +A:201 [in MSetsExtra.MSetFoldWithAbort]
    +A:218 [in MSetsExtra.MSetFoldWithAbort]
    +A:27 [in MSetsExtra.MSetIntervals]
    +a:275 [in MSetsExtra.MSetIntervals]
    +a:278 [in MSetsExtra.MSetIntervals]
    +a:280 [in MSetsExtra.MSetIntervals]
    +A:3 [in MSetsExtra.MSetFoldWithAbort]
    +A:30 [in MSetsExtra.MSetFoldWithAbort]
    +A:302 [in MSetsExtra.MSetFoldWithAbort]
    +A:308 [in MSetsExtra.MSetIntervals]
    +A:31 [in MSetsExtra.MSetIntervals]
    +A:315 [in MSetsExtra.MSetIntervals]
    +A:316 [in MSetsExtra.MSetFoldWithAbort]
    +A:32 [in MSetsExtra.MSetWithDups]
    +A:320 [in MSetsExtra.MSetIntervals]
    +A:324 [in MSetsExtra.MSetIntervals]
    +A:329 [in MSetsExtra.MSetIntervals]
    +A:336 [in MSetsExtra.MSetIntervals]
    +A:341 [in MSetsExtra.MSetIntervals]
    +A:343 [in MSetsExtra.MSetFoldWithAbort]
    +A:349 [in MSetsExtra.MSetIntervals]
    +A:35 [in MSetsExtra.MSetFoldWithAbort]
    +A:351 [in MSetsExtra.MSetFoldWithAbort]
    +A:354 [in MSetsExtra.MSetIntervals]
    +A:357 [in MSetsExtra.MSetIntervals]
    +A:359 [in MSetsExtra.MSetFoldWithAbort]
    +A:36 [in MSetsExtra.MSetIntervals]
    +A:369 [in MSetsExtra.MSetIntervals]
    +A:37 [in MSetsExtra.MSetFoldWithAbort]
    +A:371 [in MSetsExtra.MSetFoldWithAbort]
    +A:382 [in MSetsExtra.MSetFoldWithAbort]
    +A:39 [in MSetsExtra.MSetFoldWithAbort]
    +A:394 [in MSetsExtra.MSetFoldWithAbort]
    +a:4 [in MSetsExtra.MSetWithDups]
    +A:54 [in MSetsExtra.MSetIntervals]
    +A:58 [in MSetsExtra.MSetFoldWithAbort]
    +A:63 [in MSetsExtra.MSetFoldWithAbort]
    +A:63 [in MSetsExtra.MSetIntervals]
    +A:65 [in MSetsExtra.MSetFoldWithAbort]
    +A:67 [in MSetsExtra.MSetFoldWithAbort]
    +A:68 [in MSetsExtra.MSetIntervals]
    +A:7 [in MSetsExtra.MSetFoldWithAbort]
    +a:7 [in MSetsExtra.MSetWithDups]
    +A:817 [in MSetsExtra.MSetIntervals]
    +A:9 [in MSetsExtra.MSetFoldWithAbort]
    +a:9 [in MSetsExtra.MSetWithDups]
    +A:91 [in MSetsExtra.MSetFoldWithAbort]
    +a:92 [in MSetsExtra.MSetListWithDups]
    +a:934 [in MSetsExtra.MSetIntervals]
    +a:937 [in MSetsExtra.MSetIntervals]
    +a:939 [in MSetsExtra.MSetIntervals]
    +a:95 [in MSetsExtra.MSetListWithDups]
    +A:97 [in MSetsExtra.MSetFoldWithAbort]
    +a:97 [in MSetsExtra.MSetListWithDups]
    +A:970 [in MSetsExtra.MSetIntervals]
    +a:985 [in MSetsExtra.MSetIntervals]
    +a:986 [in MSetsExtra.MSetIntervals]
    +a:987 [in MSetsExtra.MSetIntervals]
    +a:988 [in MSetsExtra.MSetIntervals]
    +A:99 [in MSetsExtra.MSetFoldWithAbort]
    +A:994 [in MSetsExtra.MSetIntervals]
    +a:997 [in MSetsExtra.MSetIntervals]
    +

    B

    +base:309 [in MSetsExtra.MSetFoldWithAbort]
    +base:350 [in MSetsExtra.MSetFoldWithAbort]
    +base:358 [in MSetsExtra.MSetFoldWithAbort]
    +base:366 [in MSetsExtra.MSetIntervals]
    +bs:333 [in MSetsExtra.MSetIntervals]
    +bs:337 [in MSetsExtra.MSetIntervals]
    +B:100 [in MSetsExtra.MSetFoldWithAbort]
    +B:103 [in MSetsExtra.MSetFoldWithAbort]
    +B:127 [in MSetsExtra.MSetFoldWithAbort]
    +B:13 [in MSetsExtra.MSetIntervals]
    +B:159 [in MSetsExtra.MSetFoldWithAbort]
    +B:21 [in MSetsExtra.MSetIntervals]
    +B:212 [in MSetsExtra.MSetFoldWithAbort]
    +B:227 [in MSetsExtra.MSetFoldWithAbort]
    +B:228 [in MSetsExtra.MSetIntervals]
    +b:232 [in MSetsExtra.MSetIntervals]
    +b:236 [in MSetsExtra.MSetIntervals]
    +B:237 [in MSetsExtra.MSetFoldWithAbort]
    +b:240 [in MSetsExtra.MSetIntervals]
    +B:253 [in MSetsExtra.MSetFoldWithAbort]
    +B:268 [in MSetsExtra.MSetFoldWithAbort]
    +B:28 [in MSetsExtra.MSetIntervals]
    +B:287 [in MSetsExtra.MSetFoldWithAbort]
    +B:290 [in MSetsExtra.MSetFoldWithAbort]
    +B:294 [in MSetsExtra.MSetFoldWithAbort]
    +B:297 [in MSetsExtra.MSetFoldWithAbort]
    +B:303 [in MSetsExtra.MSetFoldWithAbort]
    +B:317 [in MSetsExtra.MSetFoldWithAbort]
    +B:32 [in MSetsExtra.MSetIntervals]
    +B:330 [in MSetsExtra.MSetIntervals]
    +B:342 [in MSetsExtra.MSetIntervals]
    +B:344 [in MSetsExtra.MSetFoldWithAbort]
    +B:352 [in MSetsExtra.MSetFoldWithAbort]
    +B:360 [in MSetsExtra.MSetFoldWithAbort]
    +B:37 [in MSetsExtra.MSetIntervals]
    +B:372 [in MSetsExtra.MSetFoldWithAbort]
    +B:383 [in MSetsExtra.MSetFoldWithAbort]
    +B:395 [in MSetsExtra.MSetFoldWithAbort]
    +B:60 [in MSetsExtra.MSetListWithDups]
    +B:92 [in MSetsExtra.MSetFoldWithAbort]
    +

    C

    +cur:178 [in MSetsExtra.MSetIntervals]
    +cur:182 [in MSetsExtra.MSetIntervals]
    +cur:858 [in MSetsExtra.MSetIntervals]
    +cx:306 [in MSetsExtra.MSetIntervals]
    +c_f:900 [in MSetsExtra.MSetIntervals]
    +c_t:898 [in MSetsExtra.MSetIntervals]
    +c1:298 [in MSetsExtra.MSetIntervals]
    +c1:399 [in MSetsExtra.MSetIntervals]
    +c1:403 [in MSetsExtra.MSetIntervals]
    +c1:485 [in MSetsExtra.MSetIntervals]
    +c1:510 [in MSetsExtra.MSetIntervals]
    +c1:513 [in MSetsExtra.MSetIntervals]
    +c1:517 [in MSetsExtra.MSetIntervals]
    +c1:523 [in MSetsExtra.MSetIntervals]
    +c1:706 [in MSetsExtra.MSetIntervals]
    +c1:714 [in MSetsExtra.MSetIntervals]
    +c1:759 [in MSetsExtra.MSetIntervals]
    +c1:98 [in MSetsExtra.MSetIntervals]
    +c2:100 [in MSetsExtra.MSetIntervals]
    +c2:146 [in MSetsExtra.MSetIntervals]
    +c2:167 [in MSetsExtra.MSetIntervals]
    +c2:297 [in MSetsExtra.MSetIntervals]
    +c2:401 [in MSetsExtra.MSetIntervals]
    +c2:405 [in MSetsExtra.MSetIntervals]
    +c2:410 [in MSetsExtra.MSetIntervals]
    +c2:467 [in MSetsExtra.MSetIntervals]
    +c2:487 [in MSetsExtra.MSetIntervals]
    +c2:511 [in MSetsExtra.MSetIntervals]
    +c2:515 [in MSetsExtra.MSetIntervals]
    +c2:519 [in MSetsExtra.MSetIntervals]
    +c2:525 [in MSetsExtra.MSetIntervals]
    +c2:582 [in MSetsExtra.MSetIntervals]
    +c2:586 [in MSetsExtra.MSetIntervals]
    +c2:631 [in MSetsExtra.MSetIntervals]
    +c2:635 [in MSetsExtra.MSetIntervals]
    +c2:709 [in MSetsExtra.MSetIntervals]
    +c2:717 [in MSetsExtra.MSetIntervals]
    +c2:760 [in MSetsExtra.MSetIntervals]
    +c:102 [in MSetsExtra.MSetIntervals]
    +c:123 [in MSetsExtra.MSetIntervals]
    +c:191 [in MSetsExtra.MSetIntervals]
    +c:198 [in MSetsExtra.MSetIntervals]
    +c:214 [in MSetsExtra.MSetIntervals]
    +c:220 [in MSetsExtra.MSetIntervals]
    +c:242 [in MSetsExtra.MSetIntervals]
    +c:288 [in MSetsExtra.MSetIntervals]
    +c:292 [in MSetsExtra.MSetIntervals]
    +c:295 [in MSetsExtra.MSetIntervals]
    +c:300 [in MSetsExtra.MSetIntervals]
    +c:301 [in MSetsExtra.MSetIntervals]
    +c:310 [in MSetsExtra.MSetIntervals]
    +c:328 [in MSetsExtra.MSetIntervals]
    +c:351 [in MSetsExtra.MSetIntervals]
    +c:361 [in MSetsExtra.MSetIntervals]
    +c:374 [in MSetsExtra.MSetIntervals]
    +c:377 [in MSetsExtra.MSetIntervals]
    +c:384 [in MSetsExtra.MSetIntervals]
    +c:393 [in MSetsExtra.MSetIntervals]
    +c:396 [in MSetsExtra.MSetIntervals]
    +c:420 [in MSetsExtra.MSetIntervals]
    +c:429 [in MSetsExtra.MSetIntervals]
    +c:432 [in MSetsExtra.MSetIntervals]
    +c:434 [in MSetsExtra.MSetIntervals]
    +c:489 [in MSetsExtra.MSetIntervals]
    +c:492 [in MSetsExtra.MSetIntervals]
    +c:496 [in MSetsExtra.MSetIntervals]
    +c:500 [in MSetsExtra.MSetIntervals]
    +c:503 [in MSetsExtra.MSetIntervals]
    +c:507 [in MSetsExtra.MSetIntervals]
    +c:530 [in MSetsExtra.MSetIntervals]
    +c:58 [in MSetsExtra.MSetIntervals]
    +c:67 [in MSetsExtra.MSetIntervals]
    +c:7 [in MSetsExtra.MSetIntervals]
    +c:732 [in MSetsExtra.MSetIntervals]
    +c:767 [in MSetsExtra.MSetIntervals]
    +c:821 [in MSetsExtra.MSetIntervals]
    +c:833 [in MSetsExtra.MSetIntervals]
    +c:838 [in MSetsExtra.MSetIntervals]
    +c:841 [in MSetsExtra.MSetIntervals]
    +c:842 [in MSetsExtra.MSetIntervals]
    +c:846 [in MSetsExtra.MSetIntervals]
    +c:851 [in MSetsExtra.MSetIntervals]
    +c:855 [in MSetsExtra.MSetIntervals]
    +c:862 [in MSetsExtra.MSetIntervals]
    +c:895 [in MSetsExtra.MSetIntervals]
    +

    E

    +elt:1 [in MSetsExtra.MSetFoldWithAbort]
    +elt:28 [in MSetsExtra.MSetFoldWithAbort]
    +elt:31 [in MSetsExtra.MSetFoldWithAbort]
    +elt:4 [in MSetsExtra.MSetFoldWithAbort]
    +elt:56 [in MSetsExtra.MSetFoldWithAbort]
    +elt:59 [in MSetsExtra.MSetFoldWithAbort]
    +elt:89 [in MSetsExtra.MSetFoldWithAbort]
    +elt:93 [in MSetsExtra.MSetFoldWithAbort]
    +eqA:14 [in MSetsExtra.MSetIntervals]
    +eqB:15 [in MSetsExtra.MSetIntervals]
    +e_pre:261 [in MSetsExtra.MSetFoldWithAbort]
    +e_pre:244 [in MSetsExtra.MSetFoldWithAbort]
    +e_pre:233 [in MSetsExtra.MSetFoldWithAbort]
    +e0:251 [in MSetsExtra.MSetFoldWithAbort]
    +e0:341 [in MSetsExtra.MSetFoldWithAbort]
    +e0:342 [in MSetsExtra.MSetFoldWithAbort]
    +e1:1007 [in MSetsExtra.MSetIntervals]
    +e1:1009 [in MSetsExtra.MSetIntervals]
    +e1:1014 [in MSetsExtra.MSetIntervals]
    +e1:1016 [in MSetsExtra.MSetIntervals]
    +e1:1021 [in MSetsExtra.MSetIntervals]
    +e1:1023 [in MSetsExtra.MSetIntervals]
    +e1:118 [in MSetsExtra.MSetFoldWithAbort]
    +e1:122 [in MSetsExtra.MSetFoldWithAbort]
    +e1:156 [in MSetsExtra.MSetFoldWithAbort]
    +e1:169 [in MSetsExtra.MSetFoldWithAbort]
    +e1:172 [in MSetsExtra.MSetFoldWithAbort]
    +e1:184 [in MSetsExtra.MSetFoldWithAbort]
    +e1:187 [in MSetsExtra.MSetFoldWithAbort]
    +e1:198 [in MSetsExtra.MSetFoldWithAbort]
    +e1:209 [in MSetsExtra.MSetFoldWithAbort]
    +e1:223 [in MSetsExtra.MSetFoldWithAbort]
    +e1:225 [in MSetsExtra.MSetFoldWithAbort]
    +e1:24 [in MSetsExtra.MSetFoldWithAbort]
    +e1:332 [in MSetsExtra.MSetFoldWithAbort]
    +e1:336 [in MSetsExtra.MSetFoldWithAbort]
    +e1:44 [in MSetsExtra.MSetIntervals]
    +e1:47 [in MSetsExtra.MSetIntervals]
    +e1:52 [in MSetsExtra.MSetFoldWithAbort]
    +e1:81 [in MSetsExtra.MSetFoldWithAbort]
    +e1:85 [in MSetsExtra.MSetFoldWithAbort]
    +e2:1008 [in MSetsExtra.MSetIntervals]
    +e2:1010 [in MSetsExtra.MSetIntervals]
    +e2:1015 [in MSetsExtra.MSetIntervals]
    +e2:1017 [in MSetsExtra.MSetIntervals]
    +e2:1022 [in MSetsExtra.MSetIntervals]
    +e2:1024 [in MSetsExtra.MSetIntervals]
    +e2:121 [in MSetsExtra.MSetFoldWithAbort]
    +e2:125 [in MSetsExtra.MSetFoldWithAbort]
    +e2:157 [in MSetsExtra.MSetFoldWithAbort]
    +e2:171 [in MSetsExtra.MSetFoldWithAbort]
    +e2:174 [in MSetsExtra.MSetFoldWithAbort]
    +e2:186 [in MSetsExtra.MSetFoldWithAbort]
    +e2:189 [in MSetsExtra.MSetFoldWithAbort]
    +e2:200 [in MSetsExtra.MSetFoldWithAbort]
    +e2:211 [in MSetsExtra.MSetFoldWithAbort]
    +e2:224 [in MSetsExtra.MSetFoldWithAbort]
    +e2:226 [in MSetsExtra.MSetFoldWithAbort]
    +e2:27 [in MSetsExtra.MSetFoldWithAbort]
    +e2:335 [in MSetsExtra.MSetFoldWithAbort]
    +e2:339 [in MSetsExtra.MSetFoldWithAbort]
    +e2:45 [in MSetsExtra.MSetIntervals]
    +e2:48 [in MSetsExtra.MSetIntervals]
    +e2:55 [in MSetsExtra.MSetFoldWithAbort]
    +e2:84 [in MSetsExtra.MSetFoldWithAbort]
    +e2:88 [in MSetsExtra.MSetFoldWithAbort]
    +e:1006 [in MSetsExtra.MSetIntervals]
    +e:1013 [in MSetsExtra.MSetIntervals]
    +e:1020 [in MSetsExtra.MSetIntervals]
    +e:115 [in MSetsExtra.MSetFoldWithAbort]
    +e:116 [in MSetsExtra.MSetFoldWithAbort]
    +e:134 [in MSetsExtra.MSetFoldWithAbort]
    +e:136 [in MSetsExtra.MSetFoldWithAbort]
    +e:138 [in MSetsExtra.MSetFoldWithAbort]
    +e:143 [in MSetsExtra.MSetFoldWithAbort]
    +e:145 [in MSetsExtra.MSetFoldWithAbort]
    +e:150 [in MSetsExtra.MSetFoldWithAbort]
    +e:152 [in MSetsExtra.MSetFoldWithAbort]
    +e:154 [in MSetsExtra.MSetFoldWithAbort]
    +e:167 [in MSetsExtra.MSetFoldWithAbort]
    +e:182 [in MSetsExtra.MSetFoldWithAbort]
    +e:196 [in MSetsExtra.MSetFoldWithAbort]
    +e:207 [in MSetsExtra.MSetFoldWithAbort]
    +e:21 [in MSetsExtra.MSetFoldWithAbort]
    +e:22 [in MSetsExtra.MSetFoldWithAbort]
    +e:222 [in MSetsExtra.MSetFoldWithAbort]
    +e:230 [in MSetsExtra.MSetFoldWithAbort]
    +e:232 [in MSetsExtra.MSetFoldWithAbort]
    +e:235 [in MSetsExtra.MSetFoldWithAbort]
    +e:241 [in MSetsExtra.MSetFoldWithAbort]
    +e:243 [in MSetsExtra.MSetFoldWithAbort]
    +e:246 [in MSetsExtra.MSetFoldWithAbort]
    +e:248 [in MSetsExtra.MSetFoldWithAbort]
    +e:256 [in MSetsExtra.MSetFoldWithAbort]
    +e:256 [in MSetsExtra.MSetIntervals]
    +e:260 [in MSetsExtra.MSetFoldWithAbort]
    +e:264 [in MSetsExtra.MSetFoldWithAbort]
    +e:272 [in MSetsExtra.MSetFoldWithAbort]
    +e:273 [in MSetsExtra.MSetFoldWithAbort]
    +e:274 [in MSetsExtra.MSetFoldWithAbort]
    +e:301 [in MSetsExtra.MSetFoldWithAbort]
    +e:329 [in MSetsExtra.MSetFoldWithAbort]
    +e:330 [in MSetsExtra.MSetFoldWithAbort]
    +e:340 [in MSetsExtra.MSetFoldWithAbort]
    +e:379 [in MSetsExtra.MSetFoldWithAbort]
    +e:380 [in MSetsExtra.MSetFoldWithAbort]
    +e:402 [in MSetsExtra.MSetFoldWithAbort]
    +e:403 [in MSetsExtra.MSetFoldWithAbort]
    +e:405 [in MSetsExtra.MSetFoldWithAbort]
    +e:42 [in MSetsExtra.MSetIntervals]
    +e:49 [in MSetsExtra.MSetFoldWithAbort]
    +e:50 [in MSetsExtra.MSetFoldWithAbort]
    +e:772 [in MSetsExtra.MSetIntervals]
    +e:78 [in MSetsExtra.MSetFoldWithAbort]
    +e:79 [in MSetsExtra.MSetFoldWithAbort]
    +e:998 [in MSetsExtra.MSetIntervals]
    +

    F

    +foldWithAbortGtLt:66 [in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbortGt:38 [in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbortPrecompute:101 [in MSetsExtra.MSetFoldWithAbort]
    +foldWithAbort:10 [in MSetsExtra.MSetFoldWithAbort]
    +fold:36 [in MSetsExtra.MSetFoldWithAbort]
    +fold:64 [in MSetsExtra.MSetFoldWithAbort]
    +fold:8 [in MSetsExtra.MSetFoldWithAbort]
    +fold:98 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:221 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:228 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:238 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:254 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:269 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:288 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:291 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:295 [in MSetsExtra.MSetFoldWithAbort]
    +fwasa:298 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:399 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:397 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:396 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:387 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:385 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:384 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:376 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:374 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:373 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:364 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:362 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:361 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:356 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:354 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:353 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:348 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:346 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:345 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:324 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:323 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:320 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:307 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:305 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:304 [in MSetsExtra.MSetFoldWithAbort]
    +f_abort:205 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:194 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:180 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:179 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:165 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:164 [in MSetsExtra.MSetFoldWithAbort]
    +f_pre:161 [in MSetsExtra.MSetFoldWithAbort]
    +f_abort:149 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:142 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:133 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:131 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:110 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:109 [in MSetsExtra.MSetFoldWithAbort]
    +f_precompute:106 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:73 [in MSetsExtra.MSetFoldWithAbort]
    +f_lt:72 [in MSetsExtra.MSetFoldWithAbort]
    +f_gt:44 [in MSetsExtra.MSetFoldWithAbort]
    +f_abort:16 [in MSetsExtra.MSetFoldWithAbort]
    +f':108 [in MSetsExtra.MSetFoldWithAbort]
    +f':15 [in MSetsExtra.MSetFoldWithAbort]
    +f':163 [in MSetsExtra.MSetFoldWithAbort]
    +f':178 [in MSetsExtra.MSetFoldWithAbort]
    +f':193 [in MSetsExtra.MSetFoldWithAbort]
    +f':204 [in MSetsExtra.MSetFoldWithAbort]
    +f':322 [in MSetsExtra.MSetFoldWithAbort]
    +f':43 [in MSetsExtra.MSetFoldWithAbort]
    +f':71 [in MSetsExtra.MSetFoldWithAbort]
    +f:107 [in MSetsExtra.MSetFoldWithAbort]
    +f:121 [in MSetsExtra.MSetListWithDups]
    +f:124 [in MSetsExtra.MSetListWithDups]
    +f:132 [in MSetsExtra.MSetFoldWithAbort]
    +f:139 [in MSetsExtra.MSetListWithDups]
    +f:14 [in MSetsExtra.MSetFoldWithAbort]
    +f:141 [in MSetsExtra.MSetFoldWithAbort]
    +f:147 [in MSetsExtra.MSetListWithDups]
    +f:148 [in MSetsExtra.MSetFoldWithAbort]
    +f:150 [in MSetsExtra.MSetListWithDups]
    +f:155 [in MSetsExtra.MSetListWithDups]
    +f:158 [in MSetsExtra.MSetListWithDups]
    +f:16 [in MSetsExtra.MSetIntervals]
    +f:160 [in MSetsExtra.MSetListWithDups]
    +f:162 [in MSetsExtra.MSetFoldWithAbort]
    +f:177 [in MSetsExtra.MSetFoldWithAbort]
    +f:184 [in MSetsExtra.MSetIntervals]
    +f:188 [in MSetsExtra.MSetIntervals]
    +f:192 [in MSetsExtra.MSetFoldWithAbort]
    +f:194 [in MSetsExtra.MSetIntervals]
    +f:201 [in MSetsExtra.MSetIntervals]
    +f:203 [in MSetsExtra.MSetFoldWithAbort]
    +f:205 [in MSetsExtra.MSetIntervals]
    +f:207 [in MSetsExtra.MSetIntervals]
    +f:211 [in MSetsExtra.MSetIntervals]
    +f:217 [in MSetsExtra.MSetIntervals]
    +f:22 [in MSetsExtra.MSetIntervals]
    +f:222 [in MSetsExtra.MSetIntervals]
    +f:226 [in MSetsExtra.MSetIntervals]
    +f:229 [in MSetsExtra.MSetIntervals]
    +f:234 [in MSetsExtra.MSetIntervals]
    +f:238 [in MSetsExtra.MSetIntervals]
    +f:29 [in MSetsExtra.MSetIntervals]
    +f:306 [in MSetsExtra.MSetFoldWithAbort]
    +f:309 [in MSetsExtra.MSetIntervals]
    +f:316 [in MSetsExtra.MSetIntervals]
    +f:321 [in MSetsExtra.MSetFoldWithAbort]
    +f:321 [in MSetsExtra.MSetIntervals]
    +f:325 [in MSetsExtra.MSetIntervals]
    +f:33 [in MSetsExtra.MSetIntervals]
    +f:331 [in MSetsExtra.MSetIntervals]
    +f:34 [in MSetsExtra.MSetWithDups]
    +f:343 [in MSetsExtra.MSetIntervals]
    +f:347 [in MSetsExtra.MSetFoldWithAbort]
    +f:350 [in MSetsExtra.MSetIntervals]
    +f:355 [in MSetsExtra.MSetFoldWithAbort]
    +f:355 [in MSetsExtra.MSetIntervals]
    +f:358 [in MSetsExtra.MSetIntervals]
    +f:363 [in MSetsExtra.MSetFoldWithAbort]
    +f:370 [in MSetsExtra.MSetIntervals]
    +f:375 [in MSetsExtra.MSetFoldWithAbort]
    +f:38 [in MSetsExtra.MSetIntervals]
    +f:386 [in MSetsExtra.MSetFoldWithAbort]
    +f:398 [in MSetsExtra.MSetFoldWithAbort]
    +f:42 [in MSetsExtra.MSetFoldWithAbort]
    +f:44 [in MSetsExtra.MSetListWithDups]
    +f:48 [in MSetsExtra.MSetListWithDups]
    +f:55 [in MSetsExtra.MSetIntervals]
    +f:61 [in MSetsExtra.MSetListWithDups]
    +f:64 [in MSetsExtra.MSetIntervals]
    +f:69 [in MSetsExtra.MSetIntervals]
    +f:70 [in MSetsExtra.MSetFoldWithAbort]
    +f:71 [in MSetsExtra.MSetListWithDups]
    +f:75 [in MSetsExtra.MSetListWithDups]
    +f:81 [in MSetsExtra.MSetListWithDups]
    +f:819 [in MSetsExtra.MSetIntervals]
    +f:824 [in MSetsExtra.MSetIntervals]
    +f:828 [in MSetsExtra.MSetIntervals]
    +f:854 [in MSetsExtra.MSetIntervals]
    +f:861 [in MSetsExtra.MSetIntervals]
    +f:867 [in MSetsExtra.MSetIntervals]
    +f:876 [in MSetsExtra.MSetIntervals]
    +f:882 [in MSetsExtra.MSetIntervals]
    +f:889 [in MSetsExtra.MSetIntervals]
    +f:894 [in MSetsExtra.MSetIntervals]
    +f:903 [in MSetsExtra.MSetIntervals]
    +f:910 [in MSetsExtra.MSetIntervals]
    +f:913 [in MSetsExtra.MSetIntervals]
    +f:917 [in MSetsExtra.MSetIntervals]
    +f:920 [in MSetsExtra.MSetIntervals]
    +f:923 [in MSetsExtra.MSetIntervals]
    +f:925 [in MSetsExtra.MSetIntervals]
    +f:971 [in MSetsExtra.MSetIntervals]
    +f:974 [in MSetsExtra.MSetIntervals]
    +f:976 [in MSetsExtra.MSetIntervals]
    +f:978 [in MSetsExtra.MSetIntervals]
    +f:980 [in MSetsExtra.MSetIntervals]
    +f:996 [in MSetsExtra.MSetIntervals]
    +

    H

    +Heq:62 [in MSetsExtra.MSetIntervals]
    +Hs':580 [in MSetsExtra.MSetIntervals]
    +Hs':629 [in MSetsExtra.MSetIntervals]
    +Hs':681 [in MSetsExtra.MSetIntervals]
    +Hs':728 [in MSetsExtra.MSetIntervals]
    +Hs':743 [in MSetsExtra.MSetIntervals]
    +Hs':748 [in MSetsExtra.MSetIntervals]
    +Hs:268 [in MSetsExtra.MSetIntervals]
    +Hs:480 [in MSetsExtra.MSetIntervals]
    +Hs:483 [in MSetsExtra.MSetIntervals]
    +Hs:544 [in MSetsExtra.MSetIntervals]
    +Hs:547 [in MSetsExtra.MSetIntervals]
    +Hs:579 [in MSetsExtra.MSetIntervals]
    +Hs:628 [in MSetsExtra.MSetIntervals]
    +Hs:680 [in MSetsExtra.MSetIntervals]
    +Hs:690 [in MSetsExtra.MSetIntervals]
    +Hs:697 [in MSetsExtra.MSetIntervals]
    +Hs:727 [in MSetsExtra.MSetIntervals]
    +Hs:731 [in MSetsExtra.MSetIntervals]
    +Hs:735 [in MSetsExtra.MSetIntervals]
    +Hs:737 [in MSetsExtra.MSetIntervals]
    +Hs:742 [in MSetsExtra.MSetIntervals]
    +Hs:747 [in MSetsExtra.MSetIntervals]
    +Hs:780 [in MSetsExtra.MSetIntervals]
    +Hs:785 [in MSetsExtra.MSetIntervals]
    +Hs:789 [in MSetsExtra.MSetIntervals]
    +Hs:793 [in MSetsExtra.MSetIntervals]
    +Hs:810 [in MSetsExtra.MSetIntervals]
    +Hs:814 [in MSetsExtra.MSetIntervals]
    +Hs:825 [in MSetsExtra.MSetIntervals]
    +Hs:829 [in MSetsExtra.MSetIntervals]
    +H0:575 [in MSetsExtra.MSetIntervals]
    +H0:624 [in MSetsExtra.MSetIntervals]
    +H0:676 [in MSetsExtra.MSetIntervals]
    +H1:313 [in MSetsExtra.MSetIntervals]
    +H2:314 [in MSetsExtra.MSetIntervals]
    +H:540 [in MSetsExtra.MSetIntervals]
    +H:574 [in MSetsExtra.MSetIntervals]
    +H:59 [in MSetsExtra.MSetIntervals]
    +H:623 [in MSetsExtra.MSetIntervals]
    +H:675 [in MSetsExtra.MSetIntervals]
    +H:693 [in MSetsExtra.MSetIntervals]
    +H:883 [in MSetsExtra.MSetIntervals]
    +H:918 [in MSetsExtra.MSetIntervals]
    +H:921 [in MSetsExtra.MSetIntervals]
    +

    I

    +In:34 [in MSetsExtra.MSetFoldWithAbort]
    +In:6 [in MSetsExtra.MSetFoldWithAbort]
    +In:62 [in MSetsExtra.MSetFoldWithAbort]
    +In:96 [in MSetsExtra.MSetFoldWithAbort]
    +i':105 [in MSetsExtra.MSetFoldWithAbort]
    +i':13 [in MSetsExtra.MSetFoldWithAbort]
    +i':319 [in MSetsExtra.MSetFoldWithAbort]
    +i':41 [in MSetsExtra.MSetFoldWithAbort]
    +i':69 [in MSetsExtra.MSetFoldWithAbort]
    +i1:86 [in MSetsExtra.MSetIntervals]
    +i2:87 [in MSetsExtra.MSetIntervals]
    +i:104 [in MSetsExtra.MSetFoldWithAbort]
    +i:12 [in MSetsExtra.MSetFoldWithAbort]
    +i:138 [in MSetsExtra.MSetListWithDups]
    +i:160 [in MSetsExtra.MSetFoldWithAbort]
    +i:176 [in MSetsExtra.MSetFoldWithAbort]
    +i:191 [in MSetsExtra.MSetFoldWithAbort]
    +i:202 [in MSetsExtra.MSetFoldWithAbort]
    +i:231 [in MSetsExtra.MSetIntervals]
    +i:318 [in MSetsExtra.MSetFoldWithAbort]
    +i:33 [in MSetsExtra.MSetWithDups]
    +i:40 [in MSetsExtra.MSetFoldWithAbort]
    +i:407 [in MSetsExtra.MSetIntervals]
    +i:63 [in MSetsExtra.MSetListWithDups]
    +i:68 [in MSetsExtra.MSetFoldWithAbort]
    +i:818 [in MSetsExtra.MSetIntervals]
    +i:91 [in MSetsExtra.MSetIntervals]
    +i:995 [in MSetsExtra.MSetIntervals]
    +

    L

    +ls:290 [in MSetsExtra.MSetIntervals]
    +lt:33 [in MSetsExtra.MSetFoldWithAbort]
    +lt:61 [in MSetsExtra.MSetFoldWithAbort]
    +lt:95 [in MSetsExtra.MSetFoldWithAbort]
    +l':24 [in MSetsExtra.MSetListWithDups]
    +l':30 [in MSetsExtra.MSetListWithDups]
    +l1:345 [in MSetsExtra.MSetIntervals]
    +l1:425 [in MSetsExtra.MSetIntervals]
    +l1:707 [in MSetsExtra.MSetIntervals]
    +l1:715 [in MSetsExtra.MSetIntervals]
    +l2:346 [in MSetsExtra.MSetIntervals]
    +l2:426 [in MSetsExtra.MSetIntervals]
    +l2:710 [in MSetsExtra.MSetIntervals]
    +l2:718 [in MSetsExtra.MSetIntervals]
    +l:10 [in MSetsExtra.MSetListWithDups]
    +l:103 [in MSetsExtra.MSetIntervals]
    +l:115 [in MSetsExtra.MSetIntervals]
    +l:119 [in MSetsExtra.MSetIntervals]
    +l:134 [in MSetsExtra.MSetIntervals]
    +l:14 [in MSetsExtra.MSetListWithDups]
    +l:16 [in MSetsExtra.MSetListWithDups]
    +l:17 [in MSetsExtra.MSetIntervals]
    +l:23 [in MSetsExtra.MSetListWithDups]
    +l:24 [in MSetsExtra.MSetIntervals]
    +l:254 [in MSetsExtra.MSetIntervals]
    +l:258 [in MSetsExtra.MSetIntervals]
    +l:260 [in MSetsExtra.MSetIntervals]
    +l:28 [in MSetsExtra.MSetListWithDups]
    +l:29 [in MSetsExtra.MSetListWithDups]
    +l:30 [in MSetsExtra.MSetIntervals]
    +l:339 [in MSetsExtra.MSetIntervals]
    +l:34 [in MSetsExtra.MSetListWithDups]
    +l:34 [in MSetsExtra.MSetIntervals]
    +l:367 [in MSetsExtra.MSetIntervals]
    +l:39 [in MSetsExtra.MSetIntervals]
    +l:427 [in MSetsExtra.MSetIntervals]
    +l:50 [in MSetsExtra.MSetIntervals]
    +l:551 [in MSetsExtra.MSetIntervals]
    +l:554 [in MSetsExtra.MSetIntervals]
    +l:698 [in MSetsExtra.MSetIntervals]
    +l:701 [in MSetsExtra.MSetIntervals]
    +l:75 [in MSetsExtra.MSetIntervals]
    +l:849 [in MSetsExtra.MSetIntervals]
    +

    N

    +n:1011 [in MSetsExtra.MSetIntervals]
    +n:1018 [in MSetsExtra.MSetIntervals]
    +n:2 [in MSetsExtra.MSetIntervals]
    +n:289 [in MSetsExtra.MSetIntervals]
    +n:4 [in MSetsExtra.MSetIntervals]
    +n:52 [in MSetsExtra.MSetIntervals]
    +

    P

    +pre_x:392 [in MSetsExtra.MSetFoldWithAbort]
    +pre_x:369 [in MSetsExtra.MSetFoldWithAbort]
    +P:10 [in MSetsExtra.MSetWithDups]
    +P:101 [in MSetsExtra.MSetListWithDups]
    +P:112 [in MSetsExtra.MSetFoldWithAbort]
    +P:13 [in MSetsExtra.MSetWithDups]
    +P:18 [in MSetsExtra.MSetFoldWithAbort]
    +P:220 [in MSetsExtra.MSetFoldWithAbort]
    +p:231 [in MSetsExtra.MSetFoldWithAbort]
    +p:236 [in MSetsExtra.MSetFoldWithAbort]
    +P:239 [in MSetsExtra.MSetFoldWithAbort]
    +p:242 [in MSetsExtra.MSetFoldWithAbort]
    +p:247 [in MSetsExtra.MSetFoldWithAbort]
    +p:257 [in MSetsExtra.MSetFoldWithAbort]
    +p:265 [in MSetsExtra.MSetFoldWithAbort]
    +P:270 [in MSetsExtra.MSetFoldWithAbort]
    +P:281 [in MSetsExtra.MSetIntervals]
    +P:284 [in MSetsExtra.MSetIntervals]
    +P:292 [in MSetsExtra.MSetFoldWithAbort]
    +P:300 [in MSetsExtra.MSetFoldWithAbort]
    +p:319 [in MSetsExtra.MSetIntervals]
    +P:326 [in MSetsExtra.MSetFoldWithAbort]
    +P:46 [in MSetsExtra.MSetFoldWithAbort]
    +p:53 [in MSetsExtra.MSetIntervals]
    +P:75 [in MSetsExtra.MSetFoldWithAbort]
    +P:940 [in MSetsExtra.MSetIntervals]
    +P:943 [in MSetsExtra.MSetIntervals]
    +P:98 [in MSetsExtra.MSetListWithDups]
    +p:982 [in MSetsExtra.MSetIntervals]
    +

    R

    +r:859 [in MSetsExtra.MSetIntervals]
    +

    S

    +st':114 [in MSetsExtra.MSetFoldWithAbort]
    +st':120 [in MSetsExtra.MSetFoldWithAbort]
    +st':124 [in MSetsExtra.MSetFoldWithAbort]
    +st':20 [in MSetsExtra.MSetFoldWithAbort]
    +st':26 [in MSetsExtra.MSetFoldWithAbort]
    +st':328 [in MSetsExtra.MSetFoldWithAbort]
    +st':334 [in MSetsExtra.MSetFoldWithAbort]
    +st':338 [in MSetsExtra.MSetFoldWithAbort]
    +st':48 [in MSetsExtra.MSetFoldWithAbort]
    +st':54 [in MSetsExtra.MSetFoldWithAbort]
    +st':77 [in MSetsExtra.MSetFoldWithAbort]
    +st':83 [in MSetsExtra.MSetFoldWithAbort]
    +st':87 [in MSetsExtra.MSetFoldWithAbort]
    +st0:313 [in MSetsExtra.MSetFoldWithAbort]
    +st1:314 [in MSetsExtra.MSetFoldWithAbort]
    +st2:315 [in MSetsExtra.MSetFoldWithAbort]
    +st:113 [in MSetsExtra.MSetFoldWithAbort]
    +st:117 [in MSetsExtra.MSetFoldWithAbort]
    +st:119 [in MSetsExtra.MSetFoldWithAbort]
    +st:123 [in MSetsExtra.MSetFoldWithAbort]
    +st:135 [in MSetsExtra.MSetFoldWithAbort]
    +st:137 [in MSetsExtra.MSetFoldWithAbort]
    +st:139 [in MSetsExtra.MSetFoldWithAbort]
    +st:144 [in MSetsExtra.MSetFoldWithAbort]
    +st:146 [in MSetsExtra.MSetFoldWithAbort]
    +st:151 [in MSetsExtra.MSetFoldWithAbort]
    +st:153 [in MSetsExtra.MSetFoldWithAbort]
    +st:155 [in MSetsExtra.MSetFoldWithAbort]
    +st:168 [in MSetsExtra.MSetFoldWithAbort]
    +st:170 [in MSetsExtra.MSetFoldWithAbort]
    +st:173 [in MSetsExtra.MSetFoldWithAbort]
    +st:183 [in MSetsExtra.MSetFoldWithAbort]
    +st:185 [in MSetsExtra.MSetFoldWithAbort]
    +st:185 [in MSetsExtra.MSetIntervals]
    +st:188 [in MSetsExtra.MSetFoldWithAbort]
    +st:189 [in MSetsExtra.MSetIntervals]
    +st:19 [in MSetsExtra.MSetFoldWithAbort]
    +st:192 [in MSetsExtra.MSetIntervals]
    +st:197 [in MSetsExtra.MSetFoldWithAbort]
    +st:199 [in MSetsExtra.MSetFoldWithAbort]
    +st:208 [in MSetsExtra.MSetFoldWithAbort]
    +st:208 [in MSetsExtra.MSetIntervals]
    +st:210 [in MSetsExtra.MSetFoldWithAbort]
    +st:212 [in MSetsExtra.MSetIntervals]
    +st:215 [in MSetsExtra.MSetIntervals]
    +st:23 [in MSetsExtra.MSetFoldWithAbort]
    +st:25 [in MSetsExtra.MSetFoldWithAbort]
    +st:258 [in MSetsExtra.MSetFoldWithAbort]
    +st:262 [in MSetsExtra.MSetFoldWithAbort]
    +st:266 [in MSetsExtra.MSetFoldWithAbort]
    +st:275 [in MSetsExtra.MSetFoldWithAbort]
    +st:327 [in MSetsExtra.MSetFoldWithAbort]
    +st:331 [in MSetsExtra.MSetFoldWithAbort]
    +st:333 [in MSetsExtra.MSetFoldWithAbort]
    +st:337 [in MSetsExtra.MSetFoldWithAbort]
    +st:381 [in MSetsExtra.MSetFoldWithAbort]
    +st:404 [in MSetsExtra.MSetFoldWithAbort]
    +st:47 [in MSetsExtra.MSetFoldWithAbort]
    +st:51 [in MSetsExtra.MSetFoldWithAbort]
    +st:53 [in MSetsExtra.MSetFoldWithAbort]
    +st:76 [in MSetsExtra.MSetFoldWithAbort]
    +st:80 [in MSetsExtra.MSetFoldWithAbort]
    +st:82 [in MSetsExtra.MSetFoldWithAbort]
    +st:86 [in MSetsExtra.MSetFoldWithAbort]
    +s'':749 [in MSetsExtra.MSetIntervals]
    +s':107 [in MSetsExtra.MSetListWithDups]
    +s':109 [in MSetsExtra.MSetListWithDups]
    +s':130 [in MSetsExtra.MSetListWithDups]
    +s':133 [in MSetsExtra.MSetListWithDups]
    +s':143 [in MSetsExtra.MSetListWithDups]
    +s':162 [in MSetsExtra.MSetIntervals]
    +s':274 [in MSetsExtra.MSetIntervals]
    +s':277 [in MSetsExtra.MSetIntervals]
    +s':3 [in MSetsExtra.MSetWithDups]
    +s':430 [in MSetsExtra.MSetIntervals]
    +s':435 [in MSetsExtra.MSetIntervals]
    +s':577 [in MSetsExtra.MSetIntervals]
    +s':6 [in MSetsExtra.MSetWithDups]
    +s':626 [in MSetsExtra.MSetIntervals]
    +s':65 [in MSetsExtra.MSetListWithDups]
    +s':67 [in MSetsExtra.MSetListWithDups]
    +s':678 [in MSetsExtra.MSetIntervals]
    +s':70 [in MSetsExtra.MSetListWithDups]
    +s':726 [in MSetsExtra.MSetIntervals]
    +s':741 [in MSetsExtra.MSetIntervals]
    +s':746 [in MSetsExtra.MSetIntervals]
    +s':796 [in MSetsExtra.MSetIntervals]
    +s':91 [in MSetsExtra.MSetListWithDups]
    +s':933 [in MSetsExtra.MSetIntervals]
    +s':936 [in MSetsExtra.MSetIntervals]
    +s':94 [in MSetsExtra.MSetListWithDups]
    +s':954 [in MSetsExtra.MSetIntervals]
    +s':956 [in MSetsExtra.MSetIntervals]
    +s':958 [in MSetsExtra.MSetIntervals]
    +s':960 [in MSetsExtra.MSetIntervals]
    +s':962 [in MSetsExtra.MSetIntervals]
    +s':984 [in MSetsExtra.MSetIntervals]
    +s0:245 [in MSetsExtra.MSetFoldWithAbort]
    +s0:249 [in MSetsExtra.MSetFoldWithAbort]
    +s0:252 [in MSetsExtra.MSetFoldWithAbort]
    +s1:138 [in MSetsExtra.MSetIntervals]
    +s1:143 [in MSetsExtra.MSetIntervals]
    +s1:152 [in MSetsExtra.MSetIntervals]
    +s1:155 [in MSetsExtra.MSetIntervals]
    +s1:157 [in MSetsExtra.MSetIntervals]
    +s1:173 [in MSetsExtra.MSetIntervals]
    +s1:176 [in MSetsExtra.MSetIntervals]
    +s1:379 [in MSetsExtra.MSetIntervals]
    +s1:386 [in MSetsExtra.MSetIntervals]
    +s1:450 [in MSetsExtra.MSetIntervals]
    +s1:453 [in MSetsExtra.MSetIntervals]
    +s1:457 [in MSetsExtra.MSetIntervals]
    +s1:461 [in MSetsExtra.MSetIntervals]
    +s1:465 [in MSetsExtra.MSetIntervals]
    +s1:497 [in MSetsExtra.MSetIntervals]
    +s1:53 [in MSetsExtra.MSetListWithDups]
    +s1:55 [in MSetsExtra.MSetListWithDups]
    +s1:556 [in MSetsExtra.MSetIntervals]
    +s1:559 [in MSetsExtra.MSetIntervals]
    +s1:562 [in MSetsExtra.MSetIntervals]
    +s1:564 [in MSetsExtra.MSetIntervals]
    +s1:569 [in MSetsExtra.MSetIntervals]
    +s1:572 [in MSetsExtra.MSetIntervals]
    +s1:605 [in MSetsExtra.MSetIntervals]
    +s1:616 [in MSetsExtra.MSetIntervals]
    +s1:619 [in MSetsExtra.MSetIntervals]
    +s1:621 [in MSetsExtra.MSetIntervals]
    +s1:656 [in MSetsExtra.MSetIntervals]
    +s1:668 [in MSetsExtra.MSetIntervals]
    +s1:671 [in MSetsExtra.MSetIntervals]
    +s1:673 [in MSetsExtra.MSetIntervals]
    +s1:703 [in MSetsExtra.MSetIntervals]
    +s1:720 [in MSetsExtra.MSetIntervals]
    +s1:738 [in MSetsExtra.MSetIntervals]
    +s1:751 [in MSetsExtra.MSetIntervals]
    +s1:753 [in MSetsExtra.MSetIntervals]
    +s1:761 [in MSetsExtra.MSetIntervals]
    +s1:763 [in MSetsExtra.MSetIntervals]
    +s1:765 [in MSetsExtra.MSetIntervals]
    +s1:94 [in MSetsExtra.MSetIntervals]
    +s1:968 [in MSetsExtra.MSetIntervals]
    +s2:140 [in MSetsExtra.MSetIntervals]
    +s2:144 [in MSetsExtra.MSetIntervals]
    +s2:153 [in MSetsExtra.MSetIntervals]
    +s2:156 [in MSetsExtra.MSetIntervals]
    +s2:159 [in MSetsExtra.MSetIntervals]
    +s2:174 [in MSetsExtra.MSetIntervals]
    +s2:177 [in MSetsExtra.MSetIntervals]
    +s2:380 [in MSetsExtra.MSetIntervals]
    +s2:387 [in MSetsExtra.MSetIntervals]
    +s2:451 [in MSetsExtra.MSetIntervals]
    +s2:454 [in MSetsExtra.MSetIntervals]
    +s2:458 [in MSetsExtra.MSetIntervals]
    +s2:462 [in MSetsExtra.MSetIntervals]
    +s2:498 [in MSetsExtra.MSetIntervals]
    +s2:54 [in MSetsExtra.MSetListWithDups]
    +s2:557 [in MSetsExtra.MSetIntervals]
    +s2:56 [in MSetsExtra.MSetListWithDups]
    +s2:560 [in MSetsExtra.MSetIntervals]
    +s2:563 [in MSetsExtra.MSetIntervals]
    +s2:565 [in MSetsExtra.MSetIntervals]
    +s2:567 [in MSetsExtra.MSetIntervals]
    +s2:570 [in MSetsExtra.MSetIntervals]
    +s2:571 [in MSetsExtra.MSetIntervals]
    +s2:573 [in MSetsExtra.MSetIntervals]
    +s2:604 [in MSetsExtra.MSetIntervals]
    +s2:617 [in MSetsExtra.MSetIntervals]
    +s2:620 [in MSetsExtra.MSetIntervals]
    +s2:622 [in MSetsExtra.MSetIntervals]
    +s2:655 [in MSetsExtra.MSetIntervals]
    +s2:669 [in MSetsExtra.MSetIntervals]
    +s2:672 [in MSetsExtra.MSetIntervals]
    +s2:674 [in MSetsExtra.MSetIntervals]
    +s2:704 [in MSetsExtra.MSetIntervals]
    +s2:721 [in MSetsExtra.MSetIntervals]
    +s2:723 [in MSetsExtra.MSetIntervals]
    +s2:739 [in MSetsExtra.MSetIntervals]
    +s2:752 [in MSetsExtra.MSetIntervals]
    +s2:754 [in MSetsExtra.MSetIntervals]
    +s2:762 [in MSetsExtra.MSetIntervals]
    +s2:764 [in MSetsExtra.MSetIntervals]
    +s2:766 [in MSetsExtra.MSetIntervals]
    +s2:95 [in MSetsExtra.MSetIntervals]
    +s2:969 [in MSetsExtra.MSetIntervals]
    +s:102 [in MSetsExtra.MSetListWithDups]
    +s:104 [in MSetsExtra.MSetListWithDups]
    +s:106 [in MSetsExtra.MSetListWithDups]
    +s:108 [in MSetsExtra.MSetListWithDups]
    +s:108 [in MSetsExtra.MSetIntervals]
    +s:11 [in MSetsExtra.MSetWithDups]
    +s:111 [in MSetsExtra.MSetFoldWithAbort]
    +s:112 [in MSetsExtra.MSetListWithDups]
    +s:112 [in MSetsExtra.MSetIntervals]
    +s:113 [in MSetsExtra.MSetListWithDups]
    +s:114 [in MSetsExtra.MSetIntervals]
    +s:116 [in MSetsExtra.MSetIntervals]
    +s:117 [in MSetsExtra.MSetIntervals]
    +s:118 [in MSetsExtra.MSetListWithDups]
    +s:122 [in MSetsExtra.MSetListWithDups]
    +s:124 [in MSetsExtra.MSetIntervals]
    +s:125 [in MSetsExtra.MSetListWithDups]
    +s:127 [in MSetsExtra.MSetIntervals]
    +s:129 [in MSetsExtra.MSetListWithDups]
    +s:131 [in MSetsExtra.MSetIntervals]
    +s:132 [in MSetsExtra.MSetListWithDups]
    +s:133 [in MSetsExtra.MSetIntervals]
    +s:135 [in MSetsExtra.MSetIntervals]
    +s:136 [in MSetsExtra.MSetListWithDups]
    +s:136 [in MSetsExtra.MSetIntervals]
    +s:14 [in MSetsExtra.MSetWithDups]
    +s:140 [in MSetsExtra.MSetListWithDups]
    +s:142 [in MSetsExtra.MSetListWithDups]
    +s:145 [in MSetsExtra.MSetListWithDups]
    +s:146 [in MSetsExtra.MSetListWithDups]
    +s:148 [in MSetsExtra.MSetIntervals]
    +s:149 [in MSetsExtra.MSetListWithDups]
    +s:154 [in MSetsExtra.MSetListWithDups]
    +s:157 [in MSetsExtra.MSetListWithDups]
    +s:159 [in MSetsExtra.MSetListWithDups]
    +s:161 [in MSetsExtra.MSetIntervals]
    +s:162 [in MSetsExtra.MSetListWithDups]
    +s:164 [in MSetsExtra.MSetListWithDups]
    +s:165 [in MSetsExtra.MSetListWithDups]
    +s:166 [in MSetsExtra.MSetFoldWithAbort]
    +s:168 [in MSetsExtra.MSetListWithDups]
    +s:169 [in MSetsExtra.MSetListWithDups]
    +s:169 [in MSetsExtra.MSetIntervals]
    +s:17 [in MSetsExtra.MSetFoldWithAbort]
    +s:181 [in MSetsExtra.MSetFoldWithAbort]
    +s:195 [in MSetsExtra.MSetFoldWithAbort]
    +s:2 [in MSetsExtra.MSetWithDups]
    +s:202 [in MSetsExtra.MSetIntervals]
    +s:206 [in MSetsExtra.MSetFoldWithAbort]
    +s:219 [in MSetsExtra.MSetFoldWithAbort]
    +s:223 [in MSetsExtra.MSetIntervals]
    +s:229 [in MSetsExtra.MSetFoldWithAbort]
    +s:230 [in MSetsExtra.MSetIntervals]
    +s:234 [in MSetsExtra.MSetFoldWithAbort]
    +s:235 [in MSetsExtra.MSetIntervals]
    +s:239 [in MSetsExtra.MSetIntervals]
    +s:240 [in MSetsExtra.MSetFoldWithAbort]
    +s:243 [in MSetsExtra.MSetIntervals]
    +s:246 [in MSetsExtra.MSetIntervals]
    +s:247 [in MSetsExtra.MSetIntervals]
    +s:249 [in MSetsExtra.MSetIntervals]
    +s:250 [in MSetsExtra.MSetIntervals]
    +s:253 [in MSetsExtra.MSetIntervals]
    +s:255 [in MSetsExtra.MSetFoldWithAbort]
    +s:263 [in MSetsExtra.MSetIntervals]
    +s:264 [in MSetsExtra.MSetIntervals]
    +s:267 [in MSetsExtra.MSetIntervals]
    +s:270 [in MSetsExtra.MSetIntervals]
    +s:271 [in MSetsExtra.MSetFoldWithAbort]
    +s:272 [in MSetsExtra.MSetIntervals]
    +s:273 [in MSetsExtra.MSetIntervals]
    +s:276 [in MSetsExtra.MSetIntervals]
    +s:279 [in MSetsExtra.MSetIntervals]
    +s:282 [in MSetsExtra.MSetIntervals]
    +s:285 [in MSetsExtra.MSetIntervals]
    +s:289 [in MSetsExtra.MSetFoldWithAbort]
    +s:293 [in MSetsExtra.MSetFoldWithAbort]
    +s:296 [in MSetsExtra.MSetFoldWithAbort]
    +s:299 [in MSetsExtra.MSetFoldWithAbort]
    +s:325 [in MSetsExtra.MSetFoldWithAbort]
    +s:362 [in MSetsExtra.MSetIntervals]
    +s:365 [in MSetsExtra.MSetIntervals]
    +s:37 [in MSetsExtra.MSetListWithDups]
    +s:371 [in MSetsExtra.MSetIntervals]
    +s:375 [in MSetsExtra.MSetIntervals]
    +s:378 [in MSetsExtra.MSetIntervals]
    +s:385 [in MSetsExtra.MSetIntervals]
    +s:389 [in MSetsExtra.MSetIntervals]
    +s:395 [in MSetsExtra.MSetIntervals]
    +s:41 [in MSetsExtra.MSetListWithDups]
    +s:413 [in MSetsExtra.MSetIntervals]
    +s:416 [in MSetsExtra.MSetIntervals]
    +s:421 [in MSetsExtra.MSetIntervals]
    +s:424 [in MSetsExtra.MSetIntervals]
    +s:436 [in MSetsExtra.MSetIntervals]
    +s:440 [in MSetsExtra.MSetIntervals]
    +s:441 [in MSetsExtra.MSetIntervals]
    +s:444 [in MSetsExtra.MSetIntervals]
    +s:447 [in MSetsExtra.MSetIntervals]
    +s:45 [in MSetsExtra.MSetFoldWithAbort]
    +s:45 [in MSetsExtra.MSetListWithDups]
    +s:470 [in MSetsExtra.MSetIntervals]
    +s:472 [in MSetsExtra.MSetIntervals]
    +s:474 [in MSetsExtra.MSetIntervals]
    +s:477 [in MSetsExtra.MSetIntervals]
    +s:478 [in MSetsExtra.MSetIntervals]
    +s:481 [in MSetsExtra.MSetIntervals]
    +s:49 [in MSetsExtra.MSetWithDups]
    +s:49 [in MSetsExtra.MSetListWithDups]
    +s:490 [in MSetsExtra.MSetIntervals]
    +s:494 [in MSetsExtra.MSetIntervals]
    +s:5 [in MSetsExtra.MSetWithDups]
    +s:501 [in MSetsExtra.MSetIntervals]
    +s:504 [in MSetsExtra.MSetIntervals]
    +s:508 [in MSetsExtra.MSetIntervals]
    +s:51 [in MSetsExtra.MSetWithDups]
    +s:51 [in MSetsExtra.MSetListWithDups]
    +s:521 [in MSetsExtra.MSetIntervals]
    +s:528 [in MSetsExtra.MSetIntervals]
    +s:53 [in MSetsExtra.MSetWithDups]
    +s:531 [in MSetsExtra.MSetIntervals]
    +s:535 [in MSetsExtra.MSetIntervals]
    +s:538 [in MSetsExtra.MSetIntervals]
    +s:541 [in MSetsExtra.MSetIntervals]
    +s:546 [in MSetsExtra.MSetIntervals]
    +s:552 [in MSetsExtra.MSetIntervals]
    +s:555 [in MSetsExtra.MSetIntervals]
    +s:56 [in MSetsExtra.MSetWithDups]
    +s:57 [in MSetsExtra.MSetWithDups]
    +s:576 [in MSetsExtra.MSetIntervals]
    +s:583 [in MSetsExtra.MSetIntervals]
    +s:587 [in MSetsExtra.MSetIntervals]
    +s:62 [in MSetsExtra.MSetListWithDups]
    +s:625 [in MSetsExtra.MSetIntervals]
    +s:632 [in MSetsExtra.MSetIntervals]
    +s:636 [in MSetsExtra.MSetIntervals]
    +s:64 [in MSetsExtra.MSetListWithDups]
    +s:66 [in MSetsExtra.MSetListWithDups]
    +s:677 [in MSetsExtra.MSetIntervals]
    +s:683 [in MSetsExtra.MSetIntervals]
    +s:685 [in MSetsExtra.MSetIntervals]
    +s:687 [in MSetsExtra.MSetIntervals]
    +s:69 [in MSetsExtra.MSetListWithDups]
    +s:691 [in MSetsExtra.MSetIntervals]
    +s:694 [in MSetsExtra.MSetIntervals]
    +s:699 [in MSetsExtra.MSetIntervals]
    +s:702 [in MSetsExtra.MSetIntervals]
    +s:71 [in MSetsExtra.MSetIntervals]
    +s:72 [in MSetsExtra.MSetListWithDups]
    +s:725 [in MSetsExtra.MSetIntervals]
    +s:729 [in MSetsExtra.MSetIntervals]
    +s:734 [in MSetsExtra.MSetIntervals]
    +s:736 [in MSetsExtra.MSetIntervals]
    +s:74 [in MSetsExtra.MSetFoldWithAbort]
    +s:74 [in MSetsExtra.MSetIntervals]
    +s:740 [in MSetsExtra.MSetIntervals]
    +s:745 [in MSetsExtra.MSetIntervals]
    +s:755 [in MSetsExtra.MSetIntervals]
    +s:756 [in MSetsExtra.MSetIntervals]
    +s:76 [in MSetsExtra.MSetListWithDups]
    +s:769 [in MSetsExtra.MSetIntervals]
    +s:77 [in MSetsExtra.MSetIntervals]
    +s:770 [in MSetsExtra.MSetIntervals]
    +s:775 [in MSetsExtra.MSetIntervals]
    +s:777 [in MSetsExtra.MSetIntervals]
    +s:781 [in MSetsExtra.MSetIntervals]
    +s:783 [in MSetsExtra.MSetIntervals]
    +s:786 [in MSetsExtra.MSetIntervals]
    +s:79 [in MSetsExtra.MSetIntervals]
    +s:790 [in MSetsExtra.MSetIntervals]
    +s:791 [in MSetsExtra.MSetIntervals]
    +s:794 [in MSetsExtra.MSetIntervals]
    +s:795 [in MSetsExtra.MSetIntervals]
    +s:799 [in MSetsExtra.MSetIntervals]
    +s:8 [in MSetsExtra.MSetWithDups]
    +s:801 [in MSetsExtra.MSetIntervals]
    +s:805 [in MSetsExtra.MSetIntervals]
    +s:806 [in MSetsExtra.MSetIntervals]
    +s:808 [in MSetsExtra.MSetIntervals]
    +s:811 [in MSetsExtra.MSetIntervals]
    +s:815 [in MSetsExtra.MSetIntervals]
    +s:816 [in MSetsExtra.MSetIntervals]
    +s:82 [in MSetsExtra.MSetListWithDups]
    +s:820 [in MSetsExtra.MSetIntervals]
    +s:822 [in MSetsExtra.MSetIntervals]
    +s:823 [in MSetsExtra.MSetIntervals]
    +s:827 [in MSetsExtra.MSetIntervals]
    +s:83 [in MSetsExtra.MSetIntervals]
    +s:85 [in MSetsExtra.MSetListWithDups]
    +s:86 [in MSetsExtra.MSetListWithDups]
    +s:868 [in MSetsExtra.MSetIntervals]
    +s:877 [in MSetsExtra.MSetIntervals]
    +s:881 [in MSetsExtra.MSetIntervals]
    +s:887 [in MSetsExtra.MSetIntervals]
    +s:89 [in MSetsExtra.MSetListWithDups]
    +s:90 [in MSetsExtra.MSetListWithDups]
    +s:904 [in MSetsExtra.MSetIntervals]
    +s:911 [in MSetsExtra.MSetIntervals]
    +s:914 [in MSetsExtra.MSetIntervals]
    +s:916 [in MSetsExtra.MSetIntervals]
    +s:919 [in MSetsExtra.MSetIntervals]
    +s:922 [in MSetsExtra.MSetIntervals]
    +s:924 [in MSetsExtra.MSetIntervals]
    +s:93 [in MSetsExtra.MSetListWithDups]
    +s:931 [in MSetsExtra.MSetIntervals]
    +s:932 [in MSetsExtra.MSetIntervals]
    +s:935 [in MSetsExtra.MSetIntervals]
    +s:938 [in MSetsExtra.MSetIntervals]
    +s:941 [in MSetsExtra.MSetIntervals]
    +s:944 [in MSetsExtra.MSetIntervals]
    +s:947 [in MSetsExtra.MSetIntervals]
    +s:949 [in MSetsExtra.MSetIntervals]
    +s:951 [in MSetsExtra.MSetIntervals]
    +s:953 [in MSetsExtra.MSetIntervals]
    +s:955 [in MSetsExtra.MSetIntervals]
    +s:957 [in MSetsExtra.MSetIntervals]
    +s:959 [in MSetsExtra.MSetIntervals]
    +s:96 [in MSetsExtra.MSetListWithDups]
    +s:961 [in MSetsExtra.MSetIntervals]
    +s:963 [in MSetsExtra.MSetIntervals]
    +s:964 [in MSetsExtra.MSetIntervals]
    +s:965 [in MSetsExtra.MSetIntervals]
    +s:966 [in MSetsExtra.MSetIntervals]
    +s:967 [in MSetsExtra.MSetIntervals]
    +s:972 [in MSetsExtra.MSetIntervals]
    +s:973 [in MSetsExtra.MSetIntervals]
    +s:975 [in MSetsExtra.MSetIntervals]
    +s:977 [in MSetsExtra.MSetIntervals]
    +s:979 [in MSetsExtra.MSetIntervals]
    +s:981 [in MSetsExtra.MSetIntervals]
    +s:983 [in MSetsExtra.MSetIntervals]
    +s:99 [in MSetsExtra.MSetListWithDups]
    +

    T

    +t:2 [in MSetsExtra.MSetFoldWithAbort]
    +t:29 [in MSetsExtra.MSetFoldWithAbort]
    +t:308 [in MSetsExtra.MSetFoldWithAbort]
    +t:32 [in MSetsExtra.MSetFoldWithAbort]
    +t:349 [in MSetsExtra.MSetFoldWithAbort]
    +t:357 [in MSetsExtra.MSetFoldWithAbort]
    +t:365 [in MSetsExtra.MSetFoldWithAbort]
    +t:377 [in MSetsExtra.MSetFoldWithAbort]
    +t:388 [in MSetsExtra.MSetFoldWithAbort]
    +t:400 [in MSetsExtra.MSetFoldWithAbort]
    +t:5 [in MSetsExtra.MSetFoldWithAbort]
    +t:57 [in MSetsExtra.MSetFoldWithAbort]
    +t:60 [in MSetsExtra.MSetFoldWithAbort]
    +t:90 [in MSetsExtra.MSetFoldWithAbort]
    +t:94 [in MSetsExtra.MSetFoldWithAbort]
    +

    X

    +xs':22 [in MSetsExtra.MSetListWithDups]
    +xs:20 [in MSetsExtra.MSetListWithDups]
    +xs:277 [in MSetsExtra.MSetFoldWithAbort]
    +xx:804 [in MSetsExtra.MSetIntervals]
    +x_pre:312 [in MSetsExtra.MSetFoldWithAbort]
    +x':21 [in MSetsExtra.MSetListWithDups]
    +x':798 [in MSetsExtra.MSetIntervals]
    +x0:278 [in MSetsExtra.MSetFoldWithAbort]
    +x0:281 [in MSetsExtra.MSetFoldWithAbort]
    +x0:284 [in MSetsExtra.MSetFoldWithAbort]
    +x1:18 [in MSetsExtra.MSetIntervals]
    +x1:455 [in MSetsExtra.MSetIntervals]
    +x1:459 [in MSetsExtra.MSetIntervals]
    +x1:463 [in MSetsExtra.MSetIntervals]
    +x1:484 [in MSetsExtra.MSetIntervals]
    +x1:522 [in MSetsExtra.MSetIntervals]
    +x1:589 [in MSetsExtra.MSetIntervals]
    +x1:602 [in MSetsExtra.MSetIntervals]
    +x1:607 [in MSetsExtra.MSetIntervals]
    +x1:612 [in MSetsExtra.MSetIntervals]
    +x1:614 [in MSetsExtra.MSetIntervals]
    +x1:638 [in MSetsExtra.MSetIntervals]
    +x1:651 [in MSetsExtra.MSetIntervals]
    +x1:658 [in MSetsExtra.MSetIntervals]
    +x1:664 [in MSetsExtra.MSetIntervals]
    +x1:666 [in MSetsExtra.MSetIntervals]
    +x1:870 [in MSetsExtra.MSetIntervals]
    +x1:874 [in MSetsExtra.MSetIntervals]
    +x1:879 [in MSetsExtra.MSetIntervals]
    +x1:97 [in MSetsExtra.MSetIntervals]
    +x2:19 [in MSetsExtra.MSetIntervals]
    +x2:456 [in MSetsExtra.MSetIntervals]
    +x2:460 [in MSetsExtra.MSetIntervals]
    +x2:464 [in MSetsExtra.MSetIntervals]
    +x2:486 [in MSetsExtra.MSetIntervals]
    +x2:524 [in MSetsExtra.MSetIntervals]
    +x2:590 [in MSetsExtra.MSetIntervals]
    +x2:603 [in MSetsExtra.MSetIntervals]
    +x2:608 [in MSetsExtra.MSetIntervals]
    +x2:613 [in MSetsExtra.MSetIntervals]
    +x2:615 [in MSetsExtra.MSetIntervals]
    +x2:639 [in MSetsExtra.MSetIntervals]
    +x2:652 [in MSetsExtra.MSetIntervals]
    +x2:659 [in MSetsExtra.MSetIntervals]
    +x2:665 [in MSetsExtra.MSetIntervals]
    +x2:667 [in MSetsExtra.MSetIntervals]
    +x2:871 [in MSetsExtra.MSetIntervals]
    +x2:875 [in MSetsExtra.MSetIntervals]
    +x2:880 [in MSetsExtra.MSetIntervals]
    +x2:99 [in MSetsExtra.MSetIntervals]
    +x:1 [in MSetsExtra.MSetListWithDups]
    +x:10 [in MSetsExtra.MSetIntervals]
    +x:100 [in MSetsExtra.MSetListWithDups]
    +x:1000 [in MSetsExtra.MSetIntervals]
    +x:1001 [in MSetsExtra.MSetIntervals]
    +x:101 [in MSetsExtra.MSetIntervals]
    +x:103 [in MSetsExtra.MSetListWithDups]
    +x:105 [in MSetsExtra.MSetListWithDups]
    +x:107 [in MSetsExtra.MSetIntervals]
    +x:110 [in MSetsExtra.MSetListWithDups]
    +x:111 [in MSetsExtra.MSetIntervals]
    +x:113 [in MSetsExtra.MSetIntervals]
    +x:114 [in MSetsExtra.MSetListWithDups]
    +x:116 [in MSetsExtra.MSetListWithDups]
    +x:118 [in MSetsExtra.MSetIntervals]
    +x:12 [in MSetsExtra.MSetWithDups]
    +x:120 [in MSetsExtra.MSetListWithDups]
    +x:120 [in MSetsExtra.MSetIntervals]
    +x:121 [in MSetsExtra.MSetIntervals]
    +x:122 [in MSetsExtra.MSetIntervals]
    +x:123 [in MSetsExtra.MSetListWithDups]
    +x:126 [in MSetsExtra.MSetListWithDups]
    +x:126 [in MSetsExtra.MSetIntervals]
    +x:130 [in MSetsExtra.MSetIntervals]
    +x:131 [in MSetsExtra.MSetListWithDups]
    +x:132 [in MSetsExtra.MSetIntervals]
    +x:134 [in MSetsExtra.MSetListWithDups]
    +x:137 [in MSetsExtra.MSetIntervals]
    +x:141 [in MSetsExtra.MSetListWithDups]
    +x:144 [in MSetsExtra.MSetListWithDups]
    +x:148 [in MSetsExtra.MSetListWithDups]
    +x:15 [in MSetsExtra.MSetWithDups]
    +x:151 [in MSetsExtra.MSetListWithDups]
    +x:156 [in MSetsExtra.MSetListWithDups]
    +x:161 [in MSetsExtra.MSetListWithDups]
    +x:163 [in MSetsExtra.MSetListWithDups]
    +x:166 [in MSetsExtra.MSetListWithDups]
    +x:167 [in MSetsExtra.MSetListWithDups]
    +x:179 [in MSetsExtra.MSetIntervals]
    +x:186 [in MSetsExtra.MSetIntervals]
    +x:19 [in MSetsExtra.MSetListWithDups]
    +x:190 [in MSetsExtra.MSetIntervals]
    +x:193 [in MSetsExtra.MSetIntervals]
    +x:197 [in MSetsExtra.MSetIntervals]
    +x:209 [in MSetsExtra.MSetIntervals]
    +x:213 [in MSetsExtra.MSetIntervals]
    +x:216 [in MSetsExtra.MSetIntervals]
    +x:219 [in MSetsExtra.MSetIntervals]
    +x:25 [in MSetsExtra.MSetListWithDups]
    +x:255 [in MSetsExtra.MSetIntervals]
    +x:257 [in MSetsExtra.MSetIntervals]
    +x:269 [in MSetsExtra.MSetIntervals]
    +x:271 [in MSetsExtra.MSetIntervals]
    +x:283 [in MSetsExtra.MSetIntervals]
    +x:286 [in MSetsExtra.MSetIntervals]
    +x:287 [in MSetsExtra.MSetIntervals]
    +x:291 [in MSetsExtra.MSetIntervals]
    +x:293 [in MSetsExtra.MSetIntervals]
    +x:294 [in MSetsExtra.MSetIntervals]
    +x:296 [in MSetsExtra.MSetIntervals]
    +x:299 [in MSetsExtra.MSetIntervals]
    +x:303 [in MSetsExtra.MSetIntervals]
    +x:305 [in MSetsExtra.MSetIntervals]
    +x:307 [in MSetsExtra.MSetIntervals]
    +x:31 [in MSetsExtra.MSetListWithDups]
    +x:312 [in MSetsExtra.MSetIntervals]
    +x:318 [in MSetsExtra.MSetIntervals]
    +x:32 [in MSetsExtra.MSetListWithDups]
    +x:323 [in MSetsExtra.MSetIntervals]
    +x:327 [in MSetsExtra.MSetIntervals]
    +x:33 [in MSetsExtra.MSetListWithDups]
    +x:340 [in MSetsExtra.MSetIntervals]
    +x:353 [in MSetsExtra.MSetIntervals]
    +x:36 [in MSetsExtra.MSetListWithDups]
    +x:368 [in MSetsExtra.MSetIntervals]
    +x:37 [in MSetsExtra.MSetWithDups]
    +x:373 [in MSetsExtra.MSetIntervals]
    +x:376 [in MSetsExtra.MSetIntervals]
    +x:383 [in MSetsExtra.MSetIntervals]
    +x:39 [in MSetsExtra.MSetWithDups]
    +x:392 [in MSetsExtra.MSetIntervals]
    +x:397 [in MSetsExtra.MSetIntervals]
    +x:40 [in MSetsExtra.MSetListWithDups]
    +x:412 [in MSetsExtra.MSetIntervals]
    +x:415 [in MSetsExtra.MSetIntervals]
    +x:419 [in MSetsExtra.MSetIntervals]
    +x:42 [in MSetsExtra.MSetWithDups]
    +x:42 [in MSetsExtra.MSetListWithDups]
    +x:422 [in MSetsExtra.MSetIntervals]
    +x:431 [in MSetsExtra.MSetIntervals]
    +x:438 [in MSetsExtra.MSetIntervals]
    +x:439 [in MSetsExtra.MSetIntervals]
    +x:443 [in MSetsExtra.MSetIntervals]
    +x:446 [in MSetsExtra.MSetIntervals]
    +x:449 [in MSetsExtra.MSetIntervals]
    +x:468 [in MSetsExtra.MSetIntervals]
    +x:469 [in MSetsExtra.MSetIntervals]
    +x:471 [in MSetsExtra.MSetIntervals]
    +x:473 [in MSetsExtra.MSetIntervals]
    +x:476 [in MSetsExtra.MSetIntervals]
    +x:479 [in MSetsExtra.MSetIntervals]
    +x:48 [in MSetsExtra.MSetWithDups]
    +x:482 [in MSetsExtra.MSetIntervals]
    +x:488 [in MSetsExtra.MSetIntervals]
    +x:491 [in MSetsExtra.MSetIntervals]
    +x:495 [in MSetsExtra.MSetIntervals]
    +x:499 [in MSetsExtra.MSetIntervals]
    +x:5 [in MSetsExtra.MSetListWithDups]
    +x:50 [in MSetsExtra.MSetListWithDups]
    +x:502 [in MSetsExtra.MSetIntervals]
    +x:506 [in MSetsExtra.MSetIntervals]
    +x:509 [in MSetsExtra.MSetIntervals]
    +x:529 [in MSetsExtra.MSetIntervals]
    +x:532 [in MSetsExtra.MSetIntervals]
    +x:536 [in MSetsExtra.MSetIntervals]
    +x:539 [in MSetsExtra.MSetIntervals]
    +x:542 [in MSetsExtra.MSetIntervals]
    +x:545 [in MSetsExtra.MSetIntervals]
    +x:548 [in MSetsExtra.MSetIntervals]
    +x:549 [in MSetsExtra.MSetIntervals]
    +x:55 [in MSetsExtra.MSetWithDups]
    +x:553 [in MSetsExtra.MSetIntervals]
    +x:57 [in MSetsExtra.MSetIntervals]
    +x:578 [in MSetsExtra.MSetIntervals]
    +x:58 [in MSetsExtra.MSetListWithDups]
    +x:59 [in MSetsExtra.MSetListWithDups]
    +x:627 [in MSetsExtra.MSetIntervals]
    +x:640 [in MSetsExtra.MSetIntervals]
    +x:642 [in MSetsExtra.MSetIntervals]
    +x:646 [in MSetsExtra.MSetIntervals]
    +x:647 [in MSetsExtra.MSetIntervals]
    +x:648 [in MSetsExtra.MSetIntervals]
    +x:650 [in MSetsExtra.MSetIntervals]
    +x:653 [in MSetsExtra.MSetIntervals]
    +x:66 [in MSetsExtra.MSetIntervals]
    +x:663 [in MSetsExtra.MSetIntervals]
    +x:679 [in MSetsExtra.MSetIntervals]
    +x:68 [in MSetsExtra.MSetListWithDups]
    +x:682 [in MSetsExtra.MSetIntervals]
    +x:686 [in MSetsExtra.MSetIntervals]
    +x:688 [in MSetsExtra.MSetIntervals]
    +x:692 [in MSetsExtra.MSetIntervals]
    +x:695 [in MSetsExtra.MSetIntervals]
    +x:7 [in MSetsExtra.MSetListWithDups]
    +x:700 [in MSetsExtra.MSetIntervals]
    +x:730 [in MSetsExtra.MSetIntervals]
    +x:733 [in MSetsExtra.MSetIntervals]
    +x:744 [in MSetsExtra.MSetIntervals]
    +x:76 [in MSetsExtra.MSetIntervals]
    +x:768 [in MSetsExtra.MSetIntervals]
    +x:771 [in MSetsExtra.MSetIntervals]
    +x:776 [in MSetsExtra.MSetIntervals]
    +x:778 [in MSetsExtra.MSetIntervals]
    +x:78 [in MSetsExtra.MSetIntervals]
    +x:782 [in MSetsExtra.MSetIntervals]
    +x:784 [in MSetsExtra.MSetIntervals]
    +x:787 [in MSetsExtra.MSetIntervals]
    +x:792 [in MSetsExtra.MSetIntervals]
    +x:797 [in MSetsExtra.MSetIntervals]
    +x:8 [in MSetsExtra.MSetIntervals]
    +x:800 [in MSetsExtra.MSetIntervals]
    +x:802 [in MSetsExtra.MSetIntervals]
    +x:807 [in MSetsExtra.MSetIntervals]
    +x:809 [in MSetsExtra.MSetIntervals]
    +x:812 [in MSetsExtra.MSetIntervals]
    +x:82 [in MSetsExtra.MSetIntervals]
    +x:826 [in MSetsExtra.MSetIntervals]
    +x:830 [in MSetsExtra.MSetIntervals]
    +x:831 [in MSetsExtra.MSetIntervals]
    +x:836 [in MSetsExtra.MSetIntervals]
    +x:839 [in MSetsExtra.MSetIntervals]
    +x:847 [in MSetsExtra.MSetIntervals]
    +x:856 [in MSetsExtra.MSetIntervals]
    +x:863 [in MSetsExtra.MSetIntervals]
    +x:88 [in MSetsExtra.MSetListWithDups]
    +x:888 [in MSetsExtra.MSetIntervals]
    +x:890 [in MSetsExtra.MSetIntervals]
    +x:901 [in MSetsExtra.MSetIntervals]
    +x:902 [in MSetsExtra.MSetIntervals]
    +x:907 [in MSetsExtra.MSetIntervals]
    +x:908 [in MSetsExtra.MSetIntervals]
    +x:909 [in MSetsExtra.MSetIntervals]
    +x:912 [in MSetsExtra.MSetIntervals]
    +x:915 [in MSetsExtra.MSetIntervals]
    +x:926 [in MSetsExtra.MSetIntervals]
    +x:930 [in MSetsExtra.MSetIntervals]
    +x:942 [in MSetsExtra.MSetIntervals]
    +x:945 [in MSetsExtra.MSetIntervals]
    +x:946 [in MSetsExtra.MSetIntervals]
    +x:948 [in MSetsExtra.MSetIntervals]
    +x:950 [in MSetsExtra.MSetIntervals]
    +x:952 [in MSetsExtra.MSetIntervals]
    +x:999 [in MSetsExtra.MSetIntervals]
    +

    Y

    +yc1:89 [in MSetsExtra.MSetIntervals]
    +yc2:88 [in MSetsExtra.MSetIntervals]
    +yc2:93 [in MSetsExtra.MSetIntervals]
    +yc:844 [in MSetsExtra.MSetIntervals]
    +ys':27 [in MSetsExtra.MSetListWithDups]
    +y':26 [in MSetsExtra.MSetListWithDups]
    +y':774 [in MSetsExtra.MSetIntervals]
    +y':835 [in MSetsExtra.MSetIntervals]
    +y':860 [in MSetsExtra.MSetIntervals]
    +y':865 [in MSetsExtra.MSetIntervals]
    +y':866 [in MSetsExtra.MSetIntervals]
    +y':872 [in MSetsExtra.MSetIntervals]
    +y':873 [in MSetsExtra.MSetIntervals]
    +y':878 [in MSetsExtra.MSetIntervals]
    +y0:128 [in MSetsExtra.MSetListWithDups]
    +y1:398 [in MSetsExtra.MSetIntervals]
    +y1:402 [in MSetsExtra.MSetIntervals]
    +y1:408 [in MSetsExtra.MSetIntervals]
    +y1:5 [in MSetsExtra.MSetIntervals]
    +y1:512 [in MSetsExtra.MSetIntervals]
    +y1:516 [in MSetsExtra.MSetIntervals]
    +y1:705 [in MSetsExtra.MSetIntervals]
    +y1:713 [in MSetsExtra.MSetIntervals]
    +y1:757 [in MSetsExtra.MSetIntervals]
    +y1:90 [in MSetsExtra.MSetIntervals]
    +y2:145 [in MSetsExtra.MSetIntervals]
    +y2:166 [in MSetsExtra.MSetIntervals]
    +y2:400 [in MSetsExtra.MSetIntervals]
    +y2:404 [in MSetsExtra.MSetIntervals]
    +y2:409 [in MSetsExtra.MSetIntervals]
    +y2:466 [in MSetsExtra.MSetIntervals]
    +y2:514 [in MSetsExtra.MSetIntervals]
    +y2:518 [in MSetsExtra.MSetIntervals]
    +y2:581 [in MSetsExtra.MSetIntervals]
    +y2:585 [in MSetsExtra.MSetIntervals]
    +y2:6 [in MSetsExtra.MSetIntervals]
    +y2:630 [in MSetsExtra.MSetIntervals]
    +y2:634 [in MSetsExtra.MSetIntervals]
    +y2:708 [in MSetsExtra.MSetIntervals]
    +y2:716 [in MSetsExtra.MSetIntervals]
    +y2:758 [in MSetsExtra.MSetIntervals]
    +y:11 [in MSetsExtra.MSetIntervals]
    +y:111 [in MSetsExtra.MSetListWithDups]
    +y:115 [in MSetsExtra.MSetListWithDups]
    +y:117 [in MSetsExtra.MSetListWithDups]
    +y:127 [in MSetsExtra.MSetListWithDups]
    +y:135 [in MSetsExtra.MSetListWithDups]
    +y:2 [in MSetsExtra.MSetListWithDups]
    +y:279 [in MSetsExtra.MSetFoldWithAbort]
    +y:282 [in MSetsExtra.MSetFoldWithAbort]
    +y:285 [in MSetsExtra.MSetFoldWithAbort]
    +y:302 [in MSetsExtra.MSetIntervals]
    +y:304 [in MSetsExtra.MSetIntervals]
    +y:360 [in MSetsExtra.MSetIntervals]
    +y:381 [in MSetsExtra.MSetIntervals]
    +y:382 [in MSetsExtra.MSetIntervals]
    +y:388 [in MSetsExtra.MSetIntervals]
    +y:390 [in MSetsExtra.MSetIntervals]
    +y:391 [in MSetsExtra.MSetIntervals]
    +y:394 [in MSetsExtra.MSetIntervals]
    +y:406 [in MSetsExtra.MSetIntervals]
    +y:423 [in MSetsExtra.MSetIntervals]
    +y:428 [in MSetsExtra.MSetIntervals]
    +y:433 [in MSetsExtra.MSetIntervals]
    +y:437 [in MSetsExtra.MSetIntervals]
    +y:442 [in MSetsExtra.MSetIntervals]
    +y:445 [in MSetsExtra.MSetIntervals]
    +y:448 [in MSetsExtra.MSetIntervals]
    +y:452 [in MSetsExtra.MSetIntervals]
    +y:493 [in MSetsExtra.MSetIntervals]
    +y:505 [in MSetsExtra.MSetIntervals]
    +y:52 [in MSetsExtra.MSetListWithDups]
    +y:526 [in MSetsExtra.MSetIntervals]
    +y:527 [in MSetsExtra.MSetIntervals]
    +y:533 [in MSetsExtra.MSetIntervals]
    +y:543 [in MSetsExtra.MSetIntervals]
    +y:550 [in MSetsExtra.MSetIntervals]
    +y:566 [in MSetsExtra.MSetIntervals]
    +y:568 [in MSetsExtra.MSetIntervals]
    +y:57 [in MSetsExtra.MSetListWithDups]
    +y:591 [in MSetsExtra.MSetIntervals]
    +y:592 [in MSetsExtra.MSetIntervals]
    +y:593 [in MSetsExtra.MSetIntervals]
    +y:594 [in MSetsExtra.MSetIntervals]
    +y:595 [in MSetsExtra.MSetIntervals]
    +y:596 [in MSetsExtra.MSetIntervals]
    +y:597 [in MSetsExtra.MSetIntervals]
    +y:598 [in MSetsExtra.MSetIntervals]
    +y:599 [in MSetsExtra.MSetIntervals]
    +y:6 [in MSetsExtra.MSetListWithDups]
    +y:601 [in MSetsExtra.MSetIntervals]
    +y:609 [in MSetsExtra.MSetIntervals]
    +y:618 [in MSetsExtra.MSetIntervals]
    +y:641 [in MSetsExtra.MSetIntervals]
    +y:643 [in MSetsExtra.MSetIntervals]
    +y:644 [in MSetsExtra.MSetIntervals]
    +y:645 [in MSetsExtra.MSetIntervals]
    +y:654 [in MSetsExtra.MSetIntervals]
    +y:660 [in MSetsExtra.MSetIntervals]
    +y:670 [in MSetsExtra.MSetIntervals]
    +y:689 [in MSetsExtra.MSetIntervals]
    +y:696 [in MSetsExtra.MSetIntervals]
    +y:711 [in MSetsExtra.MSetIntervals]
    +y:712 [in MSetsExtra.MSetIntervals]
    +y:719 [in MSetsExtra.MSetIntervals]
    +y:722 [in MSetsExtra.MSetIntervals]
    +y:724 [in MSetsExtra.MSetIntervals]
    +y:773 [in MSetsExtra.MSetIntervals]
    +y:779 [in MSetsExtra.MSetIntervals]
    +y:788 [in MSetsExtra.MSetIntervals]
    +y:8 [in MSetsExtra.MSetListWithDups]
    +y:803 [in MSetsExtra.MSetIntervals]
    +y:813 [in MSetsExtra.MSetIntervals]
    +y:845 [in MSetsExtra.MSetIntervals]
    +y:848 [in MSetsExtra.MSetIntervals]
    +y:853 [in MSetsExtra.MSetIntervals]
    +y:896 [in MSetsExtra.MSetIntervals]
    +y:9 [in MSetsExtra.MSetIntervals]
    +

    Z

    +z:1 [in MSetsExtra.MSetIntervals]
    +z:1004 [in MSetsExtra.MSetIntervals]
    +z:1005 [in MSetsExtra.MSetIntervals]
    +z:1012 [in MSetsExtra.MSetIntervals]
    +z:1019 [in MSetsExtra.MSetIntervals]
    +z:206 [in MSetsExtra.MSetIntervals]
    +z:227 [in MSetsExtra.MSetIntervals]
    +z:233 [in MSetsExtra.MSetIntervals]
    +z:237 [in MSetsExtra.MSetIntervals]
    +z:241 [in MSetsExtra.MSetIntervals]
    +z:3 [in MSetsExtra.MSetIntervals]
    +z:411 [in MSetsExtra.MSetIntervals]
    +z:418 [in MSetsExtra.MSetIntervals]
    +z:475 [in MSetsExtra.MSetIntervals]
    +z:520 [in MSetsExtra.MSetIntervals]
    +z:534 [in MSetsExtra.MSetIntervals]
    +z:537 [in MSetsExtra.MSetIntervals]
    +z:750 [in MSetsExtra.MSetIntervals]
    +z:884 [in MSetsExtra.MSetIntervals]
    +z:885 [in MSetsExtra.MSetIntervals]
    +z:886 [in MSetsExtra.MSetIntervals]
    +z:891 [in MSetsExtra.MSetIntervals]
    +z:892 [in MSetsExtra.MSetIntervals]
    +z:893 [in MSetsExtra.MSetIntervals]
    +


    Module Index

    -

    E

    +

    E

    ElementEncode [in MSetsExtra.MSetIntervals]
    ElementEncodeN [in MSetsExtra.MSetIntervals]
    ElementEncodeNat [in MSetsExtra.MSetIntervals]
    @@ -1128,10 +4215,10 @@

    Module Index

    ElementEncodeZ [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.E [in MSetsExtra.MSetIntervals]
    ElementEncode.E [in MSetsExtra.MSetIntervals]
    -

    H

    +

    H

    HasFoldWithAbort [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps [in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +

    M

    Make [in MSetsExtra.MSetListWithDups]
    MakeAVLSetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    MakeGenTreeFoldA [in MSetsExtra.MSetFoldWithAbort]
    @@ -1146,23 +4233,23 @@

    Module Index

    MSetIntervalsZ [in MSetsExtra.MSetIntervals]
    MSetIntervals.E [in MSetsExtra.MSetIntervals]
    MSetIntervals.Raw [in MSetsExtra.MSetIntervals]
    -

    N

    +

    N

    NOP [in MSetsExtra.MSetIntervals]
    -

    O

    +

    O

    Ops [in MSetsExtra.MSetListWithDups]
    Ops [in MSetsExtra.MSetIntervals]
    Ops.MX [in MSetsExtra.MSetListWithDups]
    Ops.RDFS [in MSetsExtra.MSetListWithDups]
    -

    R

    +

    R

    Raw [in MSetsExtra.MSetIntervals]
    RemoveDupsFromSorted [in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.MX [in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XSort [in MSetsExtra.MSetListWithDups]
    RemoveDupsFromSorted.XTotalLeBool [in MSetsExtra.MSetListWithDups]
    -

    S

    +

    S

    SetsWithFoldA [in MSetsExtra.MSetFoldWithAbort]
    SetsWithFoldA.E [in MSetsExtra.MSetFoldWithAbort]
    -

    W

    +

    W

    WSetsOnWithDups [in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra [in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra [in MSetsExtra.MSetWithDups]
    @@ -1172,13 +4259,13 @@

    Module Index

    WSetsWithFoldA.E [in MSetsExtra.MSetFoldWithAbort]



    Variable Index

    -

    M

    +

    M

    MSetIntervals.Spec.f [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.s [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.s' [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.x [in MSetsExtra.MSetIntervals]
    MSetIntervals.Spec.y [in MSetsExtra.MSetIntervals]
    -

    W

    +

    W

    WSetsOnWithDups.Spec.f [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.s [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Spec.s' [in MSetsExtra.MSetWithDups]
    @@ -1186,16 +4273,16 @@

    Variable Index

    WSetsOnWithDups.Spec.y [in MSetsExtra.MSetWithDups]



    Library Index

    -

    M

    +

    M

    MSetFoldWithAbort
    MSetIntervals
    MSetListWithDups
    MSetWithDups



    Lemma Index

    -

    A

    +

    A

    add_add_sub_eq [in MSetsExtra.MSetIntervals]
    -

    E

    +

    E

    ElementEncodeNat.decode_encode_ok [in MSetsExtra.MSetIntervals]
    ElementEncodeNat.encode_lt [in MSetsExtra.MSetIntervals]
    ElementEncodeNat.encode_eq [in MSetsExtra.MSetIntervals]
    @@ -1205,7 +4292,7 @@

    Lemma Index

    ElementEncodeZ.decode_encode_ok [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.encode_lt [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.encode_eq [in MSetsExtra.MSetIntervals]
    -

    H

    +

    H

    HasFoldWithAbortOps.choose_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.exists_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.filter_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    @@ -1217,7 +4304,7 @@

    Lemma Index

    HasFoldWithAbortOps.foldWithAbortSpec [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.foldWithAbortSpec_Equal [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.forall_with_abort_spec [in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +

    M

    MakeAVLSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    MakeGenTreeFoldA.foldWithAbort_RawSpec [in MSetsExtra.MSetFoldWithAbort]
    MakeListSetsWithFoldA.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    @@ -1282,12 +4369,12 @@

    Lemma Index

    MSetIntervals.singleton_spec [in MSetsExtra.MSetIntervals]
    MSetIntervals.subset_spec [in MSetsExtra.MSetIntervals]
    MSetIntervals.union_spec [in MSetsExtra.MSetIntervals]
    -

    N

    +

    N

    NoDupA_map [in MSetsExtra.MSetIntervals]
    -

    O

    +

    O

    Ops.acc_pred [in MSetsExtra.MSetIntervals]
    Ops.singleton_alt_def [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.addZ_invariant [in MSetsExtra.MSetIntervals]
    Raw.addZ_InZ [in MSetsExtra.MSetIntervals]
    Raw.addZ_alt_def [in MSetsExtra.MSetIntervals]
    @@ -1451,26 +4538,26 @@

    Lemma Index

    RemoveDupsFromSorted.XTotalLeBool.leb_total [in MSetsExtra.MSetListWithDups]
    rev_map_alt_def [in MSetsExtra.MSetIntervals]
    rev_map_aux_alt_def [in MSetsExtra.MSetIntervals]
    -

    W

    +

    W

    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec2w [in MSetsExtra.MSetWithDups]
    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist_spec1 [in MSetsExtra.MSetWithDups]
    -

    Z

    +

    Z

    Z_to_N_minus_neq_0 [in MSetsExtra.MSetIntervals]
    Z_lt_le_add_r [in MSetsExtra.MSetIntervals]
    Z_lt_add_r [in MSetsExtra.MSetIntervals]
    Z_le_add_r [in MSetsExtra.MSetIntervals]



    Axiom Index

    -

    E

    +

    E

    ElementEncode.decode [in MSetsExtra.MSetIntervals]
    ElementEncode.decode_encode_ok [in MSetsExtra.MSetIntervals]
    ElementEncode.encode [in MSetsExtra.MSetIntervals]
    ElementEncode.encode_lt [in MSetsExtra.MSetIntervals]
    ElementEncode.encode_eq [in MSetsExtra.MSetIntervals]
    -

    H

    +

    H

    HasFoldWithAbort.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbort.foldWithAbortPrecomputeSpec [in MSetsExtra.MSetFoldWithAbort]
    -

    W

    +

    W

    WSetsOnWithDupsExtra.cardinal_spec [in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra.elements_dist_spec2w [in MSetsExtra.MSetWithDups]
    WSetsOnWithDupsExtra.elements_dist_spec1 [in MSetsExtra.MSetWithDups]
    @@ -1498,9 +4585,7 @@

    Axiom Index

    WSetsOnWithDups.union_spec [in MSetsExtra.MSetWithDups]



    Constructor Index

    -

    M

    -MSetIntervals.Mkt [in MSetsExtra.MSetIntervals]
    -

    O

    +

    O

    Ops.ICR_after_touch [in MSetsExtra.MSetIntervals]
    Ops.ICR_after [in MSetsExtra.MSetIntervals]
    Ops.ICR_subsume_2 [in MSetsExtra.MSetIntervals]
    @@ -1510,35 +4595,43 @@

    Constructor Index

    Ops.ICR_overlap_before [in MSetsExtra.MSetIntervals]
    Ops.ICR_before_touch [in MSetsExtra.MSetIntervals]
    Ops.ICR_before [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.ok [in MSetsExtra.MSetIntervals]



    Projection Index

    -

    H

    +

    H

    HasFoldWithAbortOps.fwasa_P' [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_gt [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_lt [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.fwasa_f_pre [in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +

    M

    MSetIntervals.is_ok [in MSetsExtra.MSetIntervals]
    MSetIntervals.this [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.ok [in MSetsExtra.MSetIntervals]



    Inductive Index

    -

    O

    +

    O

    Ops.interval_compare_result [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.Ok [in MSetsExtra.MSetIntervals]



    +

    Section Index

    +

    M

    +MSetIntervals.Spec [in MSetsExtra.MSetIntervals]
    +

    R

    +Raw.ForNotations [in MSetsExtra.MSetIntervals]
    +

    W

    +WSetsOnWithDups.Spec [in MSetsExtra.MSetWithDups]
    +


    Instance Index

    -

    M

    +

    M

    Make.In_compat [in MSetsExtra.MSetListWithDups]
    MSetIntervals.eq_equiv [in MSetsExtra.MSetIntervals]
    MSetIntervals.In_compat [in MSetsExtra.MSetIntervals]
    MSetIntervals.lt_compat [in MSetsExtra.MSetIntervals]
    MSetIntervals.lt_strorder [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.add_ok [in MSetsExtra.MSetIntervals]
    Raw.diff_ok [in MSetsExtra.MSetIntervals]
    Raw.empty_ok [in MSetsExtra.MSetIntervals]
    @@ -1550,33 +4643,25 @@

    Instance Index

    Raw.remove_ok [in MSetsExtra.MSetIntervals]
    Raw.singleton_ok [in MSetsExtra.MSetIntervals]
    Raw.union_ok [in MSetsExtra.MSetIntervals]
    -

    W

    +

    W

    WSetsOnWithDups.In_compat [in MSetsExtra.MSetWithDups]



    -

    Section Index

    -

    M

    -MSetIntervals.Spec [in MSetsExtra.MSetIntervals]
    -

    R

    -Raw.ForNotations [in MSetsExtra.MSetIntervals]
    -

    W

    -WSetsOnWithDups.Spec [in MSetsExtra.MSetWithDups]
    -


    Abbreviation Index

    -

    M

    +

    M

    Make.compatb [in MSetsExtra.MSetListWithDups]
    MSetIntervals.compatb [in MSetsExtra.MSetIntervals]
    -

    W

    +

    W

    WSetsOnWithDups.compatb [in MSetsExtra.MSetWithDups]



    Definition Index

    -

    E

    +

    E

    ElementEncodeNat.decode [in MSetsExtra.MSetIntervals]
    ElementEncodeNat.encode [in MSetsExtra.MSetIntervals]
    ElementEncodeN.decode [in MSetsExtra.MSetIntervals]
    ElementEncodeN.encode [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.decode [in MSetsExtra.MSetIntervals]
    ElementEncodeZ.encode [in MSetsExtra.MSetIntervals]
    -

    F

    +

    F

    foldWithAbortGtLtSpecPred [in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortGtLtType [in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortGtSpecPred [in MSetsExtra.MSetFoldWithAbort]
    @@ -1585,7 +4670,7 @@

    Definition Index

    foldWithAbortPrecomputeType [in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortSpecPred [in MSetsExtra.MSetFoldWithAbort]
    foldWithAbortType [in MSetsExtra.MSetFoldWithAbort]
    -

    H

    +

    H

    HasFoldWithAbortOps.choose_with_abort [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.exists_with_abort [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.filter_with_abort [in MSetsExtra.MSetFoldWithAbort]
    @@ -1594,7 +4679,7 @@

    Definition Index

    HasFoldWithAbortOps.foldWithAbortGtLt [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.foldWithAbortSpecArgsForPred [in MSetsExtra.MSetFoldWithAbort]
    HasFoldWithAbortOps.forall_with_abort [in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +

    M

    MakeAVLSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    MakeGenTreeFoldA.foldWithAbort_Raw [in MSetsExtra.MSetFoldWithAbort]
    MakeListSetsWithFoldA.foldWithAbortPrecompute [in MSetsExtra.MSetFoldWithAbort]
    @@ -1642,7 +4727,7 @@

    Definition Index

    MSetIntervals.Subset [in MSetsExtra.MSetIntervals]
    MSetIntervals.t [in MSetsExtra.MSetIntervals]
    MSetIntervals.union [in MSetsExtra.MSetIntervals]
    -

    O

    +

    O

    Ops.add [in MSetsExtra.MSetListWithDups]
    Ops.add [in MSetsExtra.MSetIntervals]
    Ops.addZ [in MSetsExtra.MSetIntervals]
    @@ -1729,7 +4814,7 @@

    Definition Index

    Ops.union [in MSetsExtra.MSetListWithDups]
    Ops.union [in MSetsExtra.MSetIntervals]
    Ops.union_aux [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.choose_spec2 [in MSetsExtra.MSetIntervals]
    Raw.choose_spec1 [in MSetsExtra.MSetIntervals]
    Raw.elementsZ_single [in MSetsExtra.MSetIntervals]
    @@ -1767,7 +4852,7 @@

    Definition Index

    RemoveDupsFromSorted.XTotalLeBool.t [in MSetsExtra.MSetListWithDups]
    rev_map [in MSetsExtra.MSetIntervals]
    rev_map_aux [in MSetsExtra.MSetIntervals]
    -

    W

    +

    W

    WSetsOnWithDups.Empty [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.eq [in MSetsExtra.MSetWithDups]
    WSetsOnWithDups.Equal [in MSetsExtra.MSetWithDups]
    @@ -1777,44 +4862,44 @@

    Definition Index

    WSetsOn_TO_WSetsOnWithDupsExtra.elements_dist [in MSetsExtra.MSetWithDups]



    Record Index

    -

    H

    +

    H

    HasFoldWithAbortOps.FoldWithAbortSpecArg [in MSetsExtra.MSetFoldWithAbort]
    -

    M

    +

    M

    MSetIntervals.t_ [in MSetsExtra.MSetIntervals]
    -

    R

    +

    R

    Raw.Ok [in MSetsExtra.MSetIntervals]



    - - + + - + - + - + - + - - + + - + @@ -1849,6 +4934,38 @@

    Record Index

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2022,7 +5139,7 @@

    Record Index

    - + @@ -2038,7 +5155,7 @@

    Record Index

    - + @@ -2105,7 +5222,7 @@

    Record Index

    - + @@ -2118,26 +5235,26 @@

    Record Index

    - + - + - + - + - + @@ -2150,23 +5267,23 @@

    Record Index

    - + - + - + - + diff --git a/html/toc.html b/html/toc.html index cb185ba..ca7807c 100644 --- a/html/toc.html +++ b/html/toc.html @@ -17,7 +17,7 @@
    Global Index ABCBC D E F G HII J KLL M N OPP Q R STT U V WXYXY Z _ other(596 entries)(2110 entries)
    Notation Index (5 entries)
    Binder IndexABCDEFGHIJKLMNOPQRSTUVWXYZ_other(1515 entries)
    Module Index A B J K LMM N O P Z _ other(11 entries)(10 entries)
    Projection Index (2 entries)
    Instance IndexSection Index A B C J K LMM N O P QRR S T U VWW X Y Z _ other(17 entries)(3 entries)
    Section IndexInstance Index A B C J K LMM N O P QRR S T U VWW X Y Z _ other(3 entries)(17 entries)
    Abbreviation Index