Definition Tietze_extension_func : point_set X -> point_set RTop.
refine (proj1_sig (proj1_sig (constructive_definite_description
(fun f:point_set (UniformTopology R_metric (fun _:point_set X => 0)
R_metric_is_metric X_nonempty) =>
net_limit convert_approx_to_uniform_space f
(I:=nat_DS) (X:=UniformTopology R_metric (fun _:point_set X => 0)
R_metric_is_metric X_nonempty)) _))).
apply -> unique_existence; split.
assert (complete (uniform_metric R_metric (fun _:point_set X => 0)
R_metric_is_metric X_nonempty)
(uniform_metric_is_metric _ _ _ _ _ _)).
apply uniform_metric_complete.
exact R_metric_complete.
apply H.
exact extension_approximation_seq_cauchy.
apply Hausdorff_impl_net_limit_unique.
apply T3_sep_impl_Hausdorff.
apply normal_sep_impl_T3_sep.
apply metrizable_impl_normal_sep.
exists (uniform_metric R_metric (fun _:point_set X => 0)
R_metric_is_metric X_nonempty).
apply (uniform_metric_is_metric _ _ R_metric (fun _:point_set X => 0)
R_metric_is_metric X_nonempty).
apply MetricTopology_metrizable.
Defined.

(* Specifications: *)
Lemma Tietze_extension_func_bound: forall x:point_set X,
-1 <= Tietze_extension_func x <= 1.
Lemma Tietze_extension_func_is_extension:
forall x:point_set (SubspaceTopology F),
Tietze_extension_func (subspace_inc F x) = f x.