diff --git a/reactor/.idea/libraries/com_google_collections_google_collections_1_0.xml b/reactor/.idea/libraries/com_google_collections_google_collections_1_0.xml
new file mode 100644
index 00000000..42947474
--- /dev/null
+++ b/reactor/.idea/libraries/com_google_collections_google_collections_1_0.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reactor/.idea/libraries/lib.xml b/reactor/.idea/libraries/lib.xml
deleted file mode 100644
index 72e3b2ee..00000000
--- a/reactor/.idea/libraries/lib.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/reactor/.idea/modules.xml b/reactor/.idea/modules.xml
index 04f1eb91..415bf452 100644
--- a/reactor/.idea/modules.xml
+++ b/reactor/.idea/modules.xml
@@ -3,6 +3,8 @@
+
+
\ No newline at end of file
diff --git a/reactor/.idea/uiDesigner.xml b/reactor/.idea/uiDesigner.xml
new file mode 100644
index 00000000..e96534fb
--- /dev/null
+++ b/reactor/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ No newline at end of file
diff --git a/reactor/API/API.iml b/reactor/API/API.iml
index c90834f2..e6f15ad7 100644
--- a/reactor/API/API.iml
+++ b/reactor/API/API.iml
@@ -7,5 +7,6 @@
+
\ No newline at end of file
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java
index 129bc8b2..4a3ece03 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java
@@ -48,8 +48,8 @@ public abstract class AbstractConstraint implements ComputingItem {
return (Constraint) this;
}
- public AutoConstraint asAutoConstraint() {
- return (AutoConstraint) this;
+ public BuiltinConstraint asAutoConstraint() {
+ return (BuiltinConstraint) this;
}
protected void registerHandler(ComputingSession session, Instructible instructible) {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AutoConstraint.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/BuiltinConstraint.java
similarity index 85%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/AutoConstraint.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/constraint/BuiltinConstraint.java
index c6870020..de1317f7 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AutoConstraint.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/BuiltinConstraint.java
@@ -6,7 +6,7 @@ package jetbrains.mps.logic.reactor.constraint;
/**
* A constraint that is provided by a solver. Can be either told or asked for a constraint.
*/
-public interface AutoConstraint extends Constraint {
+public interface BuiltinConstraint extends Constraint {
public Queryable solver(ComputingSession session);
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingSession.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingSession.java
index 40f1da6c..4783706a 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingSession.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingSession.java
@@ -45,7 +45,7 @@ public class ComputingSession {
}
- public boolean ask(AutoConstraint autoConstraint, Object... arg) {
+ public boolean ask(BuiltinConstraint autoConstraint, Object... arg) {
Queryable solver = solver(autoConstraint);
if (solver == null) {
throw new IllegalStateException("no solver for '" + autoConstraint.symbol() + "'");
@@ -72,8 +72,8 @@ public class ComputingSession {
return null;
}
- public AutoConstraint lookupAutoConstraint(Class> clazz) {
- for (Map.Entry e : solvers.entrySet()) {
+ public BuiltinConstraint lookupAutoConstraint(Class> clazz) {
+ for (Map.Entry e : solvers.entrySet()) {
if (clazz.isAssignableFrom(e.getKey().solverClass())) {
return e.getKey();
}
@@ -88,7 +88,7 @@ public class ComputingSession {
return handlers.get(constraint);
}
- protected Queryable solver(AutoConstraint constraint) {
+ protected Queryable solver(BuiltinConstraint constraint) {
if (!(solvers.containsKey(constraint))) {
throw new IllegalStateException("no handler: " + constraint);
}
@@ -99,13 +99,13 @@ public class ComputingSession {
handlers.put(constraint, instructible);
}
- protected void registerSolver(AutoConstraint constraint, Queryable queryable) {
+ protected void registerSolver(BuiltinConstraint constraint, Queryable queryable) {
solvers.put(constraint, queryable);
}
private Map handlers = new HashMap();
- private Map solvers = new HashMap();
+ private Map solvers = new HashMap();
private final ComputingTracer tracer;
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java
index f2ab9f53..d4ee2854 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java
@@ -5,8 +5,8 @@ package jetbrains.mps.logic.reactor.constraint;
public interface ComputingTracer {
- public void askSuccess(AutoConstraint autoConstraint, Object... args);
+ public void askSuccess(BuiltinConstraint autoConstraint, Object... args);
- public void askFailure(AutoConstraint autoConstraint, Object... args);
+ public void askFailure(BuiltinConstraint autoConstraint, Object... args);
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java
new file mode 100644
index 00000000..9d7ed7ed
--- /dev/null
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java
@@ -0,0 +1,74 @@
+package jetbrains.mps.logic.reactor.constraint;
+
+/*Generated by MPS */
+
+
+/**
+ * TODO: move to the constraint model
+ */
+public class ConstraintSymbol {
+
+ public static ConstraintSymbol symbol(String id, int arity) {
+ return new ConstraintSymbol(id, arity, false);
+ }
+
+ public static ConstraintSymbol builtinSymbol(String id, int arity) {
+ return new ConstraintSymbol(id, arity, true);
+ }
+
+ private ConstraintSymbol(String id, int arity, boolean builtin) {
+ this.id = id;
+ this.arity = arity;
+ this.builtin = builtin;
+ }
+
+ public String id() {
+ return id;
+ }
+
+ public int arity() {
+ return arity;
+ }
+
+ public boolean isBuiltin() {
+ return builtin;
+ }
+
+ @Override
+ public String toString() {
+ return id;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || this.getClass() != o.getClass()) {
+ return false;
+ }
+
+ ConstraintSymbol that = (ConstraintSymbol) o;
+ if ((id != null ? !(id.equals(that.id)) : that.id != null)) {
+ return false;
+ }
+ if (arity != that.arity) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = 17;
+ result = 43 * result + ((id != null ? String.valueOf(id).hashCode() : 0));
+ result = 31 * result + 37 * arity;
+ return result;
+ }
+
+ private String id;
+ private int arity;
+
+ private boolean builtin;
+}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java
index aab792be..53a00f58 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java
@@ -5,6 +5,6 @@ package jetbrains.mps.logic.reactor.constraint;
public interface Queryable extends Instructible {
- public boolean ask(AutoConstraint autoConstraint, Object... arg);
+ public boolean ask(BuiltinConstraint autoConstraint, Object... arg);
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/StandardBuiltinConstraint.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/StandardBuiltinConstraint.java
new file mode 100644
index 00000000..c4ffe626
--- /dev/null
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/StandardBuiltinConstraint.java
@@ -0,0 +1,18 @@
+package jetbrains.mps.logic.reactor.constraint;
+
+/*Generated by MPS */
+
+
+public class StandardBuiltinConstraint {
+
+ public static final ConstraintSymbol UNIFICATION = ConstraintSymbol.builtinSymbol("=", 2);
+
+ public static final ConstraintSymbol EQUALS = ConstraintSymbol.builtinSymbol("==", 2);
+
+ public static final ConstraintSymbol ASSERT = ConstraintSymbol.builtinSymbol("assert", 1);
+
+ public static final ConstraintSymbol FREE = ConstraintSymbol.builtinSymbol("isVar", 1);
+
+ public static final ConstraintSymbol BOUND = ConstraintSymbol.builtinSymbol("isNonVar", 1);
+
+}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/occurrence/AbstractConstraintOccurrence.java b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/occurrence/AbstractConstraintOccurrence.java
new file mode 100644
index 00000000..f05c4a16
--- /dev/null
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/occurrence/AbstractConstraintOccurrence.java
@@ -0,0 +1,34 @@
+package jetbrains.mps.logic.reactor.constraint.occurrence;
+
+/*Generated by MPS */
+
+import jetbrains.mps.logic.reactor.constraint.ConstraintSymbol;
+import java.util.List;
+import java.util.Collections;
+import java.util.Arrays;
+
+public abstract class AbstractConstraintOccurrence {
+
+ protected AbstractConstraintOccurrence(ConstraintSymbol symbol, Object... arg) {
+ this.symbol = symbol;
+ this.arg = arg;
+ }
+
+ public ConstraintSymbol symbol() {
+ return symbol;
+ }
+
+ public List