aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorletouzey2006-03-15 23:55:01 +0000
committerletouzey2006-03-15 23:55:01 +0000
commit578cbf93d9f998f610d8a3aee4b035ec1588a8e1 (patch)
tree1a794dddbf56ac1ba3a045b52f73ecaa343b4121
parent15a7e0b3e4af14dc965f48b39436b42f3620988d (diff)
renommage NoRedun vers le plus joli NoDup
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@8635 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--theories/FSets/FMapWeakInterface.v2
-rw-r--r--theories/FSets/FMapWeakList.v154
-rw-r--r--theories/FSets/FSetProperties.v28
-rw-r--r--theories/FSets/FSetWeakList.v84
-rw-r--r--theories/FSets/OrderedType.v12
-rw-r--r--theories/Lists/MoreList.v9
-rw-r--r--theories/Lists/SetoidList.v27
7 files changed, 159 insertions, 157 deletions
diff --git a/theories/FSets/FMapWeakInterface.v b/theories/FSets/FMapWeakInterface.v
index 22ff07c1ff..078d58d500 100644
--- a/theories/FSets/FMapWeakInterface.v
+++ b/theories/FSets/FMapWeakInterface.v
@@ -150,7 +150,7 @@ Module Type S.
MapsTo x e m -> InA eq_key_elt (x,e) (elements m).
Parameter elements_2 :
InA eq_key_elt (x,e) (elements m) -> MapsTo x e m.
- Parameter elements_3 : noredunA eq_key (elements m).
+ Parameter elements_3 : NoDupA eq_key (elements m).
(** Specification of [fold] *)
Parameter fold_1 :
diff --git a/theories/FSets/FMapWeakList.v b/theories/FSets/FMapWeakList.v
index 6c544053e9..89699f3f9e 100644
--- a/theories/FSets/FMapWeakList.v
+++ b/theories/FSets/FMapWeakList.v
@@ -44,7 +44,7 @@ Notation eqk := (eqk (elt:=elt)).
Notation eqke := (eqke (elt:=elt)).
Notation MapsTo := (MapsTo (elt:=elt)).
Notation In := (In (elt:=elt)).
-Notation noredunA := (noredunA eqk).
+Notation NoDupA := (NoDupA eqk).
(** * [empty] *)
@@ -62,7 +62,7 @@ Qed.
Hint Resolve empty_1.
-Lemma empty_noredun : noredunA empty.
+Lemma empty_NoDup : NoDupA empty.
Proof.
unfold empty; auto.
Qed.
@@ -97,12 +97,12 @@ Fixpoint mem (k : key) (s : t elt) {struct s} : bool :=
| (k',_) :: l => if X.eq_dec k k' then true else mem k l
end.
-Lemma mem_1 : forall m (Hm:noredunA m) x, In x m -> mem x m = true.
+Lemma mem_1 : forall m (Hm:NoDupA m) x, In x m -> mem x m = true.
Proof.
intros m Hm x; generalize Hm; clear Hm.
- functional induction mem x m;intros noredun belong1;trivial.
+ functional induction mem x m;intros NoDup belong1;trivial.
inversion belong1. inversion H.
- inversion_clear noredun.
+ inversion_clear NoDup.
inversion_clear belong1.
inversion_clear H3.
compute in H4; destruct H4.
@@ -111,12 +111,12 @@ Proof.
exists x; auto.
Qed.
-Lemma mem_2 : forall m (Hm:noredunA m) x, mem x m = true -> In x m.
+Lemma mem_2 : forall m (Hm:NoDupA m) x, mem x m = true -> In x m.
Proof.
intros m Hm x; generalize Hm; clear Hm; unfold PX.In,PX.MapsTo.
- functional induction mem x m; intros noredun hyp; try discriminate.
+ functional induction mem x m; intros NoDup hyp; try discriminate.
exists e; auto.
- inversion_clear noredun.
+ inversion_clear NoDup.
destruct H0; auto.
exists x; auto.
Qed.
@@ -135,7 +135,7 @@ Proof.
functional induction find x m;simpl;intros e' eqfind; inversion eqfind; auto.
Qed.
-Lemma find_1 : forall m (Hm:noredunA m) x e,
+Lemma find_1 : forall m (Hm:NoDupA m) x e,
MapsTo x e m -> find x m = Some e.
Proof.
intros m Hm x e; generalize Hm; clear Hm; unfold PX.MapsTo.
@@ -153,7 +153,7 @@ Qed.
(* Not part of the exported specifications, used later for [combine]. *)
-Lemma find_eq : forall m (Hm:noredunA m) x x',
+Lemma find_eq : forall m (Hm:NoDupA m) x x',
X.eq x x' -> find x m = find x' m.
Proof.
induction m; simpl; auto; destruct a; intros.
@@ -213,7 +213,7 @@ Proof.
inversion_clear 2; auto.
Qed.
-Lemma add_noredun : forall m (Hm:noredunA m) x e, noredunA (add x e m).
+Lemma add_NoDup : forall m (Hm:NoDupA m) x e, NoDupA (add x e m).
Proof.
induction m.
simpl; constructor; auto; red; inversion 1.
@@ -229,22 +229,22 @@ Qed.
(* Not part of the exported specifications, used later for [combine]. *)
-Lemma add_eq : forall m (Hm:noredunA m) x a e,
+Lemma add_eq : forall m (Hm:NoDupA m) x a e,
X.eq x a -> find x (add a e m) = Some e.
Proof.
intros.
apply find_1; auto.
- apply add_noredun; auto.
+ apply add_NoDup; auto.
apply add_1; auto.
Qed.
-Lemma add_not_eq : forall m (Hm:noredunA m) x a e,
+Lemma add_not_eq : forall m (Hm:NoDupA m) x a e,
~X.eq x a -> find x (add a e m) = find x m.
Proof.
intros.
case_eq (find x m); intros.
apply find_1; auto.
- apply add_noredun; auto.
+ apply add_NoDup; auto.
apply add_2; auto.
apply find_2; auto.
case_eq (find x (add a e m)); intros; auto.
@@ -263,7 +263,7 @@ Fixpoint remove (k : key) (s : t elt) {struct s} : t elt :=
| (k',x) :: l => if X.eq_dec k k' then l else (k',x) :: remove k l
end.
-Lemma remove_1 : forall m (Hm:noredunA m) x y, X.eq x y -> ~ In y (remove x m).
+Lemma remove_1 : forall m (Hm:NoDupA m) x y, X.eq x y -> ~ In y (remove x m).
Proof.
intros m Hm x y; generalize Hm; clear Hm.
functional induction remove x m;simpl;intros;auto.
@@ -286,7 +286,7 @@ Proof.
exists e; auto.
Qed.
-Lemma remove_2 : forall m (Hm:noredunA m) x y e,
+Lemma remove_2 : forall m (Hm:NoDupA m) x y e,
~ X.eq x y -> MapsTo y e m -> MapsTo y e (remove x m).
Proof.
intros m Hm x y e; generalize Hm; clear Hm; unfold PX.MapsTo.
@@ -298,7 +298,7 @@ Proof.
inversion_clear 1; inversion_clear 2; auto.
Qed.
-Lemma remove_3 : forall m (Hm:noredunA m) x y e,
+Lemma remove_3 : forall m (Hm:NoDupA m) x y e,
MapsTo y e (remove x m) -> MapsTo y e m.
Proof.
intros m Hm x y e; generalize Hm; clear Hm; unfold PX.MapsTo.
@@ -306,7 +306,7 @@ Proof.
do 2 inversion_clear 1; auto.
Qed.
-Lemma remove_3' : forall m (Hm:noredunA m) x y e,
+Lemma remove_3' : forall m (Hm:NoDupA m) x y e,
InA eqk (y,e) (remove x m) -> InA eqk (y,e) m.
Proof.
intros m Hm x y e; generalize Hm; clear Hm; unfold PX.MapsTo.
@@ -314,7 +314,7 @@ Proof.
do 2 inversion_clear 1; auto.
Qed.
-Lemma remove_noredun : forall m (Hm:noredunA m) x, noredunA (remove x m).
+Lemma remove_NoDup : forall m (Hm:NoDupA m) x, NoDupA (remove x m).
Proof.
induction m.
simpl; intuition.
@@ -340,7 +340,7 @@ Proof.
auto.
Qed.
-Lemma elements_3 : forall m (Hm:noredunA m), noredunA (elements m).
+Lemma elements_3 : forall m (Hm:NoDupA m), NoDupA (elements m).
Proof.
auto.
Qed.
@@ -382,7 +382,7 @@ Definition Equal cmp m m' :=
(forall k, In k m <-> In k m') /\
(forall k e e', MapsTo k e m -> MapsTo k e' m' -> cmp e e' = true).
-Lemma submap_1 : forall m (Hm:noredunA m) m' (Hm': noredunA m') cmp,
+Lemma submap_1 : forall m (Hm:NoDupA m) m' (Hm': NoDupA m') cmp,
Submap cmp m m' -> submap cmp m m' = true.
Proof.
unfold Submap, submap.
@@ -403,7 +403,7 @@ Proof.
apply H0 with k; auto.
Qed.
-Lemma submap_2 : forall m (Hm:noredunA m) m' (Hm': noredunA m') cmp,
+Lemma submap_2 : forall m (Hm:NoDupA m) m' (Hm': NoDupA m') cmp,
submap cmp m m' = true -> Submap cmp m m'.
Proof.
unfold Submap, submap.
@@ -444,7 +444,7 @@ Qed.
(** Specification of [equal] *)
-Lemma equal_1 : forall m (Hm:noredunA m) m' (Hm': noredunA m') cmp,
+Lemma equal_1 : forall m (Hm:NoDupA m) m' (Hm': NoDupA m') cmp,
Equal cmp m m' -> equal cmp m m' = true.
Proof.
unfold Equal, equal.
@@ -452,7 +452,7 @@ Proof.
apply andb_true_intro; split; apply submap_1; unfold Submap; firstorder.
Qed.
-Lemma equal_2 : forall m (Hm:noredunA m) m' (Hm':noredunA m') cmp,
+Lemma equal_2 : forall m (Hm:NoDupA m) m' (Hm':NoDupA m') cmp,
equal cmp m m' = true -> Equal cmp m m'.
Proof.
unfold Equal, equal.
@@ -526,8 +526,8 @@ Proof.
constructor 2; auto.
Qed.
-Lemma map_noredun : forall m (Hm : noredunA (@eqk elt) m)(f:elt->elt'),
- noredunA (@eqk elt') (map f m).
+Lemma map_NoDup : forall m (Hm : NoDupA (@eqk elt) m)(f:elt->elt'),
+ NoDupA (@eqk elt') (map f m).
Proof.
induction m; simpl; auto.
intros.
@@ -586,8 +586,8 @@ Proof.
constructor 2; auto.
Qed.
-Lemma mapi_noredun : forall m (Hm : noredunA (@eqk elt) m)(f: key->elt->elt'),
- noredunA (@eqk elt') (mapi f m).
+Lemma mapi_NoDup : forall m (Hm : NoDupA (@eqk elt) m)(f: key->elt->elt'),
+ NoDupA (@eqk elt') (mapi f m).
Proof.
induction m; simpl; auto.
intros.
@@ -622,28 +622,28 @@ Definition combine (m:t elt)(m':t elt') : t oee' :=
let r := combine_r m m' in
fold_right_pair (add (elt:=oee')) l r.
-Lemma fold_right_pair_noredun :
- forall l r (Hl: noredunA (eqk (elt:=oee')) l)
- (Hl: noredunA (eqk (elt:=oee')) r),
- noredunA (eqk (elt:=oee')) (fold_right_pair (add (elt:=oee')) l r).
+Lemma fold_right_pair_NoDup :
+ forall l r (Hl: NoDupA (eqk (elt:=oee')) l)
+ (Hl: NoDupA (eqk (elt:=oee')) r),
+ NoDupA (eqk (elt:=oee')) (fold_right_pair (add (elt:=oee')) l r).
Proof.
induction l; simpl; auto.
destruct a; simpl; auto.
inversion_clear 1.
- intros; apply add_noredun; auto.
+ intros; apply add_NoDup; auto.
Qed.
-Hint Resolve fold_right_pair_noredun.
+Hint Resolve fold_right_pair_NoDup.
-Lemma combine_noredun :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m'),
- noredunA (@eqk oee') (combine m m').
+Lemma combine_NoDup :
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m'),
+ NoDupA (@eqk oee') (combine m m').
Proof.
unfold combine, combine_r, combine_l.
intros.
set (f1 := fun (k : key) (e : elt) => (Some e, find k m')).
set (f2 := fun (k : key) (e' : elt') => (find k m, Some e')).
- generalize (mapi_noredun Hm f1).
- generalize (mapi_noredun Hm' f2).
+ generalize (mapi_NoDup Hm f1).
+ generalize (mapi_NoDup Hm' f2).
set (l := mapi f1 m); clearbody l.
set (r := mapi f2 m'); clearbody r.
auto.
@@ -662,7 +662,7 @@ Definition at_least_right (o:option elt)(o':option elt') :=
end.
Lemma combine_l_1 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
find x (combine_l m m') = at_least_left (find x m) (find x m').
Proof.
unfold combine_l.
@@ -670,7 +670,7 @@ Proof.
case_eq (find x m); intros.
simpl.
apply find_1.
- apply mapi_noredun; auto.
+ apply mapi_NoDup; auto.
destruct (mapi_1 (fun k e => (Some e, find k m')) (find_2 H)) as (y,(H0,H1)).
rewrite (find_eq Hm' (X.eq_sym H0)); auto.
simpl.
@@ -681,7 +681,7 @@ Proof.
Qed.
Lemma combine_r_1 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
find x (combine_r m m') = at_least_right (find x m) (find x m').
Proof.
unfold combine_r.
@@ -689,7 +689,7 @@ Proof.
case_eq (find x m'); intros.
simpl.
apply find_1.
- apply mapi_noredun; auto.
+ apply mapi_NoDup; auto.
destruct (mapi_1 (fun k e => (find k m, Some e)) (find_2 H)) as (y,(H0,H1)).
rewrite (find_eq Hm (X.eq_sym H0)); auto.
simpl.
@@ -706,17 +706,17 @@ Definition at_least_one (o:option elt)(o':option elt') :=
end.
Lemma combine_1 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
find x (combine m m') = at_least_one (find x m) (find x m').
Proof.
unfold combine.
intros.
generalize (combine_r_1 Hm Hm' x).
generalize (combine_l_1 Hm Hm' x).
- assert (noredunA (eqk (elt:=oee')) (combine_l m m')).
- unfold combine_l; apply mapi_noredun; auto.
- assert (noredunA (eqk (elt:=oee')) (combine_r m m')).
- unfold combine_r; apply mapi_noredun; auto.
+ assert (NoDupA (eqk (elt:=oee')) (combine_l m m')).
+ unfold combine_l; apply mapi_NoDup; auto.
+ assert (NoDupA (eqk (elt:=oee')) (combine_r m m')).
+ unfold combine_r; apply mapi_NoDup; auto.
set (l := combine_l m m') in *; clearbody l.
set (r := combine_r m m') in *; clearbody r.
set (o := find x m); clearbody o.
@@ -749,16 +749,16 @@ Definition map2 m m' :=
let m1 : t (option elt'') := map (fun p => f (fst p) (snd p)) m0 in
fold_right_pair (option_cons (A:=elt'')) m1 nil.
-Lemma map2_noredun :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m'),
- noredunA (@eqk elt'') (map2 m m').
+Lemma map2_NoDup :
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m'),
+ NoDupA (@eqk elt'') (map2 m m').
Proof.
intros.
unfold map2.
- assert (H0:=combine_noredun Hm Hm').
+ assert (H0:=combine_NoDup Hm Hm').
set (l0:=combine m m') in *; clearbody l0.
set (f':= fun p : oee' => f (fst p) (snd p)).
- assert (H1:=map_noredun (elt' := option elt'') H0 f').
+ assert (H1:=map_NoDup (elt' := option elt'') H0 f').
set (l1:=map f' l0) in *; clearbody l1.
clear f' f H0 l0 Hm Hm' m m'.
induction l1.
@@ -782,13 +782,13 @@ Definition at_least_one_then_f (o:option elt)(o':option elt') :=
end.
Lemma map2_0 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
find x (map2 m m') = at_least_one_then_f (find x m) (find x m').
Proof.
intros.
unfold map2.
assert (H:=combine_1 Hm Hm' x).
- assert (H2:=combine_noredun Hm Hm').
+ assert (H2:=combine_NoDup Hm Hm').
set (f':= fun p : oee' => f (fst p) (snd p)).
set (m0 := combine m m') in *; clearbody m0.
set (o:=find x m) in *; clearbody o.
@@ -839,7 +839,7 @@ Qed.
(** Specification of [map2] *)
Lemma map2_1 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
In x m \/ In x m' ->
find x (map2 m m') = f (find x m) (find x m').
Proof.
@@ -853,13 +853,13 @@ Proof.
Qed.
Lemma map2_2 :
- forall m (Hm:noredunA (@eqk elt) m) m' (Hm':noredunA (@eqk elt') m')(x:key),
+ forall m (Hm:NoDupA (@eqk elt) m) m' (Hm':NoDupA (@eqk elt') m')(x:key),
In x (map2 m m') -> In x m \/ In x m'.
Proof.
intros.
destruct H as (e,H).
generalize (map2_0 Hm Hm' x).
- rewrite (find_1 (map2_noredun Hm Hm') H).
+ rewrite (find_1 (map2_NoDup Hm Hm') H).
generalize (@find_2 _ m x).
generalize (@find_2 _ m' x).
destruct (find x m);
@@ -881,7 +881,7 @@ Module Make (X: DecidableType) <: S with Module E:=X.
Definition key := X.t.
Record slist (elt:Set) : Set :=
- {this :> Raw.t elt; noredun : noredunA (@Raw.PX.eqk elt) this}.
+ {this :> Raw.t elt; NoDup : NoDupA (@Raw.PX.eqk elt) this}.
Definition t (elt:Set) := slist elt.
Section Elt.
@@ -889,16 +889,16 @@ Module Make (X: DecidableType) <: S with Module E:=X.
Implicit Types m : t elt.
- Definition empty := Build_slist (Raw.empty_noredun elt).
+ Definition empty := Build_slist (Raw.empty_NoDup elt).
Definition is_empty m := Raw.is_empty m.(this).
- Definition add x e m := Build_slist (Raw.add_noredun m.(noredun) x e).
+ Definition add x e m := Build_slist (Raw.add_NoDup m.(NoDup) x e).
Definition find x m := Raw.find x m.(this).
- Definition remove x m := Build_slist (Raw.remove_noredun m.(noredun) x).
+ Definition remove x m := Build_slist (Raw.remove_NoDup m.(NoDup) x).
Definition mem x m := Raw.mem x m.(this).
- Definition map f m : t elt' := Build_slist (Raw.map_noredun m.(noredun) f).
- Definition mapi f m : t elt' := Build_slist (Raw.mapi_noredun m.(noredun) f).
+ Definition map f m : t elt' := Build_slist (Raw.map_NoDup m.(NoDup) f).
+ Definition mapi f m : t elt' := Build_slist (Raw.mapi_NoDup m.(NoDup) f).
Definition map2 f m (m':t elt') : t elt'' :=
- Build_slist (Raw.map2_noredun f m.(noredun) m'.(noredun)).
+ Build_slist (Raw.map2_NoDup f m.(NoDup) m'.(NoDup)).
Definition elements m := @Raw.elements elt m.(this).
Definition fold A f m i := @Raw.fold elt A f m.(this) i.
Definition equal cmp m m' := @Raw.equal elt cmp m.(this) m'.(this).
@@ -915,8 +915,8 @@ Module Make (X: DecidableType) <: S with Module E:=X.
Definition MapsTo_1 m := @Raw.PX.MapsTo_eq elt m.(this).
- Definition mem_1 m := @Raw.mem_1 elt m.(this) m.(noredun).
- Definition mem_2 m := @Raw.mem_2 elt m.(this) m.(noredun).
+ Definition mem_1 m := @Raw.mem_1 elt m.(this) m.(NoDup).
+ Definition mem_2 m := @Raw.mem_2 elt m.(this) m.(NoDup).
Definition empty_1 := @Raw.empty_1.
@@ -927,16 +927,16 @@ Module Make (X: DecidableType) <: S with Module E:=X.
Definition add_2 m := @Raw.add_2 elt m.(this).
Definition add_3 m := @Raw.add_3 elt m.(this).
- Definition remove_1 m := @Raw.remove_1 elt m.(this) m.(noredun).
- Definition remove_2 m := @Raw.remove_2 elt m.(this) m.(noredun).
- Definition remove_3 m := @Raw.remove_3 elt m.(this) m.(noredun).
+ Definition remove_1 m := @Raw.remove_1 elt m.(this) m.(NoDup).
+ Definition remove_2 m := @Raw.remove_2 elt m.(this) m.(NoDup).
+ Definition remove_3 m := @Raw.remove_3 elt m.(this) m.(NoDup).
- Definition find_1 m := @Raw.find_1 elt m.(this) m.(noredun).
+ Definition find_1 m := @Raw.find_1 elt m.(this) m.(NoDup).
Definition find_2 m := @Raw.find_2 elt m.(this).
Definition elements_1 m := @Raw.elements_1 elt m.(this).
Definition elements_2 m := @Raw.elements_2 elt m.(this).
- Definition elements_3 m := @Raw.elements_3 elt m.(this) m.(noredun).
+ Definition elements_3 m := @Raw.elements_3 elt m.(this) m.(NoDup).
Definition fold_1 m := @Raw.fold_1 elt m.(this).
@@ -947,12 +947,12 @@ Module Make (X: DecidableType) <: S with Module E:=X.
Definition mapi_2 m := @Raw.mapi_2 elt elt' m.(this).
Definition map2_1 m (m':t elt') x f :=
- @Raw.map2_1 elt elt' elt'' f m.(this) m.(noredun) m'.(this) m'.(noredun) x.
+ @Raw.map2_1 elt elt' elt'' f m.(this) m.(NoDup) m'.(this) m'.(NoDup) x.
Definition map2_2 m (m':t elt') x f :=
- @Raw.map2_2 elt elt' elt'' f m.(this) m.(noredun) m'.(this) m'.(noredun) x.
+ @Raw.map2_2 elt elt' elt'' f m.(this) m.(NoDup) m'.(this) m'.(NoDup) x.
- Definition equal_1 m m' := @Raw.equal_1 elt m.(this) m.(noredun) m'.(this) m'.(noredun).
- Definition equal_2 m m' := @Raw.equal_2 elt m.(this) m.(noredun) m'.(this) m'.(noredun).
+ Definition equal_1 m m' := @Raw.equal_1 elt m.(this) m.(NoDup) m'.(this) m'.(NoDup).
+ Definition equal_2 m m' := @Raw.equal_2 elt m.(this) m.(NoDup) m'.(this) m'.(NoDup).
End Elt.
End Make.
diff --git a/theories/FSets/FSetProperties.v b/theories/FSets/FSetProperties.v
index b67c1245e2..66d019d6f1 100644
--- a/theories/FSets/FSetProperties.v
+++ b/theories/FSets/FSetProperties.v
@@ -449,15 +449,15 @@ Module Properties (M: S).
remove_diff_singleton diff_inter_empty diff_inter_all Add_add Add_remove
Equal_remove : set.
- Notation NoRedun := (noredunA E.eq).
+ Notation NoDup := (NoDupA E.eq).
- Section noredunA_Remove.
+ Section NoDupA_Remove.
Definition remove_list x l := MoreList.filter (fun y => negb (eqb x y)) l.
Lemma remove_list_correct :
- forall s x, NoRedun s ->
- NoRedun (remove_list x s) /\
+ forall s x, NoDup s ->
+ NoDup (remove_list x s) /\
(forall y : elt, ME.In y (remove_list x s) <-> ME.In y s /\ ~ E.eq x y).
Proof.
simple induction s; simpl; intros.
@@ -486,7 +486,7 @@ Module Properties (M: S).
Let ListEq l l' := forall y : elt, ME.In y l <-> ME.In y l'.
Lemma remove_list_equal :
- forall s s' x, NoRedun (x :: s) -> NoRedun s' ->
+ forall s s' x, NoDup (x :: s) -> NoDup s' ->
ListEq (x :: s) s' -> ListEq s (remove_list x s').
Proof.
unfold ListEq; intros.
@@ -505,7 +505,7 @@ Module Properties (M: S).
Let ListAdd x l l' := forall y : elt, ME.In y l' <-> E.eq x y \/ ME.In y l.
Lemma remove_list_add :
- forall s s' x x', NoRedun s -> NoRedun (x' :: s') ->
+ forall s s' x x', NoDup s -> NoDup (x' :: s') ->
~ E.eq x x' -> ~ ME.In x s ->
ListAdd x s (x' :: s') -> ListAdd x (remove_list x' s) s'.
Proof.
@@ -534,7 +534,7 @@ Module Properties (M: S).
Variables (i:A).
Lemma remove_list_fold_right_0 :
- forall s x, NoRedun s -> ~ME.In x s ->
+ forall s x, NoDup s -> ~ME.In x s ->
eqA (fold_right f i s) (fold_right f i (remove_list x s)).
Proof.
simple induction s; simpl; intros.
@@ -546,7 +546,7 @@ Module Properties (M: S).
Qed.
Lemma remove_list_fold_right :
- forall s x, NoRedun s -> ME.In x s ->
+ forall s x, NoDup s -> ME.In x s ->
eqA (fold_right f i s) (f x (fold_right f i (remove_list x s))).
Proof.
simple induction s; simpl.
@@ -563,7 +563,7 @@ Module Properties (M: S).
Qed.
Lemma fold_right_equal :
- forall s s', NoRedun s -> NoRedun s' ->
+ forall s s', NoDup s -> NoDup s' ->
ListEq s s' -> eqA (fold_right f i s) (fold_right f i s').
Proof.
simple induction s.
@@ -586,7 +586,7 @@ Module Properties (M: S).
Qed.
Lemma fold_right_add :
- forall s' s x, NoRedun s -> NoRedun s' -> ~ ME.In x s ->
+ forall s' s x, NoDup s -> NoDup s' -> ~ ME.In x s ->
ListAdd x s s' -> eqA (fold_right f i s') (f x (fold_right f i s)).
Proof.
simple induction s'.
@@ -625,7 +625,7 @@ Module Properties (M: S).
destruct H; auto; destruct n; auto.
Qed.
- End noredunA_Remove.
+ End NoDupA_Remove.
(** * Alternative (weaker) specifications for [fold] *)
@@ -638,12 +638,12 @@ Module Properties (M: S).
Lemma fold_0 :
forall s (A : Set) (i : A) (f : elt -> A -> A),
exists l : list elt,
- NoRedun l /\
+ NoDup l /\
(forall x : elt, In x s <-> InA E.eq x l) /\
fold f s i = fold_right f i l.
Proof.
intros; exists (rev (elements s)); split.
- apply noredunA_rev; auto.
+ apply NoDupA_rev; auto.
exact E.eq_trans.
split; intros.
rewrite elements_iff; do 2 rewrite InA_alt.
@@ -694,7 +694,7 @@ Module Properties (M: S).
Lemma cardinal_0 :
forall s, exists l : list elt,
- noredunA E.eq l /\
+ NoDupA E.eq l /\
(forall x : elt, In x s <-> InA E.eq x l) /\
cardinal s = length l.
Proof.
diff --git a/theories/FSets/FSetWeakList.v b/theories/FSets/FSetWeakList.v
index bcd966f9a8..4b98474b16 100644
--- a/theories/FSets/FSetWeakList.v
+++ b/theories/FSets/FSetWeakList.v
@@ -115,7 +115,7 @@ Module Raw (X: DecidableType).
(** ** Proofs of set operation specifications. *)
- Notation NoRedun := (noredunA X.eq).
+ Notation NoDup := (NoDupA X.eq).
Notation In := (InA X.eq).
Definition Equal s s' := forall a : elt, In a s <-> In a s'.
@@ -149,7 +149,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma add_1 :
- forall (s : t) (Hs : NoRedun s) (x y : elt), X.eq x y -> In y (add x s).
+ forall (s : t) (Hs : NoDup s) (x y : elt), X.eq x y -> In y (add x s).
Proof.
induction s.
simpl; intuition.
@@ -159,7 +159,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma add_2 :
- forall (s : t) (Hs : NoRedun s) (x y : elt), In y s -> In y (add x s).
+ forall (s : t) (Hs : NoDup s) (x y : elt), In y s -> In y (add x s).
Proof.
induction s.
simpl; intuition.
@@ -168,7 +168,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma add_3 :
- forall (s : t) (Hs : NoRedun s) (x y : elt),
+ forall (s : t) (Hs : NoDup s) (x y : elt),
~ X.eq x y -> In y (add x s) -> In y s.
Proof.
induction s.
@@ -180,7 +180,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma add_unique :
- forall (s : t) (Hs : NoRedun s)(x:elt), NoRedun (add x s).
+ forall (s : t) (Hs : NoDup s)(x:elt), NoDup (add x s).
Proof.
induction s.
simpl; intuition.
@@ -197,7 +197,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma remove_1 :
- forall (s : t) (Hs : NoRedun s) (x y : elt), X.eq x y -> ~ In y (remove x s).
+ forall (s : t) (Hs : NoDup s) (x y : elt), X.eq x y -> ~ In y (remove x s).
Proof.
simple induction s.
simpl; red; intros; inversion H0.
@@ -208,7 +208,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma remove_2 :
- forall (s : t) (Hs : NoRedun s) (x y : elt),
+ forall (s : t) (Hs : NoDup s) (x y : elt),
~ X.eq x y -> In y s -> In y (remove x s).
Proof.
simple induction s.
@@ -219,7 +219,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma remove_3 :
- forall (s : t) (Hs : NoRedun s) (x y : elt), In y (remove x s) -> In y s.
+ forall (s : t) (Hs : NoDup s) (x y : elt), In y (remove x s) -> In y s.
Proof.
simple induction s.
simpl; intuition.
@@ -228,7 +228,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma remove_unique :
- forall (s : t) (Hs : NoRedun s) (x : elt), NoRedun (remove x s).
+ forall (s : t) (Hs : NoDup s) (x : elt), NoDup (remove x s).
Proof.
simple induction s.
simpl; intuition.
@@ -239,7 +239,7 @@ Module Raw (X: DecidableType).
eapply remove_3; eauto.
Qed.
- Lemma singleton_unique : forall x : elt, NoRedun (singleton x).
+ Lemma singleton_unique : forall x : elt, NoDup (singleton x).
Proof.
unfold singleton; simpl; constructor; auto; intro H; inversion H.
Qed.
@@ -255,7 +255,7 @@ Module Raw (X: DecidableType).
unfold singleton; simpl; intuition.
Qed.
- Lemma empty_unique : NoRedun empty.
+ Lemma empty_unique : NoDup empty.
Proof.
unfold empty; constructor.
Qed.
@@ -287,13 +287,13 @@ Module Raw (X: DecidableType).
unfold elements; auto.
Qed.
- Lemma elements_3 : forall (s : t) (Hs : NoRedun s), NoRedun (elements s).
+ Lemma elements_3 : forall (s : t) (Hs : NoDup s), NoDup (elements s).
Proof.
unfold elements; auto.
Qed.
Lemma fold_1 :
- forall (s : t) (Hs : NoRedun s) (A : Set) (i : A) (f : elt -> A -> A),
+ forall (s : t) (Hs : NoDup s) (A : Set) (i : A) (f : elt -> A -> A),
fold f s i = fold_left (fun a e => f e a) (elements s) i.
Proof.
induction s; simpl; auto; intros.
@@ -301,7 +301,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma union_unique :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s'), NoRedun (union s s').
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s'), NoDup (union s s').
Proof.
unfold union; induction s; simpl; auto; intros.
inversion_clear Hs.
@@ -310,7 +310,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma union_1 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (union s s') -> In x s \/ In x s'.
Proof.
unfold union; induction s; simpl; auto; intros.
@@ -322,7 +322,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma union_0 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x s \/ In x s' -> In x (union s s').
Proof.
unfold union; induction s; simpl; auto; intros.
@@ -338,25 +338,25 @@ Module Raw (X: DecidableType).
Qed.
Lemma union_2 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x s -> In x (union s s').
Proof.
intros; apply union_0; auto.
Qed.
Lemma union_3 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x s' -> In x (union s s').
Proof.
intros; apply union_0; auto.
Qed.
Lemma inter_unique :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s'), NoRedun (inter s s').
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s'), NoDup (inter s s').
Proof.
unfold inter; intros s.
set (acc := nil (A:=elt)).
- assert (NoRedun acc) by (unfold acc; auto).
+ assert (NoDup acc) by (unfold acc; auto).
clearbody acc; generalize H; clear H; generalize acc; clear acc.
induction s; simpl; auto; intros.
inversion_clear Hs.
@@ -366,12 +366,12 @@ Module Raw (X: DecidableType).
Qed.
Lemma inter_0 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (inter s s') -> In x s /\ In x s'.
Proof.
unfold inter; intros.
set (acc := nil (A:=elt)) in *.
- assert (NoRedun acc) by (unfold acc; auto).
+ assert (NoDup acc) by (unfold acc; auto).
cut ((In x s /\ In x s') \/ In x acc).
destruct 1; auto.
inversion H1.
@@ -393,21 +393,21 @@ Module Raw (X: DecidableType).
Qed.
Lemma inter_1 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (inter s s') -> In x s.
Proof.
intros; cut (In x s /\ In x s'); [ intuition | apply inter_0; auto ].
Qed.
Lemma inter_2 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (inter s s') -> In x s'.
Proof.
intros; cut (In x s /\ In x s'); [ intuition | apply inter_0; auto ].
Qed.
Lemma inter_3 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x s -> In x s' -> In x (inter s s').
Proof.
intros s s' Hs Hs' x.
@@ -415,7 +415,7 @@ Module Raw (X: DecidableType).
intuition.
unfold inter.
set (acc := nil (A:=elt)) in *.
- assert (NoRedun acc) by (unfold acc; auto).
+ assert (NoDup acc) by (unfold acc; auto).
clearbody acc.
generalize H Hs' Hs; clear H Hs Hs'.
generalize acc x s'; clear acc x s'.
@@ -441,7 +441,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma diff_unique :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s'), NoRedun (diff s s').
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s'), NoDup (diff s s').
Proof.
unfold diff; intros s s' Hs; generalize s Hs; clear Hs s.
induction s'; simpl; auto; intros.
@@ -451,7 +451,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma diff_0 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (diff s s') -> In x s /\ ~ In x s'.
Proof.
unfold diff; intros s s' Hs; generalize s Hs; clear Hs s.
@@ -468,21 +468,21 @@ Module Raw (X: DecidableType).
Qed.
Lemma diff_1 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (diff s s') -> In x s.
Proof.
intros; cut (In x s /\ ~ In x s'); [ intuition | apply diff_0; auto].
Qed.
Lemma diff_2 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x (diff s s') -> ~ In x s'.
Proof.
intros; cut (In x s /\ ~ In x s'); [ intuition | apply diff_0; auto].
Qed.
Lemma diff_3 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s') (x : elt),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s') (x : elt),
In x s -> ~ In x s' -> In x (diff s s').
Proof.
unfold diff; intros s s' Hs; generalize s Hs; clear Hs s.
@@ -494,7 +494,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma subset_1 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s'),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s'),
Subset s s' -> subset s s' = true.
Proof.
unfold subset, Subset; intros.
@@ -506,7 +506,7 @@ Module Raw (X: DecidableType).
eapply diff_1; eauto.
Qed.
- Lemma subset_2 : forall (s s' : t)(Hs : NoRedun s) (Hs' : NoRedun s'),
+ Lemma subset_2 : forall (s s' : t)(Hs : NoDup s) (Hs' : NoDup s'),
subset s s' = true -> Subset s s'.
Proof.
unfold subset, Subset; intros.
@@ -519,14 +519,14 @@ Module Raw (X: DecidableType).
Qed.
Lemma equal_1 :
- forall (s s' : t) (Hs : NoRedun s) (Hs' : NoRedun s'),
+ forall (s s' : t) (Hs : NoDup s) (Hs' : NoDup s'),
Equal s s' -> equal s s' = true.
Proof.
unfold Equal, equal; intros.
apply andb_true_intro; split; apply subset_1; firstorder.
Qed.
- Lemma equal_2 : forall (s s' : t)(Hs : NoRedun s) (Hs' : NoRedun s'),
+ Lemma equal_2 : forall (s s' : t)(Hs : NoDup s) (Hs' : NoDup s'),
equal s s' = true -> Equal s s'.
Proof.
unfold Equal, equal; intros.
@@ -548,7 +548,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma cardinal_1 :
- forall (s : t) (Hs : NoRedun s), cardinal s = length (elements s).
+ forall (s : t) (Hs : NoDup s), cardinal s = length (elements s).
Proof.
auto.
Qed.
@@ -593,7 +593,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma filter_unique :
- forall (s : t) (Hs : NoRedun s) (f : elt -> bool), NoRedun (filter f s).
+ forall (s : t) (Hs : NoDup s) (f : elt -> bool), NoDup (filter f s).
Proof.
simple induction s; simpl.
auto.
@@ -690,7 +690,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma partition_aux_1 :
- forall (s : t) (Hs : NoRedun s) (f : elt -> bool)(x:elt),
+ forall (s : t) (Hs : NoDup s) (f : elt -> bool)(x:elt),
In x (fst (partition f s)) -> In x s.
Proof.
induction s; simpl; auto; intros.
@@ -701,7 +701,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma partition_aux_2 :
- forall (s : t) (Hs : NoRedun s) (f : elt -> bool)(x:elt),
+ forall (s : t) (Hs : NoDup s) (f : elt -> bool)(x:elt),
In x (snd (partition f s)) -> In x s.
Proof.
induction s; simpl; auto; intros.
@@ -712,7 +712,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma partition_unique_1 :
- forall (s : t) (Hs : NoRedun s) (f : elt -> bool), NoRedun (fst (partition f s)).
+ forall (s : t) (Hs : NoDup s) (f : elt -> bool), NoDup (fst (partition f s)).
Proof.
simple induction s; simpl.
auto.
@@ -723,7 +723,7 @@ Module Raw (X: DecidableType).
Qed.
Lemma partition_unique_2 :
- forall (s : t) (Hs : NoRedun s) (f : elt -> bool), NoRedun (snd (partition f s)).
+ forall (s : t) (Hs : NoDup s) (f : elt -> bool), NoDup (snd (partition f s)).
Proof.
simple induction s; simpl.
auto.
@@ -762,7 +762,7 @@ Module Make (X: DecidableType) <: S with Module E := X.
Module E := X.
Module Raw := Raw X.
- Record slist : Set := {this :> Raw.t; unique : noredunA X.eq this}.
+ Record slist : Set := {this :> Raw.t; unique : NoDupA X.eq this}.
Definition t := slist.
Definition elt := X.t.
diff --git a/theories/FSets/OrderedType.v b/theories/FSets/OrderedType.v
index c5edf1de47..9cc4d283ca 100644
--- a/theories/FSets/OrderedType.v
+++ b/theories/FSets/OrderedType.v
@@ -316,7 +316,7 @@ Ltac false_order := elimtype False; order.
Notation In:=(InA eq).
Notation Inf:=(lelistA lt).
Notation Sort:=(sort lt).
-Notation NoRedun:=(noredunA eq).
+Notation NoDup:=(NoDupA eq).
Lemma In_eq : forall l x y, eq x y -> In x l -> In y l.
Proof. exact (InA_eqA eq_sym eq_trans). Qed.
@@ -343,10 +343,10 @@ Lemma Inf_alt :
forall l x, Sort l -> (Inf x l <-> (forall y, In y l -> lt x y)).
Proof. exact (InfA_alt eq_refl eq_sym lt_trans lt_eq eq_lt). Qed.
-Lemma Sort_NoRedun : forall l, Sort l -> NoRedun l.
-Proof. exact (SortA_noredunA eq_refl eq_sym lt_trans lt_not_eq lt_eq eq_lt) . Qed.
+Lemma Sort_NoDup : forall l, Sort l -> NoDup l.
+Proof. exact (SortA_NoDupA eq_refl eq_sym lt_trans lt_not_eq lt_eq eq_lt) . Qed.
-Hint Resolve ListIn_In Sort_NoRedun Inf_lt.
+Hint Resolve ListIn_In Sort_NoDup Inf_lt.
Hint Immediate In_eq Inf_lt.
End OrderedTypeFacts.
@@ -502,9 +502,9 @@ Module PairOrderedType(O:OrderedType).
red; simpl; auto.
Qed.
- Lemma Sort_noredunA: forall l, Sort l -> noredunA eqk l.
+ Lemma Sort_NoDupA: forall l, Sort l -> NoDupA eqk l.
Proof.
- exact (SortA_noredunA eqk_refl eqk_sym ltk_trans ltk_not_eqk ltk_eqk eqk_ltk).
+ exact (SortA_NoDupA eqk_refl eqk_sym ltk_trans ltk_not_eqk ltk_eqk eqk_ltk).
Qed.
Lemma Sort_In_cons_1 : forall e l e', Sort (e::l) -> InA eqk e' l -> ltk e e'.
diff --git a/theories/Lists/MoreList.v b/theories/Lists/MoreList.v
index 5def8d84a1..f4456646ea 100644
--- a/theories/Lists/MoreList.v
+++ b/theories/Lists/MoreList.v
@@ -477,6 +477,15 @@ Fixpoint remove (x : A) (l : list A){struct l} : list A :=
End Remove.
+Section NoDuplicates.
+
+(** A list without redundancy. *)
+
+Inductive NoDup : list A -> Prop :=
+ | NoDup_nil : NoDup nil
+ | NoDup_cons : forall x l, ~ In x l -> NoDup l -> NoDup (x::l).
+
+End NoDuplicates.
End MoreLists.
diff --git a/theories/Lists/SetoidList.v b/theories/Lists/SetoidList.v
index c65ea35629..1ad10c9c57 100644
--- a/theories/Lists/SetoidList.v
+++ b/theories/Lists/SetoidList.v
@@ -44,20 +44,13 @@ Proof.
firstorder; subst; auto.
Qed.
-(** A list without redundancy. *)
-
-Inductive noredun : list A -> Prop :=
- | noredun_nil : noredun nil
- | noredun_cons : forall x l, ~ In x l -> noredun l -> noredun (x::l).
-
-
(** Similarly, a list without redundancy modulo the equality over [A]. *)
-Inductive noredunA : list A -> Prop :=
- | noredunA_nil : noredunA nil
- | noredunA_cons : forall x l, ~ InA x l -> noredunA l -> noredunA (x::l).
+Inductive NoDupA : list A -> Prop :=
+ | NoDupA_nil : NoDupA nil
+ | NoDupA_cons : forall x l, ~ InA x l -> NoDupA l -> NoDupA (x::l).
-Hint Constructors noredunA.
+Hint Constructors NoDupA.
(** Results concerning lists modulo [eqA] *)
@@ -147,7 +140,7 @@ intros; eapply SortA_InfA_InA; eauto.
apply InA_InfA.
Qed.
-Lemma SortA_noredunA : forall l, SortA l -> noredunA l.
+Lemma SortA_NoDupA : forall l, SortA l -> NoDupA l.
Proof.
simple induction l; auto.
intros x l' H H0.
@@ -158,9 +151,9 @@ Proof.
elim (ltA_not_eqA H3); auto.
Qed.
-Lemma noredunA_app : forall l l', noredunA l -> noredunA l' ->
+Lemma NoDupA_app : forall l l', NoDupA l -> NoDupA l' ->
(forall x, InA x l -> InA x l' -> False) ->
- noredunA (l++l').
+ NoDupA (l++l').
Proof.
induction l; simpl; auto; intros.
inversion_clear H.
@@ -180,13 +173,13 @@ apply (H1 x); auto.
Qed.
-Lemma noredunA_rev : forall l, noredunA l -> noredunA (rev l).
+Lemma NoDupA_rev : forall l, NoDupA l -> NoDupA (rev l).
Proof.
induction l.
simpl; auto.
simpl; intros.
inversion_clear H.
-apply noredunA_app; auto.
+apply NoDupA_app; auto.
constructor; auto.
intro H2; inversion H2.
intros x.
@@ -244,6 +237,6 @@ End Remove.
End Type_with_equality.
Hint Constructors InA.
-Hint Constructors noredunA.
+Hint Constructors NoDupA.
Hint Constructors sort.
Hint Constructors lelistA.