diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/trace.info b/reactor/API/src/jetbrains/mps/logic/reactor/constraint/trace.info
deleted file mode 100644
index 87da0739..00000000
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/trace.info
+++ /dev/null
@@ -1,492 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ComputingTracer.java
similarity index 83%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ComputingTracer.java
index 45670cf4..bc31dadd 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ComputingTracer.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ComputingTracer.java
@@ -1,7 +1,9 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
+import jetbrains.mps.logic.reactor.program.Symbol;
public interface ComputingTracer {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintOccurrence.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java
similarity index 62%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintOccurrence.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java
index 88b677ea..95db32c9 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintOccurrence.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/ConstraintOccurrence.java
@@ -1,7 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.Constraint;
import java.util.Collection;
public interface ConstraintOccurrence {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/program/EvaluationSession.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java
similarity index 75%
rename from reactor/API/src/jetbrains/mps/logic/reactor/program/EvaluationSession.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java
index b1995a40..45e4d8ac 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/program/EvaluationSession.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/EvaluationSession.java
@@ -1,12 +1,10 @@
-package jetbrains.mps.logic.reactor.program;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
-import jetbrains.mps.logic.reactor.constraint.PredicateSymbol;
-import jetbrains.mps.logic.reactor.constraint.ComputingTracer;
-import jetbrains.mps.logic.reactor.constraint.SessionSolver;
-import jetbrains.mps.logic.reactor.constraint.ConstraintSymbol;
-import jetbrains.mps.logic.reactor.constraint.ConstraintOccurrence;
+import jetbrains.mps.logic.reactor.program.Program;
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
+import jetbrains.mps.logic.reactor.program.ConstraintSymbol;
/**
* AKA "Handler"
@@ -20,7 +18,7 @@ public abstract class EvaluationSession {
return ourBackend.current();
}
- public static EvaluationSession.Config newSession(PlanningSession program) {
+ public static EvaluationSession.Config newSession(Program program) {
if (ourBackend == null) {
throw new IllegalStateException("no backend");
}
@@ -64,7 +62,7 @@ public abstract class EvaluationSession {
public EvaluationSession current();
- public EvaluationSession.Config createConfig(PlanningSession program);
+ public EvaluationSession.Config createConfig(Program program);
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Instructible.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Instructible.java
similarity index 53%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/Instructible.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Instructible.java
index e150bb69..0a73ac4e 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Instructible.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Instructible.java
@@ -1,7 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.Symbol;
public interface Instructible {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicate.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicate.java
similarity index 58%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicate.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicate.java
index f4a0fa98..d0724602 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicate.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicate.java
@@ -1,8 +1,9 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
-import jetbrains.mps.logic.reactor.logical.LogicalContext;
+import jetbrains.mps.logic.reactor.program.AbstractPredicate;
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
public class JavaPredicate extends AbstractPredicate {
@@ -22,11 +23,5 @@ public class JavaPredicate extends AbstractPredicate {
return symbol;
}
- @Override
- public PredicateInvocation invocation(LogicalContext logicalContext) {
- // FIXME: implement me
- throw new UnsupportedOperationException("not implemented");
- }
-
private String id;
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicateSymbol.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicateSymbol.java
similarity index 83%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicateSymbol.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicateSymbol.java
index 6edd15a5..14d57d2b 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/JavaPredicateSymbol.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/JavaPredicateSymbol.java
@@ -1,7 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
public class JavaPredicateSymbol extends PredicateSymbol {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateInvocation.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/PredicateInvocation.java
similarity index 61%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateInvocation.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/PredicateInvocation.java
index b96bc596..45f27d26 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateInvocation.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/PredicateInvocation.java
@@ -1,7 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.Predicate;
import java.util.Collection;
public interface PredicateInvocation {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Queryable.java
similarity index 58%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Queryable.java
index 3242b9f5..6422e89c 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Queryable.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/Queryable.java
@@ -1,7 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
public interface Queryable extends Instructible {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/SessionSolver.java b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/SessionSolver.java
similarity index 93%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/SessionSolver.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/evaluation/SessionSolver.java
index ca58b675..2ca8d8b8 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/SessionSolver.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/SessionSolver.java
@@ -1,7 +1,9 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.evaluation;
/*Generated by MPS */
+import jetbrains.mps.logic.reactor.program.PredicateSymbol;
+import jetbrains.mps.logic.reactor.program.Symbol;
import java.util.Map;
import java.util.HashMap;
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/trace.info b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/trace.info
new file mode 100644
index 00000000..f6ee85f2
--- /dev/null
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/evaluation/trace.info
@@ -0,0 +1,324 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/logical/Logical.java b/reactor/API/src/jetbrains/mps/logic/reactor/logical/Logical.java
index 7a7d2d08..ca4a7f86 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/logical/Logical.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/logical/Logical.java
@@ -7,8 +7,6 @@ public interface Logical {
public String name();
- public String name(NamingContext namingContext);
-
public Logical findRoot();
public T value();
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/logical/trace.info b/reactor/API/src/jetbrains/mps/logic/reactor/logical/trace.info
index 7a2e96f1..ba357da7 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/logical/trace.info
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/logical/trace.info
@@ -9,22 +9,18 @@
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractConstraint.java
similarity index 78%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractConstraint.java
index f79f8d11..cf9fd9c8 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractConstraint.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractConstraint.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
@@ -8,7 +8,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
import jetbrains.mps.logic.reactor.logical.LogicalPattern;
-import jetbrains.mps.logic.reactor.logical.LogicalContext;
public class AbstractConstraint implements Constraint {
@@ -37,11 +36,6 @@ public class AbstractConstraint implements Constraint {
return types;
}
- public ConstraintOccurrence occurrence(LogicalContext context) {
- // FIXME: implement me
- throw new UnsupportedOperationException("not implemented");
- }
-
private ConstraintSymbol symbol;
private Object[] arguments;
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractPredicate.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractPredicate.java
similarity index 96%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractPredicate.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractPredicate.java
index 86204d78..471b6470 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AbstractPredicate.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/AbstractPredicate.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AndItem.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/AndItem.java
similarity index 75%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/AndItem.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/AndItem.java
index 1eb01bcc..cc04f66e 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/AndItem.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/AndItem.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Constraint.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/Constraint.java
similarity index 58%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/Constraint.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/Constraint.java
index d51cc927..8ee2233d 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Constraint.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/Constraint.java
@@ -1,9 +1,8 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
import java.util.List;
-import jetbrains.mps.logic.reactor.logical.LogicalContext;
/**
* A constraint provided by a handler. Can only be told.
@@ -14,6 +13,4 @@ public interface Constraint extends AndItem {
public List> argumentTypes();
- public ConstraintOccurrence occurrence(LogicalContext context);
-
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/ConstraintSymbol.java
similarity index 89%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/ConstraintSymbol.java
index c32091a3..c0e0a32d 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/ConstraintSymbol.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/ConstraintSymbol.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidConstraintException.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidConstraintException.java
similarity index 85%
rename from reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidConstraintException.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidConstraintException.java
index 3c683e4d..42c54f36 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidConstraintException.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidConstraintException.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.rule;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidRuleException.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidRuleException.java
similarity index 85%
rename from reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidRuleException.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidRuleException.java
index c35b2642..5679fd37 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/rule/InvalidRuleException.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/InvalidRuleException.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.rule;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/program/PlanningSession.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/PlanningSession.java
deleted file mode 100644
index a5f40f01..00000000
--- a/reactor/API/src/jetbrains/mps/logic/reactor/program/PlanningSession.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package jetbrains.mps.logic.reactor.program;
-
-/*Generated by MPS */
-
-import jetbrains.mps.logic.reactor.constraint.SessionSolver;
-import jetbrains.mps.logic.reactor.constraint.ConstraintSymbol;
-import java.util.List;
-import jetbrains.mps.logic.reactor.constraint.PredicateSymbol;
-import jetbrains.mps.logic.reactor.constraint.Queryable;
-import jetbrains.mps.logic.reactor.rule.Rule;
-import jetbrains.mps.logic.reactor.rule.InvalidRuleException;
-import java.util.Collection;
-
-public abstract class PlanningSession {
-
- public static PlanningSession newSession(String name, SessionSolver sessionSolver) {
- if (ourFactory == null) {
- throw new IllegalStateException("factory not set");
- }
- return ourFactory.create(name, sessionSolver);
- }
-
- public abstract String name();
-
- public abstract SessionSolver sessionSolver();
-
- public abstract Iterable constraintSymbols();
-
- public abstract List> constraintArgumentTypes(ConstraintSymbol constraintSymbol);
-
- public abstract Iterable predicateSymbols();
-
- public abstract Class extends Queryable> solverClass(PredicateSymbol predicateSymbol);
-
- public abstract Iterable rules();
-
- public abstract void addRule(Rule rule) throws InvalidRuleException;
-
- public abstract void addRules(Collection extends Rule> rules) throws InvalidRuleException;
-
- protected static void setFactory(PlanningSession.Factory factory) {
- if (ourFactory != null) {
- throw new IllegalStateException("factory already set");
- }
- ourFactory = factory;
- }
-
- protected static void clearFactory(PlanningSession.Factory factory) {
- if (ourFactory != factory) {
- throw new IllegalStateException("illegal access");
- }
- ourFactory = null;
- }
-
- protected static interface Factory {
-
- public PlanningSession create(String name, SessionSolver sessionSolver);
-
- }
-
- private static PlanningSession.Factory ourFactory;
-}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Predicate.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/Predicate.java
similarity index 51%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/Predicate.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/Predicate.java
index 70fb2dc1..4ec8eeb1 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Predicate.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/Predicate.java
@@ -1,8 +1,7 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
-import jetbrains.mps.logic.reactor.logical.LogicalContext;
/**
* A predicate that is provided by a solver. Can be either told or asked.
@@ -11,6 +10,4 @@ public interface Predicate extends AndItem {
public PredicateSymbol symbol();
- public PredicateInvocation invocation(LogicalContext logicalContext);
-
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateSymbol.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/PredicateSymbol.java
similarity index 82%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateSymbol.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/PredicateSymbol.java
index b2a5a912..13d9c737 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/PredicateSymbol.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/PredicateSymbol.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/program/Program.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/Program.java
new file mode 100644
index 00000000..43203d50
--- /dev/null
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/Program.java
@@ -0,0 +1,25 @@
+package jetbrains.mps.logic.reactor.program;
+
+/*Generated by MPS */
+
+import java.util.List;
+import java.util.Collection;
+
+public abstract class Program {
+
+ public abstract String name();
+
+
+ public abstract Iterable constraintSymbols();
+
+ public abstract List> constraintArgumentTypes(ConstraintSymbol constraintSymbol);
+
+ public abstract Iterable predicateSymbols();
+
+ public abstract Iterable rules();
+
+ public abstract void addRule(Rule rule) throws InvalidRuleException;
+
+ public abstract void addRules(Collection extends Rule> rules) throws InvalidRuleException;
+
+}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/rule/Rule.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/Rule.java
similarity index 68%
rename from reactor/API/src/jetbrains/mps/logic/reactor/rule/Rule.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/Rule.java
index ef05805b..cd297071 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/rule/Rule.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/Rule.java
@@ -1,10 +1,7 @@
-package jetbrains.mps.logic.reactor.rule;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
-import jetbrains.mps.logic.reactor.constraint.Constraint;
-import jetbrains.mps.logic.reactor.constraint.Predicate;
-import jetbrains.mps.logic.reactor.constraint.AndItem;
public abstract class Rule {
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/rule/RuleBuilder.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/RuleBuilder.java
similarity index 79%
rename from reactor/API/src/jetbrains/mps/logic/reactor/rule/RuleBuilder.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/RuleBuilder.java
index 5e73e3d0..3cb8bb4b 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/rule/RuleBuilder.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/RuleBuilder.java
@@ -1,10 +1,7 @@
-package jetbrains.mps.logic.reactor.rule;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
-import jetbrains.mps.logic.reactor.constraint.AndItem;
-import jetbrains.mps.logic.reactor.constraint.Predicate;
-import jetbrains.mps.logic.reactor.constraint.Constraint;
import java.util.Collections;
import com.google.common.collect.Iterables;
import java.util.List;
@@ -61,16 +58,16 @@ public class RuleBuilder {
return this;
}
- public jetbrains.mps.logic.reactor.rule.Rule toRule() throws InvalidRuleException {
- jetbrains.mps.logic.reactor.rule.Rule.Kind kind;
+ public jetbrains.mps.logic.reactor.program.Rule toRule() throws InvalidRuleException {
+ jetbrains.mps.logic.reactor.program.Rule.Kind kind;
if (!(headKept.isEmpty()) && !(headReplaced.isEmpty())) {
- kind = jetbrains.mps.logic.reactor.rule.Rule.Kind.SIMPAGATION;
+ kind = jetbrains.mps.logic.reactor.program.Rule.Kind.SIMPAGATION;
} else if (!(headReplaced.isEmpty())) {
- kind = jetbrains.mps.logic.reactor.rule.Rule.Kind.SIMPLIFICATION;
+ kind = jetbrains.mps.logic.reactor.program.Rule.Kind.SIMPLIFICATION;
} else if (!(headKept.isEmpty())) {
- kind = jetbrains.mps.logic.reactor.rule.Rule.Kind.PROPAGATION;
+ kind = jetbrains.mps.logic.reactor.program.Rule.Kind.PROPAGATION;
} else {
throw new InvalidRuleException("Invalid rule: empty head in " + toString());
@@ -104,14 +101,14 @@ public class RuleBuilder {
}
}
- public class Rule extends jetbrains.mps.logic.reactor.rule.Rule {
+ public class Rule extends jetbrains.mps.logic.reactor.program.Rule {
- private Rule(jetbrains.mps.logic.reactor.rule.Rule.Kind kind, String tag) {
+ private Rule(jetbrains.mps.logic.reactor.program.Rule.Kind kind, String tag) {
this.kind = kind;
this.tag = tag;
}
- public jetbrains.mps.logic.reactor.rule.Rule.Kind kind() {
+ public jetbrains.mps.logic.reactor.program.Rule.Kind kind() {
return kind;
}
@@ -145,7 +142,7 @@ public class RuleBuilder {
return Iterables.concat(headKept, headReplaced, guard, body);
}
- private jetbrains.mps.logic.reactor.rule.Rule.Kind kind;
+ private jetbrains.mps.logic.reactor.program.Rule.Kind kind;
private String tag;
}
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Symbol.java b/reactor/API/src/jetbrains/mps/logic/reactor/program/Symbol.java
similarity index 94%
rename from reactor/API/src/jetbrains/mps/logic/reactor/constraint/Symbol.java
rename to reactor/API/src/jetbrains/mps/logic/reactor/program/Symbol.java
index 89a2f5a1..56abe5c1 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/constraint/Symbol.java
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/Symbol.java
@@ -1,4 +1,4 @@
-package jetbrains.mps.logic.reactor.constraint;
+package jetbrains.mps.logic.reactor.program;
/*Generated by MPS */
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/program/trace.info b/reactor/API/src/jetbrains/mps/logic/reactor/program/trace.info
index 618f1ace..cb59f4b5 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/program/trace.info
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/program/trace.info
@@ -1,149 +1,488 @@
+
+
+
+
+
+
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
-
-
-
-
-
-
-
+
+
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reactor/API/src/jetbrains/mps/logic/reactor/rule/trace.info b/reactor/API/src/jetbrains/mps/logic/reactor/rule/trace.info
index d986208e..78624c87 100644
--- a/reactor/API/src/jetbrains/mps/logic/reactor/rule/trace.info
+++ b/reactor/API/src/jetbrains/mps/logic/reactor/rule/trace.info
@@ -1,246 +1,3 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt
index 1dfa6444..78e0c7c8 100644
--- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt
+++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Handler.kt
@@ -1,9 +1,11 @@
package jetbrains.mps.logic.reactor.core
-import jetbrains.mps.logic.reactor.constraint.*
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
+import jetbrains.mps.logic.reactor.evaluation.PredicateInvocation
+import jetbrains.mps.logic.reactor.evaluation.SessionSolver
import jetbrains.mps.logic.reactor.logical.LogicalContext
import jetbrains.mps.logic.reactor.logical.LogicalPattern
-import jetbrains.mps.logic.reactor.rule.Rule
+import jetbrains.mps.logic.reactor.program.*
import java.util.*
/**
@@ -84,3 +86,38 @@ class Handler {
stored.contains(this)
}
+
+private fun AndItem.argumentValues(context: LogicalContext): List =
+ arguments().map { arg -> if (arg is LogicalPattern<*>) context.valueFor(arg) else arg!! }.toList()
+
+
+private fun Constraint.occurrence(context: LogicalContext): ConstraintOccurrence =
+ ReactorConstraintOccurrence(this, argumentValues(context))
+
+
+private fun Predicate.invocation(logicalContext: LogicalContext): PredicateInvocation {
+ return object: PredicateInvocation {
+
+ override fun predicate(): Predicate = this@invocation
+
+ override fun arguments(): Collection = argumentValues(logicalContext)
+ }
+}
+
+
+private data class ReactorConstraintOccurrence(val constraint: Constraint, val arguments: List, val id: Int) : ConstraintOccurrence {
+
+ companion object {
+ val random = Random()
+ }
+
+ constructor(constraint: Constraint, arguments: List) :
+ this(constraint, arguments, random.nextInt()) {}
+
+ override fun constraint(): Constraint = constraint
+
+ override fun arguments(): Collection = arguments
+
+ override fun toString(): String = "${constraint().symbol()}(${arguments().joinToString()})"
+
+}
diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Matcher.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Matcher.kt
index 0c87f372..b1ebc841 100644
--- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/Matcher.kt
+++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/Matcher.kt
@@ -1,12 +1,12 @@
package jetbrains.mps.logic.reactor.core
import com.github.andrewoma.dexx.collection.ConsList
-import jetbrains.mps.logic.reactor.constraint.Constraint
-import jetbrains.mps.logic.reactor.constraint.ConstraintOccurrence
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
import jetbrains.mps.logic.reactor.logical.Logical
import jetbrains.mps.logic.reactor.logical.LogicalContext
import jetbrains.mps.logic.reactor.logical.LogicalPattern
-import jetbrains.mps.logic.reactor.rule.Rule
+import jetbrains.mps.logic.reactor.program.Constraint
+import jetbrains.mps.logic.reactor.program.Rule
import jetbrains.mps.unification.Term
import jetbrains.mps.unification.Unification
import java.lang.String
diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorEvaluationSession.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt
similarity index 75%
rename from reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorEvaluationSession.kt
rename to reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt
index 355a6a0a..51a09876 100644
--- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorEvaluationSession.kt
+++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemEvaluationSession.kt
@@ -3,10 +3,13 @@ package jetbrains.mps.logic.reactor.core
import com.github.andrewoma.dexx.collection.ConsList
import com.github.andrewoma.dexx.collection.List as PList
import com.github.andrewoma.dexx.collection.LinkedList as PLinkedList
-import jetbrains.mps.logic.reactor.constraint.*
-import jetbrains.mps.logic.reactor.program.EvaluationSession
-import jetbrains.mps.logic.reactor.program.PlanningSession
-import jetbrains.mps.logic.reactor.rule.Rule
+import jetbrains.mps.logic.reactor.evaluation.ComputingTracer
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
+import jetbrains.mps.logic.reactor.evaluation.EvaluationSession
+import jetbrains.mps.logic.reactor.evaluation.SessionSolver
+import jetbrains.mps.logic.reactor.program.ConstraintSymbol
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
+import jetbrains.mps.logic.reactor.program.Program
import java.util.*
/**
@@ -14,9 +17,9 @@ import java.util.*
*/
-class ReactorEvaluationSession(val program: PlanningSession) : EvaluationSession() {
+class MemEvaluationSession : EvaluationSession {
- class Config(val program: PlanningSession) : EvaluationSession.Config() {
+ private class Config(val program: MemProgram) : EvaluationSession.Config() {
val myPredicateSymbols = ArrayList()
val myParameters = HashMap()
@@ -45,7 +48,7 @@ class ReactorEvaluationSession(val program: PlanningSession) : EvaluationSession
val sessionSolver = program.sessionSolver()
sessionSolver.init(myComputingTracer, * predicateSymbols)
- session = ReactorEvaluationSession(program)
+ session = MemEvaluationSession(program)
ourBackend.ourSession.set(session)
session.launch(myParameters["main"] as ConstraintOccurrence)
@@ -54,8 +57,14 @@ class ReactorEvaluationSession(val program: PlanningSession) : EvaluationSession
}
}
+ val program: MemProgram
+
lateinit var handler: Handler
+ private constructor(program: Program): super() {
+ this.program = program as MemProgram
+ }
+
fun launch(main: ConstraintOccurrence) {
this.handler = Handler(sessionSolver(), program.rules())
handler.process(main)
@@ -76,11 +85,11 @@ class ReactorEvaluationSession(val program: PlanningSession) : EvaluationSession
private class Backend : EvaluationSession.Backend {
- val ourSession = ThreadLocal()
+ val ourSession = ThreadLocal()
override fun current(): EvaluationSession = ourSession.get() ?: throw IllegalStateException("no session")
- override fun createConfig(program: PlanningSession): EvaluationSession.Config = Config(program)
+ override fun createConfig(program: Program): EvaluationSession.Config = Config(program as MemProgram)
}
companion object {
diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorPlanningSession.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemProgram.kt
similarity index 77%
rename from reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorPlanningSession.kt
rename to reactor/Core/src/jetbrains/mps/logic/reactor/core/MemProgram.kt
index 15a05a99..587b898a 100644
--- a/reactor/Core/src/jetbrains/mps/logic/reactor/core/ReactorPlanningSession.kt
+++ b/reactor/Core/src/jetbrains/mps/logic/reactor/core/MemProgram.kt
@@ -4,20 +4,14 @@ package jetbrains.mps.logic.reactor.core
* @author Fedor Isakov
*/
-import jetbrains.mps.logic.reactor.constraint.*
-import jetbrains.mps.logic.reactor.program.PlanningSession
-import jetbrains.mps.logic.reactor.rule.InvalidConstraintException
-import jetbrains.mps.logic.reactor.rule.Rule
+import jetbrains.mps.logic.reactor.evaluation.Queryable
+import jetbrains.mps.logic.reactor.evaluation.SessionSolver
+import jetbrains.mps.logic.reactor.program.*
import java.util.*
import java.util.Collections.*
-class ReactorPlanningSession(val name: String, val sessionSolver: SessionSolver) : PlanningSession() {
-
- class FactoryImpl : Factory {
- override fun create(name: String, sessionSolver: SessionSolver): PlanningSession =
- ReactorPlanningSession(name, sessionSolver)
- }
+class MemProgram(val name: String, val sessionSolver: SessionSolver) : Program() {
private val myRules = ArrayList()
@@ -25,8 +19,6 @@ class ReactorPlanningSession(val name: String, val sessionSolver: SessionSolver)
override fun name(): String = name
- override fun sessionSolver(): SessionSolver= sessionSolver
-
override fun constraintSymbols(): Iterable =
myRegistry.constraintSymbols()
@@ -36,8 +28,7 @@ class ReactorPlanningSession(val name: String, val sessionSolver: SessionSolver)
override fun predicateSymbols(): Iterable =
myRegistry.predicateSymbols()
- override fun solverClass(predicateSymbol: PredicateSymbol): Class? =
- myRegistry.solverClass(predicateSymbol)
+ fun sessionSolver(): SessionSolver = sessionSolver
override fun addRule(rule: Rule) {
myRegistry.update(rule)
@@ -52,19 +43,6 @@ class ReactorPlanningSession(val name: String, val sessionSolver: SessionSolver)
}
override fun rules(): Iterable = unmodifiableCollection(myRules)
-
- companion object {
- val ourFactory = FactoryImpl()
-
- fun init() {
- setFactory(ourFactory)
- }
-
- fun deinit() {
- clearFactory(ourFactory)
- }
- }
-
}
private class ConstraintRegistry(val sessionSolver: SessionSolver) {
diff --git a/reactor/Core/src/jetbrains/mps/logic/reactor/predicate/ReactorSessionSolver.kt b/reactor/Core/src/jetbrains/mps/logic/reactor/predicate/MemSessionSolver.kt
similarity index 63%
rename from reactor/Core/src/jetbrains/mps/logic/reactor/predicate/ReactorSessionSolver.kt
rename to reactor/Core/src/jetbrains/mps/logic/reactor/predicate/MemSessionSolver.kt
index c3d8ec91..ab9e930d 100644
--- a/reactor/Core/src/jetbrains/mps/logic/reactor/predicate/ReactorSessionSolver.kt
+++ b/reactor/Core/src/jetbrains/mps/logic/reactor/predicate/MemSessionSolver.kt
@@ -1,16 +1,20 @@
package jetbrains.mps.logic.reactor.predicate
-import jetbrains.mps.logic.reactor.constraint.*
+import jetbrains.mps.logic.reactor.evaluation.ComputingTracer
+import jetbrains.mps.logic.reactor.evaluation.JavaPredicateSymbol
+import jetbrains.mps.logic.reactor.evaluation.Queryable
+import jetbrains.mps.logic.reactor.evaluation.SessionSolver
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
/**
* @author Fedor Isakov
*/
-class ReactorSessionSolver(val expressionSolver: Queryable, val equalsSolver: Queryable) : SessionSolver() {
+class MemSessionSolver(val expressionSolver: Queryable, val equalsSolver: Queryable) : SessionSolver() {
override fun solverClass(predicateSymbol: PredicateSymbol): Class {
return when (predicateSymbol) {
- is JavaPredicateSymbol -> expressionSolver.javaClass
+ is JavaPredicateSymbol -> expressionSolver.javaClass
PredicateSymbol("equals", 2) -> equalsSolver.javaClass
else -> throw UnsupportedOperationException("not implemented")
}
diff --git a/reactor/Test/test/EqualsSolver.kt b/reactor/Test/test/EqualsSolver.kt
index 20c4c961..4b0ef36b 100644
--- a/reactor/Test/test/EqualsSolver.kt
+++ b/reactor/Test/test/EqualsSolver.kt
@@ -1,8 +1,8 @@
-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.evaluation.EvaluationSession
+import jetbrains.mps.logic.reactor.evaluation.Queryable
import jetbrains.mps.logic.reactor.logical.Logical
-import jetbrains.mps.logic.reactor.program.EvaluationSession
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
+import jetbrains.mps.logic.reactor.program.Symbol
class EqualsSolver : Queryable {
diff --git a/reactor/Test/test/JavaExpressionHelper.kt b/reactor/Test/test/JavaExpressionHelper.kt
index 3b760a2a..4b676776 100644
--- a/reactor/Test/test/JavaExpressionHelper.kt
+++ b/reactor/Test/test/JavaExpressionHelper.kt
@@ -1,7 +1,13 @@
-import jetbrains.mps.logic.reactor.constraint.*
+import jetbrains.mps.logic.reactor.evaluation.JavaPredicateSymbol
+import jetbrains.mps.logic.reactor.evaluation.PredicateInvocation
+import jetbrains.mps.logic.reactor.evaluation.Queryable
import jetbrains.mps.logic.reactor.logical.Logical
import jetbrains.mps.logic.reactor.logical.LogicalContext
import jetbrains.mps.logic.reactor.logical.LogicalPattern
+import jetbrains.mps.logic.reactor.program.AndItem
+import jetbrains.mps.logic.reactor.program.Predicate
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
+import jetbrains.mps.logic.reactor.program.Symbol
import java.util.*
/**
@@ -95,14 +101,6 @@ data class TestJavaPredicate(val symbol: JavaPredicateSymbol, val expr: JavaExpr
override fun symbol(): PredicateSymbol = symbol
- override fun invocation(logicalContext: LogicalContext): PredicateInvocation {
- return object: PredicateInvocation {
-
- override fun predicate(): Predicate = this@TestJavaPredicate
-
- override fun arguments(): Collection = argumentValues(logicalContext)
- }
- }
}
diff --git a/reactor/Test/test/LogicalHelper.kt b/reactor/Test/test/LogicalHelper.kt
index 75310932..2f2e92bc 100644
--- a/reactor/Test/test/LogicalHelper.kt
+++ b/reactor/Test/test/LogicalHelper.kt
@@ -1,8 +1,10 @@
-import jetbrains.mps.logic.reactor.constraint.*
+import jetbrains.mps.logic.reactor.evaluation.PredicateInvocation
import jetbrains.mps.logic.reactor.logical.Logical
import jetbrains.mps.logic.reactor.logical.LogicalContext
import jetbrains.mps.logic.reactor.logical.LogicalPattern
import jetbrains.mps.logic.reactor.logical.NamingContext
+import jetbrains.mps.logic.reactor.program.Predicate
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
import java.util.*
/**
@@ -51,10 +53,6 @@ data class TestLogical(val name: String, var value: T?, var parent: TestLogic
override fun name(): String = name
- override fun name(namingContext: NamingContext?): String? {
- throw UnsupportedOperationException()
- }
-
override fun pattern(): LogicalPattern> = TODO()
override fun findRoot(): Logical = find()
@@ -115,12 +113,4 @@ data class TestEqPredicate(val left: Any, val right: Any) : Predicate {
override fun symbol(): PredicateSymbol = PredicateSymbol("equals", 2)
- override fun invocation(logicalContext: LogicalContext): PredicateInvocation {
- return object: PredicateInvocation {
-
- override fun predicate(): Predicate = this@TestEqPredicate
-
- override fun arguments(): Collection = argumentValues(logicalContext)
- }
- }
}
\ No newline at end of file
diff --git a/reactor/Test/test/RulesHelper.kt b/reactor/Test/test/RulesHelper.kt
index eb0679e2..347d70e8 100644
--- a/reactor/Test/test/RulesHelper.kt
+++ b/reactor/Test/test/RulesHelper.kt
@@ -1,8 +1,7 @@
-import jetbrains.mps.logic.reactor.constraint.*
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
import jetbrains.mps.logic.reactor.logical.LogicalContext
import jetbrains.mps.logic.reactor.logical.LogicalPattern
-import jetbrains.mps.logic.reactor.rule.Rule
-import jetbrains.mps.logic.reactor.rule.RuleBuilder
+import jetbrains.mps.logic.reactor.program.*
import java.util.*
/**
@@ -10,7 +9,7 @@ import java.util.*
*/
-class Program(val env: Environment, val rules: List) {
+class ProgramBuilder(val env: Environment, val rules: List) {
}
class Environment() {
@@ -18,7 +17,7 @@ class Environment() {
val expressionSolver = ExpressionSolver()
}
-fun program(vararg ruleBuilders : Environment.() -> Rule): Program {
+fun program(vararg ruleBuilders : Environment.() -> Rule): ProgramBuilder {
val env = Environment()
val rules = ArrayList()
with (env) {
@@ -26,7 +25,7 @@ fun program(vararg ruleBuilders : Environment.() -> Rule): Program {
rules.add(rb())
}
}
- return Program(env, rules)
+ return ProgramBuilder(env, rules)
}
fun rule(tag: String, vararg component:RB.() -> Unit): Environment.() -> Rule = {
@@ -67,9 +66,6 @@ fun equals(left: Any, right: Any): ConjBuilder.() -> Unit = {
fun occurrence(id: String, vararg args: Any) : ConstraintOccurrence = TestConstraintOccurrence(id, * args)
-fun AndItem.argumentValues(context: LogicalContext): List =
- arguments().map { arg -> if (arg is LogicalPattern<*>) context.valueFor(arg) else arg!! }.toList()
-
class RB(tag: String, val env: Environment) : RuleBuilder(tag) {
}
@@ -127,9 +123,6 @@ private data class TestConstraint(val symbol: ConstraintSymbol, val arguments: L
override fun argumentTypes(): List> = arguments.map { arg -> arg.javaClass }
- override fun occurrence(context: LogicalContext): ConstraintOccurrence =
- TestConstraintOccurrence(this, argumentValues(context))
-
override fun toString(): String = "${symbol()}(${arguments().joinToString()})"
}
diff --git a/reactor/Test/test/TestHandler.kt b/reactor/Test/test/TestHandler.kt
index 8e8a9b15..feab0e79 100644
--- a/reactor/Test/test/TestHandler.kt
+++ b/reactor/Test/test/TestHandler.kt
@@ -1,8 +1,13 @@
-import jetbrains.mps.logic.reactor.constraint.*
import jetbrains.mps.logic.reactor.core.Handler
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
+import jetbrains.mps.logic.reactor.evaluation.JavaPredicateSymbol
+import jetbrains.mps.logic.reactor.evaluation.Queryable
+import jetbrains.mps.logic.reactor.evaluation.SessionSolver
import jetbrains.mps.logic.reactor.logical.Logical
import jetbrains.mps.logic.reactor.logical.LogicalPattern
-import jetbrains.mps.logic.reactor.predicate.ReactorSessionSolver
+import jetbrains.mps.logic.reactor.predicate.MemSessionSolver
+import jetbrains.mps.logic.reactor.program.ConstraintSymbol
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
import org.junit.Assert.*
import org.junit.Before
import org.junit.BeforeClass
@@ -16,10 +21,10 @@ import org.junit.Test
class TestHandler {
fun sessionSolver(exprSolver: Queryable, equalsSolver: Queryable) : SessionSolver =
- ReactorSessionSolver(exprSolver, equalsSolver).apply {
- init(PredicateSymbol("equals",2), JavaPredicateSymbol.EXPRESSION0, JavaPredicateSymbol.EXPRESSION1, JavaPredicateSymbol.EXPRESSION2, JavaPredicateSymbol.EXPRESSION3) }
+ MemSessionSolver(exprSolver, equalsSolver).apply {
+ init(PredicateSymbol("equals", 2), JavaPredicateSymbol.EXPRESSION0, JavaPredicateSymbol.EXPRESSION1, JavaPredicateSymbol.EXPRESSION2, JavaPredicateSymbol.EXPRESSION3) }
- fun Program.handler(vararg occurrences: ConstraintOccurrence): Handler =
+ fun ProgramBuilder.handler(vararg occurrences: ConstraintOccurrence): Handler =
Handler(sessionSolver(env.expressionSolver, env.equalsSolver), rules, listOf(* occurrences))
companion object {
diff --git a/reactor/Test/test/TestMatcher.kt b/reactor/Test/test/TestMatcher.kt
index 74edfe84..3f8427dd 100644
--- a/reactor/Test/test/TestMatcher.kt
+++ b/reactor/Test/test/TestMatcher.kt
@@ -1,7 +1,7 @@
-import jetbrains.mps.logic.reactor.constraint.Constraint
-import jetbrains.mps.logic.reactor.constraint.ConstraintOccurrence
import jetbrains.mps.logic.reactor.core.Matcher
import jetbrains.mps.logic.reactor.core.matches
+import jetbrains.mps.logic.reactor.evaluation.ConstraintOccurrence
+import jetbrains.mps.logic.reactor.program.Constraint
import org.junit.Assert.*
import org.junit.Test
@@ -11,7 +11,7 @@ import org.junit.Test
class TestMatcher {
- fun Program.matcher(vararg occurrence: ConstraintOccurrence): Matcher {
+ fun ProgramBuilder.matcher(vararg occurrence: ConstraintOccurrence): Matcher {
val stored = occurrence.toList()
return object : Matcher(rules) {
override fun findOccurrences(constraint: Constraint, acceptable: (ConstraintOccurrence) -> Boolean):
diff --git a/reactor/Test/test/TestProgram.kt b/reactor/Test/test/TestProgram.kt
index 41c4ae60..7ec77f23 100644
--- a/reactor/Test/test/TestProgram.kt
+++ b/reactor/Test/test/TestProgram.kt
@@ -1,10 +1,11 @@
-import jetbrains.mps.logic.reactor.constraint.*
-import jetbrains.mps.logic.reactor.core.ReactorEvaluationSession
-import jetbrains.mps.logic.reactor.core.ReactorPlanningSession
+import jetbrains.mps.logic.reactor.core.MemEvaluationSession
+import jetbrains.mps.logic.reactor.core.MemProgram
+import jetbrains.mps.logic.reactor.evaluation.EvaluationSession
+import jetbrains.mps.logic.reactor.evaluation.JavaPredicateSymbol
import jetbrains.mps.logic.reactor.logical.Logical
-import jetbrains.mps.logic.reactor.predicate.ReactorSessionSolver
-import jetbrains.mps.logic.reactor.program.EvaluationSession
-import jetbrains.mps.logic.reactor.program.PlanningSession
+import jetbrains.mps.logic.reactor.predicate.MemSessionSolver
+import jetbrains.mps.logic.reactor.program.ConstraintSymbol
+import jetbrains.mps.logic.reactor.program.PredicateSymbol
import org.junit.*
import org.junit.Assert.*
@@ -16,17 +17,15 @@ class TestProgram {
companion object {
@BeforeClass @JvmStatic fun setup() {
- ReactorPlanningSession.init();
- ReactorEvaluationSession.init();
+ MemEvaluationSession.init();
}
@AfterClass @JvmStatic fun teardown() {
- ReactorEvaluationSession.deinit();
- ReactorPlanningSession.deinit();
+ MemEvaluationSession.deinit();
}
}
- fun Program.session(name: String): EvaluationSession {
- val planningSession = PlanningSession.newSession(name, ReactorSessionSolver(env.expressionSolver, env.equalsSolver))
+ fun ProgramBuilder.session(name: String): EvaluationSession {
+ val planningSession = MemProgram(name, MemSessionSolver(env.expressionSolver, env.equalsSolver))
planningSession.addRules(rules)
return EvaluationSession.newSession(planningSession).
withPredicates(PredicateSymbol("equals", 2), JavaPredicateSymbol.EXPRESSION0, JavaPredicateSymbol.EXPRESSION1, JavaPredicateSymbol.EXPRESSION2, JavaPredicateSymbol.EXPRESSION3).
diff --git a/reactor/Test/test/TestPlanningSession.kt b/reactor/Test/test/TestProgramBuilder.kt
similarity index 56%
rename from reactor/Test/test/TestPlanningSession.kt
rename to reactor/Test/test/TestProgramBuilder.kt
index b353b5e3..b440f7a4 100644
--- a/reactor/Test/test/TestPlanningSession.kt
+++ b/reactor/Test/test/TestProgramBuilder.kt
@@ -1,12 +1,7 @@
-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.core.ReactorEvaluationSession
-import jetbrains.mps.logic.reactor.program.PlanningSession
-import jetbrains.mps.logic.reactor.rule.InvalidConstraintException
-import jetbrains.mps.logic.reactor.rule.InvalidRuleException
-import jetbrains.mps.logic.reactor.core.ReactorPlanningSession
-import jetbrains.mps.logic.reactor.predicate.ReactorSessionSolver
+import jetbrains.mps.logic.reactor.core.MemProgram
+import jetbrains.mps.logic.reactor.evaluation.Queryable
+import jetbrains.mps.logic.reactor.predicate.MemSessionSolver
+import jetbrains.mps.logic.reactor.program.*
import org.junit.AfterClass
import org.junit.Assert.*
import org.junit.Before
@@ -19,16 +14,7 @@ import kotlin.reflect.KClass
* @author Fedor Isakov
*/
-class TestPlanningSession {
-
- companion object {
- @BeforeClass @JvmStatic fun setup() {
- ReactorPlanningSession.init();
- }
- @AfterClass @JvmStatic fun teardown() {
- ReactorPlanningSession.deinit();
- }
- }
+class TestProgramBuilder {
val dummySolver = object : Queryable {
override fun ask(predicateSymbol: PredicateSymbol?, vararg args: Any?): Boolean = TODO()
@@ -36,13 +22,13 @@ class TestPlanningSession {
}
@Before fun beforeTest() {
- session = PlanningSession.newSession("test", ReactorSessionSolver(dummySolver, dummySolver))
+ program = MemProgram("test", MemSessionSolver(dummySolver, dummySolver))
}
- lateinit var session: PlanningSession
+ lateinit var program: Program
@Test fun empty() {
- session.addRules(ArrayList())
+ program.addRules(ArrayList())
}
@Test(expected = InvalidRuleException::class)
@@ -53,8 +39,8 @@ class TestPlanningSession {
constraint("bar")
))).run {
- session.addRules(rules)
- assertEquals(session.rules().count(), 1)
+ program.addRules(rules)
+ assertEquals(program.rules().count(), 1)
}
}
@@ -79,8 +65,8 @@ class TestPlanningSession {
constraint("blah")
))).run {
- session.addRules(rules)
- assertEquals(session.rules().count(), 2)
+ program.addRules(rules)
+ assertEquals(program.rules().count(), 2)
}
}
@@ -95,7 +81,7 @@ class TestPlanningSession {
constraint("bar", "1")
))).run {
- session.addRules(rules)
+ program.addRules(rules)
}
}
}