@@ -535,9 +535,11 @@ Qed.
535535
536536Local Lemma standard_scale_continuous : continuous (fun z : R^o * R^o => z.1 *: z.2).
537537Proof .
538- (* NB: This lemma is proved once again in normedtype, in a shorter way with much more machinery *)
539- (* To be rewritten once normedtype is split and tvs can depend on these lemmas *)
540- (* NB2: seems hard to, as it depends on cvgrPdist_lt which is proved in Section pseudoMetricNormedZmod_numDomainType with context {K : numDomainType} {V : pseudoMetricNormedZmodType K}. *)
538+ (* NB: This lemma is proved once again in normedtype, in a shorter way with
539+ much more machinery *)
540+ (* NB2: make tvs.v depend on pseudometric_normed_Zmodule.v once PR#1544 is
541+ merged. The two structures are independant and this will allow to use lemmas as
542+ cvgr_dist on more concrete specific instances of tvstype*)
541543move=> [k x]; apply/cvg_ballP => e le0 /=.
542544pose M : R := maxr (`|e| + 1) (maxr `|k| (`|x| + `|x| + 2^-1 + 1)).
543545have M0l : 0 < `|e| + 1 by rewrite ltr_wpDl.
@@ -674,7 +676,7 @@ End prod_Tvs.
674676
675677
676678HB.structure Definition LinearContinuous (K : numDomainType) (E : NbhsLmodule.type K)
677- (F : NbhsZmodule.type) s :=
679+ (F : NbhsZmodule.type) (s : K -> F -> F) :=
678680 {f of @GRing.Linear K E F s f & @Continuous E F f }.
679681
680682HB.factory Structure isLinearContinuous (K : numDomainType) (E : NbhsLmodule.type K)
@@ -708,7 +710,6 @@ Notation "{ 'linear_continuous' U -> V | s }" := (@LinearContinuous.type _ U%typ
708710 : type_scope.
709711Notation "{ 'linear_continuous' U -> V }" := {linear_continuous U%type -> V%type | *:%R}
710712 : type_scope.
711-
712713
713714Section lcfun.
714715Context {R : numDomainType} {E : NbhsLmodule.type R}
@@ -741,13 +742,6 @@ congr LinearContinuous.Class.
741742- by congr isContinuous.Axioms_; apply: Prop_irrelevance.
742743Qed .
743744
744- (* Lemma lcfun_elim (K : ( E -> F) -> Type) : *)
745- (* ( forall u : T, K u) -> (forall f (Pf : f \in lcfun), K f). *)
746- (* Proof. *)
747- (* Admitted. (* HB.pack *) *) (* marche pas bien avec la tactique elim *)
748-
749-
750-
751745Lemma lcfun_valP f (Pf : f \in lcfun) : lcfun_Sub Pf = f :> (_ -> _).
752746Proof . by []. Qed .
753747
@@ -757,28 +751,21 @@ Lemma lcfuneqP (f g : {linear_continuous E -> F | s}) : f = g <-> f =1 g.
757751Proof . by split=> [->//|fg]; apply/val_inj/funext. Qed .
758752
759753HB.instance Definition _ := [Choice of {linear_continuous E -> F | s} by <:].
760- End lcfun.
761-
762- Variant lcfun_spec (R : numDomainType) (E : tvsType R) (F : tvsType R) (f : E -> F) :
763- (E -> F) -> bool -> Type :=
764- | Islcfun (l : {linear_continuous E -> F}) : lcfun_spec f (l) true.
765754
766- Check posnumP.
755+ Variant lcfun_spec (f : E -> F) : (E -> F) -> bool -> Type :=
756+ | Islcfun (l : {linear_continuous E -> F | s}) : lcfun_spec f l true.
767757
768758(*to be renamed ? *)
769- Lemma lcfunE (R : numDomainType) (E : tvsType R) (F : tvsType R) (s : GRing.Scale.law R F)
770- (f : E -> F) :
771- (f \in (@lcfun R E F s) ) ->
772- lcfun_spec f f (f \in (@lcfun R E F s)).
759+ Lemma lcfunE (f : E -> F) : (f \in lcfun) -> lcfun_spec f f (f \in lcfun).
773760Proof .
774- move=> f_lc. have -> : (f \in lcfun) = true. admit .
775- have {2}-> :(f = (@ lcfun_Sub R E F s f f_lc)) by rewrite lcfun_valP.
776- Fail constructor.
777- Admitted .
761+ move=> /[dup] f_lc -> .
762+ have {2}-> :(f = (lcfun_Sub f_lc)) by rewrite lcfun_valP.
763+ constructor.
764+ Qed .
778765
766+ End lcfun.
779767Section lcfun_comp.
780768
781-
782769Context {R : numDomainType} {E F : NbhsLmodule.type R}
783770 {S : NbhsZmodule.type} {s : GRing.Scale.law R S}
784771 (f : {linear_continuous E -> F}) (g : {linear_continuous F -> S | s}).
@@ -794,11 +781,11 @@ HB.instance Definition _ := @isLinearContinuous.Build R E S s (g \o f)
794781 lcfun_comp_subproof1 lcfun_comp_subproof2.
795782
796783(* TODO: do the identity? *)
797-
798784End lcfun_comp.
799785
800786Section lcfun_lmodtype.
801- Context {R : numFieldType} {E F G: tvsType R} {s : GRing.Scale.law R F}.
787+ Context {R : numFieldType} {E F G: tvsType R}.
788+ (* {s : GRing.Scale.law R F}. *)
802789
803790Implicit Types (r : R) (f g : {linear_continuous E -> F}) (h : {linear_continuous F -> G}).
804791
@@ -809,6 +796,7 @@ Proof.
809796by apply: cst_continuous.
810797Qed .
811798
799+ (*
812800Lemma it_is_additive r : @Algebra.isNmodMorphism F F (s r).
813801Proof.
814802split.
@@ -826,13 +814,16 @@ Proof.
826814move => r x y /=.
827815by rewrite raddf0 addr0.
828816Qed.
817+ *)
829818
830819HB.instance Definition _ := isContinuous.Build E F \0 null_fun_continuous.
831820
832821Lemma lcfun0 : (\0 : {linear_continuous E -> F}) =1 cst 0 :> (_ -> _). Proof . by []. Qed .
833822
834- (* NB TODO: move section cvg_composition_pseudometric in normedtype.v here, to generalize it on tvstype *)
835- (*Next lemmas are duplicates *)
823+ (* NB TODO: move section cvg_composition_pseudometric in normedtype.v here, to
824+ generalize it on tvstype *)
825+ (* Next lemmas are duplicates *)
826+ (* TODO once PR1544 is merged *)
836827
837828Lemma cvgD (U : set_system E) {FF : Filter U} f g a b : f @ U --> a -> g @ U --> b -> (f \+ g) @ U --> a + b.
838829Proof .
@@ -852,8 +843,9 @@ HB.instance Definition _ f g := isContinuous.Build E F (f \+ g) (@continuousD f
852843
853844Lemma cvgZ (U : set_system E) {FF : Filter U} l f r a : l @ U --> r -> f @ U --> a ->
854845 l x *: f x @[x --> U] --> r *: a.
855- Proof . move=> ? ?; apply: continuous2_cvg => //. Fail apply: scale_continuous.
856- Admitted . (* weird, normedtype uses "apply scale_continuous" which leads to infinite computation here *)
846+ Proof .
847+ move=> ? ?; apply: continuous2_cvg => //; exact: (scale_continuous (_, _)).
848+ Qed .
857849
858850Lemma cvgZr (U : set_system E) {FF : Filter U} k f a : f @ U --> a -> k \*: f @ U --> k *: a.
859851Proof . apply: cvgZ => //; exact: cvg_cst. Qed .
@@ -863,24 +855,9 @@ Proof. by move=> /= x; apply: cvgZr; apply: cts_fun. Qed.
863855
864856HB.instance Definition _ r g := isContinuous.Build E F (r \*: g) (@continuousM r g).
865857
866- Lemma continuousB f : continuous (\- f).
867- Proof .
868- Admitted .
869-
870- HB.instance Definition _ f := isContinuous.Build E F (\- f) (@continuousB f).
871-
872- Lemma add_fun_is_linear f g : linear (f \+ g).
873- Proof .
874- Admitted .
875-
876- HB.instance Definition _ f := isContinuous.Build E F (\- f) (@continuousN f).
877-
878- (* Context (f g : {linear_continuous E -> F}) (r : R). *)
879- (* Check (r \*: f \+ g : {linear_continuous E -> F}). *)
880-
881- Lemma lcfun_submod_closed : submod_closed (@lcfun R E F s).
858+ Lemma lcfun_submod_closed : submod_closed (@lcfun R E F *:%R).
882859Proof .
883- split; first by rewrite inE; split; first apply/linearP; apply: cst_continuous.
860+ (* split; first by rewrite inE; split; first apply/linearP; apply: cst_continuous.
884861 move=> r /= _ _ /lcfunE[f] /lcfunE[g].
885862(* rewrite !inE /= => [[lf cf] [lg cg]]; split.*)
886863 (* HB pack et subst *) (* move => l u v. apply/linearP.*)
@@ -894,20 +871,31 @@ Proof.
894871 Fail rewrite -[s]/(GRing.scale).
895872 Unset Printing Notations.
896873 admit.
897- apply: continuousD.
898- Admitted .
874+ apply: continuousD.*)
875+ split; first by rewrite inE; split; first apply/linearP; apply: cst_continuous.
876+ move=> r /= _ _ /lcfunE[f] /lcfunE[g].
877+ by rewrite inE /=; split; [exact: linearP | exact: continuousD].
878+ Qed .
879+
880+ (*HB.instance Definition _ f := isContinuous.Build E F (\- f) (@continuousB f). *)
881+
882+ Lemma add_fun_is_linear f g : linear (f \+ g).
883+ Proof .
884+ Admitted .
885+
886+ HB.instance Definition _ f := isContinuous.Build E F (\- f) (@continuousN f).
887+
888+ (* Context (f g : {linear_continuous E -> F}) (r : R). *)
889+ (* Check (r \*: f \+ g : {linear_continuous E -> F}). *)
899890
900891HB.instance Definition _ :=
901892 @GRing.isSubmodClosed.Build _ _ lcfun lcfun_submod_closed.
902893
903894HB.instance Definition _ :=
904- [SubChoice_isSubLmodule of {linear_continuous E -> F | s} by <:].
905-
906- Check {linear_continuous E -> F |s } : lmodType _ .
895+ [SubChoice_isSubLmodule of {linear_continuous E -> F } by <:].
907896
908897End lcfun_lmodtype.
909898
910-
911899(* make use of {family fam, U -> V} *)
912900
913901Section test.
0 commit comments