type vecteur = int
type matrice = int list
type polynome = int

val deux_puissance : int -> int
val changer_bit : int -> int -> int
val decagauche : int -> int -> int

val nthOfBinarint : int -> int -> string
val print_matrice : int -> matrice -> unit
val print_vecteur : int -> vecteur -> unit
val print_polynome : polynome -> unit

val produit : matrice -> vecteur -> vecteur
val identite : int -> matrice
val orderize : 'a -> 'a -> 'a * 'a


val respecter : int -> int list -> bool
val matriceAuPif : int -> int -> matrice

val degre : polynome -> int
val polmul : polynome -> polynome -> polynome
val poldiveuc : polynome -> polynome -> polynome * polynome
val poldiv : polynome -> polynome -> polynome
val polrst : polynome -> polynome -> polynome


type 'a binabr = BNoeud of 'a binabr * 'a binabr | BVal of 'a * 'a binabr | BFeuille

exception NoSuchKeyException
val get : 'a binabr -> vecteur -> 'a
val putWho : 'a binabr -> vecteur -> 'a -> bool -> 'a binabr
val put : 'a binabr -> vecteur -> 'a -> 'a binabr
