Documentation

LeanModulus.Common.FamilyOfObjects

Families of objects #

Families of objects (Section 1.5 of the FEU paper): a common framework for spanning trees, paths, cuts, etc., each identified with its usage vector.

Everything here is stated over ℝ≥0: Density E := E → ℝ≥0 has no subtraction, only the semiring/convexity/(intrinsic ℝ≥0-Pi) topological structure needed for Adm, Equivalent, and FulkersonDual. The companion coercion into E → ℝ (needed to bring in real-analysis machinery like Krein-Milman) lives in LeanModulus.Common.ToReal; anything that actually needs that coercion belongs there instead of here.

@[reducible, inline]
abbrev FamilyOfObjects (E : Type u_1) :
Type u_1

A family of objects on an edge type E: a set of usage vectors γ : E → ℝ≥0, one for each object (spanning tree, path, cut, etc.) in the family.

Equations
Instances For

    Every object in Γ has positive usage on at least one edge. This rules out the trivial all-zero object, against which no density could ever be admissible.

    Equations
    Instances For
      @[reducible, inline]
      abbrev Density (E : Type u_1) :
      Type u_1

      A density on the edge type E assigns a nonnegative cost to each edge.

      Equations
      Instances For
        noncomputable def Density.length {E : Type u_1} (ρ : Density E) (γ : ENNReal) :

        The length of an object γ with respect to a density ρ is the total cost it incurs: ∑ e, γ e * ρ e. We use finsum (rather than Finset.sum over Finset.univ) so that this doesn't need a Fintype E instance, only Finite E.

        Equations
        Instances For
          theorem Density.length_add {E : Type u_1} [Finite E] (ρ₁ ρ₂ : Density E) (γ : ENNReal) :
          (ρ₁ + ρ₂).length γ = ρ₁.length γ + ρ₂.length γ

          The length with respect to the sum of two densities is the sum of the lengths.

          theorem Density.length_smul {E : Type u_1} (ρ : Density E) (c : NNReal) (γ : ENNReal) :
          (c ρ).length γ = c * ρ.length γ

          The length with respect to a scalar multiple of a density is the scalar multiple of the length.

          def Density.IsAdmissible {E : Type u_1} (ρ : Density E) (Γ : FamilyOfObjects E) :

          A density ρ is admissible for a family Γ if every object in Γ has length at least 1 with respect to ρ.

          Equations
          Instances For
            theorem Density.continuous_length {E : Type u_1} [Finite E] (γ : ENNReal) :
            Continuous fun (ρ : Density E) => ρ.length γ

            The length function is continuous (in the topology of densities).

            def FamilyOfObjects.Adm {E : Type u_1} (Γ : FamilyOfObjects E) :

            The admissible set of a family Γ: all densities admissible for it.

            Equations
            Instances For

              The admissible set Adm(Γ)of a family Γ is convex.

              The admissible set Adm(Γ)of a family Γ is closed.

              Two families of objects are equivalent if they have the same admissible set, i.e. they impose exactly the same constraints on densities. This avoids over-distinguishing one family from another obtained by adding or removing redundant objects (objects whose admissibility constraint is implied by the others).

              Equations
              Instances For
                @[implicit_reducible]
                Equations

                The Fulkerson dual family of Γ: the extreme points of its admissible set. Set.extremePoints only needs a Semiring/SMul structure (not a full vector space with subtraction), so this is stated directly over ℝ≥0.

                Equations
                Instances For