Skip to content

Commit 91e0d5b

Browse files
feat(Geometry/Convex/Cone): Minor additions to pointed cones (#37464)
Minor additions to pointed cones: * `PointedCone.ofSubmodule_le_ofSubmodule` and `PointedCone.ofSubmodule_lt_ofSubmodule`. These are not made simp lemmas, instead the underlying `Submodule.restrictScalars_le` and `Submodule.restrictScalars_lt` have been changed into simp lemmas. * `PointedCone.hull_le_span` as a short form of `Submodule.span_le_restrictScalars R≥0 R s` Co-authored by: Artie Khovanov Co-authored-by: Martin Winter <martin.winter.math@gmail.com>
1 parent 02aac9c commit 91e0d5b

2 files changed

Lines changed: 22 additions & 16 deletions

File tree

Mathlib/Algebra/Module/Submodule/RestrictScalars.lean

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,14 +82,12 @@ instance restrictScalars.isScalarTower (p : Submodule R M) :
8282
smul_assoc r s x := Subtype.ext <| smul_assoc r s (x : M)
8383

8484
variable {R M} in
85-
@[gcongr]
86-
lemma restrictScalars_le {s t : Submodule R M} :
85+
@[gcongr, simp] lemma restrictScalars_le {s t : Submodule R M} :
8786
s.restrictScalars S ≤ t.restrictScalars S ↔ s ≤ t :=
8887
Iff.rfl
8988

9089
variable {R M} in
91-
@[gcongr]
92-
lemma restrictScalars_lt {s t : Submodule R M} :
90+
@[gcongr, simp] lemma restrictScalars_lt {s t : Submodule R M} :
9391
s.restrictScalars S < t.restrictScalars S ↔ s < t :=
9492
Iff.rfl
9593

Mathlib/Geometry/Convex/Cone/Pointed.lean

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ abbrev PointedCone (R E)
3535

3636
namespace PointedCone
3737

38-
open Function Submodule
38+
open Function Submodule Pointwise
3939

4040
open scoped Pointwise
4141

@@ -51,11 +51,18 @@ instance : Coe (Submodule R E) (PointedCone R E) := ⟨ofSubmodule⟩
5151

5252
@[simp] lemma coe_ofSubmodule (S : Submodule R E) : (ofSubmodule S : Set E) = S := rfl
5353

54-
lemma mem_ofSubmodule_iff {S : Submodule R E} {x : E} : x ∈ (S : PointedCone R E) ↔ x ∈ S := by rfl
54+
lemma mem_ofSubmodule_iff {S : Submodule R E} {x : E} : x ∈ (S : PointedCone R E) ↔ x ∈ S := .rfl
5555

5656
lemma ofSubmodule_inj {S T : Submodule R E} : ofSubmodule S = ofSubmodule T ↔ S = T :=
5757
restrictScalars_inj ..
5858

59+
lemma ofSubmodule_le_ofSubmodule {S T : Submodule R E} : ofSubmodule S ≤ ofSubmodule T ↔ S ≤ T :=
60+
.rfl
61+
62+
lemma ofSubmodule_lt_ofSubmodule {S T : Submodule R E} : ofSubmodule S < ofSubmodule T ↔ S < T :=
63+
.rfl
64+
65+
set_option backward.isDefEq.respectTransparency false in
5966
/-- Coercion from submodules to pointed cones as an order embedding. -/
6067
abbrev ofSubmoduleEmbedding : Submodule R E ↪o PointedCone R E :=
6168
restrictScalarsEmbedding ..
@@ -85,7 +92,8 @@ lemma ofSubmodule_iSup (s : Set (Submodule R E)) : ⨆ S ∈ s, S = ⨆ S ∈ s,
8592
variable {R E : Type*}
8693
variable [Semiring R] [PartialOrder R] [IsOrderedRing R] [AddCommGroup E] [Module R E]
8794

88-
lemma neg_ofSubmodule (S : Submodule R E) : -(ofSubmodule S) = ofSubmodule (-S) :=
95+
set_option backward.isDefEq.respectTransparency false in
96+
lemma neg_ofSubmodule (S : Submodule R E) : -(ofSubmodule S) = ofSubmodule (-S) :=
8997
neg_restrictScalars S
9098

9199
end Submodule
@@ -180,6 +188,10 @@ lemma subset_hull {s : Set E} : s ⊆ PointedCone.hull R s := subset_span
180188
@[deprecated "`PointedCone.span` was renamed to `PointedCone.hull`" (since := "2026-03-22")]
181189
alias subset_span := subset_hull
182190

191+
set_option backward.isDefEq.respectTransparency false in
192+
variable (R) in
193+
lemma hull_le_span (s : Set E) : hull R s ≤ span R s := span_le_restrictScalars R≥0 R s
194+
183195
/-- Elements of the cone hull are expressible as conical combination of elements from s. -/
184196
lemma mem_hull_set {s : Set E} : x ∈ hull R s ↔
185197
∃ c : E →₀ R, ↑c.support ⊆ s ∧ (∀ y, 0 ≤ c y) ∧ c.sum (fun m r => r • m) = x := by
@@ -321,17 +333,12 @@ def lineal (C : PointedCone R E) : Submodule R E where
321333
· simpa using And.intro (C.smul_mem hr hx.1) (C.smul_mem hr hx.2)
322334
· have hr := le_of_lt <| neg_pos_of_neg <| lt_of_not_ge hr
323335
simpa using And.intro (C.smul_mem hr hx.2) (C.smul_mem hr hx.1)
324-
@[simp]
325-
lemma ofSubmodule_lineal (C : PointedCone R E) : C.lineal = C ⊓ -C :=
326-
rfl
327336

328-
@[simp]
329-
lemma mem_lineal {C : PointedCone R E} {x : E} : x ∈ C.lineal ↔ x ∈ C ∧ -x ∈ C := by
330-
rfl
337+
@[simp] lemma ofSubmodule_lineal (C : PointedCone R E) : C.lineal = C ⊓ -C := rfl
331338

332-
@[simp]
333-
theorem support_eq {C : PointedCone R E} : C.support = C.lineal.toAddSubgroup :=
334-
rfl
339+
@[simp] lemma mem_lineal {C : PointedCone R E} {x : E} : x ∈ C.lineal ↔ x ∈ C ∧ -x ∈ C := .rfl
340+
341+
@[simp] theorem support_eq (C : PointedCone R E) : C.support = C.lineal.toAddSubgroup := rfl
335342

336343
/-- The lineality space of a cone is the largest submodule contained in the cone. -/
337344
theorem gc_ofSubmodule_lineal :
@@ -346,6 +353,7 @@ theorem lineal_eq_sSup (C : PointedCone R E) : C.lineal = sSup {S : Submodule R
346353
end Lineal
347354

348355
section Salient
356+
349357
variable [Semiring R] [PartialOrder R] [IsOrderedRing R] [AddCommGroup E] [Module R E]
350358

351359
/-- A pointed cone is salient iff the intersection of the cone with its negative

0 commit comments

Comments
 (0)