Module docstring
{"# Lipschitz continuous functions
A map f : α → β between two (extended) metric spaces is called Lipschitz continuous
with constant K ≥ 0 if for all x, y we have edist (f x) (f y) ≤ K * edist x y.
For a metric space, the latter inequality is equivalent to dist (f x) (f y) ≤ K * dist x y.
There is also a version asserting this inequality only for x and y in some set s.
Finally, f : α → β is called locally Lipschitz continuous if each x : α has a neighbourhood
on which f is Lipschitz continuous (with some constant).
In this file we provide various ways to prove that various combinations of Lipschitz continuous functions are Lipschitz continuous. We also prove that Lipschitz continuous functions are uniformly continuous, and that locally Lipschitz functions are continuous.
Main definitions and lemmas
LipschitzWith K f: states thatfis Lipschitz with constantK : ℝ≥0LipschitzOnWith K f s: states thatfis Lipschitz with constantK : ℝ≥0on a setsLipschitzWith.uniformContinuous: a Lipschitz function is uniformly continuousLipschitzOnWith.uniformContinuousOn: a function which is Lipschitz on a setsis uniformly continuous ons.LocallyLipschitz f: states thatfis locally LipschitzLocallyLipschitzOn f s: states thatfis locally Lipschitz ons.LocallyLipschitz.continuous: a locally Lipschitz function is continuous.
Implementation notes
The parameter K has type ℝ≥0. This way we avoid conjunction in the definition and have
coercions both to ℝ and ℝ≥0∞. Constructors whose names end with ' take K : ℝ as an
argument, and return LipschitzWith (Real.toNNReal K) f.
"}