R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
⊢ IsSkewAdjoint B ⁅f, g⁆
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : f ∈ skewAdjointSubmodule B
hg : g ∈ skewAdjointSubmodule B
⊢ ⁅f, g⁆ ∈ skewAdjointSubmodule B
rw [mem_skewAdjointSubmodule] at *
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
⊢ IsSkewAdjoint B ⁅f, g⁆
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
⊢ IsSkewAdjoint B ⁅f, g⁆
have hfg : IsAdjointPair B B (f * g) (g * f) := by rw [← neg_mul_neg g f]; exact hf.mul hg
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsSkewAdjoint B ⁅f, g⁆
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
⊢ IsSkewAdjoint B ⁅f, g⁆
have hgf : IsAdjointPair B B (g * f) (f * g) := by rw [← neg_mul_neg f g]; exact hg.mul hf
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsAdjointPair B B (f * g - g * f) (-(f * g - g * f))
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsSkewAdjoint B ⁅f, g⁆
change BilinForm.IsAdjointPair B B (f * g - g * f) (-(f * g - g * f))
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsAdjointPair B B (f * g - g * f) (g * f - f * g)
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsAdjointPair B B (f * g - g * f) (-(f * g - g * f))
rw [neg_sub]
no goals
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
hgf : IsAdjointPair B B (g * f) (f * g)
⊢ IsAdjointPair B B (f * g - g * f) (g * f - f * g)
exact hfg.sub hgf
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
⊢ IsAdjointPair B B (f * g) (-g * -f)
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
⊢ IsAdjointPair B B (f * g) (g * f)
rw [← neg_mul_neg g f]
no goals
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
⊢ IsAdjointPair B B (f * g) (-g * -f)
exact hf.mul hg
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
⊢ IsAdjointPair B B (g * f) (-f * -g)
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
⊢ IsAdjointPair B B (g * f) (f * g)
rw [← neg_mul_neg f g]
no goals
R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
B : BilinForm R M
f g : Module.End R M
hf : IsSkewAdjoint B f
hg : IsSkewAdjoint B g
hfg : IsAdjointPair B B (f * g) (g * f)
⊢ IsAdjointPair B B (g * f) (-f * -g)
exact hg.mul hf