aboutsummaryrefslogtreecommitdiffstats
path: root/Framework/hu.bme.mit.inf.dslreasoner.logic.model
diff options
context:
space:
mode:
authorLibravatar Oszkar Semerath <semerath@mit.bme.hu>2019-07-15 17:31:00 +0200
committerLibravatar Oszkar Semerath <semerath@mit.bme.hu>2019-07-15 17:31:00 +0200
commit539618ccaedfe05d5d62971c8fd0578f5ff3d040 (patch)
tree43d07de9773db3bc6ab71021c530b205680315c4 /Framework/hu.bme.mit.inf.dslreasoner.logic.model
parentaggregated partial substitution + builder (diff)
downloadVIATRA-Generator-539618ccaedfe05d5d62971c8fd0578f5ff3d040.tar.gz
VIATRA-Generator-539618ccaedfe05d5d62971c8fd0578f5ff3d040.tar.zst
VIATRA-Generator-539618ccaedfe05d5d62971c8fd0578f5ff3d040.zip
parsing count, min, max, check and eval v1
Diffstat (limited to 'Framework/hu.bme.mit.inf.dslreasoner.logic.model')
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java23
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java75
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java63
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java12
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird34
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore1
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel1
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend40
8 files changed, 232 insertions, 17 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
index 4b38becf..589145c3 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/AggregateExpression.java
@@ -16,6 +16,7 @@ import org.eclipse.emf.common.util.EList;
16 * <ul> 16 * <ul>
17 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getRelation <em>Relation</em>}</li> 17 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getRelation <em>Relation</em>}</li>
18 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getParameterSubstitution <em>Parameter Substitution</em>}</li> 18 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getParameterSubstitution <em>Parameter Substitution</em>}</li>
19 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}</li>
19 * </ul> 20 * </ul>
20 * 21 *
21 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression() 22 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression()
@@ -61,4 +62,26 @@ public interface AggregateExpression extends Term {
61 */ 62 */
62 EList<AggregatedParameterSubstitution> getParameterSubstitution(); 63 EList<AggregatedParameterSubstitution> getParameterSubstitution();
63 64
65 /**
66 * Returns the value of the '<em><b>Result Variable</b></em>' reference.
67 * <!-- begin-user-doc -->
68 * <!-- end-user-doc -->
69 * @return the value of the '<em>Result Variable</em>' reference.
70 * @see #setResultVariable(Variable)
71 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getAggregateExpression_ResultVariable()
72 * @model
73 * @generated
74 */
75 Variable getResultVariable();
76
77 /**
78 * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}' reference.
79 * <!-- begin-user-doc -->
80 * <!-- end-user-doc -->
81 * @param value the new value of the '<em>Result Variable</em>' reference.
82 * @see #getResultVariable()
83 * @generated
84 */
85 void setResultVariable(Variable value);
86
64} // AggregateExpression 87} // AggregateExpression
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
index f5347e31..193d9bdd 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/LogiclanguagePackage.java
@@ -2760,13 +2760,22 @@ public interface LogiclanguagePackage extends EPackage {
2760 int AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = TERM_FEATURE_COUNT + 1; 2760 int AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = TERM_FEATURE_COUNT + 1;
2761 2761
2762 /** 2762 /**
2763 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2764 * <!-- begin-user-doc -->
2765 * <!-- end-user-doc -->
2766 * @generated
2767 * @ordered
2768 */
2769 int AGGREGATE_EXPRESSION__RESULT_VARIABLE = TERM_FEATURE_COUNT + 2;
2770
2771 /**
2763 * The number of structural features of the '<em>Aggregate Expression</em>' class. 2772 * The number of structural features of the '<em>Aggregate Expression</em>' class.
2764 * <!-- begin-user-doc --> 2773 * <!-- begin-user-doc -->
2765 * <!-- end-user-doc --> 2774 * <!-- end-user-doc -->
2766 * @generated 2775 * @generated
2767 * @ordered 2776 * @ordered
2768 */ 2777 */
2769 int AGGREGATE_EXPRESSION_FEATURE_COUNT = TERM_FEATURE_COUNT + 2; 2778 int AGGREGATE_EXPRESSION_FEATURE_COUNT = TERM_FEATURE_COUNT + 3;
2770 2779
2771 /** 2780 /**
2772 * The number of operations of the '<em>Aggregate Expression</em>' class. 2781 * The number of operations of the '<em>Aggregate Expression</em>' class.
@@ -2806,6 +2815,15 @@ public interface LogiclanguagePackage extends EPackage {
2806 int PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION; 2815 int PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2807 2816
2808 /** 2817 /**
2818 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2819 * <!-- begin-user-doc -->
2820 * <!-- end-user-doc -->
2821 * @generated
2822 * @ordered
2823 */
2824 int PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE = AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2825
2826 /**
2809 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 2827 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2810 * <!-- begin-user-doc --> 2828 * <!-- begin-user-doc -->
2811 * <!-- end-user-doc --> 2829 * <!-- end-user-doc -->
@@ -2861,6 +2879,15 @@ public interface LogiclanguagePackage extends EPackage {
2861 int SUM__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION; 2879 int SUM__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2862 2880
2863 /** 2881 /**
2882 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2883 * <!-- begin-user-doc -->
2884 * <!-- end-user-doc -->
2885 * @generated
2886 * @ordered
2887 */
2888 int SUM__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2889
2890 /**
2864 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 2891 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2865 * <!-- begin-user-doc --> 2892 * <!-- begin-user-doc -->
2866 * <!-- end-user-doc --> 2893 * <!-- end-user-doc -->
@@ -2916,6 +2943,15 @@ public interface LogiclanguagePackage extends EPackage {
2916 int COUNT__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION; 2943 int COUNT__PARAMETER_SUBSTITUTION = AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2917 2944
2918 /** 2945 /**
2946 * The feature id for the '<em><b>Result Variable</b></em>' reference.
2947 * <!-- begin-user-doc -->
2948 * <!-- end-user-doc -->
2949 * @generated
2950 * @ordered
2951 */
2952 int COUNT__RESULT_VARIABLE = AGGREGATE_EXPRESSION__RESULT_VARIABLE;
2953
2954 /**
2919 * The number of structural features of the '<em>Count</em>' class. 2955 * The number of structural features of the '<em>Count</em>' class.
2920 * <!-- begin-user-doc --> 2956 * <!-- begin-user-doc -->
2921 * <!-- end-user-doc --> 2957 * <!-- end-user-doc -->
@@ -2962,6 +2998,15 @@ public interface LogiclanguagePackage extends EPackage {
2962 int MIN__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION; 2998 int MIN__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
2963 2999
2964 /** 3000 /**
3001 * The feature id for the '<em><b>Result Variable</b></em>' reference.
3002 * <!-- begin-user-doc -->
3003 * <!-- end-user-doc -->
3004 * @generated
3005 * @ordered
3006 */
3007 int MIN__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
3008
3009 /**
2965 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 3010 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
2966 * <!-- begin-user-doc --> 3011 * <!-- begin-user-doc -->
2967 * <!-- end-user-doc --> 3012 * <!-- end-user-doc -->
@@ -3017,6 +3062,15 @@ public interface LogiclanguagePackage extends EPackage {
3017 int MAX__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION; 3062 int MAX__PARAMETER_SUBSTITUTION = PROJECTED_AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION;
3018 3063
3019 /** 3064 /**
3065 * The feature id for the '<em><b>Result Variable</b></em>' reference.
3066 * <!-- begin-user-doc -->
3067 * <!-- end-user-doc -->
3068 * @generated
3069 * @ordered
3070 */
3071 int MAX__RESULT_VARIABLE = PROJECTED_AGGREGATE_EXPRESSION__RESULT_VARIABLE;
3072
3073 /**
3020 * The feature id for the '<em><b>Projection Index</b></em>' attribute. 3074 * The feature id for the '<em><b>Projection Index</b></em>' attribute.
3021 * <!-- begin-user-doc --> 3075 * <!-- begin-user-doc -->
3022 * <!-- end-user-doc --> 3076 * <!-- end-user-doc -->
@@ -4409,6 +4463,17 @@ public interface LogiclanguagePackage extends EPackage {
4409 EReference getAggregateExpression_ParameterSubstitution(); 4463 EReference getAggregateExpression_ParameterSubstitution();
4410 4464
4411 /** 4465 /**
4466 * Returns the meta object for the reference '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable <em>Result Variable</em>}'.
4467 * <!-- begin-user-doc -->
4468 * <!-- end-user-doc -->
4469 * @return the meta object for the reference '<em>Result Variable</em>'.
4470 * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregateExpression#getResultVariable()
4471 * @see #getAggregateExpression()
4472 * @generated
4473 */
4474 EReference getAggregateExpression_ResultVariable();
4475
4476 /**
4412 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Sum <em>Sum</em>}'. 4477 * Returns the meta object for class '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Sum <em>Sum</em>}'.
4413 * <!-- begin-user-doc --> 4478 * <!-- begin-user-doc -->
4414 * <!-- end-user-doc --> 4479 * <!-- end-user-doc -->
@@ -5642,6 +5707,14 @@ public interface LogiclanguagePackage extends EPackage {
5642 EReference AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = eINSTANCE.getAggregateExpression_ParameterSubstitution(); 5707 EReference AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION = eINSTANCE.getAggregateExpression_ParameterSubstitution();
5643 5708
5644 /** 5709 /**
5710 * The meta object literal for the '<em><b>Result Variable</b></em>' reference feature.
5711 * <!-- begin-user-doc -->
5712 * <!-- end-user-doc -->
5713 * @generated
5714 */
5715 EReference AGGREGATE_EXPRESSION__RESULT_VARIABLE = eINSTANCE.getAggregateExpression_ResultVariable();
5716
5717 /**
5645 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.SumImpl <em>Sum</em>}' class. 5718 * The meta object literal for the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.SumImpl <em>Sum</em>}' class.
5646 * <!-- begin-user-doc --> 5719 * <!-- begin-user-doc -->
5647 * <!-- end-user-doc --> 5720 * <!-- end-user-doc -->
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
index 0459af42..31155b84 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/AggregateExpressionImpl.java
@@ -7,6 +7,7 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.AggregatedParameterS
7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage; 7import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage;
8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation; 8import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation;
9 9
10import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Variable;
10import java.util.Collection; 11import java.util.Collection;
11import org.eclipse.emf.common.notify.Notification; 12import org.eclipse.emf.common.notify.Notification;
12 13
@@ -29,6 +30,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
29 * <ul> 30 * <ul>
30 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getRelation <em>Relation</em>}</li> 31 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getRelation <em>Relation</em>}</li>
31 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getParameterSubstitution <em>Parameter Substitution</em>}</li> 32 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getParameterSubstitution <em>Parameter Substitution</em>}</li>
33 * <li>{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl.AggregateExpressionImpl#getResultVariable <em>Result Variable</em>}</li>
32 * </ul> 34 * </ul>
33 * 35 *
34 * @generated 36 * @generated
@@ -55,6 +57,16 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
55 protected EList<AggregatedParameterSubstitution> parameterSubstitution; 57 protected EList<AggregatedParameterSubstitution> parameterSubstitution;
56 58
57 /** 59 /**
60 * The cached value of the '{@link #getResultVariable() <em>Result Variable</em>}' reference.
61 * <!-- begin-user-doc -->
62 * <!-- end-user-doc -->
63 * @see #getResultVariable()
64 * @generated
65 * @ordered
66 */
67 protected Variable resultVariable;
68
69 /**
58 * <!-- begin-user-doc --> 70 * <!-- begin-user-doc -->
59 * <!-- end-user-doc --> 71 * <!-- end-user-doc -->
60 * @generated 72 * @generated
@@ -132,6 +144,46 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
132 * @generated 144 * @generated
133 */ 145 */
134 @Override 146 @Override
147 public Variable getResultVariable() {
148 if (resultVariable != null && resultVariable.eIsProxy()) {
149 InternalEObject oldResultVariable = (InternalEObject)resultVariable;
150 resultVariable = (Variable)eResolveProxy(oldResultVariable);
151 if (resultVariable != oldResultVariable) {
152 if (eNotificationRequired())
153 eNotify(new ENotificationImpl(this, Notification.RESOLVE, LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE, oldResultVariable, resultVariable));
154 }
155 }
156 return resultVariable;
157 }
158
159 /**
160 * <!-- begin-user-doc -->
161 * <!-- end-user-doc -->
162 * @generated
163 */
164 public Variable basicGetResultVariable() {
165 return resultVariable;
166 }
167
168 /**
169 * <!-- begin-user-doc -->
170 * <!-- end-user-doc -->
171 * @generated
172 */
173 @Override
174 public void setResultVariable(Variable newResultVariable) {
175 Variable oldResultVariable = resultVariable;
176 resultVariable = newResultVariable;
177 if (eNotificationRequired())
178 eNotify(new ENotificationImpl(this, Notification.SET, LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE, oldResultVariable, resultVariable));
179 }
180
181 /**
182 * <!-- begin-user-doc -->
183 * <!-- end-user-doc -->
184 * @generated
185 */
186 @Override
135 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) { 187 public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
136 switch (featureID) { 188 switch (featureID) {
137 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION: 189 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
@@ -153,6 +205,9 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
153 return basicGetRelation(); 205 return basicGetRelation();
154 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION: 206 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
155 return getParameterSubstitution(); 207 return getParameterSubstitution();
208 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
209 if (resolve) return getResultVariable();
210 return basicGetResultVariable();
156 } 211 }
157 return super.eGet(featureID, resolve, coreType); 212 return super.eGet(featureID, resolve, coreType);
158 } 213 }
@@ -173,6 +228,9 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
173 getParameterSubstitution().clear(); 228 getParameterSubstitution().clear();
174 getParameterSubstitution().addAll((Collection<? extends AggregatedParameterSubstitution>)newValue); 229 getParameterSubstitution().addAll((Collection<? extends AggregatedParameterSubstitution>)newValue);
175 return; 230 return;
231 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
232 setResultVariable((Variable)newValue);
233 return;
176 } 234 }
177 super.eSet(featureID, newValue); 235 super.eSet(featureID, newValue);
178 } 236 }
@@ -191,6 +249,9 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
191 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION: 249 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
192 getParameterSubstitution().clear(); 250 getParameterSubstitution().clear();
193 return; 251 return;
252 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
253 setResultVariable((Variable)null);
254 return;
194 } 255 }
195 super.eUnset(featureID); 256 super.eUnset(featureID);
196 } 257 }
@@ -207,6 +268,8 @@ public abstract class AggregateExpressionImpl extends TermImpl implements Aggreg
207 return relation != null; 268 return relation != null;
208 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION: 269 case LogiclanguagePackage.AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION:
209 return parameterSubstitution != null && !parameterSubstitution.isEmpty(); 270 return parameterSubstitution != null && !parameterSubstitution.isEmpty();
271 case LogiclanguagePackage.AGGREGATE_EXPRESSION__RESULT_VARIABLE:
272 return resultVariable != null;
210 } 273 }
211 return super.eIsSet(featureID); 274 return super.eIsSet(featureID);
212 } 275 }
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
index 64ebdde1..03a679e4 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java
@@ -1892,6 +1892,16 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
1892 * @generated 1892 * @generated
1893 */ 1893 */
1894 @Override 1894 @Override
1895 public EReference getAggregateExpression_ResultVariable() {
1896 return (EReference)aggregateExpressionEClass.getEStructuralFeatures().get(2);
1897 }
1898
1899 /**
1900 * <!-- begin-user-doc -->
1901 * <!-- end-user-doc -->
1902 * @generated
1903 */
1904 @Override
1895 public EClass getSum() { 1905 public EClass getSum() {
1896 return sumEClass; 1906 return sumEClass;
1897 } 1907 }
@@ -2180,6 +2190,7 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2180 aggregateExpressionEClass = createEClass(AGGREGATE_EXPRESSION); 2190 aggregateExpressionEClass = createEClass(AGGREGATE_EXPRESSION);
2181 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RELATION); 2191 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RELATION);
2182 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION); 2192 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__PARAMETER_SUBSTITUTION);
2193 createEReference(aggregateExpressionEClass, AGGREGATE_EXPRESSION__RESULT_VARIABLE);
2183 2194
2184 sumEClass = createEClass(SUM); 2195 sumEClass = createEClass(SUM);
2185 2196
@@ -2476,6 +2487,7 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu
2476 initEClass(aggregateExpressionEClass, AggregateExpression.class, "AggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 2487 initEClass(aggregateExpressionEClass, AggregateExpression.class, "AggregateExpression", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2477 initEReference(getAggregateExpression_Relation(), this.getRelation(), null, "relation", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 2488 initEReference(getAggregateExpression_Relation(), this.getRelation(), null, "relation", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2478 initEReference(getAggregateExpression_ParameterSubstitution(), this.getAggregatedParameterSubstitution(), null, "parameterSubstitution", null, 0, -1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 2489 initEReference(getAggregateExpression_ParameterSubstitution(), this.getAggregatedParameterSubstitution(), null, "parameterSubstitution", null, 0, -1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2490 initEReference(getAggregateExpression_ResultVariable(), this.getVariable(), null, "resultVariable", null, 0, 1, AggregateExpression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
2479 2491
2480 initEClass(sumEClass, Sum.class, "Sum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 2492 initEClass(sumEClass, Sum.class, "Sum", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
2481 2493
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
index 0a49e388..e96b4586 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.aird
@@ -9146,6 +9146,22 @@
9146 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoKJfEemXzuA5M0BZIw" id="(0.6082949308755761,1.0)"/> 9146 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoKJfEemXzuA5M0BZIw" id="(0.6082949308755761,1.0)"/>
9147 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoaJfEemXzuA5M0BZIw" id="(1.0,0.3076923076923077)"/> 9147 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__oOVoaJfEemXzuA5M0BZIw" id="(1.0,0.3076923076923077)"/>
9148 </edges> 9148 </edges>
9149 <edges xmi:type="notation:Edge" xmi:id="_QZPVkKJ9EemXzuA5M0BZIw" type="4001" element="_QYZBAKJ9EemXzuA5M0BZIw" source="_rsImoG6WEemSyfDlsGAqLA" target="_l6XSGLdnEeau1vMV3Bsx4w">
9150 <children xmi:type="notation:Node" xmi:id="_QZP8oKJ9EemXzuA5M0BZIw" type="6001">
9151 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZP8oaJ9EemXzuA5M0BZIw" x="-12" y="-10"/>
9152 </children>
9153 <children xmi:type="notation:Node" xmi:id="_QZP8oqJ9EemXzuA5M0BZIw" type="6002">
9154 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZP8o6J9EemXzuA5M0BZIw" x="4" y="10"/>
9155 </children>
9156 <children xmi:type="notation:Node" xmi:id="_QZQjsKJ9EemXzuA5M0BZIw" type="6003">
9157 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QZQjsaJ9EemXzuA5M0BZIw" x="-4" y="10"/>
9158 </children>
9159 <styles xmi:type="notation:ConnectorStyle" xmi:id="_QZPVkaJ9EemXzuA5M0BZIw" routing="Rectilinear"/>
9160 <styles xmi:type="notation:FontStyle" xmi:id="_QZPVkqJ9EemXzuA5M0BZIw" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
9161 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QZPVk6J9EemXzuA5M0BZIw" points="[-36, 0, 206, -76]$[-36, 89, 206, 13]$[-242, 89, 0, 13]"/>
9162 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZQjsqJ9EemXzuA5M0BZIw" id="(0.2706766917293233,1.0)"/>
9163 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZQjs6J9EemXzuA5M0BZIw" id="(1.0,0.6153846153846154)"/>
9164 </edges>
9149 </data> 9165 </data>
9150 </ownedAnnotationEntries> 9166 </ownedAnnotationEntries>
9151 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIGbdnEeau1vMV3Bsx4w" name="Term" tooltipText="" outgoingEdges="_l6ZufbdnEeau1vMV3Bsx4w" incomingEdges="_l6Zt6bdnEeau1vMV3Bsx4w _l6Zt9bdnEeau1vMV3Bsx4w _l6Zt-bdnEeau1vMV3Bsx4w _l6Zt_bdnEeau1vMV3Bsx4w _l6ZuAbdnEeau1vMV3Bsx4w _l6ZuBbdnEeau1vMV3Bsx4w _l6ZuCbdnEeau1vMV3Bsx4w _l6ZuDbdnEeau1vMV3Bsx4w _l6ZuEbdnEeau1vMV3Bsx4w _l6ZuFbdnEeau1vMV3Bsx4w _l6ZuGbdnEeau1vMV3Bsx4w _l6ZuHbdnEeau1vMV3Bsx4w _l6ZuIbdnEeau1vMV3Bsx4w _l6ZuJbdnEeau1vMV3Bsx4w _l6ZuKbdnEeau1vMV3Bsx4w _l6ZuLbdnEeau1vMV3Bsx4w _l6ZuMbdnEeau1vMV3Bsx4w _l6ZuNbdnEeau1vMV3Bsx4w _l6ZuObdnEeau1vMV3Bsx4w _l6ZuPbdnEeau1vMV3Bsx4w _l6ZuQbdnEeau1vMV3Bsx4w _l6ZuRbdnEeau1vMV3Bsx4w _l6ZuhbdnEeau1vMV3Bsx4w _l6ZuibdnEeau1vMV3Bsx4w _l6ZunbdnEeau1vMV3Bsx4w _l6ZuqbdnEeau1vMV3Bsx4w _l6ZuwbdnEeau1vMV3Bsx4w _l6Zu3bdnEeau1vMV3Bsx4w _l6ZvHbdnEeau1vMV3Bsx4w _l6ZvIbdnEeau1vMV3Bsx4w _l6ZvJbdnEeau1vMV3Bsx4w _l6ZvKbdnEeau1vMV3Bsx4w _l6ZvZ7dnEeau1vMV3Bsx4w _kQZhsLd1Eeau1vMV3Bsx4w _BoaVwLqxEeau1vMV3Bsx4w _Vi5psIKgEeeAppuRs-roLg _YRIxkIKgEeeAppuRs-roLg _sGSk0IKlEeeAppuRs-roLg _za0wsm6WEemSyfDlsGAqLA" width="12" height="10"> 9167 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIGbdnEeau1vMV3Bsx4w" name="Term" tooltipText="" outgoingEdges="_l6ZufbdnEeau1vMV3Bsx4w" incomingEdges="_l6Zt6bdnEeau1vMV3Bsx4w _l6Zt9bdnEeau1vMV3Bsx4w _l6Zt-bdnEeau1vMV3Bsx4w _l6Zt_bdnEeau1vMV3Bsx4w _l6ZuAbdnEeau1vMV3Bsx4w _l6ZuBbdnEeau1vMV3Bsx4w _l6ZuCbdnEeau1vMV3Bsx4w _l6ZuDbdnEeau1vMV3Bsx4w _l6ZuEbdnEeau1vMV3Bsx4w _l6ZuFbdnEeau1vMV3Bsx4w _l6ZuGbdnEeau1vMV3Bsx4w _l6ZuHbdnEeau1vMV3Bsx4w _l6ZuIbdnEeau1vMV3Bsx4w _l6ZuJbdnEeau1vMV3Bsx4w _l6ZuKbdnEeau1vMV3Bsx4w _l6ZuLbdnEeau1vMV3Bsx4w _l6ZuMbdnEeau1vMV3Bsx4w _l6ZuNbdnEeau1vMV3Bsx4w _l6ZuObdnEeau1vMV3Bsx4w _l6ZuPbdnEeau1vMV3Bsx4w _l6ZuQbdnEeau1vMV3Bsx4w _l6ZuRbdnEeau1vMV3Bsx4w _l6ZuhbdnEeau1vMV3Bsx4w _l6ZuibdnEeau1vMV3Bsx4w _l6ZunbdnEeau1vMV3Bsx4w _l6ZuqbdnEeau1vMV3Bsx4w _l6ZuwbdnEeau1vMV3Bsx4w _l6Zu3bdnEeau1vMV3Bsx4w _l6ZvHbdnEeau1vMV3Bsx4w _l6ZvIbdnEeau1vMV3Bsx4w _l6ZvJbdnEeau1vMV3Bsx4w _l6ZvKbdnEeau1vMV3Bsx4w _l6ZvZ7dnEeau1vMV3Bsx4w _kQZhsLd1Eeau1vMV3Bsx4w _BoaVwLqxEeau1vMV3Bsx4w _Vi5psIKgEeeAppuRs-roLg _YRIxkIKgEeeAppuRs-roLg _sGSk0IKlEeeAppuRs-roLg _za0wsm6WEemSyfDlsGAqLA" width="12" height="10">
@@ -9240,7 +9256,7 @@
9240 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/> 9256 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
9241 </ownedElements> 9257 </ownedElements>
9242 </ownedDiagramElements> 9258 </ownedDiagramElements>
9243 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIL7dnEeau1vMV3Bsx4w" name="Variable" tooltipText="" outgoingEdges="_JfkfULd8Eeau1vMV3Bsx4w _e1jg0IKgEeeAppuRs-roLg" incomingEdges="_l6Zt8bdnEeau1vMV3Bsx4w __nLz2aJfEemXzuA5M0BZIw" width="12" height="10"> 9259 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_l6ZIL7dnEeau1vMV3Bsx4w" name="Variable" tooltipText="" outgoingEdges="_JfkfULd8Eeau1vMV3Bsx4w _e1jg0IKgEeeAppuRs-roLg" incomingEdges="_l6Zt8bdnEeau1vMV3Bsx4w __nLz2aJfEemXzuA5M0BZIw _QYZBAKJ9EemXzuA5M0BZIw" width="12" height="10">
9244 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/> 9260 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/>
9245 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/> 9261 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//Variable"/>
9246 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 9262 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -10514,7 +10530,7 @@
10514 </ownedStyle> 10530 </ownedStyle>
10515 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> 10531 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
10516 </ownedDiagramElements> 10532 </ownedDiagramElements>
10517 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rrY_wG6WEemSyfDlsGAqLA" name="AggregateExpression" tooltipText="" outgoingEdges="_za0wsm6WEemSyfDlsGAqLA _hJ8ymW6cEemSyfDlsGAqLA _uI5YDKJfEemXzuA5M0BZIw" incomingEdges="_wovb6G6cEemSyfDlsGAqLA _OKfpkm6dEemSyfDlsGAqLA" width="12" height="10"> 10533 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rrY_wG6WEemSyfDlsGAqLA" name="AggregateExpression" tooltipText="" outgoingEdges="_za0wsm6WEemSyfDlsGAqLA _hJ8ymW6cEemSyfDlsGAqLA _uI5YDKJfEemXzuA5M0BZIw _QYZBAKJ9EemXzuA5M0BZIw" incomingEdges="_wovb6G6cEemSyfDlsGAqLA _OKfpkm6dEemSyfDlsGAqLA" width="12" height="10">
10518 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/> 10534 <target xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/>
10519 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/> 10535 <semanticElements xmi:type="ecore:EClass" href="logiclanguage.ecore#//AggregateExpression"/>
10520 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 10536 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -10714,6 +10730,20 @@
10714 </ownedStyle> 10730 </ownedStyle>
10715 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 10731 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
10716 </ownedDiagramElements> 10732 </ownedDiagramElements>
10733 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_QYZBAKJ9EemXzuA5M0BZIw" name="[0..1] resultVariable" sourceNode="_rrY_wG6WEemSyfDlsGAqLA" targetNode="_l6ZIL7dnEeau1vMV3Bsx4w">
10734 <target xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/resultVariable"/>
10735 <semanticElements xmi:type="ecore:EReference" href="logiclanguage.ecore#//AggregateExpression/resultVariable"/>
10736 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_QYZBAaJ9EemXzuA5M0BZIw" routingStyle="manhattan" strokeColor="0,0,0">
10737 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
10738 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_QYZBA6J9EemXzuA5M0BZIw" showIcon="false">
10739 <customFeatures>labelSize</customFeatures>
10740 </centerLabelStyle>
10741 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_QYZBAqJ9EemXzuA5M0BZIw" showIcon="false" labelColor="39,76,114">
10742 <customFeatures>labelSize</customFeatures>
10743 </endLabelStyle>
10744 </ownedStyle>
10745 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
10746 </ownedDiagramElements>
10717 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 10747 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
10718 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_l6Zva7dnEeau1vMV3Bsx4w"/> 10748 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_l6Zva7dnEeau1vMV3Bsx4w"/>
10719 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 10749 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
index fb94b598..a91d4407 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore
@@ -217,6 +217,7 @@
217 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/> 217 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
218 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution" 218 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterSubstitution"
219 upperBound="-1" eType="#//AggregatedParameterSubstitution" containment="true"/> 219 upperBound="-1" eType="#//AggregatedParameterSubstitution" containment="true"/>
220 <eStructuralFeatures xsi:type="ecore:EReference" name="resultVariable" eType="#//Variable"/>
220 </eClassifiers> 221 </eClassifiers>
221 <eClassifiers xsi:type="ecore:EClass" name="Sum" eSuperTypes="#//ProjectedAggregateExpression"/> 222 <eClassifiers xsi:type="ecore:EClass" name="Sum" eSuperTypes="#//ProjectedAggregateExpression"/>
222 <eClassifiers xsi:type="ecore:EClass" name="Count" eSuperTypes="#//AggregateExpression"/> 223 <eClassifiers xsi:type="ecore:EClass" name="Count" eSuperTypes="#//AggregateExpression"/>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
index cb14ae5b..0f35db7c 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.genmodel
@@ -169,6 +169,7 @@
169 <genClasses image="false" ecoreClass="logiclanguage.ecore#//AggregateExpression"> 169 <genClasses image="false" ecoreClass="logiclanguage.ecore#//AggregateExpression">
170 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/relation"/> 170 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/relation"/>
171 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/parameterSubstitution"/> 171 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/parameterSubstitution"/>
172 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference logiclanguage.ecore#//AggregateExpression/resultVariable"/>
172 </genClasses> 173 </genClasses>
173 <genClasses ecoreClass="logiclanguage.ecore#//Sum"/> 174 <genClasses ecoreClass="logiclanguage.ecore#//Sum"/>
174 <genClasses ecoreClass="logiclanguage.ecore#//Count"/> 175 <genClasses ecoreClass="logiclanguage.ecore#//Count"/>
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
index 09bfbb39..a231af3c 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend
@@ -478,6 +478,7 @@ class LogicProblemBuilder{
478 def %(TermDescription left, TermDescription right) { Modulo(left,right) } 478 def %(TermDescription left, TermDescription right) { Modulo(left,right) }
479 def Modulo(TermDescription left, TermDescription right) { createMod => [leftOperand = left.toTerm rightOperand = right.toTerm]} 479 def Modulo(TermDescription left, TermDescription right) { createMod => [leftOperand = left.toTerm rightOperand = right.toTerm]}
480 480
481 def Pow(TermDescription left, TermDescription right) {createPow => [leftOperand = left.toTerm rightOperand = right.toTerm]}
481 def asTerm(boolean value) { createBoolLiteral => [x|x.value = value] } 482 def asTerm(boolean value) { createBoolLiteral => [x|x.value = value] }
482 def asTerm(int value) { createIntLiteral => [x|x.value = value] } 483 def asTerm(int value) { createIntLiteral => [x|x.value = value] }
483 def asTerm(double value) { BigDecimal.valueOf(value).asTerm } 484 def asTerm(double value) { BigDecimal.valueOf(value).asTerm }
@@ -530,27 +531,28 @@ class LogicProblemBuilder{
530 531
531 // AggregatedExpression 532 // AggregatedExpression
532 533
533 private def <T extends AggregateExpression> configureAggregateExpression(T expression, Relation referred, List<Variable> terms) { 534 private def <T extends AggregateExpression> configureAggregateExpression(T expression, Relation referred, List<Variable> terms, Variable target) {
534 if(terms.size != referred.parameters.size) { 535 if(terms.size != referred.parameters.size) {
535 throw new LogicProblemBuilderException( 536 throw new LogicProblemBuilderException(
536 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''') 537 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''')
537 } else { 538 } else {
538 expression.relation = referred 539 expression.relation = referred
540 expression.resultVariable = target
539 for(var i=0; i<referred.parameters.size;i++) { 541 for(var i=0; i<referred.parameters.size;i++) {
540 val target = terms.get(i) 542 val targetRelation = terms.get(i)
541 val substitution = createAggregatedParameterSubstitution => [it.variable = target] 543 val substitution = createAggregatedParameterSubstitution => [it.variable = targetRelation]
542 expression.parameterSubstitution += substitution 544 expression.parameterSubstitution += substitution
543 } 545 }
544 return expression 546 return expression
545 } 547 }
546 } 548 }
547 private def <T extends ProjectedAggregateExpression> configureProjectedAggregateExpression(T expression, Relation referred, List<Variable> terms, int projection) { 549 private def <T extends ProjectedAggregateExpression> configureProjectedAggregateExpression(T expression, Relation referred, List<Variable> terms, Variable target, int projection) {
548 if(projection < 0 || projection >= referred.parameters.size) { 550 if(projection < 0 || projection >= referred.parameters.size) {
549 throw new LogicProblemBuilderException( 551 throw new LogicProblemBuilderException(
550 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''') 552 '''The function called has «referred.parameters.size» parameters but it is called with «terms.size»!''')
551 } else { 553 } else {
552 val res = expression.configureAggregateExpression(referred, terms) 554 val res = expression.configureAggregateExpression(referred, terms,target)
553 if(res.parameterSubstitution.get(projection) !== null) { 555 if(res.parameterSubstitution.get(projection).variable !== null) {
554 throw new LogicProblemBuilderException( 556 throw new LogicProblemBuilderException(
555 '''Projection over set variable!''') 557 '''Projection over set variable!''')
556 } 558 }
@@ -564,10 +566,18 @@ class LogicProblemBuilder{
564 } 566 }
565 567
566 } 568 }
567 def Count(Relation referred, List<Variable> terms) { createCount.configureAggregateExpression(referred,terms) } 569 def Count(Relation referred, List<Variable> terms, Variable result) {
568 def Sum(Relation referred, List<Variable> terms, int projection) { createSum.configureProjectedAggregateExpression(referred,terms,projection) } 570 createCount.configureAggregateExpression(referred,terms,result)
569 def Min(Relation referred, List<Variable> terms, int projection) { createMin.configureProjectedAggregateExpression(referred,terms,projection) } 571 }
570 def Max(Relation referred, List<Variable> terms, int projection) { createMax.configureProjectedAggregateExpression(referred,terms,projection) } 572 def Sum(Relation referred, List<Variable> terms, int projection, Variable result) {
573 createSum.configureProjectedAggregateExpression(referred,terms,result,projection)
574 }
575 def Min(Relation referred, List<Variable> terms, int projection, Variable result) {
576 createMin.configureProjectedAggregateExpression(referred,terms,result,projection)
577 }
578 def Max(Relation referred, List<Variable> terms, int projection, Variable result) {
579 createMax.configureProjectedAggregateExpression(referred,terms,result,projection)
580 }
571 581
572 // Function calls 582 // Function calls
573 def call(Function function, TermDescription... substitutions) { 583 def call(Function function, TermDescription... substitutions) {
@@ -592,17 +602,19 @@ class LogicProblemBuilder{
592 def call(Relation relation, TermDescription... substitution) { relation.call(substitution as Iterable<? extends TermDescription>)} 602 def call(Relation relation, TermDescription... substitution) { relation.call(substitution as Iterable<? extends TermDescription>)}
593 def call(Relation relation, Iterable<? extends TermDescription> substitution) { 603 def call(Relation relation, Iterable<? extends TermDescription> substitution) {
594 val relationReference = createSymbolicValue 604 val relationReference = createSymbolicValue
605 if(relation === null) {
606 throw new LogicProblemBuilderException('''Call is referring to null!''')
607 }
595 relationReference.symbolicReference = relation 608 relationReference.symbolicReference = relation
596 //println('''«relation.name»(«substitution.size»->«relation.parameters»)''')
597 for(value : substitution) 609 for(value : substitution)
598 relationReference.parameterSubstitutions += value.toTerm 610 relationReference.parameterSubstitutions += value.toTerm
599 relationReference.checkRelationCall(relation) 611 relationReference.checkRelationCall(relation)
600 return relationReference 612 return relationReference
601 } 613 }
602 def private checkRelationCall(SymbolicValue value, Relation referredRelation) { 614 def private checkRelationCall(SymbolicValue value, Relation referredRelation) {
603// if(value === null || referredRelation === null) { 615 if(value === null || referredRelation === null) {
604// println("gebasz") 616 throw new LogicProblemBuilderException('''Call is referring to null!''')
605// } 617 }
606 if(value.parameterSubstitutions.size != referredRelation.parameters.size) { 618 if(value.parameterSubstitutions.size != referredRelation.parameters.size) {
607 throw new LogicProblemBuilderException( 619 throw new LogicProblemBuilderException(
608 '''The relation "«referredRelation.name»" called has «referredRelation.parameters.size» parameters but it is called with «value.parameterSubstitutions.size»!''') 620 '''The relation "«referredRelation.name»" called has «referredRelation.parameters.size» parameters but it is called with «value.parameterSubstitutions.size»!''')