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".
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.
37 Section AbGroup_Axioms.
40 inline cic:/CoRN/algebra/CAbGroups/G.var.
43 %\begin{convention}% Let [G] be an Abelian Group.
47 inline cic:/CoRN/algebra/CAbGroups/CAbGroup_is_CAbGroup.con.
49 inline cic:/CoRN/algebra/CAbGroups/cag_commutes.con.
51 inline cic:/CoRN/algebra/CAbGroups/cag_commutes_unfolded.con.
62 ** Subgroups of an Abelian Group
65 inline cic:/CoRN/algebra/CAbGroups/G.var.
67 inline cic:/CoRN/algebra/CAbGroups/P.var.
69 inline cic:/CoRN/algebra/CAbGroups/Punit.var.
71 inline cic:/CoRN/algebra/CAbGroups/op_pres_P.var.
73 inline cic:/CoRN/algebra/CAbGroups/inv_pres_P.var.
77 Let [G] be an Abelian Group and [P] be a ([CProp]-valued) predicate on [G]
78 that contains [Zero] and is closed under [[+]] and [[--]].
82 inline cic:/CoRN/algebra/CAbGroups/subcrr.con.
84 inline cic:/CoRN/algebra/CAbGroups/isabgrp_scrr.con.
86 inline cic:/CoRN/algebra/CAbGroups/Build_SubCAbGroup.con.
97 ** Basic properties of Abelian groups
101 Hint Resolve cag_commutes_unfolded: algebra.
104 inline cic:/CoRN/algebra/CAbGroups/G.var.
107 %\begin{convention}% Let [G] be an Abelian Group.
111 inline cic:/CoRN/algebra/CAbGroups/cag_op_inv.con.
114 Hint Resolve cag_op_inv: algebra.
117 inline cic:/CoRN/algebra/CAbGroups/assoc_1.con.
119 inline cic:/CoRN/algebra/CAbGroups/minus_plus.con.
121 inline cic:/CoRN/algebra/CAbGroups/op_lft_resp_ap.con.
123 inline cic:/CoRN/algebra/CAbGroups/cag_ap_cancel_lft.con.
125 inline cic:/CoRN/algebra/CAbGroups/plus_cancel_ap_lft.con.
136 Hint Resolve cag_commutes_unfolded: algebra.
140 Hint Resolve cag_op_inv assoc_1 zero_minus minus_plus op_lft_resp_ap: algebra.
148 ** Building an abelian group
150 In order to actually define concrete abelian groups,
151 it is not in general practical to construct first a semigroup,
152 then a monoid, then a group and finally an abelian group. The
153 presence of commutativity, for example, makes many of the monoid
154 proofs trivial. In this section, we provide a constructor that
155 will allow us to go directly from a setoid to an abelian group.
157 We start from a setoid S with an element [unit], a
158 commutative and associative binary operation [plus] which
159 is strongly extensional in its first argument and admits [unit]
160 as a left unit, and a unary setoid
161 function [inv] which inverts elements respective to [plus].
164 inline cic:/CoRN/algebra/CAbGroups/S.var.
166 inline cic:/CoRN/algebra/CAbGroups/unit.var.
168 inline cic:/CoRN/algebra/CAbGroups/plus.var.
172 Let [S] be a Setoid and [unit:S], [plus:S->S->S] and [inv] a unary
173 setoid operation on [S].
174 Assume that [plus] is commutative, associative and `left-strongly-extensional
175 ([(plus x z) [#] (plus y z) -> x [#] y]), that [unit] is a left-unit
176 for [plus] and [(inv x)] is a right-inverse of [x] w.r.t.%\% [plus].
180 inline cic:/CoRN/algebra/CAbGroups/plus_lext.var.
182 inline cic:/CoRN/algebra/CAbGroups/plus_lunit.var.
184 inline cic:/CoRN/algebra/CAbGroups/plus_comm.var.
186 inline cic:/CoRN/algebra/CAbGroups/plus_assoc.var.
188 inline cic:/CoRN/algebra/CAbGroups/inv.var.
190 inline cic:/CoRN/algebra/CAbGroups/inv_inv.var.
192 inline cic:/CoRN/algebra/CAbGroups/plus_rext.con.
194 inline cic:/CoRN/algebra/CAbGroups/plus_runit.con.
196 inline cic:/CoRN/algebra/CAbGroups/plus_is_fun.con.
198 inline cic:/CoRN/algebra/CAbGroups/inv_inv'.con.
200 inline cic:/CoRN/algebra/CAbGroups/plus_fun.con.
202 inline cic:/CoRN/algebra/CAbGroups/Build_CSemiGroup'.con.
204 inline cic:/CoRN/algebra/CAbGroups/Build_CMonoid'.con.
206 inline cic:/CoRN/algebra/CAbGroups/Build_CGroup'.con.
208 inline cic:/CoRN/algebra/CAbGroups/Build_CAbGroup'.con.
216 For reflection the following is needed; hopefully it is also useful.
220 Section Group_Extras.
223 inline cic:/CoRN/algebra/CAbGroups/G.var.
225 inline cic:/CoRN/algebra/CAbGroups/nmult.con.
227 inline cic:/CoRN/algebra/CAbGroups/nmult_wd.con.
229 inline cic:/CoRN/algebra/CAbGroups/nmult_one.con.
231 inline cic:/CoRN/algebra/CAbGroups/nmult_Zero.con.
233 inline cic:/CoRN/algebra/CAbGroups/nmult_plus.con.
235 inline cic:/CoRN/algebra/CAbGroups/nmult_mult.con.
237 inline cic:/CoRN/algebra/CAbGroups/nmult_inv.con.
239 inline cic:/CoRN/algebra/CAbGroups/nmult_plus'.con.
242 Hint Resolve nmult_wd nmult_Zero nmult_inv nmult_plus nmult_plus': algebra.
245 inline cic:/CoRN/algebra/CAbGroups/zmult.con.
248 Lemma Zeq_imp_nat_eq : forall m n:nat, m = n -> m = n.
250 intro m; induction m.
251 intro n; induction n; auto.
258 repeat rewrite inj_S in H.
263 inline cic:/CoRN/algebra/CAbGroups/zmult_char.con.
265 inline cic:/CoRN/algebra/CAbGroups/zmult_wd.con.
267 inline cic:/CoRN/algebra/CAbGroups/zmult_one.con.
269 inline cic:/CoRN/algebra/CAbGroups/zmult_min_one.con.
271 inline cic:/CoRN/algebra/CAbGroups/zmult_zero.con.
273 inline cic:/CoRN/algebra/CAbGroups/zmult_Zero.con.
276 Hint Resolve zmult_zero: algebra.
279 inline cic:/CoRN/algebra/CAbGroups/zmult_plus.con.
281 inline cic:/CoRN/algebra/CAbGroups/zmult_mult.con.
283 inline cic:/CoRN/algebra/CAbGroups/zmult_plus'.con.
290 Hint Resolve nmult_wd nmult_one nmult_Zero nmult_plus nmult_inv nmult_mult
291 nmult_plus' zmult_wd zmult_one zmult_min_one zmult_zero zmult_Zero
292 zmult_plus zmult_mult zmult_plus': algebra.
296 Implicit Arguments nmult [G].
300 Implicit Arguments zmult [G].