diff --git a/alisa/org.osate.alisa.common/pom.xml b/alisa/org.osate.alisa.common/pom.xml
index af12b60bcf1..24551700196 100644
--- a/alisa/org.osate.alisa.common/pom.xml
+++ b/alisa/org.osate.alisa.common/pom.xml
@@ -15,14 +15,4 @@
3.2.3-SNAPSHOT
eclipse-plugin
-
-
-
- org.eclipse.xtext
- xtext-maven-plugin
-
-
-
-
-
diff --git a/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/.gitignore b/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/.gitignore
index ee7b95a5837..dbab62dbdc5 100644
--- a/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/.gitignore
+++ b/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/.gitignore
@@ -1,4 +1,2 @@
-/CommonTypeSystem.java
/.CommonTypeSystem.java._trace
-/CommonInterpreter.java
/.CommonInterpreter.java._trace
diff --git a/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/CommonInterpreter.java b/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/CommonInterpreter.java
new file mode 100644
index 00000000000..3f156e9030c
--- /dev/null
+++ b/alisa/org.osate.alisa.common/xsemantics-gen/org/osate/alisa/common/typing/CommonInterpreter.java
@@ -0,0 +1,2090 @@
+package org.osate.alisa.common.typing;
+
+import com.google.inject.Provider;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Objects;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.xsemantics.runtime.ErrorInformation;
+import org.eclipse.xsemantics.runtime.Result;
+import org.eclipse.xsemantics.runtime.RuleApplicationTrace;
+import org.eclipse.xsemantics.runtime.RuleEnvironment;
+import org.eclipse.xsemantics.runtime.RuleFailedException;
+import org.eclipse.xsemantics.runtime.XsemanticsRuntimeSystem;
+import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
+import org.eclipse.xtext.util.PolymorphicDispatcher;
+import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.eclipse.xtext.xbase.lib.Functions.Function1;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.ListExtensions;
+import org.osate.aadl2.Aadl2Factory;
+import org.osate.aadl2.AadlInteger;
+import org.osate.aadl2.AbstractNamedValue;
+import org.osate.aadl2.BasicPropertyAssociation;
+import org.osate.aadl2.BooleanLiteral;
+import org.osate.aadl2.IntegerLiteral;
+import org.osate.aadl2.NamedElement;
+import org.osate.aadl2.NumberType;
+import org.osate.aadl2.NumberValue;
+import org.osate.aadl2.Property;
+import org.osate.aadl2.PropertyConstant;
+import org.osate.aadl2.PropertyExpression;
+import org.osate.aadl2.PropertyValue;
+import org.osate.aadl2.RangeValue;
+import org.osate.aadl2.RealLiteral;
+import org.osate.aadl2.RecordValue;
+import org.osate.aadl2.StringLiteral;
+import org.osate.aadl2.UnitsType;
+import org.osate.aadl2.instance.InstanceFactory;
+import org.osate.aadl2.instance.InstanceObject;
+import org.osate.aadl2.instance.InstanceReferenceValue;
+import org.osate.alisa.common.common.ABinaryOperation;
+import org.osate.alisa.common.common.AConditional;
+import org.osate.alisa.common.common.AFunctionCall;
+import org.osate.alisa.common.common.AModelReference;
+import org.osate.alisa.common.common.APropertyReference;
+import org.osate.alisa.common.common.ARange;
+import org.osate.alisa.common.common.AUnaryOperation;
+import org.osate.alisa.common.common.AUnitExpression;
+import org.osate.alisa.common.common.AVariableDeclaration;
+import org.osate.alisa.common.common.AVariableReference;
+import org.osate.alisa.common.common.ComputeDeclaration;
+import org.osate.alisa.common.common.Operation;
+import org.osate.alisa.common.common.ValDeclaration;
+
+@SuppressWarnings("all")
+public class CommonInterpreter extends XsemanticsRuntimeSystem {
+ public static final String COMBINENUMERIC = "org.osate.alisa.common.typing.CombineNumeric";
+
+ public static final String CHOOSEROOT = "org.osate.alisa.common.typing.ChooseRoot";
+
+ public static final String ERRORPOSITION = "org.osate.alisa.common.typing.ErrorPosition";
+
+ public static final String INTERPRETBINARYEXPRESSION = "org.osate.alisa.common.typing.InterpretBinaryExpression";
+
+ public static final String INTERPRETFUNCTIONCALL = "org.osate.alisa.common.typing.InterpretFunctionCall";
+
+ public static final String INTERPRETUNARYEXPRESSION = "org.osate.alisa.common.typing.InterpretUnaryExpression";
+
+ public static final String INTERPRETUNITEXPRESSION = "org.osate.alisa.common.typing.InterpretUnitExpression";
+
+ public static final String INTERPRETVAL = "org.osate.alisa.common.typing.InterpretVal";
+
+ public static final String INTERPRETCOMPUTE = "org.osate.alisa.common.typing.InterpretCompute";
+
+ public static final String INTERPRETVARREF = "org.osate.alisa.common.typing.InterpretVarRef";
+
+ public static final String INTERPETITE = "org.osate.alisa.common.typing.InterpetITE";
+
+ public static final String INTERPRETMODELREFERENCE = "org.osate.alisa.common.typing.InterpretModelReference";
+
+ public static final String INTERPRETPROPERTYREFERENCE = "org.osate.alisa.common.typing.InterpretPropertyReference";
+
+ public static final String INTERPRETINTEGERLITERAL = "org.osate.alisa.common.typing.InterpretIntegerLiteral";
+
+ public static final String INTERPRETREALLITERAL = "org.osate.alisa.common.typing.InterpretRealLiteral";
+
+ public static final String INTERPRETSTRINGLITERAL = "org.osate.alisa.common.typing.InterpretStringLiteral";
+
+ public static final String INTERPRETBOOLEANLITERAL = "org.osate.alisa.common.typing.InterpretBooleanLiteral";
+
+ public static final String INTERPRETRANGE = "org.osate.alisa.common.typing.InterpretRange";
+
+ public static final String NOTIMPLEMENTED = "org.osate.alisa.common.typing.NotImplemented";
+
+ public static final String EQUALBOOLEAN = "org.osate.alisa.common.typing.EqualBoolean";
+
+ public static final String EQUALSTRING = "org.osate.alisa.common.typing.EqualString";
+
+ public static final String EQUALNUMBER = "org.osate.alisa.common.typing.EqualNumber";
+
+ public static final String EQUALRANGE = "org.osate.alisa.common.typing.EqualRange";
+
+ public static final String EQUALRECORD = "org.osate.alisa.common.typing.EqualRecord";
+
+ public static final String EQUALMODELELEMENT = "org.osate.alisa.common.typing.EqualModelElement";
+
+ public static final String EQUAL = "org.osate.alisa.common.typing.Equal";
+
+ public static final String COMPARENUMBERS = "org.osate.alisa.common.typing.CompareNumbers";
+
+ public static final String COMPARENUMBERRANGE = "org.osate.alisa.common.typing.CompareNumberRange";
+
+ public static final String COMPARERANGENUMBER = "org.osate.alisa.common.typing.CompareRangeNumber";
+
+ public static final String COMPARERANGES = "org.osate.alisa.common.typing.CompareRanges";
+
+ public static final String COMPARETONUMBER = "org.osate.alisa.common.typing.CompareToNumber";
+
+ private PolymorphicDispatcher combineNumericDispatcher;
+
+ private PolymorphicDispatcher chooseRootDispatcher;
+
+ private PolymorphicDispatcher errorPositionDispatcher;
+
+ private PolymorphicDispatcher> interpretExpressionDispatcher;
+
+ private PolymorphicDispatcher> interpretVariableDispatcher;
+
+ private PolymorphicDispatcher> equalDispatcher;
+
+ private PolymorphicDispatcher> compareDispatcher;
+
+ private PolymorphicDispatcher> cmpNumDispatcher;
+
+ public CommonInterpreter() {
+ init();
+ }
+
+ public void init() {
+ interpretExpressionDispatcher = buildPolymorphicDispatcher1(
+ "interpretExpressionImpl", 3, "|-", "~>");
+ interpretVariableDispatcher = buildPolymorphicDispatcher1(
+ "interpretVariableImpl", 3, "||-", "~>");
+ equalDispatcher = buildPolymorphicDispatcher1(
+ "equalImpl", 4, "|=", ":");
+ compareDispatcher = buildPolymorphicDispatcher1(
+ "compareImpl", 4, "|>", ":");
+ cmpNumDispatcher = buildPolymorphicDispatcher1(
+ "cmpNumImpl", 4, "|>", ":", "~>");
+ combineNumericDispatcher = buildPolymorphicDispatcher(
+ "combineNumericImpl", 3);
+ chooseRootDispatcher = buildPolymorphicDispatcher(
+ "chooseRootImpl", 3);
+ errorPositionDispatcher = buildPolymorphicDispatcher(
+ "errorPositionImpl", 2);
+ }
+
+ public NumberType combineNumeric(final NumberType left, final NumberType right) throws RuleFailedException {
+ return combineNumeric(null, left, right);
+ }
+
+ public NumberType combineNumeric(final RuleApplicationTrace _trace_, final NumberType left, final NumberType right) throws RuleFailedException {
+ try {
+ return combineNumericInternal(_trace_, left, right);
+ } catch (Exception _e_combineNumeric) {
+ throw extractRuleFailedException(_e_combineNumeric);
+ }
+ }
+
+ public NamedElement chooseRoot(final EObject io, final RuleEnvironment G) throws RuleFailedException {
+ return chooseRoot(null, io, G);
+ }
+
+ public NamedElement chooseRoot(final RuleApplicationTrace _trace_, final EObject io, final RuleEnvironment G) throws RuleFailedException {
+ try {
+ return chooseRootInternal(_trace_, io, G);
+ } catch (Exception _e_chooseRoot) {
+ throw extractRuleFailedException(_e_chooseRoot);
+ }
+ }
+
+ public String errorPosition(final EObject o) throws RuleFailedException {
+ return errorPosition(null, o);
+ }
+
+ public String errorPosition(final RuleApplicationTrace _trace_, final EObject o) throws RuleFailedException {
+ try {
+ return errorPositionInternal(_trace_, o);
+ } catch (Exception _e_errorPosition) {
+ throw extractRuleFailedException(_e_errorPosition);
+ }
+ }
+
+ public Result interpretExpression(final PropertyExpression expression) {
+ return interpretExpression(new RuleEnvironment(), null, expression);
+ }
+
+ public Result interpretExpression(final RuleEnvironment _environment_, final PropertyExpression expression) {
+ return interpretExpression(_environment_, null, expression);
+ }
+
+ public Result interpretExpression(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyExpression expression) {
+ try {
+ return interpretExpressionInternal(_environment_, _trace_, expression);
+ } catch (Exception _e_interpretExpression) {
+ return resultForFailure(_e_interpretExpression);
+ }
+ }
+
+ public Result interpretVariable(final AVariableDeclaration decl) {
+ return interpretVariable(new RuleEnvironment(), null, decl);
+ }
+
+ public Result interpretVariable(final RuleEnvironment _environment_, final AVariableDeclaration decl) {
+ return interpretVariable(_environment_, null, decl);
+ }
+
+ public Result interpretVariable(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final AVariableDeclaration decl) {
+ try {
+ return interpretVariableInternal(_environment_, _trace_, decl);
+ } catch (Exception _e_interpretVariable) {
+ return resultForFailure(_e_interpretVariable);
+ }
+ }
+
+ public Result equal(final PropertyValue left, final PropertyValue right) {
+ return equal(new RuleEnvironment(), null, left, right);
+ }
+
+ public Result equal(final RuleEnvironment _environment_, final PropertyValue left, final PropertyValue right) {
+ return equal(_environment_, null, left, right);
+ }
+
+ public Result equal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ return equalInternal(_environment_, _trace_, left, right);
+ } catch (Exception _e_equal) {
+ return resultForFailure(_e_equal);
+ }
+ }
+
+ public Boolean equalSucceeded(final PropertyValue left, final PropertyValue right) {
+ return equalSucceeded(new RuleEnvironment(), null, left, right);
+ }
+
+ public Boolean equalSucceeded(final RuleEnvironment _environment_, final PropertyValue left, final PropertyValue right) {
+ return equalSucceeded(_environment_, null, left, right);
+ }
+
+ public Boolean equalSucceeded(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ equalInternal(_environment_, _trace_, left, right);
+ return true;
+ } catch (Exception _e_equal) {
+ return false;
+ }
+ }
+
+ public Result compare(final PropertyValue left, final PropertyValue right) {
+ return compare(new RuleEnvironment(), null, left, right);
+ }
+
+ public Result compare(final RuleEnvironment _environment_, final PropertyValue left, final PropertyValue right) {
+ return compare(_environment_, null, left, right);
+ }
+
+ public Result compare(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ return compareInternal(_environment_, _trace_, left, right);
+ } catch (Exception _e_compare) {
+ return resultForFailure(_e_compare);
+ }
+ }
+
+ public Boolean compareSucceeded(final PropertyValue left, final PropertyValue right) {
+ return compareSucceeded(new RuleEnvironment(), null, left, right);
+ }
+
+ public Boolean compareSucceeded(final RuleEnvironment _environment_, final PropertyValue left, final PropertyValue right) {
+ return compareSucceeded(_environment_, null, left, right);
+ }
+
+ public Boolean compareSucceeded(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ compareInternal(_environment_, _trace_, left, right);
+ return true;
+ } catch (Exception _e_compare) {
+ return false;
+ }
+ }
+
+ public Result cmpNum(final PropertyValue left, final PropertyValue right) {
+ return cmpNum(new RuleEnvironment(), null, left, right);
+ }
+
+ public Result cmpNum(final RuleEnvironment _environment_, final PropertyValue left, final PropertyValue right) {
+ return cmpNum(_environment_, null, left, right);
+ }
+
+ public Result cmpNum(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ return cmpNumInternal(_environment_, _trace_, left, right);
+ } catch (Exception _e_cmpNum) {
+ return resultForFailure(_e_cmpNum);
+ }
+ }
+
+ protected NumberType combineNumericInternal(final RuleApplicationTrace _trace_, final NumberType left, final NumberType right) {
+ try {
+ checkParamsNotNull(left, right);
+ return combineNumericDispatcher.invoke(_trace_, left, right);
+ } catch (Exception _e_combineNumeric) {
+ sneakyThrowRuleFailedException(_e_combineNumeric);
+ return null;
+ }
+ }
+
+ protected void combineNumericThrowException(final String _error, final String _issue, final Exception _ex, final NumberType left, final NumberType right, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected NamedElement chooseRootInternal(final RuleApplicationTrace _trace_, final EObject io, final RuleEnvironment G) {
+ try {
+ checkParamsNotNull(io, G);
+ return chooseRootDispatcher.invoke(_trace_, io, G);
+ } catch (Exception _e_chooseRoot) {
+ sneakyThrowRuleFailedException(_e_chooseRoot);
+ return null;
+ }
+ }
+
+ protected void chooseRootThrowException(final String _error, final String _issue, final Exception _ex, final EObject io, final RuleEnvironment G, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected String errorPositionInternal(final RuleApplicationTrace _trace_, final EObject o) {
+ try {
+ checkParamsNotNull(o);
+ return errorPositionDispatcher.invoke(_trace_, o);
+ } catch (Exception _e_errorPosition) {
+ sneakyThrowRuleFailedException(_e_errorPosition);
+ return null;
+ }
+ }
+
+ protected void errorPositionThrowException(final String _error, final String _issue, final Exception _ex, final EObject o, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected Result interpretExpressionInternal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyExpression expression) {
+ try {
+ checkParamsNotNull(expression);
+ return interpretExpressionDispatcher.invoke(_environment_, _trace_, expression);
+ } catch (Exception _e_interpretExpression) {
+ sneakyThrowRuleFailedException(_e_interpretExpression);
+ return null;
+ }
+ }
+
+ protected void interpretExpressionThrowException(final String _error, final String _issue, final Exception _ex, final PropertyExpression expression, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected Result interpretVariableInternal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final AVariableDeclaration decl) {
+ try {
+ checkParamsNotNull(decl);
+ return interpretVariableDispatcher.invoke(_environment_, _trace_, decl);
+ } catch (Exception _e_interpretVariable) {
+ sneakyThrowRuleFailedException(_e_interpretVariable);
+ return null;
+ }
+ }
+
+ protected void interpretVariableThrowException(final String _error, final String _issue, final Exception _ex, final AVariableDeclaration decl, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected Result equalInternal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ checkParamsNotNull(left, right);
+ return equalDispatcher.invoke(_environment_, _trace_, left, right);
+ } catch (Exception _e_equal) {
+ sneakyThrowRuleFailedException(_e_equal);
+ return null;
+ }
+ }
+
+ protected void equalThrowException(final String _error, final String _issue, final Exception _ex, final PropertyValue left, final PropertyValue right, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected Result compareInternal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ checkParamsNotNull(left, right);
+ return compareDispatcher.invoke(_environment_, _trace_, left, right);
+ } catch (Exception _e_compare) {
+ sneakyThrowRuleFailedException(_e_compare);
+ return null;
+ }
+ }
+
+ protected void compareThrowException(final String _error, final String _issue, final Exception _ex, final PropertyValue left, final PropertyValue right, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected Result cmpNumInternal(final RuleEnvironment _environment_, final RuleApplicationTrace _trace_, final PropertyValue left, final PropertyValue right) {
+ try {
+ checkParamsNotNull(left, right);
+ return cmpNumDispatcher.invoke(_environment_, _trace_, left, right);
+ } catch (Exception _e_cmpNum) {
+ sneakyThrowRuleFailedException(_e_cmpNum);
+ return null;
+ }
+ }
+
+ protected void cmpNumThrowException(final String _error, final String _issue, final Exception _ex, final PropertyValue left, final PropertyValue right, final ErrorInformation[] _errorInformations) throws RuleFailedException {
+ throwRuleFailedException(_error, _issue, _ex, _errorInformations);
+ }
+
+ protected NumberType combineNumericImpl(final RuleApplicationTrace _trace_, final NumberType left, final NumberType right) throws RuleFailedException {
+ try {
+ final RuleApplicationTrace _subtrace_ = newTrace(_trace_);
+ final NumberType _result_ = applyAuxFunCombineNumeric(_subtrace_, left, right);
+ addToTrace(_trace_, new Provider