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/CRings".
19 (* $Id: CRings.v,v 1.8 2004/04/23 10:00:53 lcf Exp $ *)
21 (*#* printing [*] %\ensuremath\times% #×# *)
23 (*#* printing [^] %\ensuremath{\hat{\ }}% #^# *)
25 (*#* printing {*} %\ensuremath\times% #×# *)
27 (*#* printing {**} %\ensuremath\ast% #∗# *)
29 (*#* printing {^} %\ensuremath{\hat{\ }}% #^# *)
31 (*#* printing One %\ensuremath{\mathbf1}% #1# *)
33 (*#* printing Two %\ensuremath{\mathbf2}% #2# *)
35 (*#* printing Three %\ensuremath{\mathbf3}% #3# *)
37 (*#* printing Four %\ensuremath{\mathbf4}% #4# *)
39 (*#* printing Six %\ensuremath{\mathbf6}% #6# *)
41 (*#* printing Eight %\ensuremath{\mathbf8}% #8# *)
43 (*#* printing Nine %\ensuremath{\mathbf9}% #9# *)
45 (*#* printing Twelve %\ensuremath{\mathbf{12}}% #12# *)
47 (*#* printing Sixteen %\ensuremath{\mathbf{16}}% #16# *)
49 (*#* printing Eighteen %\ensuremath{\mathbf{18}}% #18# *)
51 (*#* printing TwentyFour %\ensuremath{\mathbf{24}}% #24# *)
53 (*#* printing FortyEight %\ensuremath{\mathbf{48}}% #48# *)
69 (* Constructive RINGS *)
72 We actually define commutative rings with identity.
73 ** Definition of the notion of Ring
76 inline cic:/CoRN/algebra/CRings/distributive.con.
79 Implicit Arguments distributive [S].
82 inline cic:/CoRN/algebra/CRings/is_CRing.ind.
84 inline cic:/CoRN/algebra/CRings/CRing.ind.
86 inline cic:/CoRN/algebra/CRings/cr_plus.con.
88 inline cic:/CoRN/algebra/CRings/cr_inv.con.
90 inline cic:/CoRN/algebra/CRings/cr_minus.con.
97 %\begin{nameconvention}%
98 In the names of lemmas, we will denote [One] with [one],
99 and [[*]] with [mult].
100 %\end{nameconvention}%
104 Implicit Arguments cr_mult [c].
108 Section CRing_axioms.
113 %\begin{convention}% Let [R] be a ring.
117 inline cic:/CoRN/algebra/CRings/R.var.
119 inline cic:/CoRN/algebra/CRings/CRing_is_CRing.con.
121 inline cic:/CoRN/algebra/CRings/mult_assoc.con.
123 inline cic:/CoRN/algebra/CRings/mult_commutes.con.
125 inline cic:/CoRN/algebra/CRings/mult_mon.con.
129 inline cic:/CoRN/algebra/CRings/dist.con.
131 inline cic:/CoRN/algebra/CRings/ring_non_triv.con.
133 inline cic:/CoRN/algebra/CRings/mult_wd.con.
135 inline cic:/CoRN/algebra/CRings/mult_wdl.con.
137 inline cic:/CoRN/algebra/CRings/mult_wdr.con.
139 (* Begin_SpecReals *)
146 Section Ring_constructions.
150 ** Ring constructions
156 inline cic:/CoRN/algebra/CRings/R.var.
159 The multiplicative monoid of a ring is defined as follows.
162 inline cic:/CoRN/algebra/CRings/Build_multCMonoid.con.
165 End Ring_constructions.
171 Section Ring_unfolded.
176 %\begin{convention}% Let [R] be a ring.
180 inline cic:/CoRN/algebra/CRings/R.var.
184 inline cic:/CoRN/algebra/CRings/mmR.con.
188 inline cic:/CoRN/algebra/CRings/mult_assoc_unfolded.con.
190 inline cic:/CoRN/algebra/CRings/mult_commut_unfolded.con.
193 Hint Resolve mult_commut_unfolded: algebra.
196 inline cic:/CoRN/algebra/CRings/mult_one.con.
198 inline cic:/CoRN/algebra/CRings/one_mult.con.
200 inline cic:/CoRN/algebra/CRings/ring_dist_unfolded.con.
203 Hint Resolve ring_dist_unfolded: algebra.
206 inline cic:/CoRN/algebra/CRings/ring_distl_unfolded.con.
213 Hint Resolve mult_assoc_unfolded: algebra.
217 Hint Resolve ring_non_triv mult_one one_mult mult_commut_unfolded: algebra.
221 Hint Resolve ring_dist_unfolded ring_distl_unfolded: algebra.
230 %\begin{convention}% Let [R] be a ring.
234 inline cic:/CoRN/algebra/CRings/R.var.
236 inline cic:/CoRN/algebra/CRings/one_ap_zero.con.
238 inline cic:/CoRN/algebra/CRings/is_zero_rht.con.
240 inline cic:/CoRN/algebra/CRings/is_zero_lft.con.
243 Implicit Arguments is_zero_rht [S].
247 Implicit Arguments is_zero_lft [S].
250 inline cic:/CoRN/algebra/CRings/cring_mult_zero.con.
253 Hint Resolve cring_mult_zero: algebra.
256 inline cic:/CoRN/algebra/CRings/x_mult_zero.con.
258 inline cic:/CoRN/algebra/CRings/cring_mult_zero_op.con.
261 Hint Resolve cring_mult_zero_op: algebra.
264 inline cic:/CoRN/algebra/CRings/cring_inv_mult_lft.con.
267 Hint Resolve cring_inv_mult_lft: algebra.
270 inline cic:/CoRN/algebra/CRings/cring_inv_mult_rht.con.
273 Hint Resolve cring_inv_mult_rht: algebra.
276 inline cic:/CoRN/algebra/CRings/cring_mult_ap_zero.con.
278 inline cic:/CoRN/algebra/CRings/cring_mult_ap_zero_op.con.
280 inline cic:/CoRN/algebra/CRings/inv_mult_invol.con.
282 inline cic:/CoRN/algebra/CRings/ring_dist_minus.con.
285 Hint Resolve ring_dist_minus: algebra.
288 inline cic:/CoRN/algebra/CRings/ring_distl_minus.con.
291 Hint Resolve ring_distl_minus: algebra.
299 Hint Resolve cring_mult_zero cring_mult_zero_op: algebra.
303 Hint Resolve inv_mult_invol: algebra.
307 Hint Resolve cring_inv_mult_lft cring_inv_mult_rht: algebra.
311 Hint Resolve ring_dist_minus: algebra.
315 Hint Resolve ring_distl_minus: algebra.
318 (* Begin_SpecReals *)
322 Some auxiliary functions and operations over a ring;
323 especially geared towards CReals.
327 Section exponentiation.
337 inline cic:/CoRN/algebra/CRings/R.var.
341 inline cic:/CoRN/algebra/CRings/nexp.con.
343 inline cic:/CoRN/algebra/CRings/nexp_well_def.con.
345 inline cic:/CoRN/algebra/CRings/nexp_strong_ext.con.
347 inline cic:/CoRN/algebra/CRings/nexp_op.con.
349 (* Begin_SpecReals *)
358 Implicit Arguments nexp_op [R].
361 (* Begin_SpecReals *)
364 Section nat_injection.
368 *** The injection of natural numbers into a ring
369 %\begin{convention}% Let [R] be a ring.
373 inline cic:/CoRN/algebra/CRings/R.var.
376 The injection of Coq natural numbers into a ring is called [nring].
377 Note that this need not really be an injection; when it is, the ring is said
378 to have characteristic [0].
381 inline cic:/CoRN/algebra/CRings/nring.con.
383 inline cic:/CoRN/algebra/CRings/Char0.con.
387 inline cic:/CoRN/algebra/CRings/nring_comm_plus.con.
389 inline cic:/CoRN/algebra/CRings/nring_comm_mult.con.
391 (* Begin_SpecReals *)
400 Hint Resolve nring_comm_plus nring_comm_mult: algebra.
403 (* Begin_SpecReals *)
406 Implicit Arguments nring [R].
411 inline cic:/CoRN/algebra/CRings/one_plus_one.con.
413 inline cic:/CoRN/algebra/CRings/x_plus_x.con.
416 Hint Resolve one_plus_one x_plus_x: algebra.
420 In a ring of characteristic zero, [nring] is really an injection.
423 inline cic:/CoRN/algebra/CRings/nring_different.con.
426 Section int_injection.
430 *** The injection of integers into a ring
436 inline cic:/CoRN/algebra/CRings/R.var.
439 The injection of Coq integers into a ring is called [zring]. Again,
440 this need not really be an injection.
442 The first definition is now obsolete, having been replaced by a more efficient
443 one. It is kept to avoid having to redo all the proofs.
446 inline cic:/CoRN/algebra/CRings/zring_old.con.
448 inline cic:/CoRN/algebra/CRings/zring_old_zero.con.
451 Hint Resolve zring_old_zero: algebra.
454 inline cic:/CoRN/algebra/CRings/zring_old_diff.con.
457 Hint Resolve zring_old_diff.
460 inline cic:/CoRN/algebra/CRings/zring_old_plus_nat.con.
463 Hint Resolve zring_old_plus_nat: algebra.
466 inline cic:/CoRN/algebra/CRings/zring_old_inv_nat.con.
469 Hint Resolve zring_old_inv_nat: algebra.
473 Hint Resolve zring_old_diff: algebra.
476 inline cic:/CoRN/algebra/CRings/zring_old_plus.con.
479 Hint Resolve zring_old_plus: algebra.
482 inline cic:/CoRN/algebra/CRings/zring_old_inv.con.
485 Hint Resolve zring_old_inv: algebra.
488 inline cic:/CoRN/algebra/CRings/zring_old_minus.con.
491 Hint Resolve zring_old_minus: algebra.
494 inline cic:/CoRN/algebra/CRings/zring_old_mult.con.
497 Hint Resolve zring_old_mult: algebra.
500 inline cic:/CoRN/algebra/CRings/zring_old_one.con.
503 Hint Resolve zring_old_one: algebra.
506 inline cic:/CoRN/algebra/CRings/zring_old_inv_one.con.
508 (*#************** new def of zring. ***********************)
510 (*#* The [zring] function can be defined directly. This is done here.
513 inline cic:/CoRN/algebra/CRings/pring_aux.con.
515 inline cic:/CoRN/algebra/CRings/pring.con.
517 inline cic:/CoRN/algebra/CRings/zring.con.
519 inline cic:/CoRN/algebra/CRings/pring_aux_lemma.con.
521 inline cic:/CoRN/algebra/CRings/double_nring.con.
524 Hint Resolve pring_aux_lemma double_nring: algebra.
527 inline cic:/CoRN/algebra/CRings/pring_aux_nring.con.
530 Hint Resolve pring_aux_nring: algebra.
533 inline cic:/CoRN/algebra/CRings/pring_convert.con.
536 Hint Resolve pring_convert: algebra.
539 inline cic:/CoRN/algebra/CRings/zring_zring_old.con.
542 Hint Resolve zring_zring_old: algebra.
545 inline cic:/CoRN/algebra/CRings/zring_zero.con.
547 inline cic:/CoRN/algebra/CRings/zring_diff.con.
549 inline cic:/CoRN/algebra/CRings/zring_plus_nat.con.
551 inline cic:/CoRN/algebra/CRings/zring_inv_nat.con.
553 inline cic:/CoRN/algebra/CRings/zring_plus.con.
555 inline cic:/CoRN/algebra/CRings/zring_inv.con.
557 inline cic:/CoRN/algebra/CRings/zring_minus.con.
559 inline cic:/CoRN/algebra/CRings/zring_mult.con.
561 inline cic:/CoRN/algebra/CRings/zring_one.con.
563 inline cic:/CoRN/algebra/CRings/zring_inv_one.con.
570 Implicit Arguments zring [R].
574 Hint Resolve pring_convert zring_zero zring_diff zring_plus_nat zring_inv_nat
575 zring_plus zring_inv zring_minus zring_mult zring_one zring_inv_one:
585 %\begin{convention}% Let [R] be a ring.
589 inline cic:/CoRN/algebra/CRings/R.var.
592 *** Infinite Ring sums
596 Section infinite_ring_sums.
599 inline cic:/CoRN/algebra/CRings/Sum_upto.con.
601 inline cic:/CoRN/algebra/CRings/sum_upto_O.con.
603 inline cic:/CoRN/algebra/CRings/Sum_from_upto.con.
606 Here's an alternative def of [Sum_from_upto], with a lemma that
607 it's equivalent to the original.
610 inline cic:/CoRN/algebra/CRings/seq_from.con.
612 inline cic:/CoRN/algebra/CRings/Sum_from_upto_alt.con.
615 End infinite_ring_sums.
619 Section ring_sums_over_lists.
622 (*#* *** Ring Sums over Lists
625 inline cic:/CoRN/algebra/CRings/RList_Mem.con.
627 inline cic:/CoRN/algebra/CRings/List_Sum_upto.con.
629 inline cic:/CoRN/algebra/CRings/list_sum_upto_O.con.
631 inline cic:/CoRN/algebra/CRings/List_Sum_from_upto.con.
634 End ring_sums_over_lists.
642 ** Distribution properties
649 Section Dist_properties.
652 inline cic:/CoRN/algebra/CRings/R.var.
654 inline cic:/CoRN/algebra/CRings/dist_1b.con.
657 Hint Resolve dist_1b: algebra.
660 inline cic:/CoRN/algebra/CRings/dist_2a.con.
663 Hint Resolve dist_2a: algebra.
666 inline cic:/CoRN/algebra/CRings/dist_2b.con.
669 Hint Resolve dist_2b: algebra.
672 inline cic:/CoRN/algebra/CRings/mult_distr_sum0_lft.con.
675 Hint Resolve mult_distr_sum0_lft.
678 inline cic:/CoRN/algebra/CRings/mult_distr_sum_lft.con.
681 Hint Resolve mult_distr_sum_lft: algebra.
684 inline cic:/CoRN/algebra/CRings/mult_distr_sum_rht.con.
686 inline cic:/CoRN/algebra/CRings/sumx_const.con.
693 Hint Resolve dist_1b dist_2a dist_2b mult_distr_sum_lft mult_distr_sum_rht
698 ** Properties of exponentiation (with the exponent in [nat])
705 Section NExp_properties.
708 inline cic:/CoRN/algebra/CRings/R.var.
710 inline cic:/CoRN/algebra/CRings/nexp_wd.con.
712 inline cic:/CoRN/algebra/CRings/nexp_strext.con.
714 inline cic:/CoRN/algebra/CRings/nexp_Sn.con.
717 Hint Resolve nexp_wd nexp_Sn: algebra.
720 inline cic:/CoRN/algebra/CRings/nexp_plus.con.
723 Hint Resolve nexp_plus: algebra.
726 inline cic:/CoRN/algebra/CRings/one_nexp.con.
729 Hint Resolve one_nexp: algebra.
732 inline cic:/CoRN/algebra/CRings/mult_nexp.con.
735 Hint Resolve mult_nexp: algebra.
738 inline cic:/CoRN/algebra/CRings/nexp_mult.con.
741 Hint Resolve nexp_mult: algebra.
744 inline cic:/CoRN/algebra/CRings/zero_nexp.con.
747 Hint Resolve zero_nexp: algebra.
750 inline cic:/CoRN/algebra/CRings/inv_nexp_even.con.
753 Hint Resolve inv_nexp_even: algebra.
756 inline cic:/CoRN/algebra/CRings/inv_nexp_two.con.
759 Hint Resolve inv_nexp_two: algebra.
762 inline cic:/CoRN/algebra/CRings/inv_nexp_odd.con.
765 Hint Resolve inv_nexp_odd: algebra.
768 inline cic:/CoRN/algebra/CRings/nexp_one.con.
771 Hint Resolve nexp_one: algebra.
774 inline cic:/CoRN/algebra/CRings/nexp_two.con.
777 Hint Resolve nexp_two: algebra.
780 inline cic:/CoRN/algebra/CRings/inv_one_even_nexp.con.
783 Hint Resolve inv_one_even_nexp: algebra.
786 inline cic:/CoRN/algebra/CRings/inv_one_odd_nexp.con.
789 Hint Resolve inv_one_odd_nexp: algebra.
792 inline cic:/CoRN/algebra/CRings/square_plus.con.
794 inline cic:/CoRN/algebra/CRings/square_minus.con.
796 inline cic:/CoRN/algebra/CRings/nexp_funny.con.
799 Hint Resolve nexp_funny: algebra.
802 inline cic:/CoRN/algebra/CRings/nexp_funny'.con.
805 Hint Resolve nexp_funny': algebra.
813 Hint Resolve nexp_wd nexp_Sn nexp_plus one_nexp mult_nexp nexp_mult zero_nexp
814 inv_nexp_even inv_nexp_two inv_nexp_odd nexp_one nexp_two nexp_funny
815 inv_one_even_nexp inv_one_odd_nexp nexp_funny' one_nexp square_plus
816 square_minus: algebra.
824 ** Functional Operations
826 Now for partial functions.
829 Let [R] be a ring and let [F,G:(PartFunct R)] with predicates
830 respectively [P] and [Q].
834 inline cic:/CoRN/algebra/CRings/R.var.
836 inline cic:/CoRN/algebra/CRings/F.var.
838 inline cic:/CoRN/algebra/CRings/G.var.
842 inline cic:/CoRN/algebra/CRings/P.con.
844 inline cic:/CoRN/algebra/CRings/Q.con.
849 Section Part_Function_Mult.
852 inline cic:/CoRN/algebra/CRings/part_function_mult_strext.con.
854 inline cic:/CoRN/algebra/CRings/Fmult.con.
857 End Part_Function_Mult.
861 Section Part_Function_Nth_Power.
864 inline cic:/CoRN/algebra/CRings/n.var.
866 inline cic:/CoRN/algebra/CRings/part_function_nth_strext.con.
868 inline cic:/CoRN/algebra/CRings/Fnth.con.
871 End Part_Function_Nth_Power.
875 %\begin{convention}% Let [R':R->CProp].
879 inline cic:/CoRN/algebra/CRings/R'.var.
881 inline cic:/CoRN/algebra/CRings/included_FMult.con.
883 inline cic:/CoRN/algebra/CRings/included_FMult'.con.
885 inline cic:/CoRN/algebra/CRings/included_FMult''.con.
887 inline cic:/CoRN/algebra/CRings/n.var.
889 inline cic:/CoRN/algebra/CRings/included_FNth.con.
891 inline cic:/CoRN/algebra/CRings/included_FNth'.con.
897 inline cic:/CoRN/algebra/CRings/Fscalmult.con.
900 Implicit Arguments Fmult [R].
904 Implicit Arguments Fscalmult [R].
908 Implicit Arguments Fnth [R].
912 Section ScalarMultiplication.
915 inline cic:/CoRN/algebra/CRings/R.var.
917 inline cic:/CoRN/algebra/CRings/F.var.
921 inline cic:/CoRN/algebra/CRings/P.con.
925 inline cic:/CoRN/algebra/CRings/R'.var.
927 inline cic:/CoRN/algebra/CRings/included_FScalMult.con.
929 inline cic:/CoRN/algebra/CRings/included_FScalMult'.con.
932 End ScalarMultiplication.
936 Hint Resolve included_FMult included_FScalMult included_FNth : included.
940 Hint Immediate included_FMult' included_FMult'' included_FScalMult'
941 included_FNth' : included.