Search in sources :

Example 1 with Arch

use of com.dat3m.dartagnan.configuration.Arch in project Dat3M by hernanponcedeleon.

the class OptionsPane method getOptions.

public UiOptions getOptions() {
    int bound = Integer.parseInt(boundField.getText());
    int timeout = Integer.parseInt(timeoutField.getText());
    Arch target = (Arch) targetPane.getSelectedItem();
    Method method = (Method) methodPane.getSelectedItem();
    Solvers solver = (Solvers) solverPane.getSelectedItem();
    return new UiOptions(target, method, bound, solver, timeout);
}
Also used : Solvers(org.sosy_lab.java_smt.SolverContextFactory.Solvers) Arch(com.dat3m.dartagnan.configuration.Arch) UiOptions(com.dat3m.ui.utils.UiOptions) Method(com.dat3m.dartagnan.configuration.Method)

Example 2 with Arch

use of com.dat3m.dartagnan.configuration.Arch in project Dat3M by hernanponcedeleon.

the class ReachabilityResult method validate.

private boolean validate() {
    Arch target = program.getArch() == null ? options.getTarget() : program.getArch();
    if (target == null) {
        Utils.showError("Missing target architecture.");
        return false;
    }
    program.setArch(target);
    return true;
}
Also used : Arch(com.dat3m.dartagnan.configuration.Arch)

Example 3 with Arch

use of com.dat3m.dartagnan.configuration.Arch in project Dat3M by hernanponcedeleon.

the class ReachabilityResult method run.

private void run() {
    if (validate()) {
        ShutdownManager sdm = ShutdownManager.create();
        Thread t = new Thread(() -> {
            try {
                if (options.getTimeout() > 0) {
                    // Converts timeout from secs to millisecs
                    Thread.sleep(1000L * options.getTimeout());
                    sdm.requestShutdown("Shutdown Request");
                }
            } catch (InterruptedException e) {
            // Verification ended, nothing to be done.
            }
        });
        try {
            Result result = Result.UNKNOWN;
            Arch arch = program.getArch() != null ? program.getArch() : options.getTarget();
            VerificationTask task = VerificationTask.builder().withBound(options.getBound()).withSolverTimeout(options.getTimeout()).withTarget(arch).build(program, wmm, EnumSet.of(Property.getDefault()));
            t.start();
            Configuration config = Configuration.builder().setOption(PHANTOM_REFERENCES, "true").build();
            try (SolverContext ctx = SolverContextFactory.createSolverContext(config, BasicLogManager.create(config), sdm.getNotifier(), options.getSolver());
                ProverEnvironment prover = ctx.newProverEnvironment(ProverOptions.GENERATE_MODELS)) {
                switch(options.getMethod()) {
                    case INCREMENTAL:
                        result = IncrementalSolver.run(ctx, prover, task);
                        break;
                    case ASSUME:
                        result = AssumeSolver.run(ctx, prover, task);
                        break;
                    case TWO:
                        try (ProverEnvironment prover2 = ctx.newProverEnvironment(ProverOptions.GENERATE_MODELS)) {
                            result = TwoSolvers.run(ctx, prover, prover2, task);
                        }
                        break;
                    case CAAT:
                        result = RefinementSolver.run(ctx, prover, RefinementTask.fromVerificationTaskWithDefaultBaselineWMM(task));
                        break;
                }
                // Verification ended, we can interrupt the timeout Thread
                t.interrupt();
                buildVerdict(result);
            }
        } catch (InterruptedException e) {
            verdict = "TIMEOUT";
        } catch (Exception e) {
            verdict = "ERROR: " + e.getMessage();
        }
    }
}
Also used : SolverContext(org.sosy_lab.java_smt.api.SolverContext) VerificationTask(com.dat3m.dartagnan.verification.VerificationTask) Configuration(org.sosy_lab.common.configuration.Configuration) ShutdownManager(org.sosy_lab.common.ShutdownManager) Arch(com.dat3m.dartagnan.configuration.Arch) ProverEnvironment(org.sosy_lab.java_smt.api.ProverEnvironment) Result(com.dat3m.dartagnan.utils.Result)

Aggregations

Arch (com.dat3m.dartagnan.configuration.Arch)3 Method (com.dat3m.dartagnan.configuration.Method)1 Result (com.dat3m.dartagnan.utils.Result)1 VerificationTask (com.dat3m.dartagnan.verification.VerificationTask)1 UiOptions (com.dat3m.ui.utils.UiOptions)1 ShutdownManager (org.sosy_lab.common.ShutdownManager)1 Configuration (org.sosy_lab.common.configuration.Configuration)1 Solvers (org.sosy_lab.java_smt.SolverContextFactory.Solvers)1 ProverEnvironment (org.sosy_lab.java_smt.api.ProverEnvironment)1 SolverContext (org.sosy_lab.java_smt.api.SolverContext)1