module CLineaire : sig type t = { k : int; n : int; g : Math.matrice; h : Math.matrice; } type code_lineaire = t exception PasDansLeCodeException exception IndecodableException val antecedent : code_lineaire -> Math.vecteur -> Math.vecteur val encoder : code_lineaire -> Math.vecteur -> Math.vecteur val systematiqueFromRedondance : int -> int -> Math.matrice -> code_lineaire val distance_minimale : code_lineaire -> int val decoder : code_lineaire -> Math.vecteur -> Math.vecteur val appartenir : code_lineaire -> Math.vecteur -> bool type classesLaterales = { syndr : Math.vecteur -> Math.vecteur; erreur : Math.vecteur -> Math.vecteur; babr : Math.vecteur Math.binabr; } val genererClasses : t -> classesLaterales val decoder2 : classesLaterales -> Math.vecteur -> Math.vecteur end module CCyclique : sig type t = { k : int; n : int; pol : Math.polynome; } val get : int -> int -> Math.polynome -> t end val cycliqueVersLineaire : CCyclique.t -> CLineaire.t