Procházet zdrojové kódy

integration with most recent contract language

Claudio Gomes před 6 roky
rodič
revize
cabd61e0c8
74 změnil soubory, kde provedl 6992 přidání a 1811 odebrání
  1. 8 0
      HintCO/examples/case_study_contract.contractlang
  2. 13 2
      HintCO/examples/case_study_contract.xmi
  3. 4 9
      HintCO/examples/case_study_double_loop_better.xmi
  4. 2 2
      HintCO/examples/watertanks_ctrl.xmi
  5. 8 0
      HintCO/instances/case_study_contract.contractlang
  6. 13 2
      HintCO/instances/case_study_contract.xmi
  7. 2 2
      HintCO/instances/watertanks_ctrl.xmi
  8. 2 2
      HintCO/src/ua/ansymo/hintco/CandidateSpaceGenerator.xtend
  9. 0 32
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/AssignAction.java
  10. 19 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ClosedInterval.java
  11. 27 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Contract.java
  12. 165 66
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ContractLangFactory.java
  13. 1303 530
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ContractLangPackage.java
  14. 4 4
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Seconds.java
  15. 11 11
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FMUInstance.java
  16. 11 11
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FMUSignal.java
  17. 12 12
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FloatValue.java
  18. 4 4
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Milliseconds.java
  19. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Frequency.java
  20. 33 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Infinity.java
  21. 12 12
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/IntValue.java
  22. 39 39
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Interval.java
  23. 20 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/IntervalBound.java
  24. 19 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Kilometers.java
  25. 19 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/KilometersPerHour.java
  26. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Meters.java
  27. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/MetersPerSecond.java
  28. 1 2
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/NumValue.java
  29. 19 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/OpenInterval.java
  30. 51 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/PowerBondSuggestion.java
  31. 7 7
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Recurrence.java
  32. 54 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAProperty.java
  33. 287 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAPropertyEnum.java
  34. 19 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAUnit.java
  35. 54 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_C.java
  36. 287 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_C_Enum.java
  37. 54 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_E.java
  38. 314 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_E_Enum.java
  39. 54 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_S.java
  40. 287 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_S_Enum.java
  41. 39 39
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/TimeInterval.java
  42. 60 2
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/TimeUnit.java
  43. 0 155
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/AssignActionImpl.java
  44. 41 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ClosedIntervalImpl.java
  45. 58 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractImpl.java
  46. 332 85
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractLangFactoryImpl.java
  47. 653 189
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractLangPackageImpl.java
  48. 6 6
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MillisecondsImpl.java
  49. 23 23
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FMUInstanceImpl.java
  50. 23 23
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FMUSignalImpl.java
  51. 24 24
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FloatValueImpl.java
  52. 6 6
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SecondsImpl.java
  53. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FrequencyImpl.java
  54. 139 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/InfinityImpl.java
  55. 24 24
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntValueImpl.java
  56. 43 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntervalBoundImpl.java
  57. 110 94
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntervalImpl.java
  58. 41 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/KilometersImpl.java
  59. 41 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/KilometersPerHourImpl.java
  60. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MetersImpl.java
  61. 1 1
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MetersPerSecondImpl.java
  62. 1 3
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/NumValueImpl.java
  63. 41 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/OpenIntervalImpl.java
  64. 196 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/PowerBondSuggestionImpl.java
  65. 16 16
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/RecurrenceImpl.java
  66. 180 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARAPropertyImpl.java
  67. 41 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARAUnitImpl.java
  68. 180 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_CImpl.java
  69. 180 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_EImpl.java
  70. 180 0
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_SImpl.java
  71. 97 81
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/TimeIntervalImpl.java
  72. 196 2
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/TimeUnitImpl.java
  73. 341 121
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/util/ContractLangAdapterFactory.java
  74. 436 161
      be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/util/ContractLangSwitch.java

+ 8 - 0
HintCO/examples/case_study_contract.contractlang

@@ -7,6 +7,14 @@ Root ContractSet "example" {
 			}
 			scope Globally
 			pattern Universality:always-the-case-that "ctrl" holds
+		},
+		Contract plant {
+			description "Physical plant"
+			statements {
+				Property "plant" FMUSignal "EMAPlantNoLoad_FixedEuler_1Em6.F_OUT@expseu_" == PowerBondSuggestion with FMUSignal "LoadNSensor_FixedEuler_1Em6.V_OUTPUT@expseu_"
+			}
+			scope Globally
+			pattern Universality:always-the-case-that "plant" holds
 		}
 	}
 }

+ 13 - 2
HintCO/examples/case_study_contract.xmi

@@ -4,13 +4,24 @@
     <contracts xsi:type="contractLang:Contract" name="controller" description="&quot;Software Controller&quot;">
       <statements xsi:type="contractLang:Property" name="&quot;ctrl&quot;">
         <var xsi:type="contractLang:FMUProperty">
-          <fmu signal="&quot;DLoopController_FixedEuler_1Em6&quot;"/>
+          <fmu name="&quot;DLoopController_FixedEuler_1Em6&quot;"/>
         </var>
         <oper xsi:type="contractLang:Equality"/>
-        <expr xsi:type="contractLang:IntValue" val="100000"/>
+        <expr xsi:type="contractLang:IntValue" v="100000"/>
       </statements>
       <scope xsi:type="contractLang:GloballyScope"/>
       <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.0/@statements.0"/>
     </contracts>
+    <contracts xsi:type="contractLang:Contract" name="plant" description="&quot;Physical plant&quot;">
+      <statements xsi:type="contractLang:Property" name="&quot;plant&quot;">
+        <var xsi:type="contractLang:FMUSignal" name="&quot;EMAPlantNoLoad_FixedEuler_1Em6.F_OUT@expseu_&quot;"/>
+        <oper xsi:type="contractLang:Equality"/>
+        <expr xsi:type="contractLang:PowerBondSuggestion">
+          <otherSignal name="&quot;LoadNSensor_FixedEuler_1Em6.V_OUTPUT@expseu_&quot;"/>
+        </expr>
+      </statements>
+      <scope xsi:type="contractLang:GloballyScope"/>
+      <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.1/@statements.0"/>
+    </contracts>
   </contractSet>
 </contractLang:Root>

+ 4 - 9
HintCO/examples/case_study_double_loop_better.xmi

@@ -6,7 +6,7 @@
     xmlns:hintco="ua.ansymo.hintco">
   <candidates
       identifier="Original"
-      stopTime="20.0"
+      stopTime="5.0"
       stepSize="1.0E-5"
       outputStepSize="0.001">
     <cosimunits
@@ -26,17 +26,13 @@
     <cosimunits
         identifier="DLoopController_FixedEuler_1Em6"
         declaration="//@csuDeclarations.1">
-      <adaptation
-          xsi:type="hintco:MultiRateAdaptation"
-          rate="10"/>
       <ports
           xsi:type="hintco:InputPortInstance"
           identifier="VEL_FB@expseu_"
           declaration="//@csuDeclarations.1/@ports.0"
           valueFrom="//@candidates.0/@cosimunits.2/@ports.4">
         <adaptation
-            xsi:type="hintco:ExtrapolationAdaptation"
-            order="1"/>
+            xsi:type="hintco:ExtrapolationAdaptation"/>
       </ports>
       <ports
           xsi:type="hintco:InputPortInstance"
@@ -44,8 +40,7 @@
           declaration="//@csuDeclarations.1/@ports.1"
           valueFrom="//@candidates.0/@cosimunits.3/@ports.1">
         <adaptation
-            xsi:type="hintco:ExtrapolationAdaptation"
-            order="1"/>
+            xsi:type="hintco:ExtrapolationAdaptation"/>
       </ports>
       <ports
           xsi:type="hintco:InputPortInstance"
@@ -73,7 +68,7 @@
           declaration="//@csuDeclarations.2/@ports.0"
           valueFrom="//@candidates.0/@cosimunits.1/@ports.3">
         <adaptation
-            xsi:type="hintco:InterpolationAdaptation"/>
+            xsi:type="hintco:ExtrapolationAdaptation"/>
       </ports>
       <ports
           xsi:type="hintco:InputPortInstance"

+ 2 - 2
HintCO/examples/watertanks_ctrl.xmi

@@ -4,10 +4,10 @@
     <contracts xsi:type="contractLang:Contract" name="controller" description="&quot;Software Controller&quot;">
       <statements xsi:type="contractLang:Property" name="&quot;ctrlRate&quot;">
         <var xsi:type="contractLang:FMUProperty">
-          <fmu signal="&quot;ctrl&quot;"/>
+          <fmu name="&quot;ctrl&quot;"/>
         </var>
         <oper xsi:type="contractLang:Equality"/>
-        <expr xsi:type="contractLang:IntValue" val="100"/>
+        <expr xsi:type="contractLang:IntValue" v="100"/>
       </statements>
       <scope xsi:type="contractLang:GloballyScope"/>
       <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.0/@statements.0"/>

+ 8 - 0
HintCO/instances/case_study_contract.contractlang

@@ -7,6 +7,14 @@ Root ContractSet "example" {
 			}
 			scope Globally
 			pattern Universality:always-the-case-that "ctrl" holds
+		},
+		Contract plant {
+			description "Physical plant"
+			statements {
+				Property "plant" FMUSignal "EMAPlantNoLoad_FixedEuler_1Em6.F_OUT@expseu_" == PowerBondSuggestion with FMUSignal "LoadNSensor_FixedEuler_1Em6.V_OUTPUT@expseu_"
+			}
+			scope Globally
+			pattern Universality:always-the-case-that "plant" holds
 		}
 	}
 }

+ 13 - 2
HintCO/instances/case_study_contract.xmi

@@ -4,13 +4,24 @@
     <contracts xsi:type="contractLang:Contract" name="controller" description="&quot;Software Controller&quot;">
       <statements xsi:type="contractLang:Property" name="&quot;ctrl&quot;">
         <var xsi:type="contractLang:FMUProperty">
-          <fmu signal="&quot;DLoopController_FixedEuler_1Em6&quot;"/>
+          <fmu name="&quot;DLoopController_FixedEuler_1Em6&quot;"/>
         </var>
         <oper xsi:type="contractLang:Equality"/>
-        <expr xsi:type="contractLang:IntValue" val="100000"/>
+        <expr xsi:type="contractLang:IntValue" v="100000"/>
       </statements>
       <scope xsi:type="contractLang:GloballyScope"/>
       <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.0/@statements.0"/>
     </contracts>
+    <contracts xsi:type="contractLang:Contract" name="plant" description="&quot;Physical plant&quot;">
+      <statements xsi:type="contractLang:Property" name="&quot;plant&quot;">
+        <var xsi:type="contractLang:FMUSignal" name="&quot;EMAPlantNoLoad_FixedEuler_1Em6.F_OUT@expseu_&quot;"/>
+        <oper xsi:type="contractLang:Equality"/>
+        <expr xsi:type="contractLang:PowerBondSuggestion">
+          <otherSignal name="&quot;LoadNSensor_FixedEuler_1Em6.V_OUTPUT@expseu_&quot;"/>
+        </expr>
+      </statements>
+      <scope xsi:type="contractLang:GloballyScope"/>
+      <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.1/@statements.0"/>
+    </contracts>
   </contractSet>
 </contractLang:Root>

+ 2 - 2
HintCO/instances/watertanks_ctrl.xmi

@@ -4,10 +4,10 @@
     <contracts xsi:type="contractLang:Contract" name="controller" description="&quot;Software Controller&quot;">
       <statements xsi:type="contractLang:Property" name="&quot;ctrlRate&quot;">
         <var xsi:type="contractLang:FMUProperty">
-          <fmu signal="&quot;ctrl&quot;"/>
+          <fmu name="&quot;ctrl&quot;"/>
         </var>
         <oper xsi:type="contractLang:Equality"/>
-        <expr xsi:type="contractLang:IntValue" val="100"/>
+        <expr xsi:type="contractLang:IntValue" v="100"/>
       </statements>
       <scope xsi:type="contractLang:GloballyScope"/>
       <pattern xsi:type="contractLang:UniversalityPattern" statement="//@contractSet/@contracts.0/@statements.0"/>

+ 2 - 2
HintCO/src/ua/ansymo/hintco/CandidateSpaceGenerator.xtend

@@ -86,11 +86,11 @@ class CandidateSpaceGenerator {
 //		scenario.weight = maxScenarioWeight + 1
 		val scenario = cs.candidates.head
 		
-		val hz = (prop.expr as IntValue).^val
+		val hz = (prop.expr as IntValue).v
 		
 		scenario.stepSize = 1.0/hz
 		
-		val ctrlUnitName = (prop.^var as FMUProperty).fmu.signal.stripQuotes
+		val ctrlUnitName = (prop.^var as FMUProperty).fmu.name.stripQuotes
 		val ctrlUnit = scenario.cosimunits.findFirst[u | u.identifier == ctrlUnitName]
 		Assert.isNotNull(ctrlUnit, "Contracts refers to a non existing unit: " + ctrlUnitName)
 		

+ 0 - 32
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/AssignAction.java

@@ -9,12 +9,6 @@ package be.uantwerpen.cosys.contractLang;
  * A representation of the model object '<em><b>Assign Action</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.AssignAction#getVar <em>Var</em>}</li>
- * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getAssignAction()
  * @model
@@ -22,30 +16,4 @@ package be.uantwerpen.cosys.contractLang;
  */
 public interface AssignAction extends Action
 {
-  /**
-   * Returns the value of the '<em><b>Var</b></em>' containment reference.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Var</em>' containment reference isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Var</em>' containment reference.
-   * @see #setVar(VarOrVarOp)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getAssignAction_Var()
-   * @model containment="true"
-   * @generated
-   */
-  VarOrVarOp getVar();
-
-  /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.AssignAction#getVar <em>Var</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Var</em>' containment reference.
-   * @see #getVar()
-   * @generated
-   */
-  void setVar(VarOrVarOp value);
-
 } // AssignAction

+ 19 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ClosedInterval.java

@@ -0,0 +1,19 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Closed Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getClosedInterval()
+ * @model
+ * @generated
+ */
+public interface ClosedInterval extends IntervalBound
+{
+} // ClosedInterval

+ 27 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Contract.java

@@ -22,6 +22,7 @@ import org.eclipse.emf.ecore.EObject;
  *   <li>{@link be.uantwerpen.cosys.contractLang.Contract#getScope <em>Scope</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.Contract#getPattern <em>Pattern</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.Contract#getAction <em>Action</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.Contract#isDoGenSTL <em>Do Gen STL</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getContract()
@@ -176,4 +177,30 @@ public interface Contract extends EObject
    */
   void setAction(Action value);
 
+  /**
+   * Returns the value of the '<em><b>Do Gen STL</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Do Gen STL</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Do Gen STL</em>' attribute.
+   * @see #setDoGenSTL(boolean)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getContract_DoGenSTL()
+   * @model
+   * @generated
+   */
+  boolean isDoGenSTL();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Contract#isDoGenSTL <em>Do Gen STL</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Do Gen STL</em>' attribute.
+   * @see #isDoGenSTL()
+   * @generated
+   */
+  void setDoGenSTL(boolean value);
+
 } // Contract

+ 165 - 66
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ContractLangFactory.java

@@ -285,13 +285,13 @@ public interface ContractLangFactory extends EFactory
   MaxDurationPattern createMaxDurationPattern();
 
   /**
-   * Returns a new object of class '<em>Recurrence</em>'.
+   * Returns a new object of class '<em>Recurrence Pattern</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Recurrence</em>'.
+   * @return a new object of class '<em>Recurrence Pattern</em>'.
    * @generated
    */
-  Recurrence createRecurrence();
+  RecurrencePattern createRecurrencePattern();
 
   /**
    * Returns a new object of class '<em>Prec Statement</em>'.
@@ -437,24 +437,6 @@ public interface ContractLangFactory extends EFactory
    */
   TimeUnit createTimeUnit();
 
-  /**
-   * Returns a new object of class '<em>Milliseconds</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>Milliseconds</em>'.
-   * @generated
-   */
-  Milliseconds createMilliseconds();
-
-  /**
-   * Returns a new object of class '<em>Seconds</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>Seconds</em>'.
-   * @generated
-   */
-  Seconds createSeconds();
-
   /**
    * Returns a new object of class '<em>Probability</em>'.
    * <!-- begin-user-doc -->
@@ -546,76 +528,94 @@ public interface ContractLangFactory extends EFactory
   NumValue createNumValue();
 
   /**
-   * Returns a new object of class '<em>Unit</em>'.
+   * Returns a new object of class '<em>Infinity</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Unit</em>'.
+   * @return a new object of class '<em>Infinity</em>'.
    * @generated
    */
-  Unit createUnit();
+  Infinity createInfinity();
 
   /**
-   * Returns a new object of class '<em>Derivative</em>'.
+   * Returns a new object of class '<em>Int Value</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Derivative</em>'.
+   * @return a new object of class '<em>Int Value</em>'.
    * @generated
    */
-  Derivative createDerivative();
+  IntValue createIntValue();
 
   /**
-   * Returns a new object of class '<em>Absolute Value</em>'.
+   * Returns a new object of class '<em>Float Value</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Absolute Value</em>'.
+   * @return a new object of class '<em>Float Value</em>'.
    * @generated
    */
-  AbsoluteValue createAbsoluteValue();
+  FloatValue createFloatValue();
 
   /**
-   * Returns a new object of class '<em>Difference</em>'.
+   * Returns a new object of class '<em>Unit</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Difference</em>'.
+   * @return a new object of class '<em>Unit</em>'.
    * @generated
    */
-  Difference createDifference();
+  Unit createUnit();
 
   /**
-   * Returns a new object of class '<em>Average</em>'.
+   * Returns a new object of class '<em>Unitless</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Average</em>'.
+   * @return a new object of class '<em>Unitless</em>'.
    * @generated
    */
-  Average createAverage();
+  Unitless createUnitless();
 
   /**
-   * Returns a new object of class '<em>Infinity</em>'.
+   * Returns a new object of class '<em>Percentage</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Infinity</em>'.
+   * @return a new object of class '<em>Percentage</em>'.
    * @generated
    */
-  Infinity createInfinity();
+  Percentage createPercentage();
 
   /**
-   * Returns a new object of class '<em>Int Value</em>'.
+   * Returns a new object of class '<em>Derivative</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Int Value</em>'.
+   * @return a new object of class '<em>Derivative</em>'.
    * @generated
    */
-  IntValue createIntValue();
+  Derivative createDerivative();
 
   /**
-   * Returns a new object of class '<em>Float Value</em>'.
+   * Returns a new object of class '<em>Absolute Value</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Float Value</em>'.
+   * @return a new object of class '<em>Absolute Value</em>'.
    * @generated
    */
-  FloatValue createFloatValue();
+  AbsoluteValue createAbsoluteValue();
+
+  /**
+   * Returns a new object of class '<em>Difference</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Difference</em>'.
+   * @generated
+   */
+  Difference createDifference();
+
+  /**
+   * Returns a new object of class '<em>Average</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Average</em>'.
+   * @generated
+   */
+  Average createAverage();
 
   /**
    * Returns a new object of class '<em>Equality</em>'.
@@ -699,31 +699,40 @@ public interface ContractLangFactory extends EFactory
   Interval createInterval();
 
   /**
-   * Returns a new object of class '<em>Value With Unit</em>'.
+   * Returns a new object of class '<em>Interval Bound</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Value With Unit</em>'.
+   * @return a new object of class '<em>Interval Bound</em>'.
    * @generated
    */
-  ValueWithUnit createValueWithUnit();
+  IntervalBound createIntervalBound();
 
   /**
-   * Returns a new object of class '<em>Unitless</em>'.
+   * Returns a new object of class '<em>Open Interval</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Unitless</em>'.
+   * @return a new object of class '<em>Open Interval</em>'.
    * @generated
    */
-  Unitless createUnitless();
+  OpenInterval createOpenInterval();
 
   /**
-   * Returns a new object of class '<em>Percentage</em>'.
+   * Returns a new object of class '<em>Closed Interval</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Percentage</em>'.
+   * @return a new object of class '<em>Closed Interval</em>'.
    * @generated
    */
-  Percentage createPercentage();
+  ClosedInterval createClosedInterval();
+
+  /**
+   * Returns a new object of class '<em>Value With Unit</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Value With Unit</em>'.
+   * @generated
+   */
+  ValueWithUnit createValueWithUnit();
 
   /**
    * Returns a new object of class '<em>Assign Action</em>'.
@@ -761,15 +770,6 @@ public interface ContractLangFactory extends EFactory
    */
   Variable createVariable();
 
-  /**
-   * Returns a new object of class '<em>Frequency</em>'.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @return a new object of class '<em>Frequency</em>'.
-   * @generated
-   */
-  Frequency createFrequency();
-
   /**
    * Returns a new object of class '<em>FMU Property</em>'.
    * <!-- begin-user-doc -->
@@ -807,13 +807,76 @@ public interface ContractLangFactory extends EFactory
   SteadyStateSuggestion createSteadyStateSuggestion();
 
   /**
-   * Returns a new object of class '<em>Meters Per Second</em>'.
+   * Returns a new object of class '<em>Power Bond Suggestion</em>'.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @return a new object of class '<em>Meters Per Second</em>'.
+   * @return a new object of class '<em>Power Bond Suggestion</em>'.
    * @generated
    */
-  MetersPerSecond createMetersPerSecond();
+  PowerBondSuggestion createPowerBondSuggestion();
+
+  /**
+   * Returns a new object of class '<em>Cosim Unit</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Cosim Unit</em>'.
+   * @generated
+   */
+  CosimUnit createCosimUnit();
+
+  /**
+   * Returns a new object of class '<em>Frequency</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Frequency</em>'.
+   * @generated
+   */
+  Frequency createFrequency();
+
+  /**
+   * Returns a new object of class '<em>SAHARA Property</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>SAHARA Property</em>'.
+   * @generated
+   */
+  SAHARAProperty createSAHARAProperty();
+
+  /**
+   * Returns a new object of class '<em>SAHARA S</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>SAHARA S</em>'.
+   * @generated
+   */
+  SAHARA_S createSAHARA_S();
+
+  /**
+   * Returns a new object of class '<em>SAHARA E</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>SAHARA E</em>'.
+   * @generated
+   */
+  SAHARA_E createSAHARA_E();
+
+  /**
+   * Returns a new object of class '<em>SAHARA C</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>SAHARA C</em>'.
+   * @generated
+   */
+  SAHARA_C createSAHARA_C();
+
+  /**
+   * Returns a new object of class '<em>SAHARA Unit</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>SAHARA Unit</em>'.
+   * @generated
+   */
+  SAHARAUnit createSAHARAUnit();
 
   /**
    * Returns a new object of class '<em>Meters</em>'.
@@ -824,6 +887,42 @@ public interface ContractLangFactory extends EFactory
    */
   Meters createMeters();
 
+  /**
+   * Returns a new object of class '<em>Meters Per Second</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Meters Per Second</em>'.
+   * @generated
+   */
+  MetersPerSecond createMetersPerSecond();
+
+  /**
+   * Returns a new object of class '<em>Kilometers</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Kilometers</em>'.
+   * @generated
+   */
+  Kilometers createKilometers();
+
+  /**
+   * Returns a new object of class '<em>Kilometers Per Hour</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Kilometers Per Hour</em>'.
+   * @generated
+   */
+  KilometersPerHour createKilometersPerHour();
+
+  /**
+   * Returns a new object of class '<em>Force</em>'.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @return a new object of class '<em>Force</em>'.
+   * @generated
+   */
+  Force createForce();
+
   /**
    * Returns the package supported by this factory.
    * <!-- begin-user-doc -->

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1303 - 530
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/ContractLangPackage.java


+ 4 - 4
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Seconds.java

@@ -6,14 +6,14 @@ package be.uantwerpen.cosys.contractLang;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Seconds</b></em>'.
+ * A representation of the model object '<em><b>Cosim Unit</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSeconds()
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getCosimUnit()
  * @model
  * @generated
  */
-public interface Seconds extends TimeUnit, Unit
+public interface CosimUnit extends Unit
 {
-} // Seconds
+} // CosimUnit

