@@ -245,10 +245,8 @@ canonical property for the predicate gaussInt
245245
246246 *)
247247
248- HB.howto GI subComRingType.
249-
250248HB.instance Definition _ := [Countable of GI by <:].
251- HB.instance Definition _ := [SubChoice_isSubComRing of GI by <:].
249+ HB.instance Definition _ := [SubChoice_isSubComNzRing of GI by <:].
252250
253251(**
254252
@@ -297,7 +295,7 @@ by apply: val_inj; rewrite /invGI ?val_insubd /= ?xGIF // invr0 if_same.
297295Qed .
298296
299297HB.instance Definition _ :=
300- GRing.ComRing_hasMulInverse .Build GI mulGIr unitGIP unitGI_out.
298+ GRing.ComNzRing_hasMulInverse .Build GI mulGIr unitGIP unitGI_out.
301299
302300(**
303301
@@ -368,7 +366,7 @@ Delimit Scope GI_scope with GI.
368366
369367Open Scope GI_scope.
370368
371- Definition normGI (x : GI) := Num.trunc (gaussNorm (val x)).
369+ Definition normGI (x : GI) := Num.truncn (gaussNorm (val x)).
372370Local Notation "'N x" := (normGI x%R) (at level 10) : GI_scope.
373371
374372(**
@@ -394,7 +392,7 @@ Lemma gaussNormM : {morph gaussNorm : x y / x * y}.
394392Proof . by move=> x y; rewrite /gaussNorm rmorphM mulrACA. Qed .
395393
396394Lemma normGIM x y : 'N (x * y) = ('N x * 'N y)%N.
397- Proof . by rewrite /normGI gaussNormM truncM . Qed .
395+ Proof . by rewrite /normGI gaussNormM truncnM . Qed .
398396
399397Lemma normGIX x n : 'N (x ^+ n) = ('N x ^ n)%N.
400398Proof .
@@ -408,8 +406,8 @@ Proof. by rewrite gaussNormE sqrf_eq0 normr_eq0. Qed.
408406
409407Lemma normGI_eq0 (x : GI) : ('N x == 0%N) = (x == 0).
410408Proof .
411- have /charf0P <- := Cchar .
412- by rewrite truncK // gaussNorm_eq0.
409+ have /pcharf0P <- := Cpchar .
410+ by rewrite truncnK // gaussNorm_eq0.
413411Qed .
414412
415413Lemma normGI_gt0 (x : GI) : ('N x > 0)%N = (x != 0).
@@ -423,32 +421,32 @@ Qed.
423421
424422Lemma normGI_nat n : 'N n%:R = (n ^ 2)%N.
425423Proof .
426- by rewrite /normGI [val _]algGI_nat gaussNormE normr_nat truncX // natrK.
424+ by rewrite /normGI [val _]algGI_nat gaussNormE normr_nat truncnX // natrK.
427425Qed .
428426
429- Lemma normGIE (x : GI) : ('N(x) = Num.trunc (`|'Re (val x)|)%R ^ 2 +
430- Num.trunc (`|'Im (val x)|)%R ^ 2)%N.
427+ Lemma normGIE (x : GI) : ('N(x) = Num.truncn (`|'Re (val x)|)%R ^ 2 +
428+ Num.truncn (`|'Im (val x)|)%R ^ 2)%N.
431429Proof .
432- rewrite /normGI gaussNormE normC2_Re_Im truncD ?natr_exp_even //; last first.
430+ rewrite /normGI gaussNormE normC2_Re_Im truncnD ?natr_exp_even //; last first.
433431 by rewrite qualifE /= natr_ge0 // natr_exp_even.
434- by rewrite -!truncX ?natr_norm_int // !intr_normK.
432+ by rewrite -!truncnX ?natr_norm_int // !intr_normK.
435433Qed .
436434
437- Lemma truncC_Cint (x : algC) :
438- x \is a Num.int -> x = (-1) ^+ (x < 0)%R * (Num.trunc `|x|)%:R.
435+ Lemma truncnC_Cint (x : algC) :
436+ x \is a Num.int -> x = (-1) ^+ (x < 0)%R * (Num.truncn `|x|)%:R.
439437Proof .
440- by move=> xCint; rewrite {1}[x]intrEsign // truncK // natr_norm_int.
438+ by move=> xCint; rewrite {1}[x]intrEsign // truncnK // natr_norm_int.
441439Qed .
442440
443441Lemma normGI_eq1 (x : GI) : ('N(x) == 1)%N = (val x \in [::1;-1;'i;-'i]).
444442Proof .
445443apply/idP/idP; last first.
446444 by rewrite normGIE !inE => /or4P[] /eqP->;
447445 rewrite ?raddfN /= ?(Creal_ReP 1 _) ?(Creal_ImP 1 _) ?Re_i ?Im_i //=
448- ?normrN ?normr1 ?normr0 ?trunc0 ?trunc1 .
446+ ?normrN ?normr1 ?normr0 ?truncn0 ?truncn1 .
449447rewrite [val x]algCrect normGIE.
450- have /andP[/truncC_Cint {2}-> /truncC_Cint {2}->] := algGIP x.
451- by case: Num.trunc => [|[|m]] //; case: Num.trunc => [|[|n]] // _;
448+ have /andP[/truncnC_Cint {2}-> /truncnC_Cint {2}->] := algGIP x.
449+ by case: Num.truncn => [|[|m]] //; case: Num.truncn => [|[|n]] // _;
452450 rewrite !(mulr1, mulr0, add0r, addr0); case: (_ < _)%R;
453451 rewrite ?(expr1, expr0, mulrN, mulr1, inE, eqxx, orbT).
454452Qed .
@@ -573,9 +571,9 @@ have := xNz.
573571rewrite -normGI_eq0.
574572rewrite /normGI gaussNormE [val x]algCrect normC2_rect ?(realr_int, intr_int) //.
575573set u :=_ + _ * _ => uNz.
576- have->: Num.floor u = Num.trunc u.
574+ have->: Num.floor u = Num.truncn u.
577575 apply: floor_def.
578- rewrite [(_+ 1)%Z]addrC -intS trunc_itv //.
576+ rewrite [(_+ 1)%Z]addrC -intS truncn_itv //.
579577 rewrite addr_ge0 // -expr2 real_exprn_even_ge0 ?(realr_int, intr_int) //.
580578by rewrite cdivzz ?mul1r ?subrr.
581579Qed .
@@ -610,13 +608,13 @@ set Uy := Num.floor _.
610608have UxRe : Ux%:~R = 'Re (algGI x / algGI y * ('N y)%:R).
611609 rewrite algReM ['Re _%:R](Creal_ReP _ _) ?qualifE /= ?ler0n //.
612610 rewrite ?['Im _%:R](Creal_ImP _ _) ?qualifE /= ?ler0n // mulr0 subr0.
613- rewrite /normGI truncK // algRe_div -gaussNormE divfK; last first.
611+ rewrite /normGI truncnK // algRe_div -gaussNormE divfK; last first.
614612 by rewrite gaussNorm_eq0.
615613 by rewrite floorK // rpredD // rpredM.
616614have UyIm : Uy%:~R = 'Im (algGI x / algGI y * ('N(y))%GI%:R).
617615 rewrite algImM ['Re _%:R](Creal_ReP _ _) ?qualifE /= ?ler0n //.
618616 rewrite ?['Im _%:R](Creal_ImP _ _) ?qualifE /= ?ler0n // mulr0 add0r mulrC.
619- rewrite /normGI truncK // algIm_div -gaussNormE divfK; last first.
617+ rewrite /normGI truncnK // algIm_div -gaussNormE divfK; last first.
620618 by rewrite gaussNorm_eq0.
621619 by rewrite floorK // rpredB // rpredM.
622620rewrite ['N (_ * _)]/normGI /= -[algGI x](divfK yNz).
@@ -627,7 +625,7 @@ rewrite subC_rect ![_ + cmodz _ _]addrC.
627625rewrite rmorphD /= rmorphM /= addrK.
628626rewrite [(_ + _)%:~R]rmorphD /= rmorphM /= addrK.
629627rewrite !gaussNormM gaussNormE normC2_rect ?(Rreal_int, intr_int) //.
630- rewrite truncM //; last by rewrite rpredD // natr_exp_even // intr_int.
628+ rewrite truncnM //; last by rewrite rpredD // natr_exp_even // intr_int.
631629rewrite mulnC ltn_pmul2l; last by rewrite lt0n normGI_eq0.
632630rewrite -!rmorphXn /= -!rmorphD /=.
633631rewrite -[_ + _]gez0_abs ?natrK; last first.
@@ -799,8 +797,8 @@ rewrite gaussIntE Re_rect ?Im_rect; last 4 first.
799797- by rewrite !(rpredM, rpredV) 1? rpredD ?Rreal_int.
800798- by rewrite !(rpredM, rpredV) 1? rpredB ?rpredD ?Rreal_int.
801799rewrite (intrEsign Cm) (intrEsign Cn).
802- rewrite -(truncK (natr_norm_int Cm)) -(truncK (natr_norm_int Cn)).
803- rewrite -[Num.trunc `|m|]odd_double_half -[Num.trunc `|n|]odd_double_half.
800+ rewrite -(truncnK (natr_norm_int Cm)) -(truncnK (natr_norm_int Cn)).
801+ rewrite -[Num.truncn `|m|]odd_double_half -[Num.truncn `|n|]odd_double_half.
804802rewrite Omn !natrD !mulrDr ![(-1) ^+ _]signrE.
805803set u := nat_of_bool _; set v := nat_of_bool _; set w := nat_of_bool _.
806804set x1 := _./2; set y1 := _./2.
@@ -1101,7 +1099,7 @@ Qed.
11011099
11021100Lemma conjGIM_norm x : x * conjGI x = ('N x)%:R.
11031101Proof .
1104- by apply/val_eqP; rewrite /= -normCK -gaussNormE algGI_nat truncK .
1102+ by apply/val_eqP; rewrite /= -normCK -gaussNormE algGI_nat truncnK .
11051103Qed .
11061104
11071105Lemma eqGIP (x y : GI) :
@@ -1317,22 +1315,22 @@ Proof.
13171315rewrite mem_pmap.
13181316apply/mapP; exists (GI_of_ord x); last by rewrite valK.
13191317apply/mapP.
1320- pose xr := Num.trunc ('Re (algGI (GI_of_ord x)) + n%:R).
1321- pose yr := Num.trunc ('Im (algGI (GI_of_ord x)) + n%:R).
1318+ pose xr := Num.truncn ('Re (algGI (GI_of_ord x)) + n%:R).
1319+ pose yr := Num.truncn ('Im (algGI (GI_of_ord x)) + n%:R).
13221320pose nD := (Num.NumDomain.clone _ algC).
13231321have := ltn_ordGI x.
1324- rewrite normGIE -(ltr_nat nD) natrD !natrX !truncK ?natr_norm_int //.
1322+ rewrite normGIE -(ltr_nat nD) natrD !natrX !truncnK ?natr_norm_int //.
13251323move => HH.
13261324have /andP[Hrx1 Lx1] := int_norm_nat (GIRe _) (GIIm _) HH.
1327- have F1 : (Num.trunc ('Re (val (GI_of_ord x)) + n%:R)%R < n.*2)%N.
1328- by rewrite -(ltr_nat nD) truncK .
1325+ have F1 : (Num.truncn ('Re (val (GI_of_ord x)) + n%:R)%R < n.*2)%N.
1326+ by rewrite -(ltr_nat nD) truncnK .
13291327rewrite addrC in HH.
13301328have /andP[Hrx2 Lx2] := int_norm_nat (GIIm _) (GIRe _) HH.
1331- have F2 : (Num.trunc ('Im (val (GI_of_ord x)) + n%:R)%R < n.*2)%N.
1332- by rewrite -(ltr_nat nD) truncK .
1329+ have F2 : (Num.truncn ('Im (val (GI_of_ord x)) + n%:R)%R < n.*2)%N.
1330+ by rewrite -(ltr_nat nD) truncnK .
13331331exists (Ordinal F1, Ordinal F2); rewrite ?mem_enum //=.
13341332apply/val_eqP=> /=.
1335- by rewrite !algGI_nat !truncK // !addrK -algCrect.
1333+ by rewrite !algGI_nat !truncnK // !addrK -algCrect.
13361334Qed .
13371335
13381336Definition ordGI_uniq_enumP : Finite.axiom _ :=
0 commit comments