First construct a gnu.prolog.vm.Environment which is the core of the VM using
Then load any prolog files you want to which define additional predicates etc using
environment.ensureLoaded(AtomTerm.get(``URL of file'')) for each file. Though if you already have an gnu.prolog.vm.AtomTerm representation of the file then you can use that.
Instances of Terms should be got using their relevant
get(Type) methods as we ensure only one gnu.prolog.term.Term instance for each distinct object they represent.
Then you will need to create at least one gnu.prolog.vm.Interpreter which is used to execute goals. You do this using
environment.createInterpreter(). You might want multiple Interpreters if you want to run goals in multiple threads.
Having created it you need to use it to run the initialization of any files you have loaded by using
env.runInitialization(interpreter);. This ensures the goals contained in any “:- initialization(goal).” or “:- goal.”s in the files you have loaded are run.
At this point the setup is completed and you can start running goals. This is done using
interpreter.runOnce(Term); where Term is the goal you want to execute. This does one execution of the goal and then stops.
The construction of Terms is explained in the next section. If you need something more complex than that then you will need to use
goal = interpreter.prepareGoal(goalTerm); int rc = interpreter.execute(goal) and then depending on the value of rc possibly run
execute(goal) again. If you stop running
execute(goal) while rc is still SUCCESS then you need to run