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.algebra.finalg.html | 1303 +++++++++++++++++------------ 1 file changed, 790 insertions(+), 513 deletions(-) (limited to 'docs/htmldoc/mathcomp.algebra.finalg.html') diff --git a/docs/htmldoc/mathcomp.algebra.finalg.html b/docs/htmldoc/mathcomp.algebra.finalg.html index 75808e7..53669ff 100644 --- a/docs/htmldoc/mathcomp.algebra.finalg.html +++ b/docs/htmldoc/mathcomp.algebra.finalg.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.

@@ -75,9 +74,9 @@ Implicits
-Variables (type base_type : Type) (class_of base_of : Type Type).
-Variable to_choice : T, base_of T Choice.class_of T.
-Variable base_sort : base_type Type.
+Variables (type base_type : Type) (class_of base_of : Type Type).
+Variable to_choice : T, base_of T Choice.class_of T.
+Variable base_sort : base_type Type.

@@ -86,15 +85,15 @@ Explicits
-Variable Pack : T, class_of T Type type.
-Variable Class : T b, mixin_of T (to_choice b) class_of T.
+Variable Pack : T, class_of T type.
+Variable Class : T b, mixin_of T (to_choice b) class_of T.
Variable base_class : bT, base_of (base_sort bT).

Definition gen_pack T :=
-  fun bT b & phant_id (base_class bT) b
-  fun fT m & phant_id (Finite.class fT) (Finite.Class m) ⇒
-  Pack (@Class T b m) T.
+  fun bT b & phant_id (base_class bT) b
+  fun fT m & phant_id (Finite.class fT) (Finite.Class m) ⇒
+  Pack (@Class T b m).

End Generic.
@@ -116,28 +115,32 @@   Class { base : GRing.Zmodule.class_of M; mixin : mixin_of M base }.

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.Zmodule.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
- -
-Definition join_finType := @Finite.Pack zmodType (fin_ xclass) xT.
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group zmodType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition zmod_finType := @Finite.Pack zmodType (fin_ xclass).
+Definition zmod_baseFinGroupType := base_group zmodType zmodType finType.
+Definition zmod_finGroupType := fin_group zmod_baseFinGroupType zmodType.
+Definition countZmod_finType := @Finite.Pack countZmodType (fin_ xclass).
+Definition countZmod_baseFinGroupType :=
+  base_group countZmodType zmodType finType.
+Definition countZmod_finGroupType :=
+  fin_group countZmod_baseFinGroupType zmodType.

End ClassDef.
@@ -145,6 +148,7 @@
Module Exports.
Coercion base : class_of >-> GRing.Zmodule.class_of.
+Coercion base2 : class_of >-> CountRing.Zmodule.class_of.
Coercion mixin : class_of >-> mixin_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
@@ -155,24 +159,29 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
-Coercion zmodType : type >-> GRing.Zmodule.type.
-Canonical zmodType.
-Canonical join_finType.
-Notation finZmodType := type.
-Notation "[ 'finZmodType' 'of' T ]" := (do_pack pack T)
-  (at level 0, format "[ 'finZmodType' 'of' T ]") : form_scope.
Coercion baseFinGroupType : type >-> FinGroup.base_type.
Canonical baseFinGroupType.
Coercion finGroupType : type >-> FinGroup.type.
Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
-Notation "[ 'baseFinGroupType' 'of' R 'for' +%R ]" :=
+Coercion zmodType : type >-> GRing.Zmodule.type.
+Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
+Canonical zmod_finType.
+Canonical zmod_baseFinGroupType.
+Canonical zmod_finGroupType.
+Canonical countZmod_finType.
+Canonical countZmod_baseFinGroupType.
+Canonical countZmod_finGroupType.
+Notation finZmodType := type.
+Notation "[ 'finZmodType' 'of' T ]" := (do_pack pack T)
+  (at level 0, format "[ 'finZmodType' 'of' T ]") : form_scope.
+Notation "[ 'baseFinGroupType' 'of' R 'for' +%R ]" :=
    (BaseFinGroupType R (groupMixin _))
  (at level 0, format "[ 'baseFinGroupType' 'of' R 'for' +%R ]")
    : form_scope.
-Notation "[ 'finGroupType' 'of' R 'for' +%R ]" :=
-    (@FinGroup.clone R _ (finGroupType _) id _ id)
+Notation "[ 'finGroupType' 'of' R 'for' +%R ]" :=
+    (@FinGroup.clone R _ (finGroupType _) id _ id)
  (at level 0, format "[ 'finGroupType' 'of' R 'for' +%R ]") : form_scope.
End Exports.
@@ -188,12 +197,12 @@ Implicit Types x y : U.

-Lemma zmod1gE : 1%g = 0 :> U.
-Lemma zmodVgE x : x^-1%g = - x.
-Lemma zmodMgE x y : (x × y)%g = x + y.
-Lemma zmodXgE n x : (x ^+ n)%g = x *+ n.
+Lemma zmod1gE : 1%g = 0 :> U.
+Lemma zmodVgE x : x^-1%g = - x.
+Lemma zmodMgE x y : (x × y)%g = x + y.
+Lemma zmodXgE n x : (x ^+ n)%g = x *+ n.
Lemma zmod_mulgC x y : commute x y.
-Lemma zmod_abelian (A : {set U}) : abelian A.
+Lemma zmod_abelian (A : {set U}) : abelian A.

