generic type T_Element is digits <>; N: Positive; package Google_Naive is type T_Google is limited private; type T_Vecteur is limited private; function "*"(left : T_Vecteur ; right : T_Google) return T_Vecteur; function "*"(left: T_Element; right: T_Google) return T_Google; function "/"(left: T_Google; right: T_Element) return T_Google with Pre => right /= 0.0; procedure initialize(mat: in out T_Google); procedure initialize(vec: in out T_Vecteur); function ones return T_Google; procedure insert(mat: in out T_Google; i, j: Natural; elm: T_Element); private type T_Google is array (0..N-1, 0..N-1) of T_Element; type T_Vecteur is array (0..N-1) of T_Element; end Google_Naive;