+ 11 - 11
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FMUInstance.java

@@ -14,7 +14,7 @@ import org.eclipse.emf.ecore.EObject;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.FMUInstance#getSignal <em>Signal</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.FMUInstance#getName <em>Name</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUInstance()
@@ -24,29 +24,29 @@ import org.eclipse.emf.ecore.EObject;
 public interface FMUInstance extends EObject
 {
   /**
-   * Returns the value of the '<em><b>Signal</b></em>' attribute.
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Signal</em>' attribute isn't clear,
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Signal</em>' attribute.
-   * @see #setSignal(String)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUInstance_Signal()
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUInstance_Name()
    * @model
    * @generated
    */
-  String getSignal();
+  String getName();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FMUInstance#getSignal <em>Signal</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FMUInstance#getName <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Signal</em>' attribute.
-   * @see #getSignal()
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
    * @generated
    */
-  void setSignal(String value);
+  void setName(String value);
 
 } // FMUInstance

+ 11 - 11
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FMUSignal.java

@@ -13,7 +13,7 @@ package be.uantwerpen.cosys.contractLang;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.FMUSignal#getSignal <em>Signal</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.FMUSignal#getName <em>Name</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUSignal()
@@ -23,29 +23,29 @@ package be.uantwerpen.cosys.contractLang;
 public interface FMUSignal extends Variable
 {
   /**
-   * Returns the value of the '<em><b>Signal</b></em>' attribute.
+   * Returns the value of the '<em><b>Name</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Signal</em>' attribute isn't clear,
+   * If the meaning of the '<em>Name</em>' attribute isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Signal</em>' attribute.
-   * @see #setSignal(String)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUSignal_Signal()
+   * @return the value of the '<em>Name</em>' attribute.
+   * @see #setName(String)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFMUSignal_Name()
    * @model
    * @generated
    */
-  String getSignal();
+  String getName();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FMUSignal#getSignal <em>Signal</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FMUSignal#getName <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Signal</em>' attribute.
-   * @see #getSignal()
+   * @param value the new value of the '<em>Name</em>' attribute.
+   * @see #getName()
    * @generated
    */
-  void setSignal(String value);
+  void setName(String value);
 
 } // FMUSignal

+ 12 - 12
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/FloatValue.java

@@ -13,39 +13,39 @@ package be.uantwerpen.cosys.contractLang;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.FloatValue#getVal <em>Val</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.FloatValue#getV <em>V</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFloatValue()
  * @model
  * @generated
  */
-public interface FloatValue extends Expression, NumValue, Value
+public interface FloatValue extends NumValue
 {
   /**
-   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * Returns the value of the '<em><b>V</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * If the meaning of the '<em>V</em>' attribute isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Val</em>' attribute.
-   * @see #setVal(double)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFloatValue_Val()
+   * @return the value of the '<em>V</em>' attribute.
+   * @see #setV(double)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getFloatValue_V()
    * @model
    * @generated
    */
-  double getVal();
+  double getV();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FloatValue#getVal <em>Val</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.FloatValue#getV <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Val</em>' attribute.
-   * @see #getVal()
+   * @param value the new value of the '<em>V</em>' attribute.
+   * @see #getV()
    * @generated
    */
-  void setVal(double value);
+  void setV(double value);
 
 } // FloatValue

+ 4 - 4
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Milliseconds.java

@@ -6,14 +6,14 @@ package be.uantwerpen.cosys.contractLang;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Milliseconds</b></em>'.
+ * A representation of the model object '<em><b>Force</b></em>'.
  * <!-- end-user-doc -->
  *
  *
- * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getMilliseconds()
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getForce()
  * @model
  * @generated
  */
-public interface Milliseconds extends TimeUnit, Unit
+public interface Force extends SAHARAUnit
 {
-} // Milliseconds
+} // Force

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Frequency.java

@@ -14,6 +14,6 @@ package be.uantwerpen.cosys.contractLang;
  * @model
  * @generated
  */
-public interface Frequency extends Unit
+public interface Frequency extends CosimUnit
 {
 } // Frequency

+ 33 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Infinity.java

@@ -9,11 +9,43 @@ package be.uantwerpen.cosys.contractLang;
  * A representation of the model object '<em><b>Infinity</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.Infinity#getV <em>V</em>}</li>
+ * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInfinity()
  * @model
  * @generated
  */
-public interface Infinity extends Expression, NumValue, Value
+public interface Infinity extends NumValue
 {
+  /**
+   * Returns the value of the '<em><b>V</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>V</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>V</em>' attribute.
+   * @see #setV(String)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInfinity_V()
+   * @model
+   * @generated
+   */
+  String getV();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Infinity#getV <em>V</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>V</em>' attribute.
+   * @see #getV()
+   * @generated
+   */
+  void setV(String value);
+
 } // Infinity

+ 12 - 12
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/IntValue.java

@@ -13,39 +13,39 @@ package be.uantwerpen.cosys.contractLang;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.IntValue#getVal <em>Val</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.IntValue#getV <em>V</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getIntValue()
  * @model
  * @generated
  */
-public interface IntValue extends Expression, NumValue, Value
+public interface IntValue extends NumValue
 {
   /**
-   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * Returns the value of the '<em><b>V</b></em>' attribute.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * If the meaning of the '<em>V</em>' attribute isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Val</em>' attribute.
-   * @see #setVal(int)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getIntValue_Val()
+   * @return the value of the '<em>V</em>' attribute.
+   * @see #setV(int)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getIntValue_V()
    * @model
    * @generated
    */
-  int getVal();
+  int getV();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.IntValue#getVal <em>Val</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.IntValue#getV <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Val</em>' attribute.
-   * @see #getVal()
+   * @param value the new value of the '<em>V</em>' attribute.
+   * @see #getV()
    * @generated
    */
-  void setVal(int value);
+  void setV(int value);
 
 } // IntValue

+ 39 - 39
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Interval.java

@@ -13,11 +13,11 @@ package be.uantwerpen.cosys.contractLang;
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#isClosed_min <em>Closed min</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#isClosed_max <em>Closed max</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#getL_bound <em>Lbound</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#getMin <em>Min</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#getMax <em>Max</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#getUnit <em>Unit</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.Interval#getR_bound <em>Rbound</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInterval()
@@ -27,56 +27,30 @@ package be.uantwerpen.cosys.contractLang;
 public interface Interval extends Expression
 {
   /**
-   * Returns the value of the '<em><b>Closed min</b></em>' attribute.
+   * Returns the value of the '<em><b>Lbound</b></em>' containment reference.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Closed min</em>' attribute isn't clear,
+   * If the meaning of the '<em>Lbound</em>' containment reference isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Closed min</em>' attribute.
-   * @see #setClosed_min(boolean)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInterval_Closed_min()
-   * @model
-   * @generated
-   */
-  boolean isClosed_min();
-
-  /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Interval#isClosed_min <em>Closed min</em>}' attribute.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Closed min</em>' attribute.
-   * @see #isClosed_min()
-   * @generated
-   */
-  void setClosed_min(boolean value);
-
-  /**
-   * Returns the value of the '<em><b>Closed max</b></em>' attribute.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Closed max</em>' attribute isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Closed max</em>' attribute.
-   * @see #setClosed_max(boolean)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInterval_Closed_max()
-   * @model
+   * @return the value of the '<em>Lbound</em>' containment reference.
+   * @see #setL_bound(IntervalBound)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInterval_L_bound()
+   * @model containment="true"
    * @generated
    */
-  boolean isClosed_max();
+  IntervalBound getL_bound();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Interval#isClosed_max <em>Closed max</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Interval#getL_bound <em>Lbound</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Closed max</em>' attribute.
-   * @see #isClosed_max()
+   * @param value the new value of the '<em>Lbound</em>' containment reference.
+   * @see #getL_bound()
    * @generated
    */
-  void setClosed_max(boolean value);
+  void setL_bound(IntervalBound value);
 
   /**
    * Returns the value of the '<em><b>Min</b></em>' containment reference.
@@ -156,4 +130,30 @@ public interface Interval extends Expression
    */
   void setUnit(Unit value);
 
+  /**
+   * Returns the value of the '<em><b>Rbound</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Rbound</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Rbound</em>' containment reference.
+   * @see #setR_bound(IntervalBound)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getInterval_R_bound()
+   * @model containment="true"
+   * @generated
+   */
+  IntervalBound getR_bound();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Interval#getR_bound <em>Rbound</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Rbound</em>' containment reference.
+   * @see #getR_bound()
+   * @generated
+   */
+  void setR_bound(IntervalBound value);
+
 } // Interval

+ 20 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/IntervalBound.java

@@ -0,0 +1,20 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Interval Bound</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getIntervalBound()
+ * @model
+ * @generated
+ */
+public interface IntervalBound extends EObject
+{
+} // IntervalBound

+ 19 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Kilometers.java

@@ -0,0 +1,19 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Kilometers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getKilometers()
+ * @model
+ * @generated
+ */
+public interface Kilometers extends SAHARAUnit
+{
+} // Kilometers

+ 19 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/KilometersPerHour.java

@@ -0,0 +1,19 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Kilometers Per Hour</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getKilometersPerHour()
+ * @model
+ * @generated
+ */
+public interface KilometersPerHour extends SAHARAUnit
+{
+} // KilometersPerHour

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Meters.java

@@ -14,6 +14,6 @@ package be.uantwerpen.cosys.contractLang;
  * @model
  * @generated
  */
-public interface Meters extends Unit
+public interface Meters extends SAHARAUnit
 {
 } // Meters

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/MetersPerSecond.java

@@ -14,6 +14,6 @@ package be.uantwerpen.cosys.contractLang;
  * @model
  * @generated
  */
-public interface MetersPerSecond extends Unit
+public interface MetersPerSecond extends SAHARAUnit
 {
 } // MetersPerSecond

+ 1 - 2
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/NumValue.java

@@ -3,7 +3,6 @@
  */
 package be.uantwerpen.cosys.contractLang;
 
-import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
@@ -15,6 +14,6 @@ import org.eclipse.emf.ecore.EObject;
  * @model
  * @generated
  */
-public interface NumValue extends EObject
+public interface NumValue extends Expression, Value
 {
 } // NumValue

+ 19 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/OpenInterval.java

@@ -0,0 +1,19 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Open Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getOpenInterval()
+ * @model
+ * @generated
+ */
+public interface OpenInterval extends IntervalBound
+{
+} // OpenInterval

+ 51 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/PowerBondSuggestion.java

@@ -0,0 +1,51 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Power Bond Suggestion</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.PowerBondSuggestion#getOtherSignal <em>Other Signal</em>}</li>
+ * </ul>
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getPowerBondSuggestion()
+ * @model
+ * @generated
+ */
+public interface PowerBondSuggestion extends DomainValue
+{
+  /**
+   * Returns the value of the '<em><b>Other Signal</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Other Signal</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Other Signal</em>' containment reference.
+   * @see #setOtherSignal(FMUSignal)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getPowerBondSuggestion_OtherSignal()
+   * @model containment="true"
+   * @generated
+   */
+  FMUSignal getOtherSignal();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.PowerBondSuggestion#getOtherSignal <em>Other Signal</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Other Signal</em>' containment reference.
+   * @see #getOtherSignal()
+   * @generated
+   */
+  void setOtherSignal(FMUSignal value);
+
+} // PowerBondSuggestion

+ 7 - 7
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/Recurrence.java

@@ -6,21 +6,21 @@ package be.uantwerpen.cosys.contractLang;
 
 /**
  * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Recurrence</b></em>'.
+ * A representation of the model object '<em><b>Recurrence Pattern</b></em>'.
  * <!-- end-user-doc -->
  *
  * <p>
  * The following features are supported:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.Recurrence#getTime <em>Time</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.RecurrencePattern#getTime <em>Time</em>}</li>
  * </ul>
  *
- * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getRecurrence()
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getRecurrencePattern()
  * @model
  * @generated
  */
-public interface Recurrence extends Occurrence
+public interface RecurrencePattern extends Occurrence
 {
   /**
    * Returns the value of the '<em><b>Time</b></em>' containment reference.
@@ -32,14 +32,14 @@ public interface Recurrence extends Occurrence
    * <!-- end-user-doc -->
    * @return the value of the '<em>Time</em>' containment reference.
    * @see #setTime(SingleTime)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getRecurrence_Time()
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getRecurrencePattern_Time()
    * @model containment="true"
    * @generated
    */
   SingleTime getTime();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.Recurrence#getTime <em>Time</em>}' containment reference.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.RecurrencePattern#getTime <em>Time</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @param value the new value of the '<em>Time</em>' containment reference.
@@ -48,4 +48,4 @@ public interface Recurrence extends Occurrence
    */
   void setTime(SingleTime value);
 
-} // Recurrence
+} // RecurrencePattern

+ 54 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAProperty.java

@@ -0,0 +1,54 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAHARA Property</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.SAHARAProperty#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARAProperty()
+ * @model
+ * @generated
+ */
+public interface SAHARAProperty extends Variable
+{
+  /**
+   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * The literals are from the enumeration {@link be.uantwerpen.cosys.contractLang.SAHARAPropertyEnum}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARAPropertyEnum
+   * @see #setVal(SAHARAPropertyEnum)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARAProperty_Val()
+   * @model
+   * @generated
+   */
+  SAHARAPropertyEnum getVal();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.SAHARAProperty#getVal <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARAPropertyEnum
+   * @see #getVal()
+   * @generated
+   */
+  void setVal(SAHARAPropertyEnum value);
+
+} // SAHARAProperty

+ 287 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAPropertyEnum.java

