@@ -226,6 +226,84 @@ lemma comp_add (f₁ f₂ : IntertwiningMap σ τ) (g : IntertwiningMap ρ σ) :
226226lemma add_comp (f : IntertwiningMap σ τ) (g₁ g₂ : IntertwiningMap ρ σ) :
227227 comp f (g₁ + g₂) = comp f g₁ + comp f g₂ := by ext1; simp [LinearMap.comp_add]
228228
229+ variable (A) in
230+ /-- The projection of a product representation onto its first component is an intertwining map. -/
231+ def fst : IntertwiningMap (ρ.prod σ) ρ where
232+ toLinearMap := LinearMap.fst A V W
233+ isIntertwining' _ := LinearMap.ext <| by simp
234+
235+ variable (A) in
236+ /-- The projection of a product representation onto its second component is an intertwining map. -/
237+ def snd : IntertwiningMap (ρ.prod σ) σ where
238+ toLinearMap := LinearMap.snd A V W
239+ isIntertwining' _ := LinearMap.ext <| by simp
240+
241+ @[simp]
242+ lemma fst_apply (v : V × W) : fst A ρ σ v = v.1 := rfl
243+
244+ @[simp]
245+ lemma snd_apply (v : V × W) : snd A ρ σ v = v.2 := rfl
246+
247+ @ [simp, norm_cast] lemma coe_fst : ⇑(fst A ρ σ) = Prod.fst := rfl
248+
249+ @ [simp, norm_cast] lemma coe_snd : ⇑(snd A ρ σ) = Prod.snd := rfl
250+
251+ lemma fst_surjective : Function.Surjective (fst A ρ σ) := LinearMap.fst_surjective
252+
253+ lemma snd_surjective : Function.Surjective (snd A ρ σ) := LinearMap.snd_surjective
254+
255+ section prod
256+
257+ variable {ρ σ τ}
258+ /-- The product of two intertwining maps is an intertwining map. -/
259+ def prod (f : IntertwiningMap ρ σ) (g : IntertwiningMap ρ τ) : IntertwiningMap ρ (σ.prod τ) where
260+ toLinearMap := f.toLinearMap.prod g.toLinearMap
261+ isIntertwining' _ := LinearMap.ext <| by simp [f.isIntertwining, g.isIntertwining]
262+
263+ @[simp]
264+ lemma fst_prod (f : IntertwiningMap ρ σ) (g : IntertwiningMap ρ τ) :
265+ (fst A σ τ).comp (prod f g) = f := IntertwiningMap.ext <| LinearMap.fst_prod _ _
266+
267+ @[simp]
268+ lemma snd_prod (f : IntertwiningMap ρ σ) (g : IntertwiningMap ρ τ) :
269+ (snd A σ τ).comp (prod f g) = g := IntertwiningMap.ext <| LinearMap.snd_prod _ _
270+
271+ lemma prod_comp (X : Type *) [AddCommMonoid X] [Module A X] {π : Representation A G X}
272+ (f : IntertwiningMap ρ σ) (g₁ : IntertwiningMap σ τ) (g₂ : IntertwiningMap σ π) :
273+ (prod g₁ g₂).comp f = prod (g₁.comp f) (g₂.comp f) :=
274+ IntertwiningMap.ext <| LinearMap.prod_comp ..
275+
276+ variable (A ρ σ) in
277+ /-- The left inclusion of a product representation is an intertwining map. -/
278+ def inl : IntertwiningMap ρ (ρ.prod σ) := prod (id ρ) 0
279+
280+ variable (A ρ σ) in
281+ /-- The right inclusion of a product representation is an intertwining map. -/
282+ def inr : IntertwiningMap σ (ρ.prod σ) := prod (0 : IntertwiningMap σ ρ) (id σ)
283+
284+ lemma range_inl : (inl A ρ σ).range = (snd A ρ σ).ker :=
285+ Subrepresentation.ext <| LinearMap.range_inl ..
286+
287+ lemma range_inr : (inr A ρ σ).range = (fst A ρ σ).ker :=
288+ Subrepresentation.ext <| LinearMap.range_inr ..
289+
290+ @[simp] lemma fst_comp_inl : (fst A ρ σ).comp (inl A ρ σ) = id ρ :=
291+ IntertwiningMap.ext <| LinearMap.fst_comp_inl ..
292+
293+ @[simp] lemma snd_comp_inl : (snd A ρ σ).comp (inl A ρ σ) = 0 :=
294+ IntertwiningMap.ext <| LinearMap.snd_comp_inl ..
295+
296+ @[simp] lemma fst_comp_inr : (fst A ρ σ).comp (inr A ρ σ) = 0 :=
297+ IntertwiningMap.ext <| LinearMap.fst_comp_inr ..
298+
299+ @[simp] lemma snd_comp_inr : (snd A ρ σ).comp (inr A ρ σ) = id σ :=
300+ IntertwiningMap.ext <| LinearMap.snd_comp_inr ..
301+
302+ @[simp] lemma coprod_inl_inr : (inl A ρ σ).comp (fst A ρ σ) + (inr A ρ σ).comp (snd A ρ σ) =
303+ .id _ := IntertwiningMap.ext <| LinearMap.coprod_inl_inr
304+
305+ end prod
306+
229307end IntertwiningMap
230308
231309/-- Equivalence between representations is a bijective intertwining map. -/
0 commit comments