What is Atom?
Atom is an Inductive Logic Programming (ILP) system written by me (John Ahlgren) to explore various ILP algorithms.
What is Constrained Inverse Entailment / NrSample?
NrSample is an ILP algorithm implemented in Atom and described in J. Ahlgren and S.Y. Yuen, “Efficient program synthesis using constraint satisfaction in inductive logic programming”, Journal of Machine Learning Research, vol. 14, pp. 3649-3681, 2013.
How is Atom Licensed?Under the "Attribution-NonCommercial-ShareAlike 3.0 Unported".
Where do I download Atom?
Download Atom 3.9 here. This is the version that supports NrSample.
How do I compile Atom?
Easy way, using Microsoft Visual Studio 2012:
More generally way, you'll need:
If you're compiling with Visual C++ without using the solution file above, you'll need to turn off "security checks" as the compiler won't be standards compliant otherwise. Also turn on optimization for fast code.
Where do I find the benchmarks used for NrSample?
They are included in the source code distribution of Atom 3.9.
How do I run the NrSample benchmarks?
Use a console ("command line"). In Windows, that's "cmd.exe".
First, check that you have the right version: "Atom PR.exe" /V
For NrSample, we used version 3.9: "Atom 3.9".
To run the member/2 benchmarks on windows:
"Atom PR.exe" /N /v 0 /X nrsample "ILP benchmarks\Individual\member"
The result is printed to standard output (the console).
By default, functional constraints are used. To turn them on/off, use //functional 1 and //functional 0, respectively.
"Atom PR.exe" /N /v 0 //functional 0 /X nrsample "ILP benchmarks\Primitive\member"
"Atom PR.exe" /N /v 0 //functional 1 /X nrsample "ILP benchmarks\Primitive\member"
The first line turns off functional constraints ("NrS"), and the second uses them ("NrSFun").