shrink(Type,int(Value),int(Shrunken)) :-
Type =.. [prob_value_any|_] ,
shrink(integer(_),Value,Shrunken).
shrink(Type,string(Value),string(Shrunken)) :-
Type =.. [prob_value_any|_] ,
shrink(atom(_),Value,Shrunken).
shrink(Type,Value,Shrunken) :-
Type =.. [prob_value_any|_] ,
(is_list(Value) ; Value = avl_set(_)) ,
shrink(prob_value_set,Value,Shrunken).
shrink(Type,Value,Shrunken) :-
Type =.. [prob_value_any|_] ,
shrink(prob_value_boolean(_),Value,Shrunken).