@@ -11,6 +11,7 @@ Import Order.TTheory GRing.Theory Num.Theory ComplexField Num.Def complex.
1111Local Open Scope ring_scope.
1212Local Open Scope classical_set_scope.
1313Local Open Scope complex_scope.
14+ Import numFieldNormedType.Exports.
1415
1516Set Implicit Arguments .
1617Unset Strict Implicit .
@@ -19,6 +20,41 @@ Unset Printing Implicit Defensive.
1920(* I need to import ComplexField to use its lemmas on RComplex,
2021I don't want the canonical lmodtype structure on C,
2122Therefore this is based on a fork of real-closed *)
23+ Section ComplexNumfieldType.
24+ Variable R : rcfType.
25+ Local Notation sqrtr := Num.sqrt.
26+ Local Notation C := R[i].
27+
28+ Local Canonical complex_pointedType := [pointedType of C for [pointedType of C^o]].
29+ Local Canonical complex_filteredType :=
30+ [filteredType C of C for [filteredType C of C^o]].
31+ Local Canonical complex_topologicalType :=
32+ [topologicalType of C for [topologicalType of C^o]].
33+ Local Canonical complex_uniformType := [uniformType of C for [uniformType of C^o]].
34+
35+ Local Canonical complex_pseudoMetricType :=
36+ [pseudoMetricType [numDomainType of C] of C for [pseudoMetricType [numDomainType of C] of C^o]].
37+ (* missing join ? is [numDomainType of C] ok here ? *)
38+
39+ Local Canonical complex_lmodType := [lmodType C of C for [lmodType C of C^o]].
40+ Local Canonical complex_lalgType := [lalgType C of C for [lalgType C of C^o]].
41+ Local Canonical complex_algType := [algType C of C for [algType C of C^o]].
42+ Local Canonical complex_comAlgType := [comAlgType C of C].
43+ Local Canonical complex_unitAlgType := [unitAlgType C of C].
44+ Local Canonical complex_comUnitAlgType := [comUnitAlgType C of C].
45+ Local Canonical complex_vectType := [vectType C of C for [vectType C of C^o]].
46+ Local Canonical complex_FalgType := [FalgType C of C].
47+ Local Canonical complex_fieldExtType :=
48+ [fieldExtType C of C for [fieldExtType C of C^o]].
49+ Local Canonical complex_pseudoMetricNormedZmodType :=
50+ [pseudoMetricNormedZmodType C of C for [pseudoMetricNormedZmodType C of C^o]].
51+ Local Canonical complex_normedModType :=
52+ [normedModType C of C for [normedModType C of C^o]].
53+
54+ (* TODO : joins *)
55+
56+ End ComplexNumfieldType.
57+
2258
2359Section complex_extras.
2460Variable R : rcfType.
@@ -33,22 +69,22 @@ by move=> -> ; split.
3369by case=> //= -> ->.
3470Qed .
3571
36- Lemma Re0 : Re 0 = 0 :> R.
37- Proof . by []. Qed .
72+ Lemma Re0 : Re 0 = 0 :> R.
73+ Proof . by []. Qed .
3874
3975Lemma Im0 : Im 0 = 0 :> R.
4076Proof . by []. Qed .
4177
4278Lemma ReIm_eq0 (x : C) : (x = 0) = ((Re x = 0) /\ (Im x = 0)).
4379Proof . by rewrite -[in Re x= _]Re0 -Im0 -eqE_complex. Qed .
4480
45- Lemma scalei_muli (z : C^o ) : 'i * z = 'i *: z.
81+ Lemma scalei_muli (z : C) : 'i * z = 'i *: z.
4682Proof . by []. Qed .
4783
4884Lemma iE : 'i%C = 'i :> C.
4985Proof . by []. Qed .
5086
51- Lemma scalecM : forall (w v : C^o ), (v *: w = v * w).
87+ Lemma scalecM : forall (w v : C), (v *: w = v * w).
5288Proof . by []. Qed .
5389
5490Lemma normc0 : normc 0 = 0 :> R .
125161Lemma realCM (a b :R) : a%:C * b%:C = (a * b)%:C.
126162Proof . by rewrite eqE_complex /= !mulr0 mul0r addr0 subr0. Qed .
127163
128- Lemma complexA: forall (h : C^o ), h%:A = h.
164+ Lemma complexA: forall (h : C), h%:A = h.
129165Proof . by move => h; rewrite scalecM mulr1. Qed .
130166
131167Lemma lecM (a b : R) k : a +i* b *+ k = (a *+ k) +i* (b *+ k).
@@ -319,12 +355,12 @@ Lemma filter_compE ( T U V : topologicalType)
319355Proof . by []. Qed .
320356
321357Lemma within_continuous_withinNx
322- (R C : numFieldType) (U : normedModType C) (f : U -> R^o ) :
358+ (R C : numFieldType) (U : normedModType C) (f : U -> R) :
323359 {for (0 : U), continuous f} ->
324- (forall x, f x = 0 -> x = 0) -> f @ nbhs' (0 :U) --> nbhs' (0 : R^o ).
360+ (forall x, f x = 0 -> x = 0) -> f @ nbhs' (0 :U) --> nbhs' (0 : R).
325361Proof .
326362 move => cf f0 A /=.
327- rewrite !/nbhs /= /nbhs /= /nbhs' /within /= !nearE => H. Admitted .
363+ rewrite !/nbhs /= /nbhs /= /nbhs' /within /= !nearE => []. Admitted .
328364
329365Notation "f %:Rfun" :=
330366 (f : (Rcomplex_normedModType _) -> (Rcomplex_normedModType _))
@@ -353,7 +389,7 @@ apply/eqP; rewrite eq_complex; apply/andP.
353389by split; simpl; apply/eqP; rewrite ?mulr1 ?mulr0.
354390Qed .
355391
356- Lemma scalecr: forall w: C^o , forall r : R, r *: (w: Rcomplex) = r%:C *: w .
392+ Lemma scalecr: forall w: C, forall r : R, r *: (w: Rcomplex) = r%:C *: w .
357393Proof .
358394Proof. by move=> [a b] r; rewrite eqE_complex //=; split; simpc. Qed .
359395
@@ -370,7 +406,7 @@ Proof. rewrite eqE_complex //=. Qed.
370406End algebraic_lemmas.
371407
372408
373- Section complex_topological.
409+ (* Section complex_topological.
374410Variable R : realType.
375411Local Notation C := R[i].
376412
@@ -411,7 +447,7 @@ Canonical complex_pseudoMetricNormedZmodType :=
411447Canonical complex_normedModType :=
412448 [normedModType C of C for [normedModType C of C^o]].
413449
414- End complex_topological.
450+ End complex_topological. *)
415451
416452Section Holomorphe_der.
417453Variable R : realType.
@@ -430,10 +466,10 @@ Lemma limin_scaler (K : numFieldType) (V : normedModType K) (T : topologicalType
430466 cvg(f @ F) -> k *: lim (f @ F) = lim ((k \*: f) @ F ).
431467Proof . by move => cv; apply/esym/cvg_lim => //; apply: cvgZr. Qed .
432468
433- Definition holomorphic (f : C^o -> C^o ) (c : C) :=
434- cvg ((fun h => h^-1 *: (f (c + h) - f c)) @ (nbhs' (0:C^o ))).
469+ Definition holomorphic (f : C-> C ) (c : C) :=
470+ cvg ((fun h => h^-1 *: (f (c + h) - f c)) @ (nbhs' (0:C))).
435471
436- Lemma holomorphicP (f : C^o -> C^o ) (c: C^o ) : holomorphic f c <-> derivable f c 1.
472+ Lemma holomorphicP (f : C -> C) (c: C) : holomorphic f c <-> derivable f c 1.
437473Proof .
438474rewrite /holomorphic /derivable.
439475suff -> : (fun h : C => h^-1 *: ((f(c + h) - f c))) =
@@ -445,44 +481,44 @@ Definition Rdifferentiable (f : C -> C) (c : C) := (differentiable f%:Rfun c%:Rc
445481
446482(* No Rmodule structure on C if we can avoid,
447483so the following line shouldn't type check. *)
448- Fail Definition Rderivable_fromcomplex_false (f : C^o -> C^o ) (c v: C^o ) :=
449- cvg (fun (h : R^o ) => h^-1 *: (f (c +h *: v) - f c)) @ (nbhs' (0:R^o )).
484+ Fail Definition Rderivable_fromcomplex_false (f : C -> C) (c v: C) :=
485+ cvg (fun (h : R) => h^-1 *: (f (c +h *: v) - f c)) @ (nbhs' (0:R)).
450486
451- Definition realC : R^o -> C := (fun r => r%:C).
487+ Definition realC : R -> C := (fun r => r%:C).
452488
453489Lemma continuous_realC: continuous realC.
454490Proof .
455491move => x A /= [] r /[dup] /realC_gt0 Rer0 /gt0_realC rRe H; exists (Re r); first by [].
456492by move => z /= nz; apply: (H (realC z)); rewrite /= -realCB realC_norm rRe ltcR.
457- Qed .
493+ Qed .
458494
459495Lemma Rdiff1 (f : C -> C) c :
460496 lim ( (fun h : C => h^-1 *: ((f (c + h) - f c) ) )
461497 @ (realC @ (nbhs' 0)))
462498 = 'D_1 (f%:Rfun) c%:Rc :> C.
463499Proof .
464500rewrite /derive.
465- have -> : (fun h : C^o => h^-1 *: ((f (c + h) - f c))) @ (realC @ (nbhs' 0)) =
466- (fun h : C^o => h^-1 *: ((f (c + h) - f c)))
467- \o realC @ (nbhs' (0 : R^o )) by [].
501+ have -> : (fun h : C => h^-1 *: ((f (c + h) - f c))) @ (realC @ (nbhs' 0)) =
502+ (fun h : C => h^-1 *: ((f (c + h) - f c)))
503+ \o realC @ (nbhs' (0 : R)) by [].
468504suff -> : ( (fun h : C => h^-1 *: (f (c + h) - f c)) \o realC)
469- = (fun h : R^o => h^-1 *: ((f%:Rfun \o shift c) (h *: (1%:Rc)) - f c) ) :> (R -> C) .
470- by [].
505+ = (fun h : R => h^-1 *: ((f%:Rfun \o shift c) (h *: (1%:Rc)) - f c) ) :> (R -> C) .
506+ by []. (*TODO : very long*)
471507apply: funext => h /=.
472508by rewrite Inv_realC /= -!scalecr realC_alg [X in f X]addrC.
473509Qed .
474510
475511
476- Lemma Rdiffi (f : C^o -> C^o ) c:
477- lim ( (fun h : C^o => h^-1 *: ((f (c + h * 'i) - f c)))
512+ Lemma Rdiffi (f : C -> C) c:
513+ lim ( (fun h : C => h^-1 *: ((f (c + h * 'i) - f c)))
478514 @ (realC @ (nbhs' (0 ))))
479515 = 'D_('i) (f%:Rfun) c%:Rc :> C.
480516Proof .
481517rewrite /derive.
482518have -> :
483- ((fun h : (R[i])^o => h^-1 *: (f (c + h * 'i) - f c)) @ (realC @ nbhs' 0))
484- = ((fun h : (R[i])^o => h^-1 *: (f (c + h * 'i) - f c)) \o realC) @ nbhs' 0 by [].
485- suff -> : (fun h : (R[i])^o => h^-1 * (f (c + h * 'i) - f c)) \o
519+ ((fun h : (R[i]) => h^-1 *: (f (c + h * 'i) - f c)) @ (realC @ nbhs' 0))
520+ = ((fun h : (R[i]) => h^-1 *: (f (c + h * 'i) - f c)) \o realC) @ nbhs' 0 by [].
521+ suff -> : (fun h : (R[i]) => h^-1 * (f (c + h * 'i) - f c)) \o
486522realC = fun h : R => h^-1 *: ((f%:Rfun \o shift c) (h *: ('i%:Rc)) - f c).
487523 by [].
488524apply: funext => h /=.
@@ -492,12 +528,12 @@ Qed.
492528(* should be generalized to equivalent norms *)
493529(* but there is no way to state it for now *)
494530Lemma littleoCo (E : normedModType C) (h e : E -> C) (x : E) :
495- [o_x (e : E -> C^o ) of (h : E -> C^o )] =
531+ [o_x (e : E -> C) of (h : E -> C)] =
496532 [o_x (e : E -> Rc) of (h : E -> Rc)].
497533Proof .
498- suff heP : (h : E -> C^o ) =o_x (e : E -> C^o ) <->
534+ suff heP : (h : E -> C) =o_x (e : E -> C) <->
499535 (h : E -> Rc) =o_x (e : E -> Rc).
500- have [ho|hNo] := asboolP ((h : E -> C^o ) =o_x (e : E -> C^o )).
536+ have [ho|hNo] := asboolP ((h : E -> C) =o_x (e : E -> C)).
501537 by rewrite !littleoE// -!eqoP// -heP.
502538 by rewrite !littleoE0// -!eqoP// -heP.
503539rewrite !eqoP; split => small _/posnumP[eps]; near=> y.
@@ -539,24 +575,24 @@ have realC'0: realC @ nbhs' 0 --> nbhs' 0.
539575 by move => /= x /complexI.
540576have HR0:(quotC \o (realC) @ nbhs' 0) --> l.
541577 by apply: cvg_comp; last by exact: H.
542- have lem : quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R^o ))) --> l.
578+ have lem : quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R))) --> l.
543579 apply: cvg_comp; last by exact: H.
544580 rewrite (filter_compE _ realC); apply: cvg_comp; first by exact: realC'0.
545581 apply: within_continuous_withinNx; first by apply: scalel_continuous.
546582 move => x /eqP; rewrite mulIr_eq0 ; last by apply/rregP; apply: neq0Ci.
547583 by move/eqP.
548- have HRcomp: cvg (quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R^o )))) .
584+ have HRcomp: cvg (quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R)))) .
549585 by apply/cvg_ex; simpl; exists l.
550- have ->: lim (quotR @ (realC @ (nbhs' (0 : R^o ))))
551- = 'i *: lim (quotC \o ( fun h => h *'i) @ (realC @ (nbhs' (0 : R^o )))).
586+ have ->: lim (quotR @ (realC @ (nbhs' (0 : R))))
587+ = 'i *: lim (quotC \o ( fun h => h *'i) @ (realC @ (nbhs' (0 : R)))).
552588 have: 'i \*:quotC \o ( fun h => h *'i) =1 quotR.
553589 move => h /= ;rewrite /quotC /quotR /=.
554590 rewrite invcM scalerA mulrC -mulrA mulVf ?mulr1 ?neq0Ci //.
555591 by move => /funext <-; rewrite (limin_scaler _ 'i HRcomp).
556592rewrite scalecM.
557- suff: lim (quotC @ (realC @ (nbhs' (0 : R^o ))))
558- = lim (quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R^o )))) by move => -> .
559- suff -> : lim (quotC @ (realC @ (nbhs' (0 : R^o )))) = l.
593+ suff: lim (quotC @ (realC @ (nbhs' (0 : R))))
594+ = lim (quotC \o *%R^~ 'i%R @ (realC @ (nbhs' (0 : R)))) by move => -> .
595+ suff -> : lim (quotC @ (realC @ (nbhs' (0 : R)))) = l.
560596 by apply/eqP; rewrite eq_sym; apply/eqP; apply: (cvg_map_lim _ lem).
561597by apply: cvg_map_lim.
562598Qed .
0 commit comments