Documentation

Mathlib.Analysis.Convex.Cone.Pointed

Pointed cones #

A pointed cone is defined to be a submodule of a module where the scalars are restricted to be nonnegative. This is equivalent to saying that as a set a pointed cone is convex cone which contains 0. This is a bundled version of ConvexCone.Pointed. We choose the submodule definition as it allows us to use the Module API to work with convex cones.

@[inline, reducible]
abbrev PointedCone (๐•œ : Type u_5) (E : Type u_6) [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] :
Type u_6

A pointed cone is a submodule of a module with scalars restricted to being nonnegative.

Equations
Instances For
    def PointedCone.toConvexCone {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] (S : PointedCone ๐•œ E) :
    ConvexCone ๐•œ E

    Every pointed cone is a convex cone.

    Equations
    • โ†‘S = { carrier := โ†‘S, smul_mem' := โ‹ฏ, add_mem' := โ‹ฏ }
    Instances For
      Equations
      • PointedCone.instCoePointedConeConvexConeToSMulToZeroToAddMonoidToSMulZeroClassToZeroToMonoidWithZeroToSemiringToSMulWithZeroToMulActionWithZero = { coe := PointedCone.toConvexCone }
      theorem PointedCone.toConvexCone_injective {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] :
      Function.Injective PointedCone.toConvexCone
      @[simp]
      theorem PointedCone.toConvexCone_pointed {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] (S : PointedCone ๐•œ E) :
      theorem PointedCone.ext {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] {S : PointedCone ๐•œ E} {T : PointedCone ๐•œ E} (h : โˆ€ (x : E), x โˆˆ S โ†” x โˆˆ T) :
      S = T
      instance PointedCone.instZero {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] (S : PointedCone ๐•œ E) :
      Zero โ†ฅS
      Equations
      def ConvexCone.toPointedCone {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] {S : ConvexCone ๐•œ E} (hS : ConvexCone.Pointed S) :
      PointedCone ๐•œ E

      The PointedCone constructed from a pointed ConvexCone.

      Equations
      • ConvexCone.toPointedCone hS = { toAddSubmonoid := { toAddSubsemigroup := { carrier := โ†‘S, add_mem' := โ‹ฏ }, zero_mem' := hS }, smul_mem' := โ‹ฏ }
      Instances For
        @[simp]
        theorem ConvexCone.mem_toPointedCone {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] {S : ConvexCone ๐•œ E} (hS : ConvexCone.Pointed S) (x : E) :
        @[simp]
        theorem ConvexCone.coe_toPointedCone {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] {S : ConvexCone ๐•œ E} (hS : ConvexCone.Pointed S) :
        instance PointedCone.canLift {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] :
        CanLift (ConvexCone ๐•œ E) (PointedCone ๐•œ E) PointedCone.toConvexCone ConvexCone.Pointed
        Equations
        • โ‹ฏ = โ‹ฏ

        Maps between pointed cones #

        There is already a definition of maps between submodules, Submodule.map. In our case, these maps are induced from linear maps between the ambient modules that are linear over nonnegative scalars. Such maps are unlikely to be of any use in practice. So, we construct some API to define maps between pointed cones induced from linear maps between the ambient modules that are linear over all scalars.

        def PointedCone.map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] (f : E โ†’โ‚—[๐•œ] F) (S : PointedCone ๐•œ E) :
        PointedCone ๐•œ F

        The image of a pointed cone under a ๐•œ-linear map is a pointed cone.

        Equations
        Instances For
          @[simp]
          theorem PointedCone.toConvexCone_map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] (S : PointedCone ๐•œ E) (f : E โ†’โ‚—[๐•œ] F) :
          โ†‘(PointedCone.map f S) = ConvexCone.map f โ†‘S
          @[simp]
          theorem PointedCone.coe_map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] (S : PointedCone ๐•œ E) (f : E โ†’โ‚—[๐•œ] F) :
          โ†‘(PointedCone.map f S) = โ‡‘f '' โ†‘S
          @[simp]
          theorem PointedCone.mem_map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] {f : E โ†’โ‚—[๐•œ] F} {S : PointedCone ๐•œ E} {y : F} :
          y โˆˆ PointedCone.map f S โ†” โˆƒ x โˆˆ S, f x = y
          theorem PointedCone.map_map {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [AddCommMonoid G] [Module ๐•œ G] (g : F โ†’โ‚—[๐•œ] G) (f : E โ†’โ‚—[๐•œ] F) (S : PointedCone ๐•œ E) :
          PointedCone.map g (PointedCone.map f S) = PointedCone.map (g โˆ˜โ‚— f) S
          @[simp]
          theorem PointedCone.map_id {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] (S : PointedCone ๐•œ E) :
          PointedCone.map LinearMap.id S = S
          def PointedCone.comap {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] (f : E โ†’โ‚—[๐•œ] F) (S : PointedCone ๐•œ F) :
          PointedCone ๐•œ E

          The preimage of a convex cone under a ๐•œ-linear map is a convex cone.

          Equations
          Instances For
            @[simp]
            theorem PointedCone.coe_comap {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] (f : E โ†’โ‚—[๐•œ] F) (S : PointedCone ๐•œ F) :
            โ†‘(PointedCone.comap f S) = โ‡‘f โปยน' โ†‘S
            @[simp]
            theorem PointedCone.comap_id {๐•œ : Type u_1} {E : Type u_2} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] (S : PointedCone ๐•œ E) :
            PointedCone.comap LinearMap.id S = S
            theorem PointedCone.comap_comap {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} {G : Type u_4} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] [AddCommMonoid G] [Module ๐•œ G] (g : F โ†’โ‚—[๐•œ] G) (f : E โ†’โ‚—[๐•œ] F) (S : PointedCone ๐•œ G) :
            @[simp]
            theorem PointedCone.mem_comap {๐•œ : Type u_1} {E : Type u_2} {F : Type u_3} [OrderedSemiring ๐•œ] [AddCommMonoid E] [Module ๐•œ E] [AddCommMonoid F] [Module ๐•œ F] {f : E โ†’โ‚—[๐•œ] F} {S : PointedCone ๐•œ F} {x : E} :
            def PointedCone.positive (๐•œ : Type u_1) (E : Type u_2) [OrderedSemiring ๐•œ] [OrderedAddCommGroup E] [Module ๐•œ E] [OrderedSMul ๐•œ E] :
            PointedCone ๐•œ E

            The positive cone is the pointed cone formed by the set of nonnegative elements in an ordered module.

            Equations
            Instances For
              @[simp]
              theorem PointedCone.mem_positive (๐•œ : Type u_1) (E : Type u_2) [OrderedSemiring ๐•œ] [OrderedAddCommGroup E] [Module ๐•œ E] [OrderedSMul ๐•œ E] {x : E} :
              @[simp]
              theorem PointedCone.toConvexCone_positive (๐•œ : Type u_1) (E : Type u_2) [OrderedSemiring ๐•œ] [OrderedAddCommGroup E] [Module ๐•œ E] [OrderedSMul ๐•œ E] :
              โ†‘(PointedCone.positive ๐•œ E) = ConvexCone.positive ๐•œ E

              The inner dual cone of a pointed cone is a pointed cone.

              Equations
              Instances For
                @[simp]
                theorem PointedCone.mem_dual {E : Type u_5} [NormedAddCommGroup E] [InnerProductSpace โ„ E] {S : PointedCone โ„ E} {y : E} :
                y โˆˆ PointedCone.dual S โ†” โˆ€ โฆƒx : Eโฆ„, x โˆˆ S โ†’ 0 โ‰ค โŸชx, yโŸซ_โ„