Search in sources :

Example 1 with State

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();
}
Also used : State(de.prob.statespace.State)

Example 2 with State

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));
}
Also used : StateError(de.prob.animator.domainobjects.StateError) State(de.prob.statespace.State) GetTotalNumberOfErrorsCommand(de.prob.animator.command.GetTotalNumberOfErrorsCommand) Collection(java.util.Collection) ProBError(de.prob.exception.ProBError) StateError(de.prob.animator.domainobjects.StateError) ProBError(de.prob.exception.ProBError) BException(de.be4.classicalb.core.parser.exceptions.BException)

Example 3 with State

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"));
}
Also used : RulesMachineRun(de.prob.model.brules.RulesMachineRun) State(de.prob.statespace.State) ComputationStatuses(de.prob.model.brules.ComputationStatuses) Test(org.junit.Test)

Aggregations

State (de.prob.statespace.State)3 BException (de.be4.classicalb.core.parser.exceptions.BException)1 GetTotalNumberOfErrorsCommand (de.prob.animator.command.GetTotalNumberOfErrorsCommand)1 StateError (de.prob.animator.domainobjects.StateError)1 ProBError (de.prob.exception.ProBError)1 ComputationStatuses (de.prob.model.brules.ComputationStatuses)1 RulesMachineRun (de.prob.model.brules.RulesMachineRun)1 Collection (java.util.Collection)1 Test (org.junit.Test)1