Skip to content

Commit f7ba375

Browse files
mkerjeanaffeldt-aist
authored andcommitted
end lcfun_lmodtype with Cyril
1 parent b6f7fd8 commit f7ba375

1 file changed

Lines changed: 44 additions & 56 deletions

File tree

theories/tvs.v

Lines changed: 44 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -535,9 +535,11 @@ Qed.
535535

536536
Local Lemma standard_scale_continuous : continuous (fun z : R^o * R^o => z.1 *: z.2).
537537
Proof.
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*)
541543
move=> [k x]; apply/cvg_ballP => e le0 /=.
542544
pose M : R := maxr (`|e| + 1) (maxr `|k| (`|x| + `|x| + 2^-1 + 1)).
543545
have M0l : 0 < `|e| + 1 by rewrite ltr_wpDl.
@@ -674,7 +676,7 @@ End prod_Tvs.
674676

675677

676678
HB.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

680682
HB.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.
709711
Notation "{ 'linear_continuous' U -> V }" := {linear_continuous U%type -> V%type | *:%R}
710712
: type_scope.
711-
712713

713714
Section lcfun.
714715
Context {R : numDomainType} {E : NbhsLmodule.type R}
@@ -741,13 +742,6 @@ congr LinearContinuous.Class.
741742
- by congr isContinuous.Axioms_; apply: Prop_irrelevance.
742743
Qed.
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-
751745
Lemma lcfun_valP f (Pf : f \in lcfun) : lcfun_Sub Pf = f :> (_ -> _).
752746
Proof. by []. Qed.
753747

@@ -757,28 +751,21 @@ Lemma lcfuneqP (f g : {linear_continuous E -> F | s}) : f = g <-> f =1 g.
757751
Proof. by split=> [->//|fg]; apply/val_inj/funext. Qed.
758752

759753
HB.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).
773760
Proof.
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.
779767
Section lcfun_comp.
780768

781-
782769
Context {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-
798784
End lcfun_comp.
799785

800786
Section 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

803790
Implicit Types (r : R) (f g : {linear_continuous E -> F}) (h : {linear_continuous F -> G}).
804791

@@ -809,6 +796,7 @@ Proof.
809796
by apply: cst_continuous.
810797
Qed.
811798

799+
(*
812800
Lemma it_is_additive r : @Algebra.isNmodMorphism F F (s r).
813801
Proof.
814802
split.
@@ -826,13 +814,16 @@ Proof.
826814
move => r x y /=.
827815
by rewrite raddf0 addr0.
828816
Qed.
817+
*)
829818

830819
HB.instance Definition _ := isContinuous.Build E F \0 null_fun_continuous.
831820

832821
Lemma 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

837828
Lemma cvgD (U : set_system E) {FF : Filter U} f g a b : f @ U --> a -> g @ U --> b -> (f \+ g) @ U --> a + b.
838829
Proof.
@@ -852,8 +843,9 @@ HB.instance Definition _ f g := isContinuous.Build E F (f \+ g) (@continuousD f
852843

853844
Lemma 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

858850
Lemma cvgZr (U : set_system E) {FF : Filter U} k f a : f @ U --> a -> k \*: f @ U --> k *: a.
859851
Proof. apply: cvgZ => //; exact: cvg_cst. Qed.
@@ -863,24 +855,9 @@ Proof. by move=> /= x; apply: cvgZr; apply: cts_fun. Qed.
863855

864856
HB.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).
882859
Proof.
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

900891
HB.instance Definition _ :=
901892
@GRing.isSubmodClosed.Build _ _ lcfun lcfun_submod_closed.
902893

903894
HB.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

908897
End lcfun_lmodtype.
909898

910-
911899
(* make use of {family fam, U -> V} *)
912900

913901
Section test.

0 commit comments

Comments
 (0)