Documentation

LeanPool.NandakumarRamanaRao.NRR.Geometry.ConvexBody.Basic

NRR.Geometry.ConvexBody — bundled compact convex bodies with nonempty interior #

This module introduces the central bundled object

NRR.Geometry.ConvexBody E

a compact convex subset of a topological ℝ-module E with nonempty interior. downstream modules are expected to use ConvexBody through the accessor/extensionality API below without ever unfolding its fields.

Relationship to Mathlib's ConvexBody #

Mathlib already ships a bundled

_root_.ConvexBody V -- carrier, convex', isCompact', nonempty'

(see Mathlib.Analysis.Convex.Body), but its solidity requirement is only that the carrier be nonempty (nonempty'), not that the interior be nonempty. The fair-partition development needs the stronger solid condition (nonempty interior, hence positive Lebesgue measure in finite dimensions), so we introduce a dedicated bundled structure whose proof field is interior_nonempty'. To avoid clashing with the root ConvexBody used elsewhere in the library, this structure lives in the NRR.Geometry namespace; the two never collide because that namespace is not opened by the modules that use Mathlib's _root_.ConvexBody.

Design notes #

Import policy #

Following the library-wide policy fixed in AI_CONTEXT.md, this file uses the whole-library import Mathlib. The concrete dependencies are lightweight (Convex, IsCompact, interior, Set membership/extensionality).

A convex body (in the solid sense used throughout this development): a compact convex subset of a topological ℝ-module with nonempty interior.

Instances For
    @[instance_reducible]

    Coercion of a convex body to its underlying set of points.

    Equations
    @[instance_reducible]

    Membership x ∈ K unfolds to membership in the carrier.

    Equations
    @[simp]

    The carrier of a convex body is convex.

    The carrier of a convex body is compact.

    The carrier of a convex body has nonempty interior.

    A convex body is nonempty (its interior is nonempty and the interior is contained in it).

    theorem NRR.Geometry.ConvexBody.ext {E : Type u_1} [TopologicalSpace E] [AddCommMonoid E] [Module ℝ E] {K L : ConvexBody E} (h : K.carrier = L.carrier) :
    K = L

    Extensionality: two convex bodies with equal carriers are equal. The remaining proof fields are equal by proof irrelevance.

    theorem NRR.Geometry.ConvexBody.ext_iff_mem {E : Type u_1} [TopologicalSpace E] [AddCommMonoid E] [Module ℝ E] {K L : ConvexBody E} :
    K = L ↔ ∀ (x : E), x ∈ K.carrier ↔ x ∈ L.carrier

    Membership extensionality: two convex bodies are equal iff they have the same points.

    @[simp]
    theorem NRR.Geometry.ConvexBody.coe_mk {E : Type u_1} [TopologicalSpace E] [AddCommMonoid E] [Module ℝ E] (s : Set E) (hconv : Convex ℝ s) (hcomp : IsCompact s) (hint : (interior s).Nonempty) :
    { carrier := s, convex' := hconv, isCompact' := hcomp, interior_nonempty' := hint }.carrier = s