(* Corrigé du TP noté *) (* 1 *) let rec adjoint l ms = match(ms) with [] -> [] | m::ms -> (l::m)::(adjoint l ms);; (* 2 *) let rec filtre m1 m2 = match(m1,m2) with ([],[]) -> true | (t1::r1,[]) -> false | ([],t2::r2) -> false | (t1::r1,t2::r2) -> (t1=t2 or t2='?') & (filtre r1 r2);; (* 3 *) let rec extrait m n = match(m) with [] -> [[]] | t::r -> if n=0 then [[]] else let l1 = extrait r n in let l2 = extrait r (n-1) in l1 @ (adjoint t l2);;