@@ -0,0 +1,287 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>SAHARA Property Enum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARAPropertyEnum()
+ * @model
+ * @generated
+ */
+public enum SAHARAPropertyEnum implements Enumerator
+{
+  /**
+   * The '<em><b>Accel</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #ACCEL_VALUE
+   * @generated
+   * @ordered
+   */
+  ACCEL(0, "accel", "accel"),
+
+  /**
+   * The '<em><b>Speed</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #SPEED_VALUE
+   * @generated
+   * @ordered
+   */
+  SPEED(1, "speed", "speed"),
+
+  /**
+   * The '<em><b>Friction force</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #FRICTION_FORCE_VALUE
+   * @generated
+   * @ordered
+   */
+  FRICTION_FORCE(2, "friction_force", "friction_force"),
+
+  /**
+   * The '<em><b>Lateral force</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #LATERAL_FORCE_VALUE
+   * @generated
+   * @ordered
+   */
+  LATERAL_FORCE(3, "lateral_force", "lateral_force");
+
+  /**
+   * The '<em><b>Accel</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Accel</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #ACCEL
+   * @model name="accel"
+   * @generated
+   * @ordered
+   */
+  public static final int ACCEL_VALUE = 0;
+
+  /**
+   * The '<em><b>Speed</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Speed</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #SPEED
+   * @model name="speed"
+   * @generated
+   * @ordered
+   */
+  public static final int SPEED_VALUE = 1;
+
+  /**
+   * The '<em><b>Friction force</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Friction force</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #FRICTION_FORCE
+   * @model name="friction_force"
+   * @generated
+   * @ordered
+   */
+  public static final int FRICTION_FORCE_VALUE = 2;
+
+  /**
+   * The '<em><b>Lateral force</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>Lateral force</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #LATERAL_FORCE
+   * @model name="lateral_force"
+   * @generated
+   * @ordered
+   */
+  public static final int LATERAL_FORCE_VALUE = 3;
+
+  /**
+   * An array of all the '<em><b>SAHARA Property Enum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final SAHARAPropertyEnum[] VALUES_ARRAY =
+    new SAHARAPropertyEnum[]
+    {
+      ACCEL,
+      SPEED,
+      FRICTION_FORCE,
+      LATERAL_FORCE,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>SAHARA Property Enum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<SAHARAPropertyEnum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>SAHARA Property Enum</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param literal the literal.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARAPropertyEnum get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARAPropertyEnum result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA Property Enum</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param name the name.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARAPropertyEnum getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARAPropertyEnum result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA Property Enum</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the integer value.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARAPropertyEnum get(int value)
+  {
+    switch (value)
+    {
+      case ACCEL_VALUE: return ACCEL;
+      case SPEED_VALUE: return SPEED;
+      case FRICTION_FORCE_VALUE: return FRICTION_FORCE;
+      case LATERAL_FORCE_VALUE: return LATERAL_FORCE;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private SAHARAPropertyEnum(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //SAHARAPropertyEnum

+ 19 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARAUnit.java

@@ -0,0 +1,19 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAHARA Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARAUnit()
+ * @model
+ * @generated
+ */
+public interface SAHARAUnit extends Unit
+{
+} // SAHARAUnit

+ 54 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_C.java

@@ -0,0 +1,54 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAHARA C</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.SAHARA_C#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_C()
+ * @model
+ * @generated
+ */
+public interface SAHARA_C extends AssignAction
+{
+  /**
+   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * The literals are from the enumeration {@link be.uantwerpen.cosys.contractLang.SAHARA_C_Enum}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_C_Enum
+   * @see #setVal(SAHARA_C_Enum)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_C_Val()
+   * @model
+   * @generated
+   */
+  SAHARA_C_Enum getVal();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.SAHARA_C#getVal <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_C_Enum
+   * @see #getVal()
+   * @generated
+   */
+  void setVal(SAHARA_C_Enum value);
+
+} // SAHARA_C

+ 287 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_C_Enum.java

@@ -0,0 +1,287 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>SAHARA CEnum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_C_Enum()
+ * @model
+ * @generated
+ */
+public enum SAHARA_C_Enum implements Enumerator
+{
+  /**
+   * The '<em><b>C0</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #C0_VALUE
+   * @generated
+   * @ordered
+   */
+  C0(0, "C0", "C0"),
+
+  /**
+   * The '<em><b>C1</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #C1_VALUE
+   * @generated
+   * @ordered
+   */
+  C1(1, "C1", "C1"),
+
+  /**
+   * The '<em><b>C2</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #C2_VALUE
+   * @generated
+   * @ordered
+   */
+  C2(2, "C2", "C2"),
+
+  /**
+   * The '<em><b>C3</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #C3_VALUE
+   * @generated
+   * @ordered
+   */
+  C3(3, "C3", "C3");
+
+  /**
+   * The '<em><b>C0</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>C0</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #C0
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int C0_VALUE = 0;
+
+  /**
+   * The '<em><b>C1</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>C1</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #C1
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int C1_VALUE = 1;
+
+  /**
+   * The '<em><b>C2</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>C2</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #C2
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int C2_VALUE = 2;
+
+  /**
+   * The '<em><b>C3</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>C3</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #C3
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int C3_VALUE = 3;
+
+  /**
+   * An array of all the '<em><b>SAHARA CEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final SAHARA_C_Enum[] VALUES_ARRAY =
+    new SAHARA_C_Enum[]
+    {
+      C0,
+      C1,
+      C2,
+      C3,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>SAHARA CEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<SAHARA_C_Enum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>SAHARA CEnum</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param literal the literal.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_C_Enum get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_C_Enum result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA CEnum</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param name the name.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_C_Enum getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_C_Enum result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA CEnum</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the integer value.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_C_Enum get(int value)
+  {
+    switch (value)
+    {
+      case C0_VALUE: return C0;
+      case C1_VALUE: return C1;
+      case C2_VALUE: return C2;
+      case C3_VALUE: return C3;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private SAHARA_C_Enum(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //SAHARA_C_Enum

+ 54 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_E.java

@@ -0,0 +1,54 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAHARA E</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.SAHARA_E#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_E()
+ * @model
+ * @generated
+ */
+public interface SAHARA_E extends AssignAction
+{
+  /**
+   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * The literals are from the enumeration {@link be.uantwerpen.cosys.contractLang.SAHARA_E_Enum}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_E_Enum
+   * @see #setVal(SAHARA_E_Enum)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_E_Val()
+   * @model
+   * @generated
+   */
+  SAHARA_E_Enum getVal();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.SAHARA_E#getVal <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_E_Enum
+   * @see #getVal()
+   * @generated
+   */
+  void setVal(SAHARA_E_Enum value);
+
+} // SAHARA_E

+ 314 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_E_Enum.java

@@ -0,0 +1,314 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>SAHARA EEnum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_E_Enum()
+ * @model
+ * @generated
+ */
+public enum SAHARA_E_Enum implements Enumerator
+{
+  /**
+   * The '<em><b>E0</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #E0_VALUE
+   * @generated
+   * @ordered
+   */
+  E0(0, "E0", "E0"),
+
+  /**
+   * The '<em><b>E1</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #E1_VALUE
+   * @generated
+   * @ordered
+   */
+  E1(1, "E1", "E1"),
+
+  /**
+   * The '<em><b>E2</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #E2_VALUE
+   * @generated
+   * @ordered
+   */
+  E2(2, "E2", "C2"),
+
+  /**
+   * The '<em><b>E3</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #E3_VALUE
+   * @generated
+   * @ordered
+   */
+  E3(3, "E3", "E3"),
+
+  /**
+   * The '<em><b>E4</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #E4_VALUE
+   * @generated
+   * @ordered
+   */
+  E4(4, "E4", "E4");
+
+  /**
+   * The '<em><b>E0</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>E0</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #E0
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int E0_VALUE = 0;
+
+  /**
+   * The '<em><b>E1</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>E1</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #E1
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int E1_VALUE = 1;
+
+  /**
+   * The '<em><b>E2</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>E2</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #E2
+   * @model literal="C2"
+   * @generated
+   * @ordered
+   */
+  public static final int E2_VALUE = 2;
+
+  /**
+   * The '<em><b>E3</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>E3</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #E3
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int E3_VALUE = 3;
+
+  /**
+   * The '<em><b>E4</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>E4</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #E4
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int E4_VALUE = 4;
+
+  /**
+   * An array of all the '<em><b>SAHARA EEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final SAHARA_E_Enum[] VALUES_ARRAY =
+    new SAHARA_E_Enum[]
+    {
+      E0,
+      E1,
+      E2,
+      E3,
+      E4,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>SAHARA EEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<SAHARA_E_Enum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>SAHARA EEnum</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param literal the literal.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_E_Enum get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_E_Enum result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA EEnum</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param name the name.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_E_Enum getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_E_Enum result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA EEnum</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the integer value.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_E_Enum get(int value)
+  {
+    switch (value)
+    {
+      case E0_VALUE: return E0;
+      case E1_VALUE: return E1;
+      case E2_VALUE: return E2;
+      case E3_VALUE: return E3;
+      case E4_VALUE: return E4;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private SAHARA_E_Enum(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //SAHARA_E_Enum

+ 54 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_S.java

@@ -0,0 +1,54 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SAHARA S</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.SAHARA_S#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_S()
+ * @model
+ * @generated
+ */
+public interface SAHARA_S extends AssignAction
+{
+  /**
+   * Returns the value of the '<em><b>Val</b></em>' attribute.
+   * The literals are from the enumeration {@link be.uantwerpen.cosys.contractLang.SAHARA_S_Enum}.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Val</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_S_Enum
+   * @see #setVal(SAHARA_S_Enum)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_S_Val()
+   * @model
+   * @generated
+   */
+  SAHARA_S_Enum getVal();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.SAHARA_S#getVal <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Val</em>' attribute.
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_S_Enum
+   * @see #getVal()
+   * @generated
+   */
+  void setVal(SAHARA_S_Enum value);
+
+} // SAHARA_S

+ 287 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/SAHARA_S_Enum.java

@@ -0,0 +1,287 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>SAHARA SEnum</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getSAHARA_S_Enum()
+ * @model
+ * @generated
+ */
+public enum SAHARA_S_Enum implements Enumerator
+{
+  /**
+   * The '<em><b>S0</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #S0_VALUE
+   * @generated
+   * @ordered
+   */
+  S0(0, "S0", "S0"),
+
+  /**
+   * The '<em><b>S1</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #S1_VALUE
+   * @generated
+   * @ordered
+   */
+  S1(1, "S1", "S1"),
+
+  /**
+   * The '<em><b>S2</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #S2_VALUE
+   * @generated
+   * @ordered
+   */
+  S2(2, "S2", "S2"),
+
+  /**
+   * The '<em><b>S3</b></em>' literal object.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #S3_VALUE
+   * @generated
+   * @ordered
+   */
+  S3(3, "S3", "S3");
+
+  /**
+   * The '<em><b>S0</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>S0</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #S0
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int S0_VALUE = 0;
+
+  /**
+   * The '<em><b>S1</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>S1</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #S1
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int S1_VALUE = 1;
+
+  /**
+   * The '<em><b>S2</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>S2</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #S2
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int S2_VALUE = 2;
+
+  /**
+   * The '<em><b>S3</b></em>' literal value.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of '<em><b>S3</b></em>' literal object isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @see #S3
+   * @model
+   * @generated
+   * @ordered
+   */
+  public static final int S3_VALUE = 3;
+
+  /**
+   * An array of all the '<em><b>SAHARA SEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private static final SAHARA_S_Enum[] VALUES_ARRAY =
+    new SAHARA_S_Enum[]
+    {
+      S0,
+      S1,
+      S2,
+      S3,
+    };
+
+  /**
+   * A public read-only list of all the '<em><b>SAHARA SEnum</b></em>' enumerators.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public static final List<SAHARA_S_Enum> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+  /**
+   * Returns the '<em><b>SAHARA SEnum</b></em>' literal with the specified literal value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param literal the literal.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_S_Enum get(String literal)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_S_Enum result = VALUES_ARRAY[i];
+      if (result.toString().equals(literal))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA SEnum</b></em>' literal with the specified name.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param name the name.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_S_Enum getByName(String name)
+  {
+    for (int i = 0; i < VALUES_ARRAY.length; ++i)
+    {
+      SAHARA_S_Enum result = VALUES_ARRAY[i];
+      if (result.getName().equals(name))
+      {
+        return result;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * Returns the '<em><b>SAHARA SEnum</b></em>' literal with the specified integer value.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the integer value.
+   * @return the matching enumerator or <code>null</code>.
+   * @generated
+   */
+  public static SAHARA_S_Enum get(int value)
+  {
+    switch (value)
+    {
+      case S0_VALUE: return S0;
+      case S1_VALUE: return S1;
+      case S2_VALUE: return S2;
+      case S3_VALUE: return S3;
+    }
+    return null;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final int value;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String name;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private final String literal;
+
+  /**
+   * Only this class can construct instances.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  private SAHARA_S_Enum(int value, String name, String literal)
+  {
+    this.value = value;
+    this.name = name;
+    this.literal = literal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public int getValue()
+  {
+    return value;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getName()
+  {
+    return name;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getLiteral()
+  {
+    return literal;
+  }
+
+  /**
+   * Returns the literal value of the enumerator, which is its string representation.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    return literal;
+  }
+  
+} //SAHARA_S_Enum

+ 39 - 39
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/TimeInterval.java

@@ -13,10 +13,10 @@ package be.uantwerpen.cosys.contractLang;
  * The following features are supported:
  * </p>
  * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#getL_bound <em>Lbound</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#getMin <em>Min</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#getMax <em>Max</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#isClosed_min <em>Closed min</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#isClosed_max <em>Closed max</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.TimeInterval#getR_bound <em>Rbound</em>}</li>
  * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeInterval()
@@ -25,6 +25,32 @@ package be.uantwerpen.cosys.contractLang;
  */
 public interface TimeInterval extends Time
 {
+  /**
+   * Returns the value of the '<em><b>Lbound</b></em>' containment reference.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Lbound</em>' containment reference isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Lbound</em>' containment reference.
+   * @see #setL_bound(IntervalBound)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeInterval_L_bound()
+   * @model containment="true"
+   * @generated
+   */
+  IntervalBound getL_bound();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeInterval#getL_bound <em>Lbound</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Lbound</em>' containment reference.
+   * @see #getL_bound()
+   * @generated
+   */
+  void setL_bound(IntervalBound value);
+
   /**
    * Returns the value of the '<em><b>Min</b></em>' containment reference.
    * <!-- begin-user-doc -->
@@ -78,55 +104,29 @@ public interface TimeInterval extends Time
   void setMax(NumValue value);
 
   /**
-   * Returns the value of the '<em><b>Closed min</b></em>' attribute.
+   * Returns the value of the '<em><b>Rbound</b></em>' containment reference.
    * <!-- begin-user-doc -->
    * <p>
-   * If the meaning of the '<em>Closed min</em>' attribute isn't clear,
+   * If the meaning of the '<em>Rbound</em>' containment reference isn't clear,
    * there really should be more of a description here...
    * </p>
    * <!-- end-user-doc -->
-   * @return the value of the '<em>Closed min</em>' attribute.
-   * @see #setClosed_min(boolean)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeInterval_Closed_min()
-   * @model
-   * @generated
-   */
-  boolean isClosed_min();
-
-  /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeInterval#isClosed_min <em>Closed min</em>}' attribute.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Closed min</em>' attribute.
-   * @see #isClosed_min()
-   * @generated
-   */
-  void setClosed_min(boolean value);
-
-  /**
-   * Returns the value of the '<em><b>Closed max</b></em>' attribute.
-   * <!-- begin-user-doc -->
-   * <p>
-   * If the meaning of the '<em>Closed max</em>' attribute isn't clear,
-   * there really should be more of a description here...
-   * </p>
-   * <!-- end-user-doc -->
-   * @return the value of the '<em>Closed max</em>' attribute.
-   * @see #setClosed_max(boolean)
-   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeInterval_Closed_max()
-   * @model
+   * @return the value of the '<em>Rbound</em>' containment reference.
+   * @see #setR_bound(IntervalBound)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeInterval_R_bound()
+   * @model containment="true"
    * @generated
    */
-  boolean isClosed_max();
+  IntervalBound getR_bound();
 
   /**
-   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeInterval#isClosed_max <em>Closed max</em>}' attribute.
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeInterval#getR_bound <em>Rbound</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @param value the new value of the '<em>Closed max</em>' attribute.
-   * @see #isClosed_max()
+   * @param value the new value of the '<em>Rbound</em>' containment reference.
+   * @see #getR_bound()
    * @generated
    */
-  void setClosed_max(boolean value);
+  void setR_bound(IntervalBound value);
 
 } // TimeInterval

+ 60 - 2
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/TimeUnit.java

@@ -3,18 +3,76 @@
  */
 package be.uantwerpen.cosys.contractLang;
 
-import org.eclipse.emf.ecore.EObject;
 
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Time Unit</b></em>'.
  * <!-- end-user-doc -->
  *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.TimeUnit#getMilliseconds <em>Milliseconds</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.TimeUnit#getSeconds <em>Seconds</em>}</li>
+ * </ul>
  *
  * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeUnit()
  * @model
  * @generated
  */
-public interface TimeUnit extends EObject
+public interface TimeUnit extends Unit
 {
+  /**
+   * Returns the value of the '<em><b>Milliseconds</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Milliseconds</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Milliseconds</em>' attribute.
+   * @see #setMilliseconds(String)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeUnit_Milliseconds()
+   * @model
+   * @generated
+   */
+  String getMilliseconds();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeUnit#getMilliseconds <em>Milliseconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Milliseconds</em>' attribute.
+   * @see #getMilliseconds()
+   * @generated
+   */
+  void setMilliseconds(String value);
+
+  /**
+   * Returns the value of the '<em><b>Seconds</b></em>' attribute.
+   * <!-- begin-user-doc -->
+   * <p>
+   * If the meaning of the '<em>Seconds</em>' attribute isn't clear,
+   * there really should be more of a description here...
+   * </p>
+   * <!-- end-user-doc -->
+   * @return the value of the '<em>Seconds</em>' attribute.
+   * @see #setSeconds(String)
+   * @see be.uantwerpen.cosys.contractLang.ContractLangPackage#getTimeUnit_Seconds()
+   * @model
+   * @generated
+   */
+  String getSeconds();
+
+  /**
+   * Sets the value of the '{@link be.uantwerpen.cosys.contractLang.TimeUnit#getSeconds <em>Seconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @param value the new value of the '<em>Seconds</em>' attribute.
+   * @see #getSeconds()
+   * @generated
+   */
+  void setSeconds(String value);
+
 } // TimeUnit

+ 0 - 155
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/AssignActionImpl.java

@@ -5,41 +5,18 @@ package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.AssignAction;
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
-import be.uantwerpen.cosys.contractLang.VarOrVarOp;
-
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.InternalEObject;
-
-import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Assign Action</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * The following features are implemented:
- * </p>
- * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.AssignActionImpl#getVar <em>Var</em>}</li>
- * </ul>
  *
  * @generated
  */
 public class AssignActionImpl extends ActionImpl implements AssignAction
 {
-  /**
-   * The cached value of the '{@link #getVar() <em>Var</em>}' containment reference.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #getVar()
-   * @generated
-   * @ordered
-   */
-  protected VarOrVarOp var;
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -61,136 +38,4 @@ public class AssignActionImpl extends ActionImpl implements AssignAction
     return ContractLangPackage.Literals.ASSIGN_ACTION;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public VarOrVarOp getVar()
-  {
-    return var;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  public NotificationChain basicSetVar(VarOrVarOp newVar, NotificationChain msgs)
-  {
-    VarOrVarOp oldVar = var;
-    var = newVar;
-    if (eNotificationRequired())
-    {
-      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.ASSIGN_ACTION__VAR, oldVar, newVar);
-      if (msgs == null) msgs = notification; else msgs.add(notification);
-    }
-    return msgs;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public void setVar(VarOrVarOp newVar)
-  {
-    if (newVar != var)
-    {
-      NotificationChain msgs = null;
-      if (var != null)
-        msgs = ((InternalEObject)var).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.ASSIGN_ACTION__VAR, null, msgs);
-      if (newVar != null)
-        msgs = ((InternalEObject)newVar).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.ASSIGN_ACTION__VAR, null, msgs);
-      msgs = basicSetVar(newVar, msgs);
-      if (msgs != null) msgs.dispatch();
-    }
-    else if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.ASSIGN_ACTION__VAR, newVar, newVar));
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
-  {
-    switch (featureID)
-    {
-      case ContractLangPackage.ASSIGN_ACTION__VAR:
-        return basicSetVar(null, msgs);
-    }
-    return super.eInverseRemove(otherEnd, featureID, msgs);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Object eGet(int featureID, boolean resolve, boolean coreType)
-  {
-    switch (featureID)
-    {
-      case ContractLangPackage.ASSIGN_ACTION__VAR:
-        return getVar();
-    }
-    return super.eGet(featureID, resolve, coreType);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public void eSet(int featureID, Object newValue)
-  {
-    switch (featureID)
-    {
-      case ContractLangPackage.ASSIGN_ACTION__VAR:
-        setVar((VarOrVarOp)newValue);
-        return;
-    }
-    super.eSet(featureID, newValue);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public void eUnset(int featureID)
-  {
-    switch (featureID)
-    {
-      case ContractLangPackage.ASSIGN_ACTION__VAR:
-        setVar((VarOrVarOp)null);
-        return;
-    }
-    super.eUnset(featureID);
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public boolean eIsSet(int featureID)
-  {
-    switch (featureID)
-    {
-      case ContractLangPackage.ASSIGN_ACTION__VAR:
-        return var != null;
-    }
-    return super.eIsSet(featureID);
-  }
-
 } //AssignActionImpl

+ 41 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ClosedIntervalImpl.java

@@ -0,0 +1,41 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ClosedInterval;
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Closed Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ClosedIntervalImpl extends IntervalBoundImpl implements ClosedInterval
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected ClosedIntervalImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.CLOSED_INTERVAL;
+  }
+
+} //ClosedIntervalImpl

+ 58 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractImpl.java

@@ -40,6 +40,7 @@ import org.eclipse.emf.ecore.util.InternalEList;
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.ContractImpl#getScope <em>Scope</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.ContractImpl#getPattern <em>Pattern</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.ContractImpl#getAction <em>Action</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.ContractImpl#isDoGenSTL <em>Do Gen STL</em>}</li>
  * </ul>
  *
  * @generated
@@ -126,6 +127,26 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
    */
   protected Action action;
 
+  /**
+   * The default value of the '{@link #isDoGenSTL() <em>Do Gen STL</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isDoGenSTL()
+   * @generated
+   * @ordered
+   */
+  protected static final boolean DO_GEN_STL_EDEFAULT = false;
+
+  /**
+   * The cached value of the '{@link #isDoGenSTL() <em>Do Gen STL</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #isDoGenSTL()
+   * @generated
+   * @ordered
+   */
+  protected boolean doGenSTL = DO_GEN_STL_EDEFAULT;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -362,6 +383,31 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
       eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.CONTRACT__ACTION, newAction, newAction));
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean isDoGenSTL()
+  {
+    return doGenSTL;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setDoGenSTL(boolean newDoGenSTL)
+  {
+    boolean oldDoGenSTL = doGenSTL;
+    doGenSTL = newDoGenSTL;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.CONTRACT__DO_GEN_STL, oldDoGenSTL, doGenSTL));
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -406,6 +452,8 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
         return getPattern();
       case ContractLangPackage.CONTRACT__ACTION:
         return getAction();
+      case ContractLangPackage.CONTRACT__DO_GEN_STL:
+        return isDoGenSTL();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -440,6 +488,9 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
       case ContractLangPackage.CONTRACT__ACTION:
         setAction((Action)newValue);
         return;
+      case ContractLangPackage.CONTRACT__DO_GEN_STL:
+        setDoGenSTL((Boolean)newValue);
+        return;
     }
     super.eSet(featureID, newValue);
   }
@@ -472,6 +523,9 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
       case ContractLangPackage.CONTRACT__ACTION:
         setAction((Action)null);
         return;
+      case ContractLangPackage.CONTRACT__DO_GEN_STL:
+        setDoGenSTL(DO_GEN_STL_EDEFAULT);
+        return;
     }
     super.eUnset(featureID);
   }
