From 2f38824ed54cd238ef734200813e3076dea925dd Mon Sep 17 00:00:00 2001 From: Fedor Isakov Date: Sun, 27 Dec 2015 18:05:43 +0100 Subject: [PATCH] Updated API sources from the latest version of Logic. Adapted to the new API. --- .../mps/logic/reactor/constraint/trace.info | 492 --------------- .../ComputingTracer.java | 4 +- .../ConstraintOccurrence.java | 3 +- .../EvaluationSession.java | 14 +- .../Instructible.java | 3 +- .../JavaPredicate.java | 11 +- .../JavaPredicateSymbol.java | 3 +- .../PredicateInvocation.java | 3 +- .../{constraint => evaluation}/Queryable.java | 3 +- .../SessionSolver.java | 4 +- .../mps/logic/reactor/evaluation/trace.info | 324 ++++++++++ .../mps/logic/reactor/logical/Logical.java | 2 - .../mps/logic/reactor/logical/trace.info | 26 +- .../AbstractConstraint.java | 8 +- .../AbstractPredicate.java | 2 +- .../{constraint => program}/AndItem.java | 2 +- .../{constraint => program}/Constraint.java | 5 +- .../ConstraintSymbol.java | 2 +- .../InvalidConstraintException.java | 2 +- .../InvalidRuleException.java | 2 +- .../reactor/program/PlanningSession.java | 62 -- .../{constraint => program}/Predicate.java | 5 +- .../PredicateSymbol.java | 2 +- .../mps/logic/reactor/program/Program.java | 25 + .../logic/reactor/{rule => program}/Rule.java | 5 +- .../{rule => program}/RuleBuilder.java | 23 +- .../{constraint => program}/Symbol.java | 2 +- .../mps/logic/reactor/program/trace.info | 591 ++++++++++++++---- .../mps/logic/reactor/rule/trace.info | 245 +------- .../mps/logic/reactor/core/Handler.kt | 41 +- .../mps/logic/reactor/core/Matcher.kt | 6 +- ...tionSession.kt => MemEvaluationSession.kt} | 27 +- ...eactorPlanningSession.kt => MemProgram.kt} | 32 +- ...orSessionSolver.kt => MemSessionSolver.kt} | 10 +- reactor/Test/test/EqualsSolver.kt | 8 +- reactor/Test/test/JavaExpressionHelper.kt | 16 +- reactor/Test/test/LogicalHelper.kt | 16 +- reactor/Test/test/RulesHelper.kt | 17 +- reactor/Test/test/TestHandler.kt | 15 +- reactor/Test/test/TestMatcher.kt | 6 +- reactor/Test/test/TestProgram.kt | 23 +- ...anningSession.kt => TestProgramBuilder.kt} | 40 +- 42 files changed, 1000 insertions(+), 1132 deletions(-) delete mode 100644 reactor/API/src/jetbrains/mps/logic/reactor/constraint/trace.info rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/ComputingTracer.java (83%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/ConstraintOccurrence.java (62%) rename reactor/API/src/jetbrains/mps/logic/reactor/{program => evaluation}/EvaluationSession.java (75%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/Instructible.java (53%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/JavaPredicate.java (58%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/JavaPredicateSymbol.java (83%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/PredicateInvocation.java (61%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/Queryable.java (58%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => evaluation}/SessionSolver.java (93%) create mode 100644 reactor/API/src/jetbrains/mps/logic/reactor/evaluation/trace.info rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/AbstractConstraint.java (78%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/AbstractPredicate.java (96%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/AndItem.java (75%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/Constraint.java (58%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/ConstraintSymbol.java (89%) rename reactor/API/src/jetbrains/mps/logic/reactor/{rule => program}/InvalidConstraintException.java (85%) rename reactor/API/src/jetbrains/mps/logic/reactor/{rule => program}/InvalidRuleException.java (85%) delete mode 100644 reactor/API/src/jetbrains/mps/logic/reactor/program/PlanningSession.java rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/Predicate.java (51%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/PredicateSymbol.java (82%) create mode 100644 reactor/API/src/jetbrains/mps/logic/reactor/program/Program.java rename reactor/API/src/jetbrains/mps/logic/reactor/{rule => program}/Rule.java (68%) rename reactor/API/src/jetbrains/mps/logic/reactor/{rule => program}/RuleBuilder.java (79%) rename reactor/API/src/jetbrains/mps/logic/reactor/{constraint => program}/Symbol.java (94%) rename reactor/Core/src/jetbrains/mps/logic/reactor/core/{ReactorEvaluationSession.kt => MemEvaluationSession.kt} (75%) rename reactor/Core/src/jetbrains/mps/logic/reactor/core/{ReactorPlanningSession.kt => MemProgram.kt} (77%) rename reactor/Core/src/jetbrains/mps/logic/reactor/predicate/{ReactorSessionSolver.kt => MemSessionSolver.kt} (63%) rename reactor/Test/test/{TestPlanningSession.kt => TestProgramBuilder.kt} (56%) 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 solverClass(PredicateSymbol predicateSymbol); - - public abstract Iterable rules(); - - public abstract void addRule(Rule rule) throws InvalidRuleException; - - public abstract void addRules(Collection 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 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) } } }