INSTALLATION:

1) The mingo.sh script uses third-party grounders and solvers. To
download and install them into bin/ subdirectory, we provide script
wget-gringo.sh that should be run in the bin/ subdirectory and
manual instructions download-cplex.txt.

2) If you want to invoke mingo.sh from other directories, please modify
the mingo.sh script by substituting the full path name of the installation
directory for "." in "DIR=.".

TESTS:

To try out benchmarks available as kr2012.zip and reported in

G. Liu, T. Janhunen, and I. Niemel: Answer Set Programming via Mixed
Integer Programming. In T. Eiter and S. McIlraith, editors, Principles
of Knowledge Representation and Reasoning: Proceedings of the 13th
International Conference (KR'12), 32 42, Rome, Italy, June 2012. AAAI Press.

by issuing commands like these:

$ ./mingo.sh benchmarks/instances/Sorting/c21.lp \
             benchmarks/encodings/Sorting.mingo
SATISFIABLE
Theory: mleq(1,p(21),-1,p(34),0) mgeq(1,p(21),-1,p(13),0) mleq(1,p(21),-1,p(32),0) mleq(1,p(21),-1,p(40),0) mgeq(1,p(21),-1,p(20),0) mleq(1,p(21),-1,p(24),0) mgeq(1,p(21),-1,p(15),0) mleq(1,p(21),-1,p(28),0) mleq(1,p(21),-1,p(27),0) mgeq(1,p(21),-1,p(16),0) mleq(1,p(21),-1,p(22),0) mleq(1,p(21),-1,p(30),0) mgeq(1,p(21),-1,p(6),0) mgeq(1,p(34),-1,p(21),0) mgeq(1,p(34),-1,p(13),0) mgeq(1,p(34),-1,p(32),0) mleq(1,p(34),-1,p(40),0) mgeq(1,p(34),-1,p(20),0) mgeq(1,p(34),-1,p(24),0) mgeq(1,p(34),-1,p(15),0) mgeq(1,p(34),-1,p(28),0) mgeq(1,p(34),-1,p(27),0) mgeq(1,p(34),-1,p(16),0) mgeq(1,p(34),-1,p(22),0) mgeq(1,p(34),-1,p(30),0) mgeq(1,p(34),-1,p(6),0) mleq(1,p(13),-1,p(21),0) mleq(1,p(13),-1,p(34),0) mleq(1,p(13),-1,p(32),0) mleq(1,p(13),-1,p(40),0) mleq(1,p(13),-1,p(20),0) mleq(1,p(13),-1,p(24),0) mleq(1,p(13),-1,p(15),0) mleq(1,p(13),-1,p(28),0) mleq(1,p(13),-1,p(27),0) mleq(1,p(13),-1,p(16),0) mleq(1,p(13),-1,p(22),0) mleq(1,p(13),-1,p(30),0) mgeq(1,p(13),-1,p(6),0) mgeq(1,p(32),-1,p(21),0) mleq(1,p(32),-1,p(34),0) mgeq(1,p(32),-1,p(13),0) mleq(1,p(32),-1,p(40),0) mgeq(1,p(32),-1,p(20),0) mgeq(1,p(32),-1,p(24),0) mgeq(1,p(32),-1,p(15),0) mgeq(1,p(32),-1,p(28),0) mgeq(1,p(32),-1,p(27),0) mgeq(1,p(32),-1,p(16),0) mgeq(1,p(32),-1,p(22),0) mgeq(1,p(32),-1,p(30),0) mgeq(1,p(32),-1,p(6),0) mgeq(1,p(40),-1,p(21),0) mgeq(1,p(40),-1,p(34),0) mgeq(1,p(40),-1,p(13),0) mgeq(1,p(40),-1,p(32),0) mgeq(1,p(40),-1,p(20),0) mgeq(1,p(40),-1,p(24),0) mgeq(1,p(40),-1,p(15),0) mgeq(1,p(40),-1,p(28),0) mgeq(1,p(40),-1,p(27),0) mgeq(1,p(40),-1,p(16),0) mgeq(1,p(40),-1,p(22),0) mgeq(1,p(40),-1,p(30),0) mgeq(1,p(40),-1,p(6),0) mleq(1,p(20),-1,p(21),0) mleq(1,p(20),-1,p(34),0) mgeq(1,p(20),-1,p(13),0) mleq(1,p(20),-1,p(32),0) mleq(1,p(20),-1,p(40),0) mleq(1,p(20),-1,p(24),0) mgeq(1,p(20),-1,p(15),0) mleq(1,p(20),-1,p(28),0) mleq(1,p(20),-1,p(27),0) mgeq(1,p(20),-1,p(16),0) mleq(1,p(20),-1,p(22),0) mleq(1,p(20),-1,p(30),0) mgeq(1,p(20),-1,p(6),0) mgeq(1,p(24),-1,p(21),0) mleq(1,p(24),-1,p(34),0) mgeq(1,p(24),-1,p(13),0) mleq(1,p(24),-1,p(32),0) mleq(1,p(24),-1,p(40),0) mgeq(1,p(24),-1,p(20),0) mgeq(1,p(24),-1,p(15),0) mleq(1,p(24),-1,p(28),0) mleq(1,p(24),-1,p(27),0) mgeq(1,p(24),-1,p(16),0) mgeq(1,p(24),-1,p(22),0) mleq(1,p(24),-1,p(30),0) mgeq(1,p(24),-1,p(6),0) mleq(1,p(15),-1,p(21),0) mleq(1,p(15),-1,p(34),0) mgeq(1,p(15),-1,p(13),0) mleq(1,p(15),-1,p(32),0) mleq(1,p(15),-1,p(40),0) mleq(1,p(15),-1,p(20),0) mleq(1,p(15),-1,p(24),0) mleq(1,p(15),-1,p(28),0) mleq(1,p(15),-1,p(27),0) mleq(1,p(15),-1,p(16),0) mleq(1,p(15),-1,p(22),0) mleq(1,p(15),-1,p(30),0) mgeq(1,p(15),-1,p(6),0) mgeq(1,p(28),-1,p(21),0) mleq(1,p(28),-1,p(34),0) mgeq(1,p(28),-1,p(13),0) mleq(1,p(28),-1,p(32),0) mleq(1,p(28),-1,p(40),0) mgeq(1,p(28),-1,p(20),0) mgeq(1,p(28),-1,p(24),0) mgeq(1,p(28),-1,p(15),0) mgeq(1,p(28),-1,p(27),0) mgeq(1,p(28),-1,p(16),0) mgeq(1,p(28),-1,p(22),0) mleq(1,p(28),-1,p(30),0) mgeq(1,p(28),-1,p(6),0) mgeq(1,p(27),-1,p(21),0) mleq(1,p(27),-1,p(34),0) mgeq(1,p(27),-1,p(13),0) mleq(1,p(27),-1,p(32),0) mleq(1,p(27),-1,p(40),0) mgeq(1,p(27),-1,p(20),0) mgeq(1,p(27),-1,p(24),0) mgeq(1,p(27),-1,p(15),0) mleq(1,p(27),-1,p(28),0) mgeq(1,p(27),-1,p(16),0) mgeq(1,p(27),-1,p(22),0) mleq(1,p(27),-1,p(30),0) mgeq(1,p(27),-1,p(6),0) mleq(1,p(16),-1,p(21),0) mleq(1,p(16),-1,p(34),0) mgeq(1,p(16),-1,p(13),0) mleq(1,p(16),-1,p(32),0) mleq(1,p(16),-1,p(40),0) mleq(1,p(16),-1,p(20),0) mleq(1,p(16),-1,p(24),0) mgeq(1,p(16),-1,p(15),0) mleq(1,p(16),-1,p(28),0) mleq(1,p(16),-1,p(27),0) mleq(1,p(16),-1,p(22),0) mleq(1,p(16),-1,p(30),0) mgeq(1,p(16),-1,p(6),0) mgeq(1,p(22),-1,p(21),0) mleq(1,p(22),-1,p(34),0) mgeq(1,p(22),-1,p(13),0) mleq(1,p(22),-1,p(32),0) mleq(1,p(22),-1,p(40),0) mgeq(1,p(22),-1,p(20),0) mleq(1,p(22),-1,p(24),0) mgeq(1,p(22),-1,p(15),0) mleq(1,p(22),-1,p(28),0) mleq(1,p(22),-1,p(27),0) mgeq(1,p(22),-1,p(16),0) mleq(1,p(22),-1,p(30),0) mgeq(1,p(22),-1,p(6),0) mgeq(1,p(30),-1,p(21),0) mleq(1,p(30),-1,p(34),0) mgeq(1,p(30),-1,p(13),0) mleq(1,p(30),-1,p(32),0) mleq(1,p(30),-1,p(40),0) mgeq(1,p(30),-1,p(20),0) mgeq(1,p(30),-1,p(24),0) mgeq(1,p(30),-1,p(15),0) mgeq(1,p(30),-1,p(28),0) mgeq(1,p(30),-1,p(27),0) mgeq(1,p(30),-1,p(16),0) mgeq(1,p(30),-1,p(22),0) mgeq(1,p(30),-1,p(6),0) mleq(1,p(6),-1,p(21),0) mleq(1,p(6),-1,p(34),0) mleq(1,p(6),-1,p(13),0) mleq(1,p(6),-1,p(32),0) mleq(1,p(6),-1,p(40),0) mleq(1,p(6),-1,p(20),0) mleq(1,p(6),-1,p(24),0) mleq(1,p(6),-1,p(15),0) mleq(1,p(6),-1,p(28),0) mleq(1,p(6),-1,p(27),0) mleq(1,p(6),-1,p(16),0) mleq(1,p(6),-1,p(22),0) mleq(1,p(6),-1,p(30),0) 
Vars: p(21)=5 p(34)=12 p(13)=1 p(32)=11 p(40)=13 p(20)=4 p(24)=7 p(15)=2 p(28)=9 p(27)=8 p(16)=3 p(22)=6 p(30)=10 (other values 0)

WARNINGS:

The arguments of bin/1, int/1 and mleq/*, mlt/*, mgeq/*, and mgt/* are
not type checked and it is completely up to the user to provide
reasonable arguments. For very long equations, you may have to
increase the number of arguments as specified in def/ext.lp.

