let unif_xor (eqns : term list list) (po : t_po) (atms : int list) : t_equal =
let n = List.length eqns in
if n=0 then
[]
else
let vars = get_vars atms [] eqns in
let vars_array = Array.of_list vars in
let atms_array = Array.of_list atms in
let a, b = build_matrices eqns n vars_array atms_array in
let ro = gauss_elim a b in
(* solve_trianglar may raise the exception No_Solution *)
solve_triangular a b ro vars_array atms_array po