Canonical cfAut_linear := AddLinear cfAut_scalable.Definition cfun_vectMixin := VectMixin cfun_vect_iso.Canonical cfun_vectType := VectType algC classfun cfun_vectMixin.Notation "{ 'in' CFD , 'isometry' tau , 'to' CFR }" :=
    (isometry_from_to (mem CFD) tau (mem CFR))
  (at level 0, format "{ 'in'  CFD ,  'isometry'  tau ,  'to'  CFR }")
     : type_scope.Notation "''CF' ( G )" := (@fullv _ (cfun_vectType G)) : vspace_scope.Notation "#[ phi ]" := (cforder phi) : cfun_scope.Notation cfConjC_closed := (cfAut_closed conjC).(* Workaround for overeager projection reduction. *)
Notation eqcfP := (@eqP (cfun_eqType _) _ _) (only parsing).Notation cfdotr := (cfdotr_head tt).Notation cfnorm := (cfnorm_head tt).Fixpoint pair_ortho_rec S := 
  if S is psi :: S' then ortho_rec psi S' && pair_ortho_rec S' else true.Definition isometry tau := forall phi psi, '[tau phi, tau psi] = '[phi, psi].Definition isometry_from_to mCFD tau mCFR :=
   prop_in2 mCFD (inPhantom (isometry tau))
  /\ prop_in1 mCFD (inPhantom (forall phi, in_mem (tau phi) mCFR)).(* Outside section so the nosimpl does not get "cooked" out. *)
Definition orthogonal gT D S1 S2 := nosimpl (@ortho_rec gT D S1 S2).rewrite /cfDprod mulrC.