ROSCOQ.CanonicalNotations

Class SqrtFun (A B : Type) := sqrtFun : AB.
Notation "√" := sqrtFun.

Class RealNumberPi (R : Type) := π : R.

Class HalfNum (R : Type) := half_num : R.
Notation "½" := half_num.

Should we add other properties of distance, e.g. triangle inequality?
Class NormSpace (A B : Type) := norm : AB.
Notation "| x |" := (norm x) (at level 300).

Class ProjectionFst (Prod A : Type) := π : ProdA.

Instance ProjectionFst_instance_prod (A B : Type) :
    ProjectionFst (prod A B) A := (@fst A B) .

Instance ProjectionFst_instance_conj (A B : Prop) :
    ProjectionFst (A B) A := (@proj1 A B) .