+let gen_pac n vars =
+ let rec take' l n =
+ if n = 0 then [], []
+ else match l with
+ | [] -> [], []
+ | [_] -> assert false
+ | x1::x2::xs -> let a, b = take' xs (n-1) in x1::a,x2::b in
+ let rec aux n inerts lams =
+ if n = 0 then List.hd inerts, take' (Util.sort_uniq (List.tl inerts)) 5
+ else let inerts, lams = if Random.int 2 = 0
+ then inerts, ("(" ^ acaso vars ^ ". " ^ acaso3 inerts lams ^ ")") :: lams
+ else ("(" ^ acaso inerts ^ " " ^ acaso3 inerts lams^ ")") :: inerts, lams
+ in aux (n-1) inerts lams
+ in aux (2*n) vars []
+;;
+