This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/cplint/testsemcpl.pl
rzf 28dd8a87a4 program for testing semcpl.pl
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@2013 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
2007-11-15 12:33:14 +00:00

128 lines
3.5 KiB
Prolog

/*
LPAD and CP-Logic reasoning suite
Copyright (c) 2007, Fabrizio Riguzzi
Test file for semcpl.pl
Use
:-t.
to execute the test
*/
:-use_module(library(semcpl)).
epsilon(0.000001).
close_to(V,T):-
epsilon(E),
TLow is T-E,
THigh is T+E,
TLow<V,
V<THigh.
t:-
format("~nTesting semcpl.yap~n~n",[]),
files(F),
statistics(runtime,[_,_]),
set(ground_body,false),
format("~nNon ground body~n~n",[]),
test_files(F,ground_body(false)),
set(ground_body,true),
format("~nGround body~n~n",[]),
test_files(F,ground_body(true)),
statistics(runtime,[_,T]),
T1 is T /1000,
format("Test successful, time ~f secs.~n",[T1]).
t:-
format("Test unsuccessful.",[]).
test_files([],_GB).
test_files([H|T],GB):-
format("~n~a.cpl~n",[H]),
library_directory(LD),
atom_concat(LD,'/cplint/examples/',ExDir),
atom_concat(ExDir,H,NH),
p(NH),!,
findall(A,test(A,H,GB),L),
test_all(H,L),
test_files(T,GB).
test_all(_F,[]).
test_all(F,[H|T]):-
copy_term(H,NH),
NH=(_Query,close_to('P',_Prob)),
format("~a ~p.~n",[F,NH]),
call(H),!,
test_all(F,T).
files([
esapprox,esrange,threesideddice,mendels,
coin2,es,throws,trigger,win,hiv,light,
invalid]).
test((s([p],P),close_to(P,0)),invalid,_).
test((s([q],P),close_to(P,0)),invalid,_).
test((s([p,q],P),close_to(P,0)),invalid,_).
test((s([throws(mary),throws(john),break],P),close_to(P,0.46)),throws,_).
test((s([throws(mary),throws(john),\+break],P),close_to(P,0.04)),throws,_).
test((s([\+ throws(mary),throws(john),break],P),close_to(P,0.3)),throws,_).
test((s([\+ throws(mary),throws(john),\+ break],P),close_to(P,0.2)),throws,_).
test((s([death],P),close_to(P,0.305555555555556)),trigger,_).
test((s([win(white)],P),close_to(P,0.5)),win,_).
test((s([win(black)],P),close_to(P,0.5)),win,_).
test((s([win(black),win(white)],P),close_to(P,0)),win,_).
test((s([hiv(a)],P),close_to(P,0.154)),hiv,_).
test((s([hiv(b)],P),close_to(P,0.154)),hiv,_).
test((s([hiv(b),hiv(a)],P),close_to(P,0.118)),hiv,_).
test((s([\+ hiv(b),\+ hiv(a)],P),close_to(P,0.81)),hiv,_).
test((s([ hiv(b),\+ hiv(a)],P),close_to(P,0.036)),hiv,_).
test((s([\+ hiv(b),hiv(a)],P),close_to(P,0.036)),hiv,_).
test((s([push,replace],P),close_to(P,0.5)),light,_).
test((s([push,light],P),close_to(P,0.5)),light,_).
test((s([push,light,replace],P),close_to(P,0)),light,_).
test((s([light,replace],P),close_to(P,0)),light,_).
test((s([light],P),close_to(P,0.5)),light,_).
test((s([replace],P),close_to(P,0.5)),light,_).
test((s([a],P),close_to(P,0.1719)),esapprox,ground_body(true)).
test((s([a],P),close_to(P,0.099)),esapprox,ground_body(false)).
test((s([a(1)],P),close_to(P,0.2775)),esrange,_).
test((s([a(2)],P),close_to(P,0.36)),esrange,_).
test((s([on(0,1)],P),close_to(P,0.333333333333333)),threesideddice,_).
test((s([on(1,1)],P),close_to(P,0.222222222222222)),threesideddice,_).
test((s([on(2,1)],P),close_to(P,0.148148147703704)),threesideddice,_).
test((sc([on(2,1)],[on(0,1)],P),close_to(P,0.222222222222222)),threesideddice,_).
test((sc([on(2,1)],[on(1,1)],P),close_to(P,0.333333333333333)),threesideddice,_).
test((s([cg(s,1,p)],P),close_to(P,0.5)),mendels,ground_body(false)).
test((s([cg(s,1,w)],P),close_to(P,0.5)),mendels,ground_body(false)).
test((s([cg(s,2,p)],P),close_to(P,1.0)),mendels,ground_body(false)).
test((s([cg(s,2,w)],P),close_to(P,0)),mendels,ground_body(false)).
test((s([heads(coin1)],P),close_to(P,0.51)),coin2,_).
test((s([heads(coin2)],P),close_to(P,0.51)),coin2,_).
test((s([tails(coin1)],P),close_to(P,0.49)),coin2,_).
test((s([tails(coin2)],P),close_to(P,0.49)),coin2,_).
test((s([a],P),close_to(P,0.226)),es,_).