% From https://github.com/michael-siebers/metagol/blob/ilp2018/examples/leapyear1.pl %% background knowledge % """ % This is equivalent to B_max described in the paper. % Please note that possible dividers were computed as % pre-processing step in the experiments. % """ % hakank: These are the divisors of 400. known_divider(1). known_divider(2). known_divider(4). known_divider(5). known_divider(8). known_divider(10). known_divider(16). known_divider(20). known_divider(25). known_divider(40). known_divider(50). known_divider(80). known_divider(100). known_divider(200). known_divider(400). known([1,2,3,5,8,10,16,20,25,40,50,80,100,200,400]). divisible(X,Y) :- nonvar(X), % (nonvar(Y) ; member(Y,known)), % This does not work (nonvar(Y); known_divider(Y)), % This works X mod Y =:= 0. not_divisible(X,Y) :- nonvar(X), % (nonvar(Y) ; member(Y,known)), % Does not work (nonvar(Y); known_divider(Y)), % This works X mod Y =\= 0. %% tell metagol to use the BK prim(divisible/2). prim(not_divisible/2). eq(X,Y) :- X =:= Y.