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/CFields".
21 (* $Id: CFields.v,v 1.12 2004/04/23 10:00:52 lcf Exp $ *)
23 (*#* printing [/] %\ensuremath{/}% #/# *)
25 (*#* printing [//] %\ensuremath\ddagger% #‡# *)
27 (*#* printing {/} %\ensuremath{/}% #/# *)
29 (*#* printing {1/} %\ensuremath{\frac1\cdot}% #1/# *)
31 (*#* printing [/]?[//] %\ensuremath{/?\ddagger}% #/?‡# *)
33 include "algebra/CRings.ma".
100 Transparent cg_minus.
115 (* Begin_SpecReals *)
120 * Fields %\label{section:fields}%
121 ** Definition of the notion Field
124 inline "cic:/CoRN/algebra/CFields/is_CField.con".
126 inline "cic:/CoRN/algebra/CFields/CField.ind".
128 coercion cic:/matita/CoRN-Decl/algebra/CFields/cf_crr.con 0 (* compounds *).
132 inline "cic:/CoRN/algebra/CFields/f_rcpcl'.con".
134 inline "cic:/CoRN/algebra/CFields/f_rcpcl.con".
137 Implicit Arguments f_rcpcl [F].
141 [cf_div] is the division in a field. It is defined in terms of
142 multiplication and the reciprocal. [x[/]y] is only defined if
143 we have a proof of [y [#] Zero].
146 inline "cic:/CoRN/algebra/CFields/cf_div.con".
149 Implicit Arguments cf_div [F].
153 Notation "x [/] y [//] Hy" := (cf_div x y Hy) (at level 80).
157 %\begin{convention}\label{convention:div-form}%
158 - Division in fields is a (type dependent) ternary function: [(cf_div x y Hy)] is denoted infix by [x [/] y [//] Hy].
159 - In lemmas, a hypothesis that [t [#] Zero] will be named [t_].
160 - We do not use [NonZeros], but write the condition [ [#] Zero] separately.
161 - In each lemma, we use only variables for proof objects, and these variables
162 are universally quantified.
163 For example, the informal lemma
164 $\frac{1}{x}\cdot\frac{1}{y} = \frac{1}{x\cdot y}$
165 #(1/x).(1/y) = 1/(x.y)# for all [x] and [y]is formalized as
167 forall (x y : F) x_ y_ xy_, (1[/]x[//]x_) [*] (1[/]y[//]y_) [=] 1[/] (x[*]y)[//]xy_
171 forall (x y : F) x_ y_, (1[/]x[//]x_) [*] (1[/]y[//]y_) [=] 1[/] (x[*]y)[//](prod_nz x y x_ y_)
173 We have made this choice to make it easier to apply lemmas; this can
174 be quite awkward if we would use the last formulation.
175 - So every division occurring in the formulation of a lemma is of the
176 form [e[/]e'[//]H] where [H] is a variable. Only exceptions: we may
177 write [e[/] (Snring n)] and [e[/]TwoNZ], [e[/]ThreeNZ] and so on.
178 (Constants like [TwoNZ] will be defined later on.)
183 %\begin{convention}% Let [F] be a field.
191 alias id "F" = "cic:/CoRN/algebra/CFields/Field_axioms/F.var".
193 inline "cic:/CoRN/algebra/CFields/CField_is_CField.con".
195 inline "cic:/CoRN/algebra/CFields/rcpcl_is_inverse.con".
206 %\begin{convention}% Let [F] be a field.
210 alias id "F" = "cic:/CoRN/algebra/CFields/Field_basics/F.var".
212 inline "cic:/CoRN/algebra/CFields/rcpcl_is_inverse_unfolded.con".
214 inline "cic:/CoRN/algebra/CFields/field_mult_inv.con".
217 Hint Resolve field_mult_inv: algebra.
220 inline "cic:/CoRN/algebra/CFields/field_mult_inv_op.con".
227 Hint Resolve field_mult_inv field_mult_inv_op: algebra.
231 Section Field_multiplication
235 ** Properties of multiplication
236 %\begin{convention}% Let [F] be a field.
240 alias id "F" = "cic:/CoRN/algebra/CFields/Field_multiplication/F.var".
242 inline "cic:/CoRN/algebra/CFields/mult_resp_ap_zero.con".
244 inline "cic:/CoRN/algebra/CFields/mult_lft_resp_ap.con".
246 inline "cic:/CoRN/algebra/CFields/mult_rht_resp_ap.con".
248 inline "cic:/CoRN/algebra/CFields/mult_resp_neq_zero.con".
250 inline "cic:/CoRN/algebra/CFields/mult_resp_neq.con".
252 inline "cic:/CoRN/algebra/CFields/mult_eq_zero.con".
254 inline "cic:/CoRN/algebra/CFields/mult_cancel_lft.con".
256 inline "cic:/CoRN/algebra/CFields/mult_cancel_rht.con".
258 inline "cic:/CoRN/algebra/CFields/square_eq_aux.con".
260 inline "cic:/CoRN/algebra/CFields/square_eq_weak.con".
262 inline "cic:/CoRN/algebra/CFields/cond_square_eq.con".
265 End Field_multiplication
272 inline "cic:/CoRN/algebra/CFields/x_xminone.con".
274 inline "cic:/CoRN/algebra/CFields/square_id.con".
281 Hint Resolve mult_resp_ap_zero: algebra.
285 Section Rcpcl_properties
289 ** Properties of reciprocal
290 %\begin{convention}% Let [F] be a field.
294 alias id "F" = "cic:/CoRN/algebra/CFields/Rcpcl_properties/F.var".
296 inline "cic:/CoRN/algebra/CFields/inv_one.con".
298 inline "cic:/CoRN/algebra/CFields/f_rcpcl_wd.con".
300 inline "cic:/CoRN/algebra/CFields/f_rcpcl_mult.con".
302 inline "cic:/CoRN/algebra/CFields/f_rcpcl_resp_ap_zero.con".
304 inline "cic:/CoRN/algebra/CFields/f_rcpcl_f_rcpcl.con".
315 ** The multiplicative group of nonzeros of a field.
316 %\begin{convention}% Let [F] be a field
320 alias id "F" = "cic:/CoRN/algebra/CFields/MultipGroup/F.var".
323 The multiplicative monoid of NonZeros.
326 inline "cic:/CoRN/algebra/CFields/NonZeroMonoid.con".
328 inline "cic:/CoRN/algebra/CFields/fmg_cs_inv.con".
330 inline "cic:/CoRN/algebra/CFields/plus_nonzeros_eq_mult_dom.con".
332 inline "cic:/CoRN/algebra/CFields/cfield_to_mult_cgroup.con".
339 Section Div_properties
343 ** Properties of division
344 %\begin{convention}% Let [F] be a field.
347 %\begin{nameconvention}%
348 In the names of lemmas, we denote [[/]] by [div], and
350 %\end{nameconvention}%
353 alias id "F" = "cic:/CoRN/algebra/CFields/Div_properties/F.var".
355 inline "cic:/CoRN/algebra/CFields/div_prop.con".
357 inline "cic:/CoRN/algebra/CFields/div_1.con".
359 inline "cic:/CoRN/algebra/CFields/div_1'.con".
361 inline "cic:/CoRN/algebra/CFields/div_1''.con".
364 Hint Resolve div_1: algebra.
367 inline "cic:/CoRN/algebra/CFields/x_div_x.con".
370 Hint Resolve x_div_x: algebra.
373 inline "cic:/CoRN/algebra/CFields/x_div_one.con".
376 The next lemma says $x\cdot\frac{y}{z} = \frac{x\cdot y}{z}$
380 inline "cic:/CoRN/algebra/CFields/x_mult_y_div_z.con".
383 Hint Resolve x_mult_y_div_z: algebra.
386 inline "cic:/CoRN/algebra/CFields/div_wd.con".
389 Hint Resolve div_wd: algebra_c.
393 The next lemma says $\frac{\frac{x}{y}}{z} = \frac{x}{y\cdot z}$
394 #[(x/y)/z = x/(y.z)]#
397 inline "cic:/CoRN/algebra/CFields/div_div.con".
399 inline "cic:/CoRN/algebra/CFields/div_resp_ap_zero_rev.con".
401 inline "cic:/CoRN/algebra/CFields/div_resp_ap_zero.con".
404 The next lemma says $\frac{x}{\frac{y}{z}} = \frac{x\cdot z}{y}$
405 #[x/(y/z) = (x.z)/y]#
408 inline "cic:/CoRN/algebra/CFields/div_div2.con".
411 The next lemma says $\frac{x\cdot p}{y\cdot q} = \frac{x}{y}\cdot \frac{p}{q}$
412 #[(x.p)/(y.q) = (x/y).(p/q)]#
415 inline "cic:/CoRN/algebra/CFields/mult_of_divs.con".
417 inline "cic:/CoRN/algebra/CFields/div_dist.con".
419 inline "cic:/CoRN/algebra/CFields/div_dist'.con".
421 inline "cic:/CoRN/algebra/CFields/div_semi_sym.con".
424 Hint Resolve div_semi_sym: algebra.
427 inline "cic:/CoRN/algebra/CFields/eq_div.con".
429 inline "cic:/CoRN/algebra/CFields/div_strext.con".
436 Hint Resolve div_1 div_1' div_1'' div_wd x_div_x x_div_one div_div div_div2
437 mult_of_divs x_mult_y_div_z mult_of_divs div_dist div_dist' div_semi_sym
442 ** Cancellation laws for apartness and multiplication
443 %\begin{convention}% Let [F] be a field
448 Section Mult_Cancel_Ap_Zero
451 alias id "F" = "cic:/CoRN/algebra/CFields/Mult_Cancel_Ap_Zero/F.var".
453 inline "cic:/CoRN/algebra/CFields/mult_cancel_ap_zero_lft.con".
455 inline "cic:/CoRN/algebra/CFields/mult_cancel_ap_zero_rht.con".
457 inline "cic:/CoRN/algebra/CFields/recip_ap_zero.con".
459 inline "cic:/CoRN/algebra/CFields/recip_resp_ap.con".
462 End Mult_Cancel_Ap_Zero
470 ** Functional Operations
472 We now move on to lifting these operations to functions. As we are
473 dealing with %\emph{partial}% #<i>partial</i># functions, we don't
474 have to worry explicitly about the function by which we are dividing
475 being non-zero everywhere; this will simply be encoded in its domain.
478 Let [X] be a Field and [F,G:(PartFunct X)] have domains respectively
483 alias id "X" = "cic:/CoRN/algebra/CFields/CField_Ops/X.var".
485 alias id "F" = "cic:/CoRN/algebra/CFields/CField_Ops/F.var".
487 alias id "G" = "cic:/CoRN/algebra/CFields/CField_Ops/G.var".
491 inline "cic:/CoRN/algebra/CFields/CField_Ops/P.con" "CField_Ops__".
493 inline "cic:/CoRN/algebra/CFields/CField_Ops/Q.con" "CField_Ops__".
498 Section Part_Function_Recip
502 Some auxiliary notions are helpful in defining the domain.
505 inline "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Recip/R.con" "CField_Ops__Part_Function_Recip__".
507 inline "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Recip/Ext2R.con" "CField_Ops__Part_Function_Recip__".
509 inline "cic:/CoRN/algebra/CFields/part_function_recip_strext.con".
511 inline "cic:/CoRN/algebra/CFields/part_function_recip_pred_wd.con".
513 inline "cic:/CoRN/algebra/CFields/Frecip.con".
516 End Part_Function_Recip
520 Section Part_Function_Div
524 For division things work out almost in the same way.
527 inline "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Div/R.con" "CField_Ops__Part_Function_Div__".
529 inline "cic:/CoRN/algebra/CFields/CField_Ops/Part_Function_Div/Ext2R.con" "CField_Ops__Part_Function_Div__".
531 inline "cic:/CoRN/algebra/CFields/part_function_div_strext.con".
533 inline "cic:/CoRN/algebra/CFields/part_function_div_pred_wd.con".
535 inline "cic:/CoRN/algebra/CFields/Fdiv.con".
538 End Part_Function_Div
542 %\begin{convention}% Let [R:X->CProp].
546 alias id "R" = "cic:/CoRN/algebra/CFields/CField_Ops/R.var".
548 inline "cic:/CoRN/algebra/CFields/included_FRecip.con".
550 inline "cic:/CoRN/algebra/CFields/included_FRecip'.con".
552 inline "cic:/CoRN/algebra/CFields/included_FDiv.con".
554 inline "cic:/CoRN/algebra/CFields/included_FDiv'.con".
556 inline "cic:/CoRN/algebra/CFields/included_FDiv''.con".
563 Implicit Arguments Frecip [X].
567 Notation "{1/} x" := (Frecip x) (at level 2, right associativity).
571 Implicit Arguments Fdiv [X].
575 Infix "{/}" := Fdiv (at level 41, no associativity).
579 Hint Resolve included_FRecip included_FDiv : included.
583 Hint Immediate included_FRecip' included_FDiv' included_FDiv'' : included.