/// <summary>
/// Call a predicate that takes no arguments
/// </summary>
/// <param name="predicateName">predicate name only.</param>
/// <returns>success or failure</returns>
public bool Call(string predicateName)
{
AMProgram program = (AMProgram)_program;
AMInstructionSet iset = new AMInstructionSet();
if (!program.IsDefined(predicateName + "/0"))
{
return(false);
}
// Add the call instruction
program.P = new ProgramNode(iset.CreateInstruction("call", predicateName, "0"));
program.AddProgramNode(program.P);
// Add the halt insturction
program.AddInstruction(iset.CreateInstruction("halt"));
// Execute the program
Transition();
return(!_fail);
}