1 (**************************************************************************)
4 (* ||A|| A project by Andrea Asperti *)
6 (* ||I|| Developers: *)
7 (* ||T|| The HELM team. *)
8 (* ||A|| http://helm.cs.unibo.it *)
10 (* \ / This file is distributed under the terms of the *)
11 (* v GNU General Public License Version 2 *)
13 (**************************************************************************)
15 (* This file was automatically generated: do not edit *********************)
19 (*#***********************************************************************)
21 (* v * The Coq Proof Assistant / The Coq Development Team *)
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
25 (* \VV/ **************************************************************)
27 (* // * This file is distributed under the terms of the *)
29 (* * GNU Lesser General Public License Version 2.1 *)
31 (*#***********************************************************************)
33 (*i $Id: Uniset.v,v 1.9.2.1 2004/07/16 19:31:18 herbelin Exp $ i*)
35 (*#* Sets as characteristic functions *)
39 (* Updated Papageno 12/98 *)
41 include "Bool/Bool.ma".
44 Set Implicit Arguments.
52 cic:/Coq/Sets/Uniset/defs/A.var
56 cic:/Coq/Sets/Uniset/defs/eqA.var
60 cic:/Coq/Sets/Uniset/defs/eqA_dec.var
63 inline procedural "cic:/Coq/Sets/Uniset/uniset.ind".
65 inline procedural "cic:/Coq/Sets/Uniset/charac.con" as definition.
67 inline procedural "cic:/Coq/Sets/Uniset/Emptyset.con" as definition.
69 inline procedural "cic:/Coq/Sets/Uniset/Fullset.con" as definition.
71 inline procedural "cic:/Coq/Sets/Uniset/Singleton.con" as definition.
73 inline procedural "cic:/Coq/Sets/Uniset/In.con" as definition.
79 (*#* uniset inclusion *)
81 inline procedural "cic:/Coq/Sets/Uniset/incl.con" as definition.
87 (*#* uniset equality *)
89 inline procedural "cic:/Coq/Sets/Uniset/seq.con" as definition.
95 inline procedural "cic:/Coq/Sets/Uniset/leb_refl.con" as lemma.
98 Hint Resolve leb_refl.
101 inline procedural "cic:/Coq/Sets/Uniset/incl_left.con" as lemma.
103 inline procedural "cic:/Coq/Sets/Uniset/incl_right.con" as lemma.
105 inline procedural "cic:/Coq/Sets/Uniset/seq_refl.con" as lemma.
108 Hint Resolve seq_refl.
111 inline procedural "cic:/Coq/Sets/Uniset/seq_trans.con" as lemma.
113 inline procedural "cic:/Coq/Sets/Uniset/seq_sym.con" as lemma.
117 inline procedural "cic:/Coq/Sets/Uniset/union.con" as definition.
119 inline procedural "cic:/Coq/Sets/Uniset/union_empty_left.con" as lemma.
122 Hint Resolve union_empty_left.
125 inline procedural "cic:/Coq/Sets/Uniset/union_empty_right.con" as lemma.
128 Hint Resolve union_empty_right.
131 inline procedural "cic:/Coq/Sets/Uniset/union_comm.con" as lemma.
134 Hint Resolve union_comm.
137 inline procedural "cic:/Coq/Sets/Uniset/union_ass.con" as lemma.
140 Hint Resolve union_ass.
143 inline procedural "cic:/Coq/Sets/Uniset/seq_left.con" as lemma.
146 Hint Resolve seq_left.
149 inline procedural "cic:/Coq/Sets/Uniset/seq_right.con" as lemma.
152 Hint Resolve seq_right.
155 (*#* All the proofs that follow duplicate [Multiset_of_A] *)
157 (*#* Here we should make uniset an abstract datatype, by hiding [Charac],
158 [union], [charac]; all further properties are proved abstractly *)
160 include "Sets/Permut.ma".
162 inline procedural "cic:/Coq/Sets/Uniset/union_rotate.con" as lemma.
164 inline procedural "cic:/Coq/Sets/Uniset/seq_congr.con" as lemma.
166 inline procedural "cic:/Coq/Sets/Uniset/union_perm_left.con" as lemma.
168 inline procedural "cic:/Coq/Sets/Uniset/uniset_twist1.con" as lemma.
170 inline procedural "cic:/Coq/Sets/Uniset/uniset_twist2.con" as lemma.
172 (*#* specific for treesort *)
174 inline procedural "cic:/Coq/Sets/Uniset/treesort_twist1.con" as lemma.
176 inline procedural "cic:/Coq/Sets/Uniset/treesort_twist2.con" as lemma.
178 (*i theory of minter to do similarly
180 (* uniset intersection *)
181 Definition minter := [m1,m2:uniset]
182 (Charac [a:A](andb (charac m1 a)(charac m2 a))).
190 Unset Implicit Arguments.