1 :- multifile generate/2.
2 :- multifile shrink/3.
3
4 % any expression
5 generate(prob_ast_expr(Option),Value) :-
6 random_member(Type,[prob_ast_set_expr(Option),prob_ast_int_expr(Option),prob_ast_seq_expr(Option)]),
7 generate(Type,Value).
8
9 % differenciate between record, integer, set or sequence expression
10 shrink(Type,Value,Shrunken) :-
11 Type =.. [prob_ast_expr|_] ,
12 Value = b(_,record(_),_) ,
13 shrink(prob_ast_record,Value,Shrunken).
14
15 shrink(Type,Value,Shrunken) :-
16 Type =.. [prob_ast_expr|_] ,
17 Value = b(_,set(_),_) ,
18 shrink(prob_ast_set_expr,Value,Shrunken).
19
20 shrink(Type,Value,Shrunken) :-
21 Type =.. [prob_ast_expr|_] ,
22 Value = b(_,seq(_),_) ,
23 shrink(prob_ast_seq_expr,Value,Shrunken).
24
25 shrink(Type,Value,Shrunken) :-
26 Type =.. [prob_ast_expr|_] ,
27 Value = b(_,integer,_) ,
28 shrink(prob_ast_int_expr,Value,Shrunken).