@@ -208,6 +208,8 @@ def comap (f : E →ₗ[𝕜] F) (S : convex_cone 𝕜 F) : convex_cone 𝕜 E :
208
208
smul_mem' := λ c hc x hx, by { rw [mem_preimage, f.map_smul c], exact S.smul_mem hc hx },
209
209
add_mem' := λ x hx y hy, by { rw [mem_preimage, f.map_add], exact S.add_mem hx hy } }
210
210
211
+ @[simp] lemma coe_comap (f : E →ₗ[𝕜] F) (S : convex_cone 𝕜 F) : (S.comap f : set E) = f ⁻¹' S := rfl
212
+
211
213
@[simp] lemma comap_id (S : convex_cone 𝕜 E) : S.comap linear_map.id = S :=
212
214
set_like.coe_injective preimage_id
213
215
@@ -640,8 +642,8 @@ def set.inner_dual_cone (s : set H) : convex_cone ℝ H :=
640
642
exact add_nonneg (hu x hx) (hv x hx)
641
643
end }
642
644
643
- lemma mem_inner_dual_cone (y : H) (s : set H) :
644
- y ∈ s.inner_dual_cone ↔ ∀ x ∈ s, 0 ≤ ⟪ x, y ⟫ := by refl
645
+ @[simp] lemma mem_inner_dual_cone (y : H) (s : set H) :
646
+ y ∈ s.inner_dual_cone ↔ ∀ x ∈ s, 0 ≤ ⟪ x, y ⟫ := iff.rfl
645
647
646
648
@[simp] lemma inner_dual_cone_empty : (∅ : set H).inner_dual_cone = ⊤ :=
647
649
eq_top_iff.mpr $ λ x hy y, false.elim
@@ -688,4 +690,21 @@ lemma inner_dual_cone_eq_Inter_inner_dual_cone_singleton :
688
690
(s.inner_dual_cone : set H) = ⋂ i : s, (({i} : set H).inner_dual_cone : set H) :=
689
691
by rw [←convex_cone.coe_infi, ←inner_dual_cone_Union, Union_of_singleton_coe]
690
692
693
+ lemma is_closed_inner_dual_cone : is_closed (s.inner_dual_cone : set H) :=
694
+ begin
695
+ -- reduce the problem to showing that dual cone of a singleton `{x}` is closed
696
+ rw inner_dual_cone_eq_Inter_inner_dual_cone_singleton,
697
+ apply is_closed_Inter,
698
+ intros x,
699
+
700
+ -- the dual cone of a singleton `{x}` is the preimage of `[0, ∞)` under `inner x`
701
+ have h : ↑({x} : set H).inner_dual_cone = (inner x : H → ℝ) ⁻¹' set.Ici 0 ,
702
+ { rw [inner_dual_cone_singleton, convex_cone.coe_comap, convex_cone.coe_positive,
703
+ innerₛₗ_apply_coe] },
704
+
705
+ -- the preimage is closed as `inner x` is continuous and `[0, ∞)` is closed
706
+ rw h,
707
+ exact is_closed_Ici.preimage (by continuity),
708
+ end
709
+
691
710
end dual
0 commit comments