@@ -498,6 +552,8 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
         return pattern != null;
       case ContractLangPackage.CONTRACT__ACTION:
         return action != null;
+      case ContractLangPackage.CONTRACT__DO_GEN_STL:
+        return doGenSTL != DO_GEN_STL_EDEFAULT;
     }
     return super.eIsSet(featureID);
   }
@@ -517,6 +573,8 @@ public class ContractImpl extends MinimalEObjectImpl.Container implements Contra
     result.append(name);
     result.append(", description: ");
     result.append(description);
+    result.append(", doGenSTL: ");
+    result.append(doGenSTL);
     result.append(')');
     return result.toString();
   }

+ 332 - 85
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractLangFactoryImpl.java

@@ -95,7 +95,7 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
       case ContractLangPackage.STEADY_STATE_PATTERN: return createSteadyStatePattern();
       case ContractLangPackage.MIN_DURATION_PATTERN: return createMinDurationPattern();
       case ContractLangPackage.MAX_DURATION_PATTERN: return createMaxDurationPattern();
-      case ContractLangPackage.RECURRENCE: return createRecurrence();
+      case ContractLangPackage.RECURRENCE_PATTERN: return createRecurrencePattern();
       case ContractLangPackage.PREC_STATEMENT: return createPrecStatement();
       case ContractLangPackage.ORDER: return createOrder();
       case ContractLangPackage.PRECEDENCE_PATTERN: return createPrecedencePattern();
@@ -112,8 +112,6 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
       case ContractLangPackage.LOWER_TIME_BOUND: return createLowerTimeBound();
       case ContractLangPackage.SINGLE_TIME: return createSingleTime();
       case ContractLangPackage.TIME_UNIT: return createTimeUnit();
-      case ContractLangPackage.MILLISECONDS: return createMilliseconds();
-      case ContractLangPackage.SECONDS: return createSeconds();
       case ContractLangPackage.PROBABILITY: return createProbability();
       case ContractLangPackage.PROB_LESS: return createProbLess();
       case ContractLangPackage.PROB_LESS_EQ: return createProbLessEq();
@@ -124,14 +122,16 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
       case ContractLangPackage.OPERATOR: return createOperator();
       case ContractLangPackage.EXPRESSION: return createExpression();
       case ContractLangPackage.NUM_VALUE: return createNumValue();
+      case ContractLangPackage.INFINITY: return createInfinity();
+      case ContractLangPackage.INT_VALUE: return createIntValue();
+      case ContractLangPackage.FLOAT_VALUE: return createFloatValue();
       case ContractLangPackage.UNIT: return createUnit();
+      case ContractLangPackage.UNITLESS: return createUnitless();
+      case ContractLangPackage.PERCENTAGE: return createPercentage();
       case ContractLangPackage.DERIVATIVE: return createDerivative();
       case ContractLangPackage.ABSOLUTE_VALUE: return createAbsoluteValue();
       case ContractLangPackage.DIFFERENCE: return createDifference();
       case ContractLangPackage.AVERAGE: return createAverage();
-      case ContractLangPackage.INFINITY: return createInfinity();
-      case ContractLangPackage.INT_VALUE: return createIntValue();
-      case ContractLangPackage.FLOAT_VALUE: return createFloatValue();
       case ContractLangPackage.EQUALITY: return createEquality();
       case ContractLangPackage.GREATER_THAN: return createGreaterThan();
       case ContractLangPackage.LESS_THAN: return createLessThan();
@@ -141,20 +141,31 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
       case ContractLangPackage.STRING_VALUE: return createStringValue();
       case ContractLangPackage.QUAL_VALUE: return createQualValue();
       case ContractLangPackage.INTERVAL: return createInterval();
+      case ContractLangPackage.INTERVAL_BOUND: return createIntervalBound();
+      case ContractLangPackage.OPEN_INTERVAL: return createOpenInterval();
+      case ContractLangPackage.CLOSED_INTERVAL: return createClosedInterval();
       case ContractLangPackage.VALUE_WITH_UNIT: return createValueWithUnit();
-      case ContractLangPackage.UNITLESS: return createUnitless();
-      case ContractLangPackage.PERCENTAGE: return createPercentage();
       case ContractLangPackage.ASSIGN_ACTION: return createAssignAction();
       case ContractLangPackage.VALUE: return createValue();
       case ContractLangPackage.DOMAIN_VALUE: return createDomainValue();
       case ContractLangPackage.VARIABLE: return createVariable();
-      case ContractLangPackage.FREQUENCY: return createFrequency();
       case ContractLangPackage.FMU_PROPERTY: return createFMUProperty();
       case ContractLangPackage.FMU_INSTANCE: return createFMUInstance();
       case ContractLangPackage.FMU_SIGNAL: return createFMUSignal();
       case ContractLangPackage.STEADY_STATE_SUGGESTION: return createSteadyStateSuggestion();
-      case ContractLangPackage.METERS_PER_SECOND: return createMetersPerSecond();
+      case ContractLangPackage.POWER_BOND_SUGGESTION: return createPowerBondSuggestion();
+      case ContractLangPackage.COSIM_UNIT: return createCosimUnit();
+      case ContractLangPackage.FREQUENCY: return createFrequency();
+      case ContractLangPackage.SAHARA_PROPERTY: return createSAHARAProperty();
+      case ContractLangPackage.SAHARA_S: return createSAHARA_S();
+      case ContractLangPackage.SAHARA_E: return createSAHARA_E();
+      case ContractLangPackage.SAHARA_C: return createSAHARA_C();
+      case ContractLangPackage.SAHARA_UNIT: return createSAHARAUnit();
       case ContractLangPackage.METERS: return createMeters();
+      case ContractLangPackage.METERS_PER_SECOND: return createMetersPerSecond();
+      case ContractLangPackage.KILOMETERS: return createKilometers();
+      case ContractLangPackage.KILOMETERS_PER_HOUR: return createKilometersPerHour();
+      case ContractLangPackage.FORCE: return createForce();
       default:
         throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
     }
@@ -174,6 +185,14 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
         return createLOW_MED_HIGHFromString(eDataType, initialValue);
       case ContractLangPackage.FMU_PROPERTY_ENUM:
         return createFMUPropertyEnumFromString(eDataType, initialValue);
+      case ContractLangPackage.SAHARA_PROPERTY_ENUM:
+        return createSAHARAPropertyEnumFromString(eDataType, initialValue);
+      case ContractLangPackage.SAHARA_SENUM:
+        return createSAHARA_S_EnumFromString(eDataType, initialValue);
+      case ContractLangPackage.SAHARA_EENUM:
+        return createSAHARA_E_EnumFromString(eDataType, initialValue);
+      case ContractLangPackage.SAHARA_CENUM:
+        return createSAHARA_C_EnumFromString(eDataType, initialValue);
       default:
         throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
     }
@@ -193,6 +212,14 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
         return convertLOW_MED_HIGHToString(eDataType, instanceValue);
       case ContractLangPackage.FMU_PROPERTY_ENUM:
         return convertFMUPropertyEnumToString(eDataType, instanceValue);
+      case ContractLangPackage.SAHARA_PROPERTY_ENUM:
+        return convertSAHARAPropertyEnumToString(eDataType, instanceValue);
+      case ContractLangPackage.SAHARA_SENUM:
+        return convertSAHARA_S_EnumToString(eDataType, instanceValue);
+      case ContractLangPackage.SAHARA_EENUM:
+        return convertSAHARA_E_EnumToString(eDataType, instanceValue);
+      case ContractLangPackage.SAHARA_CENUM:
+        return convertSAHARA_C_EnumToString(eDataType, instanceValue);
       default:
         throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
     }
@@ -552,10 +579,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Recurrence createRecurrence()
+  public RecurrencePattern createRecurrencePattern()
   {
-    RecurrenceImpl recurrence = new RecurrenceImpl();
-    return recurrence;
+    RecurrencePatternImpl recurrencePattern = new RecurrencePatternImpl();
+    return recurrencePattern;
   }
 
   /**
@@ -750,30 +777,6 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
     return timeUnit;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Milliseconds createMilliseconds()
-  {
-    MillisecondsImpl milliseconds = new MillisecondsImpl();
-    return milliseconds;
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Seconds createSeconds()
-  {
-    SecondsImpl seconds = new SecondsImpl();
-    return seconds;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -900,10 +903,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Unit createUnit()
+  public Infinity createInfinity()
   {
-    UnitImpl unit = new UnitImpl();
-    return unit;
+    InfinityImpl infinity = new InfinityImpl();
+    return infinity;
   }
 
   /**
@@ -912,10 +915,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Derivative createDerivative()
+  public IntValue createIntValue()
   {
-    DerivativeImpl derivative = new DerivativeImpl();
-    return derivative;
+    IntValueImpl intValue = new IntValueImpl();
+    return intValue;
   }
 
   /**
@@ -924,10 +927,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public AbsoluteValue createAbsoluteValue()
+  public FloatValue createFloatValue()
   {
-    AbsoluteValueImpl absoluteValue = new AbsoluteValueImpl();
-    return absoluteValue;
+    FloatValueImpl floatValue = new FloatValueImpl();
+    return floatValue;
   }
 
   /**
@@ -936,10 +939,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Difference createDifference()
+  public Unit createUnit()
   {
-    DifferenceImpl difference = new DifferenceImpl();
-    return difference;
+    UnitImpl unit = new UnitImpl();
+    return unit;
   }
 
   /**
@@ -948,10 +951,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Average createAverage()
+  public Unitless createUnitless()
   {
-    AverageImpl average = new AverageImpl();
-    return average;
+    UnitlessImpl unitless = new UnitlessImpl();
+    return unitless;
   }
 
   /**
@@ -960,10 +963,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Infinity createInfinity()
+  public Percentage createPercentage()
   {
-    InfinityImpl infinity = new InfinityImpl();
-    return infinity;
+    PercentageImpl percentage = new PercentageImpl();
+    return percentage;
   }
 
   /**
@@ -972,10 +975,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public IntValue createIntValue()
+  public Derivative createDerivative()
   {
-    IntValueImpl intValue = new IntValueImpl();
-    return intValue;
+    DerivativeImpl derivative = new DerivativeImpl();
+    return derivative;
   }
 
   /**
@@ -984,10 +987,34 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public FloatValue createFloatValue()
+  public AbsoluteValue createAbsoluteValue()
   {
-    FloatValueImpl floatValue = new FloatValueImpl();
-    return floatValue;
+    AbsoluteValueImpl absoluteValue = new AbsoluteValueImpl();
+    return absoluteValue;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Difference createDifference()
+  {
+    DifferenceImpl difference = new DifferenceImpl();
+    return difference;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Average createAverage()
+  {
+    AverageImpl average = new AverageImpl();
+    return average;
   }
 
   /**
@@ -1104,10 +1131,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public ValueWithUnit createValueWithUnit()
+  public IntervalBound createIntervalBound()
   {
-    ValueWithUnitImpl valueWithUnit = new ValueWithUnitImpl();
-    return valueWithUnit;
+    IntervalBoundImpl intervalBound = new IntervalBoundImpl();
+    return intervalBound;
   }
 
   /**
@@ -1116,10 +1143,10 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Unitless createUnitless()
+  public OpenInterval createOpenInterval()
   {
-    UnitlessImpl unitless = new UnitlessImpl();
-    return unitless;
+    OpenIntervalImpl openInterval = new OpenIntervalImpl();
+    return openInterval;
   }
 
   /**
@@ -1128,10 +1155,22 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public Percentage createPercentage()
+  public ClosedInterval createClosedInterval()
   {
-    PercentageImpl percentage = new PercentageImpl();
-    return percentage;
+    ClosedIntervalImpl closedInterval = new ClosedIntervalImpl();
+    return closedInterval;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public ValueWithUnit createValueWithUnit()
+  {
+    ValueWithUnitImpl valueWithUnit = new ValueWithUnitImpl();
+    return valueWithUnit;
   }
 
   /**
@@ -1182,18 +1221,6 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
     return variable;
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public Frequency createFrequency()
-  {
-    FrequencyImpl frequency = new FrequencyImpl();
-    return frequency;
-  }
-
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1248,10 +1275,94 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
    * @generated
    */
   @Override
-  public MetersPerSecond createMetersPerSecond()
+  public PowerBondSuggestion createPowerBondSuggestion()
   {
-    MetersPerSecondImpl metersPerSecond = new MetersPerSecondImpl();
-    return metersPerSecond;
+    PowerBondSuggestionImpl powerBondSuggestion = new PowerBondSuggestionImpl();
+    return powerBondSuggestion;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public CosimUnit createCosimUnit()
+  {
+    CosimUnitImpl cosimUnit = new CosimUnitImpl();
+    return cosimUnit;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Frequency createFrequency()
+  {
+    FrequencyImpl frequency = new FrequencyImpl();
+    return frequency;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARAProperty createSAHARAProperty()
+  {
+    SAHARAPropertyImpl saharaProperty = new SAHARAPropertyImpl();
+    return saharaProperty;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_S createSAHARA_S()
+  {
+    SAHARA_SImpl saharA_S = new SAHARA_SImpl();
+    return saharA_S;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_E createSAHARA_E()
+  {
+    SAHARA_EImpl saharA_E = new SAHARA_EImpl();
+    return saharA_E;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_C createSAHARA_C()
+  {
+    SAHARA_CImpl saharA_C = new SAHARA_CImpl();
+    return saharA_C;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARAUnit createSAHARAUnit()
+  {
+    SAHARAUnitImpl saharaUnit = new SAHARAUnitImpl();
+    return saharaUnit;
   }
 
   /**
@@ -1266,6 +1377,54 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
     return meters;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public MetersPerSecond createMetersPerSecond()
+  {
+    MetersPerSecondImpl metersPerSecond = new MetersPerSecondImpl();
+    return metersPerSecond;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Kilometers createKilometers()
+  {
+    KilometersImpl kilometers = new KilometersImpl();
+    return kilometers;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public KilometersPerHour createKilometersPerHour()
+  {
+    KilometersPerHourImpl kilometersPerHour = new KilometersPerHourImpl();
+    return kilometersPerHour;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Force createForce()
+  {
+    ForceImpl force = new ForceImpl();
+    return force;
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -1310,6 +1469,94 @@ public class ContractLangFactoryImpl extends EFactoryImpl implements ContractLan
     return instanceValue == null ? null : instanceValue.toString();
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SAHARAPropertyEnum createSAHARAPropertyEnumFromString(EDataType eDataType, String initialValue)
+  {
+    SAHARAPropertyEnum result = SAHARAPropertyEnum.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertSAHARAPropertyEnumToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SAHARA_S_Enum createSAHARA_S_EnumFromString(EDataType eDataType, String initialValue)
+  {
+    SAHARA_S_Enum result = SAHARA_S_Enum.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertSAHARA_S_EnumToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SAHARA_E_Enum createSAHARA_E_EnumFromString(EDataType eDataType, String initialValue)
+  {
+    SAHARA_E_Enum result = SAHARA_E_Enum.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertSAHARA_E_EnumToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public SAHARA_C_Enum createSAHARA_C_EnumFromString(EDataType eDataType, String initialValue)
+  {
+    SAHARA_C_Enum result = SAHARA_C_Enum.get(initialValue);
+    if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+    return result;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public String convertSAHARA_C_EnumToString(EDataType eDataType, Object instanceValue)
+  {
+    return instanceValue == null ? null : instanceValue.toString();
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 653 - 189
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/ContractLangPackageImpl.java


+ 6 - 6
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MillisecondsImpl.java

@@ -4,25 +4,25 @@
 package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
-import be.uantwerpen.cosys.contractLang.Milliseconds;
+import be.uantwerpen.cosys.contractLang.CosimUnit;
 
 import org.eclipse.emf.ecore.EClass;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Milliseconds</b></em>'.
+ * An implementation of the model object '<em><b>Cosim Unit</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class MillisecondsImpl extends TimeUnitImpl implements Milliseconds
+public class CosimUnitImpl extends UnitImpl implements CosimUnit
 {
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    */
-  protected MillisecondsImpl()
+  protected CosimUnitImpl()
   {
     super();
   }
@@ -35,7 +35,7 @@ public class MillisecondsImpl extends TimeUnitImpl implements Milliseconds
   @Override
   protected EClass eStaticClass()
   {
-    return ContractLangPackage.Literals.MILLISECONDS;
+    return ContractLangPackage.Literals.COSIM_UNIT;
   }
 
-} //MillisecondsImpl
+} //CosimUnitImpl

+ 23 - 23
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FMUInstanceImpl.java

@@ -21,7 +21,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FMUInstanceImpl#getSignal <em>Signal</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FMUInstanceImpl#getName <em>Name</em>}</li>
  * </ul>
  *
  * @generated
@@ -29,24 +29,24 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMUInstance
 {
   /**
-   * The default value of the '{@link #getSignal() <em>Signal</em>}' attribute.
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getSignal()
+   * @see #getName()
    * @generated
    * @ordered
    */
-  protected static final String SIGNAL_EDEFAULT = null;
+  protected static final String NAME_EDEFAULT = null;
 
   /**
-   * The cached value of the '{@link #getSignal() <em>Signal</em>}' attribute.
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getSignal()
+   * @see #getName()
    * @generated
    * @ordered
    */
-  protected String signal = SIGNAL_EDEFAULT;
+  protected String name = NAME_EDEFAULT;
 
   /**
    * <!-- begin-user-doc -->
@@ -75,9 +75,9 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
    * @generated
    */
   @Override
-  public String getSignal()
+  public String getName()
   {
-    return signal;
+    return name;
   }
 
   /**
@@ -86,12 +86,12 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
    * @generated
    */
   @Override
-  public void setSignal(String newSignal)
+  public void setName(String newName)
   {
-    String oldSignal = signal;
-    signal = newSignal;
+    String oldName = name;
+    name = newName;
     if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FMU_INSTANCE__SIGNAL, oldSignal, signal));
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FMU_INSTANCE__NAME, oldName, name));
   }
 
   /**
@@ -104,8 +104,8 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_INSTANCE__SIGNAL:
-        return getSignal();
+      case ContractLangPackage.FMU_INSTANCE__NAME:
+        return getName();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -120,8 +120,8 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_INSTANCE__SIGNAL:
-        setSignal((String)newValue);
+      case ContractLangPackage.FMU_INSTANCE__NAME:
+        setName((String)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -137,8 +137,8 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_INSTANCE__SIGNAL:
-        setSignal(SIGNAL_EDEFAULT);
+      case ContractLangPackage.FMU_INSTANCE__NAME:
+        setName(NAME_EDEFAULT);
         return;
     }
     super.eUnset(featureID);
@@ -154,8 +154,8 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_INSTANCE__SIGNAL:
-        return SIGNAL_EDEFAULT == null ? signal != null : !SIGNAL_EDEFAULT.equals(signal);
+      case ContractLangPackage.FMU_INSTANCE__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
     }
     return super.eIsSet(featureID);
   }
@@ -171,8 +171,8 @@ public class FMUInstanceImpl extends MinimalEObjectImpl.Container implements FMU
     if (eIsProxy()) return super.toString();
 
     StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (signal: ");
-    result.append(signal);
+    result.append(" (name: ");
+    result.append(name);
     result.append(')');
     return result.toString();
   }

+ 23 - 23
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FMUSignalImpl.java

@@ -20,7 +20,7 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FMUSignalImpl#getSignal <em>Signal</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FMUSignalImpl#getName <em>Name</em>}</li>
  * </ul>
  *
  * @generated
@@ -28,24 +28,24 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 public class FMUSignalImpl extends VariableImpl implements FMUSignal
 {
   /**
-   * The default value of the '{@link #getSignal() <em>Signal</em>}' attribute.
+   * The default value of the '{@link #getName() <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getSignal()
+   * @see #getName()
    * @generated
    * @ordered
    */
-  protected static final String SIGNAL_EDEFAULT = null;
+  protected static final String NAME_EDEFAULT = null;
 
   /**
-   * The cached value of the '{@link #getSignal() <em>Signal</em>}' attribute.
+   * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getSignal()
+   * @see #getName()
    * @generated
    * @ordered
    */
-  protected String signal = SIGNAL_EDEFAULT;
+  protected String name = NAME_EDEFAULT;
 
   /**
    * <!-- begin-user-doc -->
@@ -74,9 +74,9 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
    * @generated
    */
   @Override
-  public String getSignal()
+  public String getName()
   {
-    return signal;
+    return name;
   }
 
   /**
@@ -85,12 +85,12 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
    * @generated
    */
   @Override
-  public void setSignal(String newSignal)
+  public void setName(String newName)
   {
-    String oldSignal = signal;
-    signal = newSignal;
+    String oldName = name;
+    name = newName;
     if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FMU_SIGNAL__SIGNAL, oldSignal, signal));
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FMU_SIGNAL__NAME, oldName, name));
   }
 
   /**
@@ -103,8 +103,8 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_SIGNAL__SIGNAL:
-        return getSignal();
+      case ContractLangPackage.FMU_SIGNAL__NAME:
+        return getName();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -119,8 +119,8 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_SIGNAL__SIGNAL:
-        setSignal((String)newValue);
+      case ContractLangPackage.FMU_SIGNAL__NAME:
+        setName((String)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -136,8 +136,8 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_SIGNAL__SIGNAL:
-        setSignal(SIGNAL_EDEFAULT);
+      case ContractLangPackage.FMU_SIGNAL__NAME:
+        setName(NAME_EDEFAULT);
         return;
     }
     super.eUnset(featureID);
@@ -153,8 +153,8 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
   {
     switch (featureID)
     {
-      case ContractLangPackage.FMU_SIGNAL__SIGNAL:
-        return SIGNAL_EDEFAULT == null ? signal != null : !SIGNAL_EDEFAULT.equals(signal);
+      case ContractLangPackage.FMU_SIGNAL__NAME:
+        return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
     }
     return super.eIsSet(featureID);
   }
@@ -170,8 +170,8 @@ public class FMUSignalImpl extends VariableImpl implements FMUSignal
     if (eIsProxy()) return super.toString();
 
     StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (signal: ");
-    result.append(signal);
+    result.append(" (name: ");
+    result.append(name);
     result.append(')');
     return result.toString();
   }

+ 24 - 24
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FloatValueImpl.java

@@ -20,32 +20,32 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FloatValueImpl#getVal <em>Val</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.FloatValueImpl#getV <em>V</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class FloatValueImpl extends ExpressionImpl implements FloatValue
+public class FloatValueImpl extends NumValueImpl implements FloatValue
 {
   /**
-   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * The default value of the '{@link #getV() <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getVal()
+   * @see #getV()
    * @generated
    * @ordered
    */
