3:-module(trill_test,
4 [close_to/2,close_to/3,run/1,run_fail/1]). 5
6:- meta_predicate run(:). 7:- meta_predicate run_fail(:). 8
9run(M:H):-
10 copy_term(H,NH),
11 numbervars(NH),
13 format("~p.~n",[NH]),
14 (H=(G,R)),
15 time(call(M:G)),!,
16 format("\t~p.~n~n",[G]),
17 call(R).
18
19run_fail(M:H):-
20 copy_term(H,NH),
21 numbervars(NH),
23 format("~p.~n",[NH]),
24 time(call(M:H))->fail;true.
25
26epsilon(0.09).
27
28close_to(V,T):-
29 epsilon(E),
30 TLow is T-E,
31 THigh is T+E,
32 TLow<V,
33 V<THigh.
34
35close_to(V,T,E):-
36 TLow is T-E,
37 THigh is T+E,
38 TLow<V,
39 V<THigh.
40
41same_expl(Expl, CorrExpl):-
42 length(Expl,NE),
43 length(CorrExpl,NE),
44 same_expl_int(Expl, CorrExpl).
45
46same_expl_int([],_CorrExpls).
47
48same_expl_int([Expl|Expls],CorrExpls):-
49 sort(Expl,ExplSort),
50 member(X,CorrExpls),
51 sort(X,ExplSort),!,
52 same_expl_int(Expls,CorrExpls).
53
54one_of(Expl,CorrExpls):-
55 sort(Expl,ExplSort),
56 member(X,CorrExpls),
57 sort(X,ExplSort),!.
58
59test_formula(F1,F2):-
60 \+ trill:test(_,F1,F2),
61 \+ trill:test(_,F2,F1)