Documentation

Books.ConvexAnalysis_Rockafellar_1970.Chapters.Chap02.section09_part2

theorem lifted_linearMap_first_tail {n m : } (A : EuclideanSpace (Fin n) →ₗ[] EuclideanSpace (Fin m)) :
have coords₁ := (EuclideanSpace.equiv (Fin (1 + n)) ); have first₁ := fun (v : EuclideanSpace (Fin (1 + n))) => coords₁ v 0; have tail₁ := fun (v : EuclideanSpace (Fin (1 + n))) => (EuclideanSpace.equiv (Fin n) ).symm fun (i : Fin n) => coords₁ v (Fin.natAdd 1 i); have coords₂ := (EuclideanSpace.equiv (Fin (1 + m)) ); have first₂ := fun (v : EuclideanSpace (Fin (1 + m))) => coords₂ v 0; have tail₂ := fun (v : EuclideanSpace (Fin (1 + m))) => (EuclideanSpace.equiv (Fin m) ).symm fun (i : Fin m) => coords₂ v (Fin.natAdd 1 i); have B := have lift := (LinearMap.fst (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))).prod (A ∘ₗ LinearMap.snd (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))); (appendAffineEquiv 1 m).linear ∘ₗ lift ∘ₗ (appendAffineEquiv 1 n).symm.linear; ∀ (v : EuclideanSpace (Fin (1 + n))), first₂ (B v) = first₁ v tail₂ (B v) = A (tail₁ v)

The lifted linear map preserves first coordinate and applies A to the tail.

theorem image_cone_eq_cone_image {n m : } {C : Set (EuclideanSpace (Fin n))} (hCconv : Convex C) (A : EuclideanSpace (Fin n) →ₗ[] EuclideanSpace (Fin m)) :
have coords₁ := (EuclideanSpace.equiv (Fin (1 + n)) ); have first₁ := fun (v : EuclideanSpace (Fin (1 + n))) => coords₁ v 0; have tail₁ := fun (v : EuclideanSpace (Fin (1 + n))) => (EuclideanSpace.equiv (Fin n) ).symm fun (i : Fin n) => coords₁ v (Fin.natAdd 1 i); have coords₂ := (EuclideanSpace.equiv (Fin (1 + m)) ); have first₂ := fun (v : EuclideanSpace (Fin (1 + m))) => coords₂ v 0; have tail₂ := fun (v : EuclideanSpace (Fin (1 + m))) => (EuclideanSpace.equiv (Fin m) ).symm fun (i : Fin m) => coords₂ v (Fin.natAdd 1 i); have S := {v : EuclideanSpace (Fin (1 + n)) | first₁ v = 1 tail₁ v C}; have K := (ConvexCone.hull S); have S' := {v : EuclideanSpace (Fin (1 + m)) | first₂ v = 1 tail₂ v A '' C}; have K' := (ConvexCone.hull S'); have B := have lift := (LinearMap.fst (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))).prod (A ∘ₗ LinearMap.snd (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))); (appendAffineEquiv 1 m).linear ∘ₗ lift ∘ₗ (appendAffineEquiv 1 n).symm.linear; B '' K = K'

The lifted map sends the cone over C to the cone over A '' C.

theorem kernel_lineality_for_cone {n m : } {C : Set (EuclideanSpace (Fin n))} (hCne : C.Nonempty) (hCconv : Convex C) (A : EuclideanSpace (Fin n) →ₗ[] EuclideanSpace (Fin m)) (hlineal : ∀ (z : EuclideanSpace (Fin n)), z 0z (closure C).recessionConeA z = 0z (closure C).linealitySpace) :
have Cbar := closure C; have coords₁ := (EuclideanSpace.equiv (Fin (1 + n)) ); have first₁ := fun (v : EuclideanSpace (Fin (1 + n))) => coords₁ v 0; have tail₁ := fun (v : EuclideanSpace (Fin (1 + n))) => (EuclideanSpace.equiv (Fin n) ).symm fun (i : Fin n) => coords₁ v (Fin.natAdd 1 i); have S := {v : EuclideanSpace (Fin (1 + n)) | first₁ v = 1 tail₁ v Cbar}; have K := (ConvexCone.hull S); have B := have lift := (LinearMap.fst (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))).prod (A ∘ₗ LinearMap.snd (EuclideanSpace (Fin 1)) (EuclideanSpace (Fin n))); (appendAffineEquiv 1 m).linear ∘ₗ lift ∘ₗ (appendAffineEquiv 1 n).symm.linear; ∀ (v : EuclideanSpace (Fin (1 + n))), v 0v (closure K).recessionConeB v = 0v (closure K).linealitySpace

Kernel-lineality for the lifted cone over closure C.

theorem linearMap_closure_image_eq_image_closure_of_recessionCone_kernel_lineality {n m : } {C : Set (EuclideanSpace (Fin n))} (hCne : C.Nonempty) (hCconv : Convex C) (A : EuclideanSpace (Fin n) →ₗ[] EuclideanSpace (Fin m)) (hlineal : ∀ (z : EuclideanSpace (Fin n)), z 0z (closure C).recessionConeA z = 0z (closure C).linealitySpace) :
closure (A '' C) = A '' closure C (A '' closure C).recessionCone = A '' (closure C).recessionCone (IsClosed C(∀ zC.recessionCone, A z = 0z = 0)IsClosed (A '' C))