-  protected static final double VAL_EDEFAULT = 0.0;
+  protected static final double V_EDEFAULT = 0.0;
 
   /**
-   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * The cached value of the '{@link #getV() <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getVal()
+   * @see #getV()
    * @generated
    * @ordered
    */
-  protected double val = VAL_EDEFAULT;
+  protected double v = V_EDEFAULT;
 
   /**
    * <!-- begin-user-doc -->
@@ -74,9 +74,9 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
    * @generated
    */
   @Override
-  public double getVal()
+  public double getV()
   {
-    return val;
+    return v;
   }
 
   /**
@@ -85,12 +85,12 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
    * @generated
    */
   @Override
-  public void setVal(double newVal)
+  public void setV(double newV)
   {
-    double oldVal = val;
-    val = newVal;
+    double oldV = v;
+    v = newV;
     if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FLOAT_VALUE__VAL, oldVal, val));
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.FLOAT_VALUE__V, oldV, v));
   }
 
   /**
@@ -103,8 +103,8 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.FLOAT_VALUE__VAL:
-        return getVal();
+      case ContractLangPackage.FLOAT_VALUE__V:
+        return getV();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -119,8 +119,8 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.FLOAT_VALUE__VAL:
-        setVal((Double)newValue);
+      case ContractLangPackage.FLOAT_VALUE__V:
+        setV((Double)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -136,8 +136,8 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.FLOAT_VALUE__VAL:
-        setVal(VAL_EDEFAULT);
+      case ContractLangPackage.FLOAT_VALUE__V:
+        setV(V_EDEFAULT);
         return;
     }
     super.eUnset(featureID);
@@ -153,8 +153,8 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.FLOAT_VALUE__VAL:
-        return val != VAL_EDEFAULT;
+      case ContractLangPackage.FLOAT_VALUE__V:
+        return v != V_EDEFAULT;
     }
     return super.eIsSet(featureID);
   }
@@ -170,8 +170,8 @@ public class FloatValueImpl extends ExpressionImpl implements FloatValue
     if (eIsProxy()) return super.toString();
 
     StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (val: ");
-    result.append(val);
+    result.append(" (v: ");
+    result.append(v);
     result.append(')');
     return result.toString();
   }

+ 6 - 6
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SecondsImpl.java

@@ -4,25 +4,25 @@
 package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
-import be.uantwerpen.cosys.contractLang.Seconds;
+import be.uantwerpen.cosys.contractLang.Force;
 
 import org.eclipse.emf.ecore.EClass;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Seconds</b></em>'.
+ * An implementation of the model object '<em><b>Force</b></em>'.
  * <!-- end-user-doc -->
  *
  * @generated
  */
-public class SecondsImpl extends TimeUnitImpl implements Seconds
+public class ForceImpl extends SAHARAUnitImpl implements Force
 {
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    */
-  protected SecondsImpl()
+  protected ForceImpl()
   {
     super();
   }
@@ -35,7 +35,7 @@ public class SecondsImpl extends TimeUnitImpl implements Seconds
   @Override
   protected EClass eStaticClass()
   {
-    return ContractLangPackage.Literals.SECONDS;
+    return ContractLangPackage.Literals.FORCE;
   }
 
-} //SecondsImpl
+} //ForceImpl

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/FrequencyImpl.java

@@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.EClass;
  *
  * @generated
  */
-public class FrequencyImpl extends UnitImpl implements Frequency
+public class FrequencyImpl extends CosimUnitImpl implements Frequency
 {
   /**
    * <!-- begin-user-doc -->

+ 139 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/InfinityImpl.java

@@ -6,17 +6,47 @@ package be.uantwerpen.cosys.contractLang.impl;
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
 import be.uantwerpen.cosys.contractLang.Infinity;
 
+import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.ecore.EClass;
 
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Infinity</b></em>'.
  * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.InfinityImpl#getV <em>V</em>}</li>
+ * </ul>
  *
  * @generated
  */
-public class InfinityImpl extends ExpressionImpl implements Infinity
+public class InfinityImpl extends NumValueImpl implements Infinity
 {
+  /**
+   * The default value of the '{@link #getV() <em>V</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getV()
+   * @generated
+   * @ordered
+   */
+  protected static final String V_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getV() <em>V</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getV()
+   * @generated
+   * @ordered
+   */
+  protected String v = V_EDEFAULT;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -38,4 +68,112 @@ public class InfinityImpl extends ExpressionImpl implements Infinity
     return ContractLangPackage.Literals.INFINITY;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getV()
+  {
+    return v;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setV(String newV)
+  {
+    String oldV = v;
+    v = newV;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INFINITY__V, oldV, v));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.INFINITY__V:
+        return getV();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.INFINITY__V:
+        setV((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.INFINITY__V:
+        setV(V_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.INFINITY__V:
+        return V_EDEFAULT == null ? v != null : !V_EDEFAULT.equals(v);
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (v: ");
+    result.append(v);
+    result.append(')');
+    return result.toString();
+  }
+
 } //InfinityImpl

+ 24 - 24
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntValueImpl.java

@@ -20,32 +20,32 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntValueImpl#getVal <em>Val</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntValueImpl#getV <em>V</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class IntValueImpl extends ExpressionImpl implements IntValue
+public class IntValueImpl extends NumValueImpl implements IntValue
 {
   /**
-   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * The default value of the '{@link #getV() <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getVal()
+   * @see #getV()
    * @generated
    * @ordered
    */
-  protected static final int VAL_EDEFAULT = 0;
+  protected static final int V_EDEFAULT = 0;
 
   /**
-   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * The cached value of the '{@link #getV() <em>V</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #getVal()
+   * @see #getV()
    * @generated
    * @ordered
    */
-  protected int val = VAL_EDEFAULT;
+  protected int v = V_EDEFAULT;
 
   /**
    * <!-- begin-user-doc -->
@@ -74,9 +74,9 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
    * @generated
    */
   @Override
-  public int getVal()
+  public int getV()
   {
-    return val;
+    return v;
   }
 
   /**
@@ -85,12 +85,12 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
    * @generated
    */
   @Override
-  public void setVal(int newVal)
+  public void setV(int newV)
   {
-    int oldVal = val;
-    val = newVal;
+    int oldV = v;
+    v = newV;
     if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INT_VALUE__VAL, oldVal, val));
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INT_VALUE__V, oldV, v));
   }
 
   /**
@@ -103,8 +103,8 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.INT_VALUE__VAL:
-        return getVal();
+      case ContractLangPackage.INT_VALUE__V:
+        return getV();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -119,8 +119,8 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.INT_VALUE__VAL:
-        setVal((Integer)newValue);
+      case ContractLangPackage.INT_VALUE__V:
+        setV((Integer)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -136,8 +136,8 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.INT_VALUE__VAL:
-        setVal(VAL_EDEFAULT);
+      case ContractLangPackage.INT_VALUE__V:
+        setV(V_EDEFAULT);
         return;
     }
     super.eUnset(featureID);
@@ -153,8 +153,8 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
   {
     switch (featureID)
     {
-      case ContractLangPackage.INT_VALUE__VAL:
-        return val != VAL_EDEFAULT;
+      case ContractLangPackage.INT_VALUE__V:
+        return v != V_EDEFAULT;
     }
     return super.eIsSet(featureID);
   }
@@ -170,8 +170,8 @@ public class IntValueImpl extends ExpressionImpl implements IntValue
     if (eIsProxy()) return super.toString();
 
     StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (val: ");
-    result.append(val);
+    result.append(" (v: ");
+    result.append(v);
     result.append(')');
     return result.toString();
   }

+ 43 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntervalBoundImpl.java

@@ -0,0 +1,43 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.IntervalBound;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Interval Bound</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IntervalBoundImpl extends MinimalEObjectImpl.Container implements IntervalBound
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected IntervalBoundImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.INTERVAL_BOUND;
+  }
+
+} //IntervalBoundImpl

+ 110 - 94
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/IntervalImpl.java

@@ -5,6 +5,7 @@ package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
 import be.uantwerpen.cosys.contractLang.Interval;
+import be.uantwerpen.cosys.contractLang.IntervalBound;
 import be.uantwerpen.cosys.contractLang.Unit;
 import be.uantwerpen.cosys.contractLang.Value;
 
@@ -24,11 +25,11 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#isClosed_min <em>Closed min</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#isClosed_max <em>Closed max</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#getL_bound <em>Lbound</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#getMin <em>Min</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#getMax <em>Max</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#getUnit <em>Unit</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.IntervalImpl#getR_bound <em>Rbound</em>}</li>
  * </ul>
  *
  * @generated
@@ -36,44 +37,14 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 public class IntervalImpl extends ExpressionImpl implements Interval
 {
   /**
-   * The default value of the '{@link #isClosed_min() <em>Closed min</em>}' attribute.
+   * The cached value of the '{@link #getL_bound() <em>Lbound</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #isClosed_min()
+   * @see #getL_bound()
    * @generated
    * @ordered
    */
-  protected static final boolean CLOSED_MIN_EDEFAULT = false;
-
-  /**
-   * The cached value of the '{@link #isClosed_min() <em>Closed min</em>}' attribute.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #isClosed_min()
-   * @generated
-   * @ordered
-   */
-  protected boolean closed_min = CLOSED_MIN_EDEFAULT;
-
-  /**
-   * The default value of the '{@link #isClosed_max() <em>Closed max</em>}' attribute.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #isClosed_max()
-   * @generated
-   * @ordered
-   */
-  protected static final boolean CLOSED_MAX_EDEFAULT = false;
-
-  /**
-   * The cached value of the '{@link #isClosed_max() <em>Closed max</em>}' attribute.
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @see #isClosed_max()
-   * @generated
-   * @ordered
-   */
-  protected boolean closed_max = CLOSED_MAX_EDEFAULT;
+  protected IntervalBound l_bound;
 
   /**
    * The cached value of the '{@link #getMin() <em>Min</em>}' containment reference.
@@ -106,24 +77,23 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   protected Unit unit;
 
   /**
+   * The cached value of the '{@link #getR_bound() <em>Rbound</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
+   * @see #getR_bound()
    * @generated
+   * @ordered
    */
-  protected IntervalImpl()
-  {
-    super();
-  }
+  protected IntervalBound r_bound;
 
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    */
-  @Override
-  protected EClass eStaticClass()
+  protected IntervalImpl()
   {
-    return ContractLangPackage.Literals.INTERVAL;
+    super();
   }
 
   /**
@@ -132,9 +102,9 @@ public class IntervalImpl extends ExpressionImpl implements Interval
    * @generated
    */
   @Override
-  public boolean isClosed_min()
+  protected EClass eStaticClass()
   {
-    return closed_min;
+    return ContractLangPackage.Literals.INTERVAL;
   }
 
   /**
@@ -143,12 +113,9 @@ public class IntervalImpl extends ExpressionImpl implements Interval
    * @generated
    */
   @Override
-  public void setClosed_min(boolean newClosed_min)
+  public IntervalBound getL_bound()
   {
-    boolean oldClosed_min = closed_min;
-    closed_min = newClosed_min;
-    if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__CLOSED_MIN, oldClosed_min, closed_min));
+    return l_bound;
   }
 
   /**
@@ -156,10 +123,16 @@ public class IntervalImpl extends ExpressionImpl implements Interval
    * <!-- end-user-doc -->
    * @generated
    */
-  @Override
-  public boolean isClosed_max()
+  public NotificationChain basicSetL_bound(IntervalBound newL_bound, NotificationChain msgs)
   {
-    return closed_max;
+    IntervalBound oldL_bound = l_bound;
+    l_bound = newL_bound;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__LBOUND, oldL_bound, newL_bound);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
   }
 
   /**
@@ -168,12 +141,20 @@ public class IntervalImpl extends ExpressionImpl implements Interval
    * @generated
    */
   @Override
-  public void setClosed_max(boolean newClosed_max)
+  public void setL_bound(IntervalBound newL_bound)
   {
-    boolean oldClosed_max = closed_max;
-    closed_max = newClosed_max;
-    if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__CLOSED_MAX, oldClosed_max, closed_max));
+    if (newL_bound != l_bound)
+    {
+      NotificationChain msgs = null;
+      if (l_bound != null)
+        msgs = ((InternalEObject)l_bound).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.INTERVAL__LBOUND, null, msgs);
+      if (newL_bound != null)
+        msgs = ((InternalEObject)newL_bound).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.INTERVAL__LBOUND, null, msgs);
+      msgs = basicSetL_bound(newL_bound, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__LBOUND, newL_bound, newL_bound));
   }
 
   /**
@@ -326,6 +307,56 @@ public class IntervalImpl extends ExpressionImpl implements Interval
       eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__UNIT, newUnit, newUnit));
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public IntervalBound getR_bound()
+  {
+    return r_bound;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetR_bound(IntervalBound newR_bound, NotificationChain msgs)
+  {
+    IntervalBound oldR_bound = r_bound;
+    r_bound = newR_bound;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__RBOUND, oldR_bound, newR_bound);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setR_bound(IntervalBound newR_bound)
+  {
+    if (newR_bound != r_bound)
+    {
+      NotificationChain msgs = null;
+      if (r_bound != null)
+        msgs = ((InternalEObject)r_bound).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.INTERVAL__RBOUND, null, msgs);
+      if (newR_bound != null)
+        msgs = ((InternalEObject)newR_bound).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.INTERVAL__RBOUND, null, msgs);
+      msgs = basicSetR_bound(newR_bound, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.INTERVAL__RBOUND, newR_bound, newR_bound));
+  }
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -336,12 +367,16 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   {
     switch (featureID)
     {
+      case ContractLangPackage.INTERVAL__LBOUND:
+        return basicSetL_bound(null, msgs);
       case ContractLangPackage.INTERVAL__MIN:
         return basicSetMin(null, msgs);
       case ContractLangPackage.INTERVAL__MAX:
         return basicSetMax(null, msgs);
       case ContractLangPackage.INTERVAL__UNIT:
         return basicSetUnit(null, msgs);
+      case ContractLangPackage.INTERVAL__RBOUND:
+        return basicSetR_bound(null, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
   }
@@ -356,16 +391,16 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   {
     switch (featureID)
     {
-      case ContractLangPackage.INTERVAL__CLOSED_MIN:
-        return isClosed_min();
-      case ContractLangPackage.INTERVAL__CLOSED_MAX:
-        return isClosed_max();
+      case ContractLangPackage.INTERVAL__LBOUND:
+        return getL_bound();
       case ContractLangPackage.INTERVAL__MIN:
         return getMin();
       case ContractLangPackage.INTERVAL__MAX:
         return getMax();
       case ContractLangPackage.INTERVAL__UNIT:
         return getUnit();
+      case ContractLangPackage.INTERVAL__RBOUND:
+        return getR_bound();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -380,11 +415,8 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   {
     switch (featureID)
     {
-      case ContractLangPackage.INTERVAL__CLOSED_MIN:
-        setClosed_min((Boolean)newValue);
-        return;
-      case ContractLangPackage.INTERVAL__CLOSED_MAX:
-        setClosed_max((Boolean)newValue);
+      case ContractLangPackage.INTERVAL__LBOUND:
+        setL_bound((IntervalBound)newValue);
         return;
       case ContractLangPackage.INTERVAL__MIN:
         setMin((Value)newValue);
@@ -395,6 +427,9 @@ public class IntervalImpl extends ExpressionImpl implements Interval
       case ContractLangPackage.INTERVAL__UNIT:
         setUnit((Unit)newValue);
         return;
+      case ContractLangPackage.INTERVAL__RBOUND:
+        setR_bound((IntervalBound)newValue);
+        return;
     }
     super.eSet(featureID, newValue);
   }
@@ -409,11 +444,8 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   {
     switch (featureID)
     {
-      case ContractLangPackage.INTERVAL__CLOSED_MIN:
-        setClosed_min(CLOSED_MIN_EDEFAULT);
-        return;
-      case ContractLangPackage.INTERVAL__CLOSED_MAX:
-        setClosed_max(CLOSED_MAX_EDEFAULT);
+      case ContractLangPackage.INTERVAL__LBOUND:
+        setL_bound((IntervalBound)null);
         return;
       case ContractLangPackage.INTERVAL__MIN:
         setMin((Value)null);
@@ -424,6 +456,9 @@ public class IntervalImpl extends ExpressionImpl implements Interval
       case ContractLangPackage.INTERVAL__UNIT:
         setUnit((Unit)null);
         return;
+      case ContractLangPackage.INTERVAL__RBOUND:
+        setR_bound((IntervalBound)null);
+        return;
     }
     super.eUnset(featureID);
   }
@@ -438,37 +473,18 @@ public class IntervalImpl extends ExpressionImpl implements Interval
   {
     switch (featureID)
     {
-      case ContractLangPackage.INTERVAL__CLOSED_MIN:
-        return closed_min != CLOSED_MIN_EDEFAULT;
-      case ContractLangPackage.INTERVAL__CLOSED_MAX:
-        return closed_max != CLOSED_MAX_EDEFAULT;
+      case ContractLangPackage.INTERVAL__LBOUND:
+        return l_bound != null;
       case ContractLangPackage.INTERVAL__MIN:
         return min != null;
       case ContractLangPackage.INTERVAL__MAX:
         return max != null;
       case ContractLangPackage.INTERVAL__UNIT:
         return unit != null;
+      case ContractLangPackage.INTERVAL__RBOUND:
+        return r_bound != null;
     }
     return super.eIsSet(featureID);
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public String toString()
-  {
-    if (eIsProxy()) return super.toString();
-
-    StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (closed_min: ");
-    result.append(closed_min);
-    result.append(", closed_max: ");
-    result.append(closed_max);
-    result.append(')');
-    return result.toString();
-  }
-
 } //IntervalImpl

+ 41 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/KilometersImpl.java

@@ -0,0 +1,41 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.Kilometers;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Kilometers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class KilometersImpl extends SAHARAUnitImpl implements Kilometers
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KilometersImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.KILOMETERS;
+  }
+
+} //KilometersImpl

+ 41 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/KilometersPerHourImpl.java

@@ -0,0 +1,41 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.KilometersPerHour;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Kilometers Per Hour</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class KilometersPerHourImpl extends SAHARAUnitImpl implements KilometersPerHour
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected KilometersPerHourImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.KILOMETERS_PER_HOUR;
+  }
+
+} //KilometersPerHourImpl

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MetersImpl.java

@@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.EClass;
  *
  * @generated
  */
