@@ -366,57 +366,22 @@ variable (J J₃ A A' : Matrix n n R₃)
366366theorem isAdjointPair_toBilin' [DecidableEq n] :
367367 BilinForm.IsAdjointPair (Matrix.toBilin' J) (Matrix.toBilin' J₃) (Matrix.toLin' A)
368368 (Matrix.toLin' A') ↔
369- Matrix.IsAdjointPair J J₃ A A' := by
370- rw [BilinForm.isAdjointPair_iff_compLeft_eq_compRight]
371- have h :
372- ∀ B B' : BilinForm R₃ (n → R₃), B = B' ↔ BilinForm.toMatrix' B = BilinForm.toMatrix' B' := by
373- intro B B'
374- constructor <;> intro h
375- · rw [h]
376- · exact BilinForm.toMatrix'.injective h
377- rw [h, BilinForm.toMatrix'_compLeft, BilinForm.toMatrix'_compRight, LinearMap.toMatrix'_toLin',
378- LinearMap.toMatrix'_toLin', BilinForm.toMatrix'_toBilin', BilinForm.toMatrix'_toBilin']
379- rfl
369+ Matrix.IsAdjointPair J J₃ A A' :=
370+ isAdjointPair_toLinearMap₂' _ _ _ _
380371#align is_adjoint_pair_to_bilin' isAdjointPair_toBilin'
381372
382373@[simp]
383374theorem isAdjointPair_toBilin [DecidableEq n] :
384375 BilinForm.IsAdjointPair (Matrix.toBilin b J) (Matrix.toBilin b J₃) (Matrix.toLin b b A)
385376 (Matrix.toLin b b A') ↔
386- Matrix.IsAdjointPair J J₃ A A' := by
387- rw [BilinForm.isAdjointPair_iff_compLeft_eq_compRight]
388- have h : ∀ B B' : BilinForm R₃ M₃, B = B' ↔ BilinForm.toMatrix b B = BilinForm.toMatrix b B' := by
389- intro B B'
390- constructor <;> intro h
391- · rw [h]
392- · exact (BilinForm.toMatrix b).injective h
393- rw [h, BilinForm.toMatrix_compLeft, BilinForm.toMatrix_compRight, LinearMap.toMatrix_toLin,
394- LinearMap.toMatrix_toLin, BilinForm.toMatrix_toBilin, BilinForm.toMatrix_toBilin]
395- rfl
377+ Matrix.IsAdjointPair J J₃ A A' :=
378+ isAdjointPair_toLinearMap₂ _ _ _ _ _ _
396379#align is_adjoint_pair_to_bilin isAdjointPair_toBilin
397380
398381theorem Matrix.isAdjointPair_equiv' [DecidableEq n] (P : Matrix n n R₃) (h : IsUnit P) :
399382 (Pᵀ * J * P).IsAdjointPair (Pᵀ * J * P) A A' ↔
400- J.IsAdjointPair J (P * A * P⁻¹) (P * A' * P⁻¹) := by
401- have h' : IsUnit P.det := P.isUnit_iff_isUnit_det.mp h
402- -- Porting note: the original proof used a complicated conv and timed out
403- let u := P.nonsingInvUnit h'
404- have coe_u : (u : Matrix n n R₃) = P := rfl
405- have coe_u_inv : (↑u⁻¹ : Matrix n n R₃) = P⁻¹ := rfl
406- let v := Pᵀ.nonsingInvUnit (P.isUnit_det_transpose h')
407- have coe_v : (v : Matrix n n R₃) = Pᵀ := rfl
408- have coe_v_inv : (↑v⁻¹ : Matrix n n R₃) = P⁻¹ᵀ := P.transpose_nonsing_inv.symm
409- set x := Aᵀ * Pᵀ * J with x_def
410- set y := J * P * A' with y_def
411- simp only [Matrix.IsAdjointPair]
412- calc (Aᵀ * (Pᵀ * J * P) = Pᵀ * J * P * A')
413- ↔ (x * ↑u = ↑v * y) := ?_
414- _ ↔ (↑v⁻¹ * x = y * ↑u⁻¹) := ?_
415- _ ↔ ((P * A * P⁻¹)ᵀ * J = J * (P * A' * P⁻¹)) := ?_
416- · simp only [mul_assoc, x_def, y_def, coe_u, coe_v]
417- · rw [Units.eq_mul_inv_iff_mul_eq, mul_assoc ↑v⁻¹ x, Units.inv_mul_eq_iff_eq_mul]
418- · rw [x_def, y_def, coe_u_inv, coe_v_inv]
419- simp only [Matrix.mul_assoc, Matrix.transpose_mul]
383+ J.IsAdjointPair J (P * A * P⁻¹) (P * A' * P⁻¹) :=
384+ Matrix.isAdjointPair_equiv _ _ _ _ h
420385#align matrix.is_adjoint_pair_equiv' Matrix.isAdjointPair_equiv'
421386
422387variable [DecidableEq n]
0 commit comments