linear_algebra.symplectic_group
⟷
Mathlib.LinearAlgebra.SymplecticGroup
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -175,10 +175,10 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
use A.det
refine' (is_unit_det_J l R).hMul_left_cancel _
rw [mul_one]
- rw [mem_iff] at hA
- apply_fun det at hA
- simp only [det_mul, det_transpose] at hA
- rw [mul_comm A.det, mul_assoc] at hA
+ rw [mem_iff] at hA
+ apply_fun det at hA
+ simp only [det_mul, det_transpose] at hA
+ rw [mul_comm A.det, mul_assoc] at hA
exact hA
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
-/
@@ -232,7 +232,7 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
calc
-J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
simp only [Matrix.mul_assoc, Matrix.neg_mul]
- _ = (-J l R) ⬝ J l R := by rw [mem_iff'] at hA ; rw [hA]
+ _ = (-J l R) ⬝ J l R := by rw [mem_iff'] at hA; rw [hA]
_ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 Matej Penciak. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Matej Penciak, Moritz Doll, Fabien Clery
-/
-import Mathbin.LinearAlgebra.Matrix.NonsingularInverse
+import LinearAlgebra.Matrix.NonsingularInverse
#align_import linear_algebra.symplectic_group from "leanprover-community/mathlib"@"ef55335933293309ff8c0b1d20ffffeecbe5c39f"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -100,7 +100,7 @@ variable [Fintype l]
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
where
carrier := {A | A ⬝ J l R ⬝ Aᵀ = J l R}
- mul_mem' := by
+ hMul_mem' := by
intro a b ha hb
simp only [mul_eq_mul, Set.mem_setOf_eq, transpose_mul] at *
rw [← Matrix.mul_assoc, a.mul_assoc, a.mul_assoc, hb]
@@ -173,7 +173,7 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
by
rw [isUnit_iff_exists_inv]
use A.det
- refine' (is_unit_det_J l R).mul_left_cancel _
+ refine' (is_unit_det_J l R).hMul_left_cancel _
rw [mul_one]
rw [mem_iff] at hA
apply_fun det at hA
@@ -219,7 +219,7 @@ theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R :=
instance : Inv (symplecticGroup l R)
where inv A :=
⟨(-J l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ J l R,
- mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
+ hMul_mem (hMul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
#print SymplecticGroup.coe_inv /-
theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
@@ -256,10 +256,10 @@ theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ sym
instance : Group (symplecticGroup l R) :=
{ SymplecticGroup.hasInv, Submonoid.toMonoid _ with
- mul_left_inv := fun A => by
+ hMul_left_inv := fun A => by
apply Subtype.ext
simp only [Submonoid.coe_one, Submonoid.coe_mul, Matrix.neg_mul, coe_inv]
- rw [Matrix.mul_eq_mul, Matrix.neg_mul]
+ rw [Matrix.hMul_eq_hMul, Matrix.neg_mul]
exact inv_left_mul_aux A.2 }
end SymplecticGroup
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 Matej Penciak. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Matej Penciak, Moritz Doll, Fabien Clery
-
-! This file was ported from Lean 3 source module linear_algebra.symplectic_group
-! leanprover-community/mathlib commit ef55335933293309ff8c0b1d20ffffeecbe5c39f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.LinearAlgebra.Matrix.NonsingularInverse
+#align_import linear_algebra.symplectic_group from "leanprover-community/mathlib"@"ef55335933293309ff8c0b1d20ffffeecbe5c39f"
+
/-!
# The Symplectic Group
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -46,6 +46,7 @@ def J : Matrix (Sum l l) (Sum l l) R :=
#align matrix.J Matrix.J
-/
+#print Matrix.J_transpose /-
@[simp]
theorem J_transpose : (J l R)ᵀ = -J l R :=
by
@@ -53,23 +54,29 @@ theorem J_transpose : (J l R)ᵀ = -J l R :=
Matrix.transpose_zero, Matrix.transpose_one, transpose_neg]
simp [from_blocks]
#align matrix.J_transpose Matrix.J_transpose
+-/
variable [Fintype l]
+#print Matrix.J_squared /-
theorem J_squared : J l R ⬝ J l R = -1 :=
by
rw [J, from_blocks_multiply]
simp only [Matrix.zero_mul, Matrix.neg_mul, zero_add, neg_zero, Matrix.one_mul, add_zero]
rw [← neg_zero, ← Matrix.fromBlocks_neg, ← from_blocks_one]
#align matrix.J_squared Matrix.J_squared
+-/
+#print Matrix.J_inv /-
theorem J_inv : (J l R)⁻¹ = -J l R :=
by
refine' Matrix.inv_eq_right_inv _
rw [Matrix.mul_neg, J_squared]
exact neg_neg 1
#align matrix.J_inv Matrix.J_inv
+-/
+#print Matrix.J_det_mul_J_det /-
theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 :=
by
rw [← det_mul, J_squared]
@@ -79,6 +86,7 @@ theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 :=
apply Even.neg_one_pow
exact even_add_self _
#align matrix.J_det_mul_J_det Matrix.J_det_mul_J_det
+-/
#print Matrix.isUnit_det_J /-
theorem isUnit_det_J : IsUnit (det (J l R)) :=
@@ -90,6 +98,7 @@ end JMatrixLemmas
variable [Fintype l]
+#print Matrix.symplecticGroup /-
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
where
@@ -101,6 +110,7 @@ def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
exact ha
one_mem' := by simp
#align matrix.symplectic_group Matrix.symplecticGroup
+-/
end Matrix
@@ -110,45 +120,58 @@ variable {l} {R} [DecidableEq l] [Fintype l] [CommRing R]
open Matrix
+#print SymplecticGroup.mem_iff /-
theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
A ∈ symplecticGroup l R ↔ A ⬝ J l R ⬝ Aᵀ = J l R := by simp [symplectic_group]
#align symplectic_group.mem_iff SymplecticGroup.mem_iff
+-/
+#print SymplecticGroup.coeMatrix /-
instance coeMatrix : Coe (symplecticGroup l R) (Matrix (Sum l l) (Sum l l) R) := by infer_instance
#align symplectic_group.coe_matrix SymplecticGroup.coeMatrix
+-/
section SymplecticJ
variable (l) (R)
+#print SymplecticGroup.J_mem /-
theorem J_mem : J l R ∈ symplecticGroup l R :=
by
rw [mem_iff, J, from_blocks_multiply, from_blocks_transpose, from_blocks_multiply]
simp
#align symplectic_group.J_mem SymplecticGroup.J_mem
+-/
+#print SymplecticGroup.symJ /-
/-- The canonical skew-symmetric matrix as an element in the symplectic group. -/
def symJ : symplecticGroup l R :=
⟨J l R, J_mem l R⟩
#align symplectic_group.sym_J SymplecticGroup.symJ
+-/
variable {l} {R}
+#print SymplecticGroup.coe_J /-
@[simp]
theorem coe_J : ↑(symJ l R) = J l R :=
rfl
#align symplectic_group.coe_J SymplecticGroup.coe_J
+-/
end SymplecticJ
variable {R} {A : Matrix (Sum l l) (Sum l l) R}
+#print SymplecticGroup.neg_mem /-
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
rw [mem_iff] at h ⊢
simp [h]
#align symplectic_group.neg_mem SymplecticGroup.neg_mem
+-/
+#print SymplecticGroup.symplectic_det /-
theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
by
rw [isUnit_iff_exists_inv]
@@ -161,7 +184,9 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
rw [mul_comm A.det, mul_assoc] at hA
exact hA
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
+-/
+#print SymplecticGroup.transpose_mem /-
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R :=
by
rw [mem_iff] at hA ⊢
@@ -179,25 +204,33 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
rw [mul_nonsing_inv_cancel_left _ _ huAT, nonsing_inv_mul_cancel_right _ _ huA]
_ = J l R := by simp [J_inv]
#align symplectic_group.transpose_mem SymplecticGroup.transpose_mem
+-/
+#print SymplecticGroup.transpose_mem_iff /-
@[simp]
theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGroup l R :=
⟨fun hA => by simpa using transpose_mem hA, transpose_mem⟩
#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iff
+-/
+#print SymplecticGroup.mem_iff' /-
theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R := by
rw [← transpose_mem_iff, mem_iff, transpose_transpose]
#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'
+-/
instance : Inv (symplecticGroup l R)
where inv A :=
⟨(-J l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ J l R,
mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
+#print SymplecticGroup.coe_inv /-
theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
rfl
#align symplectic_group.coe_inv SymplecticGroup.coe_inv
+-/
+#print SymplecticGroup.inv_left_mul_aux /-
theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
calc
-J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
@@ -207,17 +240,22 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
+-/
+#print SymplecticGroup.coe_inv' /-
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
by
refine' (coe_inv A).trans (inv_eq_left_inv _).symm
simp [inv_left_mul_aux, coe_inv]
#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'
+-/
+#print SymplecticGroup.inv_eq_symplectic_inv /-
theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ symplecticGroup l R) :
A⁻¹ = (-J l R) ⬝ Aᵀ ⬝ J l R :=
inv_eq_left_inv (by simp only [Matrix.neg_mul, inv_left_mul_aux hA])
#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_inv
+-/
instance : Group (symplecticGroup l R) :=
{ SymplecticGroup.hasInv, Submonoid.toMonoid _ with
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -178,7 +178,6 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
_ = -(J l R)⁻¹ := by
rw [mul_nonsing_inv_cancel_left _ _ huAT, nonsing_inv_mul_cancel_right _ _ huA]
_ = J l R := by simp [J_inv]
-
#align symplectic_group.transpose_mem SymplecticGroup.transpose_mem
@[simp]
@@ -207,7 +206,6 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
_ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
-
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -93,7 +93,7 @@ variable [Fintype l]
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
where
- carrier := { A | A ⬝ J l R ⬝ Aᵀ = J l R }
+ carrier := {A | A ⬝ J l R ⬝ Aᵀ = J l R}
mul_mem' := by
intro a b ha hb
simp only [mul_eq_mul, Set.mem_setOf_eq, transpose_mul] at *
@@ -156,7 +156,7 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
refine' (is_unit_det_J l R).mul_left_cancel _
rw [mul_one]
rw [mem_iff] at hA
- apply_fun det at hA
+ apply_fun det at hA
simp only [det_mul, det_transpose] at hA
rw [mul_comm A.det, mul_assoc] at hA
exact hA
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -145,7 +145,7 @@ variable {R} {A : Matrix (Sum l l) (Sum l l) R}
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
- rw [mem_iff] at h⊢
+ rw [mem_iff] at h ⊢
simp [h]
#align symplectic_group.neg_mem SymplecticGroup.neg_mem
@@ -155,16 +155,16 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
use A.det
refine' (is_unit_det_J l R).mul_left_cancel _
rw [mul_one]
- rw [mem_iff] at hA
- apply_fun det at hA
- simp only [det_mul, det_transpose] at hA
- rw [mul_comm A.det, mul_assoc] at hA
+ rw [mem_iff] at hA
+ apply_fun det at hA
+ simp only [det_mul, det_transpose] at hA
+ rw [mul_comm A.det, mul_assoc] at hA
exact hA
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R :=
by
- rw [mem_iff] at hA⊢
+ rw [mem_iff] at hA ⊢
rw [transpose_transpose]
have huA := symplectic_det hA
have huAT : IsUnit Aᵀ.det := by
@@ -203,7 +203,7 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
calc
-J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
simp only [Matrix.mul_assoc, Matrix.neg_mul]
- _ = (-J l R) ⬝ J l R := by rw [mem_iff'] at hA; rw [hA]
+ _ = (-J l R) ⬝ J l R := by rw [mem_iff'] at hA ; rw [hA]
_ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -29,7 +29,7 @@ This file defines the symplectic group and proves elementary properties.
-/
-open Matrix
+open scoped Matrix
variable {l R : Type _}
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -46,12 +46,6 @@ def J : Matrix (Sum l l) (Sum l l) R :=
#align matrix.J Matrix.J
-/
-/- warning: matrix.J_transpose -> Matrix.J_transpose is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
-but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
-Case conversion may be inaccurate. Consider using '#align matrix.J_transpose Matrix.J_transposeₓ'. -/
@[simp]
theorem J_transpose : (J l R)ᵀ = -J l R :=
by
@@ -62,12 +56,6 @@ theorem J_transpose : (J l R)ᵀ = -J l R :=
variable [Fintype l]
-/- warning: matrix.J_squared -> Matrix.J_squared is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))))
-but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2)))))))
-Case conversion may be inaccurate. Consider using '#align matrix.J_squared Matrix.J_squaredₓ'. -/
theorem J_squared : J l R ⬝ J l R = -1 :=
by
rw [J, from_blocks_multiply]
@@ -75,12 +63,6 @@ theorem J_squared : J l R ⬝ J l R = -1 :=
rw [← neg_zero, ← Matrix.fromBlocks_neg, ← from_blocks_one]
#align matrix.J_squared Matrix.J_squared
-/- warning: matrix.J_inv -> Matrix.J_inv is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_2) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
-but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
-Case conversion may be inaccurate. Consider using '#align matrix.J_inv Matrix.J_invₓ'. -/
theorem J_inv : (J l R)⁻¹ = -J l R :=
by
refine' Matrix.inv_eq_right_inv _
@@ -88,12 +70,6 @@ theorem J_inv : (J l R)⁻¹ = -J l R :=
exact neg_neg 1
#align matrix.J_inv Matrix.J_inv
-/- warning: matrix.J_det_mul_J_det -> Matrix.J_det_mul_J_det is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2)))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))
-but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)))))
-Case conversion may be inaccurate. Consider using '#align matrix.J_det_mul_J_det Matrix.J_det_mul_J_detₓ'. -/
theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 :=
by
rw [← det_mul, J_squared]
@@ -114,12 +90,6 @@ end JMatrixLemmas
variable [Fintype l]
-/- warning: matrix.symplectic_group -> Matrix.symplecticGroup is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))
-but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2))) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))
-Case conversion may be inaccurate. Consider using '#align matrix.symplectic_group Matrix.symplecticGroupₓ'. -/
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
where
@@ -140,19 +110,10 @@ variable {l} {R} [DecidableEq l] [Fintype l] [CommRing R]
open Matrix
-/- warning: symplectic_group.mem_iff -> SymplecticGroup.mem_iff is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) A (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) A (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff SymplecticGroup.mem_iffₓ'. -/
theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
A ∈ symplecticGroup l R ↔ A ⬝ J l R ⬝ Aᵀ = J l R := by simp [symplectic_group]
#align symplectic_group.mem_iff SymplecticGroup.mem_iff
-/- warning: symplectic_group.coe_matrix -> SymplecticGroup.coeMatrix is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_matrix SymplecticGroup.coeMatrixₓ'. -/
instance coeMatrix : Coe (symplecticGroup l R) (Matrix (Sum l l) (Sum l l) R) := by infer_instance
#align symplectic_group.coe_matrix SymplecticGroup.coeMatrix
@@ -160,24 +121,12 @@ section SymplecticJ
variable (l) (R)
-/- warning: symplectic_group.J_mem -> SymplecticGroup.J_mem is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
-but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
-Case conversion may be inaccurate. Consider using '#align symplectic_group.J_mem SymplecticGroup.J_memₓ'. -/
theorem J_mem : J l R ∈ symplecticGroup l R :=
by
rw [mem_iff, J, from_blocks_multiply, from_blocks_transpose, from_blocks_multiply]
simp
#align symplectic_group.J_mem SymplecticGroup.J_mem
-/- warning: symplectic_group.sym_J -> SymplecticGroup.symJ is a dubious translation:
-lean 3 declaration is
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
-but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.sym_J SymplecticGroup.symJₓ'. -/
/-- The canonical skew-symmetric matrix as an element in the symplectic group. -/
def symJ : symplecticGroup l R :=
⟨J l R, J_mem l R⟩
@@ -185,9 +134,6 @@ def symJ : symplecticGroup l R :=
variable {l} {R}
-/- warning: symplectic_group.coe_J -> SymplecticGroup.coe_J is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_J SymplecticGroup.coe_Jₓ'. -/
@[simp]
theorem coe_J : ↑(symJ l R) = J l R :=
rfl
@@ -197,21 +143,12 @@ end SymplecticJ
variable {R} {A : Matrix (Sum l l) (Sum l l) R}
-/- warning: symplectic_group.neg_mem -> SymplecticGroup.neg_mem is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.neg_mem SymplecticGroup.neg_memₓ'. -/
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
rw [mem_iff] at h⊢
simp [h]
#align symplectic_group.neg_mem SymplecticGroup.neg_mem
-/- warning: symplectic_group.symplectic_det -> SymplecticGroup.symplectic_det is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u2} R (Ring.toMonoid.{u2} R (CommRing.toRing.{u2} R _inst_3)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) R _inst_3 A))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3)))) (Matrix.det.{u1, u2} (Sum.{u2, u2} l l) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) R _inst_3 A))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.symplectic_det SymplecticGroup.symplectic_detₓ'. -/
theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
by
rw [isUnit_iff_exists_inv]
@@ -225,12 +162,6 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
exact hA
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
-/- warning: symplectic_group.transpose_mem -> SymplecticGroup.transpose_mem is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem SymplecticGroup.transpose_memₓ'. -/
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R :=
by
rw [mem_iff] at hA⊢
@@ -250,23 +181,11 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
#align symplectic_group.transpose_mem SymplecticGroup.transpose_mem
-/- warning: symplectic_group.transpose_mem_iff -> SymplecticGroup.transpose_mem_iff is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iffₓ'. -/
@[simp]
theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGroup l R :=
⟨fun hA => by simpa using transpose_mem hA, transpose_mem⟩
#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iff
-/- warning: symplectic_group.mem_iff' -> SymplecticGroup.mem_iff' is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'ₓ'. -/
theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R := by
rw [← transpose_mem_iff, mem_iff, transpose_transpose]
#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'
@@ -276,16 +195,10 @@ instance : Inv (symplecticGroup l R)
⟨(-J l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ J l R,
mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
-/- warning: symplectic_group.coe_inv -> SymplecticGroup.coe_inv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv SymplecticGroup.coe_invₓ'. -/
theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
rfl
#align symplectic_group.coe_inv SymplecticGroup.coe_inv
-/- warning: symplectic_group.inv_left_mul_aux -> SymplecticGroup.inv_left_mul_aux is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_auxₓ'. -/
theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
calc
-J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
@@ -297,21 +210,12 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
-/- warning: symplectic_group.coe_inv' -> SymplecticGroup.coe_inv' is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'ₓ'. -/
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
by
refine' (coe_inv A).trans (inv_eq_left_inv _).symm
simp [inv_left_mul_aux, coe_inv]
#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'
-/- warning: symplectic_group.inv_eq_symplectic_inv -> SymplecticGroup.inv_eq_symplectic_inv is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R), (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R), (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
-Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_invₓ'. -/
theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ symplecticGroup l R) :
A⁻¹ = (-J l R) ⬝ Aᵀ ⬝ J l R :=
inv_eq_left_inv (by simp only [Matrix.neg_mul, inv_left_mul_aux hA])
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -240,9 +240,7 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
rw [Matrix.det_transpose]
exact huA
calc
- Aᵀ ⬝ J l R ⬝ A = (-Aᵀ) ⬝ (J l R)⁻¹ ⬝ A := by
- rw [J_inv]
- simp
+ Aᵀ ⬝ J l R ⬝ A = (-Aᵀ) ⬝ (J l R)⁻¹ ⬝ A := by rw [J_inv]; simp
_ = (-Aᵀ) ⬝ (A ⬝ J l R ⬝ Aᵀ)⁻¹ ⬝ A := by rw [hA]
_ = (-Aᵀ ⬝ (Aᵀ⁻¹ ⬝ (J l R)⁻¹)) ⬝ A⁻¹ ⬝ A := by
simp only [Matrix.mul_inv_rev, Matrix.mul_assoc, Matrix.neg_mul]
@@ -292,9 +290,7 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
calc
-J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
simp only [Matrix.mul_assoc, Matrix.neg_mul]
- _ = (-J l R) ⬝ J l R := by
- rw [mem_iff'] at hA
- rw [hA]
+ _ = (-J l R) ⬝ J l R := by rw [mem_iff'] at hA; rw [hA]
_ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -151,10 +151,7 @@ theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
#align symplectic_group.mem_iff SymplecticGroup.mem_iff
/- warning: symplectic_group.coe_matrix -> SymplecticGroup.coeMatrix is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
-but is expected to have type
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_matrix SymplecticGroup.coeMatrixₓ'. -/
instance coeMatrix : Coe (symplecticGroup l R) (Matrix (Sum l l) (Sum l l) R) := by infer_instance
#align symplectic_group.coe_matrix SymplecticGroup.coeMatrix
@@ -189,10 +186,7 @@ def symJ : symplecticGroup l R :=
variable {l} {R}
/- warning: symplectic_group.coe_J -> SymplecticGroup.coe_J is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (SymplecticGroup.symJ.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.symJ.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_J SymplecticGroup.coe_Jₓ'. -/
@[simp]
theorem coe_J : ↑(symJ l R) = J l R :=
@@ -204,10 +198,7 @@ end SymplecticJ
variable {R} {A : Matrix (Sum l l) (Sum l l) R}
/- warning: symplectic_group.neg_mem -> SymplecticGroup.neg_mem is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.neg_mem SymplecticGroup.neg_memₓ'. -/
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
@@ -288,20 +279,14 @@ instance : Inv (symplecticGroup l R)
mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
/- warning: symplectic_group.coe_inv -> SymplecticGroup.coe_inv is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv SymplecticGroup.coe_invₓ'. -/
theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
rfl
#align symplectic_group.coe_inv SymplecticGroup.coe_inv
/- warning: symplectic_group.inv_left_mul_aux -> SymplecticGroup.inv_left_mul_aux is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))))))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3)))))))
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_auxₓ'. -/
theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
calc
@@ -317,10 +302,7 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
/- warning: symplectic_group.coe_inv' -> SymplecticGroup.coe_inv' is a dubious translation:
-lean 3 declaration is
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))
-but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))
+<too large>
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'ₓ'. -/
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -66,7 +66,7 @@ variable [Fintype l]
lean 3 declaration is
forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))))
but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2))) (NonAssocRing.toOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))))))
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2)))))))
Case conversion may be inaccurate. Consider using '#align matrix.J_squared Matrix.J_squaredₓ'. -/
theorem J_squared : J l R ⬝ J l R = -1 :=
by
@@ -92,7 +92,7 @@ theorem J_inv : (J l R)⁻¹ = -J l R :=
lean 3 declaration is
forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2)))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))
but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (NonAssocRing.toOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2)))))
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (Semiring.toOne.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2)))))
Case conversion may be inaccurate. Consider using '#align matrix.J_det_mul_J_det Matrix.J_det_mul_J_detₓ'. -/
theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 :=
by
@@ -118,7 +118,7 @@ variable [Fintype l]
lean 3 declaration is
forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))
but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_2))) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))
Case conversion may be inaccurate. Consider using '#align matrix.symplectic_group Matrix.symplecticGroupₓ'. -/
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
@@ -144,7 +144,7 @@ open Matrix
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) A (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) A (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) A (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff SymplecticGroup.mem_iffₓ'. -/
theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
A ∈ symplecticGroup l R ↔ A ⬝ J l R ⬝ Aᵀ = J l R := by simp [symplectic_group]
@@ -154,7 +154,7 @@ theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
but is expected to have type
- forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_matrix SymplecticGroup.coeMatrixₓ'. -/
instance coeMatrix : Coe (symplecticGroup l R) (Matrix (Sum l l) (Sum l l) R) := by infer_instance
#align symplectic_group.coe_matrix SymplecticGroup.coeMatrix
@@ -167,7 +167,7 @@ variable (l) (R)
lean 3 declaration is
forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
but is expected to have type
- forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
Case conversion may be inaccurate. Consider using '#align symplectic_group.J_mem SymplecticGroup.J_memₓ'. -/
theorem J_mem : J l R ∈ symplecticGroup l R :=
by
@@ -179,7 +179,7 @@ theorem J_mem : J l R ∈ symplecticGroup l R :=
lean 3 declaration is
forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
but is expected to have type
- forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (Semiring.toNonAssocSemiring.{u2} R (CommSemiring.toSemiring.{u2} R (CommRing.toCommSemiring.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
Case conversion may be inaccurate. Consider using '#align symplectic_group.sym_J SymplecticGroup.symJₓ'. -/
/-- The canonical skew-symmetric matrix as an element in the symplectic group. -/
def symJ : symplecticGroup l R :=
@@ -192,7 +192,7 @@ variable {l} {R}
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (SymplecticGroup.symJ.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.symJ.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.symJ.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_J SymplecticGroup.coe_Jₓ'. -/
@[simp]
theorem coe_J : ↑(symJ l R) = J l R :=
@@ -207,7 +207,7 @@ variable {R} {A : Matrix (Sum l l) (Sum l l) R}
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
Case conversion may be inaccurate. Consider using '#align symplectic_group.neg_mem SymplecticGroup.neg_memₓ'. -/
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
@@ -219,7 +219,7 @@ theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u2} R (Ring.toMonoid.{u2} R (CommRing.toRing.{u2} R _inst_3)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) R _inst_3 A))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (Matrix.det.{u1, u2} (Sum.{u2, u2} l l) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) R _inst_3 A))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3)))) (Matrix.det.{u1, u2} (Sum.{u2, u2} l l) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) R _inst_3 A))
Case conversion may be inaccurate. Consider using '#align symplectic_group.symplectic_det SymplecticGroup.symplectic_detₓ'. -/
theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
by
@@ -238,7 +238,7 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem SymplecticGroup.transpose_memₓ'. -/
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R :=
by
@@ -265,7 +265,7 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iffₓ'. -/
@[simp]
theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGroup l R :=
@@ -276,7 +276,7 @@ theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGro
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'ₓ'. -/
theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R := by
rw [← transpose_mem_iff, mem_iff, transpose_transpose]
@@ -291,7 +291,7 @@ instance : Inv (symplecticGroup l R)
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv SymplecticGroup.coe_invₓ'. -/
theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
rfl
@@ -301,7 +301,7 @@ theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))))))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (NonAssocRing.toOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))))))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (Semiring.toOne.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3)))))))
Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_auxₓ'. -/
theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
calc
@@ -320,7 +320,7 @@ theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))
Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'ₓ'. -/
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
by
@@ -332,7 +332,7 @@ theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum
lean 3 declaration is
forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R), (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
but is expected to have type
- forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R), (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R), (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (Semiring.toNonAssocSemiring.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_invₓ'. -/
theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ symplecticGroup l R) :
A⁻¹ = (-J l R) ⬝ Aᵀ ⬝ J l R :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/36b8aa61ea7c05727161f96a0532897bd72aedab
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Matej Penciak, Moritz Doll, Fabien Clery
! This file was ported from Lean 3 source module linear_algebra.symplectic_group
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit ef55335933293309ff8c0b1d20ffffeecbe5c39f
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.LinearAlgebra.Matrix.NonsingularInverse
/-!
# The Symplectic Group
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines the symplectic group and proves elementary properties.
## Main Definitions
mathlib commit https://github.com/leanprover-community/mathlib/commit/a4f99eae998680d3a2c240da4a2b16354c85ee49
@@ -36,36 +36,62 @@ variable (l) [DecidableEq l] (R) [CommRing R]
section JMatrixLemmas
+#print Matrix.J /-
/-- The matrix defining the canonical skew-symmetric bilinear form. -/
-def j : Matrix (Sum l l) (Sum l l) R :=
+def J : Matrix (Sum l l) (Sum l l) R :=
Matrix.fromBlocks 0 (-1) 1 0
-#align matrix.J Matrix.j
+#align matrix.J Matrix.J
+-/
+/- warning: matrix.J_transpose -> Matrix.J_transpose is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
+but is expected to have type
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
+Case conversion may be inaccurate. Consider using '#align matrix.J_transpose Matrix.J_transposeₓ'. -/
@[simp]
-theorem j_transpose : (j l R)ᵀ = -j l R :=
+theorem J_transpose : (J l R)ᵀ = -J l R :=
by
rw [J, from_blocks_transpose, ← neg_one_smul R (from_blocks _ _ _ _), from_blocks_smul,
Matrix.transpose_zero, Matrix.transpose_one, transpose_neg]
simp [from_blocks]
-#align matrix.J_transpose Matrix.j_transpose
+#align matrix.J_transpose Matrix.J_transpose
variable [Fintype l]
-theorem j_squared : j l R ⬝ j l R = -1 :=
+/- warning: matrix.J_squared -> Matrix.J_squared is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))))
+but is expected to have type
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_2))) (NonAssocRing.toOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_2)))))))
+Case conversion may be inaccurate. Consider using '#align matrix.J_squared Matrix.J_squaredₓ'. -/
+theorem J_squared : J l R ⬝ J l R = -1 :=
by
rw [J, from_blocks_multiply]
simp only [Matrix.zero_mul, Matrix.neg_mul, zero_add, neg_zero, Matrix.one_mul, add_zero]
rw [← neg_zero, ← Matrix.fromBlocks_neg, ← from_blocks_one]
-#align matrix.J_squared Matrix.j_squared
-
-theorem j_inv : (j l R)⁻¹ = -j l R :=
+#align matrix.J_squared Matrix.J_squared
+
+/- warning: matrix.J_inv -> Matrix.J_inv is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_2) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
+but is expected to have type
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : CommRing.{u1} R] [_inst_3 : Fintype.{u2} l], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_3 _inst_3) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_2) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_2))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))
+Case conversion may be inaccurate. Consider using '#align matrix.J_inv Matrix.J_invₓ'. -/
+theorem J_inv : (J l R)⁻¹ = -J l R :=
by
refine' Matrix.inv_eq_right_inv _
rw [Matrix.mul_neg, J_squared]
exact neg_neg 1
-#align matrix.J_inv Matrix.j_inv
-
-theorem j_det_mul_j_det : det (j l R) * det (j l R) = 1 :=
+#align matrix.J_inv Matrix.J_inv
+
+/- warning: matrix.J_det_mul_J_det -> Matrix.J_det_mul_J_det is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_2)))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (OfNat.mk.{u2} R 1 (One.one.{u2} R (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_2))))))))
+but is expected to have type
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Eq.{succ u2} R (HMul.hMul.{u2, u2, u2} R R R (instHMul.{u2} R (NonUnitalNonAssocRing.toMul.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))))) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) R _inst_2 (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2))) (OfNat.ofNat.{u2} R 1 (One.toOfNat1.{u2} R (NonAssocRing.toOne.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2)))))
+Case conversion may be inaccurate. Consider using '#align matrix.J_det_mul_J_det Matrix.J_det_mul_J_detₓ'. -/
+theorem J_det_mul_J_det : det (J l R) * det (J l R) = 1 :=
by
rw [← det_mul, J_squared]
rw [← one_smul R (-1 : Matrix _ _ R)]
@@ -73,20 +99,28 @@ theorem j_det_mul_j_det : det (j l R) * det (j l R) = 1 :=
simp only [Fintype.card_sum, det_one, mul_one]
apply Even.neg_one_pow
exact even_add_self _
-#align matrix.J_det_mul_J_det Matrix.j_det_mul_j_det
+#align matrix.J_det_mul_J_det Matrix.J_det_mul_J_det
-theorem isUnit_det_j : IsUnit (det (j l R)) :=
- isUnit_iff_exists_inv.mpr ⟨det (j l R), j_det_mul_j_det _ _⟩
-#align matrix.is_unit_det_J Matrix.isUnit_det_j
+#print Matrix.isUnit_det_J /-
+theorem isUnit_det_J : IsUnit (det (J l R)) :=
+ isUnit_iff_exists_inv.mpr ⟨det (J l R), J_det_mul_J_det _ _⟩
+#align matrix.is_unit_det_J Matrix.isUnit_det_J
+-/
end JMatrixLemmas
variable [Fintype l]
+/- warning: matrix.symplectic_group -> Matrix.symplecticGroup is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))) (Sum.fintype.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))
+but is expected to have type
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : CommRing.{u2} R] [_inst_3 : Fintype.{u1} l], Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_2))) (instFintypeSum.{u1, u1} l l _inst_3 _inst_3) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))
+Case conversion may be inaccurate. Consider using '#align matrix.symplectic_group Matrix.symplecticGroupₓ'. -/
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R)
where
- carrier := { A | A ⬝ j l R ⬝ Aᵀ = j l R }
+ carrier := { A | A ⬝ J l R ⬝ Aᵀ = J l R }
mul_mem' := by
intro a b ha hb
simp only [mul_eq_mul, Set.mem_setOf_eq, transpose_mul] at *
@@ -103,10 +137,22 @@ variable {l} {R} [DecidableEq l] [Fintype l] [CommRing R]
open Matrix
+/- warning: symplectic_group.mem_iff -> SymplecticGroup.mem_iff is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) A (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) A (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff SymplecticGroup.mem_iffₓ'. -/
theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
- A ∈ symplecticGroup l R ↔ A ⬝ j l R ⬝ Aᵀ = j l R := by simp [symplectic_group]
+ A ∈ symplecticGroup l R ↔ A ⬝ J l R ⬝ Aᵀ = J l R := by simp [symplectic_group]
#align symplectic_group.mem_iff SymplecticGroup.mem_iff
+/- warning: symplectic_group.coe_matrix -> SymplecticGroup.coeMatrix is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
+but is expected to have type
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Coe.{max (succ u1) (succ u2), max (succ u2) (succ u1)} (Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R)
+Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_matrix SymplecticGroup.coeMatrixₓ'. -/
instance coeMatrix : Coe (symplecticGroup l R) (Matrix (Sum l l) (Sum l l) R) := by infer_instance
#align symplectic_group.coe_matrix SymplecticGroup.coeMatrix
@@ -114,34 +160,64 @@ section SymplecticJ
variable (l) (R)
-theorem j_mem : j l R ∈ symplecticGroup l R :=
+/- warning: symplectic_group.J_mem -> SymplecticGroup.J_mem is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
+but is expected to have type
+ forall (l : Type.{u2}) (R : Type.{u1}) [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
+Case conversion may be inaccurate. Consider using '#align symplectic_group.J_mem SymplecticGroup.J_memₓ'. -/
+theorem J_mem : J l R ∈ symplecticGroup l R :=
by
rw [mem_iff, J, from_blocks_multiply, from_blocks_transpose, from_blocks_multiply]
simp
-#align symplectic_group.J_mem SymplecticGroup.j_mem
-
+#align symplectic_group.J_mem SymplecticGroup.J_mem
+
+/- warning: symplectic_group.sym_J -> SymplecticGroup.symJ is a dubious translation:
+lean 3 declaration is
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)
+but is expected to have type
+ forall (l : Type.{u1}) (R : Type.{u2}) [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Subtype.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (fun (x : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) => Membership.mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u1 u2, max u1 u2} (Submonoid.{max u2 u1} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.instSetLikeSubmonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (instFintypeSum.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.instDecidableEqSum.{u1, u1} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.sym_J SymplecticGroup.symJₓ'. -/
/-- The canonical skew-symmetric matrix as an element in the symplectic group. -/
def symJ : symplecticGroup l R :=
- ⟨j l R, j_mem l R⟩
+ ⟨J l R, J_mem l R⟩
#align symplectic_group.sym_J SymplecticGroup.symJ
variable {l} {R}
+/- warning: symplectic_group.coe_J -> SymplecticGroup.coe_J is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R], Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (SymplecticGroup.symJ.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R], Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.symJ.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)
+Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_J SymplecticGroup.coe_Jₓ'. -/
@[simp]
-theorem coe_j : ↑(symJ l R) = j l R :=
+theorem coe_J : ↑(symJ l R) = J l R :=
rfl
-#align symplectic_group.coe_J SymplecticGroup.coe_j
+#align symplectic_group.coe_J SymplecticGroup.coe_J
end SymplecticJ
variable {R} {A : Matrix (Sum l l) (Sum l l) R}
+/- warning: symplectic_group.neg_mem -> SymplecticGroup.neg_mem is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.neg_mem SymplecticGroup.neg_memₓ'. -/
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R :=
by
rw [mem_iff] at h⊢
simp [h]
#align symplectic_group.neg_mem SymplecticGroup.neg_mem
+/- warning: symplectic_group.symplectic_det -> SymplecticGroup.symplectic_det is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u2} R (Ring.toMonoid.{u2} R (CommRing.toRing.{u2} R _inst_3)) (Matrix.det.{u2, u1} (Sum.{u1, u1} l l) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) R _inst_3 A))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (IsUnit.{u1} R (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (Matrix.det.{u1, u2} (Sum.{u2, u2} l l) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) R _inst_3 A))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.symplectic_det SymplecticGroup.symplectic_detₓ'. -/
theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
by
rw [isUnit_iff_exists_inv]
@@ -155,6 +231,12 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A :=
exact hA
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
+/- warning: symplectic_group.transpose_mem -> SymplecticGroup.transpose_mem is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem SymplecticGroup.transpose_memₓ'. -/
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R :=
by
rw [mem_iff] at hA⊢
@@ -176,45 +258,81 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
#align symplectic_group.transpose_mem SymplecticGroup.transpose_mem
+/- warning: symplectic_group.transpose_mem_iff -> SymplecticGroup.transpose_mem_iff is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iffₓ'. -/
@[simp]
theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGroup l R :=
⟨fun hA => by simpa using transpose_mem hA, transpose_mem⟩
#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iff
-theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ j l R ⬝ A = j l R := by
+/- warning: symplectic_group.mem_iff' -> SymplecticGroup.mem_iff' is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, Iff (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, Iff (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'ₓ'. -/
+theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R := by
rw [← transpose_mem_iff, mem_iff, transpose_transpose]
#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'
instance : Inv (symplecticGroup l R)
where inv A :=
- ⟨(-j l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ j l R,
- mul_mem (mul_mem (neg_mem <| j_mem _ _) <| transpose_mem A.2) <| j_mem _ _⟩
-
-theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-j l R) ⬝ (↑A)ᵀ ⬝ j l R :=
+ ⟨(-J l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ J l R,
+ mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
+
+/- warning: symplectic_group.coe_inv -> SymplecticGroup.coe_inv is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv SymplecticGroup.coe_invₓ'. -/
+theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R :=
rfl
#align symplectic_group.coe_inv SymplecticGroup.coe_inv
-theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -j l R ⬝ Aᵀ ⬝ j l R ⬝ A = 1 :=
+/- warning: symplectic_group.inv_left_mul_aux -> SymplecticGroup.inv_left_mul_aux is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] {A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R}, (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (OfNat.mk.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) 1 (One.one.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasOne.{u2, u1} (Sum.{u1, u1} l l) R (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) (MulZeroClass.toHasZero.{u2} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u2} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3)))))) (AddMonoidWithOne.toOne.{u2} R (AddGroupWithOne.toAddMonoidWithOne.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))))))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] {A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R}, (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) A)) (OfNat.ofNat.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) 1 (One.toOfNat1.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.one.{u1, u2} (Sum.{u2, u2} l l) R (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) (CommMonoidWithZero.toZero.{u1} R (CommSemiring.toCommMonoidWithZero.{u1} R (CommRing.toCommSemiring.{u1} R _inst_3))) (NonAssocRing.toOne.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))))))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_auxₓ'. -/
+theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
calc
- -j l R ⬝ Aᵀ ⬝ j l R ⬝ A = (-j l R) ⬝ (Aᵀ ⬝ j l R ⬝ A) := by
+ -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
simp only [Matrix.mul_assoc, Matrix.neg_mul]
- _ = (-j l R) ⬝ j l R := by
+ _ = (-J l R) ⬝ J l R := by
rw [mem_iff'] at hA
rw [hA]
- _ = (-1 : R) • j l R ⬝ j l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
+ _ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • -1 := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
+/- warning: symplectic_group.coe_inv' -> SymplecticGroup.coe_inv' is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)), Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) (Inv.inv.{max u1 u2} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (SymplecticGroup.Matrix.SymplecticGroup.hasInv.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) ((fun (a : Type.{max u1 u2}) (b : Type.{max u1 u2}) [self : HasLiftT.{succ (max u1 u2), succ (max u1 u2)} a b] => self.0) (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (HasLiftT.mk.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (CoeTCₓ.coe.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (coeBase.{succ (max u1 u2), succ (max u1 u2)} (coeSort.{succ (max u1 u2), succ (succ (max u1 u2))} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) Type.{max u1 u2} (SetLike.hasCoeToSort.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) l (fun (a : l) (b : l) => (fun (a : l) (b : l) => _inst_1 a b) a b) a b)))))) (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (SymplecticGroup.coeMatrix.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3)))) A))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))), Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (Inv.inv.{max u2 u1} (Subtype.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) x (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) (SymplecticGroup.hasInv.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_2 _inst_3) A)) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) (Subtype.val.{succ (max u2 u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (fun (x : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) => Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Set.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) (Set.instMembershipSet.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R)) x (SetLike.coe.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2))) A))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'ₓ'. -/
theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum l l) R) = A⁻¹ :=
by
refine' (coe_inv A).trans (inv_eq_left_inv _).symm
simp [inv_left_mul_aux, coe_inv]
#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'
+/- warning: symplectic_group.inv_eq_symplectic_inv -> SymplecticGroup.inv_eq_symplectic_inv is a dubious translation:
+lean 3 declaration is
+ forall {l : Type.{u1}} {R : Type.{u2}} [_inst_1 : DecidableEq.{succ u1} l] [_inst_2 : Fintype.{u1} l] [_inst_3 : CommRing.{u2} R] (A : Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R), (Membership.Mem.{max u1 u2, max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.hasMem.{max u1 u2, max u1 u2} (Submonoid.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Submonoid.setLike.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (MulZeroOneClass.toMulOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.nonAssocSemiring.{u2, u1} (Sum.{u1, u1} l l) R (NonAssocRing.toNonAssocSemiring.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))) (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{succ (max u1 u2)} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Inv.inv.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasInv.{u1, u2} (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (fun (a : Sum.{u1, u1} l l) (b : Sum.{u1, u1} l l) => Sum.decidableEq.{u1, u1} l (fun (a : l) (b : l) => _inst_1 a b) l (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Matrix.mul.{u2, u1, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (Sum.fintype.{u1, u1} l l _inst_2 _inst_2) (Distrib.toHasMul.{u2} R (Ring.toDistrib.{u2} R (CommRing.toRing.{u2} R _inst_3))) (AddCommGroup.toAddCommMonoid.{u2} R (NonUnitalNonAssocRing.toAddCommGroup.{u2} R (NonAssocRing.toNonUnitalNonAssocRing.{u2} R (Ring.toNonAssocRing.{u2} R (CommRing.toRing.{u2} R _inst_3))))) (Neg.neg.{max u1 u2} (Matrix.{u1, u1, u2} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R) (Matrix.hasNeg.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R (SubNegMonoid.toHasNeg.{u2} R (AddGroup.toSubNegMonoid.{u2} R (AddGroupWithOne.toAddGroup.{u2} R (AddCommGroupWithOne.toAddGroupWithOne.{u2} R (Ring.toAddCommGroupWithOne.{u2} R (CommRing.toRing.{u2} R _inst_3))))))) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u2, u1, u1} (Sum.{u1, u1} l l) (Sum.{u1, u1} l l) R A)) (Matrix.J.{u1, u2} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
+but is expected to have type
+ forall {l : Type.{u2}} {R : Type.{u1}} [_inst_1 : DecidableEq.{succ u2} l] [_inst_2 : Fintype.{u2} l] [_inst_3 : CommRing.{u1} R] (A : Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R), (Membership.mem.{max u2 u1, max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (SetLike.instMembership.{max u2 u1, max u2 u1} (Submonoid.{max u1 u2} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b))))) (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Submonoid.instSetLikeSubmonoid.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (MulZeroOneClass.toMulOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (NonAssocSemiring.toMulZeroOneClass.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.nonAssocSemiring.{u1, u2} (Sum.{u2, u2} l l) R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))) (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b)))))) A (Matrix.symplecticGroup.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3 _inst_2)) -> (Eq.{max (succ u2) (succ u1)} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Inv.inv.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.inv.{u2, u1} (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (fun (a : Sum.{u2, u2} l l) (b : Sum.{u2, u2} l l) => Sum.instDecidableEqSum.{u2, u2} l l (fun (a : l) (b : l) => _inst_1 a b) (fun (a : l) (b : l) => _inst_1 a b) a b) _inst_3) A) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Matrix.mul.{u1, u2, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (instFintypeSum.{u2, u2} l l _inst_2 _inst_2) (NonUnitalNonAssocRing.toMul.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3)))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R (CommRing.toRing.{u1} R _inst_3))))) (Neg.neg.{max u2 u1} (Matrix.{u2, u2, u1} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R) (Matrix.neg.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R (Ring.toNeg.{u1} R (CommRing.toRing.{u1} R _inst_3))) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)) (Matrix.transpose.{u1, u2, u2} (Sum.{u2, u2} l l) (Sum.{u2, u2} l l) R A)) (Matrix.J.{u2, u1} l R (fun (a : l) (b : l) => _inst_1 a b) _inst_3)))
+Case conversion may be inaccurate. Consider using '#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_invₓ'. -/
theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ symplecticGroup l R) :
- A⁻¹ = (-j l R) ⬝ Aᵀ ⬝ j l R :=
+ A⁻¹ = (-J l R) ⬝ Aᵀ ⬝ J l R :=
inv_eq_left_inv (by simp only [Matrix.neg_mul, inv_left_mul_aux hA])
#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_inv
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
⬝
notation in favor of HMul
(#6487)
The main difficulty here is that *
has a slightly difference precedence to ⬝
. notably around smul
and neg
.
The other annoyance is that ↑U ⬝ A ⬝ ↑U⁻¹ : Matrix m m 𝔸
now has to be written U.val * A * (U⁻¹).val
in order to typecheck.
A downside of this change to consider: if you have a goal of A * (B * C) = (A * B) * C
, mul_assoc
now gives the illusion of matching, when in fact Matrix.mul_assoc
is needed. Previously the distinct symbol made it easy to avoid this mistake.
On the flipside, there is now no need to rewrite by Matrix.mul_eq_mul
all the time (indeed, the lemma is now removed).
@@ -49,7 +49,7 @@ set_option linter.uppercaseLean3 false in
variable [Fintype l]
-theorem J_squared : J l R ⬝ J l R = -1 := by
+theorem J_squared : J l R * J l R = -1 := by
rw [J, fromBlocks_multiply]
simp only [Matrix.zero_mul, Matrix.neg_mul, zero_add, neg_zero, Matrix.one_mul, add_zero]
rw [← neg_zero, ← Matrix.fromBlocks_neg, ← fromBlocks_one]
@@ -82,9 +82,9 @@ variable [Fintype l]
/-- The group of symplectic matrices over a ring `R`. -/
def symplecticGroup : Submonoid (Matrix (Sum l l) (Sum l l) R) where
- carrier := { A | A ⬝ J l R ⬝ Aᵀ = J l R }
+ carrier := { A | A * J l R * Aᵀ = J l R }
mul_mem' {a b} ha hb := by
- simp only [mul_eq_mul, Set.mem_setOf_eq, transpose_mul] at *
+ simp only [Set.mem_setOf_eq, transpose_mul] at *
rw [← Matrix.mul_assoc, a.mul_assoc, a.mul_assoc, hb]
exact ha
one_mem' := by simp
@@ -99,7 +99,7 @@ variable [DecidableEq l] [Fintype l] [CommRing R]
open Matrix
theorem mem_iff {A : Matrix (Sum l l) (Sum l l) R} :
- A ∈ symplecticGroup l R ↔ A ⬝ J l R ⬝ Aᵀ = J l R := by simp [symplecticGroup]
+ A ∈ symplecticGroup l R ↔ A * J l R * Aᵀ = J l R := by simp [symplecticGroup]
#align symplectic_group.mem_iff SymplecticGroup.mem_iff
-- Porting note: Previous proof was `by infer_instance`
@@ -159,11 +159,11 @@ theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGrou
rw [Matrix.det_transpose]
exact huA
calc
- Aᵀ ⬝ J l R ⬝ A = (-Aᵀ) ⬝ (J l R)⁻¹ ⬝ A := by
+ Aᵀ * J l R * A = (-Aᵀ) * (J l R)⁻¹ * A := by
rw [J_inv]
simp
- _ = (-Aᵀ) ⬝ (A ⬝ J l R ⬝ Aᵀ)⁻¹ ⬝ A := by rw [hA]
- _ = (-Aᵀ ⬝ (Aᵀ⁻¹ ⬝ (J l R)⁻¹)) ⬝ A⁻¹ ⬝ A := by
+ _ = (-Aᵀ) * (A * J l R * Aᵀ)⁻¹ * A := by rw [hA]
+ _ = -(Aᵀ * (Aᵀ⁻¹ * (J l R)⁻¹)) * A⁻¹ * A := by
simp only [Matrix.mul_inv_rev, Matrix.mul_assoc, Matrix.neg_mul]
_ = -(J l R)⁻¹ := by
rw [mul_nonsing_inv_cancel_left _ _ huAT, nonsing_inv_mul_cancel_right _ _ huA]
@@ -175,25 +175,25 @@ theorem transpose_mem_iff : Aᵀ ∈ symplecticGroup l R ↔ A ∈ symplecticGro
⟨fun hA => by simpa using transpose_mem hA, transpose_mem⟩
#align symplectic_group.transpose_mem_iff SymplecticGroup.transpose_mem_iff
-theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ ⬝ J l R ⬝ A = J l R := by
+theorem mem_iff' : A ∈ symplecticGroup l R ↔ Aᵀ * J l R * A = J l R := by
rw [← transpose_mem_iff, mem_iff, transpose_transpose]
#align symplectic_group.mem_iff' SymplecticGroup.mem_iff'
instance hasInv : Inv (symplecticGroup l R) where
- inv A := ⟨(-J l R) ⬝ (A : Matrix (Sum l l) (Sum l l) R)ᵀ ⬝ J l R,
+ inv A := ⟨(-J l R) * (A : Matrix (Sum l l) (Sum l l) R)ᵀ * J l R,
mul_mem (mul_mem (neg_mem <| J_mem _ _) <| transpose_mem A.2) <| J_mem _ _⟩
-theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) ⬝ (↑A)ᵀ ⬝ J l R := rfl
+theorem coe_inv (A : symplecticGroup l R) : (↑A⁻¹ : Matrix _ _ _) = (-J l R) * (↑A)ᵀ * J l R := rfl
#align symplectic_group.coe_inv SymplecticGroup.coe_inv
-theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = 1 :=
+theorem inv_left_mul_aux (hA : A ∈ symplecticGroup l R) : -(J l R * Aᵀ * J l R * A) = 1 :=
calc
- -J l R ⬝ Aᵀ ⬝ J l R ⬝ A = (-J l R) ⬝ (Aᵀ ⬝ J l R ⬝ A) := by
+ -(J l R * Aᵀ * J l R * A) = (-J l R) * (Aᵀ * J l R * A) := by
simp only [Matrix.mul_assoc, Matrix.neg_mul]
- _ = (-J l R) ⬝ J l R := by
+ _ = (-J l R) * J l R := by
rw [mem_iff'] at hA
rw [hA]
- _ = (-1 : R) • J l R ⬝ J l R := by simp only [Matrix.neg_mul, neg_smul, one_smul]
+ _ = (-1 : R) • (J l R * J l R) := by simp only [Matrix.neg_mul, neg_smul, one_smul]
_ = (-1 : R) • (-1 : Matrix _ _ _) := by rw [J_squared]
_ = 1 := by simp only [neg_smul_neg, one_smul]
#align symplectic_group.inv_left_mul_aux SymplecticGroup.inv_left_mul_aux
@@ -204,7 +204,7 @@ theorem coe_inv' (A : symplecticGroup l R) : (↑A⁻¹ : Matrix (Sum l l) (Sum
#align symplectic_group.coe_inv' SymplecticGroup.coe_inv'
theorem inv_eq_symplectic_inv (A : Matrix (Sum l l) (Sum l l) R) (hA : A ∈ symplecticGroup l R) :
- A⁻¹ = (-J l R) ⬝ Aᵀ ⬝ J l R :=
+ A⁻¹ = (-J l R) * Aᵀ * J l R :=
inv_eq_left_inv (by simp only [Matrix.neg_mul, inv_left_mul_aux hA])
#align symplectic_group.inv_eq_symplectic_inv SymplecticGroup.inv_eq_symplectic_inv
@@ -213,7 +213,6 @@ instance : Group (symplecticGroup l R) :=
mul_left_inv := fun A => by
apply Subtype.ext
simp only [Submonoid.coe_one, Submonoid.coe_mul, Matrix.neg_mul, coe_inv]
- rw [Matrix.mul_eq_mul, Matrix.neg_mul]
exact inv_left_mul_aux A.2 }
end SymplecticGroup
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -25,7 +25,7 @@ This file defines the symplectic group and proves elementary properties.
open Matrix
-variable {l R : Type _}
+variable {l R : Type*}
namespace Matrix
@@ -2,14 +2,11 @@
Copyright (c) 2022 Matej Penciak. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Matej Penciak, Moritz Doll, Fabien Clery
-
-! This file was ported from Lean 3 source module linear_algebra.symplectic_group
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.LinearAlgebra.Matrix.NonsingularInverse
+#align_import linear_algebra.symplectic_group from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# The Symplectic Group
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -138,7 +138,7 @@ end SymplecticJ
variable {A : Matrix (Sum l l) (Sum l l) R}
theorem neg_mem (h : A ∈ symplecticGroup l R) : -A ∈ symplecticGroup l R := by
- rw [mem_iff] at h⊢
+ rw [mem_iff] at h ⊢
simp [h]
#align symplectic_group.neg_mem SymplecticGroup.neg_mem
@@ -155,7 +155,7 @@ theorem symplectic_det (hA : A ∈ symplecticGroup l R) : IsUnit <| det A := by
#align symplectic_group.symplectic_det SymplecticGroup.symplectic_det
theorem transpose_mem (hA : A ∈ symplecticGroup l R) : Aᵀ ∈ symplecticGroup l R := by
- rw [mem_iff] at hA⊢
+ rw [mem_iff] at hA ⊢
rw [transpose_transpose]
have huA := symplectic_det hA
have huAT : IsUnit Aᵀ.det := by
Now that leanprover/lean4#2210 has been merged, this PR:
set_option synthInstance.etaExperiment true
commands (and some etaExperiment%
term elaborators)set_option maxHeartbeats
commandsCo-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>
@@ -44,8 +44,8 @@ set_option linter.uppercaseLean3 false in
@[simp]
theorem J_transpose : (J l R)ᵀ = -J l R := by
- rw [J, fromBlocks_transpose, ← neg_one_smul R (fromBlocks _ _ _ _), fromBlocks_smul,
- Matrix.transpose_zero, Matrix.transpose_one, transpose_neg]
+ rw [J, fromBlocks_transpose, ← neg_one_smul R (fromBlocks _ _ _ _ : Matrix (l ⊕ l) (l ⊕ l) R),
+ fromBlocks_smul, Matrix.transpose_zero, Matrix.transpose_one, transpose_neg]
simp [fromBlocks]
set_option linter.uppercaseLean3 false in
#align matrix.J_transpose Matrix.J_transpose
The unported dependencies are