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 *********************)
17 set "baseuri" "cic:/matita/CoRN-Decl/algebra/CAbGroups".
21 include "algebra/CGroups.ma".
24 Section Abelian_Groups.
29 Now we introduce commutativity and add some results.
32 inline "cic:/CoRN/algebra/CAbGroups/is_CAbGroup.con".
34 inline "cic:/CoRN/algebra/CAbGroups/CAbGroup.ind".
36 coercion cic:/matita/CoRN-Decl/algebra/CAbGroups/cag_crr.con 0 (* compounds *).
39 Section AbGroup_Axioms.
42 inline "cic:/CoRN/algebra/CAbGroups/G.var".
45 %\begin{convention}% Let [G] be an Abelian Group.
49 inline "cic:/CoRN/algebra/CAbGroups/CAbGroup_is_CAbGroup.con".
51 inline "cic:/CoRN/algebra/CAbGroups/cag_commutes.con".
53 inline "cic:/CoRN/algebra/CAbGroups/cag_commutes_unfolded.con".
64 ** Subgroups of an Abelian Group
67 inline "cic:/CoRN/algebra/CAbGroups/G.var".
69 inline "cic:/CoRN/algebra/CAbGroups/P.var".
71 inline "cic:/CoRN/algebra/CAbGroups/Punit.var".
73 inline "cic:/CoRN/algebra/CAbGroups/op_pres_P.var".
75 inline "cic:/CoRN/algebra/CAbGroups/inv_pres_P.var".
79 Let [G] be an Abelian Group and [P] be a ([CProp]-valued) predicate on [G]
80 that contains [Zero] and is closed under [[+]] and [[--]].
84 inline "cic:/CoRN/algebra/CAbGroups/subcrr.con".
86 inline "cic:/CoRN/algebra/CAbGroups/isabgrp_scrr.con".
88 inline "cic:/CoRN/algebra/CAbGroups/Build_SubCAbGroup.con".
99 ** Basic properties of Abelian groups
103 Hint Resolve cag_commutes_unfolded: algebra.
106 inline "cic:/CoRN/algebra/CAbGroups/G.var".
109 %\begin{convention}% Let [G] be an Abelian Group.
113 inline "cic:/CoRN/algebra/CAbGroups/cag_op_inv.con".
116 Hint Resolve cag_op_inv: algebra.
119 inline "cic:/CoRN/algebra/CAbGroups/assoc_1.con".
121 inline "cic:/CoRN/algebra/CAbGroups/minus_plus.con".
123 inline "cic:/CoRN/algebra/CAbGroups/op_lft_resp_ap.con".
125 inline "cic:/CoRN/algebra/CAbGroups/cag_ap_cancel_lft.con".
127 inline "cic:/CoRN/algebra/CAbGroups/plus_cancel_ap_lft.con".
138 Hint Resolve cag_commutes_unfolded: algebra.
142 Hint Resolve cag_op_inv assoc_1 zero_minus minus_plus op_lft_resp_ap: algebra.
150 ** Building an abelian group
152 In order to actually define concrete abelian groups,
153 it is not in general practical to construct first a semigroup,
154 then a monoid, then a group and finally an abelian group. The
155 presence of commutativity, for example, makes many of the monoid
156 proofs trivial. In this section, we provide a constructor that
157 will allow us to go directly from a setoid to an abelian group.
159 We start from a setoid S with an element [unit], a
160 commutative and associative binary operation [plus] which
161 is strongly extensional in its first argument and admits [unit]
162 as a left unit, and a unary setoid
163 function [inv] which inverts elements respective to [plus].
166 inline "cic:/CoRN/algebra/CAbGroups/S.var".
168 inline "cic:/CoRN/algebra/CAbGroups/unit.var".
170 inline "cic:/CoRN/algebra/CAbGroups/plus.var".
174 Let [S] be a Setoid and [unit:S], [plus:S->S->S] and [inv] a unary
175 setoid operation on [S].
176 Assume that [plus] is commutative, associative and `left-strongly-extensional
177 ([(plus x z) [#] (plus y z) -> x [#] y]), that [unit] is a left-unit
178 for [plus] and [(inv x)] is a right-inverse of [x] w.r.t.%\% [plus].
182 inline "cic:/CoRN/algebra/CAbGroups/plus_lext.var".
184 inline "cic:/CoRN/algebra/CAbGroups/plus_lunit.var".
186 inline "cic:/CoRN/algebra/CAbGroups/plus_comm.var".
188 inline "cic:/CoRN/algebra/CAbGroups/plus_assoc.var".
190 inline "cic:/CoRN/algebra/CAbGroups/inv.var".
192 inline "cic:/CoRN/algebra/CAbGroups/inv_inv.var".
194 inline "cic:/CoRN/algebra/CAbGroups/plus_rext.con".
196 inline "cic:/CoRN/algebra/CAbGroups/plus_runit.con".
198 inline "cic:/CoRN/algebra/CAbGroups/plus_is_fun.con".
200 inline "cic:/CoRN/algebra/CAbGroups/inv_inv'.con".
202 inline "cic:/CoRN/algebra/CAbGroups/plus_fun.con".
204 inline "cic:/CoRN/algebra/CAbGroups/Build_CSemiGroup'.con".
206 inline "cic:/CoRN/algebra/CAbGroups/Build_CMonoid'.con".
208 inline "cic:/CoRN/algebra/CAbGroups/Build_CGroup'.con".
210 inline "cic:/CoRN/algebra/CAbGroups/Build_CAbGroup'.con".
218 For reflection the following is needed; hopefully it is also useful.
222 Section Group_Extras.
225 inline "cic:/CoRN/algebra/CAbGroups/G.var".
227 inline "cic:/CoRN/algebra/CAbGroups/nmult.con".
229 inline "cic:/CoRN/algebra/CAbGroups/nmult_wd.con".
231 inline "cic:/CoRN/algebra/CAbGroups/nmult_one.con".
233 inline "cic:/CoRN/algebra/CAbGroups/nmult_Zero.con".
235 inline "cic:/CoRN/algebra/CAbGroups/nmult_plus.con".
237 inline "cic:/CoRN/algebra/CAbGroups/nmult_mult.con".
239 inline "cic:/CoRN/algebra/CAbGroups/nmult_inv.con".
241 inline "cic:/CoRN/algebra/CAbGroups/nmult_plus'.con".
244 Hint Resolve nmult_wd nmult_Zero nmult_inv nmult_plus nmult_plus': algebra.
247 inline "cic:/CoRN/algebra/CAbGroups/zmult.con".
250 Lemma Zeq_imp_nat_eq : forall m n:nat, m = n -> m = n.
252 intro m; induction m.
253 intro n; induction n; auto.
260 repeat rewrite inj_S in H.
265 inline "cic:/CoRN/algebra/CAbGroups/zmult_char.con".
267 inline "cic:/CoRN/algebra/CAbGroups/zmult_wd.con".
269 inline "cic:/CoRN/algebra/CAbGroups/zmult_one.con".
271 inline "cic:/CoRN/algebra/CAbGroups/zmult_min_one.con".
273 inline "cic:/CoRN/algebra/CAbGroups/zmult_zero.con".
275 inline "cic:/CoRN/algebra/CAbGroups/zmult_Zero.con".
278 Hint Resolve zmult_zero: algebra.
281 inline "cic:/CoRN/algebra/CAbGroups/zmult_plus.con".
283 inline "cic:/CoRN/algebra/CAbGroups/zmult_mult.con".
285 inline "cic:/CoRN/algebra/CAbGroups/zmult_plus'.con".
292 Hint Resolve nmult_wd nmult_one nmult_Zero nmult_plus nmult_inv nmult_mult
293 nmult_plus' zmult_wd zmult_one zmult_min_one zmult_zero zmult_Zero
294 zmult_plus zmult_mult zmult_plus': algebra.
298 Implicit Arguments nmult [G].
302 Implicit Arguments zmult [G].