-public class MetersImpl extends UnitImpl implements Meters
+public class MetersImpl extends SAHARAUnitImpl implements Meters
 {
   /**
    * <!-- begin-user-doc -->

+ 1 - 1
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/MetersPerSecondImpl.java

@@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.EClass;
  *
  * @generated
  */
-public class MetersPerSecondImpl extends UnitImpl implements MetersPerSecond
+public class MetersPerSecondImpl extends SAHARAUnitImpl implements MetersPerSecond
 {
   /**
    * <!-- begin-user-doc -->

+ 1 - 3
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/NumValueImpl.java

@@ -8,8 +8,6 @@ import be.uantwerpen.cosys.contractLang.NumValue;
 
 import org.eclipse.emf.ecore.EClass;
 
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
-
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Num Value</b></em>'.
@@ -17,7 +15,7 @@ import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
  *
  * @generated
  */
-public class NumValueImpl extends MinimalEObjectImpl.Container implements NumValue
+public class NumValueImpl extends ExpressionImpl implements NumValue
 {
   /**
    * <!-- begin-user-doc -->

+ 41 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/OpenIntervalImpl.java

@@ -0,0 +1,41 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.OpenInterval;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Open Interval</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class OpenIntervalImpl extends IntervalBoundImpl implements OpenInterval
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected OpenIntervalImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.OPEN_INTERVAL;
+  }
+
+} //OpenIntervalImpl

+ 196 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/PowerBondSuggestionImpl.java

@@ -0,0 +1,196 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.FMUSignal;
+import be.uantwerpen.cosys.contractLang.PowerBondSuggestion;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Power Bond Suggestion</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.PowerBondSuggestionImpl#getOtherSignal <em>Other Signal</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PowerBondSuggestionImpl extends DomainValueImpl implements PowerBondSuggestion
+{
+  /**
+   * The cached value of the '{@link #getOtherSignal() <em>Other Signal</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getOtherSignal()
+   * @generated
+   * @ordered
+   */
+  protected FMUSignal otherSignal;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected PowerBondSuggestionImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.POWER_BOND_SUGGESTION;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public FMUSignal getOtherSignal()
+  {
+    return otherSignal;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  public NotificationChain basicSetOtherSignal(FMUSignal newOtherSignal, NotificationChain msgs)
+  {
+    FMUSignal oldOtherSignal = otherSignal;
+    otherSignal = newOtherSignal;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL, oldOtherSignal, newOtherSignal);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setOtherSignal(FMUSignal newOtherSignal)
+  {
+    if (newOtherSignal != otherSignal)
+    {
+      NotificationChain msgs = null;
+      if (otherSignal != null)
+        msgs = ((InternalEObject)otherSignal).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL, null, msgs);
+      if (newOtherSignal != null)
+        msgs = ((InternalEObject)newOtherSignal).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL, null, msgs);
+      msgs = basicSetOtherSignal(newOtherSignal, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL, newOtherSignal, newOtherSignal));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL:
+        return basicSetOtherSignal(null, msgs);
+    }
+    return super.eInverseRemove(otherEnd, featureID, msgs);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL:
+        return getOtherSignal();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL:
+        setOtherSignal((FMUSignal)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL:
+        setOtherSignal((FMUSignal)null);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.POWER_BOND_SUGGESTION__OTHER_SIGNAL:
+        return otherSignal != null;
+    }
+    return super.eIsSet(featureID);
+  }
+
+} //PowerBondSuggestionImpl

+ 16 - 16
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/RecurrenceImpl.java

@@ -4,7 +4,7 @@
 package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
-import be.uantwerpen.cosys.contractLang.Recurrence;
+import be.uantwerpen.cosys.contractLang.RecurrencePattern;
 import be.uantwerpen.cosys.contractLang.SingleTime;
 
 import org.eclipse.emf.common.notify.Notification;
@@ -17,18 +17,18 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Recurrence</b></em>'.
+ * An implementation of the model object '<em><b>Recurrence Pattern</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * </p>
  * <ul>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.RecurrenceImpl#getTime <em>Time</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.RecurrencePatternImpl#getTime <em>Time</em>}</li>
  * </ul>
  *
  * @generated
  */
-public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
+public class RecurrencePatternImpl extends OccurrenceImpl implements RecurrencePattern
 {
   /**
    * The cached value of the '{@link #getTime() <em>Time</em>}' containment reference.
@@ -45,7 +45,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
    * <!-- end-user-doc -->
    * @generated
    */
-  protected RecurrenceImpl()
+  protected RecurrencePatternImpl()
   {
     super();
   }
@@ -58,7 +58,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   @Override
   protected EClass eStaticClass()
   {
-    return ContractLangPackage.Literals.RECURRENCE;
+    return ContractLangPackage.Literals.RECURRENCE_PATTERN;
   }
 
   /**
@@ -83,7 +83,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
     time = newTime;
     if (eNotificationRequired())
     {
-      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.RECURRENCE__TIME, oldTime, newTime);
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.RECURRENCE_PATTERN__TIME, oldTime, newTime);
       if (msgs == null) msgs = notification; else msgs.add(notification);
     }
     return msgs;
@@ -101,14 +101,14 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
     {
       NotificationChain msgs = null;
       if (time != null)
-        msgs = ((InternalEObject)time).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.RECURRENCE__TIME, null, msgs);
+        msgs = ((InternalEObject)time).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.RECURRENCE_PATTERN__TIME, null, msgs);
       if (newTime != null)
-        msgs = ((InternalEObject)newTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.RECURRENCE__TIME, null, msgs);
+        msgs = ((InternalEObject)newTime).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.RECURRENCE_PATTERN__TIME, null, msgs);
       msgs = basicSetTime(newTime, msgs);
       if (msgs != null) msgs.dispatch();
     }
     else if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.RECURRENCE__TIME, newTime, newTime));
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.RECURRENCE_PATTERN__TIME, newTime, newTime));
   }
 
   /**
@@ -121,7 +121,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   {
     switch (featureID)
     {
-      case ContractLangPackage.RECURRENCE__TIME:
+      case ContractLangPackage.RECURRENCE_PATTERN__TIME:
         return basicSetTime(null, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
@@ -137,7 +137,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   {
     switch (featureID)
     {
-      case ContractLangPackage.RECURRENCE__TIME:
+      case ContractLangPackage.RECURRENCE_PATTERN__TIME:
         return getTime();
     }
     return super.eGet(featureID, resolve, coreType);
@@ -153,7 +153,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   {
     switch (featureID)
     {
-      case ContractLangPackage.RECURRENCE__TIME:
+      case ContractLangPackage.RECURRENCE_PATTERN__TIME:
         setTime((SingleTime)newValue);
         return;
     }
@@ -170,7 +170,7 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   {
     switch (featureID)
     {
-      case ContractLangPackage.RECURRENCE__TIME:
+      case ContractLangPackage.RECURRENCE_PATTERN__TIME:
         setTime((SingleTime)null);
         return;
     }
@@ -187,10 +187,10 @@ public class RecurrenceImpl extends OccurrenceImpl implements Recurrence
   {
     switch (featureID)
     {
-      case ContractLangPackage.RECURRENCE__TIME:
+      case ContractLangPackage.RECURRENCE_PATTERN__TIME:
         return time != null;
     }
     return super.eIsSet(featureID);
   }
 
-} //RecurrenceImpl
+} //RecurrencePatternImpl

+ 180 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARAPropertyImpl.java

@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.SAHARAProperty;
+import be.uantwerpen.cosys.contractLang.SAHARAPropertyEnum;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAHARA Property</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.SAHARAPropertyImpl#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SAHARAPropertyImpl extends VariableImpl implements SAHARAProperty
+{
+  /**
+   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected static final SAHARAPropertyEnum VAL_EDEFAULT = SAHARAPropertyEnum.ACCEL;
+
+  /**
+   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected SAHARAPropertyEnum val = VAL_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SAHARAPropertyImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.SAHARA_PROPERTY;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARAPropertyEnum getVal()
+  {
+    return val;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setVal(SAHARAPropertyEnum newVal)
+  {
+    SAHARAPropertyEnum oldVal = val;
+    val = newVal == null ? VAL_EDEFAULT : newVal;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.SAHARA_PROPERTY__VAL, oldVal, val));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_PROPERTY__VAL:
+        return getVal();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_PROPERTY__VAL:
+        setVal((SAHARAPropertyEnum)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_PROPERTY__VAL:
+        setVal(VAL_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_PROPERTY__VAL:
+        return val != VAL_EDEFAULT;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (val: ");
+    result.append(val);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SAHARAPropertyImpl

+ 41 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARAUnitImpl.java

@@ -0,0 +1,41 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.SAHARAUnit;
+
+import org.eclipse.emf.ecore.EClass;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAHARA Unit</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SAHARAUnitImpl extends UnitImpl implements SAHARAUnit
+{
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SAHARAUnitImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.SAHARA_UNIT;
+  }
+
+} //SAHARAUnitImpl

+ 180 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_CImpl.java

@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.SAHARA_C;
+import be.uantwerpen.cosys.contractLang.SAHARA_C_Enum;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAHARA C</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.SAHARA_CImpl#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SAHARA_CImpl extends AssignActionImpl implements SAHARA_C
+{
+  /**
+   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected static final SAHARA_C_Enum VAL_EDEFAULT = SAHARA_C_Enum.C0;
+
+  /**
+   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected SAHARA_C_Enum val = VAL_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SAHARA_CImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.SAHARA_C;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_C_Enum getVal()
+  {
+    return val;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setVal(SAHARA_C_Enum newVal)
+  {
+    SAHARA_C_Enum oldVal = val;
+    val = newVal == null ? VAL_EDEFAULT : newVal;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.SAHARA_C__VAL, oldVal, val));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_C__VAL:
+        return getVal();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_C__VAL:
+        setVal((SAHARA_C_Enum)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_C__VAL:
+        setVal(VAL_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_C__VAL:
+        return val != VAL_EDEFAULT;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (val: ");
+    result.append(val);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SAHARA_CImpl

+ 180 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_EImpl.java

@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.SAHARA_E;
+import be.uantwerpen.cosys.contractLang.SAHARA_E_Enum;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAHARA E</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.SAHARA_EImpl#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SAHARA_EImpl extends AssignActionImpl implements SAHARA_E
+{
+  /**
+   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected static final SAHARA_E_Enum VAL_EDEFAULT = SAHARA_E_Enum.E0;
+
+  /**
+   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected SAHARA_E_Enum val = VAL_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SAHARA_EImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.SAHARA_E;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_E_Enum getVal()
+  {
+    return val;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setVal(SAHARA_E_Enum newVal)
+  {
+    SAHARA_E_Enum oldVal = val;
+    val = newVal == null ? VAL_EDEFAULT : newVal;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.SAHARA_E__VAL, oldVal, val));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_E__VAL:
+        return getVal();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_E__VAL:
+        setVal((SAHARA_E_Enum)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_E__VAL:
+        setVal(VAL_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_E__VAL:
+        return val != VAL_EDEFAULT;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (val: ");
+    result.append(val);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SAHARA_EImpl

+ 180 - 0
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/SAHARA_SImpl.java

@@ -0,0 +1,180 @@
+/**
+ * generated by Xtext 2.16.0
+ */
+package be.uantwerpen.cosys.contractLang.impl;
+
+import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.SAHARA_S;
+import be.uantwerpen.cosys.contractLang.SAHARA_S_Enum;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SAHARA S</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.SAHARA_SImpl#getVal <em>Val</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SAHARA_SImpl extends AssignActionImpl implements SAHARA_S
+{
+  /**
+   * The default value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected static final SAHARA_S_Enum VAL_EDEFAULT = SAHARA_S_Enum.S0;
+
+  /**
+   * The cached value of the '{@link #getVal() <em>Val</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getVal()
+   * @generated
+   * @ordered
+   */
+  protected SAHARA_S_Enum val = VAL_EDEFAULT;
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  protected SAHARA_SImpl()
+  {
+    super();
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.SAHARA_S;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public SAHARA_S_Enum getVal()
+  {
+    return val;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setVal(SAHARA_S_Enum newVal)
+  {
+    SAHARA_S_Enum oldVal = val;
+    val = newVal == null ? VAL_EDEFAULT : newVal;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.SAHARA_S__VAL, oldVal, val));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_S__VAL:
+        return getVal();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_S__VAL:
+        setVal((SAHARA_S_Enum)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_S__VAL:
+        setVal(VAL_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.SAHARA_S__VAL:
+        return val != VAL_EDEFAULT;
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (val: ");
+    result.append(val);
+    result.append(')');
+    return result.toString();
+  }
+
+} //SAHARA_SImpl

+ 97 - 81
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/TimeIntervalImpl.java

@@ -4,6 +4,7 @@
 package be.uantwerpen.cosys.contractLang.impl;
 
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
+import be.uantwerpen.cosys.contractLang.IntervalBound;
 import be.uantwerpen.cosys.contractLang.NumValue;
 import be.uantwerpen.cosys.contractLang.TimeInterval;
 
@@ -23,16 +24,26 @@ import org.eclipse.emf.ecore.impl.ENotificationImpl;
  * The following features are implemented:
  * </p>
  * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#getL_bound <em>Lbound</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#getMin <em>Min</em>}</li>
  *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#getMax <em>Max</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#isClosed_min <em>Closed min</em>}</li>
- *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#isClosed_max <em>Closed max</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeIntervalImpl#getR_bound <em>Rbound</em>}</li>
  * </ul>
  *
  * @generated
  */
 public class TimeIntervalImpl extends TimeImpl implements TimeInterval
 {
+  /**
+   * The cached value of the '{@link #getL_bound() <em>Lbound</em>}' containment reference.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getL_bound()
+   * @generated
+   * @ordered
+   */
+  protected IntervalBound l_bound;
+
   /**
    * The cached value of the '{@link #getMin() <em>Min</em>}' containment reference.
    * <!-- begin-user-doc -->
@@ -54,53 +65,62 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   protected NumValue max;
 
   /**
-   * The default value of the '{@link #isClosed_min() <em>Closed min</em>}' attribute.
+   * The cached value of the '{@link #getR_bound() <em>Rbound</em>}' containment reference.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #isClosed_min()
+   * @see #getR_bound()
    * @generated
    * @ordered
    */
-  protected static final boolean CLOSED_MIN_EDEFAULT = false;
+  protected IntervalBound r_bound;
 
   /**
-   * The cached value of the '{@link #isClosed_min() <em>Closed min</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #isClosed_min()
    * @generated
-   * @ordered
    */
-  protected boolean closed_min = CLOSED_MIN_EDEFAULT;
+  protected TimeIntervalImpl()
+  {
+    super();
+  }
 
   /**
-   * The default value of the '{@link #isClosed_max() <em>Closed max</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #isClosed_max()
    * @generated
-   * @ordered
    */
-  protected static final boolean CLOSED_MAX_EDEFAULT = false;
+  @Override
+  protected EClass eStaticClass()
+  {
+    return ContractLangPackage.Literals.TIME_INTERVAL;
+  }
 
   /**
-   * The cached value of the '{@link #isClosed_max() <em>Closed max</em>}' attribute.
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
-   * @see #isClosed_max()
    * @generated
-   * @ordered
    */
-  protected boolean closed_max = CLOSED_MAX_EDEFAULT;
+  @Override
+  public IntervalBound getL_bound()
+  {
+    return l_bound;
+  }
 
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
    * @generated
    */
-  protected TimeIntervalImpl()
+  public NotificationChain basicSetL_bound(IntervalBound newL_bound, NotificationChain msgs)
   {
-    super();
+    IntervalBound oldL_bound = l_bound;
+    l_bound = newL_bound;
+    if (eNotificationRequired())
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__LBOUND, oldL_bound, newL_bound);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
   }
 
   /**
@@ -109,9 +129,20 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
    * @generated
    */
   @Override
-  protected EClass eStaticClass()
+  public void setL_bound(IntervalBound newL_bound)
   {
-    return ContractLangPackage.Literals.TIME_INTERVAL;
+    if (newL_bound != l_bound)
+    {
+      NotificationChain msgs = null;
+      if (l_bound != null)
+        msgs = ((InternalEObject)l_bound).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.TIME_INTERVAL__LBOUND, null, msgs);
+      if (newL_bound != null)
+        msgs = ((InternalEObject)newL_bound).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.TIME_INTERVAL__LBOUND, null, msgs);
+      msgs = basicSetL_bound(newL_bound, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__LBOUND, newL_bound, newL_bound));
   }
 
   /**
@@ -220,9 +251,9 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
    * @generated
    */
   @Override
-  public boolean isClosed_min()
+  public IntervalBound getR_bound()
   {
-    return closed_min;
+    return r_bound;
   }
 
   /**
@@ -230,24 +261,16 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
    * <!-- end-user-doc -->
    * @generated
    */
-  @Override
-  public void setClosed_min(boolean newClosed_min)
+  public NotificationChain basicSetR_bound(IntervalBound newR_bound, NotificationChain msgs)
   {
-    boolean oldClosed_min = closed_min;
-    closed_min = newClosed_min;
+    IntervalBound oldR_bound = r_bound;
+    r_bound = newR_bound;
     if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__CLOSED_MIN, oldClosed_min, closed_min));
-  }
-
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public boolean isClosed_max()
-  {
-    return closed_max;
+    {
+      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__RBOUND, oldR_bound, newR_bound);
+      if (msgs == null) msgs = notification; else msgs.add(notification);
+    }
+    return msgs;
   }
 
   /**
@@ -256,12 +279,20 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
    * @generated
    */
   @Override
