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 include "algebra/CGroups.ma".
22 Section Abelian_Groups
27 Now we introduce commutativity and add some results.
30 inline procedural "cic:/CoRN/algebra/CAbGroups/is_CAbGroup.con" as definition.
32 inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup.ind".
35 cic:/matita/CoRN-Procedural/algebra/CAbGroups/cag_crr.con
39 Section AbGroup_Axioms
43 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/AbGroup_Axioms/G.var
47 %\begin{convention}% Let [G] be an Abelian Group.
51 inline procedural "cic:/CoRN/algebra/CAbGroups/CAbGroup_is_CAbGroup.con" as lemma.
53 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes.con" as lemma.
55 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_commutes_unfolded.con" as lemma.
66 ** Subgroups of an Abelian Group
70 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/G.var
74 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/P.var
78 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/Punit.var
82 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/op_pres_P.var
86 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/inv_pres_P.var
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 [[--]].
96 inline procedural "cic:/CoRN/algebra/CAbGroups/Abelian_Groups/SubCAbGroups/subcrr.con" "Abelian_Groups__SubCAbGroups__" as definition.
98 inline procedural "cic:/CoRN/algebra/CAbGroups/isabgrp_scrr.con" as lemma.
100 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_SubCAbGroup.con" as definition.
111 ** Basic properties of Abelian groups
115 Hint Resolve cag_commutes_unfolded: algebra.
119 cic:/CoRN/algebra/CAbGroups/Abelian_Groups/Various/G.var
123 %\begin{convention}% Let [G] be an Abelian Group.
127 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_op_inv.con" as lemma.
130 Hint Resolve cag_op_inv: algebra.
133 inline procedural "cic:/CoRN/algebra/CAbGroups/assoc_1.con" as lemma.
135 inline procedural "cic:/CoRN/algebra/CAbGroups/minus_plus.con" as lemma.
137 inline procedural "cic:/CoRN/algebra/CAbGroups/op_lft_resp_ap.con" as lemma.
139 inline procedural "cic:/CoRN/algebra/CAbGroups/cag_ap_cancel_lft.con" as lemma.
141 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_cancel_ap_lft.con" as lemma.
152 Hint Resolve cag_commutes_unfolded: algebra.
156 Hint Resolve cag_op_inv assoc_1 zero_minus minus_plus op_lft_resp_ap: algebra.
164 ** Building an abelian group
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.
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].
181 cic:/CoRN/algebra/CAbGroups/Nice_Char/S.var
185 cic:/CoRN/algebra/CAbGroups/Nice_Char/unit.var
189 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus.var
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].
203 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lext.var
207 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_lunit.var
211 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_comm.var
215 cic:/CoRN/algebra/CAbGroups/Nice_Char/plus_assoc.var
219 cic:/CoRN/algebra/CAbGroups/Nice_Char/inv.var
223 cic:/CoRN/algebra/CAbGroups/Nice_Char/inv_inv.var
226 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_rext.con" as lemma.
228 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_runit.con" as lemma.
230 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_is_fun.con" as lemma.
232 inline procedural "cic:/CoRN/algebra/CAbGroups/inv_inv'.con" as lemma.
234 inline procedural "cic:/CoRN/algebra/CAbGroups/plus_fun.con" as definition.
236 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CSemiGroup'.con" as definition.
238 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CMonoid'.con" as definition.
240 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CGroup'.con" as definition.
242 inline procedural "cic:/CoRN/algebra/CAbGroups/Build_CAbGroup'.con" as definition.
250 For reflection the following is needed; hopefully it is also useful.
258 cic:/CoRN/algebra/CAbGroups/Group_Extras/G.var
261 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult.con" as definition.
263 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_wd.con" as lemma.
265 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_one.con" as lemma.
267 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_Zero.con" as lemma.
269 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus.con" as lemma.
271 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_mult.con" as lemma.
273 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_inv.con" as lemma.
275 inline procedural "cic:/CoRN/algebra/CAbGroups/nmult_plus'.con" as lemma.
278 Hint Resolve nmult_wd nmult_Zero nmult_inv nmult_plus nmult_plus': algebra.
281 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult.con" as definition.
284 Lemma Zeq_imp_nat_eq : forall m n:nat, m = n -> m = n.
286 intro m; induction m.
287 intro n; induction n; auto.
294 repeat rewrite inj_S in H.
299 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_char.con" as lemma.
301 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_wd.con" as lemma.
303 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_one.con" as lemma.
305 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_min_one.con" as lemma.
307 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_zero.con" as lemma.
309 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_Zero.con" as lemma.
312 Hint Resolve zmult_zero: algebra.
315 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus.con" as lemma.
317 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_mult.con" as lemma.
319 inline procedural "cic:/CoRN/algebra/CAbGroups/zmult_plus'.con" as lemma.
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.
332 Implicit Arguments nmult [G].
336 Implicit Arguments zmult [G].