aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects')
-rw-r--r--subprojects/frontend/src/index.tsx22
-rw-r--r--subprojects/frontend/src/language/problem.grammar17
-rw-r--r--subprojects/frontend/src/language/problemLanguageSupport.ts4
-rw-r--r--subprojects/language-model/problem.aird454
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore13
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.genmodel13
-rw-r--r--subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java4
-rw-r--r--subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java2
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/Problem.xtext48
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java43
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java8
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java2
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java18
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java2
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java4
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java4
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java6
-rw-r--r--subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java2
18 files changed, 299 insertions, 367 deletions
diff --git a/subprojects/frontend/src/index.tsx b/subprojects/frontend/src/index.tsx
index 0165d7c1..a40f1762 100644
--- a/subprojects/frontend/src/index.tsx
+++ b/subprojects/frontend/src/index.tsx
@@ -10,29 +10,29 @@ const initialValue = `class Family {
10} 10}
11 11
12class Person { 12class Person {
13 refers Person[] children opposite parent 13 Person[] children opposite parent
14 refers Person[0..1] parent opposite children 14 Person[0..1] parent opposite children
15 int age 15 int age
16 refers TaxStatus taxStatus 16 TaxStatus taxStatus
17} 17}
18 18
19enum TaxStatus { 19enum TaxStatus {
20 child, student, adult, retired 20 CHILD, STUDENT, ADULT, RETIRED
21} 21}
22 22
23% A child cannot have any dependents. 23% A child cannot have any dependents.
24pred invalidTaxStatus(Person p) <-> 24pred invalidTaxStatus(Person p) <->
25 taxStatus(p, child), 25 taxStatus(p, CHILD),
26 children(p, _q) 26 children(p, _q)
27; 27;
28 parent(p, q), 28 parent(p, q),
29 age(q) < age(p) 29 age(q) < age(p)
30; 30;
31 taxStatus(p, retired), 31 taxStatus(p, RETIRED),
32 parent(p, q), 32 parent(p, q),
33 !taxStatus(q, retired). 33 !taxStatus(q, RETIRED).
34 34
35individual family. 35indiv family.
36Family(family). 36Family(family).
37members(family, anne). 37members(family, anne).
38members(family, bob). 38members(family, bob).
@@ -40,9 +40,9 @@ members(family, ciri).
40children(anne, ciri). 40children(anne, ciri).
41?children(bob, ciri). 41?children(bob, ciri).
42default children(ciri, *): false. 42default children(ciri, *): false.
43taxStatus(anne, adult). 43taxStatus(anne, ADULT).
44age(bob) in 21..35. 44age(bob): 21..35.
45age(ciri) = 10. 45age(ciri): 10.
46 46
47scope Family = 1, Person += 5..10. 47scope Family = 1, Person += 5..10.
48`; 48`;
diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar
index 7c4098d5..c2410913 100644
--- a/subprojects/frontend/src/language/problem.grammar
+++ b/subprojects/frontend/src/language/problem.grammar
@@ -3,6 +3,7 @@
3@external prop implicitCompletion from './props' 3@external prop implicitCompletion from './props'
4 4
5@precedence { 5@precedence {
6 reference @cut,
6 prefix, 7 prefix,
7 exponential @right, 8 exponential @right,
8 multiplicative @left, 9 multiplicative @left,
@@ -47,10 +48,10 @@ statement {
47 Assertion { 48 Assertion {
48 kw<"default">? (NotOp | UnknownOp)? RelationName 49 kw<"default">? (NotOp | UnknownOp)? RelationName
49 ParameterList<AssertionArgument> 50 ParameterList<AssertionArgument>
50 (":" LogicValue | ("=" | kw<"in">) Expr)? "." 51 (":" Expr)? "."
51 } | 52 } |
52 IndividualDeclaration { 53 IndividualDeclaration {
53 kw<"individual"> sep<",", IndividualNodeName> "." 54 kw<"indiv"> sep<",", IndividualNodeName> "."
54 } | 55 } |
55 ScopeDeclaration { 56 ScopeDeclaration {
56 kw<"scope"> sep<",", ScopeElement> "." 57 kw<"scope"> sep<",", ScopeElement> "."
@@ -58,7 +59,8 @@ statement {
58} 59}
59 60
60FeatureDeclaration { 61FeatureDeclaration {
61 (ReferenceKind | PrimitiveType | kw<"bool">) RelationName 62 // The @cut helps disambiguate silly cases like `contains contains`
63 (ReferenceKind !reference | PrimitiveType | kw<"bool">)? RelationName
62 ("[" Multiplicity? "]")? 64 ("[" Multiplicity? "]")?
63 RelationName 65 RelationName
64 (kw<"opposite"> RelationName)? 66 (kw<"opposite"> RelationName)?
@@ -90,7 +92,7 @@ BinaryExpr {
90} 92}
91 93
92UnaryExpr { 94UnaryExpr {
93 !prefix ("+" | "-" | "!" | "#" | Modality) Expr 95 !prefix ("+" | "-" | "!" | kw<"count"> | Modality) Expr
94} 96}
95 97
96Aggregation { 98Aggregation {
@@ -109,7 +111,7 @@ Atom { RelationName "+"? ParameterList<Expr> }
109 111
110AssertionArgument { NodeName | StarArgument } 112AssertionArgument { NodeName | StarArgument }
111 113
112Constant { Real | String | StarMult } 114Constant { Real | String | StarMult | LogicValue }
113 115
114ReferenceKind { 116ReferenceKind {
115 kw<"refers"> | ckw<"contains"> | kw<"container"> 117 kw<"refers"> | ckw<"contains"> | kw<"container">
@@ -199,7 +201,10 @@ sep1<separator, content> { content (separator content)* }
199 "\"" (![\\"\n] | "\\" (![\n] | "\n"))* "\"" 201 "\"" (![\\"\n] | "\\" (![\n] | "\n"))* "\""
200 } 202 }
201 203
202 SymbolicComparisonOp { ">" | ">=" | "<" | "<=" | "==" | "!=" } 204 SymbolicComparisonOp {
205 ">" | ">=" | "<" | "<=" | "==" | "!=" |
206 "<:" | ":>" | "===" | "!=="
207 }
203 208
204 NotOp { "!" } 209 NotOp { "!" }
205 210
diff --git a/subprojects/frontend/src/language/problemLanguageSupport.ts b/subprojects/frontend/src/language/problemLanguageSupport.ts
index 2a973c93..497030e2 100644
--- a/subprojects/frontend/src/language/problemLanguageSupport.ts
+++ b/subprojects/frontend/src/language/problemLanguageSupport.ts
@@ -21,12 +21,12 @@ const parserWithMetadata = parser.configure({
21 styleTags({ 21 styleTags({
22 LineComment: t.lineComment, 22 LineComment: t.lineComment,
23 BlockComment: t.blockComment, 23 BlockComment: t.blockComment,
24 'problem class enum pred individual scope': t.definitionKeyword, 24 'problem class enum pred indiv scope': t.definitionKeyword,
25 'abstract extends refers contains container opposite': t.modifier, 25 'abstract extends refers contains container opposite': t.modifier,
26 'default error contained containment': t.modifier, 26 'default error contained containment': t.modifier,
27 'true false unknown error': t.keyword, 27 'true false unknown error': t.keyword,
28 'int real string bool': t.keyword, 28 'int real string bool': t.keyword,
29 'may must current': t.operatorKeyword, 29 'may must current count': t.operatorKeyword,
30 'sum prod min max in': t.operatorKeyword, 30 'sum prod min max in': t.operatorKeyword,
31 // 'new delete': t.keyword, 31 // 'new delete': t.keyword,
32 NotOp: t.operator, 32 NotOp: t.operator,
diff --git a/subprojects/language-model/problem.aird b/subprojects/language-model/problem.aird
index 71c35bf0..286dabd6 100644
--- a/subprojects/language-model/problem.aird
+++ b/subprojects/language-model/problem.aird
@@ -11,11 +11,11 @@
11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 11 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
12 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> 12 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/>
13 </ownedRepresentationDescriptors> 13 </ownedRepresentationDescriptors>
14 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_z1bOYF3lEe2LuOZzJ_LhLg" name="expressions" repPath="#_z1YyIF3lEe2LuOZzJ_LhLg" changeId="c3a824dd-b6bd-4f9e-af60-d14ca2505e9b"> 14 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_z1bOYF3lEe2LuOZzJ_LhLg" name="expressions" repPath="#_z1YyIF3lEe2LuOZzJ_LhLg" changeId="847d1bab-b9a3-4b3c-9007-d1ef6cbc7d2b">
15 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 15 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
16 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> 16 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/>
17 </ownedRepresentationDescriptors> 17 </ownedRepresentationDescriptors>
18 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_xj9yMF4eEe2rXNsIDUvqhw" name="assertions" repPath="#_xj6H0F4eEe2rXNsIDUvqhw" changeId="28ff9304-150b-45c1-ac19-7a8c71612b50"> 18 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_xj9yMF4eEe2rXNsIDUvqhw" name="assertions" repPath="#_xj6H0F4eEe2rXNsIDUvqhw" changeId="af7c7d5e-5f27-4ef1-b9ba-f5b0e7934a73">
19 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 19 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
20 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/> 20 <target xmi:type="ecore:EPackage" href="src/main/resources/model/problem.ecore#/"/>
21 </ownedRepresentationDescriptors> 21 </ownedRepresentationDescriptors>
@@ -2796,7 +2796,7 @@
2796 <styles xmi:type="notation:FilteringStyle" xmi:id="_87Ju5l4IEe2LuOZzJ_LhLg"/> 2796 <styles xmi:type="notation:FilteringStyle" xmi:id="_87Ju5l4IEe2LuOZzJ_LhLg"/>
2797 </children> 2797 </children>
2798 <styles xmi:type="notation:ShapeStyle" xmi:id="_87Ju4V4IEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/> 2798 <styles xmi:type="notation:ShapeStyle" xmi:id="_87Ju4V4IEe2LuOZzJ_LhLg" fontName="Noto Sans" fontHeight="8" italic="true"/>
2799 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_87Ju4l4IEe2LuOZzJ_LhLg" x="2556" y="168"/> 2799 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_87Ju4l4IEe2LuOZzJ_LhLg" x="2628" y="168"/>
2800 </children> 2800 </children>
2801 <children xmi:type="notation:Node" xmi:id="_JYXdgF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIwF4JEe2LuOZzJ_LhLg"> 2801 <children xmi:type="notation:Node" xmi:id="_JYXdgF4JEe2LuOZzJ_LhLg" type="2003" element="_JYQIwF4JEe2LuOZzJ_LhLg">
2802 <children xmi:type="notation:Node" xmi:id="_JYXdg14JEe2LuOZzJ_LhLg" type="5007"/> 2802 <children xmi:type="notation:Node" xmi:id="_JYXdg14JEe2LuOZzJ_LhLg" type="5007"/>
@@ -2912,11 +2912,27 @@
2912 <styles xmi:type="notation:FontStyle" xmi:id="_pZfy4WgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/> 2912 <styles xmi:type="notation:FontStyle" xmi:id="_pZfy4WgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
2913 <layoutConstraint xmi:type="notation:Location" xmi:id="_pZfy4mgpEe24RpwpWgpkFQ"/> 2913 <layoutConstraint xmi:type="notation:Location" xmi:id="_pZfy4mgpEe24RpwpWgpkFQ"/>
2914 </children> 2914 </children>
2915 <children xmi:type="notation:Node" xmi:id="_BuRG0GkFEe24rIYSlCjKHA" type="3010" element="_BtK6oGkFEe24rIYSlCjKHA">
2916 <styles xmi:type="notation:FontStyle" xmi:id="_BuRG0WkFEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
2917 <layoutConstraint xmi:type="notation:Location" xmi:id="_BuRG0mkFEe24rIYSlCjKHA"/>
2918 </children>
2919 <children xmi:type="notation:Node" xmi:id="_dTWMcGkFEe24rIYSlCjKHA" type="3010" element="_dSepwGkFEe24rIYSlCjKHA">
2920 <styles xmi:type="notation:FontStyle" xmi:id="_dTWMcWkFEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
2921 <layoutConstraint xmi:type="notation:Location" xmi:id="_dTWMcmkFEe24rIYSlCjKHA"/>
2922 </children>
2923 <children xmi:type="notation:Node" xmi:id="_eqflkGkFEe24rIYSlCjKHA" type="3010" element="_eqCSkGkFEe24rIYSlCjKHA">
2924 <styles xmi:type="notation:FontStyle" xmi:id="_eqflkWkFEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
2925 <layoutConstraint xmi:type="notation:Location" xmi:id="_eqflkmkFEe24rIYSlCjKHA"/>
2926 </children>
2927 <children xmi:type="notation:Node" xmi:id="_p92wMGkFEe24rIYSlCjKHA" type="3010" element="_p9Q6UGkFEe24rIYSlCjKHA">
2928 <styles xmi:type="notation:FontStyle" xmi:id="_p92wMWkFEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
2929 <layoutConstraint xmi:type="notation:Location" xmi:id="_p92wMmkFEe24rIYSlCjKHA"/>
2930 </children>
2915 <styles xmi:type="notation:SortingStyle" xmi:id="_QkXS9WTUEe2qdtyPWAtoxA"/> 2931 <styles xmi:type="notation:SortingStyle" xmi:id="_QkXS9WTUEe2qdtyPWAtoxA"/>
2916 <styles xmi:type="notation:FilteringStyle" xmi:id="_QkXS9mTUEe2qdtyPWAtoxA"/> 2932 <styles xmi:type="notation:FilteringStyle" xmi:id="_QkXS9mTUEe2qdtyPWAtoxA"/>
2917 </children> 2933 </children>
2918 <styles xmi:type="notation:ShapeStyle" xmi:id="_QkXS8WTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/> 2934 <styles xmi:type="notation:ShapeStyle" xmi:id="_QkXS8WTUEe2qdtyPWAtoxA" fontName="Noto Sans" fontHeight="8"/>
2919 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkXS8mTUEe2qdtyPWAtoxA" x="1958" y="448" height="155"/> 2935 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QkXS8mTUEe2qdtyPWAtoxA" x="1958" y="448" height="215"/>
2920 </children> 2936 </children>
2921 <children xmi:type="notation:Node" xmi:id="_36XqIGTuEe2qdtyPWAtoxA" type="2003" element="_36CS8GTuEe2qdtyPWAtoxA"> 2937 <children xmi:type="notation:Node" xmi:id="_36XqIGTuEe2qdtyPWAtoxA" type="2003" element="_36CS8GTuEe2qdtyPWAtoxA">
2922 <children xmi:type="notation:Node" xmi:id="_36YRMGTuEe2qdtyPWAtoxA" type="5007"/> 2938 <children xmi:type="notation:Node" xmi:id="_36YRMGTuEe2qdtyPWAtoxA" type="5007"/>
@@ -3014,6 +3030,44 @@
3014 <styles xmi:type="notation:ShapeStyle" xmi:id="_zs6moWgtEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/> 3030 <styles xmi:type="notation:ShapeStyle" xmi:id="_zs6moWgtEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8"/>
3015 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zs6momgtEe24RpwpWgpkFQ" x="2628" y="312" width="120" height="100"/> 3031 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_zs6momgtEe24RpwpWgpkFQ" x="2628" y="312" width="120" height="100"/>
3016 </children> 3032 </children>
3033 <children xmi:type="notation:Node" xmi:id="_ZjfaEGkGEe24rIYSlCjKHA" type="2003" element="_Zi8AcGkGEe24rIYSlCjKHA">
3034 <children xmi:type="notation:Node" xmi:id="_ZjkSkGkGEe24rIYSlCjKHA" type="5007"/>
3035 <children xmi:type="notation:Node" xmi:id="_ZjkSkWkGEe24rIYSlCjKHA" type="7004">
3036 <children xmi:type="notation:Node" xmi:id="_aWMpYGkGEe24rIYSlCjKHA" type="3010" element="_aVgF0GkGEe24rIYSlCjKHA">
3037 <styles xmi:type="notation:FontStyle" xmi:id="_aWMpYWkGEe24rIYSlCjKHA" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
3038 <layoutConstraint xmi:type="notation:Location" xmi:id="_aWMpYmkGEe24rIYSlCjKHA"/>
3039 </children>
3040 <styles xmi:type="notation:SortingStyle" xmi:id="_ZjkSkmkGEe24rIYSlCjKHA"/>
3041 <styles xmi:type="notation:FilteringStyle" xmi:id="_ZjkSk2kGEe24rIYSlCjKHA"/>
3042 </children>
3043 <styles xmi:type="notation:ShapeStyle" xmi:id="_ZjfaEWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3044 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZjfaEmkGEe24rIYSlCjKHA" x="2952" y="312" width="120" height="100"/>
3045 </children>
3046 <children xmi:type="notation:Node" xmi:id="_fdU7QGkGEe24rIYSlCjKHA" type="2003" element="_fdLKQGkGEe24rIYSlCjKHA">
3047 <children xmi:type="notation:Node" xmi:id="_fdViUGkGEe24rIYSlCjKHA" type="5007"/>
3048 <children xmi:type="notation:Node" xmi:id="_fdViUWkGEe24rIYSlCjKHA" type="7004">
3049 <children xmi:type="notation:Node" xmi:id="_fdWJYGkGEe24rIYSlCjKHA" type="3010" element="_fdPbx2kGEe24rIYSlCjKHA">
3050 <styles xmi:type="notation:FontStyle" xmi:id="_fdWJYWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3051 <layoutConstraint xmi:type="notation:Location" xmi:id="_fdWJYmkGEe24rIYSlCjKHA"/>
3052 </children>
3053 <children xmi:type="notation:Node" xmi:id="_fdWJY2kGEe24rIYSlCjKHA" type="3010" element="_fdPbyWkGEe24rIYSlCjKHA">
3054 <styles xmi:type="notation:FontStyle" xmi:id="_fdWJZGkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3055 <layoutConstraint xmi:type="notation:Location" xmi:id="_fdWJZWkGEe24rIYSlCjKHA"/>
3056 </children>
3057 <children xmi:type="notation:Node" xmi:id="_fdWwcGkGEe24rIYSlCjKHA" type="3010" element="_fdQCwGkGEe24rIYSlCjKHA">
3058 <styles xmi:type="notation:FontStyle" xmi:id="_fdWwcWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3059 <layoutConstraint xmi:type="notation:Location" xmi:id="_fdWwcmkGEe24rIYSlCjKHA"/>
3060 </children>
3061 <children xmi:type="notation:Node" xmi:id="_fdWwc2kGEe24rIYSlCjKHA" type="3010" element="_fdQCwmkGEe24rIYSlCjKHA">
3062 <styles xmi:type="notation:FontStyle" xmi:id="_fdWwdGkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3063 <layoutConstraint xmi:type="notation:Location" xmi:id="_fdWwdWkGEe24rIYSlCjKHA"/>
3064 </children>
3065 <styles xmi:type="notation:SortingStyle" xmi:id="_fdViUmkGEe24rIYSlCjKHA"/>
3066 <styles xmi:type="notation:FilteringStyle" xmi:id="_fdViU2kGEe24rIYSlCjKHA"/>
3067 </children>
3068 <styles xmi:type="notation:ShapeStyle" xmi:id="_fdU7QWkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3069 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fdU7QmkGEe24rIYSlCjKHA" x="2952" y="446"/>
3070 </children>
3017 <styles xmi:type="notation:DiagramStyle" xmi:id="_z1ff0l3lEe2LuOZzJ_LhLg"/> 3071 <styles xmi:type="notation:DiagramStyle" xmi:id="_z1ff0l3lEe2LuOZzJ_LhLg"/>
3018 <edges xmi:type="notation:Edge" xmi:id="_C-b04F3mEe2LuOZzJ_LhLg" type="4001" element="_C9_I8F3mEe2LuOZzJ_LhLg" source="_9ZUmgF3lEe2LuOZzJ_LhLg" target="_8bUtMF3lEe2LuOZzJ_LhLg"> 3072 <edges xmi:type="notation:Edge" xmi:id="_C-b04F3mEe2LuOZzJ_LhLg" type="4001" element="_C9_I8F3mEe2LuOZzJ_LhLg" source="_9ZUmgF3lEe2LuOZzJ_LhLg" target="_8bUtMF3lEe2LuOZzJ_LhLg">
3019 <children xmi:type="notation:Node" xmi:id="_C-cb8F3mEe2LuOZzJ_LhLg" type="6001"> 3073 <children xmi:type="notation:Node" xmi:id="_C-cb8F3mEe2LuOZzJ_LhLg" type="6001">
@@ -3527,6 +3581,22 @@
3527 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr5mgtEe24RpwpWgpkFQ" id="(0.8135593220338984,0.0)"/> 3581 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr5mgtEe24RpwpWgpkFQ" id="(0.8135593220338984,0.0)"/>
3528 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr52gtEe24RpwpWgpkFQ" id="(0.5,0.5)"/> 3582 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3zjr52gtEe24RpwpWgpkFQ" id="(0.5,0.5)"/>
3529 </edges> 3583 </edges>
3584 <edges xmi:type="notation:Edge" xmi:id="_dTGfYGkGEe24rIYSlCjKHA" type="4001" element="_dSnXTmkGEe24rIYSlCjKHA" source="_ZjfaEGkGEe24rIYSlCjKHA" target="_87Ju4F4IEe2LuOZzJ_LhLg">
3585 <children xmi:type="notation:Node" xmi:id="_dTHGcGkGEe24rIYSlCjKHA" type="6001">
3586 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dTHGcWkGEe24rIYSlCjKHA" y="-10"/>
3587 </children>
3588 <children xmi:type="notation:Node" xmi:id="_dTHtgGkGEe24rIYSlCjKHA" type="6002">
3589 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dTHtgWkGEe24rIYSlCjKHA" y="10"/>
3590 </children>
3591 <children xmi:type="notation:Node" xmi:id="_dTHtgmkGEe24rIYSlCjKHA" type="6003">
3592 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dTHtg2kGEe24rIYSlCjKHA" y="10"/>
3593 </children>
3594 <styles xmi:type="notation:ConnectorStyle" xmi:id="_dTGfYWkGEe24rIYSlCjKHA" routing="Tree"/>
3595 <styles xmi:type="notation:FontStyle" xmi:id="_dTGfYmkGEe24rIYSlCjKHA" fontName="Noto Sans" fontHeight="8"/>
3596 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dTGfY2kGEe24rIYSlCjKHA" points="[0, 0, 350, 132]$[-350, -132, 0, 0]"/>
3597 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwGkGEe24rIYSlCjKHA" id="(0.6101694915254238,0.0)"/>
3598 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dTKJwWkGEe24rIYSlCjKHA" id="(0.5,0.5)"/>
3599 </edges>
3530 </data> 3600 </data>
3531 </ownedAnnotationEntries> 3601 </ownedAnnotationEntries>
3532 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_z1k_YV3lEe2LuOZzJ_LhLg" source="DANNOTATION_CUSTOMIZATION_KEY"> 3602 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_z1k_YV3lEe2LuOZzJ_LhLg" source="DANNOTATION_CUSTOMIZATION_KEY">
@@ -3927,7 +3997,7 @@
3927 </ownedStyle> 3997 </ownedStyle>
3928 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 3998 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
3929 </ownedDiagramElements> 3999 </ownedDiagramElements>
3930 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_86zJkF4IEe2LuOZzJ_LhLg" name="Constant" tooltipText="" outgoingEdges="_qYZuyGgtEe24RpwpWgpkFQ" incomingEdges="_JYWPtF4JEe2LuOZzJ_LhLg _JYW2c14JEe2LuOZzJ_LhLg _JYW2el4JEe2LuOZzJ_LhLg _3zQKBGgtEe24RpwpWgpkFQ" width="12" height="10"> 4000 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_86zJkF4IEe2LuOZzJ_LhLg" name="Constant" tooltipText="" outgoingEdges="_qYZuyGgtEe24RpwpWgpkFQ" incomingEdges="_JYWPtF4JEe2LuOZzJ_LhLg _JYW2c14JEe2LuOZzJ_LhLg _JYW2el4JEe2LuOZzJ_LhLg _3zQKBGgtEe24RpwpWgpkFQ _dSnXTmkGEe24rIYSlCjKHA" width="12" height="10">
3931 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/> 4001 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/>
3932 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/> 4002 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Constant"/>
3933 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 4003 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -4257,6 +4327,38 @@
4257 </ownedStyle> 4327 </ownedStyle>
4258 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/> 4328 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4259 </ownedElements> 4329 </ownedElements>
4330 <ownedElements xmi:type="diagram:DNodeListElement" uid="_BtK6oGkFEe24rIYSlCjKHA" name="SUBSUMES" tooltipText="">
4331 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/SUBSUMES"/>
4332 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/SUBSUMES"/>
4333 <ownedStyle xmi:type="diagram:BundledImage" uid="_BtMv0GkFEe24rIYSlCjKHA" labelAlignment="LEFT">
4334 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4335 </ownedStyle>
4336 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4337 </ownedElements>
4338 <ownedElements xmi:type="diagram:DNodeListElement" uid="_dSepwGkFEe24rIYSlCjKHA" name="SUBSUMED_BY" tooltipText="">
4339 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/SUBSUMED_BY"/>
4340 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/SUBSUMED_BY"/>
4341 <ownedStyle xmi:type="diagram:BundledImage" uid="_dSfQ0GkFEe24rIYSlCjKHA" labelAlignment="LEFT">
4342 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4343 </ownedStyle>
4344 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4345 </ownedElements>
4346 <ownedElements xmi:type="diagram:DNodeListElement" uid="_eqCSkGkFEe24rIYSlCjKHA" name="ABS_EQ" tooltipText="">
4347 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/ABS_EQ"/>
4348 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/ABS_EQ"/>
4349 <ownedStyle xmi:type="diagram:BundledImage" uid="_eqCSkWkFEe24rIYSlCjKHA" labelAlignment="LEFT">
4350 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4351 </ownedStyle>
4352 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4353 </ownedElements>
4354 <ownedElements xmi:type="diagram:DNodeListElement" uid="_p9Q6UGkFEe24rIYSlCjKHA" name="ABS_NOT_EQ" tooltipText="">
4355 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/ABS_NOT_EQ"/>
4356 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ComparisonOp/ABS_NOT_EQ"/>
4357 <ownedStyle xmi:type="diagram:BundledImage" uid="_p9RhYGkFEe24rIYSlCjKHA" labelAlignment="LEFT">
4358 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4359 </ownedStyle>
4360 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4361 </ownedElements>
4260 </ownedDiagramElements> 4362 </ownedDiagramElements>
4261 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_UstBaGTUEe2qdtyPWAtoxA" sourceNode="_M-ZR0GTUEe2qdtyPWAtoxA" targetNode="_bTLuAF3tEe2LuOZzJ_LhLg"> 4363 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_UstBaGTUEe2qdtyPWAtoxA" sourceNode="_M-ZR0GTUEe2qdtyPWAtoxA" targetNode="_bTLuAF3tEe2LuOZzJ_LhLg">
4262 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ArithmeticBinaryExpr"/> 4364 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ArithmeticBinaryExpr"/>
@@ -4530,6 +4632,80 @@
4530 </ownedStyle> 4632 </ownedStyle>
4531 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/> 4633 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4532 </ownedDiagramElements> 4634 </ownedDiagramElements>
4635 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Zi8AcGkGEe24rIYSlCjKHA" name="LogicConstant" tooltipText="" outgoingEdges="_dSnXTmkGEe24rIYSlCjKHA" width="12" height="10">
4636 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
4637 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
4638 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4639 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4640 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4641 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_byHN3GkGEe24rIYSlCjKHA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
4642 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
4643 </ownedStyle>
4644 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
4645 <ownedElements xmi:type="diagram:DNodeListElement" uid="_aVgF0GkGEe24rIYSlCjKHA" name="logicValue : LogicValue = TRUE" tooltipText="">
4646 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LogicConstant/logicValue"/>
4647 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LogicConstant/logicValue"/>
4648 <ownedStyle xmi:type="diagram:BundledImage" uid="_byJC8WkGEe24rIYSlCjKHA" labelAlignment="LEFT">
4649 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
4650 </ownedStyle>
4651 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
4652 </ownedElements>
4653 </ownedDiagramElements>
4654 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_dSnXTmkGEe24rIYSlCjKHA" sourceNode="_Zi8AcGkGEe24rIYSlCjKHA" targetNode="_86zJkF4IEe2LuOZzJ_LhLg">
4655 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
4656 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicConstant"/>
4657 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dSn-QGkGEe24rIYSlCjKHA" targetArrow="InputClosedArrow" routingStyle="tree">
4658 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
4659 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_dSn-QWkGEe24rIYSlCjKHA" showIcon="false">
4660 <labelFormat>italic</labelFormat>
4661 </beginLabelStyle>
4662 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dSn-QmkGEe24rIYSlCjKHA" showIcon="false"/>
4663 </ownedStyle>
4664 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
4665 </ownedDiagramElements>
4666 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_fdLKQGkGEe24rIYSlCjKHA" name="LogicValue" tooltipText="" width="12" height="10">
4667 <target xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LogicValue"/>
4668 <semanticElements xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LogicValue"/>
4669 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
4670 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
4671 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
4672 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_fdLKQWkGEe24rIYSlCjKHA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
4673 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
4674 </ownedStyle>
4675 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
4676 <ownedElements xmi:type="diagram:DNodeListElement" uid="_fdPbx2kGEe24rIYSlCjKHA" name="TRUE" tooltipText="">
4677 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/TRUE"/>
4678 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/TRUE"/>
4679 <ownedStyle xmi:type="diagram:BundledImage" uid="_fdPbyGkGEe24rIYSlCjKHA" labelAlignment="LEFT">
4680 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4681 </ownedStyle>
4682 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4683 </ownedElements>
4684 <ownedElements xmi:type="diagram:DNodeListElement" uid="_fdPbyWkGEe24rIYSlCjKHA" name="FALSE" tooltipText="">
4685 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/FALSE"/>
4686 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/FALSE"/>
4687 <ownedStyle xmi:type="diagram:BundledImage" uid="_fdPbymkGEe24rIYSlCjKHA" labelAlignment="LEFT">
4688 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4689 </ownedStyle>
4690 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4691 </ownedElements>
4692 <ownedElements xmi:type="diagram:DNodeListElement" uid="_fdQCwGkGEe24rIYSlCjKHA" name="UNKNOWN" tooltipText="">
4693 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/UNKNOWN"/>
4694 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/UNKNOWN"/>
4695 <ownedStyle xmi:type="diagram:BundledImage" uid="_fdQCwWkGEe24rIYSlCjKHA" labelAlignment="LEFT">
4696 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4697 </ownedStyle>
4698 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4699 </ownedElements>
4700 <ownedElements xmi:type="diagram:DNodeListElement" uid="_fdQCwmkGEe24rIYSlCjKHA" name="ERROR" tooltipText="">
4701 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/>
4702 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/>
4703 <ownedStyle xmi:type="diagram:BundledImage" uid="_fdQCw2kGEe24rIYSlCjKHA" labelAlignment="LEFT">
4704 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
4705 </ownedStyle>
4706 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
4707 </ownedElements>
4708 </ownedDiagramElements>
4533 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 4709 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
4534 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_z1aAQF3lEe2LuOZzJ_LhLg"/> 4710 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_z1aAQF3lEe2LuOZzJ_LhLg"/>
4535 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 4711 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
@@ -4614,67 +4790,7 @@
4614 <styles xmi:type="notation:FilteringStyle" xmi:id="_IhNHNmgpEe24RpwpWgpkFQ"/> 4790 <styles xmi:type="notation:FilteringStyle" xmi:id="_IhNHNmgpEe24RpwpWgpkFQ"/>
4615 </children> 4791 </children>
4616 <styles xmi:type="notation:ShapeStyle" xmi:id="_IhNHMWgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8" italic="true"/> 4792 <styles xmi:type="notation:ShapeStyle" xmi:id="_IhNHMWgpEe24RpwpWgpkFQ" fontName="Noto Sans" fontHeight="8" italic="true"/>
4617 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IhNHMmgpEe24RpwpWgpkFQ" x="674" y="684"/> 4793 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IhNHMmgpEe24RpwpWgpkFQ" x="636" y="356"/>
4618 </children>
4619 <children xmi:type="notation:Node" xmi:id="_8CJxQGhDEe2gzfo0wfORyw" type="2003" element="_8BPLQGhDEe2gzfo0wfORyw">
4620 <children xmi:type="notation:Node" xmi:id="_8COCsGhDEe2gzfo0wfORyw" type="5007"/>
4621 <children xmi:type="notation:Node" xmi:id="_8COpwGhDEe2gzfo0wfORyw" type="7004">
4622 <styles xmi:type="notation:SortingStyle" xmi:id="_8COpwWhDEe2gzfo0wfORyw"/>
4623 <styles xmi:type="notation:FilteringStyle" xmi:id="_8COpwmhDEe2gzfo0wfORyw"/>
4624 </children>
4625 <styles xmi:type="notation:ShapeStyle" xmi:id="_8CJxQWhDEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4626 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8CJxQmhDEe2gzfo0wfORyw" x="576" y="348" width="120" height="100"/>
4627 </children>
4628 <children xmi:type="notation:Node" xmi:id="__veXkGhDEe2gzfo0wfORyw" type="2003" element="__vBEkGhDEe2gzfo0wfORyw">
4629 <children xmi:type="notation:Node" xmi:id="__veXk2hDEe2gzfo0wfORyw" type="5007"/>
4630 <children xmi:type="notation:Node" xmi:id="__veXlGhDEe2gzfo0wfORyw" type="7004">
4631 <children xmi:type="notation:Node" xmi:id="_NBj4sGhEEe2gzfo0wfORyw" type="3010" element="_NA-p4GhEEe2gzfo0wfORyw">
4632 <styles xmi:type="notation:FontStyle" xmi:id="_NBj4sWhEEe2gzfo0wfORyw" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
4633 <layoutConstraint xmi:type="notation:Location" xmi:id="_NBj4smhEEe2gzfo0wfORyw"/>
4634 </children>
4635 <styles xmi:type="notation:SortingStyle" xmi:id="__veXlWhDEe2gzfo0wfORyw"/>
4636 <styles xmi:type="notation:FilteringStyle" xmi:id="__veXlmhDEe2gzfo0wfORyw"/>
4637 </children>
4638 <styles xmi:type="notation:ShapeStyle" xmi:id="__veXkWhDEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4639 <layoutConstraint xmi:type="notation:Bounds" xmi:id="__veXkmhDEe2gzfo0wfORyw" x="468" y="516" width="135" height="100"/>
4640 </children>
4641 <children xmi:type="notation:Node" xmi:id="_CDdMYGhEEe2gzfo0wfORyw" type="2003" element="_CCxP4GhEEe2gzfo0wfORyw">
4642 <children xmi:type="notation:Node" xmi:id="_CDdzcmhEEe2gzfo0wfORyw" type="5007"/>
4643 <children xmi:type="notation:Node" xmi:id="_CDdzc2hEEe2gzfo0wfORyw" type="7004">
4644 <children xmi:type="notation:Node" xmi:id="_rVyFIGhEEe2gzfo0wfORyw" type="3010" element="_rVH90GhEEe2gzfo0wfORyw">
4645 <styles xmi:type="notation:FontStyle" xmi:id="_rVyFIWhEEe2gzfo0wfORyw" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
4646 <layoutConstraint xmi:type="notation:Location" xmi:id="_rVyFImhEEe2gzfo0wfORyw"/>
4647 </children>
4648 <styles xmi:type="notation:SortingStyle" xmi:id="_CDdzdGhEEe2gzfo0wfORyw"/>
4649 <styles xmi:type="notation:FilteringStyle" xmi:id="_CDdzdWhEEe2gzfo0wfORyw"/>
4650 </children>
4651 <styles xmi:type="notation:ShapeStyle" xmi:id="_CDdzcGhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4652 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CDdzcWhEEe2gzfo0wfORyw" x="660" y="516" width="147" height="100"/>
4653 </children>
4654 <children xmi:type="notation:Node" xmi:id="_L2dXgGhEEe2gzfo0wfORyw" type="2003" element="_L2YfAGhEEe2gzfo0wfORyw">
4655 <children xmi:type="notation:Node" xmi:id="_L2d-kGhEEe2gzfo0wfORyw" type="5007"/>
4656 <children xmi:type="notation:Node" xmi:id="_L2d-kWhEEe2gzfo0wfORyw" type="7004">
4657 <children xmi:type="notation:Node" xmi:id="_L2eloGhEEe2gzfo0wfORyw" type="3010" element="_L2a7Q2hEEe2gzfo0wfORyw">
4658 <styles xmi:type="notation:FontStyle" xmi:id="_L2eloWhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4659 <layoutConstraint xmi:type="notation:Location" xmi:id="_L2elomhEEe2gzfo0wfORyw"/>
4660 </children>
4661 <children xmi:type="notation:Node" xmi:id="_L2elo2hEEe2gzfo0wfORyw" type="3010" element="_L2a7RWhEEe2gzfo0wfORyw">
4662 <styles xmi:type="notation:FontStyle" xmi:id="_L2elpGhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4663 <layoutConstraint xmi:type="notation:Location" xmi:id="_L2elpWhEEe2gzfo0wfORyw"/>
4664 </children>
4665 <children xmi:type="notation:Node" xmi:id="_L2elpmhEEe2gzfo0wfORyw" type="3010" element="_L2biUWhEEe2gzfo0wfORyw">
4666 <styles xmi:type="notation:FontStyle" xmi:id="_L2elp2hEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4667 <layoutConstraint xmi:type="notation:Location" xmi:id="_L2elqGhEEe2gzfo0wfORyw"/>
4668 </children>
4669 <children xmi:type="notation:Node" xmi:id="_L2elqWhEEe2gzfo0wfORyw" type="3010" element="_L2biU2hEEe2gzfo0wfORyw">
4670 <styles xmi:type="notation:FontStyle" xmi:id="_L2fMsGhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4671 <layoutConstraint xmi:type="notation:Location" xmi:id="_L2fMsWhEEe2gzfo0wfORyw"/>
4672 </children>
4673 <styles xmi:type="notation:SortingStyle" xmi:id="_L2d-kmhEEe2gzfo0wfORyw"/>
4674 <styles xmi:type="notation:FilteringStyle" xmi:id="_L2d-k2hEEe2gzfo0wfORyw"/>
4675 </children>
4676 <styles xmi:type="notation:ShapeStyle" xmi:id="_L2dXgWhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4677 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L2dXgmhEEe2gzfo0wfORyw" x="476" y="684"/>
4678 </children> 4794 </children>
4679 <styles xmi:type="notation:DiagramStyle" xmi:id="_xkD40l4eEe2rXNsIDUvqhw"/> 4795 <styles xmi:type="notation:DiagramStyle" xmi:id="_xkD40l4eEe2rXNsIDUvqhw"/>
4680 <edges xmi:type="notation:Edge" xmi:id="_z9sps14eEe2rXNsIDUvqhw" type="4001" element="_z9q0gF4eEe2rXNsIDUvqhw" source="_z9rbk14eEe2rXNsIDUvqhw" target="_z9sCoF4eEe2rXNsIDUvqhw"> 4796 <edges xmi:type="notation:Edge" xmi:id="_z9sps14eEe2rXNsIDUvqhw" type="4001" element="_z9q0gF4eEe2rXNsIDUvqhw" source="_z9rbk14eEe2rXNsIDUvqhw" target="_z9sCoF4eEe2rXNsIDUvqhw">
@@ -4773,69 +4889,21 @@
4773 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AUWXYGTwEe2qdtyPWAtoxA" id="(0.0,0.061224489795918366)"/> 4889 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AUWXYGTwEe2qdtyPWAtoxA" id="(0.0,0.061224489795918366)"/>
4774 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AUWXYWTwEe2qdtyPWAtoxA" id="(1.0,0.061224489795918366)"/> 4890 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AUWXYWTwEe2qdtyPWAtoxA" id="(1.0,0.061224489795918366)"/>
4775 </edges> 4891 </edges>
4776 <edges xmi:type="notation:Edge" xmi:id="_9Qz8wGhDEe2gzfo0wfORyw" type="4001" element="_CxoVTGgpEe24RpwpWgpkFQ" source="_z9rbk14eEe2rXNsIDUvqhw" target="_8CJxQGhDEe2gzfo0wfORyw"> 4892 <edges xmi:type="notation:Edge" xmi:id="_jkascGkGEe24rIYSlCjKHA" type="4001" element="_CxoVTGgpEe24RpwpWgpkFQ" source="_z9rbk14eEe2rXNsIDUvqhw" target="_IhNHMGgpEe24RpwpWgpkFQ">
4777 <children xmi:type="notation:Node" xmi:id="_9Q0j0GhDEe2gzfo0wfORyw" type="6001"> 4893 <children xmi:type="notation:Node" xmi:id="_jkbTg2kGEe24rIYSlCjKHA" type="6001">
4778 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q0j0WhDEe2gzfo0wfORyw" x="-32" y="-16"/> 4894 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jkbThGkGEe24rIYSlCjKHA" x="-72" y="-16"/>
4779 </children>
4780 <children xmi:type="notation:Node" xmi:id="_9Q1K4GhDEe2gzfo0wfORyw" type="6002">
4781 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q1K4WhDEe2gzfo0wfORyw" x="9" y="10"/>
4782 </children>
4783 <children xmi:type="notation:Node" xmi:id="_9Q1K4mhDEe2gzfo0wfORyw" type="6003">
4784 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q1K42hDEe2gzfo0wfORyw" x="4" y="14"/>
4785 </children>
4786 <styles xmi:type="notation:ConnectorStyle" xmi:id="_9Qz8wWhDEe2gzfo0wfORyw" routing="Rectilinear"/>
4787 <styles xmi:type="notation:FontStyle" xmi:id="_9Qz8wmhDEe2gzfo0wfORyw" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
4788 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9Qz8w2hDEe2gzfo0wfORyw" points="[13, 0, -175, -73]$[13, 46, -175, -27]$[191, 46, 3, -27]$[191, 70, 3, -3]"/>
4789 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9Q3nIGhDEe2gzfo0wfORyw" id="(0.6792452830188679,1.0)"/>
4790 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9Q4OMGhDEe2gzfo0wfORyw" id="(0.4661016949152542,0.030612244897959183)"/>
4791 </edges>
4792 <edges xmi:type="notation:Edge" xmi:id="_FXFgUGhEEe2gzfo0wfORyw" type="4001" element="_FWwwQmhEEe2gzfo0wfORyw" source="__veXkGhDEe2gzfo0wfORyw" target="_8CJxQGhDEe2gzfo0wfORyw">
4793 <children xmi:type="notation:Node" xmi:id="_FXFgVGhEEe2gzfo0wfORyw" type="6001">
4794 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FXFgVWhEEe2gzfo0wfORyw" y="-10"/>
4795 </children>
4796 <children xmi:type="notation:Node" xmi:id="_FXFgVmhEEe2gzfo0wfORyw" type="6002">
4797 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FXFgV2hEEe2gzfo0wfORyw" y="10"/>
4798 </children>
4799 <children xmi:type="notation:Node" xmi:id="_FXFgWGhEEe2gzfo0wfORyw" type="6003">
4800 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FXFgWWhEEe2gzfo0wfORyw" y="10"/>
4801 </children>
4802 <styles xmi:type="notation:ConnectorStyle" xmi:id="_FXFgUWhEEe2gzfo0wfORyw" routing="Tree"/>
4803 <styles xmi:type="notation:FontStyle" xmi:id="_FXFgUmhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4804 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FXFgU2hEEe2gzfo0wfORyw" points="[0, 0, -120, 70]$[120, -70, 0, 0]"/>
4805 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FXGHYGhEEe2gzfo0wfORyw" id="(0.45112781954887216,0.0)"/>
4806 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FXGHYWhEEe2gzfo0wfORyw" id="(0.5,0.5)"/>
4807 </edges>
4808 <edges xmi:type="notation:Edge" xmi:id="_FtE-cGhEEe2gzfo0wfORyw" type="4001" element="_FslPPGhEEe2gzfo0wfORyw" source="_CDdMYGhEEe2gzfo0wfORyw" target="_8CJxQGhDEe2gzfo0wfORyw">
4809 <children xmi:type="notation:Node" xmi:id="_FtE-dGhEEe2gzfo0wfORyw" type="6001">
4810 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FtE-dWhEEe2gzfo0wfORyw" y="-10"/>
4811 </children>
4812 <children xmi:type="notation:Node" xmi:id="_FtE-dmhEEe2gzfo0wfORyw" type="6002">
4813 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FtE-d2hEEe2gzfo0wfORyw" y="10"/>
4814 </children>
4815 <children xmi:type="notation:Node" xmi:id="_FtFlgGhEEe2gzfo0wfORyw" type="6003">
4816 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FtFlgWhEEe2gzfo0wfORyw" y="10"/>
4817 </children>
4818 <styles xmi:type="notation:ConnectorStyle" xmi:id="_FtE-cWhEEe2gzfo0wfORyw" routing="Tree"/>
4819 <styles xmi:type="notation:FontStyle" xmi:id="_FtE-cmhEEe2gzfo0wfORyw" fontName="Noto Sans" fontHeight="8"/>
4820 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FtE-c2hEEe2gzfo0wfORyw" points="[0, 0, 132, 70]$[-132, -70, 0, 0]"/>
4821 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FtFlgmhEEe2gzfo0wfORyw" id="(0.5793103448275863,0.0)"/>
4822 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FtFlg2hEEe2gzfo0wfORyw" id="(0.4661016949152542,0.030612244897959183)"/>
4823 </edges>
4824 <edges xmi:type="notation:Edge" xmi:id="_HNbW4GhEEe2gzfo0wfORyw" type="4001" element="_HNHN1mhEEe2gzfo0wfORyw" source="_CDdMYGhEEe2gzfo0wfORyw" target="_IhNHMGgpEe24RpwpWgpkFQ">
4825 <children xmi:type="notation:Node" xmi:id="_HNbW5GhEEe2gzfo0wfORyw" type="6001">
4826 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HNbW5WhEEe2gzfo0wfORyw" x="-5" y="-32"/>
4827 </children> 4895 </children>
4828 <children xmi:type="notation:Node" xmi:id="_HNbW5mhEEe2gzfo0wfORyw" type="6002"> 4896 <children xmi:type="notation:Node" xmi:id="_jkbThWkGEe24rIYSlCjKHA" type="6002">
4829 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HNbW52hEEe2gzfo0wfORyw" y="10"/> 4897 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jkbThmkGEe24rIYSlCjKHA" x="52" y="10"/>
4830 </children> 4898 </children>
4831 <children xmi:type="notation:Node" xmi:id="_HNb98GhEEe2gzfo0wfORyw" type="6003"> 4899 <children xmi:type="notation:Node" xmi:id="_jkbTh2kGEe24rIYSlCjKHA" type="6003">
4832 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HNb98WhEEe2gzfo0wfORyw" y="10"/> 4900 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jkbTiGkGEe24rIYSlCjKHA" x="6" y="23"/>
4833 </children> 4901 </children>
4834 <styles xmi:type="notation:ConnectorStyle" xmi:id="_HNbW4WhEEe2gzfo0wfORyw" routing="Rectilinear"/> 4902 <styles xmi:type="notation:ConnectorStyle" xmi:id="_jkbTgGkGEe24rIYSlCjKHA" routing="Rectilinear"/>
4835 <styles xmi:type="notation:FontStyle" xmi:id="_HNbW4mhEEe2gzfo0wfORyw" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 4903 <styles xmi:type="notation:FontStyle" xmi:id="_jkbTgWkGEe24rIYSlCjKHA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
4836 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HNbW42hEEe2gzfo0wfORyw" points="[0, 0, 0, -70]$[0, 70, 0, 0]"/> 4904 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jkbTgmkGEe24rIYSlCjKHA" points="[13, 0, -225, -91]$[13, 46, -225, -45]$[251, 46, 13, -45]$[251, 78, 13, -13]"/>
4837 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HNb98mhEEe2gzfo0wfORyw" id="(0.503448275862069,1.0)"/> 4905 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jkchoGkGEe24rIYSlCjKHA" id="(0.6792452830188679,1.0)"/>
4838 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HNb982hEEe2gzfo0wfORyw" id="(0.5,0.0)"/> 4906 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jkchoWkGEe24rIYSlCjKHA" id="(0.3813559322033898,0.1326530612244898)"/>
4839 </edges> 4907 </edges>
4840 </data> 4908 </data>
4841 </ownedAnnotationEntries> 4909 </ownedAnnotationEntries>
@@ -5017,7 +5085,7 @@
5017 </ownedStyle> 5085 </ownedStyle>
5018 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 5086 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5019 </ownedDiagramElements> 5087 </ownedDiagramElements>
5020 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_CxoVTGgpEe24RpwpWgpkFQ" name="[0..1] value" sourceNode="_z9nxMF4eEe2rXNsIDUvqhw" targetNode="_8BPLQGhDEe2gzfo0wfORyw"> 5088 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_CxoVTGgpEe24RpwpWgpkFQ" name="[0..1] value" sourceNode="_z9nxMF4eEe2rXNsIDUvqhw" targetNode="_IhJc0GgpEe24RpwpWgpkFQ">
5021 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/value"/> 5089 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/value"/>
5022 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/value"/> 5090 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//Assertion/value"/>
5023 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Gl7GTGgpEe24RpwpWgpkFQ" description="_z9q0gV4eEe2rXNsIDUvqhw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0"> 5091 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Gl7GTGgpEe24RpwpWgpkFQ" description="_z9q0gV4eEe2rXNsIDUvqhw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
@@ -5030,7 +5098,7 @@
5030 </ownedStyle> 5098 </ownedStyle>
5031 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/> 5099 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5032 </ownedDiagramElements> 5100 </ownedDiagramElements>
5033 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_IhJc0GgpEe24RpwpWgpkFQ" name="Expr" tooltipText="" incomingEdges="_HNHN1mhEEe2gzfo0wfORyw" width="12" height="10"> 5101 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_IhJc0GgpEe24RpwpWgpkFQ" name="Expr" tooltipText="" incomingEdges="_CxoVTGgpEe24RpwpWgpkFQ" width="12" height="10">
5034 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/> 5102 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/>
5035 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/> 5103 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Expr"/>
5036 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 5104 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -5042,136 +5110,6 @@
5042 </ownedStyle> 5110 </ownedStyle>
5043 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/> 5111 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
5044 </ownedDiagramElements> 5112 </ownedDiagramElements>
5045 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_8BPLQGhDEe2gzfo0wfORyw" name="AssertionValue" tooltipText="" incomingEdges="_CxoVTGgpEe24RpwpWgpkFQ _FWwwQmhEEe2gzfo0wfORyw _FslPPGhEEe2gzfo0wfORyw" width="12" height="10">
5046 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionValue"/>
5047 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//AssertionValue"/>
5048 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
5049 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
5050 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
5051 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="__eBbM2hDEe2gzfo0wfORyw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
5052 <labelFormat>italic</labelFormat>
5053 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
5054 </ownedStyle>
5055 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
5056 </ownedDiagramElements>
5057 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="__vBEkGhDEe2gzfo0wfORyw" name="LogicAssertionValue" tooltipText="" outgoingEdges="_FWwwQmhEEe2gzfo0wfORyw" width="12" height="10">
5058 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicAssertionValue"/>
5059 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicAssertionValue"/>
5060 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
5061 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
5062 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
5063 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_OEMabmhEEe2gzfo0wfORyw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
5064 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
5065 </ownedStyle>
5066 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
5067 <ownedElements xmi:type="diagram:DNodeListElement" uid="_NA-p4GhEEe2gzfo0wfORyw" name="logicValue : LogicValue = TRUE" tooltipText="">
5068 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LogicAssertionValue/logicValue"/>
5069 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//LogicAssertionValue/logicValue"/>
5070 <ownedStyle xmi:type="diagram:BundledImage" uid="_OENogWhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5071 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
5072 </ownedStyle>
5073 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
5074 </ownedElements>
5075 </ownedDiagramElements>
5076 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_CCxP4GhEEe2gzfo0wfORyw" name="ExprAssertionValue" tooltipText="" outgoingEdges="_FslPPGhEEe2gzfo0wfORyw _HNHN1mhEEe2gzfo0wfORyw" width="12" height="10">
5077 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExprAssertionValue"/>
5078 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExprAssertionValue"/>
5079 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
5080 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
5081 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
5082 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_sP6yM2hEEe2gzfo0wfORyw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
5083 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
5084 </ownedStyle>
5085 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
5086 <ownedElements xmi:type="diagram:DNodeListElement" uid="_rVH90GhEEe2gzfo0wfORyw" name="range : EBoolean = false" tooltipText="">
5087 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ExprAssertionValue/range"/>
5088 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ExprAssertionValue/range"/>
5089 <ownedStyle xmi:type="diagram:BundledImage" uid="_sP8AQmhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5090 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
5091 </ownedStyle>
5092 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
5093 </ownedElements>
5094 </ownedDiagramElements>
5095 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_FWwwQmhEEe2gzfo0wfORyw" sourceNode="__vBEkGhDEe2gzfo0wfORyw" targetNode="_8BPLQGhDEe2gzfo0wfORyw">
5096 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicAssertionValue"/>
5097 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//LogicAssertionValue"/>
5098 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_OEPdxWhEEe2gzfo0wfORyw" targetArrow="InputClosedArrow" routingStyle="tree">
5099 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5100 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_OEPdxmhEEe2gzfo0wfORyw" showIcon="false">
5101 <labelFormat>italic</labelFormat>
5102 </beginLabelStyle>
5103 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_OEPdx2hEEe2gzfo0wfORyw" showIcon="false"/>
5104 </ownedStyle>
5105 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5106 </ownedDiagramElements>
5107 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_FslPPGhEEe2gzfo0wfORyw" sourceNode="_CCxP4GhEEe2gzfo0wfORyw" targetNode="_8BPLQGhDEe2gzfo0wfORyw">
5108 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExprAssertionValue"/>
5109 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ExprAssertionValue"/>
5110 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_sP91iGhEEe2gzfo0wfORyw" targetArrow="InputClosedArrow" routingStyle="tree">
5111 <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
5112 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_sP91iWhEEe2gzfo0wfORyw" showIcon="false">
5113 <labelFormat>italic</labelFormat>
5114 </beginLabelStyle>
5115 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_sP91imhEEe2gzfo0wfORyw" showIcon="false"/>
5116 </ownedStyle>
5117 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
5118 </ownedDiagramElements>
5119 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_HNHN1mhEEe2gzfo0wfORyw" name="[0..1] body" sourceNode="_CCxP4GhEEe2gzfo0wfORyw" targetNode="_IhJc0GgpEe24RpwpWgpkFQ">
5120 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//ExprAssertionValue/body"/>
5121 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//ExprAssertionValue/body"/>
5122 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_HNHN12hEEe2gzfo0wfORyw" description="_z9q0gV4eEe2rXNsIDUvqhw" sourceArrow="FillDiamond" routingStyle="manhattan" strokeColor="0,0,0">
5123 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_HNHN2WhEEe2gzfo0wfORyw" showIcon="false">
5124 <customFeatures>labelSize</customFeatures>
5125 </centerLabelStyle>
5126 <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_HNHN2GhEEe2gzfo0wfORyw" showIcon="false" labelColor="39,76,114">
5127 <customFeatures>labelSize</customFeatures>
5128 </endLabelStyle>
5129 </ownedStyle>
5130 <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
5131 </ownedDiagramElements>
5132 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_L2YfAGhEEe2gzfo0wfORyw" name="LogicValue" tooltipText="" width="12" height="10">
5133 <target xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LogicValue"/>
5134 <semanticElements xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//LogicValue"/>
5135 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
5136 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
5137 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
5138 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_L2YfAWhEEe2gzfo0wfORyw" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
5139 <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@style"/>
5140 </ownedStyle>
5141 <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']"/>
5142 <ownedElements xmi:type="diagram:DNodeListElement" uid="_L2a7Q2hEEe2gzfo0wfORyw" name="TRUE" tooltipText="">
5143 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/TRUE"/>
5144 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/TRUE"/>
5145 <ownedStyle xmi:type="diagram:BundledImage" uid="_L2a7RGhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5146 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5147 </ownedStyle>
5148 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5149 </ownedElements>
5150 <ownedElements xmi:type="diagram:DNodeListElement" uid="_L2a7RWhEEe2gzfo0wfORyw" name="FALSE" tooltipText="">
5151 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/FALSE"/>
5152 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/FALSE"/>
5153 <ownedStyle xmi:type="diagram:BundledImage" uid="_L2biUGhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5154 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5155 </ownedStyle>
5156 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5157 </ownedElements>
5158 <ownedElements xmi:type="diagram:DNodeListElement" uid="_L2biUWhEEe2gzfo0wfORyw" name="UNKNOWN" tooltipText="">
5159 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/UNKNOWN"/>
5160 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/UNKNOWN"/>
5161 <ownedStyle xmi:type="diagram:BundledImage" uid="_L2biUmhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5162 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5163 </ownedStyle>
5164 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5165 </ownedElements>
5166 <ownedElements xmi:type="diagram:DNodeListElement" uid="_L2biU2hEEe2gzfo0wfORyw" name="ERROR" tooltipText="">
5167 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/>
5168 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//LogicValue/ERROR"/>
5169 <ownedStyle xmi:type="diagram:BundledImage" uid="_L2biVGhEEe2gzfo0wfORyw" labelAlignment="LEFT">
5170 <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']/@style"/>
5171 </ownedStyle>
5172 <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EEnum']/@subNodeMappings[name='EC%20EEnumLiteral']"/>
5173 </ownedElements>
5174 </ownedDiagramElements>
5175 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 5113 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
5176 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_xj8kEF4eEe2rXNsIDUvqhw"/> 5114 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_xj8kEF4eEe2rXNsIDUvqhw"/>
5177 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 5115 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/subprojects/language-model/src/main/resources/model/problem.ecore b/subprojects/language-model/src/main/resources/model/problem.ecore
index 314639c1..2d86382d 100644
--- a/subprojects/language-model/src/main/resources/model/problem.ecore
+++ b/subprojects/language-model/src/main/resources/model/problem.ecore
@@ -54,7 +54,7 @@
54 <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" 54 <eStructuralFeatures xsi:type="ecore:EAttribute" name="default" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
55 defaultValueLiteral="false"/> 55 defaultValueLiteral="false"/>
56 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/> 56 <eStructuralFeatures xsi:type="ecore:EReference" name="relation" eType="#//Relation"/>
57 <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//AssertionValue" 57 <eStructuralFeatures xsi:type="ecore:EReference" name="value" eType="#//Expr"
58 containment="true"/> 58 containment="true"/>
59 </eClassifiers> 59 </eClassifiers>
60 <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/> 60 <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//VariableOrNode"/>
@@ -159,6 +159,10 @@
159 <eLiterals name="EQ" value="4"/> 159 <eLiterals name="EQ" value="4"/>
160 <eLiterals name="NOT_EQ" value="5"/> 160 <eLiterals name="NOT_EQ" value="5"/>
161 <eLiterals name="IN" value="6"/> 161 <eLiterals name="IN" value="6"/>
162 <eLiterals name="SUBSUMES" value="7"/>
163 <eLiterals name="SUBSUMED_BY" value="8"/>
164 <eLiterals name="ABS_EQ" value="9"/>
165 <eLiterals name="ABS_NOT_EQ" value="10"/>
162 </eClassifiers> 166 </eClassifiers>
163 <eClassifiers xsi:type="ecore:EEnum" name="ReferenceKind"> 167 <eClassifiers xsi:type="ecore:EEnum" name="ReferenceKind">
164 <eLiterals name="REFERENCE" value="1"/> 168 <eLiterals name="REFERENCE" value="1"/>
@@ -257,12 +261,7 @@
257 <eLiterals name="REAL" value="1"/> 261 <eLiterals name="REAL" value="1"/>
258 <eLiterals name="STRING" value="2"/> 262 <eLiterals name="STRING" value="2"/>
259 </eClassifiers> 263 </eClassifiers>
260 <eClassifiers xsi:type="ecore:EClass" name="AssertionValue" abstract="true"/> 264 <eClassifiers xsi:type="ecore:EClass" name="LogicConstant" eSuperTypes="#//Constant">
261 <eClassifiers xsi:type="ecore:EClass" name="LogicAssertionValue" eSuperTypes="#//AssertionValue">
262 <eStructuralFeatures xsi:type="ecore:EAttribute" name="logicValue" eType="#//LogicValue"/> 265 <eStructuralFeatures xsi:type="ecore:EAttribute" name="logicValue" eType="#//LogicValue"/>
263 </eClassifiers> 266 </eClassifiers>
264 <eClassifiers xsi:type="ecore:EClass" name="ExprAssertionValue" eSuperTypes="#//AssertionValue">
265 <eStructuralFeatures xsi:type="ecore:EReference" name="body" eType="#//Expr" containment="true"/>
266 <eStructuralFeatures xsi:type="ecore:EAttribute" name="range" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
267 </eClassifiers>
268</ecore:EPackage> 267</ecore:EPackage>
diff --git a/subprojects/language-model/src/main/resources/model/problem.genmodel b/subprojects/language-model/src/main/resources/model/problem.genmodel
index c5d7c0ea..5767d18d 100644
--- a/subprojects/language-model/src/main/resources/model/problem.genmodel
+++ b/subprojects/language-model/src/main/resources/model/problem.genmodel
@@ -30,6 +30,10 @@
30 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/EQ"/> 30 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/EQ"/>
31 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/NOT_EQ"/> 31 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/NOT_EQ"/>
32 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/IN"/> 32 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/IN"/>
33 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/SUBSUMES"/>
34 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/SUBSUMED_BY"/>
35 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/ABS_EQ"/>
36 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/ABS_NOT_EQ"/>
33 </genEnums> 37 </genEnums>
34 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//ReferenceKind"> 38 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//ReferenceKind">
35 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/REFERENCE"/> 39 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/REFERENCE"/>
@@ -226,13 +230,8 @@
226 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//AttributeDeclaration/attributeType"/> 230 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//AttributeDeclaration/attributeType"/>
227 </genClasses> 231 </genClasses>
228 <genClasses ecoreClass="problem.ecore#//FlagDeclaration"/> 232 <genClasses ecoreClass="problem.ecore#//FlagDeclaration"/>
229 <genClasses ecoreClass="problem.ecore#//AssertionValue"/> 233 <genClasses ecoreClass="problem.ecore#//LogicConstant">
230 <genClasses ecoreClass="problem.ecore#//LogicAssertionValue"> 234 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LogicConstant/logicValue"/>
231 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//LogicAssertionValue/logicValue"/>
232 </genClasses>
233 <genClasses ecoreClass="problem.ecore#//ExprAssertionValue">
234 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ExprAssertionValue/body"/>
235 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ExprAssertionValue/range"/>
236 </genClasses> 235 </genClasses>
237 </genPackages> 236 </genPackages>
238</genmodel:GenModel> 237</genmodel:GenModel>
diff --git a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java
index 557e9752..13bb20d7 100644
--- a/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java
+++ b/subprojects/language-semantics/src/main/java/tools/refinery/language/semantics/model/ModelInitializer.java
@@ -84,8 +84,8 @@ public class ModelInitializer {
84 return Tuple.of(nodes); 84 return Tuple.of(nodes);
85 } 85 }
86 86
87 private static TruthValue getTruthValue(AssertionValue value) { 87 private static TruthValue getTruthValue(Expr expr) {
88 if (!(value instanceof LogicAssertionValue logicAssertionValue)) { 88 if (!(expr instanceof LogicConstant logicAssertionValue)) {
89 return TruthValue.ERROR; 89 return TruthValue.ERROR;
90 } 90 }
91 return switch (logicAssertionValue.getLogicValue()) { 91 return switch (logicAssertionValue.getLogicValue()) {
diff --git a/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java b/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java
index 83030b2b..17f1ff5c 100644
--- a/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java
+++ b/subprojects/language-web/src/test/java/tools/refinery/language/web/xtext/servlet/TransactionExecutorTest.java
@@ -86,7 +86,7 @@ class TransactionExecutorTest {
86 var stateId = updateFullText(); 86 var stateId = updateFullText();
87 var responseHandler = sendRequestAndWaitForAllResponses( 87 var responseHandler = sendRequestAndWaitForAllResponses(
88 new XtextWebRequest("bar", Map.of("resource", RESOURCE_NAME, "serviceType", "update", "requiredStateId", 88 new XtextWebRequest("bar", Map.of("resource", RESOURCE_NAME, "serviceType", "update", "requiredStateId",
89 stateId, "deltaText", "individual q.\nnode(q).\n", "deltaOffset", "0", "deltaReplaceLength", 89 stateId, "deltaText", "indiv q.\nnode(q).\n", "deltaOffset", "0", "deltaReplaceLength",
90 "0"))); 90 "0")));
91 91
92 var captor = newCaptor(); 92 var captor = newCaptor();
diff --git a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
index 8b13a693..95a64737 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
+++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
@@ -33,7 +33,8 @@ enum ReferenceKind:
33 REFERENCE="refers" | CONTAINMENT="contains" | CONTAINER="container"; 33 REFERENCE="refers" | CONTAINMENT="contains" | CONTAINER="container";
34 34
35ReferenceDeclaration: 35ReferenceDeclaration:
36 kind=ReferenceKind referenceType=[Relation|QualifiedName] 36 (referenceType=[Relation|NonContainmentQualifiedName] |
37 kind=ReferenceKind referenceType=[Relation|QualifiedName])
37 ("[" multiplicity=Multiplicity "]")? 38 ("[" multiplicity=Multiplicity "]")?
38 name=Identifier 39 name=Identifier
39 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?; 40 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?;
@@ -64,7 +65,7 @@ Conjunction:
64 literals+=Expr ("," literals+=Expr)*; 65 literals+=Expr ("," literals+=Expr)*;
65 66
66FunctionDefinition: 67FunctionDefinition:
67 functionType=PrimitiveType name=Identifier 68 "fn" functionType=PrimitiveType name=Identifier
68 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" 69 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")"
69 ("=" cases+=Case (";" cases+=Case)*)? 70 ("=" cases+=Case (";" cases+=Case)*)?
70 "."; 71 ".";
@@ -106,7 +107,8 @@ Expr:
106 ComparisonExpr; 107 ComparisonExpr;
107 108
108enum ComparisonOp: 109enum ComparisonOp:
109 LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" | IN="in"; 110 LESS="<" | LESS_EQ="<=" | GREATER=">" | GREATER_EQ=">=" | EQ="==" | NOT_EQ="!=" |
111 IN="in" | SUBSUMES=":>" | SUBSUMED_BY="<:" | ABS_EQ="===" | ABS_NOT_EQ="!==";
110 112
111ComparisonExpr returns Expr: 113ComparisonExpr returns Expr:
112 LatticeExpr ({ComparisonExpr.left=current} 114 LatticeExpr ({ComparisonExpr.left=current}
@@ -163,7 +165,7 @@ NegationExpr:
163 "!" body=UnaryExpr; 165 "!" body=UnaryExpr;
164 166
165CountExpr: 167CountExpr:
166 "#" body=UnaryExpr; 168 "count" body=UnaryExpr;
167 169
168enum AggregationOp: 170enum AggregationOp:
169 SUM="sum" | PROD="prod" | MIN="min" | MAX="max"; 171 SUM="sum" | PROD="prod" | MIN="min" | MAX="max";
@@ -180,7 +182,7 @@ VariableOrNodeExpr:
180 variableOrNode=[VariableOrNode|QualifiedName]; 182 variableOrNode=[VariableOrNode|QualifiedName];
181 183
182Constant: 184Constant:
183 RealConstant | IntConstant | InfConstant | StringConstant; 185 RealConstant | IntConstant | InfConstant | StringConstant | LogicConstant;
184 186
185IntConstant: 187IntConstant:
186 intValue=INT; 188 intValue=INT;
@@ -194,12 +196,18 @@ InfConstant:
194StringConstant: 196StringConstant:
195 stringValue=STRING; 197 stringValue=STRING;
196 198
199enum LogicValue:
200 TRUE="true" | FALSE="false" | UNKNOWN="unknown" | ERROR="error";
201
202LogicConstant:
203 logicValue=LogicValue;
204
197Assertion: 205Assertion:
198 default?="default"? 206 default?="default"?
199 (relation=[Relation|QualifiedName] 207 (relation=[Relation|QualifiedName]
200 "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")" 208 "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")"
201 value=AssertionValue | 209 ":" value=Expr |
202 value=ShortLogicAssertionValue 210 value=ShortLogicConstant
203 relation=[Relation|QualifiedName] 211 relation=[Relation|QualifiedName]
204 "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")") 212 "(" (arguments+=AssertionArgument ("," arguments+=AssertionArgument)*)? ")")
205 "."; 213 ".";
@@ -213,23 +221,11 @@ NodeAssertionArgument:
213WildcardAssertionArgument: 221WildcardAssertionArgument:
214 {WildcardAssertionArgument} "*"; 222 {WildcardAssertionArgument} "*";
215 223
216AssertionValue:
217 LogicAssertionValue | ExprAssertionValue;
218
219enum LogicValue:
220 TRUE="true" | FALSE="false" | UNKNOWN="unknown" | ERROR="error";
221
222LogicAssertionValue:
223 ":" logicValue=LogicValue;
224
225ExprAssertionValue:
226 (range?="in" | "=") body=Expr;
227
228enum ShortLogicValue returns LogicValue: 224enum ShortLogicValue returns LogicValue:
229 FALSE="!" | UNKNOWN="?"; 225 FALSE="!" | UNKNOWN="?";
230 226
231ShortLogicAssertionValue returns LogicAssertionValue: 227ShortLogicConstant returns LogicConstant:
232 {LogicAssertionValue} logicValue=ShortLogicValue?; 228 {LogicConstant} logicValue=ShortLogicValue?;
233 229
234ScopeDeclaration: 230ScopeDeclaration:
235 "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* "."; 231 "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* ".";
@@ -255,7 +251,7 @@ ExactMultiplicity:
255 exactValue=INT; 251 exactValue=INT;
256 252
257IndividualDeclaration: 253IndividualDeclaration:
258 "individual" nodes+=EnumLiteral ("," nodes+=EnumLiteral)* "."; 254 "indiv" nodes+=EnumLiteral ("," nodes+=EnumLiteral)* ".";
259 255
260UpperBound returns ecore::EInt: 256UpperBound returns ecore::EInt:
261 INT | "*"; 257 INT | "*";
@@ -263,8 +259,14 @@ UpperBound returns ecore::EInt:
263QualifiedName hidden(): 259QualifiedName hidden():
264 Identifier ("::" Identifier)*; 260 Identifier ("::" Identifier)*;
265 261
262NonContainmentQualifiedName hidden():
263 NonContainmentIdentifier ("::" Identifier)*;
264
266Identifier: 265Identifier:
267 ID | "contains" | "contained" | "sum" | "prod" | "min" | "max"; 266 NonContainmentIdentifier | "contains";
267
268NonContainmentIdentifier:
269 ID | "contained" | "sum" | "prod" | "min" | "max";
268 270
269Real returns ecore::EDouble: 271Real returns ecore::EDouble:
270 EXPONENTIAL | INT "." (INT | EXPONENTIAL); 272 EXPONENTIAL | INT "." (INT | EXPONENTIAL);
diff --git a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
index 46870edb..797535ea 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/formatting2/ProblemFormatter.java
@@ -3,7 +3,6 @@
3 */ 3 */
4package tools.refinery.language.formatting2; 4package tools.refinery.language.formatting2;
5 5
6import com.google.inject.Inject;
7import org.eclipse.emf.ecore.EObject; 6import org.eclipse.emf.ecore.EObject;
8import org.eclipse.xtext.formatting2.AbstractJavaFormatter; 7import org.eclipse.xtext.formatting2.AbstractJavaFormatter;
9import org.eclipse.xtext.formatting2.IFormattableDocument; 8import org.eclipse.xtext.formatting2.IFormattableDocument;
@@ -11,15 +10,10 @@ import org.eclipse.xtext.formatting2.IHiddenRegionFormatter;
11import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionsFinder; 10import org.eclipse.xtext.formatting2.regionaccess.ISemanticRegionsFinder;
12import org.eclipse.xtext.formatting2.regionaccess.ISequentialRegion; 11import org.eclipse.xtext.formatting2.regionaccess.ISequentialRegion;
13import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; 12import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
14
15import tools.refinery.language.model.problem.*; 13import tools.refinery.language.model.problem.*;
16import tools.refinery.language.services.ProblemGrammarAccess;
17 14
18@SuppressWarnings("UnstableApiUsage") 15@SuppressWarnings("UnstableApiUsage")
19public class ProblemFormatter extends AbstractJavaFormatter { 16public class ProblemFormatter extends AbstractJavaFormatter {
20 @Inject
21 private ProblemGrammarAccess problemGrammarAccess;
22
23 protected void format(Problem problem, IFormattableDocument doc) { 17 protected void format(Problem problem, IFormattableDocument doc) {
24 doc.prepend(problem, this::noSpace); 18 doc.prepend(problem, this::noSpace);
25 var region = regionFor(problem); 19 var region = regionFor(problem);
@@ -37,31 +31,26 @@ public class ProblemFormatter extends AbstractJavaFormatter {
37 doc.append(region.feature(ProblemPackage.Literals.ASSERTION__DEFAULT), this::oneSpace); 31 doc.append(region.feature(ProblemPackage.Literals.ASSERTION__DEFAULT), this::oneSpace);
38 doc.append(region.feature(ProblemPackage.Literals.ASSERTION__RELATION), this::noSpace); 32 doc.append(region.feature(ProblemPackage.Literals.ASSERTION__RELATION), this::noSpace);
39 formatParenthesizedList(region, doc); 33 formatParenthesizedList(region, doc);
34 for (var argument : assertion.getArguments()) {
35 doc.format(argument);
36 }
37 var colon = region.keyword(":");
38 boolean abbreviated = colon == null;
39 if (!abbreviated) {
40 doc.prepend(colon, this::noSpace);
41 doc.append(colon, this::oneSpace);
42 }
40 var value = assertion.getValue(); 43 var value = assertion.getValue();
41 if (value != null) { 44 if (value != null) {
42 doc.append(value, this::noSpace); 45 var valueRegion = regionForEObject(value);
46 // Avoid clash between noSpace after ASSERTION_DEFAULT and noSpace after the 0-length region
47 // for a true LogicAssertionValue if the abbreviated form of assertion (no : operator) is used.
48 if (abbreviated && valueRegion != null && valueRegion.getLength() > 0) {
49 doc.append(value, this::noSpace);
50 }
43 doc.format(value); 51 doc.format(value);
44 } 52 }
45 doc.prepend(region.keyword("."), this::noSpace); 53 doc.prepend(region.keyword("."), this::noSpace);
46 for (var argument : assertion.getArguments()) {
47 doc.format(argument);
48 }
49 }
50
51 protected void format(LogicAssertionValue assertionValue, IFormattableDocument doc) {
52 var region = regionFor(assertionValue);
53 doc.prepend(region.keyword(":"), this::noSpace);
54 doc.append(region.keyword(":"), this::oneSpace);
55 }
56
57 protected void format(ExprAssertionValue assertionValue, IFormattableDocument doc) {
58 var region = regionFor(assertionValue);
59 doc.surround(region.keyword("="), this::oneSpace);
60 doc.surround(region.keyword("in"), this::oneSpace);
61 var body = assertionValue.getBody();
62 if (body != null) {
63 doc.format(body);
64 }
65 } 54 }
66 55
67 protected void format(ClassDeclaration classDeclaration, IFormattableDocument doc) { 56 protected void format(ClassDeclaration classDeclaration, IFormattableDocument doc) {
@@ -128,7 +117,7 @@ public class ProblemFormatter extends AbstractJavaFormatter {
128 protected void format(IndividualDeclaration individualDeclaration, IFormattableDocument doc) { 117 protected void format(IndividualDeclaration individualDeclaration, IFormattableDocument doc) {
129 surroundNewLines(doc, individualDeclaration, this::singleNewLine); 118 surroundNewLines(doc, individualDeclaration, this::singleNewLine);
130 var region = regionFor(individualDeclaration); 119 var region = regionFor(individualDeclaration);
131 doc.append(region.keyword("individual"), this::oneSpace); 120 doc.append(region.keyword("indiv"), this::oneSpace);
132 formatList(region, ",", doc); 121 formatList(region, ",", doc);
133 doc.prepend(region.keyword("."), this::noSpace); 122 doc.prepend(region.keyword("."), this::noSpace);
134 } 123 }
diff --git a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
index c51a5e28..27ce1521 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/serializer/PreferShortAssertionsProblemSemanticSequencer.java
@@ -5,7 +5,7 @@ import org.eclipse.xtext.serializer.ISerializationContext;
5import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ListTransient; 5import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ListTransient;
6import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient; 6import org.eclipse.xtext.serializer.sequencer.ITransientValueService.ValueTransient;
7import tools.refinery.language.model.problem.Assertion; 7import tools.refinery.language.model.problem.Assertion;
8import tools.refinery.language.model.problem.LogicAssertionValue; 8import tools.refinery.language.model.problem.LogicConstant;
9import tools.refinery.language.model.problem.LogicValue; 9import tools.refinery.language.model.problem.LogicValue;
10import tools.refinery.language.model.problem.ProblemPackage; 10import tools.refinery.language.model.problem.ProblemPackage;
11import tools.refinery.language.services.ProblemGrammarAccess; 11import tools.refinery.language.services.ProblemGrammarAccess;
@@ -17,8 +17,8 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant
17 @Override 17 @Override
18 protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) { 18 protected void sequence_Assertion(ISerializationContext context, Assertion semanticObject) {
19 if (semanticObject.isDefault() || 19 if (semanticObject.isDefault() ||
20 !(semanticObject.getValue() instanceof LogicAssertionValue logicAssertionValue) || 20 !(semanticObject.getValue() instanceof LogicConstant logicConstant) ||
21 logicAssertionValue.getLogicValue() == LogicValue.ERROR) { 21 logicConstant.getLogicValue() == LogicValue.ERROR) {
22 super.sequence_Assertion(context, semanticObject); 22 super.sequence_Assertion(context, semanticObject);
23 return; 23 return;
24 } 24 }
@@ -34,7 +34,7 @@ public class PreferShortAssertionsProblemSemanticSequencer extends ProblemSemant
34 } 34 }
35 var feeder = createSequencerFeeder(context, semanticObject); 35 var feeder = createSequencerFeeder(context, semanticObject);
36 var access = grammarAccess.getAssertionAccess(); 36 var access = grammarAccess.getAssertionAccess();
37 feeder.accept(access.getValueShortLogicAssertionValueParserRuleCall_1_1_0_0(), logicAssertionValue); 37 feeder.accept(access.getValueShortLogicConstantParserRuleCall_1_1_0_0(), logicConstant);
38 feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation()); 38 feeder.accept(access.getRelationRelationQualifiedNameParserRuleCall_1_1_1_0_1(), semanticObject.getRelation());
39 var iterator = semanticObject.getArguments().iterator(); 39 var iterator = semanticObject.getArguments().iterator();
40 if (iterator.hasNext()) { 40 if (iterator.hasNext()) {
diff --git a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
index 5412f620..65167ed6 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/utils/SymbolCollector.java
@@ -242,7 +242,7 @@ class SymbolCollector {
242 } 242 }
243 assertion.getArguments().add(argument); 243 assertion.getArguments().add(argument);
244 } 244 }
245 var value = ProblemFactory.eINSTANCE.createLogicAssertionValue(); 245 var value = ProblemFactory.eINSTANCE.createLogicConstant();
246 value.setLogicValue(logicValue); 246 value.setLogicValue(logicValue);
247 assertion.setValue(value); 247 assertion.setValue(value);
248 collectAssertion(assertion); 248 collectAssertion(assertion);
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
index e0dee496..58daa365 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/ProblemParsingTest.java
@@ -24,30 +24,30 @@ class ProblemParsingTest {
24 } 24 }
25 25
26 class Person { 26 class Person {
27 refers Person[0..*] children opposite parent 27 Person[0..*] children opposite parent
28 refers Person[0..1] parent opposite children 28 Person[0..1] parent opposite children
29 int age 29 int age
30 refers TaxStatus taxStatus 30 TaxStatus taxStatus
31 } 31 }
32 32
33 enum TaxStatus { 33 enum TaxStatus {
34 child, student, adult, retired 34 CHILD, STUDENT, ADULT, RETIRED
35 } 35 }
36 36
37 % A child cannot have any dependents. 37 % A child cannot have any dependents.
38 error invalidTaxStatus(Person p) <-> 38 error invalidTaxStatus(Person p) <->
39 taxStatus(p, child), children(p, _q). 39 taxStatus(p, CHILD), children(p, _q).
40 40
41 individual family. 41 indiv family.
42 Family(family). 42 Family(family).
43 members(family, anne): true. 43 members(family, anne): true.
44 members(family, bob). 44 members(family, bob).
45 members(family, ciri). 45 members(family, ciri).
46 children(anne, ciri). 46 children(anne, ciri).
47 ?children(bob, ciri). 47 ?children(bob, ciri).
48 taxStatus(anne, adult). 48 taxStatus(anne, ADULT).
49 age(bob) in 21..35. 49 age(bob): 21..35.
50 age(ciri) = 10. 50 age(ciri): 10.
51 """); 51 """);
52 assertThat(problem.errors(), empty()); 52 assertThat(problem.errors(), empty());
53 } 53 }
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
index a6e38130..6e0802ca 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/formatting2/ProblemFormatterTest.java
@@ -179,7 +179,7 @@ class ProblemFormatterTest {
179 179
180 @Test 180 @Test
181 void individualDeclarationTest() { 181 void individualDeclarationTest() {
182 testFormatter(" individual a , b . ", "individual a, b.\n"); 182 testFormatter(" indiv a , b . ", "indiv a, b.\n");
183 } 183 }
184 184
185 @Test 185 @Test
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java
index 6e702720..65ceb45f 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/parser/antlr/TransitiveClosureParserTest.java
@@ -24,8 +24,8 @@ class TransitiveClosureParserTest {
24 @Test 24 @Test
25 void binaryAddOperatorTest() { 25 void binaryAddOperatorTest() {
26 var problem = parseHelper.parse(""" 26 var problem = parseHelper.parse("""
27 int a(). 27 fn int a().
28 int b(). 28 fn int b().
29 pred foo() <-> a() + (b()) > 10. 29 pred foo() <-> a() + (b()) > 10.
30 """); 30 """);
31 assertThat(problem.errors(), empty()); 31 assertThat(problem.errors(), empty());
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
index 2fd647e5..fa462691 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/scoping/NodeScopingTest.java
@@ -67,7 +67,7 @@ class NodeScopingTest {
67 @MethodSource("individualNodeReferenceSource") 67 @MethodSource("individualNodeReferenceSource")
68 void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) { 68 void individualNodeInAssertionTest(String qualifiedNamePrefix, boolean namedProblem) {
69 var problem = parse(""" 69 var problem = parse("""
70 individual a, b. 70 indiv a, b.
71 pred predicate(node x, node y) <-> node(x). 71 pred predicate(node x, node y) <-> node(x).
72 predicate({PARAM}a, {PARAM}a). 72 predicate({PARAM}a, {PARAM}a).
73 ?predicate({PARAM}a, {PARAM}b). 73 ?predicate({PARAM}a, {PARAM}b).
@@ -84,7 +84,7 @@ class NodeScopingTest {
84 @MethodSource("individualNodeReferenceSource") 84 @MethodSource("individualNodeReferenceSource")
85 void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) { 85 void individualNodeInPredicateTest(String qualifiedNamePrefix, boolean namedProblem) {
86 var problem = parse(""" 86 var problem = parse("""
87 individual b. 87 indiv b.
88 pred predicate(node a) <-> node({PARAM}b). 88 pred predicate(node a) <-> node({PARAM}b).
89 """); 89 """);
90 assertThat(problem.errors(), empty()); 90 assertThat(problem.errors(), empty());
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
index 5024fb45..4a18704a 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/serializer/ProblemSerializerTest.java
@@ -59,7 +59,7 @@ class ProblemSerializerTest {
59 assertSerializedResult(""" 59 assertSerializedResult("""
60 pred foo(node p). 60 pred foo(node p).
61 61
62 individual a. 62 indiv a.
63 """ + serializedAssertion + "\n"); 63 """ + serializedAssertion + "\n");
64 } 64 }
65 65
@@ -82,7 +82,7 @@ class ProblemSerializerTest {
82 assertSerializedResult(""" 82 assertSerializedResult("""
83 pred foo(node p). 83 pred foo(node p).
84 84
85 individual a. 85 indiv a.
86 default foo(a):\040""" + valueAsString + ".\n"); 86 default foo(a):\040""" + valueAsString + ".\n");
87 } 87 }
88 88
@@ -149,7 +149,7 @@ class ProblemSerializerTest {
149 var argument = ProblemFactory.eINSTANCE.createNodeAssertionArgument(); 149 var argument = ProblemFactory.eINSTANCE.createNodeAssertionArgument();
150 argument.setNode(node); 150 argument.setNode(node);
151 assertion.getArguments().add(argument); 151 assertion.getArguments().add(argument);
152 var value = ProblemFactory.eINSTANCE.createLogicAssertionValue(); 152 var value = ProblemFactory.eINSTANCE.createLogicConstant();
153 value.setLogicValue(logicValue); 153 value.setLogicValue(logicValue);
154 assertion.setValue(value); 154 assertion.setValue(value);
155 assertion.setDefault(isDefault); 155 assertion.setDefault(isDefault);
diff --git a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
index 66b7f1ab..af6de37f 100644
--- a/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
+++ b/subprojects/language/src/test/java/tools/refinery/language/tests/utils/SymbolCollectorTest.java
@@ -45,7 +45,7 @@ class SymbolCollectorTest {
45 @Test 45 @Test
46 void individualNodeTest() { 46 void individualNodeTest() {
47 var problem = parseHelper.parse(""" 47 var problem = parseHelper.parse("""
48 individual a. 48 indiv a.
49 """); 49 """);
50 var collectedSymbols = desugarer.collectSymbols(problem.get()); 50 var collectedSymbols = desugarer.collectSymbols(problem.get());
51 var node = problem.individualNode("a"); 51 var node = problem.individualNode("a");