| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 15:22:19 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 15:22:19 +0200 | 
| commit | d48380bd87dcef4b095b2a4e578d4461e68df73c (patch) | |
| tree | 0ddbcbdd54d329b5130041d7a5fd25a8c1ca3875 /cfg-to-paths/src/Main.java | |
| parent | 0f0af24525c614ebef7e7f8130ffced38d2da59a (diff) | |
Working on a way to CTL over DAG in Kodkod.
Diffstat (limited to 'cfg-to-paths/src/Main.java')
| -rw-r--r-- | cfg-to-paths/src/Main.java | 91 | 
1 files changed, 91 insertions, 0 deletions
| diff --git a/cfg-to-paths/src/Main.java b/cfg-to-paths/src/Main.java new file mode 100644 index 0000000..ec55450 --- /dev/null +++ b/cfg-to-paths/src/Main.java @@ -0,0 +1,91 @@ +/* FIXME: Finer imports */ +import kodkod.ast.*; + +import kodkod.engine.*; +import kodkod.engine.config.*; +import kodkod.engine.satlab.*; + +import kodkod.instance.*; +public class Main +{ +   private static Parameters PARAMETERS; + +   private static Formula get_formula (final VHDLModel model) +   { +      final Variable w; + +      w = Variable.unary("w"); + +      return +         w.join +         ( +            model.get_predicate_as_relation("is_accessed_by") +         ).no().forSome(w.oneOf(model.get_type_as_relation("waveform"))); +   } + +   public static void main (final String... args) +   { +      final VHDLModel model; + +      final Universe univ; +      final TupleFactory tf; +      final Bounds bounds; + +      final Solver solver; +      final Solution sol; + +      PARAMETERS = new Parameters(args); + +      if (!PARAMETERS.are_valid()) +      { +         return; +      } + +      model = new VHDLModel(); + +      try +      { +         VHDLLevel.add_to_model +         ( +            model, +            ( +               PARAMETERS.get_levels_directory() +               + "/structural_level.data" +            ) +         ); +      } +      catch (final Exception e) +      { +         System.err.println("[E] Could not load structural level:"); +         e.printStackTrace(); + +         return; +      } + +      try +      { +         model.parse_file(PARAMETERS.get_model_file()); +      } +      catch (final Exception e) +      { +         System.err.println("[E] Could not load instructions:"); +         e.printStackTrace(); + +         return; +      } + +      univ = new Universe(model.get_atoms()); +      tf = univ.factory(); +      bounds = new Bounds(univ); + +      model.add_to_bounds(bounds, tf); + +      solver = new Solver(); +      solver.options().setSolver(SATFactory.DefaultSAT4J); +      solver.options().setReporter(new ConsoleReporter()); + +      sol = solver.solve(get_formula(model), bounds); + +      System.out.println(sol); +   } +} | 


