@@ -27,6 +27,25 @@ Local Open Scope classical_set_scope.
27
27
Local Open Scope ring_scope.
28
28
Local Open Scope quotient_scope.
29
29
30
+ HB.mixin Record IsContinuous {T U : topologicalType} (f : T -> U) :=
31
+ { continuous_fun : continuous f }.
32
+
33
+ HB.structure Definition JustContinuous {T U : topologicalType}
34
+ := {f of @IsContinuous T U f}.
35
+
36
+ HB.structure Definition ContinuousFun {T U : topologicalType}
37
+ (A : set T) (B : set U) :=
38
+ {f of
39
+ @IsContinuous (subspace_topologicalType A) U f &
40
+ @Fun (subspace_topologicalType A) U A B f
41
+ }.
42
+
43
+ Notation "{ 'continuous' A >-> B }" :=
44
+ (@ContinuousFun.type _ _ A B) : form_scope.
45
+ Notation "[ 'continuous' 'of' f ]" :=
46
+ ([the (@ContinuousFun.type _ _ _ _) of (f: _ -> _)]) : form_scope.
47
+
48
+
30
49
HB.mixin Record IsParametrization {R : realType} (f : R -> R) :=
31
50
{
32
51
parametrize_cts : {within `[0,1], continuous f};
@@ -156,26 +175,50 @@ Lemma inv_parametrization_can_l: {in `[0,1], cancel inv_parametrization f}.
156
175
Proof . by move=> z zI; apply: funK; rewrite mem_setE. Qed .
157
176
158
177
End Inverses.
159
- End Parametrizations.
160
178
161
- HB.mixin Record IsContinuous {T U : topologicalType} (f : T -> U) :=
162
- { continuous_fun : continuous f }.
179
+ Definition rev_param (x : R) : R := `1- x.
163
180
164
- HB.structure Definition JustContinuous {T U : topologicalType}
165
- := {f of @IsContinuous T U f}.
181
+ Local Lemma rev_param_funS : set_fun `[0,1]%classic `[0,1]%classic rev_param.
182
+ Proof .
183
+ rewrite ?set_itvcc => x /= /andP [] xnng xle1; apply/andP.
184
+ split; [exact: onem_ge0| exact: onem_le1].
185
+ Qed .
166
186
167
- HB.structure Definition ContinuousFun {T U : topologicalType}
168
- (A : set T) (B : set U) :=
169
- {f of
170
- @IsContinuous (subspace_topologicalType A) U f &
171
- @Fun (subspace_topologicalType A) U A B f
172
- }.
187
+ HB.instance Definition _ := IsFun.Build R R _ _ _ rev_param_funS.
173
188
174
- Notation "{ 'continuous' A >-> B }" :=
175
- (@ContinuousFun.type _ _ A B) : form_scope.
176
- Notation "[ 'continuous' 'of' f ]" :=
177
- ([the (@ContinuousFun.type _ _ _ _) of (f: _ -> _)]) : form_scope.
189
+ Lemma rev_param_continuous : {within `[0,1], continuous rev_param}.
190
+ Proof .
191
+ move=> z; apply: continuous_subspaceT.
192
+ move=> ?; apply: (@continuousD R R R ); first exact: cvg_cst.
193
+ exact: opp_continuous.
194
+ Qed .
178
195
196
+ Section Reversal.
197
+ Local Open Scope fun_scope.
198
+ Variables (f : {parametrization R}).
199
+
200
+ Let g := rev_param \o f \o rev_param.
201
+
202
+ Local Lemma rev_rev_continuous : {within `[0,1], continuous g}.
203
+ Proof .
204
+ move=> x.
205
+ apply: (@continuous_comp (subspace_topologicalType `[0,1]) (subspace_topologicalType `[0,1]) R).
206
+ exact/subspaceT_continuous/rev_param_continuous.
207
+ apply: (@continuous_comp (subspace_topologicalType `[0,1]) (subspace_topologicalType `[0,1]) _).
208
+ exact/subspaceT_continuous/parametrize_cts.
209
+ exact: rev_param_continuous.
210
+ Qed .
211
+
212
+ Local Lemma rev_rev_init : g 0 = 0.
213
+ Proof . by rewrite /g /= /rev_param /= onem0 parametrize_final onem1. Qed .
214
+
215
+ Local Lemma rev_rev_final : g 1 = 1.
216
+ Proof . by rewrite /g /= /rev_param /= onem1 parametrize_init onem0. Qed .
217
+
218
+ HB.instance Definition _ := @IsParametrization.Build
219
+ _ _ rev_rev_continuous rev_rev_init rev_rev_final.
220
+ End Reversal.
221
+ End Parametrizations.
179
222
Section Reparametrization.
180
223
181
224
Context {R : realType} {T : topologicalType} (B : set T).
245
288
246
289
Canonical pi_path_image_mono := PiMono1 path_image_mono.
247
290
248
- Definition path_precompose (h : R -> R) := lift_op1 Path (fun f => f \o h ).
291
+ Definition path_reverse (h : R -> R) := lift_op1 Path (fun f => f \o rev_param ).
249
292
250
293
End Reparametrization.
251
294
0 commit comments