use of de.prob.statespace.State in project prob2 by bendisposto.
the class FilterStatesForPredicateCommand method writeCommand.
@Override
public void writeCommand(final IPrologTermOutput pto) {
pto.openTerm(PROLOG_COMMAND_NAME);
predicate.printProlog(pto);
pto.openList();
for (State id : ids) {
pto.printAtomOrNumber(id.getId());
}
pto.closeList();
pto.printVariable(FILTERED_VARIABLE);
pto.closeTerm();
}
use of de.prob.statespace.State in project prob2 by bendisposto.
the class RulesMachineRun method start.
public void start() {
logger.info("Starting rules machine run: {}", this.runnerFile.getAbsolutePath());
stopWatch.start(Timer.PARSING);
boolean hasParseErrors = parseAndTranslateRulesProject();
logger.info("Time to parse rules project: {} ms", stopWatch.stop(Timer.PARSING));
if (hasParseErrors) {
logger.error("RULES_MACHINE has errors!");
return;
}
this.executeRun = rulesMachineRunner.createRulesMachineExecuteRun(this.rulesProject, runnerFile, this.proBCorePreferences, continueAfterErrors, this.getStateSpace());
try {
stopWatch.start(Timer.EXECUTE_RUN);
logger.info("Start execute ...");
this.executeRun.start();
logger.info("Execute run finished. Time: {} ms", stopWatch.stop(Timer.EXECUTE_RUN));
} catch (ProBError e) {
logger.error("ProBError: {}", e.getMessage());
if (executeRun.getExecuteModelCommand() != null) {
try {
State finalState = executeRun.getExecuteModelCommand().getFinalState();
// explores the final state and can throw a ProBError
Collection<StateError> stateErrors = finalState.getStateErrors();
for (StateError stateError : stateErrors) {
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, stateError.getLongDescription(), e));
}
} catch (ProBError e2) {
// Enumeration errors
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e2.getMessage(), e2));
return;
}
} else {
/*- static errors such as type errors or errors while loading the state space */
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e.getMessage(), e));
/*- no final state is available and thus we can not create RuleResults */
return;
}
} catch (Exception e) {
logger.error("Unexpected error occured: {}", e.getMessage(), e);
// storing all error messages
this.errors.add(new Error(ERROR_TYPES.PROB_ERROR, e.getMessage(), e));
return;
} finally {
if (executeRun.getUsedStateSpace() != null) {
GetTotalNumberOfErrorsCommand totalNumberOfErrorsCommand = new GetTotalNumberOfErrorsCommand();
executeRun.getUsedStateSpace().execute(totalNumberOfErrorsCommand);
totalNumberOfProBCliErrors = totalNumberOfErrorsCommand.getTotalNumberOfErrors();
}
}
this.stateSpace = this.executeRun.getUsedStateSpace();
stopWatch.start(Timer.EXTRACT_RESULTS);
this.ruleResults = new RuleResults(this.rulesProject, executeRun.getExecuteModelCommand().getFinalState(), maxNumberOfReportedCounterExamples);
logger.info("Time to extract results from final state: {}", stopWatch.stop(Timer.EXTRACT_RESULTS));
}
use of de.prob.statespace.State in project prob2 by bendisposto.
the class RulesMachineTest method testRulesMachineExample.
@Test
public void testRulesMachineExample() {
RulesMachineRun rulesMachineRun = startRulesMachineRun(dir + "RulesMachineExample.rmch");
assertEquals(false, rulesMachineRun.hasError());
State finalState = rulesMachineRun.getExecuteRun().getExecuteModelCommand().getFinalState();
ComputationStatuses compResult = new ComputationStatuses(rulesMachineRun.getRulesProject(), finalState);
assertEquals(ComputationStatus.EXECUTED, compResult.getResult("COMP_comp1"));
}
Aggregations