End AdditiveGroup.
@@ -207,32 +216,39 @@
Record class_of R :=
  Class { base : GRing.Ring.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := Zmodule.Class (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.Ring.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) cT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass cT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition join_finType := @Finite.Pack ringType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack ringType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group ringType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition ring_finType := @Finite.Pack ringType (fin_ xclass).
+Definition ring_baseFinGroupType := base_group ringType zmodType finType.
+Definition ring_finGroupType := fin_group ring_baseFinGroupType zmodType.
+Definition ring_finZmodType := @Zmodule.Pack ringType xclass.
+Definition countRing_finType := @Finite.Pack countRingType (fin_ xclass).
+Definition countRing_baseFinGroupType :=
+  base_group countRingType zmodType finType.
+Definition countRing_finGroupType :=
+  fin_group countRing_baseFinGroupType zmodType.
+Definition countRing_finZmodType := @Zmodule.Pack countRingType xclass.

End ClassDef.
@@ -240,7 +256,8 @@
Module Import Exports.
Coercion base : class_of >-> GRing.Ring.class_of.
-Coercion base2 : class_of >-> Zmodule.class_of.
+Coercion base2 : class_of >-> CountRing.Ring.class_of.
+Coercion base3 : class_of >-> Zmodule.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -250,21 +267,31 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
-Canonical join_finType.
-Canonical join_finZmodType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
+Canonical ring_finType.
+Canonical ring_baseFinGroupType.
+Canonical ring_finGroupType.
+Canonical ring_finZmodType.
+Canonical countRing_finType.
+Canonical countRing_baseFinGroupType.
+Canonical countRing_finGroupType.
+Canonical countRing_finZmodType.
Notation finRingType := type.
-Notation "[ 'finRingType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finRingType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finRingType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -274,21 +301,21 @@ Variable R : finRingType.

-Definition is_inv (x y : R) := (x × y == 1) && (y × x == 1).
-Definition unit := [qualify a x : R | [ y, is_inv x y]].
-Definition inv x := odflt x (pick (is_inv x)).
+Definition is_inv (x y : R) := (x × y == 1) && (y × x == 1).
+Definition unit := [qualify a x : R | [ y, is_inv x y]].
+Definition inv x := odflt x (pick (is_inv x)).

-Lemma mulVr : {in unit, left_inverse 1 inv *%R}.
+Lemma mulVr : {in unit, left_inverse 1 inv *%R}.

-Lemma mulrV : {in unit, right_inverse 1 inv *%R}.
+Lemma mulrV : {in unit, right_inverse 1 inv *%R}.

-Lemma intro_unit x y : y × x = 1 x × y = 1 x \is a unit.
+Lemma intro_unit x y : y × x = 1 x × y = 1 x \is a unit.

-Lemma invr_out : {in [predC unit], inv =1 id}.
+Lemma invr_out : {in [predC unit], inv =1 id}.

Definition UnitMixin := GRing.UnitRing.Mixin mulVr mulrV intro_unit invr_out.
@@ -309,35 +336,44 @@
Record class_of R :=
  Class { base : GRing.ComRing.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := Ring.Class (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.ComRing.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition comRingType := @GRing.ComRing.Pack cT xclass xT.
-Definition join_finType := @Finite.Pack comRingType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack comRingType xclass xT.
-Definition join_finRingType := @Ring.Pack comRingType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition comRingType := @GRing.ComRing.Pack cT xclass.
+Definition countComRingType := @CountRing.ComRing.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group comRingType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition comRing_finType := @Finite.Pack comRingType (fin_ xclass).
+Definition comRing_baseFinGroupType := base_group comRingType zmodType finType.
+Definition comRing_finGroupType := fin_group comRing_baseFinGroupType zmodType.
+Definition comRing_finZmodType := @Zmodule.Pack comRingType xclass.
+Definition comRing_finRingType := @Ring.Pack comRingType xclass.
+Definition countComRing_finType := @Finite.Pack countComRingType (fin_ xclass).
+Definition countComRing_baseFinGroupType :=
+  base_group countComRingType zmodType finType.
+Definition countComRing_finGroupType :=
+  fin_group countComRing_baseFinGroupType zmodType.
+Definition countComRing_finZmodType := @Zmodule.Pack countComRingType xclass.
+Definition countComRing_finRingType := @Ring.Pack countComRingType xclass.

End ClassDef.
@@ -345,7 +381,8 @@
Module Exports.
Coercion base : class_of >-> GRing.ComRing.class_of.
-Coercion base2 : class_of >-> Ring.class_of.
+Coercion base2 : class_of >-> CountRing.ComRing.class_of.
+Coercion base3 : class_of >-> Ring.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -355,26 +392,39 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion comRingType : type >-> GRing.ComRing.type.
Canonical comRingType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finRingType.
+Coercion countComRingType : type >-> CountRing.ComRing.type.
+Canonical countComRingType.
+Canonical comRing_finType.
+Canonical comRing_baseFinGroupType.
+Canonical comRing_finGroupType.
+Canonical comRing_finZmodType.
+Canonical comRing_finRingType.
+Canonical countComRing_finType.
+Canonical countComRing_baseFinGroupType.
+Canonical countComRing_finGroupType.
+Canonical countComRing_finZmodType.
+Canonical countComRing_finRingType.
Notation finComRingType := FinRing.ComRing.type.
-Notation "[ 'finComRingType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finComRingType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finComRingType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -390,37 +440,47 @@
Record class_of R :=
  Class { base : GRing.UnitRing.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := Ring.Class (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.UnitRing.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT.
- -
-Definition join_finType := @Finite.Pack unitRingType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack unitRingType xclass xT.
-Definition join_finRingType := @Ring.Pack unitRingType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition unitRingType := @GRing.UnitRing.Pack cT xclass.
+Definition countUnitRingType := @CountRing.UnitRing.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group unitRingType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition unitRing_finType := @Finite.Pack unitRingType (fin_ xclass).
+Definition unitRing_baseFinGroupType :=
+  base_group unitRingType zmodType finType.
+Definition unitRing_finGroupType :=
+  fin_group unitRing_baseFinGroupType zmodType.
+Definition unitRing_finZmodType := @Zmodule.Pack unitRingType xclass.
+Definition unitRing_finRingType := @Ring.Pack unitRingType xclass.
+Definition countUnitRing_finType :=
+  @Finite.Pack countUnitRingType (fin_ xclass).
+Definition countUnitRing_baseFinGroupType :=
+  base_group countUnitRingType zmodType finType.
+Definition countUnitRing_finGroupType :=
+  fin_group countUnitRing_baseFinGroupType zmodType.
+Definition countUnitRing_finZmodType := @Zmodule.Pack countUnitRingType xclass.
+Definition countUnitRing_finRingType := @Ring.Pack countUnitRingType xclass.

End ClassDef.
@@ -428,7 +488,8 @@
Module Exports.
Coercion base : class_of >-> GRing.UnitRing.class_of.
-Coercion base2 : class_of >-> Ring.class_of.
+Coercion base2 : class_of >-> CountRing.UnitRing.class_of.
+Coercion base3 : class_of >-> Ring.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -438,26 +499,39 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion unitRingType : type >-> GRing.UnitRing.type.
Canonical unitRingType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finRingType.
+Coercion countUnitRingType : type >-> CountRing.UnitRing.type.
+Canonical countUnitRingType.
+Canonical unitRing_finType.
+Canonical unitRing_baseFinGroupType.
+Canonical unitRing_finGroupType.
+Canonical unitRing_finZmodType.
+Canonical unitRing_finRingType.
+Canonical countUnitRing_finType.
+Canonical countUnitRing_baseFinGroupType.
+Canonical countUnitRing_finGroupType.
+Canonical countUnitRing_finZmodType.
+Canonical countUnitRing_finRingType.
Notation finUnitRingType := FinRing.UnitRing.type.
-Notation "[ 'finUnitRingType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finUnitRingType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finUnitRingType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -471,35 +545,35 @@ Variable R : finUnitRingType.

-Inductive unit_of (phR : phant R) := Unit (x : R) of x \is a GRing.unit.
+Inductive unit_of (phR : phant R) := Unit (x : R) of x \is a GRing.unit.

-Let phR := Phant R.
+Let phR := Phant R.
Implicit Types u v : uT.
Definition uval u := let: Unit x _ := u in x.

-Canonical unit_subType := [subType for uval].
-Definition unit_eqMixin := Eval hnf in [eqMixin of uT by <:].
+Canonical unit_subType := [subType for uval].
+Definition unit_eqMixin := Eval hnf in [eqMixin of uT by <:].
Canonical unit_eqType := Eval hnf in EqType uT unit_eqMixin.
-Definition unit_choiceMixin := [choiceMixin of uT by <:].
+Definition unit_choiceMixin := [choiceMixin of uT by <:].
Canonical unit_choiceType := Eval hnf in ChoiceType uT unit_choiceMixin.
-Definition unit_countMixin := [countMixin of uT by <:].
+Definition unit_countMixin := [countMixin of uT by <:].
Canonical unit_countType := Eval hnf in CountType uT unit_countMixin.
-Canonical unit_subCountType := Eval hnf in [subCountType of uT].
-Definition unit_finMixin := [finMixin of uT by <:].
+Canonical unit_subCountType := Eval hnf in [subCountType of uT].
+Definition unit_finMixin := [finMixin of uT by <:].
Canonical unit_finType := Eval hnf in FinType uT unit_finMixin.
-Canonical unit_subFinType := Eval hnf in [subFinType of uT].
+Canonical unit_subFinType := Eval hnf in [subFinType of uT].

Definition unit1 := Unit phR (@GRing.unitr1 _).
-Lemma unit_inv_proof u : (val u)^-1 \is a GRing.unit.
+Lemma unit_inv_proof u : (val u)^-1 \is a GRing.unit.
Definition unit_inv u := Unit phR (unit_inv_proof u).
-Lemma unit_mul_proof u v : val u × val v \is a GRing.unit.
+Lemma unit_mul_proof u v : val u × val v \is a GRing.unit.
Definition unit_mul u v := Unit phR (unit_mul_proof u v).
-Lemma unit_muluA : associative unit_mul.
- Lemma unit_mul1u : left_id unit1 unit_mul.
- Lemma unit_mulVu : left_inverse unit1 unit_inv unit_mul.
+Lemma unit_muluA : associative unit_mul.
+ Lemma unit_mul1u : left_id unit1 unit_mul.
+ Lemma unit_mulVu : left_inverse unit1 unit_inv unit_mul.

Definition unit_GroupMixin := FinGroup.Mixin unit_muluA unit_mul1u unit_mulVu.
@@ -508,14 +582,14 @@ Canonical unit_finGroupType := Eval hnf in FinGroupType unit_mulVu.

-Lemma val_unit1 : val (1%g : uT) = 1.
-Lemma val_unitM x y : val (x × y : uT)%g = val x × val y.
-Lemma val_unitV x : val (x^-1 : uT)%g = (val x)^-1.
-Lemma val_unitX n x : val (x ^+ n : uT)%g = val x ^+ n.
+Lemma val_unit1 : val (1%g : uT) = 1.
+Lemma val_unitM x y : val (x × y : uT)%g = val x × val y.
+Lemma val_unitV x : val (x^-1 : uT)%g = (val x)^-1.
+Lemma val_unitX n x : val (x ^+ n : uT)%g = val x ^+ n.

-Definition unit_act x u := x × val u.
-Lemma unit_actE x u : unit_act x u = x × val u.
+Definition unit_act x u := x × val u.
+Lemma unit_actE x u : unit_act x u = x × val u.

Canonical unit_action :=
@@ -542,7 +616,7 @@ End UnitsGroupExports.

-Notation unit R Ux := (Unit (Phant R) Ux).
+Notation unit R Ux := (Unit (Phant R) Ux).

Module ComUnitRing.
@@ -553,47 +627,68 @@
Record class_of R :=
  Class { base : GRing.ComUnitRing.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := ComRing.Class (mixin c).
-Definition base3 R (c : class_of R) := @UnitRing.Class R (base c) (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.ComUnitRing.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition comRingType := @GRing.ComRing.Pack cT xclass xT.
-Definition finComRingType := @ComRing.Pack cT xclass xT.
-Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT.
-Definition finUnitRingType := @UnitRing.Pack cT xclass xT.
-Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass xT.
- -
-Definition join_finType := @Finite.Pack comUnitRingType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack comUnitRingType xclass xT.
-Definition join_finRingType := @Ring.Pack comUnitRingType xclass xT.
-Definition join_finComRingType := @ComRing.Pack comUnitRingType xclass xT.
-Definition join_finUnitRingType := @UnitRing.Pack comUnitRingType xclass xT.
-Definition ujoin_finComRingType := @ComRing.Pack unitRingType xclass xT.
-Definition cjoin_finUnitRingType := @UnitRing.Pack comRingType xclass xT.
-Definition fcjoin_finUnitRingType := @UnitRing.Pack finComRingType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition comRingType := @GRing.ComRing.Pack cT xclass.
+Definition countComRingType := @CountRing.ComRing.Pack cT xclass.
+Definition finComRingType := @ComRing.Pack cT xclass.
+Definition unitRingType := @GRing.UnitRing.Pack cT xclass.
+Definition countUnitRingType := @CountRing.UnitRing.Pack cT xclass.
+Definition finUnitRingType := @UnitRing.Pack cT xclass.
+Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.
+Definition countComUnitRingType := @CountRing.ComUnitRing.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group comUnitRingType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition comUnitRing_finType := @Finite.Pack comUnitRingType (fin_ xclass).
+Definition comUnitRing_baseFinGroupType :=
+  base_group comUnitRingType zmodType finType.
+Definition comUnitRing_finGroupType :=
+  fin_group comUnitRing_baseFinGroupType zmodType.
+Definition comUnitRing_finZmodType := @Zmodule.Pack comUnitRingType xclass.
+Definition comUnitRing_finRingType := @Ring.Pack comUnitRingType xclass.
+Definition comUnitRing_finComRingType := @ComRing.Pack comUnitRingType xclass.
+Definition comUnitRing_finUnitRingType := @UnitRing.Pack comUnitRingType xclass.
+Definition countComUnitRing_finType :=
+  @Finite.Pack countComUnitRingType (fin_ xclass).
+Definition countComUnitRing_baseFinGroupType :=
+  base_group countComUnitRingType zmodType finType.
+Definition countComUnitRing_finGroupType :=
+  fin_group countComUnitRing_baseFinGroupType zmodType.
+Definition countComUnitRing_finZmodType :=
+  @Zmodule.Pack countComUnitRingType xclass.
+Definition countComUnitRing_finRingType :=
+  @Ring.Pack countComUnitRingType xclass.
+Definition countComUnitRing_finComRingType :=
+  @ComRing.Pack countComUnitRingType xclass.
+Definition countComUnitRing_finUnitRingType :=
+  @UnitRing.Pack countComUnitRingType xclass.
+Definition unitRing_finComRingType := @ComRing.Pack unitRingType xclass.
+Definition countUnitRing_finComRingType :=
+  @ComRing.Pack countUnitRingType xclass.
+Definition comRing_finUnitRingType := @UnitRing.Pack comRingType xclass.
+Definition countComRing_finUnitRingType :=
+  @UnitRing.Pack countComRingType xclass.
+Definition finComRing_finUnitRingType := @UnitRing.Pack finComRingType xclass.

End ClassDef.
@@ -601,8 +696,9 @@
Module Exports.
Coercion base : class_of >-> GRing.ComUnitRing.class_of.
-Coercion base2 : class_of >-> ComRing.class_of.
-Coercion base3 : class_of >-> UnitRing.class_of.
+Coercion base2 : class_of >-> CountRing.ComUnitRing.class_of.
+Coercion base3 : class_of >-> ComRing.class_of.
+Coercion base4 : class_of >-> UnitRing.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -612,39 +708,60 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion comRingType : type >-> GRing.ComRing.type.
Canonical comRingType.
+Coercion countComRingType : type >-> CountRing.ComRing.type.
+Canonical countComRingType.
Coercion finComRingType : type >-> ComRing.type.
Canonical finComRingType.
Coercion unitRingType : type >-> GRing.UnitRing.type.
Canonical unitRingType.
+Coercion countUnitRingType : type >-> CountRing.UnitRing.type.
+Canonical countUnitRingType.
Coercion finUnitRingType : type >-> UnitRing.type.
Canonical finUnitRingType.
Coercion comUnitRingType : type >-> GRing.ComUnitRing.type.
Canonical comUnitRingType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finRingType.
-Canonical join_finComRingType.
-Canonical join_finUnitRingType.
-Canonical ujoin_finComRingType.
-Canonical cjoin_finUnitRingType.
-Canonical fcjoin_finUnitRingType.
+Coercion countComUnitRingType : type >-> CountRing.ComUnitRing.type.
+Canonical countComUnitRingType.
+Canonical comUnitRing_finType.
+Canonical comUnitRing_baseFinGroupType.
+Canonical comUnitRing_finGroupType.
+Canonical comUnitRing_finZmodType.
+Canonical comUnitRing_finRingType.
+Canonical comUnitRing_finComRingType.
+Canonical comUnitRing_finUnitRingType.
+Canonical countComUnitRing_finType.
+Canonical countComUnitRing_baseFinGroupType.
+Canonical countComUnitRing_finGroupType.
+Canonical countComUnitRing_finZmodType.
+Canonical countComUnitRing_finRingType.
+Canonical countComUnitRing_finComRingType.
+Canonical countComUnitRing_finUnitRingType.
+Canonical unitRing_finComRingType.
+Canonical countUnitRing_finComRingType.
+Canonical comRing_finUnitRingType.
+Canonical countComRing_finUnitRingType.
+Canonical finComRing_finUnitRingType.
Notation finComUnitRingType := FinRing.ComUnitRing.type.
-Notation "[ 'finComUnitRingType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finComUnitRingType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finComUnitRingType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -660,46 +777,61 @@
Record class_of R :=
  Class { base : GRing.IntegralDomain.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := ComUnitRing.Class (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.IntegralDomain.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition comRingType := @GRing.ComRing.Pack cT xclass xT.
-Definition finComRingType := @ComRing.Pack cT xclass xT.
-Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT.
-Definition finUnitRingType := @UnitRing.Pack cT xclass xT.
-Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass xT.
-Definition finComUnitRingType := @ComUnitRing.Pack cT xclass xT.
-Definition idomainType := @GRing.IntegralDomain.Pack cT xclass xT.
- -
-Definition join_finType := @Finite.Pack idomainType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack idomainType xclass xT.
-Definition join_finRingType := @Ring.Pack idomainType xclass xT.
-Definition join_finUnitRingType := @UnitRing.Pack idomainType xclass xT.
-Definition join_finComRingType := @ComRing.Pack idomainType xclass xT.
-Definition join_finComUnitRingType := @ComUnitRing.Pack idomainType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition comRingType := @GRing.ComRing.Pack cT xclass.
+Definition countComRingType := @CountRing.ComRing.Pack cT xclass.
+Definition finComRingType := @ComRing.Pack cT xclass.
+Definition unitRingType := @GRing.UnitRing.Pack cT xclass.
+Definition countUnitRingType := @CountRing.UnitRing.Pack cT xclass.
+Definition finUnitRingType := @UnitRing.Pack cT xclass.
+Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.
+Definition countComUnitRingType := @CountRing.ComUnitRing.Pack cT xclass.
+Definition finComUnitRingType := @ComUnitRing.Pack cT xclass.
+Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.
+Definition countIdomainType := @CountRing.IntegralDomain.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group idomainType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition idomain_finType := @Finite.Pack idomainType (fin_ xclass).
+Definition idomain_baseFinGroupType := base_group idomainType zmodType finType.
+Definition idomain_finGroupType := fin_group idomain_baseFinGroupType zmodType.
+Definition idomain_finZmodType := @Zmodule.Pack idomainType xclass.
+Definition idomain_finRingType := @Ring.Pack idomainType xclass.
+Definition idomain_finUnitRingType := @UnitRing.Pack idomainType xclass.
+Definition idomain_finComRingType := @ComRing.Pack idomainType xclass.
+Definition idomain_finComUnitRingType := @ComUnitRing.Pack idomainType xclass.
+Definition countIdomain_finType := @Finite.Pack countIdomainType (fin_ xclass).
+Definition countIdomain_baseFinGroupType :=
+  base_group countIdomainType zmodType finType.
+Definition countIdomain_finGroupType :=
+  fin_group countIdomain_baseFinGroupType zmodType.
+Definition countIdomain_finZmodType := @Zmodule.Pack countIdomainType xclass.
+Definition countIdomain_finRingType := @Ring.Pack countIdomainType xclass.
+Definition countIdomain_finUnitRingType :=
+  @UnitRing.Pack countIdomainType xclass.
+Definition countIdomain_finComRingType := @ComRing.Pack countIdomainType xclass.
+Definition countIdomain_finComUnitRingType :=
+  @ComUnitRing.Pack countIdomainType xclass.

End ClassDef.
@@ -707,7 +839,8 @@
Module Exports.
Coercion base : class_of >-> GRing.IntegralDomain.class_of.
-Coercion base2 : class_of >-> ComUnitRing.class_of.
+Coercion base2 : class_of >-> CountRing.IntegralDomain.class_of.
+Coercion base3 : class_of >-> ComUnitRing.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -717,41 +850,63 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion comRingType : type >-> GRing.ComRing.type.
Canonical comRingType.
+Coercion countComRingType : type >-> CountRing.ComRing.type.
+Canonical countComRingType.
Coercion finComRingType : type >-> ComRing.type.
Canonical finComRingType.
Coercion unitRingType : type >-> GRing.UnitRing.type.
Canonical unitRingType.
+Coercion countUnitRingType : type >-> CountRing.UnitRing.type.
+Canonical countUnitRingType.
Coercion finUnitRingType : type >-> UnitRing.type.
Canonical finUnitRingType.
Coercion comUnitRingType : type >-> GRing.ComUnitRing.type.
Canonical comUnitRingType.
+Coercion countComUnitRingType : type >-> CountRing.ComUnitRing.type.
+Canonical countComUnitRingType.
Coercion finComUnitRingType : type >-> ComUnitRing.type.
Canonical finComUnitRingType.
Coercion idomainType : type >-> GRing.IntegralDomain.type.
Canonical idomainType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finRingType.
-Canonical join_finComRingType.
-Canonical join_finUnitRingType.
-Canonical join_finComUnitRingType.
+Coercion countIdomainType : type >-> CountRing.IntegralDomain.type.
+Canonical countIdomainType.
+Canonical idomain_finType.
+Canonical idomain_baseFinGroupType.
+Canonical idomain_finGroupType.
+Canonical idomain_finZmodType.
+Canonical idomain_finRingType.
+Canonical idomain_finUnitRingType.
+Canonical idomain_finComRingType.
+Canonical idomain_finComUnitRingType.
+Canonical countIdomain_finType.
+Canonical countIdomain_baseFinGroupType.
+Canonical countIdomain_finGroupType.
+Canonical countIdomain_finZmodType.
+Canonical countIdomain_finRingType.
+Canonical countIdomain_finUnitRingType.
+Canonical countIdomain_finComRingType.
+Canonical countIdomain_finComUnitRingType.
Notation finIdomainType := FinRing.IntegralDomain.type.
-Notation "[ 'finIdomainType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finIdomainType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finIdomainType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -767,49 +922,66 @@
Record class_of R :=
  Class { base : GRing.Field.class_of R; mixin : mixin_of R base }.
-Definition base2 R (c : class_of R) := IntegralDomain.Class (mixin c).

-Structure type := Pack {sort; _ : class_of sort; _ : Type}.
+Structure type := Pack {sort; _ : class_of sort}.
Definition pack := gen_pack Pack Class GRing.Field.class.
Variable cT : type.
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition comRingType := @GRing.ComRing.Pack cT xclass xT.
-Definition finComRingType := @ComRing.Pack cT xclass xT.
-Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT.
-Definition finUnitRingType := @UnitRing.Pack cT xclass xT.
-Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass xT.
-Definition finComUnitRingType := @ComUnitRing.Pack cT xclass xT.
-Definition idomainType := @GRing.IntegralDomain.Pack cT xclass xT.
-Definition finIdomainType := @IntegralDomain.Pack cT xclass xT.
-Definition fieldType := @GRing.Field.Pack cT xclass xT.
- -
-Definition join_finType := @Finite.Pack fieldType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack fieldType xclass xT.
-Definition join_finRingType := @Ring.Pack fieldType xclass xT.
-Definition join_finUnitRingType := @UnitRing.Pack fieldType xclass xT.
-Definition join_finComRingType := @ComRing.Pack fieldType xclass xT.
-Definition join_finComUnitRingType := @ComUnitRing.Pack fieldType xclass xT.
-Definition join_finIdomainType := @IntegralDomain.Pack fieldType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition comRingType := @GRing.ComRing.Pack cT xclass.
+Definition countComRingType := @CountRing.ComRing.Pack cT xclass.
+Definition finComRingType := @ComRing.Pack cT xclass.
+Definition unitRingType := @GRing.UnitRing.Pack cT xclass.
+Definition countUnitRingType := @CountRing.UnitRing.Pack cT xclass.
+Definition finUnitRingType := @UnitRing.Pack cT xclass.
+Definition comUnitRingType := @GRing.ComUnitRing.Pack cT xclass.
+Definition countComUnitRingType := @CountRing.ComUnitRing.Pack cT xclass.
+Definition finComUnitRingType := @ComUnitRing.Pack cT xclass.
+Definition idomainType := @GRing.IntegralDomain.Pack cT xclass.
+Definition countIdomainType := @CountRing.IntegralDomain.Pack cT xclass.
+Definition finIdomainType := @IntegralDomain.Pack cT xclass.
+Definition fieldType := @GRing.Field.Pack cT xclass.
+Definition countFieldType := @CountRing.Field.Pack cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group fieldType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition field_finType := @Finite.Pack fieldType (fin_ xclass).
+Definition field_baseFinGroupType := base_group fieldType zmodType finType.
+Definition field_finGroupType := fin_group field_baseFinGroupType zmodType.
+Definition field_finZmodType := @Zmodule.Pack fieldType xclass.
+Definition field_finRingType := @Ring.Pack fieldType xclass.
+Definition field_finUnitRingType := @UnitRing.Pack fieldType xclass.
+Definition field_finComRingType := @ComRing.Pack fieldType xclass.
+Definition field_finComUnitRingType := @ComUnitRing.Pack fieldType xclass.
+Definition field_finIdomainType := @IntegralDomain.Pack fieldType xclass.
+Definition countField_finType := @Finite.Pack countFieldType (fin_ xclass).
+Definition countField_baseFinGroupType :=
+  base_group countFieldType zmodType finType.
+Definition countField_finGroupType :=
+  fin_group countField_baseFinGroupType zmodType.
+Definition countField_finZmodType := @Zmodule.Pack countFieldType xclass.
+Definition countField_finRingType := @Ring.Pack countFieldType xclass.
+Definition countField_finUnitRingType := @UnitRing.Pack countFieldType xclass.
+Definition countField_finComRingType := @ComRing.Pack countFieldType xclass.
+Definition countField_finComUnitRingType :=
+  @ComUnitRing.Pack countFieldType xclass.
+Definition countField_finIdomainType :=
+  @IntegralDomain.Pack countFieldType xclass.

End ClassDef.
@@ -817,7 +989,8 @@
Module Exports.
Coercion base : class_of >-> GRing.Field.class_of.
-Coercion base2 : class_of >-> IntegralDomain.class_of.
+Coercion base2 : class_of >-> CountRing.Field.class_of.
+Coercion base3 : class_of >-> IntegralDomain.class_of.
Coercion sort : type >-> Sortclass.
Coercion eqType : type >-> Equality.type.
Canonical eqType.
@@ -827,46 +1000,71 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion comRingType : type >-> GRing.ComRing.type.
Canonical comRingType.
+Coercion countComRingType : type >-> CountRing.ComRing.type.
+Canonical countComRingType.
Coercion finComRingType : type >-> ComRing.type.
Canonical finComRingType.
Coercion unitRingType : type >-> GRing.UnitRing.type.
Canonical unitRingType.
+Coercion countUnitRingType : type >-> CountRing.UnitRing.type.
+Canonical countUnitRingType.
Coercion finUnitRingType : type >-> UnitRing.type.
Canonical finUnitRingType.
Coercion comUnitRingType : type >-> GRing.ComUnitRing.type.
Canonical comUnitRingType.
+Coercion countComUnitRingType : type >-> CountRing.ComUnitRing.type.
+Canonical countComUnitRingType.
Coercion finComUnitRingType : type >-> ComUnitRing.type.
Canonical finComUnitRingType.
Coercion idomainType : type >-> GRing.IntegralDomain.type.
Canonical idomainType.
+Coercion countIdomainType : type >-> CountRing.IntegralDomain.type.
+Canonical countIdomainType.
Coercion finIdomainType : type >-> IntegralDomain.type.
Canonical finIdomainType.
Coercion fieldType : type >-> GRing.Field.type.
Canonical fieldType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finRingType.
-Canonical join_finComRingType.
-Canonical join_finUnitRingType.
-Canonical join_finComUnitRingType.
-Canonical join_finIdomainType.
+Coercion countFieldType : type >-> CountRing.Field.type.
+Canonical countFieldType.
+Canonical field_finType.
+Canonical field_baseFinGroupType.
+Canonical field_finGroupType.
+Canonical field_finZmodType.
+Canonical field_finRingType.
+Canonical field_finUnitRingType.
+Canonical field_finComRingType.
+Canonical field_finComUnitRingType.
+Canonical field_finIdomainType.
+Canonical countField_finType.
+Canonical countField_baseFinGroupType.
+Canonical countField_finGroupType.
+Canonical countField_finZmodType.
+Canonical countField_finRingType.
+Canonical countField_finUnitRingType.
+Canonical countField_finComRingType.
+Canonical countField_finComUnitRingType.
+Canonical countField_finIdomainType.
Notation finFieldType := FinRing.Field.type.
-Notation "[ 'finFieldType' 'of' T ]" := (do_pack pack T)
+Notation "[ 'finFieldType' 'of' T ]" := (do_pack pack T)
  (at level 0, format "[ 'finFieldType' 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -883,14 +1081,14 @@ Fixpoint sat e f :=
  match f with
  | GRing.Bool bb
-  | t1 == t2 ⇒ (GRing.eval e t1 == GRing.eval e t2)%bool
-  | GRing.Unit tGRing.eval e t \is a GRing.unit
-  | f1 f2sat e f1 && sat e f2
-  | f1 f2sat e f1 || sat e f2
-  | f1 ==> f2 ⇒ (sat e f1 ==> sat e f2)%bool
-  | ¬ f1~~ sat e f1
-  | (' 'X_k, f1) ⇒ [ x : F, sat (set_nth 0%R e k x) f1]
-  | (' 'X_k, f1) ⇒ [ x : F, sat (set_nth 0%R e k x) f1]
+  | t1 == t2 ⇒ (GRing.eval e t1 == GRing.eval e t2)%bool
+  | GRing.Unit tGRing.eval e t \is a GRing.unit
+  | f1 f2sat e f1 && sat e f2
+  | f1 f2sat e f1 || sat e f2
+  | f1 ==> f2 ⇒ (sat e f1 ==> sat e f2)%bool
+  | ¬ f1~~ sat e f1
+  | (' 'X_k, f1) ⇒ [ x : F, sat (set_nth 0%R e k x) f1]
+  | (' 'X_k, f1) ⇒ [ x : F, sat (set_nth 0%R e k x) f1]
  end%T.

@@ -910,18 +1108,18 @@
Variable cT : Field.type.
-Let xT := let: Field.Pack T _ _ := cT in T.
+Let xT := let: Field.Pack T _ := cT in T.
Let xclass : Field.class_of xT := Field.class cT.

Definition type := Eval hnf in DecFieldType cT (DecidableFieldMixin cT).
-Definition finType := @Finite.Pack type (fin_ xclass) xT.
-Definition finZmodType := @Zmodule.Pack type xclass xT.
-Definition finRingType := @Ring.Pack type xclass xT.
-Definition finUnitRingType := @UnitRing.Pack type xclass xT.
-Definition finComRingType := @ComRing.Pack type xclass xT.
-Definition finComUnitRingType := @ComUnitRing.Pack type xclass xT.
-Definition finIdomainType := @IntegralDomain.Pack type xclass xT.
+Definition finType := @Finite.Pack type (fin_ xclass).
+Definition finZmodType := @Zmodule.Pack type xclass.
+Definition finRingType := @Ring.Pack type xclass.
+Definition finUnitRingType := @UnitRing.Pack type xclass.
+Definition finComRingType := @ComRing.Pack type xclass.
+Definition finComUnitRingType := @ComUnitRing.Pack type xclass.
+Definition finIdomainType := @IntegralDomain.Pack type xclass.
Definition baseFinGroupType := base_group type finZmodType finZmodType.
Definition finGroupType := fin_group baseFinGroupType cT.
@@ -941,6 +1139,8 @@ Canonical finIdomainType.
Canonical baseFinGroupType.
Canonical finGroupType.
+ +
End Exports.

@@ -958,32 +1158,34 @@
Record class_of M :=
  Class { base : GRing.Lmodule.class_of R M; mixin : mixin_of M base }.
-Definition base2 R (c : class_of R) := Zmodule.Class (mixin c).

-Structure type (phR : phant R) := Pack {sort; _ : class_of sort; _ : Type}.
-Variables (phR : phant R) (cT : type phR).
-Definition class := let: Pack _ c _ as cT' := cT return class_of cT' in c.
+Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.
+Variables (phR : phant R) (cT : type phR).
+Definition class := let: Pack _ c as cT' := cT return class_of cT' in c.
Definition pack := gen_pack (Pack phR) Class (@GRing.Lmodule.class R phR).
-Let xT := let: Pack T _ _ := cT in T.
-Notation xclass := (class : class_of xT).
- -
-Definition eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT.
-Definition join_finType := @Finite.Pack lmodType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack lmodType xclass xT.
- -
+Let xT := let: Pack T _ := cT in T.
+Notation xclass := (class : class_of xT).
+ +
+Definition eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group lmodType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition lmod_countType := @Countable.Pack lmodType (fin_ xclass).
+Definition lmod_finType := @Finite.Pack lmodType (fin_ xclass).
+Definition lmod_baseFinGroupType := base_group lmodType zmodType finType.
+Definition lmod_finGroupType := fin_group lmod_baseFinGroupType zmodType.
+Definition lmod_countZmodType := @CountRing.Zmodule.Pack lmodType xclass.
+Definition lmod_finZmodType := @Zmodule.Pack lmodType xclass.

End ClassDef.
@@ -1001,21 +1203,27 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion lmodType : type >-> GRing.Lmodule.type.
Canonical lmodType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Notation finLmodType R := (FinRing.Lmodule.type (Phant R)).
-Notation "[ 'finLmodType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
+Canonical lmod_countType.
+Canonical lmod_finType.
+Canonical lmod_baseFinGroupType.
+Canonical lmod_finGroupType.
+Canonical lmod_countZmodType.
+Canonical lmod_finZmodType.
+Notation finLmodType R := (FinRing.Lmodule.type (Phant R)).
+Notation "[ 'finLmodType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
  (at level 0, format "[ 'finLmodType' R 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -1038,40 +1246,45 @@ Definition base3 M (c : class_of M) := @Lmodule.Class _ _ (base c) (mixin c).

-Structure type (phR : phant R) := Pack {sort; _ : class_of sort; _ : Type}.
-Variables (phR : phant R) (cT : type phR).
+Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.
+Variables (phR : phant R) (cT : type phR).
Definition pack := gen_pack (Pack phR) Class (@GRing.Lalgebra.class R phR).
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT.
-Definition finLmodType := @Lmodule.Pack R phR cT xclass xT.
-Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass xT.
- -
-Definition join_finType := @Finite.Pack lalgType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack lalgType xclass xT.
-Definition join_finLmodType := @Lmodule.Pack R phR lalgType xclass xT.
-Definition join_finRingType := @Ring.Pack lalgType xclass xT.
-Definition rjoin_finLmodType := @Lmodule.Pack R phR ringType xclass xT.
-Definition ljoin_finRingType := @Ring.Pack lmodType xclass xT.
-Definition fljoin_finRingType := @Ring.Pack finLmodType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass.
+Definition finLmodType := @Lmodule.Pack R phR cT xclass.
+Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group lalgType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition lalg_countType := @Countable.Pack lalgType (fin_ xclass).
+Definition lalg_finType := @Finite.Pack lalgType (fin_ xclass).
+Definition lalg_baseFinGroupType := base_group lalgType zmodType finType.
+Definition lalg_finGroupType := fin_group lalg_baseFinGroupType zmodType.
+Definition lalg_countZmodType := @CountRing.Zmodule.Pack lalgType xclass.
+Definition lalg_finZmodType := @Zmodule.Pack lalgType xclass.
+Definition lalg_finLmodType := @Lmodule.Pack R phR lalgType xclass.
+Definition lalg_countRingType := @CountRing.Ring.Pack lalgType xclass.
+Definition lalg_finRingType := @Ring.Pack lalgType xclass.
+Definition lmod_countRingType := @CountRing.Ring.Pack lmodType xclass.
+Definition lmod_finRingType := @Ring.Pack lmodType xclass.
+Definition finLmod_ringType := @GRing.Ring.Pack finLmodType xclass.
+Definition finLmod_countRingType := @CountRing.Ring.Pack finLmodType xclass.
+Definition finLmod_finRingType := @Ring.Pack finLmodType xclass.

End ClassDef.
@@ -1090,12 +1303,20 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion lmodType : type >-> GRing.Lmodule.type.
@@ -1104,20 +1325,23 @@ Canonical finLmodType.
Coercion lalgType : type >-> GRing.Lalgebra.type.
Canonical lalgType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finLmodType.
-Canonical join_finRingType.
-Canonical rjoin_finLmodType.
-Canonical ljoin_finRingType.
-Canonical fljoin_finRingType.
-Notation finLalgType R := (FinRing.Lalgebra.type (Phant R)).
-Notation "[ 'finLalgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
+Canonical lalg_countType.
+Canonical lalg_finType.
+Canonical lalg_baseFinGroupType.
+Canonical lalg_finGroupType.
+Canonical lalg_countZmodType.
+Canonical lalg_finZmodType.
+Canonical lalg_finLmodType.
+Canonical lalg_countRingType.
+Canonical lalg_finRingType.
+Canonical lmod_countRingType.
+Canonical lmod_finRingType.
+Canonical finLmod_ringType.
+Canonical finLmod_countRingType.
+Canonical finLmod_finRingType.
+Notation finLalgType R := (FinRing.Lalgebra.type (Phant R)).
+Notation "[ 'finLalgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
  (at level 0, format "[ 'finLalgType' R 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -1139,40 +1363,43 @@ Definition base2 M (c : class_of M) := Lalgebra.Class (mixin c).

-Structure type (phR : phant R) := Pack {sort; _ : class_of sort; _ : Type}.
-Variables (phR : phant R) (cT : type phR).
+Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.
+Variables (phR : phant R) (cT : type phR).
Definition pack := gen_pack (Pack phR) Class (@GRing.Algebra.class R phR).
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT.
-Definition finLmodType := @Lmodule.Pack R phR cT xclass xT.
-Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass xT.
-Definition finLalgType := @Lalgebra.Pack R phR cT xclass xT.
-Definition algType := @GRing.Algebra.Pack R phR cT xclass xT.
- -
-Definition join_finType := @Finite.Pack algType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack algType xclass xT.
-Definition join_finRingType := @Ring.Pack algType xclass xT.
-Definition join_finLmodType := @Lmodule.Pack R phR algType xclass xT.
-Definition join_finLalgType := @Lalgebra.Pack R phR algType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass.
+Definition finLmodType := @Lmodule.Pack R phR cT xclass.
+Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass.
+Definition finLalgType := @Lalgebra.Pack R phR cT xclass.
+Definition algType := @GRing.Algebra.Pack R phR cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group algType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition alg_countType := @Countable.Pack algType (fin_ xclass).
+Definition alg_finType := @Finite.Pack algType (fin_ xclass).
+Definition alg_baseFinGroupType := base_group algType zmodType finType.
+Definition alg_finGroupType := fin_group alg_baseFinGroupType zmodType.
+Definition alg_countZmodType := @CountRing.Zmodule.Pack algType xclass.
+Definition alg_finZmodType := @Zmodule.Pack algType xclass.
+Definition alg_countRingType := @CountRing.Ring.Pack algType xclass.
+Definition alg_finRingType := @Ring.Pack algType xclass.
+Definition alg_finLmodType := @Lmodule.Pack R phR algType xclass.
+Definition alg_finLalgType := @Lalgebra.Pack R phR algType xclass.

End ClassDef.
@@ -1190,12 +1417,20 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion lmodType : type >-> GRing.Lmodule.type.
@@ -1208,18 +1443,19 @@ Canonical finLalgType.
Coercion algType : type >-> GRing.Algebra.type.
Canonical algType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finLmodType.
-Canonical join_finRingType.
-Canonical join_finLalgType.
-Notation finAlgType R := (type (Phant R)).
-Notation "[ 'finAlgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
+Canonical alg_countType.
+Canonical alg_finType.
+Canonical alg_baseFinGroupType.
+Canonical alg_finGroupType.
+Canonical alg_countZmodType.
+Canonical alg_finZmodType.
+Canonical alg_countRingType.
+Canonical alg_finRingType.
+Canonical alg_finLmodType.
+Canonical alg_finLalgType.
+Notation finAlgType R := (type (Phant R)).
+Notation "[ 'finAlgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
  (at level 0, format "[ 'finAlgType' R 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -1236,7 +1472,7 @@ Variable R : unitRingType.

-Record class_of M :=
+Record class_of M :=
  Class { base : GRing.UnitAlgebra.class_of R M; mixin : mixin_of M base }.
Definition base2 M (c : class_of M) := Algebra.Class (mixin c).
Definition base3 M (c : class_of M) := @UnitRing.Class _ (base c) (mixin c).
@@ -1244,55 +1480,79 @@

-Structure type (phR : phant R) := Pack {sort; _ : class_of sort; _ : Type}.
-Variables (phR : phant R) (cT : type phR).
+Structure type (phR : phant R) := Pack {sort; _ : class_of sort}.
+Variables (phR : phant R) (cT : type phR).
Definition pack := gen_pack (Pack phR) Class (@GRing.UnitAlgebra.class R phR).
-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 eqType := @Equality.Pack cT xclass xT.
-Definition choiceType := @Choice.Pack cT xclass xT.
-Definition countType := @Countable.Pack cT (fin_ xclass) xT.
-Definition finType := @Finite.Pack cT (fin_ xclass) xT.
-Definition zmodType := @GRing.Zmodule.Pack cT xclass xT.
-Definition finZmodType := @Zmodule.Pack cT xclass xT.
-Definition ringType := @GRing.Ring.Pack cT xclass xT.
-Definition finRingType := @Ring.Pack cT xclass xT.
-Definition unitRingType := @GRing.UnitRing.Pack cT xclass xT.
-Definition finUnitRingType := @UnitRing.Pack cT xclass xT.
-Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass xT.
-Definition finLmodType := @Lmodule.Pack R phR cT xclass xT.
-Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass xT.
-Definition finLalgType := @Lalgebra.Pack R phR cT xclass xT.
-Definition algType := @GRing.Algebra.Pack R phR cT xclass xT.
-Definition finAlgType := @Algebra.Pack R phR cT xclass xT.
-Definition unitAlgType := @GRing.UnitAlgebra.Pack R phR cT xclass xT.
- -
-Definition join_finType := @Finite.Pack unitAlgType (fin_ xclass) xT.
-Definition join_finZmodType := @Zmodule.Pack unitAlgType xclass xT.
-Definition join_finRingType := @Ring.Pack unitAlgType xclass xT.
-Definition join_finUnitRingType := @UnitRing.Pack unitAlgType xclass xT.
-Definition join_finLmodType := @Lmodule.Pack R phR unitAlgType xclass xT.
-Definition join_finLalgType := @Lalgebra.Pack R phR unitAlgType xclass xT.
-Definition join_finAlgType := @Algebra.Pack R phR unitAlgType xclass xT.
-Definition ljoin_finUnitRingType := @UnitRing.Pack lmodType xclass xT.
-Definition fljoin_finUnitRingType := @UnitRing.Pack finLmodType xclass xT.
-Definition njoin_finUnitRingType := @UnitRing.Pack lalgType xclass xT.
-Definition fnjoin_finUnitRingType := @UnitRing.Pack finLalgType xclass xT.
-Definition ajoin_finUnitRingType := @UnitRing.Pack algType xclass xT.
-Definition fajoin_finUnitRingType := @UnitRing.Pack finAlgType xclass xT.
-Definition ujoin_finLmodType := @Lmodule.Pack R phR unitRingType xclass xT.
-Definition ujoin_finLalgType := @Lalgebra.Pack R phR unitRingType xclass xT.
-Definition ujoin_finAlgType := @Algebra.Pack R phR unitRingType xclass xT.
- -
+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 eqType := @Equality.Pack cT xclass.
+Definition choiceType := @Choice.Pack cT xclass.
+Definition countType := @Countable.Pack cT (fin_ xclass).
+Definition finType := @Finite.Pack cT (fin_ xclass).
+Definition zmodType := @GRing.Zmodule.Pack cT xclass.
+Definition countZmodType := @CountRing.Zmodule.Pack cT xclass.
+Definition finZmodType := @Zmodule.Pack cT xclass.
+Definition ringType := @GRing.Ring.Pack cT xclass.
+Definition countRingType := @CountRing.Ring.Pack cT xclass.
+Definition finRingType := @Ring.Pack cT xclass.
+Definition unitRingType := @GRing.UnitRing.Pack cT xclass.
+Definition countUnitRingType := @CountRing.UnitRing.Pack cT xclass.
+Definition finUnitRingType := @UnitRing.Pack cT xclass.
+Definition lmodType := @GRing.Lmodule.Pack R phR cT xclass.
+Definition finLmodType := @Lmodule.Pack R phR cT xclass.
+Definition lalgType := @GRing.Lalgebra.Pack R phR cT xclass.
+Definition finLalgType := @Lalgebra.Pack R phR cT xclass.
+Definition algType := @GRing.Algebra.Pack R phR cT xclass.
+Definition finAlgType := @Algebra.Pack R phR cT xclass.
+Definition unitAlgType := @GRing.UnitAlgebra.Pack R phR cT xclass.
Definition baseFinGroupType := base_group cT zmodType finType.
Definition finGroupType := fin_group baseFinGroupType zmodType.
-Definition join_baseFinGroupType := base_group unitAlgType zmodType finType.
-Definition join_finGroupType := fin_group join_baseFinGroupType zmodType.
+ +
+Definition unitAlg_countType := @Countable.Pack unitAlgType (fin_ xclass).
+Definition unitAlg_finType := @Finite.Pack unitAlgType (fin_ xclass).
+Definition unitAlg_baseFinGroupType := base_group unitAlgType zmodType finType.
+Definition unitAlg_finGroupType := fin_group unitAlg_baseFinGroupType zmodType.
+Definition unitAlg_countZmodType := @CountRing.Zmodule.Pack unitAlgType xclass.
+Definition unitAlg_finZmodType := @Zmodule.Pack unitAlgType xclass.
+Definition unitAlg_countRingType := @CountRing.Ring.Pack unitAlgType xclass.
+Definition unitAlg_finRingType := @Ring.Pack unitAlgType xclass.
+Definition unitAlg_countUnitRingType :=
+  @CountRing.UnitRing.Pack unitAlgType xclass.
+Definition unitAlg_finUnitRingType := @UnitRing.Pack unitAlgType xclass.
+Definition unitAlg_finLmodType := @Lmodule.Pack R phR unitAlgType xclass.
+Definition unitAlg_finLalgType := @Lalgebra.Pack R phR unitAlgType xclass.
+Definition unitAlg_finAlgType := @Algebra.Pack R phR unitAlgType xclass.
+Definition unitRing_finLmodType := @Lmodule.Pack R phR unitRingType xclass.
+Definition unitRing_finLalgType := @Lalgebra.Pack R phR unitRingType xclass.
+Definition unitRing_finAlgType := @Algebra.Pack R phR unitRingType xclass.
+Definition countUnitRing_lmodType :=
+  @GRing.Lmodule.Pack R phR countUnitRingType xclass.
+Definition countUnitRing_finLmodType :=
+  @Lmodule.Pack R phR countUnitRingType xclass.
+Definition countUnitRing_lalgType :=
+  @GRing.Lalgebra.Pack R phR countUnitRingType xclass.
+Definition countUnitRing_finLalgType :=
+  @Lalgebra.Pack R phR countUnitRingType xclass.
+Definition countUnitRing_algType :=
+  @GRing.Algebra.Pack R phR countUnitRingType xclass.
+Definition countUnitRing_finAlgType :=
+  @Algebra.Pack R phR countUnitRingType xclass.
+Definition finUnitRing_lmodType :=
+  @GRing.Lmodule.Pack R phR finUnitRingType xclass.
+Definition finUnitRing_finLmodType :=
+  @Lmodule.Pack R phR finUnitRingType xclass.
+Definition finUnitRing_lalgType :=
+  @GRing.Lalgebra.Pack R phR finUnitRingType xclass.
+Definition finUnitRing_finLalgType :=
+  @Lalgebra.Pack R phR finUnitRingType xclass.
+Definition finUnitRing_algType :=
+  @GRing.Algebra.Pack R phR finUnitRingType xclass.
+Definition finUnitRing_finAlgType :=
+  @Algebra.Pack R phR finUnitRingType xclass.

End ClassDef.
@@ -1311,16 +1571,26 @@ Canonical countType.
Coercion finType : type >-> Finite.type.
Canonical finType.
+Coercion baseFinGroupType : type >-> FinGroup.base_type.
+Canonical baseFinGroupType.
+Coercion finGroupType : type >-> FinGroup.type.
+Canonical finGroupType.
Coercion zmodType : type >-> GRing.Zmodule.type.
Canonical zmodType.
+Coercion countZmodType : type >-> CountRing.Zmodule.type.
+Canonical countZmodType.
Coercion finZmodType : type >-> Zmodule.type.
Canonical finZmodType.
Coercion ringType : type >-> GRing.Ring.type.
Canonical ringType.
+Coercion countRingType : type >-> CountRing.Ring.type.
+Canonical countRingType.
Coercion finRingType : type >-> Ring.type.
Canonical finRingType.
Coercion unitRingType : type >-> GRing.UnitRing.type.
Canonical unitRingType.
+Coercion countUnitRingType : type >-> CountRing.UnitRing.type.
+Canonical countUnitRingType.
Coercion finUnitRingType : type >-> UnitRing.type.
Canonical finUnitRingType.
Coercion lmodType : type >-> GRing.Lmodule.type.
@@ -1337,28 +1607,37 @@ Canonical finAlgType.
Coercion unitAlgType : type >-> GRing.UnitAlgebra.type.
Canonical unitAlgType.
-Canonical join_finType.
-Canonical join_finZmodType.
-Canonical join_finLmodType.
-Canonical join_finRingType.
-Canonical join_finLalgType.
-Canonical join_finAlgType.
-Canonical ljoin_finUnitRingType.
-Canonical fljoin_finUnitRingType.
-Canonical njoin_finUnitRingType.
-Canonical fnjoin_finUnitRingType.
-Canonical ajoin_finUnitRingType.
-Canonical fajoin_finUnitRingType.
-Canonical ujoin_finLmodType.
-Canonical ujoin_finLalgType.
-Canonical ujoin_finAlgType.
-Notation finUnitAlgType R := (type (Phant R)).
-Notation "[ 'finUnitAlgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
+Canonical unitAlg_countType.
+Canonical unitAlg_finType.
+Canonical unitAlg_baseFinGroupType.
+Canonical unitAlg_finGroupType.
+Canonical unitAlg_countZmodType.
+Canonical unitAlg_finZmodType.
+Canonical unitAlg_countRingType.
+Canonical unitAlg_finRingType.
+Canonical unitAlg_countUnitRingType.
+Canonical unitAlg_finUnitRingType.
+Canonical unitAlg_finLmodType.
+Canonical unitAlg_finLalgType.
+Canonical unitAlg_finAlgType.
+Canonical unitRing_finLmodType.
+Canonical unitRing_finLalgType.
+Canonical unitRing_finAlgType.
+Canonical countUnitRing_lmodType.
+Canonical countUnitRing_finLmodType.
+Canonical countUnitRing_lalgType.
+Canonical countUnitRing_finLalgType.
+Canonical countUnitRing_algType.
+Canonical countUnitRing_finAlgType.
+Canonical finUnitRing_lmodType.
+Canonical finUnitRing_finLmodType.
+Canonical finUnitRing_lalgType.
+Canonical finUnitRing_finLalgType.
+Canonical finUnitRing_algType.
+Canonical finUnitRing_finAlgType.
+Notation finUnitAlgType R := (type (Phant R)).
+Notation "[ 'finUnitAlgType' R 'of' T ]" := (do_pack (@pack _ (Phant R)) T)
  (at level 0, format "[ 'finUnitAlgType' R 'of' T ]") : form_scope.
-Canonical baseFinGroupType.
-Canonical finGroupType.
-Canonical join_baseFinGroupType.
-Canonical join_finGroupType.
End Exports.

@@ -1395,12 +1674,10 @@ Export Lmodule.Exports Lalgebra.Exports Algebra.Exports UnitAlgebra.Exports.

-Notation "{ 'unit' R }" := (unit_of (Phant R))
+Notation "{ 'unit' R }" := (unit_of (Phant R))
  (at level 0, format "{ 'unit' R }") : type_scope.
-Notation "''U'" := (unit_action _) (at level 8) : action_scope.
-Notation "''U'" := (unit_groupAction _) (at level 8) : groupAction_scope.
- -
+Notation "''U'" := (unit_action _) (at level 8) : action_scope.
+Notation "''U'" := (unit_groupAction _) (at level 8) : groupAction_scope.
-- cgit v1.2.3