test(simple_root_mutation, [nondet]) :-
mutate(disjunct(pred,pred), pred, b(conjunct(b(truth,pred,[]),b(falsity,pred,[])),pred,[]), b(disjunct(b(truth,pred,[]),b(falsity,pred,[])),pred,[])).
test(simple_wrong_root_mutation, [fail]) :-
mutate(less_equal(integer,integer), pred, b(conjunct(b(truth,pred,[]),b(falsity,pred,[])),pred,[]), _).
test(simple_mutation_no_root, set(AST == [b(conjunct(b(disjunct(b(truth,pred,[]), b(falsity,pred,[])),pred,[]),b(falsity,pred,[])),pred,[]), b(disjunct(b(equivalence(b(truth,pred,[]), b(falsity,pred,[])),pred,[]),b(falsity,pred,[])),pred,[])])) :-
mutate(disjunct(pred,pred), pred, b(conjunct(b(equivalence(b(truth,pred,[]), b(falsity,pred,[])),pred,[]),b(falsity,pred,[])),pred,[]), AST).
test(simple_root_reduce_mutation, [nondet]) :-
mutate(negation(pred), pred, b(conjunct(b(falsity,pred,[]),b(true,pred,[])),pred,[]), b(negation(b(falsity,pred,[])),pred,[])).
test(simple_root_reduce_mutation_fail, [fail]) :-
mutate(negation(pred), pred, b(add(b(integer(3),integer,[]),b(integer(2),integer,[])),integer,[]), _).
test(simple_root_generate_pred, [nondet]) :-
mutate(conjunct(pred,pred), pred, b(negation(b(falsity,pred,[])),pred,[]), b(conjunct(b(falsity,pred,[]),b(_,pred,_)),pred,[])).
test(simple_root_generate_integer, [nondet]) :-
mutate(add(integer,integer), integer, b(unary_minus(b(integer(3),integer,[])),integer,[]), b(add(b(integer(3),integer,[]),b(_,integer,_)),integer,[])).
test(simple_root_generate_set, [nondet]) :-
mutate(subset(set(A),set(A)), pred, b(finite(b(set_extension([b(integer(365),integer,[])]),set(integer),[])),pred,[]), b(subset(b(set_extension([b(integer(365),integer,[])]),set(integer),[]),b(_,set(integer),_)),pred,[])).
test(simple_root_generate_seq, [nondet]) :-
mutate(concat(seq(A),seq(A)), seq(A), b(front(b(value([(int(1),pred_false),(int(2),pred_true)]),seq(boolean),[])),seq(boolean),[]), b(concat(b(value([(int(1),pred_false),(int(2),pred_true)]),seq(boolean),[]),b(_,seq(boolean),_)),seq(boolean),[])).
test(simple_root_generate_seq_2, [nondet]) :-
mutate(concat(seq(A),seq(A)), seq(A), b(front(b(seq_extension([b(integer(365),integer,[])]),seq(integer),[])),seq(integer),[]), b(concat(b(seq_extension([b(integer(365),integer,[])]),seq(integer),[]),b(_,seq(integer),_)),seq(integer),[])).
test(simple_exists, [nondet]) :-
generate(prob_ast_pred([noQuantifier]),AST),
mutate(exists(ids,pred),pred,AST,b(exists(_,_),pred,[_])).
test(simple_forall, [nondet]) :-
generate(prob_ast_pred([noQuantifier]),AST),
mutate(forall(ids,constraints,pred),pred,AST,b(forall(_,_,_),pred,[_])).