-  public void setClosed_max(boolean newClosed_max)
+  public void setR_bound(IntervalBound newR_bound)
   {
-    boolean oldClosed_max = closed_max;
-    closed_max = newClosed_max;
-    if (eNotificationRequired())
-      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__CLOSED_MAX, oldClosed_max, closed_max));
+    if (newR_bound != r_bound)
+    {
+      NotificationChain msgs = null;
+      if (r_bound != null)
+        msgs = ((InternalEObject)r_bound).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.TIME_INTERVAL__RBOUND, null, msgs);
+      if (newR_bound != null)
+        msgs = ((InternalEObject)newR_bound).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ContractLangPackage.TIME_INTERVAL__RBOUND, null, msgs);
+      msgs = basicSetR_bound(newR_bound, msgs);
+      if (msgs != null) msgs.dispatch();
+    }
+    else if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_INTERVAL__RBOUND, newR_bound, newR_bound));
   }
 
   /**
@@ -274,10 +305,14 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   {
     switch (featureID)
     {
+      case ContractLangPackage.TIME_INTERVAL__LBOUND:
+        return basicSetL_bound(null, msgs);
       case ContractLangPackage.TIME_INTERVAL__MIN:
         return basicSetMin(null, msgs);
       case ContractLangPackage.TIME_INTERVAL__MAX:
         return basicSetMax(null, msgs);
+      case ContractLangPackage.TIME_INTERVAL__RBOUND:
+        return basicSetR_bound(null, msgs);
     }
     return super.eInverseRemove(otherEnd, featureID, msgs);
   }
@@ -292,14 +327,14 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   {
     switch (featureID)
     {
+      case ContractLangPackage.TIME_INTERVAL__LBOUND:
+        return getL_bound();
       case ContractLangPackage.TIME_INTERVAL__MIN:
         return getMin();
       case ContractLangPackage.TIME_INTERVAL__MAX:
         return getMax();
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MIN:
-        return isClosed_min();
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MAX:
-        return isClosed_max();
+      case ContractLangPackage.TIME_INTERVAL__RBOUND:
+        return getR_bound();
     }
     return super.eGet(featureID, resolve, coreType);
   }
@@ -314,17 +349,17 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   {
     switch (featureID)
     {
+      case ContractLangPackage.TIME_INTERVAL__LBOUND:
+        setL_bound((IntervalBound)newValue);
+        return;
       case ContractLangPackage.TIME_INTERVAL__MIN:
         setMin((NumValue)newValue);
         return;
       case ContractLangPackage.TIME_INTERVAL__MAX:
         setMax((NumValue)newValue);
         return;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MIN:
-        setClosed_min((Boolean)newValue);
-        return;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MAX:
-        setClosed_max((Boolean)newValue);
+      case ContractLangPackage.TIME_INTERVAL__RBOUND:
+        setR_bound((IntervalBound)newValue);
         return;
     }
     super.eSet(featureID, newValue);
@@ -340,17 +375,17 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   {
     switch (featureID)
     {
+      case ContractLangPackage.TIME_INTERVAL__LBOUND:
+        setL_bound((IntervalBound)null);
+        return;
       case ContractLangPackage.TIME_INTERVAL__MIN:
         setMin((NumValue)null);
         return;
       case ContractLangPackage.TIME_INTERVAL__MAX:
         setMax((NumValue)null);
         return;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MIN:
-        setClosed_min(CLOSED_MIN_EDEFAULT);
-        return;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MAX:
-        setClosed_max(CLOSED_MAX_EDEFAULT);
+      case ContractLangPackage.TIME_INTERVAL__RBOUND:
+        setR_bound((IntervalBound)null);
         return;
     }
     super.eUnset(featureID);
@@ -366,35 +401,16 @@ public class TimeIntervalImpl extends TimeImpl implements TimeInterval
   {
     switch (featureID)
     {
+      case ContractLangPackage.TIME_INTERVAL__LBOUND:
+        return l_bound != null;
       case ContractLangPackage.TIME_INTERVAL__MIN:
         return min != null;
       case ContractLangPackage.TIME_INTERVAL__MAX:
         return max != null;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MIN:
-        return closed_min != CLOSED_MIN_EDEFAULT;
-      case ContractLangPackage.TIME_INTERVAL__CLOSED_MAX:
-        return closed_max != CLOSED_MAX_EDEFAULT;
+      case ContractLangPackage.TIME_INTERVAL__RBOUND:
+        return r_bound != null;
     }
     return super.eIsSet(featureID);
   }
 
-  /**
-   * <!-- begin-user-doc -->
-   * <!-- end-user-doc -->
-   * @generated
-   */
-  @Override
-  public String toString()
-  {
-    if (eIsProxy()) return super.toString();
-
-    StringBuilder result = new StringBuilder(super.toString());
-    result.append(" (closed_min: ");
-    result.append(closed_min);
-    result.append(", closed_max: ");
-    result.append(closed_max);
-    result.append(')');
-    return result.toString();
-  }
-
 } //TimeIntervalImpl

+ 196 - 2
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/impl/TimeUnitImpl.java

@@ -6,19 +6,68 @@ package be.uantwerpen.cosys.contractLang.impl;
 import be.uantwerpen.cosys.contractLang.ContractLangPackage;
 import be.uantwerpen.cosys.contractLang.TimeUnit;
 
+import org.eclipse.emf.common.notify.Notification;
+
 import org.eclipse.emf.ecore.EClass;
 
-import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Time Unit</b></em>'.
  * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeUnitImpl#getMilliseconds <em>Milliseconds</em>}</li>
+ *   <li>{@link be.uantwerpen.cosys.contractLang.impl.TimeUnitImpl#getSeconds <em>Seconds</em>}</li>
+ * </ul>
  *
  * @generated
  */
-public class TimeUnitImpl extends MinimalEObjectImpl.Container implements TimeUnit
+public class TimeUnitImpl extends UnitImpl implements TimeUnit
 {
+  /**
+   * The default value of the '{@link #getMilliseconds() <em>Milliseconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getMilliseconds()
+   * @generated
+   * @ordered
+   */
+  protected static final String MILLISECONDS_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getMilliseconds() <em>Milliseconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getMilliseconds()
+   * @generated
+   * @ordered
+   */
+  protected String milliseconds = MILLISECONDS_EDEFAULT;
+
+  /**
+   * The default value of the '{@link #getSeconds() <em>Seconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSeconds()
+   * @generated
+   * @ordered
+   */
+  protected static final String SECONDS_EDEFAULT = null;
+
+  /**
+   * The cached value of the '{@link #getSeconds() <em>Seconds</em>}' attribute.
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @see #getSeconds()
+   * @generated
+   * @ordered
+   */
+  protected String seconds = SECONDS_EDEFAULT;
+
   /**
    * <!-- begin-user-doc -->
    * <!-- end-user-doc -->
@@ -40,4 +89,149 @@ public class TimeUnitImpl extends MinimalEObjectImpl.Container implements TimeUn
     return ContractLangPackage.Literals.TIME_UNIT;
   }
 
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getMilliseconds()
+  {
+    return milliseconds;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setMilliseconds(String newMilliseconds)
+  {
+    String oldMilliseconds = milliseconds;
+    milliseconds = newMilliseconds;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_UNIT__MILLISECONDS, oldMilliseconds, milliseconds));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String getSeconds()
+  {
+    return seconds;
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void setSeconds(String newSeconds)
+  {
+    String oldSeconds = seconds;
+    seconds = newSeconds;
+    if (eNotificationRequired())
+      eNotify(new ENotificationImpl(this, Notification.SET, ContractLangPackage.TIME_UNIT__SECONDS, oldSeconds, seconds));
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public Object eGet(int featureID, boolean resolve, boolean coreType)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.TIME_UNIT__MILLISECONDS:
+        return getMilliseconds();
+      case ContractLangPackage.TIME_UNIT__SECONDS:
+        return getSeconds();
+    }
+    return super.eGet(featureID, resolve, coreType);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eSet(int featureID, Object newValue)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.TIME_UNIT__MILLISECONDS:
+        setMilliseconds((String)newValue);
+        return;
+      case ContractLangPackage.TIME_UNIT__SECONDS:
+        setSeconds((String)newValue);
+        return;
+    }
+    super.eSet(featureID, newValue);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public void eUnset(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.TIME_UNIT__MILLISECONDS:
+        setMilliseconds(MILLISECONDS_EDEFAULT);
+        return;
+      case ContractLangPackage.TIME_UNIT__SECONDS:
+        setSeconds(SECONDS_EDEFAULT);
+        return;
+    }
+    super.eUnset(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public boolean eIsSet(int featureID)
+  {
+    switch (featureID)
+    {
+      case ContractLangPackage.TIME_UNIT__MILLISECONDS:
+        return MILLISECONDS_EDEFAULT == null ? milliseconds != null : !MILLISECONDS_EDEFAULT.equals(milliseconds);
+      case ContractLangPackage.TIME_UNIT__SECONDS:
+        return SECONDS_EDEFAULT == null ? seconds != null : !SECONDS_EDEFAULT.equals(seconds);
+    }
+    return super.eIsSet(featureID);
+  }
+
+  /**
+   * <!-- begin-user-doc -->
+   * <!-- end-user-doc -->
+   * @generated
+   */
+  @Override
+  public String toString()
+  {
+    if (eIsProxy()) return super.toString();
+
+    StringBuilder result = new StringBuilder(super.toString());
+    result.append(" (Milliseconds: ");
+    result.append(milliseconds);
+    result.append(", Seconds: ");
+    result.append(seconds);
+    result.append(')');
+    return result.toString();
+  }
+
 } //TimeUnitImpl

+ 341 - 121
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/util/ContractLangAdapterFactory.java

@@ -221,9 +221,9 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createMaxDurationPatternAdapter();
       }
       @Override
-      public Adapter caseRecurrence(Recurrence object)
+      public Adapter caseRecurrencePattern(RecurrencePattern object)
       {
-        return createRecurrenceAdapter();
+        return createRecurrencePatternAdapter();
       }
       @Override
       public Adapter casePrecStatement(PrecStatement object)
@@ -306,16 +306,6 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createTimeUnitAdapter();
       }
       @Override
-      public Adapter caseMilliseconds(Milliseconds object)
-      {
-        return createMillisecondsAdapter();
-      }
-      @Override
-      public Adapter caseSeconds(Seconds object)
-      {
-        return createSecondsAdapter();
-      }
-      @Override
       public Adapter caseProbability(Probability object)
       {
         return createProbabilityAdapter();
@@ -366,11 +356,36 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createNumValueAdapter();
       }
       @Override
+      public Adapter caseInfinity(Infinity object)
+      {
+        return createInfinityAdapter();
+      }
+      @Override
+      public Adapter caseIntValue(IntValue object)
+      {
+        return createIntValueAdapter();
+      }
+      @Override
+      public Adapter caseFloatValue(FloatValue object)
+      {
+        return createFloatValueAdapter();
+      }
+      @Override
       public Adapter caseUnit(Unit object)
       {
         return createUnitAdapter();
       }
       @Override
+      public Adapter caseUnitless(Unitless object)
+      {
+        return createUnitlessAdapter();
+      }
+      @Override
+      public Adapter casePercentage(Percentage object)
+      {
+        return createPercentageAdapter();
+      }
+      @Override
       public Adapter caseDerivative(Derivative object)
       {
         return createDerivativeAdapter();
@@ -391,21 +406,6 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createAverageAdapter();
       }
       @Override
-      public Adapter caseInfinity(Infinity object)
-      {
-        return createInfinityAdapter();
-      }
-      @Override
-      public Adapter caseIntValue(IntValue object)
-      {
-        return createIntValueAdapter();
-      }
-      @Override
-      public Adapter caseFloatValue(FloatValue object)
-      {
-        return createFloatValueAdapter();
-      }
-      @Override
       public Adapter caseEquality(Equality object)
       {
         return createEqualityAdapter();
@@ -451,19 +451,24 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createIntervalAdapter();
       }
       @Override
-      public Adapter caseValueWithUnit(ValueWithUnit object)
+      public Adapter caseIntervalBound(IntervalBound object)
       {
-        return createValueWithUnitAdapter();
+        return createIntervalBoundAdapter();
       }
       @Override
-      public Adapter caseUnitless(Unitless object)
+      public Adapter caseOpenInterval(OpenInterval object)
       {
-        return createUnitlessAdapter();
+        return createOpenIntervalAdapter();
       }
       @Override
-      public Adapter casePercentage(Percentage object)
+      public Adapter caseClosedInterval(ClosedInterval object)
       {
-        return createPercentageAdapter();
+        return createClosedIntervalAdapter();
+      }
+      @Override
+      public Adapter caseValueWithUnit(ValueWithUnit object)
+      {
+        return createValueWithUnitAdapter();
       }
       @Override
       public Adapter caseAssignAction(AssignAction object)
@@ -486,11 +491,6 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createVariableAdapter();
       }
       @Override
-      public Adapter caseFrequency(Frequency object)
-      {
-        return createFrequencyAdapter();
-      }
-      @Override
       public Adapter caseFMUProperty(FMUProperty object)
       {
         return createFMUPropertyAdapter();
@@ -511,9 +511,44 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createSteadyStateSuggestionAdapter();
       }
       @Override
-      public Adapter caseMetersPerSecond(MetersPerSecond object)
+      public Adapter casePowerBondSuggestion(PowerBondSuggestion object)
       {
-        return createMetersPerSecondAdapter();
+        return createPowerBondSuggestionAdapter();
+      }
+      @Override
+      public Adapter caseCosimUnit(CosimUnit object)
+      {
+        return createCosimUnitAdapter();
+      }
+      @Override
+      public Adapter caseFrequency(Frequency object)
+      {
+        return createFrequencyAdapter();
+      }
+      @Override
+      public Adapter caseSAHARAProperty(SAHARAProperty object)
+      {
+        return createSAHARAPropertyAdapter();
+      }
+      @Override
+      public Adapter caseSAHARA_S(SAHARA_S object)
+      {
+        return createSAHARA_SAdapter();
+      }
+      @Override
+      public Adapter caseSAHARA_E(SAHARA_E object)
+      {
+        return createSAHARA_EAdapter();
+      }
+      @Override
+      public Adapter caseSAHARA_C(SAHARA_C object)
+      {
+        return createSAHARA_CAdapter();
+      }
+      @Override
+      public Adapter caseSAHARAUnit(SAHARAUnit object)
+      {
+        return createSAHARAUnitAdapter();
       }
       @Override
       public Adapter caseMeters(Meters object)
@@ -521,6 +556,26 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
         return createMetersAdapter();
       }
       @Override
+      public Adapter caseMetersPerSecond(MetersPerSecond object)
+      {
+        return createMetersPerSecondAdapter();
+      }
+      @Override
+      public Adapter caseKilometers(Kilometers object)
+      {
+        return createKilometersAdapter();
+      }
+      @Override
+      public Adapter caseKilometersPerHour(KilometersPerHour object)
+      {
+        return createKilometersPerHourAdapter();
+      }
+      @Override
+      public Adapter caseForce(Force object)
+      {
+        return createForceAdapter();
+      }
+      @Override
       public Adapter defaultCase(EObject object)
       {
         return createEObjectAdapter();
@@ -978,16 +1033,16 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Recurrence <em>Recurrence</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.RecurrencePattern <em>Recurrence Pattern</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Recurrence
+   * @see be.uantwerpen.cosys.contractLang.RecurrencePattern
    * @generated
    */
-  public Adapter createRecurrenceAdapter()
+  public Adapter createRecurrencePatternAdapter()
   {
     return null;
   }
@@ -1232,36 +1287,6 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
-  /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Milliseconds <em>Milliseconds</em>}'.
-   * <!-- begin-user-doc -->
-   * This default implementation returns null so that we can easily ignore cases;
-   * it's useful to ignore a case when inheritance will catch all the cases anyway.
-   * <!-- end-user-doc -->
-   * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Milliseconds
-   * @generated
-   */
-  public Adapter createMillisecondsAdapter()
-  {
-    return null;
-  }
-
-  /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Seconds <em>Seconds</em>}'.
-   * <!-- begin-user-doc -->
-   * This default implementation returns null so that we can easily ignore cases;
-   * it's useful to ignore a case when inheritance will catch all the cases anyway.
-   * <!-- end-user-doc -->
-   * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Seconds
-   * @generated
-   */
-  public Adapter createSecondsAdapter()
-  {
-    return null;
-  }
-
   /**
    * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Probability <em>Probability</em>}'.
    * <!-- begin-user-doc -->
@@ -1413,121 +1438,151 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Unit <em>Unit</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Infinity <em>Infinity</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Unit
+   * @see be.uantwerpen.cosys.contractLang.Infinity
    * @generated
    */
-  public Adapter createUnitAdapter()
+  public Adapter createInfinityAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Derivative <em>Derivative</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.IntValue <em>Int Value</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Derivative
+   * @see be.uantwerpen.cosys.contractLang.IntValue
    * @generated
    */
-  public Adapter createDerivativeAdapter()
+  public Adapter createIntValueAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.AbsoluteValue <em>Absolute Value</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FloatValue <em>Float Value</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.AbsoluteValue
+   * @see be.uantwerpen.cosys.contractLang.FloatValue
    * @generated
    */
-  public Adapter createAbsoluteValueAdapter()
+  public Adapter createFloatValueAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Difference <em>Difference</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Unit <em>Unit</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Difference
+   * @see be.uantwerpen.cosys.contractLang.Unit
    * @generated
    */
-  public Adapter createDifferenceAdapter()
+  public Adapter createUnitAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Average <em>Average</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Unitless <em>Unitless</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Average
+   * @see be.uantwerpen.cosys.contractLang.Unitless
    * @generated
    */
-  public Adapter createAverageAdapter()
+  public Adapter createUnitlessAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Infinity <em>Infinity</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Percentage <em>Percentage</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Infinity
+   * @see be.uantwerpen.cosys.contractLang.Percentage
    * @generated
    */
-  public Adapter createInfinityAdapter()
+  public Adapter createPercentageAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.IntValue <em>Int Value</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Derivative <em>Derivative</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.IntValue
+   * @see be.uantwerpen.cosys.contractLang.Derivative
    * @generated
    */
-  public Adapter createIntValueAdapter()
+  public Adapter createDerivativeAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FloatValue <em>Float Value</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.AbsoluteValue <em>Absolute Value</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.FloatValue
+   * @see be.uantwerpen.cosys.contractLang.AbsoluteValue
    * @generated
    */
-  public Adapter createFloatValueAdapter()
+  public Adapter createAbsoluteValueAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Difference <em>Difference</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.Difference
+   * @generated
+   */
+  public Adapter createDifferenceAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Average <em>Average</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.Average
+   * @generated
+   */
+  public Adapter createAverageAdapter()
   {
     return null;
   }
@@ -1668,46 +1723,61 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.ValueWithUnit <em>Value With Unit</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.IntervalBound <em>Interval Bound</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.ValueWithUnit
+   * @see be.uantwerpen.cosys.contractLang.IntervalBound
    * @generated
    */
-  public Adapter createValueWithUnitAdapter()
+  public Adapter createIntervalBoundAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Unitless <em>Unitless</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.OpenInterval <em>Open Interval</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Unitless
+   * @see be.uantwerpen.cosys.contractLang.OpenInterval
    * @generated
    */
-  public Adapter createUnitlessAdapter()
+  public Adapter createOpenIntervalAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Percentage <em>Percentage</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.ClosedInterval <em>Closed Interval</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.Percentage
+   * @see be.uantwerpen.cosys.contractLang.ClosedInterval
    * @generated
    */
-  public Adapter createPercentageAdapter()
+  public Adapter createClosedIntervalAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.ValueWithUnit <em>Value With Unit</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.ValueWithUnit
+   * @generated
+   */
+  public Adapter createValueWithUnitAdapter()
   {
     return null;
   }
@@ -1772,6 +1842,96 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUProperty <em>FMU Property</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.FMUProperty
+   * @generated
+   */
+  public Adapter createFMUPropertyAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUInstance <em>FMU Instance</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.FMUInstance
+   * @generated
+   */
+  public Adapter createFMUInstanceAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUSignal <em>FMU Signal</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.FMUSignal
+   * @generated
+   */
+  public Adapter createFMUSignalAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SteadyStateSuggestion <em>Steady State Suggestion</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.SteadyStateSuggestion
+   * @generated
+   */
+  public Adapter createSteadyStateSuggestionAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.PowerBondSuggestion <em>Power Bond Suggestion</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.PowerBondSuggestion
+   * @generated
+   */
+  public Adapter createPowerBondSuggestionAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.CosimUnit <em>Cosim Unit</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.CosimUnit
+   * @generated
+   */
+  public Adapter createCosimUnitAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Frequency <em>Frequency</em>}'.
    * <!-- begin-user-doc -->
@@ -1788,76 +1948,76 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUProperty <em>FMU Property</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SAHARAProperty <em>SAHARA Property</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.FMUProperty
+   * @see be.uantwerpen.cosys.contractLang.SAHARAProperty
    * @generated
    */
