]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/Coq/Sets/Multiset.mma
Preparing for 0.5.9 release.
[helm.git] / helm / software / matita / contribs / procedural / Coq / Sets / Multiset.mma
1 (**************************************************************************)
2 (*       ___                                                              *)
3 (*      ||M||                                                             *)
4 (*      ||A||       A project by Andrea Asperti                           *)
5 (*      ||T||                                                             *)
6 (*      ||I||       Developers:                                           *)
7 (*      ||T||         The HELM team.                                      *)
8 (*      ||A||         http://helm.cs.unibo.it                             *)
9 (*      \   /                                                             *)
10 (*       \ /        This file is distributed under the terms of the       *)
11 (*        v         GNU General Public License Version 2                  *)
12 (*                                                                        *)
13 (**************************************************************************)
14
15 (* This file was automatically generated: do not edit *********************)
16
17 include "Coq.ma".
18
19 (*#***********************************************************************)
20
21 (*  v      *   The Coq Proof Assistant  /  The Coq Development Team     *)
22
23 (* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
24
25 (*   \VV/  **************************************************************)
26
27 (*    //   *      This file is distributed under the terms of the       *)
28
29 (*         *       GNU Lesser General Public License Version 2.1        *)
30
31 (*#***********************************************************************)
32
33 (*i $Id: Multiset.v,v 1.9.2.1 2004/07/16 19:31:17 herbelin Exp $ i*)
34
35 (* G. Huet 1-9-95 *)
36
37 include "Sets/Permut.ma".
38
39 (* UNEXPORTED
40 Set Implicit Arguments.
41 *)
42
43 (* UNEXPORTED
44 Section multiset_defs
45 *)
46
47 (* UNEXPORTED
48 cic:/Coq/Sets/Multiset/multiset_defs/A.var
49 *)
50
51 (* UNEXPORTED
52 cic:/Coq/Sets/Multiset/multiset_defs/eqA.var
53 *)
54
55 (* UNEXPORTED
56 cic:/Coq/Sets/Multiset/multiset_defs/Aeq_dec.var
57 *)
58
59 inline procedural "cic:/Coq/Sets/Multiset/multiset.ind".
60
61 inline procedural "cic:/Coq/Sets/Multiset/EmptyBag.con" as definition.
62
63 inline procedural "cic:/Coq/Sets/Multiset/SingletonBag.con" as definition.
64
65 inline procedural "cic:/Coq/Sets/Multiset/multiplicity.con" as definition.
66
67 (*#* multiset equality *)
68
69 inline procedural "cic:/Coq/Sets/Multiset/meq.con" as definition.
70
71 (* UNEXPORTED
72 Hint Unfold meq multiplicity.
73 *)
74
75 inline procedural "cic:/Coq/Sets/Multiset/meq_refl.con" as lemma.
76
77 (* UNEXPORTED
78 Hint Resolve meq_refl.
79 *)
80
81 inline procedural "cic:/Coq/Sets/Multiset/meq_trans.con" as lemma.
82
83 inline procedural "cic:/Coq/Sets/Multiset/meq_sym.con" as lemma.
84
85 (* UNEXPORTED
86 Hint Immediate meq_sym.
87 *)
88
89 (*#* multiset union *)
90
91 inline procedural "cic:/Coq/Sets/Multiset/munion.con" as definition.
92
93 inline procedural "cic:/Coq/Sets/Multiset/munion_empty_left.con" as lemma.
94
95 (* UNEXPORTED
96 Hint Resolve munion_empty_left.
97 *)
98
99 inline procedural "cic:/Coq/Sets/Multiset/munion_empty_right.con" as lemma.
100
101 include "Arith/Plus.ma".
102
103 (* comm. and ass. of plus *)
104
105 inline procedural "cic:/Coq/Sets/Multiset/munion_comm.con" as lemma.
106
107 (* UNEXPORTED
108 Hint Resolve munion_comm.
109 *)
110
111 inline procedural "cic:/Coq/Sets/Multiset/munion_ass.con" as lemma.
112
113 (* UNEXPORTED
114 Hint Resolve munion_ass.
115 *)
116
117 inline procedural "cic:/Coq/Sets/Multiset/meq_left.con" as lemma.
118
119 (* UNEXPORTED
120 Hint Resolve meq_left.
121 *)
122
123 inline procedural "cic:/Coq/Sets/Multiset/meq_right.con" as lemma.
124
125 (* UNEXPORTED
126 Hint Resolve meq_right.
127 *)
128
129 (*#* Here we should make multiset an abstract datatype, by hiding [Bag],
130     [munion], [multiplicity]; all further properties are proved abstractly *)
131
132 inline procedural "cic:/Coq/Sets/Multiset/munion_rotate.con" as lemma.
133
134 inline procedural "cic:/Coq/Sets/Multiset/meq_congr.con" as lemma.
135
136 inline procedural "cic:/Coq/Sets/Multiset/munion_perm_left.con" as lemma.
137
138 inline procedural "cic:/Coq/Sets/Multiset/multiset_twist1.con" as lemma.
139
140 inline procedural "cic:/Coq/Sets/Multiset/multiset_twist2.con" as lemma.
141
142 (*#* specific for treesort *)
143
144 inline procedural "cic:/Coq/Sets/Multiset/treesort_twist1.con" as lemma.
145
146 inline procedural "cic:/Coq/Sets/Multiset/treesort_twist2.con" as lemma.
147
148 (*i theory of minter to do similarly 
149 Require Min.
150 (* multiset intersection *)
151 Definition minter := [m1,m2:multiset]
152     (Bag [a:A](min (multiplicity m1 a)(multiplicity m2 a))).
153 i*)
154
155 (* UNEXPORTED
156 End multiset_defs
157 *)
158
159 (* UNEXPORTED
160 Unset Implicit Arguments.
161 *)
162
163 (* UNEXPORTED
164 Hint Unfold meq multiplicity: v62 datatypes.
165 *)
166
167 (* UNEXPORTED
168 Hint Resolve munion_empty_right munion_comm munion_ass meq_left meq_right
169   munion_empty_left: v62 datatypes.
170 *)
171
172 (* UNEXPORTED
173 Hint Immediate meq_sym: v62 datatypes.
174 *)
175