diff --git a/.idea/modules.xml b/.idea/modules.xml
index 7159c7e8..ed0edbf4 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -5,14 +5,14 @@
-
+
+
+
-
-
\ No newline at end of file
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/samplechecker.handler.util.iml b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/samplechecker.handler.util.iml
index 764f4ab8..165af620 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/samplechecker.handler.util.iml
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler.util/samplechecker.handler.util.iml
@@ -11,5 +11,6 @@
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler/samplechecker.handler.iml b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler/samplechecker.handler.iml
index 797eddbc..0e67a1fb 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler/samplechecker.handler.iml
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.handler/samplechecker.handler.iml
@@ -12,5 +12,7 @@
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
index 8361e6be..5151931f 100644
--- a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/samplechecker.runner.iml
@@ -4,6 +4,7 @@
+
@@ -13,5 +14,8 @@
+
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/source_copy/jetbrains/mps/lang/typesystem2/samplechecker/template/ExpressionSolver.java b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/source_copy/jetbrains/mps/lang/typesystem2/samplechecker/template/ExpressionSolver.java
new file mode 100644
index 00000000..fbba4bbf
--- /dev/null
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker.runner/source_copy/jetbrains/mps/lang/typesystem2/samplechecker/template/ExpressionSolver.java
@@ -0,0 +1,130 @@
+package jetbrains.mps.lang.typesystem2.samplechecker.template;
+
+/*Generated by MPS */
+
+import jetbrains.mps.lang.typesystem2.samplechecker.handle.util.LubSolver;
+import jetbrains.mps.lang.typesystem2.samplechecker.handle.util.SubtypePathSolver;
+import jetbrains.mps.logic.reactor.constraint.Instructible;
+import jetbrains.mps.logic.reactor.constraint.PredicateSymbol;
+import jetbrains.mps.logic.reactor.constraint.Queryable;
+import jetbrains.mps.logic.reactor.constraint.Symbol;
+import jetbrains.mps.logic.reactor.logical.Logical;
+
+import java.util.Arrays;
+
+public class ExpressionSolver implements Instructible, Queryable {
+
+
+ @Override
+ public boolean ask(PredicateSymbol predicateSymbol, Object... args) {
+ switch (Arrays.binarySearch(stringSwitchCases_rbjxpx_a0a0c, String.valueOf(args[0]))) {
+ case 18:
+ return eval_8490564095239449965();
+ case 16:
+ return eval_6954470109733427152();
+ case 7:
+ return eval_4333870926030563260();
+ case 15:
+ return eval_6433032998740858010();
+ case 8:
+ return eval_4333870926030563292();
+ case 14:
+ return eval_6433032998740857672();
+ case 4:
+ return eval_2815152073368565737();
+ case 12:
+ return eval_6433032998739462746();
+ case 13:
+ return eval_6433032998739928692();
+ case 9:
+ return eval_4954708137221254423();
+ case 10:
+ return eval_5474059076247347166();
+ case 5:
+ return eval_3476135434775506825();
+ case 17:
+ return eval_8309386291062717374();
+ case 2:
+ return eval_2119840812316470003();
+ case 1:
+ return eval_1495793802505858891();
+ case 11:
+ return eval_6090918609100367715();
+ case 6:
+ return eval_3476135434775508031();
+ case 0:
+ return eval_1083812994908902003((Logical) args[1], (Logical) args[2], (Logical) args[3]);
+ case 3:
+ return eval_2774290188069062745((Logical) args[1], (Logical) args[2], (Logical) args[3]);
+ default:
+ throw new UnsupportedOperationException("unknown expression: " + String.valueOf(args[0]));
+ }
+ }
+
+ @Override
+ public void tell(Symbol symbol, Object... args) {
+ if (!(ask((PredicateSymbol) symbol, args))) {
+ throw new IllegalStateException("unsatisfied predicate: " + symbol);
+ }
+ }
+
+ public boolean eval_8490564095239449965() {
+ return true;
+ }
+ public boolean eval_6954470109733427152() {
+ return false;
+ }
+ public boolean eval_4333870926030563260() {
+ return true;
+ }
+ public boolean eval_6433032998740858010() {
+ return true;
+ }
+ public boolean eval_4333870926030563292() {
+ return true;
+ }
+ public boolean eval_6433032998740857672() {
+ return true;
+ }
+ public boolean eval_2815152073368565737() {
+ return false;
+ }
+ public boolean eval_6433032998739462746() {
+ return false;
+ }
+ public boolean eval_6433032998739928692() {
+ return true;
+ }
+ public boolean eval_4954708137221254423() {
+ return false;
+ }
+ public boolean eval_5474059076247347166() {
+ return true;
+ }
+ public boolean eval_3476135434775506825() {
+ return true;
+ }
+ public boolean eval_8309386291062717374() {
+ return true;
+ }
+ public boolean eval_2119840812316470003() {
+ return true;
+ }
+ public boolean eval_1495793802505858891() {
+ return true;
+ }
+ public boolean eval_6090918609100367715() {
+ return true;
+ }
+ public boolean eval_3476135434775508031() {
+ return true;
+ }
+ public boolean eval_1083812994908902003(Logical arg0, Logical arg1, Logical arg2) {
+ return SubtypePathSolver.findSubtypingPath(arg0, arg1, arg2);
+ }
+ public boolean eval_2774290188069062745(Logical arg0, Logical arg1, Logical arg2) {
+ return LubSolver.findLub(arg0, arg1, arg2);
+ }
+
+ private static String[] stringSwitchCases_rbjxpx_a0a0c = new String[]{"1083812994908902003", "1495793802505858891", "2119840812316470003", "2774290188069062745", "2815152073368565737", "3476135434775506825", "3476135434775508031", "4333870926030563260", "4333870926030563292", "4954708137221254423", "5474059076247347166", "6090918609100367715", "6433032998739462746", "6433032998739928692", "6433032998740857672", "6433032998740858010", "6954470109733427152", "8309386291062717374", "8490564095239449965"};
+}
diff --git a/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.iml b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.iml
new file mode 100644
index 00000000..d6ebd480
--- /dev/null
+++ b/languages/jetbrains.mps.lang.typesystem2/sandbox/jetbrains.mps.lang.typesystem2.samplechecker/jetbrains.mps.lang.typesystem2.samplechecker.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.logic/Logic.iml b/languages/jetbrains.mps.logic/Logic.iml
index 2b0340f7..3b292375 100644
--- a/languages/jetbrains.mps.logic/Logic.iml
+++ b/languages/jetbrains.mps.logic/Logic.iml
@@ -10,5 +10,7 @@
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.logic/jchr/Logic.jchr.iml b/languages/jetbrains.mps.logic/jchr/Logic.jchr.iml
new file mode 100644
index 00000000..4f4f6d61
--- /dev/null
+++ b/languages/jetbrains.mps.logic/jchr/Logic.jchr.iml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.logic/reactor/Logic.reactor.iml b/languages/jetbrains.mps.logic/reactor/Logic.reactor.iml
new file mode 100644
index 00000000..040f6f7d
--- /dev/null
+++ b/languages/jetbrains.mps.logic/reactor/Logic.reactor.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/languages/jetbrains.mps.logic/test/Logic.test.iml b/languages/jetbrains.mps.logic/test/Logic.test.iml
index b72cc7fb..ff27be74 100644
--- a/languages/jetbrains.mps.logic/test/Logic.test.iml
+++ b/languages/jetbrains.mps.logic/test/Logic.test.iml
@@ -22,5 +22,6 @@
+
\ No newline at end of file