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)