{R : Type u_1} →
  {M : Type u_2} →
    {N : Type u_3} →
      [inst : CommRing R] →
        [inst_1 : AddCommGroup M] →
          [inst_2 : Module R M] →
            [inst_3 : AddCommGroup N] →
              [inst_4 : Module R N] →
                {p : M →ₗ[R] N →ₗ[R] R} →
                  [inst_5 : p.IsPerfPair] →
                    {U : Submodule R M} →
                      {V : Submodule R N} →
                        {motive : p.IsPerfectCompl U V → Sort u} →
                          (t : p.IsPerfectCompl U V) →
                            ((isCompl_left : IsCompl U (Submodule.map (↑p.toPerfPair.symm) V.dualAnnihilator)) →
                                (isCompl_right :
                                    IsCompl V (Submodule.map (↑p.flip.toPerfPair.symm) U.dualAnnihilator)) →
                                  motive ⋯) →
                              motive t