assign(domain_size,5). 
assign(max_models,-1).
set(arithmetic).

list(distinct).
  [f(0,0),f(0,1),f(1,0),f(2,0),f(3,0)].     %pink cage
  [f(0,2),f(0,3),f(0,4),f(1,2),f(1,3)].     %blue cage
  [f(1,1),f(2,1),f(2,2),f(2,3),f(3,3)].     %gray cage
  [f(1,4),f(2,4),f(3,4),f(4,4),f(4,3)].     %orange cage
  [f(4,0),f(4,1),f(4,2),f(3,1),f(3,2)].     %yellow cage
end_of_list.

formulas(latin_square).
  all x  all y1 all y2 (f(x,y1) = f(x,y2) -> y1 = y2).
  all x1 all x2 all y  (f(x1,y) = f(x2,y) -> x1 = x2).
end_of_list.

formulas(kaos_puzzle).
   f(0,0)=3.   f(0,4)=1.    f(3,2)=3.   f(3,3)=4.  f(4,0)=2.
  %f(0,0)=4.   f(0,4)=2.    f(3,2)=4.   f(3,3)=5.  f(4,0)=3.    
end_of_list.

