% lparse -n 0 -d none soccer4.s| smodels

round(27..34).     
roundd(28..34).     
p(20..110).
mp(0).
mp(1).
mp(3).
	
points(bay,77,27).
points(doo,52,27).
points(s04,51,27).
points(lev,47,27).
points(wob,44,27).
points(mgl,42,27).
points(mzz,41,27).
points(fca,39,27).
points(bsc,36,27).
points(hof,35,27).
points(fra,32,27).
points(h96,29,27).
points(bre,29,27).
points(fcn,26,27).
points(scf,26,27).
points(hsv,24,27).
points(vfb,24,27).
points(bsw,21,27).

guess(bay,98).
guess(doo,68).
guess(s04,68).
guess(lev,61).
guess(wob,53).
guess(mgl,52).
guess(mzz,52).
guess(hof,46).
guess(fca,46).
guess(h96,39).
guess(bsc,38).
guess(fra,36).
guess(fcn,34).
guess(scf,34).
guess(vfb,33).
guess(bre,33).
guess(hsv,32).
guess(bsw,26).

team(T) :- guess(T,P), p(P).

game(28,s04,bsc).	
game(28,bay,hof).	
game(28,lev,bsw).	
game(28,vfb,doo).	
game(28,wob,fra).	
game(28,mzz,fca).	
game(28,scf,fcn).	
game(28,mgl,hsv).	
game(28,h96,bre).	
	
game(29,hsv,lev).	
game(29,vfb,scf).	
game(29,bre,s04).	
game(29,fcn,mgl).	
game(29,fca,bay).	
game(29,fra,mzz).	
game(29,doo,wob).	
game(29,bsw,h96).	
game(29,bsc,hof).	

game(30,s04,fra).	
game(30,mgl,vfb).	
game(30,h96,hsv).	
game(30,wob,fcn).	
game(30,scf,bsw).	
game(30,mzz,bre).	
game(30,bay,doo).	
game(30,lev,bsc).	
game(30,hof,fca).	

game(31,fra,h96).	
game(31,doo,mzz).	
game(31,bre,hof).	
game(31,scf,mgl).	
game(31,fca,bsc).	
game(31,bsw,bay).	
game(31,hsv,wob).	
game(31,fcn,lev).	
game(31,vfb,s04).	

game(32,h96,vfb).	
game(32,bay,bre).	
game(32,wob,scf).	
game(32,hof,fra).	
game(32,mzz,fcn).	
game(32,bsc,bsw).	
game(32,lev,doo).	
game(32,fca,hsv).	
game(32,s04,mgl).	

game(33,doo,hof).	
game(33,mgl,mzz).	
game(33,vfb,wob).	
game(33,bre,bsc).	
game(33,fcn,h96).	
game(33,scf,s04).	
game(33,hsv,bay).	
game(33,bsw,fca).	
game(33,fra,lev).	

game(34,bay,vfb).	
game(34,s04,fcn).	
game(34,lev,bre).	
game(34,h96,scf).	
game(34,wob,mgl).	
game(34,hof,bsw).	
game(34,mzz,hsv).	
game(34,fca,fra).	
game(34,bsc,doo).	

	
% 1{ result(R,H,G,1,1), result(R,H,G,3,0), result(R,H,G,0,3) }1 :- game(R,H,G), roundd(R).

% bayern nur Siege
result(R,bay,G,3,0) :- game(R,bay,G), roundd(R).
result(R,H,bay,0,3) :- game(R,H,bay), roundd(R).
	
% schalke keine niederlage
1{ result(R,s04,G,1,1), result(R,s04,G,3,0) }1 :- game(R,s04,G), roundd(R).
1{ result(R,H,s04,1,1), result(R,H,s04,0,3) }1 :- game(R,H,s04), roundd(R).

% dortmund keine niederlage ausser gegen Bayern
1{ result(R,doo,G,1,1), result(R,doo,G,3,0) }1 :- game(R,doo,G), roundd(R), G != bay.
1{ result(R,H,doo,1,1), result(R,H,doo,0,3) }1 :- game(R,H,doo), roundd(R), H != bay.

% berlin kein Sieg
1{ result(R,bsc,G,1,1), result(R,bsc,G,0,3) }1 :- game(R,bsc,G), roundd(R).
1{ result(R,H,bsc,1,1), result(R,H,bsc,3,0) }1 :- game(R,H,bsc), roundd(R).

% restliche Spiele nur noch andere:
1{ result(R,H,G,1,1), result(R,H,G,3,0), result(R,H,G,0,3) }1 :- game(R,H,G), roundd(R), H != bay, H != do, H != s04, H != bsc, G != bay, G != do, G != s04, G != bsc.

	
points(H,PH2,R2) :-
	 points(H,PH1,R1), result(R2,H,G,PH,PG), game(R2,H,G), PH2 = PH1+PH,
	 R2 = R1+1, round(R1), p(PH1), mp(PH), mp(PG).
points(G,PG2,R2) :-
	 points(G,PG1,R1), result(R2,H,G,PH,PG), game(R2,H,G), PG2 = PG1+PG,
	 R2 = R1+1, round(R1), p(PG1), mp(PH), mp(PG).

:- points(T,P,34), guess(T,Q), P != Q, team(T), p(P).
:- points(T,P,R), guess(T,Q), P > Q, team(T), p(P), round(R).

