From 748d716efb2f2f75946c8386e441ce1789806a39 Mon Sep 17 00:00:00 2001 From: Enrico Tassi Date: Wed, 22 May 2019 13:43:08 +0200 Subject: htmldoc regenerated --- docs/htmldoc/mathcomp.field.galois.html | 505 ++++++++++++++++---------------- 1 file changed, 253 insertions(+), 252 deletions(-) (limited to 'docs/htmldoc/mathcomp.field.galois.html') diff --git a/docs/htmldoc/mathcomp.field.galois.html b/docs/htmldoc/mathcomp.field.galois.html index 5b28ffb..76c8ddc 100644 --- a/docs/htmldoc/mathcomp.field.galois.html +++ b/docs/htmldoc/mathcomp.field.galois.html @@ -21,7 +21,6 @@
(* (c) Copyright 2006-2016 Microsoft Corporation and Inria.                  
 Distributed under the terms of CeCILL-B.                                  *)

-Require Import mathcomp.ssreflect.ssreflect.

@@ -85,13 +84,13 @@ Variables (F : fieldType) (L : fieldExtType F).

-Definition splittingFieldFor (U : {vspace L}) (p : {poly L}) (V : {vspace L}) :=
-  exists2 rs, p %= \prod_(z <- rs) ('X - z%:P) & <<U & rs>>%VS = V.
+Definition splittingFieldFor (U : {vspace L}) (p : {poly L}) (V : {vspace L}) :=
+  exists2 rs, p %= \prod_(z <- rs) ('X - z%:P) & <<U & rs>>%VS = V.

-Lemma splittingFieldForS (K M E : {subfield L}) p :
-    (K M)%VS (M E)%VS
-  splittingFieldFor K p E splittingFieldFor M p E.
+Lemma splittingFieldForS (K M E : {subfield L}) p :
+    (K M)%VS (M E)%VS
+  splittingFieldFor K p E splittingFieldFor M p E.

End SplittingFieldFor.
@@ -101,164 +100,164 @@
Variables (F : fieldType) (L : fieldExtType F).
-Implicit Types (U V : {vspace L}) (K E : {subfield L}) (f g : 'End(L)).
+Implicit Types (U V : {vspace L}) (K E : {subfield L}) (f g : 'End(L)).

-Definition kHom U V f := ahom_in V f && (U fixedSpace f)%VS.
+Definition kHom U V f := ahom_in V f && (U fixedSpace f)%VS.

Lemma kHomP {K V f} :
-  reflect [/\ {in V &, x y, f (x × y) = f x × f y}
-            & {in K, x, f x = x}]
+  reflect [/\ {in V &, x y, f (x × y) = f x × f y}
+            & {in K, x, f x = x}]
          (kHom K V f).

-Lemma kAHomP {U V} {f : 'AEnd(L)} :
-  reflect {in U, x, f x = x} (kHom U V f).
+Lemma kAHomP {U V} {f : 'AEnd(L)} :
+  reflect {in U, x, f x = x} (kHom U V f).

-Lemma kHom1 U V : kHom U V \1.
+Lemma kHom1 U V : kHom U V \1.

-Lemma k1HomE V f : kHom 1 V f = ahom_in V f.
+Lemma k1HomE V f : kHom 1 V f = ahom_in V f.

-Lemma kHom_lrmorphism (f : 'End(L)) : reflect (lrmorphism f) (kHom 1 {:L} f).
+Lemma kHom_lrmorphism (f : 'End(L)) : reflect (lrmorphism f) (kHom 1 {:L} f).

-Lemma k1AHom V (f : 'AEnd(L)) : kHom 1 V f.
+Lemma k1AHom V (f : 'AEnd(L)) : kHom 1 V f.

Lemma kHom_poly_id K E f p :
-  kHom K E f p \is a polyOver K map_poly f p = p.
+  kHom K E f p \is a polyOver K map_poly f p = p.

-Lemma kHomSl U1 U2 V f : (U1 U2)%VS kHom U2 V f kHom U1 V f.
+Lemma kHomSl U1 U2 V f : (U1 U2)%VS kHom U2 V f kHom U1 V f.

-Lemma kHomSr K V1 V2 f : (V1 V2)%VS kHom K V2 f kHom K V1 f.
+Lemma kHomSr K V1 V2 f : (V1 V2)%VS kHom K V2 f kHom K V1 f.

Lemma kHomS K1 K2 V1 V2 f :
-  (K1 K2)%VS (V1 V2)%VS kHom K2 V2 f kHom K1 V1 f.
+  (K1 K2)%VS (V1 V2)%VS kHom K2 V2 f kHom K1 V1 f.

Lemma kHom_eq K E f g :
-  (K E)%VS {in E, f =1 g} kHom K E f = kHom K E g.
+  (K E)%VS {in E, f =1 g} kHom K E f = kHom K E g.

-Lemma kHom_inv K E f : kHom K E f {in E, {morph f : x / x^-1}}.
+Lemma kHom_inv K E f : kHom K E f {in E, {morph f : x / x^-1}}.

-Lemma kHom_dim K E f : kHom K E f \dim (f @: E) = \dim E.
+Lemma kHom_dim K E f : kHom K E f \dim (f @: E) = \dim E.

Lemma kHom_is_rmorphism K E f :
-  kHom K E f rmorphism (f \o vsval : subvs_of E L).
+  kHom K E f rmorphism (f \o vsval : subvs_of E L).
Definition kHom_rmorphism K E f homKEf :=
  RMorphism (@kHom_is_rmorphism K E f homKEf).

Lemma kHom_horner K E f p x :
-  kHom K E f p \is a polyOver E x \in E f p.[x] = (map_poly f p).[f x].
+  kHom K E f p \is a polyOver E x \in E f p.[x] = (map_poly f p).[f x].

Lemma kHom_root K E f p x :
-    kHom K E f p \is a polyOver E x \in E root p x
+    kHom K E f p \is a polyOver E x \in E root p x
  root (map_poly f p) (f x).

Lemma kHom_root_id K E f p x :
-   (K E)%VS kHom K E f p \is a polyOver K x \in E root p x
+   (K E)%VS kHom K E f p \is a polyOver K x \in E root p x
  root p (f x).

Section kHomExtend.

-Variables (K E : {subfield L}) (f : 'End(L)) (x y : L).
+Variables (K E : {subfield L}) (f : 'End(L)) (x y : L).

Fact kHomExtend_subproof :
-  linear (fun z(map_poly f (Fadjoin_poly E x z)).[y]).
+  linear (fun z(map_poly f (Fadjoin_poly E x z)).[y]).
Definition kHomExtend := linfun (Linear kHomExtend_subproof).

-Lemma kHomExtendE z : kHomExtend z = (map_poly f (Fadjoin_poly E x z)).[y].
+Lemma kHomExtendE z : kHomExtend z = (map_poly f (Fadjoin_poly E x z)).[y].

-Hypotheses (sKE : (K E)%VS) (homKf : kHom K E f).
+Hypotheses (sKE : (K E)%VS) (homKf : kHom K E f).
Hypothesis fPx_y_0 : root (map_poly f Px) y.

-Lemma kHomExtend_id z : z \in E kHomExtend z = f z.
+Lemma kHomExtend_id z : z \in E kHomExtend z = f z.

-Lemma kHomExtend_val : kHomExtend x = y.
+Lemma kHomExtend_val : kHomExtend x = y.

Lemma kHomExtend_poly p :
-  p \in polyOver E kHomExtend p.[x] = (map_poly f p).[y].
+  p \in polyOver E kHomExtend p.[x] = (map_poly f p).[y].

-Lemma kHomExtendP : kHom K <<E; x>> kHomExtend.
+Lemma kHomExtendP : kHom K <<E; x>> kHomExtend.

End kHomExtend.

-Definition kAut U V f := kHom U V f && (f @: V == V)%VS.
+Definition kAut U V f := kHom U V f && (f @: V == V)%VS.

-Lemma kAutE K E f : kAut K E f = kHom K E f && (f @: E E)%VS.
+Lemma kAutE K E f : kAut K E f = kHom K E f && (f @: E E)%VS.

-Lemma kAutS U1 U2 V f : (U1 U2)%VS kAut U2 V f kAut U1 V f.
+Lemma kAutS U1 U2 V f : (U1 U2)%VS kAut U2 V f kAut U1 V f.

-Lemma kHom_kAut_sub K E f : kAut K E f kHom K E f.
+Lemma kHom_kAut_sub K E f : kAut K E f kHom K E f.

-Lemma kAut_eq K E (f g : 'End(L)) :
-  (K E)%VS {in E, f =1 g} kAut K E f = kAut K E g.
+Lemma kAut_eq K E (f g : 'End(L)) :
+  (K E)%VS {in E, f =1 g} kAut K E f = kAut K E g.

-Lemma kAutfE K f : kAut K {:L} f = kHom K {:L} f.
+Lemma kAutfE K f : kAut K {:L} f = kHom K {:L} f.

-Lemma kAut1E E (f : 'AEnd(L)) : kAut 1 E f = (f @: E E)%VS.
+Lemma kAut1E E (f : 'AEnd(L)) : kAut 1 E f = (f @: E E)%VS.

-Lemma kAutf_lker0 K f : kHom K {:L} f lker f == 0%VS.
+Lemma kAutf_lker0 K f : kHom K {:L} f lker f == 0%VS.

-Lemma inv_kHomf K f : kHom K {:L} f kHom K {:L} f^-1.
+Lemma inv_kHomf K f : kHom K {:L} f kHom K {:L} f^-1.

-Lemma inv_is_ahom (f : 'AEnd(L)) : ahom_in {:L} f^-1.
+Lemma inv_is_ahom (f : 'AEnd(L)) : ahom_in {:L} f^-1.

-Canonical inv_ahom (f : 'AEnd(L)) : 'AEnd(L) := AHom (inv_is_ahom f).
-Notation "f ^-1" := (inv_ahom f) : lrfun_scope.
+Canonical inv_ahom (f : 'AEnd(L)) : 'AEnd(L) := AHom (inv_is_ahom f).
+Notation "f ^-1" := (inv_ahom f) : lrfun_scope.

Lemma comp_kHom_img K E f g :
-  kHom K (g @: E) f kHom K E g kHom K E (f \o g).
+  kHom K (g @: E) f kHom K E g kHom K E (f \o g).

-Lemma comp_kHom K E f g : kHom K {:L} f kHom K E g kHom K E (f \o g).
+Lemma comp_kHom K E f g : kHom K {:L} f kHom K E g kHom K E (f \o g).

Lemma kHom_extends K E f p U :
-    (K E)%VS kHom K E f
-     p \is a polyOver K splittingFieldFor E p U
-  {g | kHom K U g & {in E, f =1 g}}.
+    (K E)%VS kHom K E f
+     p \is a polyOver K splittingFieldFor E p U
+  {g | kHom K U g & {in E, f =1 g}}.

End kHom.

-Notation "f ^-1" := (inv_ahom f) : lrfun_scope.
+Notation "f ^-1" := (inv_ahom f) : lrfun_scope.

@@ -276,44 +275,44 @@
Definition axiom (L : fieldExtType F) :=
-  exists2 p : {poly L}, p \is a polyOver 1%VS & splittingFieldFor 1 p {:L}.
+  exists2 p : {poly L}, p \is a polyOver 1%VS & splittingFieldFor 1 p {:L}.

Record class_of (L : Type) : Type :=
-  Class {base : FieldExt.class_of F L; _ : axiom (FieldExt.Pack _ base L)}.
+  Class {base : FieldExt.class_of F L; _ : axiom (FieldExt.Pack _ base)}.

-Structure type (phF : phant F) := Pack {sort; _ : class_of sort; _ : Type}.
-Variable (phF : phant F) (T : Type) (cT : type phF).
-Definition class := let: Pack _ c _ as cT' := cT return class_of cT' in c.
-Let xT := let: Pack T _ _ := cT in T.
-Notation xclass := (class : class_of xT).
+Structure type (phF : phant F) := Pack {sort; _ : class_of sort}.
+Variable (phF : phant F) (T : Type) (cT : type phF).
+Definition class := let: Pack _ c as cT' := cT return class_of cT' in c.
+Let xT := let: Pack T _ := cT in T.
+Notation xclass := (class : class_of xT).

-Definition clone c of phant_id class c := @Pack phF T c T.
+Definition clone c of phant_id class c := @Pack phF T c.

-Definition pack b0 (ax0 : axiom (@FieldExt.Pack F (Phant F) T b0 T)) :=
fun bT b & phant_id (@FieldExt.class F phF bT) b
fun ax & phant_id ax0 axPack (Phant F) (@Class T b ax) T.
+Definition pack b0 (ax0 : axiom (@FieldExt.Pack F (Phant F) T b0)) :=
fun bT b & phant_id (@FieldExt.class F phF bT) b
fun ax & phant_id ax0 axPack (Phant F) (@Class T b ax).

-Definition eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition zmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @Ring.Pack cT xclass xT.
-Definition unitRingType := @UnitRing.Pack cT xclass xT.
-Definition comRingType := @ComRing.Pack cT xclass xT.
-Definition comUnitRingType := @ComUnitRing.Pack cT xclass xT.
-Definition idomainType := @IntegralDomain.Pack cT xclass xT.
-Definition fieldType := @Field.Pack cT xclass xT.
-Definition lmodType := @Lmodule.Pack F phF cT xclass xT.
-Definition lalgType := @Lalgebra.Pack F phF cT xclass xT.
-Definition algType := @Algebra.Pack F phF cT xclass xT.
-Definition unitAlgType := @UnitAlgebra.Pack F phF cT xclass xT.
-Definition vectType := @Vector.Pack F phF cT xclass xT.
-Definition FalgType := @Falgebra.Pack F phF cT xclass xT.
-Definition fieldExtType := @FieldExt.Pack F phF cT xclass xT.
+Definition eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition zmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @Ring.Pack cT xclass.
+Definition unitRingType := @UnitRing.Pack cT xclass.
+Definition comRingType := @ComRing.Pack cT xclass.
+Definition comUnitRingType := @ComUnitRing.Pack cT xclass.
+Definition idomainType := @IntegralDomain.Pack cT xclass.
+Definition fieldType := @Field.Pack cT xclass.
+Definition lmodType := @Lmodule.Pack F phF cT xclass.
+Definition lalgType := @Lalgebra.Pack F phF cT xclass.
+Definition algType := @Algebra.Pack F phF cT xclass.
+Definition unitAlgType := @UnitAlgebra.Pack F phF cT xclass.
+Definition vectType := @Vector.Pack F phF cT xclass.
+Definition FalgType := @Falgebra.Pack F phF cT xclass.
+Definition fieldExtType := @FieldExt.Pack F phF cT xclass.

End ClassDef.
@@ -358,14 +357,14 @@ Canonical fieldExtType.

-Notation splittingFieldType F := (type (Phant F)).
-Notation SplittingFieldType F L ax := (@pack _ (Phant F) L _ ax _ _ id _ id).
-Notation "[ 'splittingFieldType' F 'of' L 'for' K ]" :=
-  (@clone _ (Phant F) L K _ idfun)
+Notation splittingFieldType F := (type (Phant F)).
+Notation SplittingFieldType F L ax := (@pack _ (Phant F) L _ ax _ _ id _ id).
+Notation "[ 'splittingFieldType' F 'of' L 'for' K ]" :=
+  (@clone _ (Phant F) L K _ idfun)
  (at level 0, format "[ 'splittingFieldType' F 'of' L 'for' K ]")
  : form_scope.
-Notation "[ 'splittingFieldType' F 'of' L ]" :=
-  (@clone _ (Phant F) L _ _ id)
+Notation "[ 'splittingFieldType' F 'of' L ]" :=
+  (@clone _ (Phant F) L _ _ id)
  (at level 0, format "[ 'splittingFieldType' F 'of' L ]") : form_scope.

@@ -375,8 +374,8 @@
Lemma normal_field_splitting (F : fieldType) (L : fieldExtType F) :
-  ( (K : {subfield L}) x,
-     r, minPoly K x == \prod_(y <- r) ('X - y%:P))
+  ( (K : {subfield L}) x,
+     r, minPoly K x == \prod_(y <- r) ('X - y%:P))
  SplittingField.axiom L.

@@ -384,7 +383,7 @@
Canonical regular_splittingFieldType (F : fieldType) :=
-  SplittingFieldType F F^o (regular_splittingAxiom F).
+  SplittingFieldType F F^o (regular_splittingAxiom F).

Section SplittingFieldTheory.
@@ -393,15 +392,15 @@ Variables (F : fieldType) (L : splittingFieldType F).

-Implicit Types (U V W : {vspace L}).
-Implicit Types (K M E : {subfield L}).
+Implicit Types (U V W : {vspace L}).
+Implicit Types (K M E : {subfield L}).

Lemma splittingFieldP : SplittingField.axiom L.

Lemma splittingPoly :
-  {p : {poly L} | p \is a polyOver 1%VS & splittingFieldFor 1 p {:L}}.
+  {p : {poly L} | p \is a polyOver 1%VS & splittingFieldFor 1 p {:L}}.

Fact fieldOver_splitting E : SplittingField.axiom (fieldOver_fieldExtType E).
@@ -409,14 +408,14 @@   SplittingFieldType (subvs_of E) (fieldOver E) (fieldOver_splitting E).

-Lemma enum_AEnd : {kAutL : seq 'AEnd(L) | f, f \in kAutL}.
+Lemma enum_AEnd : {kAutL : seq 'AEnd(L) | f, f \in kAutL}.

Lemma splitting_field_normal K x :
-   r, minPoly K x == \prod_(y <- r) ('X - y%:P).
+   r, minPoly K x == \prod_(y <- r) ('X - y%:P).

-Lemma kHom_to_AEnd K E f : kHom K E f {g : 'AEnd(L) | {in E, f =1 val g}}.
+Lemma kHom_to_AEnd K E f : kHom K E f {g : 'AEnd(L) | {in E, f =1 val g}}.

End SplittingFieldTheory.
@@ -435,19 +434,19 @@
Variables (F : fieldType) (L : splittingFieldType F).
-Implicit Types (U V W : {vspace L}) (K M E : {subfield L}).
+Implicit Types (U V W : {vspace L}) (K M E : {subfield L}).

Definition inAEnd f := SeqSub (svalP (enum_AEnd L) f).
-Fact inAEndK : cancel inAEnd val.
+Fact inAEndK : cancel inAEnd val.

Definition AEnd_countMixin := Eval hnf in CanCountMixin inAEndK.
-Canonical AEnd_countType := Eval hnf in CountType 'AEnd(L) AEnd_countMixin.
-Canonical AEnd_subCountType := Eval hnf in [subCountType of 'AEnd(L)].
+Canonical AEnd_countType := Eval hnf in CountType 'AEnd(L) AEnd_countMixin.
+Canonical AEnd_subCountType := Eval hnf in [subCountType of 'AEnd(L)].
Definition AEnd_finMixin := Eval hnf in CanFinMixin inAEndK.
-Canonical AEnd_finType := Eval hnf in FinType 'AEnd(L) AEnd_finMixin.
-Canonical AEnd_subFinType := Eval hnf in [subFinType of 'AEnd(L)].
+Canonical AEnd_finType := Eval hnf in FinType 'AEnd(L) AEnd_finMixin.
+Canonical AEnd_subFinType := Eval hnf in [subFinType of 'AEnd(L)].

@@ -456,43 +455,43 @@ the group operation is the categorical composition operation
-Definition comp_AEnd (f g : 'AEnd(L)) : 'AEnd(L) := (g \o f)%AF.
+Definition comp_AEnd (f g : 'AEnd(L)) : 'AEnd(L) := (g \o f)%AF.

-Fact comp_AEndA : associative comp_AEnd.
+Fact comp_AEndA : associative comp_AEnd.

-Fact comp_AEnd1l : left_id \1%AF comp_AEnd.
+Fact comp_AEnd1l : left_id \1%AF comp_AEnd.

-Fact comp_AEndK : left_inverse \1%AF (@inv_ahom _ L) comp_AEnd.
+Fact comp_AEndK : left_inverse \1%AF (@inv_ahom _ L) comp_AEnd.

Definition AEnd_baseFinGroupMixin :=
  FinGroup.Mixin comp_AEndA comp_AEnd1l comp_AEndK.
Canonical AEnd_baseFinGroupType :=
-  BaseFinGroupType 'AEnd(L) AEnd_baseFinGroupMixin.
+  BaseFinGroupType 'AEnd(L) AEnd_baseFinGroupMixin.
Canonical AEnd_finGroupType := FinGroupType comp_AEndK.

-Definition kAEnd U V := [set f : 'AEnd(L) | kAut U V f].
-Definition kAEndf U := kAEnd U {:L}.
+Definition kAEnd U V := [set f : 'AEnd(L) | kAut U V f].
+Definition kAEndf U := kAEnd U {:L}.

Lemma kAEnd_group_set K E : group_set (kAEnd K E).
Canonical kAEnd_group K E := group (kAEnd_group_set K E).
-Canonical kAEndf_group K := [group of kAEndf K].
+Canonical kAEndf_group K := [group of kAEndf K].

-Lemma kAEnd_norm K E : kAEnd K E \subset 'N(kAEndf E)%g.
+Lemma kAEnd_norm K E : kAEnd K E \subset 'N(kAEndf E)%g.

-Lemma mem_kAut_coset K E (g : 'AEnd(L)) :
-  kAut K E g g \in coset (kAEndf E) g.
+Lemma mem_kAut_coset K E (g : 'AEnd(L)) :
+  kAut K E g g \in coset (kAEndf E) g.

Lemma aut_mem_eqP E (x y : coset_of (kAEndf E)) f g :
-  f \in x g \in y reflect {in E, f =1 g} (x == y).
+  f \in x g \in y reflect {in E, f =1 g} (x == y).

End AEnd_FinGroup.
@@ -505,8 +504,8 @@ Variables (F : fieldType) (L : splittingFieldType F).

-Implicit Types (U V W : {vspace L}).
-Implicit Types (K M E : {subfield L}).
+Implicit Types (U V W : {vspace L}).
+Implicit Types (K M E : {subfield L}).

@@ -522,7 +521,7 @@ Section gal_of_Definition.

-Variable V : {vspace L}.
+Variable V : {vspace L}.

@@ -532,13 +531,13 @@ the argument of [subg _ ] is syntactically a group.
-Inductive gal_of := Gal of [subg kAEnd_group 1 <<V>> / kAEndf (agenv V)].
-Definition gal (f : 'AEnd(L)) := Gal (subg _ (coset _ f)).
+Inductive gal_of := Gal of [subg kAEnd_group 1 <<V>> / kAEndf (agenv V)].
+Definition gal (f : 'AEnd(L)) := Gal (subg _ (coset _ f)).
Definition gal_sgval x := let: Gal u := x in u.

-Fact gal_sgvalK : cancel gal_sgval Gal.
-Let gal_sgval_inj := can_inj gal_sgvalK.
+Fact gal_sgvalK : cancel gal_sgval Gal.
+Let gal_sgval_inj := can_inj gal_sgvalK.

Definition gal_eqMixin := CanEqMixin gal_sgvalK.
@@ -552,11 +551,11 @@
Definition gal_one := Gal 1%g.
-Definition gal_inv x := Gal (gal_sgval x)^-1.
-Definition gal_mul x y := Gal (gal_sgval x × gal_sgval y).
-Fact gal_oneP : left_id gal_one gal_mul.
- Fact gal_invP : left_inverse gal_one gal_inv gal_mul.
- Fact gal_mulP : associative gal_mul.
+Definition gal_inv x := Gal (gal_sgval x)^-1.
+Definition gal_mul x y := Gal (gal_sgval x × gal_sgval y).
+Fact gal_oneP : left_id gal_one gal_mul.
+ Fact gal_invP : left_inverse gal_one gal_inv gal_mul.
+ Fact gal_mulP : associative gal_mul.

Definition gal_finGroupMixin :=
@@ -566,20 +565,20 @@ Canonical gal_finGroupType := Eval hnf in FinGroupType gal_invP.

-Coercion gal_repr u : 'AEnd(L) := repr (sgval (gal_sgval u)).
+Coercion gal_repr u : 'AEnd(L) := repr (sgval (gal_sgval u)).

-Fact gal_is_morphism : {in kAEnd 1 (agenv V) &, {morph gal : x y / x × y}%g}.
+Fact gal_is_morphism : {in kAEnd 1 (agenv V) &, {morph gal : x y / x × y}%g}.
Canonical gal_morphism := Morphism gal_is_morphism.

-Lemma gal_reprK : cancel gal_repr gal.
+Lemma gal_reprK : cancel gal_repr gal.

-Lemma gal_repr_inj : injective gal_repr.
+Lemma gal_repr_inj : injective gal_repr.

-Lemma gal_AEnd x : gal_repr x \in kAEnd 1 (agenv V).
+Lemma gal_AEnd x : gal_repr x \in kAEnd 1 (agenv V).

End gal_of_Definition.
@@ -587,30 +586,30 @@

-Lemma gal_eqP E {x y : gal_of E} : reflect {in E, x =1 y} (x == y).
+Lemma gal_eqP E {x y : gal_of E} : reflect {in E, x =1 y} (x == y).

-Lemma galK E (f : 'AEnd(L)) : (f @: E E)%VS {in E, gal E f =1 f}.
+Lemma galK E (f : 'AEnd(L)) : (f @: E E)%VS {in E, gal E f =1 f}.

-Lemma eq_galP E (f g : 'AEnd(L)) :
-   (f @: E E)%VS (g @: E E)%VS
-  reflect {in E, f =1 g} (gal E f == gal E g).
+Lemma eq_galP E (f g : 'AEnd(L)) :
+   (f @: E E)%VS (g @: E E)%VS
+  reflect {in E, f =1 g} (gal E f == gal E g).

-Lemma limg_gal E (x : gal_of E) : (x @: E)%VS = E.
+Lemma limg_gal E (x : gal_of E) : (x @: E)%VS = E.

-Lemma memv_gal E (x : gal_of E) a : a \in E x a \in E.
+Lemma memv_gal E (x : gal_of E) a : a \in E x a \in E.

-Lemma gal_id E a : (1 : gal_of E)%g a = a.
+Lemma gal_id E a : (1 : gal_of E)%g a = a.

-Lemma galM E (x y : gal_of E) a : a \in E (x × y)%g a = y (x a).
+Lemma galM E (x y : gal_of E) a : a \in E (x × y)%g a = y (x a).

-Lemma galV E (x : gal_of E) : {in E, (x^-1)%g =1 x^-1%VF}.
+Lemma galV E (x : gal_of E) : {in E, (x^-1)%g =1 x^-1%VF}.

@@ -619,125 +618,125 @@ Standard mathematical notation for 'Gal(E / K) puts the larger field first.
-Definition galoisG V U := gal V @* <<kAEnd (U :&: V) V>>.
-Canonical galoisG_group E U := Eval hnf in [group of (galoisG E U)].
+Definition galoisG V U := gal V @* <<kAEnd (U :&: V) V>>.
+Canonical galoisG_group E U := Eval hnf in [group of (galoisG E U)].

Section Automorphism.

-Lemma gal_cap U V : 'Gal(V / U) = 'Gal(V / U :&: V).
+Lemma gal_cap U V : 'Gal(V / U) = 'Gal(V / U :&: V).

-Lemma gal_kAut K E x : (K E)%VS (x \in 'Gal(E / K)) = kAut K E x.
+Lemma gal_kAut K E x : (K E)%VS (x \in 'Gal(E / K)) = kAut K E x.

-Lemma gal_kHom K E x : (K E)%VS (x \in 'Gal(E / K)) = kHom K E x.
+Lemma gal_kHom K E x : (K E)%VS (x \in 'Gal(E / K)) = kHom K E x.

Lemma kAut_to_gal K E f :
-  kAut K E f {x : gal_of E | x \in 'Gal(E / K) & {in E, f =1 x}}.
+  kAut K E f {x : gal_of E | x \in 'Gal(E / K) & {in E, f =1 x}}.

Lemma fixed_gal K E x a :
-  (K E)%VS x \in 'Gal(E / K) a \in K x a = a.
+  (K E)%VS x \in 'Gal(E / K) a \in K x a = a.

Lemma fixedPoly_gal K E x p :
-  (K E)%VS x \in 'Gal(E / K) p \is a polyOver K map_poly x p = p.
+  (K E)%VS x \in 'Gal(E / K) p \is a polyOver K map_poly x p = p.

Lemma root_minPoly_gal K E x a :
-  (K E)%VS x \in 'Gal(E / K) a \in E root (minPoly K a) (x a).
+  (K E)%VS x \in 'Gal(E / K) a \in E root (minPoly K a) (x a).

End Automorphism.

Lemma gal_adjoin_eq K a x y :
-    x \in 'Gal(<<K; a>> / K) y \in 'Gal(<<K; a>> / K)
-  (x == y) = (x a == y a).
+    x \in 'Gal(<<K; a>> / K) y \in 'Gal(<<K; a>> / K)
+  (x == y) = (x a == y a).

-Lemma galS K M E : (K M)%VS 'Gal(E / M) \subset 'Gal(E / K).
+Lemma galS K M E : (K M)%VS 'Gal(E / M) \subset 'Gal(E / K).

-Lemma gal_conjg K E x : 'Gal(E / K) :^ x = 'Gal(E / x @: K).
+Lemma gal_conjg K E x : 'Gal(E / K) :^ x = 'Gal(E / x @: K).

-Definition fixedField V (A : {set gal_of V}) :=
-  (V :&: \bigcap_(x in A) fixedSpace x)%VS.
+Definition fixedField V (A : {set gal_of V}) :=
+  (V :&: \bigcap_(x in A) fixedSpace x)%VS.

-Lemma fixedFieldP E {A : {set gal_of E}} a :
-  a \in E reflect ( x, x \in A x a = a) (a \in fixedField A).
+Lemma fixedFieldP E {A : {set gal_of E}} a :
+  a \in E reflect ( x, x \in A x a = a) (a \in fixedField A).

-Lemma mem_fixedFieldP E (A : {set gal_of E}) a :
-  a \in fixedField A a \in E ( x, x \in A x a = a).
+Lemma mem_fixedFieldP E (A : {set gal_of E}) a :
+  a \in fixedField A a \in E ( x, x \in A x a = a).

-Fact fixedField_is_aspace E (A : {set gal_of E}) : is_aspace (fixedField A).
-Canonical fixedField_aspace E A : {subfield L} :=
+Fact fixedField_is_aspace E (A : {set gal_of E}) : is_aspace (fixedField A).
+Canonical fixedField_aspace E A : {subfield L} :=
  ASpace (@fixedField_is_aspace E A).

-Lemma fixedField_bound E (A : {set gal_of E}) : (fixedField A E)%VS.
+Lemma fixedField_bound E (A : {set gal_of E}) : (fixedField A E)%VS.

-Lemma fixedFieldS E (A B : {set gal_of E}) :
-   A \subset B (fixedField B fixedField A)%VS.
+Lemma fixedFieldS E (A B : {set gal_of E}) :
+   A \subset B (fixedField B fixedField A)%VS.

Lemma galois_connection_subv K E :
-  (K E)%VS (K fixedField ('Gal(E / K)))%VS.
+  (K E)%VS (K fixedField ('Gal(E / K)))%VS.

-Lemma galois_connection_subset E (A : {set gal_of E}):
-  A \subset 'Gal(E / fixedField A).
+Lemma galois_connection_subset E (A : {set gal_of E}):
+  A \subset 'Gal(E / fixedField A).

-Lemma galois_connection K E (A : {set gal_of E}):
-  (K E)%VS (A \subset 'Gal(E / K)) = (K fixedField A)%VS.
+Lemma galois_connection K E (A : {set gal_of E}):
+  (K E)%VS (A \subset 'Gal(E / K)) = (K fixedField A)%VS.

-Definition galTrace U V a := \sum_(x in 'Gal(V / U)) (x a).
+Definition galTrace U V a := \sum_(x in 'Gal(V / U)) (x a).

-Definition galNorm U V a := \prod_(x in 'Gal(V / U)) (x a).
+Definition galNorm U V a := \prod_(x in 'Gal(V / U)) (x a).

Section TraceAndNormMorphism.

-Variables U V : {vspace L}.
+Variables U V : {vspace L}.

Fact galTrace_is_additive : additive (galTrace U V).
Canonical galTrace_additive := Additive galTrace_is_additive.

-Lemma galNorm1 : galNorm U V 1 = 1.
+Lemma galNorm1 : galNorm U V 1 = 1.

-Lemma galNormM : {morph galNorm U V : a b / a × b}.
+Lemma galNormM : {morph galNorm U V : a b / a × b}.

-Lemma galNormV : {morph galNorm U V : a / a^-1}.
+Lemma galNormV : {morph galNorm U V : a / a^-1}.

-Lemma galNormX n : {morph galNorm U V : a / a ^+ n}.
+Lemma galNormX n : {morph galNorm U V : a / a ^+ n}.

-Lemma galNorm_prod (I : Type) (r : seq I) (P : pred I) (B : I L) :
-  galNorm U V (\prod_(i <- r | P i) B i)
-   = \prod_(i <- r | P i) galNorm U V (B i).
+Lemma galNorm_prod (I : Type) (r : seq I) (P : pred I) (B : I L) :
+  galNorm U V (\prod_(i <- r | P i) B i)
+   = \prod_(i <- r | P i) galNorm U V (B i).

-Lemma galNorm0 : galNorm U V 0 = 0.
+Lemma galNorm0 : galNorm U V 0 = 0.

-Lemma galNorm_eq0 a : (galNorm U V a == 0) = (a == 0).
+Lemma galNorm_eq0 a : (galNorm U V a == 0) = (a == 0).

End TraceAndNormMorphism.
@@ -746,169 +745,169 @@ Section TraceAndNormField.

-Variables K E : {subfield L}.
+Variables K E : {subfield L}.

Lemma galTrace_fixedField a :
-  a \in E galTrace K E a \in fixedField 'Gal(E / K).
+  a \in E galTrace K E a \in fixedField 'Gal(E / K).

Lemma galTrace_gal a x :
-  a \in E x \in 'Gal(E / K) galTrace K E (x a) = galTrace K E a.
+  a \in E x \in 'Gal(E / K) galTrace K E (x a) = galTrace K E a.

Lemma galNorm_fixedField a :
-  a \in E galNorm K E a \in fixedField 'Gal(E / K).
+  a \in E galNorm K E a \in fixedField 'Gal(E / K).

Lemma galNorm_gal a x :
-  a \in E x \in 'Gal(E / K) galNorm K E (x a) = galNorm K E a.
+  a \in E x \in 'Gal(E / K) galNorm K E (x a) = galNorm K E a.

End TraceAndNormField.

-Definition normalField U V := [ x in kAEndf U, x @: V == V]%VS.
+Definition normalField U V := [ x in kAEndf U, x @: V == V]%VS.

Lemma normalField_kAut K M E f :
-  (K M E)%VS normalField K M kAut K E f kAut K M f.
+  (K M E)%VS normalField K M kAut K E f kAut K M f.

Lemma normalFieldP K E :
-  reflect {in E, a, exists2 r,
-            all (mem E) r & minPoly K a = \prod_(b <- r) ('X - b%:P)}
+  reflect {in E, a, exists2 r,
+            all (mem E) r & minPoly K a = \prod_(b <- r) ('X - b%:P)}
          (normalField K E).

-Lemma normalFieldf K : normalField K {:L}.
+Lemma normalFieldf K : normalField K {:L}.

-Lemma normalFieldS K M E : (K M)%VS normalField K E normalField M E.
+Lemma normalFieldS K M E : (K M)%VS normalField K E normalField M E.

Lemma splitting_normalField E K :
-   (K E)%VS
-  reflect (exists2 p, p \is a polyOver K & splittingFieldFor K p E)
+   (K E)%VS
+  reflect (exists2 p, p \is a polyOver K & splittingFieldFor K p E)
          (normalField K E).

Lemma kHom_to_gal K M E f :
-    (K M E)%VS normalField K E kHom K M f
-  {x | x \in 'Gal(E / K) & {in M, f =1 x}}.
+    (K M E)%VS normalField K E kHom K M f
+  {x | x \in 'Gal(E / K) & {in M, f =1 x}}.

Lemma normalField_root_minPoly K E a b :
-    (K E)%VS normalField K E a \in E root (minPoly K a) b
-  exists2 x, x \in 'Gal(E / K) & x a = b.
+    (K E)%VS normalField K E a \in E root (minPoly K a) b
+  exists2 x, x \in 'Gal(E / K) & x a = b.


Lemma normalField_factors K E :
-   (K E)%VS
reflect {in E, a, exists2 r : seq (gal_of E),
-            r \subset 'Gal(E / K)
-          & minPoly K a = \prod_(x <- r) ('X - (x a)%:P)}
+   (K E)%VS
reflect {in E, a, exists2 r : seq (gal_of E),
+            r \subset 'Gal(E / K)
+          & minPoly K a = \prod_(x <- r) ('X - (x a)%:P)}
   (normalField K E).

-Definition galois U V := [&& (U V)%VS, separable U V & normalField U V].
+Definition galois U V := [&& (U V)%VS, separable U V & normalField U V].

-Lemma galoisS K M E : (K M E)%VS galois K E galois M E.
+Lemma galoisS K M E : (K M E)%VS galois K E galois M E.

-Lemma galois_dim K E : galois K E \dim_K E = #|'Gal(E / K)|.
+Lemma galois_dim K E : galois K E \dim_K E = #|'Gal(E / K)|.

Lemma galois_factors K E :
-    (K E)%VS
-  reflect {in E, a, r, let r_a := [seq x a | x : gal_of E <- r] in
-            [/\ r \subset 'Gal(E / K), uniq r_a
-              & minPoly K a = \prod_(b <- r_a) ('X - b%:P)]}
+    (K E)%VS
+  reflect {in E, a, r, let r_a := [seq x a | x : gal_of E <- r] in
+            [/\ r \subset 'Gal(E / K), uniq r_a
+              & minPoly K a = \prod_(b <- r_a) ('X - b%:P)]}
          (galois K E).

Lemma splitting_galoisField K E :
-  reflect ( p, [/\ p \is a polyOver K, separable_poly p
-                       & splittingFieldFor K p E])
+  reflect ( p, [/\ p \is a polyOver K, separable_poly p
+                       & splittingFieldFor K p E])
          (galois K E).

Lemma galois_fixedField K E :
-  reflect (fixedField 'Gal(E / K) = K) (galois K E).
+  reflect (fixedField 'Gal(E / K) = K) (galois K E).

-Lemma mem_galTrace K E a : galois K E a \in E galTrace K E a \in K.
+Lemma mem_galTrace K E a : galois K E a \in E galTrace K E a \in K.

-Lemma mem_galNorm K E a : galois K E a \in E galNorm K E a \in K.
+Lemma mem_galNorm K E a : galois K E a \in E galNorm K E a \in K.

-Lemma gal_independent_contra E (P : pred (gal_of E)) (c_ : gal_of E L) x :
-    P x c_ x != 0
-  exists2 a, a \in E & \sum_(y | P y) c_ y × y a != 0.
+Lemma gal_independent_contra E (P : pred (gal_of E)) (c_ : gal_of E L) x :
+    P x c_ x != 0
+  exists2 a, a \in E & \sum_(y | P y) c_ y × y a != 0.

-Lemma gal_independent E (P : pred (gal_of E)) (c_ : gal_of E L) :
-    ( a, a \in E \sum_(x | P x) c_ x × x a = 0)
-  ( x, P x c_ x = 0).
+Lemma gal_independent E (P : pred (gal_of E)) (c_ : gal_of E L) :
+    ( a, a \in E \sum_(x | P x) c_ x × x a = 0)
+  ( x, P x c_ x = 0).

Lemma Hilbert's_theorem_90 K E x a :
-   generator 'Gal(E / K) x a \in E
reflect (exists2 b, b \in E b != 0 & a = b / x b) (galNorm K E a == 1).
+   generator 'Gal(E / K) x a \in E
reflect (exists2 b, b \in E b != 0 & a = b / x b) (galNorm K E a == 1).

Section Matrix.

-Variable (E : {subfield L}) (A : {set gal_of E}).
+Variable (E : {subfield L}) (A : {set gal_of E}).

Let K := fixedField A.

Lemma gal_matrix :
-  {w : #|A|.-tuple L | {subset w E} 0 \notin w &
-    [/\ \matrix_(i, j < #|A|) enum_val i (tnth w j) \in unitmx,
-        directv (\sum_i K × <[tnth w i]>) &
-        group_set A (\sum_i K × <[tnth w i]>)%VS = E] }.
+  {w : #|A|.-tuple L | {subset w E} 0 \notin w &
+    [/\ \matrix_(i, j < #|A|) enum_val i (tnth w j) \in unitmx,
+        directv (\sum_i K × <[tnth w i]>) &
+        group_set A (\sum_i K × <[tnth w i]>)%VS = E] }.

End Matrix.

-Lemma dim_fixedField E (G : {group gal_of E}) : #|G| = \dim_(fixedField G) E.
+Lemma dim_fixedField E (G : {group gal_of E}) : #|G| = \dim_(fixedField G) E.

-Lemma dim_fixed_galois K E (G : {group gal_of E}) :
-    galois K E G \subset 'Gal(E / K)
-  \dim_K (fixedField G) = #|'Gal(E / K) : G|.
+Lemma dim_fixed_galois K E (G : {group gal_of E}) :
+    galois K E G \subset 'Gal(E / K)
+  \dim_K (fixedField G) = #|'Gal(E / K) : G|.

-Lemma gal_fixedField E (G : {group gal_of E}): 'Gal(E / fixedField G) = G.
+Lemma gal_fixedField E (G : {group gal_of E}): 'Gal(E / fixedField G) = G.

-Lemma gal_generated E (A : {set gal_of E}) : 'Gal(E / fixedField A) = <<A>>.
+Lemma gal_generated E (A : {set gal_of E}) : 'Gal(E / fixedField A) = <<A>>.

-Lemma fixedField_galois E (A : {set gal_of E}): galois (fixedField A) E.
+Lemma fixedField_galois E (A : {set gal_of E}): galois (fixedField A) E.

Section FundamentalTheoremOfGaloisTheory.

-Variables E K : {subfield L}.
+Variables E K : {subfield L}.
Hypothesis galKE : galois K E.

Section IntermediateField.

-Variable M : {subfield L}.
-Hypothesis (sKME : (K M E)%VS) (nKM : normalField K M).
+Variable M : {subfield L}.
+Hypothesis (sKME : (K M E)%VS) (nKM : normalField K M).

Lemma normalField_galois : galois K M.
@@ -918,31 +917,31 @@
Lemma normalField_cast_eq x :
-  x \in 'Gal(E / K) {in M, normalField_cast x =1 x}.
+  x \in 'Gal(E / K) {in M, normalField_cast x =1 x}.

Lemma normalField_castM :
-  {in 'Gal(E / K) &, {morph normalField_cast : x y / (x × y)%g}}.
+  {in 'Gal(E / K) &, {morph normalField_cast : x y / (x × y)%g}}.
Canonical normalField_cast_morphism := Morphism normalField_castM.

-Lemma normalField_ker : 'ker normalField_cast = 'Gal(E / M).
+Lemma normalField_ker : 'ker normalField_cast = 'Gal(E / M).

-Lemma normalField_normal : 'Gal(E / M) <| 'Gal(E / K).
+Lemma normalField_normal : 'Gal(E / M) <| 'Gal(E / K).

-Lemma normalField_img : normalField_cast @* 'Gal(E / K) = 'Gal(M / K).
+Lemma normalField_img : normalField_cast @* 'Gal(E / K) = 'Gal(M / K).

Lemma normalField_isom :
-  {f : {morphism ('Gal(E / K) / 'Gal(E / M)) >-> gal_of M} |
-     isom ('Gal(E / K) / 'Gal (E / M)) 'Gal(M / K) f
-   & ( A, f @* (A / 'Gal(E / M)) = normalField_cast @* A)
-   {in 'Gal(E / K) & M, x, f (coset 'Gal (E / M) x) =1 x} }%g.
+  {f : {morphism ('Gal(E / K) / 'Gal(E / M)) >-> gal_of M} |
+     isom ('Gal(E / K) / 'Gal (E / M)) 'Gal(M / K) f
+   & ( A, f @* (A / 'Gal(E / M)) = normalField_cast @* A)
+   {in 'Gal(E / K) & M, x, f (coset 'Gal (E / M) x) =1 x} }%g.

-Lemma normalField_isog : 'Gal(E / K) / 'Gal(E / M) \isog 'Gal(M / K).
+Lemma normalField_isog : 'Gal(E / K) / 'Gal(E / M) \isog 'Gal(M / K).

End IntermediateField.
@@ -951,8 +950,8 @@ Section IntermediateGroup.

-Variable G : {group gal_of E}.
-Hypothesis nsGgalE : G <| 'Gal(E / K).
+Variable G : {group gal_of E}.
+Hypothesis nsGgalE : G <| 'Gal(E / K).

Lemma normal_fixedField_galois : galois K (fixedField G).
@@ -967,8 +966,10 @@ End GaloisTheory.

-Notation "''Gal' ( V / U )" := (galoisG V U) : group_scope.
-Notation "''Gal' ( V / U )" := (galoisG_group V U) : Group_scope.
+ +
+Notation "''Gal' ( V / U )" := (galoisG V U) : group_scope.
+Notation "''Gal' ( V / U )" := (galoisG_group V U) : Group_scope.

-- cgit v1.2.3