Search in sources :

Example 16 with A4Reporter

use of edu.mit.csail.sdg.alloy4.A4Reporter in project org.alloytools.alloy by AlloyTools.

the class ExampleCompilingFromSource method compileModuleAndRun.

public static void compileModuleAndRun(String model) throws Err {
    A4Reporter rep = new A4Reporter();
    // parse model from string
    CompModule world = CompUtil.parseEverything_fromString(rep, model);
    ConstList<Command> commands = world.getAllCommands();
    if (commands.size() != 1)
        throw new ErrorAPI("Must specify exactly one command; number of commands found: " + commands.size());
    Command cmd = commands.get(0);
    A4Options opt = new A4Options();
    opt.solver = A4Options.SatSolver.SAT4J;
    // solve
    A4Solution sol = TranslateAlloyToKodkod.execute_command(rep, world.getAllSigs(), cmd, opt);
    // print solution
    System.out.println(sol);
    for (Sig sig : world.getAllReachableSigs()) {
        System.out.println("traversing sig: " + sig);
        SafeList<Field> fields = sig.getFields();
        for (Field field : fields) {
            System.out.println("  traversing field: " + field);
            A4TupleSet ts = (sol.eval(field));
            for (A4Tuple t : ts) {
                System.out.print("    [");
                for (int i = 0; i < t.arity(); i++) System.out.print(t.atom(i) + " ");
                System.out.println("]");
            }
        }
    }
}
Also used : ErrorAPI(edu.mit.csail.sdg.alloy4.ErrorAPI) A4Reporter(edu.mit.csail.sdg.alloy4.A4Reporter) A4TupleSet(edu.mit.csail.sdg.translator.A4TupleSet) Sig(edu.mit.csail.sdg.ast.Sig) Field(edu.mit.csail.sdg.ast.Sig.Field) A4Tuple(edu.mit.csail.sdg.translator.A4Tuple) CompModule(edu.mit.csail.sdg.parser.CompModule) Command(edu.mit.csail.sdg.ast.Command) A4Options(edu.mit.csail.sdg.translator.A4Options) A4Solution(edu.mit.csail.sdg.translator.A4Solution)

Aggregations

Err (edu.mit.csail.sdg.alloy4.Err)9 A4Reporter (edu.mit.csail.sdg.alloy4.A4Reporter)6 ErrorFatal (edu.mit.csail.sdg.alloy4.ErrorFatal)6 Pos (edu.mit.csail.sdg.alloy4.Pos)5 Command (edu.mit.csail.sdg.ast.Command)5 ErrorSyntax (edu.mit.csail.sdg.alloy4.ErrorSyntax)4 Expr (edu.mit.csail.sdg.ast.Expr)4 Sig (edu.mit.csail.sdg.ast.Sig)4 A4Options (edu.mit.csail.sdg.translator.A4Options)4 A4Solution (edu.mit.csail.sdg.translator.A4Solution)4 ArrayList (java.util.ArrayList)4 ErrorType (edu.mit.csail.sdg.alloy4.ErrorType)3 ErrorWarning (edu.mit.csail.sdg.alloy4.ErrorWarning)3 Decl (edu.mit.csail.sdg.ast.Decl)3 ExprHasName (edu.mit.csail.sdg.ast.ExprHasName)3 Module (edu.mit.csail.sdg.ast.Module)3 LinkedHashSet (java.util.LinkedHashSet)3 CapacityExceededException (kodkod.engine.CapacityExceededException)3 ErrorAPI (edu.mit.csail.sdg.alloy4.ErrorAPI)2 Func (edu.mit.csail.sdg.ast.Func)2