-  public Adapter createFMUPropertyAdapter()
+  public Adapter createSAHARAPropertyAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUInstance <em>FMU Instance</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SAHARA_S <em>SAHARA S</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.FMUInstance
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_S
    * @generated
    */
-  public Adapter createFMUInstanceAdapter()
+  public Adapter createSAHARA_SAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.FMUSignal <em>FMU Signal</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SAHARA_E <em>SAHARA E</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.FMUSignal
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_E
    * @generated
    */
-  public Adapter createFMUSignalAdapter()
+  public Adapter createSAHARA_EAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SteadyStateSuggestion <em>Steady State Suggestion</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SAHARA_C <em>SAHARA C</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.SteadyStateSuggestion
+   * @see be.uantwerpen.cosys.contractLang.SAHARA_C
    * @generated
    */
-  public Adapter createSteadyStateSuggestionAdapter()
+  public Adapter createSAHARA_CAdapter()
   {
     return null;
   }
 
   /**
-   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.MetersPerSecond <em>Meters Per Second</em>}'.
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.SAHARAUnit <em>SAHARA Unit</em>}'.
    * <!-- begin-user-doc -->
    * This default implementation returns null so that we can easily ignore cases;
    * it's useful to ignore a case when inheritance will catch all the cases anyway.
    * <!-- end-user-doc -->
    * @return the new adapter.
-   * @see be.uantwerpen.cosys.contractLang.MetersPerSecond
+   * @see be.uantwerpen.cosys.contractLang.SAHARAUnit
    * @generated
    */
-  public Adapter createMetersPerSecondAdapter()
+  public Adapter createSAHARAUnitAdapter()
   {
     return null;
   }
@@ -1877,6 +2037,66 @@ public class ContractLangAdapterFactory extends AdapterFactoryImpl
     return null;
   }
 
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.MetersPerSecond <em>Meters Per Second</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.MetersPerSecond
+   * @generated
+   */
+  public Adapter createMetersPerSecondAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Kilometers <em>Kilometers</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.Kilometers
+   * @generated
+   */
+  public Adapter createKilometersAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.KilometersPerHour <em>Kilometers Per Hour</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.KilometersPerHour
+   * @generated
+   */
+  public Adapter createKilometersPerHourAdapter()
+  {
+    return null;
+  }
+
+  /**
+   * Creates a new adapter for an object of class '{@link be.uantwerpen.cosys.contractLang.Force <em>Force</em>}'.
+   * <!-- begin-user-doc -->
+   * This default implementation returns null so that we can easily ignore cases;
+   * it's useful to ignore a case when inheritance will catch all the cases anyway.
+   * <!-- end-user-doc -->
+   * @return the new adapter.
+   * @see be.uantwerpen.cosys.contractLang.Force
+   * @generated
+   */
+  public Adapter createForceAdapter()
+  {
+    return null;
+  }
+
   /**
    * Creates a new adapter for the default case.
    * <!-- begin-user-doc -->

+ 436 - 161
be.uantwerpen.cosys.ContractLang/src/be/uantwerpen/cosys/contractLang/util/ContractLangSwitch.java

@@ -308,12 +308,12 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.RECURRENCE:
+      case ContractLangPackage.RECURRENCE_PATTERN:
       {
-        Recurrence recurrence = (Recurrence)theEObject;
-        T result = caseRecurrence(recurrence);
-        if (result == null) result = caseOccurrence(recurrence);
-        if (result == null) result = casePattern(recurrence);
+        RecurrencePattern recurrencePattern = (RecurrencePattern)theEObject;
+        T result = caseRecurrencePattern(recurrencePattern);
+        if (result == null) result = caseOccurrence(recurrencePattern);
+        if (result == null) result = casePattern(recurrencePattern);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
@@ -445,24 +445,7 @@ public class ContractLangSwitch<T> extends Switch<T>
       {
         TimeUnit timeUnit = (TimeUnit)theEObject;
         T result = caseTimeUnit(timeUnit);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
-      case ContractLangPackage.MILLISECONDS:
-      {
-        Milliseconds milliseconds = (Milliseconds)theEObject;
-        T result = caseMilliseconds(milliseconds);
-        if (result == null) result = caseTimeUnit(milliseconds);
-        if (result == null) result = caseUnit(milliseconds);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
-      case ContractLangPackage.SECONDS:
-      {
-        Seconds seconds = (Seconds)theEObject;
-        T result = caseSeconds(seconds);
-        if (result == null) result = caseTimeUnit(seconds);
-        if (result == null) result = caseUnit(seconds);
+        if (result == null) result = caseUnit(timeUnit);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
@@ -533,6 +516,38 @@ public class ContractLangSwitch<T> extends Switch<T>
       {
         NumValue numValue = (NumValue)theEObject;
         T result = caseNumValue(numValue);
+        if (result == null) result = caseExpression(numValue);
+        if (result == null) result = caseValue(numValue);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.INFINITY:
+      {
+        Infinity infinity = (Infinity)theEObject;
+        T result = caseInfinity(infinity);
+        if (result == null) result = caseNumValue(infinity);
+        if (result == null) result = caseExpression(infinity);
+        if (result == null) result = caseValue(infinity);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.INT_VALUE:
+      {
+        IntValue intValue = (IntValue)theEObject;
+        T result = caseIntValue(intValue);
+        if (result == null) result = caseNumValue(intValue);
+        if (result == null) result = caseExpression(intValue);
+        if (result == null) result = caseValue(intValue);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.FLOAT_VALUE:
+      {
+        FloatValue floatValue = (FloatValue)theEObject;
+        T result = caseFloatValue(floatValue);
+        if (result == null) result = caseNumValue(floatValue);
+        if (result == null) result = caseExpression(floatValue);
+        if (result == null) result = caseValue(floatValue);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
@@ -543,6 +558,22 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case ContractLangPackage.UNITLESS:
+      {
+        Unitless unitless = (Unitless)theEObject;
+        T result = caseUnitless(unitless);
+        if (result == null) result = caseUnit(unitless);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.PERCENTAGE:
+      {
+        Percentage percentage = (Percentage)theEObject;
+        T result = casePercentage(percentage);
+        if (result == null) result = caseUnit(percentage);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       case ContractLangPackage.DERIVATIVE:
       {
         Derivative derivative = (Derivative)theEObject;
@@ -575,36 +606,6 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.INFINITY:
-      {
-        Infinity infinity = (Infinity)theEObject;
-        T result = caseInfinity(infinity);
-        if (result == null) result = caseExpression(infinity);
-        if (result == null) result = caseNumValue(infinity);
-        if (result == null) result = caseValue(infinity);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
-      case ContractLangPackage.INT_VALUE:
-      {
-        IntValue intValue = (IntValue)theEObject;
-        T result = caseIntValue(intValue);
-        if (result == null) result = caseExpression(intValue);
-        if (result == null) result = caseNumValue(intValue);
-        if (result == null) result = caseValue(intValue);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
-      case ContractLangPackage.FLOAT_VALUE:
-      {
-        FloatValue floatValue = (FloatValue)theEObject;
-        T result = caseFloatValue(floatValue);
-        if (result == null) result = caseExpression(floatValue);
-        if (result == null) result = caseNumValue(floatValue);
-        if (result == null) result = caseValue(floatValue);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
       case ContractLangPackage.EQUALITY:
       {
         Equality equality = (Equality)theEObject;
@@ -681,28 +682,35 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.VALUE_WITH_UNIT:
+      case ContractLangPackage.INTERVAL_BOUND:
       {
-        ValueWithUnit valueWithUnit = (ValueWithUnit)theEObject;
-        T result = caseValueWithUnit(valueWithUnit);
-        if (result == null) result = caseExpression(valueWithUnit);
-        if (result == null) result = caseValue(valueWithUnit);
+        IntervalBound intervalBound = (IntervalBound)theEObject;
+        T result = caseIntervalBound(intervalBound);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.UNITLESS:
+      case ContractLangPackage.OPEN_INTERVAL:
       {
-        Unitless unitless = (Unitless)theEObject;
-        T result = caseUnitless(unitless);
-        if (result == null) result = caseUnit(unitless);
+        OpenInterval openInterval = (OpenInterval)theEObject;
+        T result = caseOpenInterval(openInterval);
+        if (result == null) result = caseIntervalBound(openInterval);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.PERCENTAGE:
+      case ContractLangPackage.CLOSED_INTERVAL:
       {
-        Percentage percentage = (Percentage)theEObject;
-        T result = casePercentage(percentage);
-        if (result == null) result = caseUnit(percentage);
+        ClosedInterval closedInterval = (ClosedInterval)theEObject;
+        T result = caseClosedInterval(closedInterval);
+        if (result == null) result = caseIntervalBound(closedInterval);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.VALUE_WITH_UNIT:
+      {
+        ValueWithUnit valueWithUnit = (ValueWithUnit)theEObject;
+        T result = caseValueWithUnit(valueWithUnit);
+        if (result == null) result = caseExpression(valueWithUnit);
+        if (result == null) result = caseValue(valueWithUnit);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
@@ -737,14 +745,6 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.FREQUENCY:
-      {
-        Frequency frequency = (Frequency)theEObject;
-        T result = caseFrequency(frequency);
-        if (result == null) result = caseUnit(frequency);
-        if (result == null) result = defaultCase(theEObject);
-        return result;
-      }
       case ContractLangPackage.FMU_PROPERTY:
       {
         FMUProperty fmuProperty = (FMUProperty)theEObject;
@@ -779,11 +779,73 @@ public class ContractLangSwitch<T> extends Switch<T>
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
-      case ContractLangPackage.METERS_PER_SECOND:
+      case ContractLangPackage.POWER_BOND_SUGGESTION:
       {
-        MetersPerSecond metersPerSecond = (MetersPerSecond)theEObject;
-        T result = caseMetersPerSecond(metersPerSecond);
-        if (result == null) result = caseUnit(metersPerSecond);
+        PowerBondSuggestion powerBondSuggestion = (PowerBondSuggestion)theEObject;
+        T result = casePowerBondSuggestion(powerBondSuggestion);
+        if (result == null) result = caseDomainValue(powerBondSuggestion);
+        if (result == null) result = caseExpression(powerBondSuggestion);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.COSIM_UNIT:
+      {
+        CosimUnit cosimUnit = (CosimUnit)theEObject;
+        T result = caseCosimUnit(cosimUnit);
+        if (result == null) result = caseUnit(cosimUnit);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.FREQUENCY:
+      {
+        Frequency frequency = (Frequency)theEObject;
+        T result = caseFrequency(frequency);
+        if (result == null) result = caseCosimUnit(frequency);
+        if (result == null) result = caseUnit(frequency);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.SAHARA_PROPERTY:
+      {
+        SAHARAProperty saharaProperty = (SAHARAProperty)theEObject;
+        T result = caseSAHARAProperty(saharaProperty);
+        if (result == null) result = caseVariable(saharaProperty);
+        if (result == null) result = caseVarOrVarOp(saharaProperty);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.SAHARA_S:
+      {
+        SAHARA_S saharA_S = (SAHARA_S)theEObject;
+        T result = caseSAHARA_S(saharA_S);
+        if (result == null) result = caseAssignAction(saharA_S);
+        if (result == null) result = caseAction(saharA_S);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.SAHARA_E:
+      {
+        SAHARA_E saharA_E = (SAHARA_E)theEObject;
+        T result = caseSAHARA_E(saharA_E);
+        if (result == null) result = caseAssignAction(saharA_E);
+        if (result == null) result = caseAction(saharA_E);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.SAHARA_C:
+      {
+        SAHARA_C saharA_C = (SAHARA_C)theEObject;
+        T result = caseSAHARA_C(saharA_C);
+        if (result == null) result = caseAssignAction(saharA_C);
+        if (result == null) result = caseAction(saharA_C);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.SAHARA_UNIT:
+      {
+        SAHARAUnit saharaUnit = (SAHARAUnit)theEObject;
+        T result = caseSAHARAUnit(saharaUnit);
+        if (result == null) result = caseUnit(saharaUnit);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
@@ -791,10 +853,47 @@ public class ContractLangSwitch<T> extends Switch<T>
       {
         Meters meters = (Meters)theEObject;
         T result = caseMeters(meters);
+        if (result == null) result = caseSAHARAUnit(meters);
         if (result == null) result = caseUnit(meters);
         if (result == null) result = defaultCase(theEObject);
         return result;
       }
+      case ContractLangPackage.METERS_PER_SECOND:
+      {
+        MetersPerSecond metersPerSecond = (MetersPerSecond)theEObject;
+        T result = caseMetersPerSecond(metersPerSecond);
+        if (result == null) result = caseSAHARAUnit(metersPerSecond);
+        if (result == null) result = caseUnit(metersPerSecond);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.KILOMETERS:
+      {
+        Kilometers kilometers = (Kilometers)theEObject;
+        T result = caseKilometers(kilometers);
+        if (result == null) result = caseSAHARAUnit(kilometers);
+        if (result == null) result = caseUnit(kilometers);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.KILOMETERS_PER_HOUR:
+      {
+        KilometersPerHour kilometersPerHour = (KilometersPerHour)theEObject;
+        T result = caseKilometersPerHour(kilometersPerHour);
+        if (result == null) result = caseSAHARAUnit(kilometersPerHour);
+        if (result == null) result = caseUnit(kilometersPerHour);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
+      case ContractLangPackage.FORCE:
+      {
+        Force force = (Force)theEObject;
+        T result = caseForce(force);
+        if (result == null) result = caseSAHARAUnit(force);
+        if (result == null) result = caseUnit(force);
+        if (result == null) result = defaultCase(theEObject);
+        return result;
+      }
       default: return defaultCase(theEObject);
     }
   }
@@ -1264,17 +1363,17 @@ public class ContractLangSwitch<T> extends Switch<T>
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Recurrence</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Recurrence Pattern</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Recurrence</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Recurrence Pattern</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseRecurrence(Recurrence object)
+  public T caseRecurrencePattern(RecurrencePattern object)
   {
     return null;
   }
@@ -1535,38 +1634,6 @@ public class ContractLangSwitch<T> extends Switch<T>
     return null;
   }
 
-  /**
-   * Returns the result of interpreting the object as an instance of '<em>Milliseconds</em>'.
-   * <!-- begin-user-doc -->
-   * This implementation returns null;
-   * returning a non-null result will terminate the switch.
-   * <!-- end-user-doc -->
-   * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Milliseconds</em>'.
-   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-   * @generated
-   */
-  public T caseMilliseconds(Milliseconds object)
-  {
-    return null;
-  }
-
-  /**
-   * Returns the result of interpreting the object as an instance of '<em>Seconds</em>'.
-   * <!-- begin-user-doc -->
-   * This implementation returns null;
-   * returning a non-null result will terminate the switch.
-   * <!-- end-user-doc -->
-   * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Seconds</em>'.
-   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
-   * @generated
-   */
-  public T caseSeconds(Seconds object)
-  {
-    return null;
-  }
-
   /**
    * Returns the result of interpreting the object as an instance of '<em>Probability</em>'.
    * <!-- begin-user-doc -->
@@ -1728,129 +1795,161 @@ public class ContractLangSwitch<T> extends Switch<T>
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Unit</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Infinity</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Unit</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Infinity</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseUnit(Unit object)
+  public T caseInfinity(Infinity object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Derivative</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Int Value</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Derivative</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Int Value</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseDerivative(Derivative object)
+  public T caseIntValue(IntValue object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Float Value</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Float Value</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseAbsoluteValue(AbsoluteValue object)
+  public T caseFloatValue(FloatValue object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Difference</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Unit</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Difference</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Unit</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseDifference(Difference object)
+  public T caseUnit(Unit object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Average</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Unitless</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Average</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Unitless</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseAverage(Average object)
+  public T caseUnitless(Unitless object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Infinity</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Percentage</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Infinity</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Percentage</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseInfinity(Infinity object)
+  public T casePercentage(Percentage object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Int Value</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Derivative</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Int Value</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Derivative</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseIntValue(IntValue object)
+  public T caseDerivative(Derivative object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Float Value</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Float Value</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Absolute Value</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseFloatValue(FloatValue object)
+  public T caseAbsoluteValue(AbsoluteValue object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Difference</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Difference</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseDifference(Difference object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Average</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Average</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseAverage(Average object)
   {
     return null;
   }
@@ -2000,49 +2099,65 @@ public class ContractLangSwitch<T> extends Switch<T>
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Interval Bound</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Interval Bound</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseValueWithUnit(ValueWithUnit object)
+  public T caseIntervalBound(IntervalBound object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Unitless</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Open Interval</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Unitless</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Open Interval</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseUnitless(Unitless object)
+  public T caseOpenInterval(OpenInterval object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Percentage</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>Closed Interval</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Percentage</em>'.
+   * @return the result of interpreting the object as an instance of '<em>Closed Interval</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T casePercentage(Percentage object)
+  public T caseClosedInterval(ClosedInterval object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Value With Unit</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseValueWithUnit(ValueWithUnit object)
   {
     return null;
   }
@@ -2111,6 +2226,102 @@ public class ContractLangSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>FMU Property</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>FMU Property</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseFMUProperty(FMUProperty object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseFMUInstance(FMUInstance object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseFMUSignal(FMUSignal object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseSteadyStateSuggestion(SteadyStateSuggestion object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Power Bond Suggestion</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Power Bond Suggestion</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T casePowerBondSuggestion(PowerBondSuggestion object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Cosim Unit</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Cosim Unit</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseCosimUnit(CosimUnit object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>Frequency</em>'.
    * <!-- begin-user-doc -->
@@ -2128,81 +2339,81 @@ public class ContractLangSwitch<T> extends Switch<T>
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>FMU Property</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>SAHARA Property</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>FMU Property</em>'.
+   * @return the result of interpreting the object as an instance of '<em>SAHARA Property</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseFMUProperty(FMUProperty object)
+  public T caseSAHARAProperty(SAHARAProperty object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>SAHARA S</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>FMU Instance</em>'.
+   * @return the result of interpreting the object as an instance of '<em>SAHARA S</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseFMUInstance(FMUInstance object)
+  public T caseSAHARA_S(SAHARA_S object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>SAHARA E</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>FMU Signal</em>'.
+   * @return the result of interpreting the object as an instance of '<em>SAHARA E</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseFMUSignal(FMUSignal object)
+  public T caseSAHARA_E(SAHARA_E object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>SAHARA C</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Steady State Suggestion</em>'.
+   * @return the result of interpreting the object as an instance of '<em>SAHARA C</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseSteadyStateSuggestion(SteadyStateSuggestion object)
+  public T caseSAHARA_C(SAHARA_C object)
   {
     return null;
   }
 
   /**
-   * Returns the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
+   * Returns the result of interpreting the object as an instance of '<em>SAHARA Unit</em>'.
    * <!-- begin-user-doc -->
    * This implementation returns null;
    * returning a non-null result will terminate the switch.
    * <!-- end-user-doc -->
    * @param object the target of the switch.
-   * @return the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
+   * @return the result of interpreting the object as an instance of '<em>SAHARA Unit</em>'.
    * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
    * @generated
    */
-  public T caseMetersPerSecond(MetersPerSecond object)
+  public T caseSAHARAUnit(SAHARAUnit object)
   {
     return null;
   }
@@ -2223,6 +2434,70 @@ public class ContractLangSwitch<T> extends Switch<T>
     return null;
   }
 
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Meters Per Second</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseMetersPerSecond(MetersPerSecond object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Kilometers</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Kilometers</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseKilometers(Kilometers object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Kilometers Per Hour</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Kilometers Per Hour</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseKilometersPerHour(KilometersPerHour object)
+  {
+    return null;
+  }
+
+  /**
+   * Returns the result of interpreting the object as an instance of '<em>Force</em>'.
+   * <!-- begin-user-doc -->
+   * This implementation returns null;
+   * returning a non-null result will terminate the switch.
+   * <!-- end-user-doc -->
+   * @param object the target of the switch.
+   * @return the result of interpreting the object as an instance of '<em>Force</em>'.
+   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+   * @generated
+   */
+  public T caseForce(Force object)
+  {
+    return null;
+  }
+
   /**
    * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
    * <!-- begin-user-doc -->