NRR.Geometry.ConvexBody — translations and positive scalings #
This module provides a reusable API for translations K.translate v and positive
scalings K.scalePos r hr of solid convex bodies over a real normed vector space.
The two constructors are
ConvexBody.translate K v : ConvexBody Ewith carrier(fun x => v + x) '' K;ConvexBody.scalePos K r hr : ConvexBody Ewith carrier(fun x => r • x) '' K(requiring0 < r, so that scaling is a homeomorphism preserving the interior).
together with carrier/membership simp lemmas, the identity/composition laws, and the
translation–scaling interaction.
Why 0 < r #
Scaling by r = 0 collapses everything to a point and destroys the nonempty-interior
(solidity) field of a ConvexBody; it is therefore excluded. For any r ≠ 0 scaling is a
homeomorphism (Homeomorph.smulOfNeZero), and we specialise to the positive case as required
by the downstream width / support-function development.
Mathlib lemmas reused #
Convex.translate,Convex.smul— convexity of translates and scalings.IsCompact.image,continuous_const_smul,continuous_add— compactness of images.Homeomorph.addLeft,Homeomorph.smulOfNeZero,Homeomorph.image_interior— interior preservation.Set.image_smul,Set.image_image— carrier bookkeeping.
Import policy #
Following the library-wide policy, Basic.lean already pulls in import Mathlib, so no extra
imports are required here.
Translation #
The translate of a convex body by a vector v, as a convex body with carrier
(fun x => v + x) '' K. Translation is a homeomorphism, so solidity is preserved.
Equations
Instances For
Positive scaling #
The positive scaling of a convex body by r > 0, as a convex body with carrier
(fun x => r • x) '' K. Scaling by a nonzero scalar is a homeomorphism, so solidity is
preserved.