00001 00005 package edu.mit.csail.sdg.squander.options; 00006 00007 import kodkod.engine.satlab.SATFactory; 00008 import edu.mit.csail.sdg.squander.engine.ISquander; 00009 import edu.mit.csail.sdg.squander.engine.SquanderImpl; 00010 import edu.mit.csail.sdg.squander.engine.SquanderReporter; 00011 import edu.mit.csail.sdg.squander.engine.kk.SquanderKodkod2Impl; 00012 import edu.mit.csail.sdg.squander.engine.kk.SquanderKodkodImpl; 00013 import edu.mit.csail.sdg.squander.engine.kk.SquanderKodkodPart2Impl; 00014 import edu.mit.csail.sdg.squander.engine.kk.SquanderKodkodPartImpl; 00015 import edu.mit.csail.sdg.squander.log.Log.Level; 00016 00022 public class GlobalOptions { 00023 00024 public static enum Engine { 00025 Forge, Kodkod, Kodkod2, KodkodPart, KodkodPart2 00026 } 00027 00028 public static GlobalOptions INSTANCE = new GlobalOptions(); 00029 00030 public Level log_level = Level.NONE; 00031 public Engine engine = Engine.Kodkod; 00032 public SATFactory sat_solver = SATFactory.MiniSat; 00033 00035 public int min_bitwidth = 5; 00037 public boolean unsat_core = false; 00039 public boolean desugar_quants = true; 00040 00041 public SquanderReporter reporter = SquanderReporter.INSTANCE; 00042 00043 public ISquander getSquanderImpl() { 00044 switch (engine) { 00045 case Forge: 00046 return new SquanderImpl(); 00047 case Kodkod: 00048 return new SquanderKodkodImpl(); 00049 case Kodkod2: 00050 return new SquanderKodkod2Impl(); 00051 case KodkodPart: 00052 return new SquanderKodkodPartImpl(); 00053 case KodkodPart2: 00054 return new SquanderKodkodPart2Impl(); 00055 default: 00056 return new SquanderKodkodImpl(); 00057 } 00058 } 00059 00060 }