From 6b59540a2460633df4e3d8347cb4dfe2fb3a3afb Mon Sep 17 00:00:00 2001 From: Cyril Cohen Date: Wed, 16 Oct 2019 11:26:43 +0200 Subject: removing everything but index which redirects to the new page --- docs/htmldoc/mathcomp.field.algC.html | 1065 --------------------------------- 1 file changed, 1065 deletions(-) delete mode 100644 docs/htmldoc/mathcomp.field.algC.html (limited to 'docs/htmldoc/mathcomp.field.algC.html') diff --git a/docs/htmldoc/mathcomp.field.algC.html b/docs/htmldoc/mathcomp.field.algC.html deleted file mode 100644 index 5ab5e5d..0000000 --- a/docs/htmldoc/mathcomp.field.algC.html +++ /dev/null @@ -1,1065 +0,0 @@ - - - - - -mathcomp.field.algC - - - - -
- - - -
- -

Library mathcomp.field.algC

- -
-(* (c) Copyright 2006-2016 Microsoft Corporation and Inria.                  
- Distributed under the terms of CeCILL-B.                                  *)

- -
-
- -
- This file provides an axiomatic construction of the algebraic numbers. - The construction only assumes the existence of an algebraically closed - filed with an automorphism of order 2; this amounts to the purely - algebraic contents of the Fundamenta Theorem of Algebra. - algC == the closed, countable field of algebraic numbers. - algCeq, algCring, ..., algCnumField == structures for algC. - The ssrnum interfaces are implemented for algC as follows: - x <= y <=> (y - x) is a nonnegative real - x < y <=> (y - x) is a (strictly) positive real - `|z| == the complex norm of z, i.e., sqrtC (z * z^* ). - Creal == the subset of real numbers (:= Num.real for algC). - 'i == the imaginary number (:= sqrtC (-1)). - 'Re z == the real component of z. - 'Im z == the imaginary component of z. - z^* == the complex conjugate of z (:= conjC z). - sqrtC z == a nonnegative square root of z, i.e., 0 <= sqrt x if 0 <= x. - n.-root z == more generally, for n > 0, an nth root of z, chosen with a - minimal non-negative argument for n > 1 (i.e., with a - maximal real part subject to a nonnegative imaginary part). - Note that n.-root (-1) is a primitive 2nth root of unity, - an thus not equal to -1 for n odd > 1 (this will be shown in - file cyclotomic.v). - In addition, we provide: - Crat == the subset of rational numbers. - Cint == the subset of integers. - Cnat == the subset of natural integers. - getCrat z == some a : rat such that ratr a = z, provided z \in Crat. - floorC z == for z \in Creal, an m : int s.t. m%:~R <= z < (m + 1)%:~R. - truncC z == for z >= 0, an n : nat s.t. n%:R <= z < n.+1%:R, else 0%N. - minCpoly z == the minimal (monic) polynomial over Crat with root z. - algC_invaut nu == an inverse of nu : {rmorphism algC -> algC}. - (x %| y)%C <=> y is an integer (Cint) multiple of x; if x or y are - (x %| y)%Cx of type nat or int they are coerced to algC here. - The (x %| y)%Cx display form is a workaround for - design limitations of the Coq Notation facilities. - (x == y % [mod z])%C <=> x and y differ by an integer (Cint) multiple of z; - as above, arguments of type nat or int are cast to algC. - (x != y % [mod z])%C <=> x and y do not differ by an integer multiple of z. - Note that in file algnum we give an alternative definition of divisibility - based on algebraic integers, overloading the notation in the %A scope. -
-
- -
-Set Implicit Arguments.
- -
-Import GRing.Theory Num.Theory.
-Local Open Scope ring_scope.
- -
-
- -
- The Num mixin for an algebraically closed field with an automorphism of - order 2, making it into a field of complex numbers. -
-
-Lemma ComplexNumMixin (L : closedFieldType) (conj : {rmorphism L L}) :
-    involutive conj ¬ conj =1 id
-  {numL | x : NumDomainType L numL, `|x| ^+ 2 = x × conj x}.
- -
-Module Algebraics.
- -
-Module Type Specification.
- -
-Parameter type : Type.
- -
-Parameter eqMixin : Equality.class_of type.
-Canonical eqType := EqType type eqMixin.
- -
-Parameter choiceMixin : Choice.mixin_of type.
-Canonical choiceType := ChoiceType type choiceMixin.
- -
-Parameter countMixin : Countable.mixin_of type.
-Canonical countType := CountType type countMixin.
- -
-Parameter zmodMixin : GRing.Zmodule.mixin_of type.
-Canonical zmodType := ZmodType type zmodMixin.
-Canonical countZmodType := [countZmodType of type].
- -
-Parameter ringMixin : GRing.Ring.mixin_of zmodType.
-Canonical ringType := RingType type ringMixin.
-Canonical countRingType := [countRingType of type].
- -
-Parameter unitRingMixin : GRing.UnitRing.mixin_of ringType.
-Canonical unitRingType := UnitRingType type unitRingMixin.
- -
-Axiom mulC : @commutative ringType ringType *%R.
-Canonical comRingType := ComRingType type mulC.
-Canonical comUnitRingType := [comUnitRingType of type].
- -
-Axiom idomainAxiom : GRing.IntegralDomain.axiom ringType.
-Canonical idomainType := IdomainType type idomainAxiom.
- -
-Axiom fieldMixin : GRing.Field.mixin_of unitRingType.
-Canonical fieldType := FieldType type fieldMixin.
- -
-Parameter decFieldMixin : GRing.DecidableField.mixin_of unitRingType.
-Canonical decFieldType := DecFieldType type decFieldMixin.
- -
-Axiom closedFieldAxiom : GRing.ClosedField.axiom ringType.
-Canonical closedFieldType := ClosedFieldType type closedFieldAxiom.
- -
-Parameter numMixin : Num.mixin_of ringType.
-Canonical numDomainType := NumDomainType type numMixin.
-Canonical numFieldType := [numFieldType of type].
- -
-Parameter conjMixin : Num.ClosedField.imaginary_mixin_of numDomainType.
-Canonical numClosedFieldType := NumClosedFieldType type conjMixin.
- -
-Axiom algebraic : integralRange (@ratr unitRingType).
- -
-End Specification.
- -
-Module Implementation : Specification.
- -
-Definition L := tag Fundamental_Theorem_of_Algebraics.
- -
-Definition conjL : {rmorphism L L} :=
-  s2val (tagged Fundamental_Theorem_of_Algebraics).
- -
-Fact conjL_K : involutive conjL.
- -
-Fact conjL_nt : ¬ conjL =1 id.
- -
-Definition LnumMixin := ComplexNumMixin conjL_K conjL_nt.
-Definition Lnum := NumDomainType L (sval LnumMixin).
- -
-Definition QtoL := [rmorphism of @ratr [numFieldType of Lnum]].
-Notation pQtoL := (map_poly QtoL).
- -
-Definition rootQtoL p_j :=
-  if p_j.1 == 0 then 0 else
-  (sval (closed_field_poly_normal (pQtoL p_j.1)))`_p_j.2.
- -
-Definition eq_root p_j q_k := rootQtoL p_j == rootQtoL q_k.
-Fact eq_root_is_equiv : equiv_class_of eq_root.
- Canonical eq_root_equiv := EquivRelPack eq_root_is_equiv.
-Definition type : Type := {eq_quot eq_root}%qT.
- -
-Definition eqMixin : Equality.class_of type := EquivQuot.eqMixin _.
-Canonical eqType := EqType type eqMixin.
- -
-Definition choiceMixin : Choice.mixin_of type := EquivQuot.choiceMixin _.
-Canonical choiceType := ChoiceType type choiceMixin.
- -
-Definition countMixin : Countable.mixin_of type := CanCountMixin reprK.
-Canonical countType := CountType type countMixin.
- -
-Definition CtoL (u : type) := rootQtoL (repr u).
- -
-Fact CtoL_inj : injective CtoL.
- -
-Fact CtoL_P u : integralOver QtoL (CtoL u).
- -
-Fact LtoC_subproof z : integralOver QtoL z {u | CtoL u = z}.
- -
-Definition LtoC z Az := sval (@LtoC_subproof z Az).
-Fact LtoC_K z Az : CtoL (@LtoC z Az) = z.
- -
-Fact CtoL_K u : LtoC (CtoL_P u) = u.
- -
-Definition zero := LtoC (integral0 _).
-Definition add u v := LtoC (integral_add (CtoL_P u) (CtoL_P v)).
-Definition opp u := LtoC (integral_opp (CtoL_P u)).
- -
-Fact addA : associative add.
- -
-Fact addC : commutative add.
- -
-Fact add0 : left_id zero add.
- -
-Fact addN : left_inverse zero opp add.
- -
-Definition zmodMixin := ZmodMixin addA addC add0 addN.
-Canonical zmodType := ZmodType type zmodMixin.
-Canonical countZmodType := [countZmodType of type].
- -
-Fact CtoL_is_additive : additive CtoL.
- Canonical CtoL_additive := Additive CtoL_is_additive.
- -
-Definition one := LtoC (integral1 _).
-Definition mul u v := LtoC (integral_mul (CtoL_P u) (CtoL_P v)).
-Definition inv u := LtoC (integral_inv (CtoL_P u)).
- -
-Fact mulA : associative mul.
- -
-Fact mulC : commutative mul.
- -
-Fact mul1 : left_id one mul.
- -
-Fact mulD : left_distributive mul +%R.
- -
-Fact one_nz : one != 0 :> type.
- -
-Definition ringMixin := ComRingMixin mulA mulC mul1 mulD one_nz.
-Canonical ringType := RingType type ringMixin.
-Canonical comRingType := ComRingType type mulC.
-Canonical countRingType := [countRingType of type].
- -
-Fact CtoL_is_multiplicative : multiplicative CtoL.
- Canonical CtoL_rmorphism := AddRMorphism CtoL_is_multiplicative.
- -
-Fact mulVf : GRing.Field.axiom inv.
-Fact inv0 : inv 0 = 0.
- -
-Definition unitRingMixin := FieldUnitMixin mulVf inv0.
-Canonical unitRingType := UnitRingType type unitRingMixin.
-Canonical comUnitRingType := [comUnitRingType of type].
- -
-Definition fieldMixin := FieldMixin mulVf inv0.
-Definition idomainAxiom := FieldIdomainMixin fieldMixin.
-Canonical idomainType := IdomainType type idomainAxiom.
-Canonical fieldType := FieldType type fieldMixin.
- -
-Fact closedFieldAxiom : GRing.ClosedField.axiom ringType.
- -
-Definition decFieldMixin := closed_field_QEMixin closedFieldAxiom.
-Canonical decFieldType := DecFieldType type decFieldMixin.
-Canonical closedFieldType := ClosedFieldType type closedFieldAxiom.
- -
-Fact conj_subproof u : integralOver QtoL (conjL (CtoL u)).
-Fact conj_is_rmorphism : rmorphism (fun uLtoC (conj_subproof u)).
-Definition conj : {rmorphism type type} := RMorphism conj_is_rmorphism.
-Lemma conjK : involutive conj.
- -
-Fact conj_nt : ¬ conj =1 id.
- -
-Definition numMixin := sval (ComplexNumMixin conjK conj_nt).
-Canonical numDomainType := NumDomainType type numMixin.
-Canonical numFieldType := [numFieldType of type].
- -
-Lemma normK u : `|u| ^+ 2 = u × conj u.
- -
-Lemma algebraic : integralRange (@ratr unitRingType).
- -
-Definition conjMixin :=
-  ImaginaryMixin (svalP (imaginary_exists closedFieldType))
-                 (fun xesym (normK x)).
-Canonical numClosedFieldType := NumClosedFieldType type conjMixin.
- -
-End Implementation.
- -
-Definition divisor := Implementation.type.
- -
-Module Internals.
- -
-Import Implementation.
- -
- -
-Fact algCi_subproof : {i : algC | i ^+ 2 = -1}.
- -
-Variant getCrat_spec : Type := GetCrat_spec CtoQ of cancel QtoC CtoQ.
- -
-Fact getCrat_subproof : getCrat_spec.
- -
-Fact floorC_subproof x : {m | x \is Creal ZtoC m x < ZtoC (m + 1)}.
- -
-Fact minCpoly_subproof (x : algC) :
-  {p | p \is monic & q, root (pQtoC q) x = (p %| q)%R}.
- -
-Definition algC_divisor (x : algC) := x : divisor.
-Definition int_divisor m := m%:~R : divisor.
-Definition nat_divisor n := n%:R : divisor.
- -
-End Internals.
- -
-Module Import Exports.
- -
-Import Implementation Internals.
- -
-Notation algC := type.
-Delimit Scope C_scope with C.
-Delimit Scope C_core_scope with Cc.
-Delimit Scope C_expanded_scope with Cx.
-Open Scope C_core_scope.
- -
-Canonical eqType.
-Canonical choiceType.
-Canonical countType.
-Canonical zmodType.
-Canonical countZmodType.
-Canonical ringType.
-Canonical countRingType.
-Canonical unitRingType.
-Canonical comRingType.
-Canonical comUnitRingType.
-Canonical idomainType.
-Canonical numDomainType.
-Canonical fieldType.
-Canonical numFieldType.
-Canonical decFieldType.
-Canonical closedFieldType.
-Canonical numClosedFieldType.
- -
-Notation algCeq := eqType.
-Notation algCzmod := zmodType.
-Notation algCring := ringType.
-Notation algCuring := unitRingType.
-Notation algCnum := numDomainType.
-Notation algCfield := fieldType.
-Notation algCnumField := numFieldType.
-Notation algCnumClosedField := numClosedFieldType.
- -
-Notation Creal := (@Num.Def.Rreal numDomainType).
- -
-Definition getCrat := let: GetCrat_spec CtoQ _ := getCrat_subproof in CtoQ.
-Definition Crat : {pred algC} := fun xratr (getCrat x) == x.
- -
-Definition floorC x := sval (floorC_subproof x).
-Definition Cint : {pred algC} := fun x(floorC x)%:~R == x.
- -
-Definition truncC x := if x 0 then `|floorC x|%N else 0%N.
-Definition Cnat : {pred algC} := fun x(truncC x)%:R == x.
- -
-Definition minCpoly x : {poly algC} :=
-  let: exist2 p _ _ := minCpoly_subproof x in map_poly ratr p.
- -
-Coercion nat_divisor : nat >-> divisor.
-Coercion int_divisor : int >-> divisor.
-Coercion algC_divisor : algC >-> divisor.
- -
-Lemma nCdivE (p : nat) : p = p%:R :> divisor.
-Lemma zCdivE (p : int) : p = p%:~R :> divisor.
-Definition CdivE := (nCdivE, zCdivE).
- -
-Definition dvdC (x : divisor) : {pred algC} :=
-   fun yif x == 0 then y == 0 else y / x \in Cint.
-Notation "x %| y" := (y \in dvdC x) : C_expanded_scope.
-Notation "x %| y" := (@in_mem divisor y (mem (dvdC x))) : C_scope.
- -
-Definition eqCmod (e x y : divisor) := (e %| x - y)%C.
- -
-Notation "x == y %[mod e ]" := (eqCmod e x y) : C_scope.
-Notation "x != y %[mod e ]" := (~~ (x == y %[mod e])%C) : C_scope.
- -
-End Exports.
- -
-End Algebraics.
- -
-Export Algebraics.Exports.
- -
-Section AlgebraicsTheory.
- -
-Implicit Types (x y z : algC) (n : nat) (m : int) (b : bool).
-Import Algebraics.Internals.
- -
- -
-Local Hint Resolve (intr_inj : injective ZtoC) : core.
- -
-
- -
- Specialization of a few basic ssrnum order lemmas. -
-
- -
-Definition eqC_nat n p : (n%:R == p%:R :> algC) = (n == p) := eqr_nat _ n p.
-Definition leC_nat n p : (n%:R p%:R :> algC) = (n p)%N := ler_nat _ n p.
-Definition ltC_nat n p : (n%:R < p%:R :> algC) = (n < p)%N := ltr_nat _ n p.
-Definition Cchar : [char algC] =i pred0 := @char_num _.
- -
-
- -
- This can be used in the converse direction to evaluate assertions over - manifest rationals, such as 3%:R^-1 + 7%:%^-1 < 2%:%^-1 :> algC. - Missing norm and integer exponent, due to gaps in ssrint and rat. -
- - -
- Conjugation and norm. -
- - -
- Real number subset. -
-
- -
-Lemma Creal0 : 0 \is Creal.
-Lemma Creal1 : 1 \is Creal.
-
- -
- Trivial cannot resolve a general real0 hint. -
-
-Hint Resolve Creal0 Creal1 : core.
- -
-Lemma algCrect x : x = 'Re x + 'i × 'Im x.
- -
-Lemma algCreal_Re x : 'Re x \is Creal.
- -
-Lemma algCreal_Im x : 'Im x \is Creal.
- Hint Resolve algCreal_Re algCreal_Im : core.
- -
-
- -
- Integer subset. - Not relying on the undocumented interval library, for now. -
-
- -
-Lemma floorC_itv x : x \is Creal (floorC x)%:~R x < (floorC x + 1)%:~R.
- -
-Lemma floorC_def x m : m%:~R x < (m + 1)%:~R floorC x = m.
- -
-Lemma intCK : cancel intr floorC.
- -
-Lemma floorCK : {in Cint, cancel floorC intr}.
- -
-Lemma floorC0 : floorC 0 = 0.
-Lemma floorC1 : floorC 1 = 1.
-Hint Resolve floorC0 floorC1 : core.
- -
-Lemma floorCpK (p : {poly algC}) :
-  p \is a polyOver Cint map_poly intr (map_poly floorC p) = p.
- -
-Lemma floorCpP (p : {poly algC}) :
-  p \is a polyOver Cint {q | p = map_poly intr q}.
- -
-Lemma Cint_int m : m%:~R \in Cint.
- -
-Lemma CintP x : reflect ( m, x = m%:~R) (x \in Cint).
- -
-Lemma floorCD : {in Cint & Creal, {morph floorC : x y / x + y}}.
- -
-Lemma floorCN : {in Cint, {morph floorC : x / - x}}.
- -
-Lemma floorCM : {in Cint &, {morph floorC : x y / x × y}}.
- -
-Lemma floorCX n : {in Cint, {morph floorC : x / x ^+ n}}.
- -
-Lemma rpred_Cint
-        (S : {pred algC}) (ringS : subringPred S) (kS : keyed_pred ringS) x :
-  x \in Cint x \in kS.
- -
-Lemma Cint0 : 0 \in Cint.
-Lemma Cint1 : 1 \in Cint.
-Hint Resolve Cint0 Cint1 : core.
- -
-Fact Cint_key : pred_key Cint.
-Fact Cint_subring : subring_closed Cint.
-Canonical Cint_keyed := KeyedPred Cint_key.
-Canonical Cint_opprPred := OpprPred Cint_subring.
-Canonical Cint_addrPred := AddrPred Cint_subring.
-Canonical Cint_mulrPred := MulrPred Cint_subring.
-Canonical Cint_zmodPred := ZmodPred Cint_subring.
-Canonical Cint_semiringPred := SemiringPred Cint_subring.
-Canonical Cint_smulrPred := SmulrPred Cint_subring.
-Canonical Cint_subringPred := SubringPred Cint_subring.
- -
-Lemma Creal_Cint : {subset Cint Creal}.
- -
-Lemma conj_Cint x : x \in Cint x^* = x.
- -
-Lemma Cint_normK x : x \in Cint `|x| ^+ 2 = x ^+ 2.
- -
-Lemma CintEsign x : x \in Cint x = (-1) ^+ (x < 0)%C × `|x|.
- -
-
- -
- Natural integer subset. -
-
- -
-Lemma truncC_itv x : 0 x (truncC x)%:R x < (truncC x).+1%:R.
- -
-Lemma truncC_def x n : n%:R x < n.+1%:R truncC x = n.
- -
-Lemma natCK n : truncC n%:R = n.
- -
-Lemma CnatP x : reflect ( n, x = n%:R) (x \in Cnat).
- -
-Lemma truncCK : {in Cnat, cancel truncC (GRing.natmul 1)}.
- -
-Lemma truncC_gt0 x : (0 < truncC x)%N = (1 x).
- -
-Lemma truncC0Pn x : reflect (truncC x = 0%N) (~~ (1 x)).
- -
-Lemma truncC0 : truncC 0 = 0%N.
-Lemma truncC1 : truncC 1 = 1%N.
- -
-Lemma truncCD :
-  {in Cnat & Num.nneg, {morph truncC : x y / x + y >-> (x + y)%N}}.
- -
-Lemma truncCM : {in Cnat &, {morph truncC : x y / x × y >-> (x × y)%N}}.
- -
-Lemma truncCX n : {in Cnat, {morph truncC : x / x ^+ n >-> (x ^ n)%N}}.
- -
-Lemma rpred_Cnat
-        (S : {pred algC}) (ringS : semiringPred S) (kS : keyed_pred ringS) x :
-  x \in Cnat x \in kS.
- -
-Lemma Cnat_nat n : n%:R \in Cnat.
-Lemma Cnat0 : 0 \in Cnat.
-Lemma Cnat1 : 1 \in Cnat.
-Hint Resolve Cnat_nat Cnat0 Cnat1 : core.
- -
-Fact Cnat_key : pred_key Cnat.
-Fact Cnat_semiring : semiring_closed Cnat.
-Canonical Cnat_keyed := KeyedPred Cnat_key.
-Canonical Cnat_addrPred := AddrPred Cnat_semiring.
-Canonical Cnat_mulrPred := MulrPred Cnat_semiring.
-Canonical Cnat_semiringPred := SemiringPred Cnat_semiring.
- -
-Lemma Cnat_ge0 x : x \in Cnat 0 x.
- -
-Lemma Cnat_gt0 x : x \in Cnat (0 < x) = (x != 0).
- -
-Lemma conj_Cnat x : x \in Cnat x^* = x.
- -
-Lemma norm_Cnat x : x \in Cnat `|x| = x.
- -
-Lemma Creal_Cnat : {subset Cnat Creal}.
- -
-Lemma Cnat_sum_eq1 (I : finType) (P : pred I) (F : I algC) :
-     ( i, P i F i \in Cnat) \sum_(i | P i) F i = 1
-   {i : I | [/\ P i, F i = 1 & j, j != i P j F j = 0]}.
- -
-Lemma Cnat_mul_eq1 x y :
-  x \in Cnat y \in Cnat (x × y == 1) = (x == 1) && (y == 1).
- -
-Lemma Cnat_prod_eq1 (I : finType) (P : pred I) (F : I algC) :
-    ( i, P i F i \in Cnat) \prod_(i | P i) F i = 1
-   i, P i F i = 1.
- -
-
- -
- Relating Cint and Cnat. -
-
- -
-Lemma Cint_Cnat : {subset Cnat Cint}.
- -
-Lemma CintE x : (x \in Cint) = (x \in Cnat) || (- x \in Cnat).
- -
-Lemma Cnat_norm_Cint x : x \in Cint `|x| \in Cnat.
- -
-Lemma CnatEint x : (x \in Cnat) = (x \in Cint) && (0 x).
- -
-Lemma CintEge0 x : 0 x (x \in Cint) = (x \in Cnat).
- -
-Lemma Cnat_exp_even x n : ~~ odd n x \in Cint x ^+ n \in Cnat.
- -
-Lemma norm_Cint_ge1 x : x \in Cint x != 0 1 `|x|.
- -
-Lemma sqr_Cint_ge1 x : x \in Cint x != 0 1 x ^+ 2.
- -
-Lemma Cint_ler_sqr x : x \in Cint x x ^+ 2.
- -
-
- -
- Integer divisibility. -
-
- -
-Lemma dvdCP x y : reflect (exists2 z, z \in Cint & y = z × x) (x %| y)%C.
- -
-Lemma dvdCP_nat x y : 0 x 0 y (x %| y)%C {n | y = n%:R × x}.
- -
-Lemma dvdC0 x : (x %| 0)%C.
- -
-Lemma dvd0C x : (0 %| x)%C = (x == 0).
- -
-Lemma dvdC_mull x y z : y \in Cint (x %| z)%C (x %| y × z)%C.
- -
-Lemma dvdC_mulr x y z : y \in Cint (x %| z)%C (x %| z × y)%C.
- -
-Lemma dvdC_mul2r x y z : y != 0 (x × y %| z × y)%C = (x %| z)%C.
- -
-Lemma dvdC_mul2l x y z : y != 0 (y × x %| y × z)%C = (x %| z)%C.
- -
-Lemma dvdC_trans x y z : (x %| y)%C (y %| z)%C (x %| z)%C.
- -
-Lemma dvdC_refl x : (x %| x)%C.
- Hint Resolve dvdC_refl : core.
- -
-Fact dvdC_key x : pred_key (dvdC x).
-Lemma dvdC_zmod x : zmod_closed (dvdC x).
-Canonical dvdC_keyed x := KeyedPred (dvdC_key x).
-Canonical dvdC_opprPred x := OpprPred (dvdC_zmod x).
-Canonical dvdC_addrPred x := AddrPred (dvdC_zmod x).
-Canonical dvdC_zmodPred x := ZmodPred (dvdC_zmod x).
- -
-Lemma dvdC_nat (p n : nat) : (p %| n)%C = (p %| n)%N.
- -
-Lemma dvdC_int (p : nat) x : x \in Cint (p %| x)%C = (p %| `|floorC x|)%N.
- -
-
- -
- Elementary modular arithmetic. -
-
- -
-Lemma eqCmod_refl e x : (x == x %[mod e])%C.
- -
-Lemma eqCmodm0 e : (e == 0 %[mod e])%C.
-Hint Resolve eqCmod_refl eqCmodm0 : core.
- -
-Lemma eqCmod0 e x : (x == 0 %[mod e])%C = (e %| x)%C.
- -
-Lemma eqCmod_sym e x y : ((x == y %[mod e]) = (y == x %[mod e]))%C.
- -
-Lemma eqCmod_trans e y x z :
-  (x == y %[mod e] y == z %[mod e] x == z %[mod e])%C.
- -
-Lemma eqCmod_transl e x y z :
-  (x == y %[mod e])%C (x == z %[mod e])%C = (y == z %[mod e])%C.
- -
-Lemma eqCmod_transr e x y z :
-  (x == y %[mod e])%C (z == x %[mod e])%C = (z == y %[mod e])%C.
- -
-Lemma eqCmodN e x y : (- x == y %[mod e])%C = (x == - y %[mod e])%C.
- -
-Lemma eqCmodDr e x y z : (y + x == z + x %[mod e])%C = (y == z %[mod e])%C.
- -
-Lemma eqCmodDl e x y z : (x + y == x + z %[mod e])%C = (y == z %[mod e])%C.
- -
-Lemma eqCmodD e x1 x2 y1 y2 :
-  (x1 == x2 %[mod e] y1 == y2 %[mod e] x1 + y1 == x2 + y2 %[mod e])%C.
- -
-Lemma eqCmod_nat (e m n : nat) : (m == n %[mod e])%C = (m == n %[mod e]).
- -
-Lemma eqCmod0_nat (e m : nat) : (m == 0 %[mod e])%C = (e %| m)%N.
- -
-Lemma eqCmodMr e :
-  {in Cint, z x y, x == y %[mod e] x × z == y × z %[mod e]}%C.
- -
-Lemma eqCmodMl e :
-  {in Cint, z x y, x == y %[mod e] z × x == z × y %[mod e]}%C.
- -
-Lemma eqCmodMl0 e : {in Cint, x, x × e == 0 %[mod e]}%C.
- -
-Lemma eqCmodMr0 e : {in Cint, x, e × x == 0 %[mod e]}%C.
- -
-Lemma eqCmod_addl_mul e : {in Cint, x y, x × e + y == y %[mod e]}%C.
- -
-Lemma eqCmodM e : {in Cint & Cint, x1 y2 x2 y1,
-  x1 == x2 %[mod e] y1 == y2 %[mod e] x1 × y1 == x2 × y2 %[mod e]}%C.
- -
-
- -
- Rational number subset. -
-
- -
-Lemma ratCK : cancel QtoC CtoQ.
- -
-Lemma getCratK : {in Crat, cancel CtoQ QtoC}.
- -
-Lemma Crat_rat (a : rat) : QtoC a \in Crat.
- -
-Lemma CratP x : reflect ( a, x = QtoC a) (x \in Crat).
- -
-Lemma Crat0 : 0 \in Crat.
-Lemma Crat1 : 1 \in Crat.
-Hint Resolve Crat0 Crat1 : core.
- -
-Fact Crat_key : pred_key Crat.
-Fact Crat_divring_closed : divring_closed Crat.
-Canonical Crat_keyed := KeyedPred Crat_key.
-Canonical Crat_opprPred := OpprPred Crat_divring_closed.
-Canonical Crat_addrPred := AddrPred Crat_divring_closed.
-Canonical Crat_mulrPred := MulrPred Crat_divring_closed.
-Canonical Crat_zmodPred := ZmodPred Crat_divring_closed.
-Canonical Crat_semiringPred := SemiringPred Crat_divring_closed.
-Canonical Crat_smulrPred := SmulrPred Crat_divring_closed.
-Canonical Crat_divrPred := DivrPred Crat_divring_closed.
-Canonical Crat_subringPred := SubringPred Crat_divring_closed.
-Canonical Crat_sdivrPred := SdivrPred Crat_divring_closed.
-Canonical Crat_divringPred := DivringPred Crat_divring_closed.
- -
-Lemma rpred_Crat
-        (S : {pred algC}) (ringS : divringPred S) (kS : keyed_pred ringS) :
-  {subset Crat kS}.
- -
-Lemma conj_Crat z : z \in Crat z^* = z.
- -
-Lemma Creal_Crat : {subset Crat Creal}.
- -
-Lemma Cint_rat a : (QtoC a \in Cint) = (a \in Qint).
- -
-Lemma minCpolyP x :
-   {p | minCpoly x = pQtoC p p \is monic
-      & q, root (pQtoC q) x = (p %| q)%R}.
- -
-Lemma minCpoly_monic x : minCpoly x \is monic.
- -
-Lemma minCpoly_eq0 x : (minCpoly x == 0) = false.
- -
-Lemma root_minCpoly x : root (minCpoly x) x.
- -
-Lemma size_minCpoly x : (1 < size (minCpoly x))%N.
- -
-
- -
- Basic properties of automorphisms. -
-
-Section AutC.
- -
-Implicit Type nu : {rmorphism algC algC}.
- -
-Lemma aut_Cnat nu : {in Cnat, nu =1 id}.
- -
-Lemma aut_Cint nu : {in Cint, nu =1 id}.
- -
-Lemma aut_Crat nu : {in Crat, nu =1 id}.
- -
-Lemma Cnat_aut nu x : (nu x \in Cnat) = (x \in Cnat).
- -
-Lemma Cint_aut nu x : (nu x \in Cint) = (x \in Cint).
- -
-Lemma Crat_aut nu x : (nu x \in Crat) = (x \in Crat).
- -
-Lemma algC_invaut_subproof nu x : {y | nu y = x}.
-Definition algC_invaut nu x := sval (algC_invaut_subproof nu x).
- -
-Lemma algC_invautK nu : cancel (algC_invaut nu) nu.
- -
-Lemma algC_autK nu : cancel nu (algC_invaut nu).
- -
-Fact algC_invaut_is_rmorphism nu : rmorphism (algC_invaut nu).
- Canonical algC_invaut_additive nu := Additive (algC_invaut_is_rmorphism nu).
-Canonical algC_invaut_rmorphism nu := RMorphism (algC_invaut_is_rmorphism nu).
- -
-Lemma minCpoly_aut nu x : minCpoly (nu x) = minCpoly x.
- -
-End AutC.
- -
-Section AutLmodC.
- -
-Variables (U V : lmodType algC) (f : {additive U V}).
- -
-Lemma raddfZ_Cnat a u : a \in Cnat f (a *: u) = a *: f u.
- -
-Lemma raddfZ_Cint a u : a \in Cint f (a *: u) = a *: f u.
- -
-End AutLmodC.
- -
-Section PredCmod.
- -
-Variable V : lmodType algC.
- -
-Lemma rpredZ_Cnat S (addS : @addrPred V S) (kS : keyed_pred addS) :
-  {in Cnat & kS, z u, z *: u \in kS}.
- -
-Lemma rpredZ_Cint S (subS : @zmodPred V S) (kS : keyed_pred subS) :
-  {in Cint & kS, z u, z *: u \in kS}.
- -
-End PredCmod.
- -
-End AlgebraicsTheory.
-Hint Resolve Creal0 Creal1 Cnat_nat Cnat0 Cnat1 Cint0 Cint1 floorC0 Crat0 Crat1 : core.
-Hint Resolve dvdC0 dvdC_refl eqCmod_refl eqCmodm0 : core.
-
-
- - - -
- - - \ No newline at end of file -- cgit v1.2.3