let print_automata_axiomatization (_ , trans_l) =
fprintf !out_fmt "logic %s : int -> int \n" transStart ;
fprintf !out_fmt "\n" ;
List.iter (fun t ->
fprintf !out_fmt "axiom %s_%d : (%s(%d) = %d)\n" transStart t.numt transStart t.numt t.start.nums
) trans_l;
fprintf !out_fmt "\n" ;
fprintf !out_fmt "logic %s : int -> int \n" transStop ;
fprintf !out_fmt "\n" ;
List.iter (fun t ->
fprintf !out_fmt "axiom %s_%d : (%s(%d) = %d)\n" transStop t.numt transStop t.numt t.stop.nums
) trans_l;
fprintf !out_fmt "\n" ;
fprintf !out_fmt "predicate %s(%s: int, %s: int, num: int) = \n" transCond curOpStatus curOp;
let first=(List.hd trans_l) in
fprintf !out_fmt " ((num=%d) -> (%s)) " first.numt (string_of_condition first.cross);
List.iter (fun t ->
printf "and\n ((num=%d) -> (%s)) " t.numt (string_of_condition t.cross)
) (List.tl trans_l);
fprintf !out_fmt "\n)\n"