Canonical cfdotr_linear xi := Linear (cfdotr_is_linear xi).

(* Specifications: *)
Lemma cfdot0l xi : '[0, xi] = 0.
Lemma eq_cfdotr A phi psi1 psi2 :
phi \in 'CF(G, A) -> {in A, psi1 =1 psi2} -> '[phi, psi1] = '[phi, psi2].
Lemma cfdot_conjC phi psi : '[phi^*, psi^*] = '[phi, psi]^*.
Lemma cfnorm_eq0 phi : ('[phi] == 0) = (phi == 0).
Lemma cfnorm_gt0 phi : ('[phi] > 0) = (phi != 0).
Lemma cfnorm_conjC phi : '[phi^*] = '[phi].
Lemma cfCauchySchwarz_sqrt phi psi :
`|'[phi, psi]| <= sqrtC '[phi] * sqrtC '[psi] ?= iff ~~ free (phi :: psi).
Lemma cf_triangle_lerif phi psi :
sqrtC '[phi + psi] <= sqrtC '[phi] + sqrtC '[psi]
?= iff ~~ free (phi :: psi) && (0 <= coord [tuple psi] 0 phi).
Lemma orthogonal_cons phi R S :
orthogonal (phi :: R) S = orthogonal phi S && orthogonal R S.
Lemma orthoPl phi S :
reflect {in S, forall psi, '[phi, psi] = 0} (orthogonal phi S).