let build_matrices (eqnsys : term list list) n vars atms =
let a = Array.make_matrix n (Array.length vars) 0 in
let b = Array.make_matrix n (Array.length atms) 0 in
let rec mem x = function
| (Var y)::tail -> x=y || mem x tail
| [] -> false
| _ -> failwith ("Unifyxor.build_matrices: "^
"only Var(_) allowed here")
in
let rec f matrix row ns eqnsys =
match eqnsys with
| eqn::tail ->
for col = 0 to (Array.length ns)-1 do
if mem ns.(col) eqn then
(matrix.(row)).(col) <- 1
done;
f matrix (row+1) ns tail
| [] -> ()
in
f a 0 vars eqnsys;
f b 0 atms eqnsys;
(a, b)