]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/procedural/CoRN/algebra/CAbGroups.mma
Preparing for 0.5.9 release.
[helm.git] / helm / software / matita / contribs / procedural / CoRN / algebra / CAbGroups.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 "CoRN.ma".
18
19 include "algebra/CGroups.ma".
20
21 (* UNEXPORTED
22 Section Abelian_Groups
23 *)
24
25 (*#*
26 * Abelian Groups
27 Now we introduce commutativity and add some results.
28 *)
29
30 inline procedural "cic:/CoRN/algebra/CAbGroups/is_CAbGroup.con" as definition.
31
32 inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup.ind".
33
34 (* COERCION
35 cic:/matita/CoRN-Procedural/algebra/CAbGroups/cag_crr.con
36 *)
37
38 (* UNEXPORTED
39 Section AbGroup_Axioms
40 *)
41
42 (* UNEXPORTED
43 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/AbGroup_Axioms/G.var
44 *)
45
46 (*#*
47 %\begin{convention}% Let [G] be an Abelian Group.
48 %\end{convention}%
49 *)
50
51 inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup_is_CAbGroup.con" as lemma.
52
53 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes.con" as lemma.
54
55 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes_unfolded.con" as lemma.
56
57 (* UNEXPORTED
58 End AbGroup_Axioms
59 *)
60
61 (* UNEXPORTED
62 Section SubCAbGroups
63 *)
64
65 (*#*
66 ** Subgroups of an Abelian Group
67 *)
68
69 (* UNEXPORTED
70 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/G.var
71 *)
72
73 (* UNEXPORTED
74 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/P.var
75 *)
76
77 (* UNEXPORTED
78 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/Punit.var
79 *)
80
81 (* UNEXPORTED
82 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/op_pres_P.var
83 *)
84
85 (* UNEXPORTED
86 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/inv_pres_P.var
87 *)
88
89 (*#*
90 %\begin{convention}%
91 Let [G] be an Abelian Group and [P] be a ([CProp]-valued) predicate on [G]
92 that contains [Zero] and is closed under [[+]] and [[--]].
93 %\end{convention}%
94 *)
95
96 inline procedural "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/subcrr.con" "Abelian_Groups__SubCAbGroups__" as definition.
97
98 inline procedural "cic:/CoRN/algebra/CAbGroups/isabgrp_scrr.con" as lemma.
99
100 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_SubCAbGroup.con" as definition.
101
102 (* UNEXPORTED
103 End SubCAbGroups
104 *)
105
106 (* UNEXPORTED
107 Section Various
108 *)
109
110 (*#*
111 ** Basic properties of Abelian groups
112 *)
113
114 (* UNEXPORTED
115 Hint Resolve cag_commutes_unfolded: algebra.
116 *)
117
118 (* UNEXPORTED
119 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/Various/G.var
120 *)
121
122 (*#*
123 %\begin{convention}% Let [G] be an Abelian Group.
124 %\end{convention}%
125 *)
126
127 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_op_inv.con" as lemma.
128
129 (* UNEXPORTED
130 Hint Resolve cag_op_inv: algebra.
131 *)
132
133 inline procedural "cic:/CoRN/algebra/CAbGroups/assoc_1.con" as lemma.
134
135 inline procedural "cic:/CoRN/algebra/CAbGroups/minus_plus.con" as lemma.
136
137 inline procedural "cic:/CoRN/algebra/CAbGroups/op_lft_resp_ap.con" as lemma.
138
139 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_ap_cancel_lft.con" as lemma.
140
141 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_cancel_ap_lft.con" as lemma.
142
143 (* UNEXPORTED
144 End Various
145 *)
146
147 (* UNEXPORTED
148 End Abelian_Groups
149 *)
150
151 (* UNEXPORTED
152 Hint Resolve cag_commutes_unfolded: algebra.
153 *)
154
155 (* UNEXPORTED
156 Hint Resolve cag_op_inv assoc_1 zero_minus minus_plus op_lft_resp_ap: algebra.
157 *)
158
159 (* UNEXPORTED
160 Section Nice_Char
161 *)
162
163 (*#*
164 ** Building an abelian group
165
166 In order to actually define concrete abelian groups,
167 it is not in general practical to construct first a semigroup,
168 then a monoid, then a group and finally an abelian group.  The
169 presence of commutativity, for example, makes many of the monoid
170 proofs trivial.  In this section, we provide a constructor that
171 will allow us to go directly from a setoid to an abelian group.
172
173 We start from a setoid S with an element [unit], a
174 commutative and associative binary operation [plus] which
175 is strongly extensional in its first argument and admits [unit]
176 as a left unit, and a unary setoid
177 function [inv] which inverts elements respective to [plus].
178 *)
179
180 (* UNEXPORTED
181 cic:/CoRN/algebra/CAbGroups/Nice_Char/S.var
182 *)
183
184 (* UNEXPORTED
185 cic:/CoRN/algebra/CAbGroups/Nice_Char/unit.var
186 *)
187
188 (* UNEXPORTED
189 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus.var
190 *)
191
192 (*#*
193 %\begin{convention}%
194 Let [S] be a Setoid and [unit:S], [plus:S->S->S] and [inv] a unary
195 setoid operation on [S].
196 Assume that [plus] is commutative, associative and `left-strongly-extensional
197 ([(plus x z) [#] (plus y z) -> x [#] y]), that [unit] is a left-unit
198 for [plus] and [(inv x)] is a right-inverse of [x] w.r.t.%\% [plus].
199 %\end{convention}%
200 *)
201
202 (* UNEXPORTED
203 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lext.var
204 *)
205
206 (* UNEXPORTED
207 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lunit.var
208 *)
209
210 (* UNEXPORTED
211 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_comm.var
212 *)
213
214 (* UNEXPORTED
215 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_assoc.var
216 *)
217
218 (* UNEXPORTED
219 cic:/CoRN/algebra/CAbGroups/Nice_Char/inv.var
220 *)
221
222 (* UNEXPORTED
223 cic:/CoRN/algebra/CAbGroups/Nice_Char/inv_inv.var
224 *)
225
226 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_rext.con" as lemma.
227
228 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_runit.con" as lemma.
229
230 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_is_fun.con" as lemma.
231
232 inline procedural "cic:/CoRN/algebra/CAbGroups/inv_inv'.con" as lemma.
233
234 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_fun.con" as definition.
235
236 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CSemiGroup'.con" as definition.
237
238 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CMonoid'.con" as definition.
239
240 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CGroup'.con" as definition.
241
242 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CAbGroup'.con" as definition.
243
244 (* UNEXPORTED
245 End Nice_Char
246 *)
247
248 (*#* ** Iteration
249
250 For reflection the following is needed; hopefully it is also useful.
251 *)
252
253 (* UNEXPORTED
254 Section Group_Extras
255 *)
256
257 (* UNEXPORTED
258 cic:/CoRN/algebra/CAbGroups/Group_Extras/G.var
259 *)
260
261 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult.con" as definition.
262
263 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_wd.con" as lemma.
264
265 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_one.con" as lemma.
266
267 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_Zero.con" as lemma.
268
269 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus.con" as lemma.
270
271 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_mult.con" as lemma.
272
273 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_inv.con" as lemma.
274
275 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus'.con" as lemma.
276
277 (* UNEXPORTED
278 Hint Resolve nmult_wd nmult_Zero nmult_inv nmult_plus nmult_plus': algebra.
279 *)
280
281 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult.con" as definition.
282
283 (*
284 Lemma Zeq_imp_nat_eq : forall m n:nat, m = n -> m = n.
285 auto.
286 intro m; induction m.
287 intro n; induction n; auto.
288
289 intro; induction n.
290 intro. inversion H.
291 intros.
292 rewrite (IHm n).
293 auto.
294 repeat rewrite inj_S in H.
295 auto with zarith.
296 Qed.
297 *)
298
299 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_char.con" as lemma.
300
301 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_wd.con" as lemma.
302
303 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_one.con" as lemma.
304
305 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_min_one.con" as lemma.
306
307 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_zero.con" as lemma.
308
309 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_Zero.con" as lemma.
310
311 (* UNEXPORTED
312 Hint Resolve zmult_zero: algebra.
313 *)
314
315 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus.con" as lemma.
316
317 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_mult.con" as lemma.
318
319 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus'.con" as lemma.
320
321 (* UNEXPORTED
322 End Group_Extras
323 *)
324
325 (* UNEXPORTED
326 Hint Resolve nmult_wd nmult_one nmult_Zero nmult_plus nmult_inv nmult_mult
327   nmult_plus' zmult_wd zmult_one zmult_min_one zmult_zero zmult_Zero
328   zmult_plus zmult_mult zmult_plus': algebra.
329 *)
330
331 (* UNEXPORTED
332 Implicit Arguments nmult [G].
333 *)
334
335 (* UNEXPORTED
336 Implicit Arguments zmult [G].
337 *)
338