:- module(scryerfd,[run/0]). :- use_module(library(clpz)). run :- uxtestsample_to(_#==>_). seq([]) --> []. seq([E|Es]) --> [E], seq(Es). ... --> [] | [_], ... . :- op(950,fy, [$]). :- op(950,fy, [*]). *_. $(X) :- portray_clause(call:X), catch((X,Res = success),Pat,Res = exc(Pat)), ( Res == time_out -> portray_clause(timeout:X), fail ; Res = exc(Pat) -> portray_clause(Res:X),fail ; portray_clause(exit:X) ). %list_els_els([A, B, C, D], [A, B, C, D], []). list_els_els([],[],[]). list_els_els([E|Es], [E|Fs], Gs) :- list_els_els(Es, Fs, Gs). list_els_els([E|Es], Fs, [E|Gs]) :- list_els_els(Es, Fs, Gs). _^G_0 :- G_0. qs3([]). qs3([Z|Zs]) :- (Z in -3..0;Z in 1..3), qs3(Zs). domain(Vars, Min, Max) :- Vars ins Min..Max. uxtestsample_to(E) :- term_variables(E, Vars), $uxtestsample(E,Vars). uxtestsample(E,Vars) :- RangeMax = 3, RangeMin= -3, % Range = (RangeMin..RangeMax), SVars =.. [v|Vars], D = domain(Vars,RangeMin,RangeMax), D1 = domain(Vars1,RangeMin,RangeMax), D2 = domain(Vars2,RangeMin,RangeMax), Q1 = qs3(Vars1), L = labeling([],Vars), L1 = labeling([],Vars1), L2 = labeling([],Vars2), M = member(SVars,Sols), findall(SVars,(D,E,L),Sols), sort(Sols,SolsU), length(Sols,NrSols), ( Sols \== SolsU ; \+ ground(Sols) ; list_els_els(Vars, Vars1, Vars2), ( Fall=1,Goals = (D1,L1,E,D,L2) ; Fall=2,Goals = (D1,L1,E,M) ; Fall=3,Goals = (D1,E,L1,D2,L2) ; Fall=4,Goals = (D1,D2,L1,E,L2) ; Fall=5,Goals = (Q1,E,L1,M) ), % portray_clause(findall(SVars,Goals,Solsx)), call(Fall^findall(SVars,Goals, Solsx)), sort(Solsx, SolsxU), ( SolsxU \== SolsU, writeq(ineq), nl, $SolsxU \== SolsU ; \+ ( length(Solsx,NrSolsx), NrSolsx == NrSols ), writeq(dl), nl ) ). l_l_diffs([], [], []). l_l_diffs([], [F|Fs], [+F|Diffs]) :- l_l_diffs([], Fs, Diffs). l_l_diffs([E|Es], [], [-E|Diffs]) :- l_l_diffs(Es, [], Diffs). l_l_diffs([E|Es], [F|Fs], Diffs1) :- compare(R, E, F), ( R = (=), l_l_diffs(Es, Fs, Diffs1) ; R = (<), Diffs1 = [-E|Diffs2], l_l_diffs(Es, [F|Fs], Diffs2) ; R = (>), Diffs1 = [+E|Diffs2], l_l_diffs([E|Es], Fs, Diffs2) ).