aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2022-09-13 20:39:27 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2022-09-14 12:10:43 +0200
commit748bf89911359bffbfafe354e522f7d656488146 (patch)
tree555fe86e0a068eda1f84538faaca8d6e76fd3bd8 /subprojects
parentchore(deps): bump dependencies (diff)
downloadrefinery-748bf89911359bffbfafe354e522f7d656488146.tar.gz
refinery-748bf89911359bffbfafe354e522f7d656488146.tar.zst
refinery-748bf89911359bffbfafe354e522f7d656488146.zip
refactor(language): clarify containment hierarchy
Diffstat (limited to 'subprojects')
-rw-r--r--subprojects/frontend/package.json16
-rw-r--r--subprojects/frontend/src/language/problem.grammar21
-rw-r--r--subprojects/frontend/src/language/problemLanguageSupport.ts3
-rw-r--r--subprojects/frontend/src/theme/ThemeProvider.tsx10
-rw-r--r--subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java7
-rw-r--r--subprojects/language-model/problem.aird240
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.ecore18
-rw-r--r--subprojects/language-model/src/main/resources/model/problem.genmodel16
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/Problem.xtext27
-rw-r--r--subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java37
-rw-r--r--subprojects/language/src/main/resources/tools/refinery/language/builtin.problem19
11 files changed, 326 insertions, 88 deletions
diff --git a/subprojects/frontend/package.json b/subprojects/frontend/package.json
index 4ecf2efb..02c6e026 100644
--- a/subprojects/frontend/package.json
+++ b/subprojects/frontend/package.json
@@ -23,7 +23,7 @@
23 }, 23 },
24 "homepage": "https://refinery.tools", 24 "homepage": "https://refinery.tools",
25 "dependencies": { 25 "dependencies": {
26 "@codemirror/autocomplete": "^6.1.1", 26 "@codemirror/autocomplete": "^6.2.0",
27 "@codemirror/commands": "^6.1.0", 27 "@codemirror/commands": "^6.1.0",
28 "@codemirror/language": "^6.2.1", 28 "@codemirror/language": "^6.2.1",
29 "@codemirror/lint": "^6.0.0", 29 "@codemirror/lint": "^6.0.0",
@@ -39,7 +39,7 @@
39 "@lezer/lr": "^1.2.3", 39 "@lezer/lr": "^1.2.3",
40 "@material-icons/svg": "^1.0.33", 40 "@material-icons/svg": "^1.0.33",
41 "@mui/icons-material": "5.10.3", 41 "@mui/icons-material": "5.10.3",
42 "@mui/material": "5.10.4", 42 "@mui/material": "5.10.5",
43 "ansi-styles": "^6.1.1", 43 "ansi-styles": "^6.1.1",
44 "escape-string-regexp": "^5.0.0", 44 "escape-string-regexp": "^5.0.0",
45 "lodash-es": "^4.17.21", 45 "lodash-es": "^4.17.21",
@@ -53,7 +53,7 @@
53 "react": "^18.2.0", 53 "react": "^18.2.0",
54 "react-dom": "^18.2.0", 54 "react-dom": "^18.2.0",
55 "xstate": "^4.33.6", 55 "xstate": "^4.33.6",
56 "zod": "^3.19.0" 56 "zod": "^3.19.1"
57 }, 57 },
58 "devDependencies": { 58 "devDependencies": {
59 "@lezer/generator": "^1.1.1", 59 "@lezer/generator": "^1.1.1",
@@ -61,16 +61,16 @@
61 "@types/html-minifier-terser": "^7.0.0", 61 "@types/html-minifier-terser": "^7.0.0",
62 "@types/lodash-es": "^4.17.6", 62 "@types/lodash-es": "^4.17.6",
63 "@types/ms": "^0.7.31", 63 "@types/ms": "^0.7.31",
64 "@types/node": "^18.7.16", 64 "@types/node": "^18.7.18",
65 "@types/prettier": "^2.7.0", 65 "@types/prettier": "^2.7.0",
66 "@types/react": "^18.0.19", 66 "@types/react": "^18.0.20",
67 "@types/react-dom": "^18.0.6", 67 "@types/react-dom": "^18.0.6",
68 "@typescript-eslint/eslint-plugin": "^5.36.2", 68 "@typescript-eslint/eslint-plugin": "^5.37.0",
69 "@typescript-eslint/parser": "^5.36.2", 69 "@typescript-eslint/parser": "^5.37.0",
70 "@vitejs/plugin-react": "^2.1.0", 70 "@vitejs/plugin-react": "^2.1.0",
71 "@xstate/cli": "^0.3.3", 71 "@xstate/cli": "^0.3.3",
72 "cross-env": "^7.0.3", 72 "cross-env": "^7.0.3",
73 "eslint": "^8.23.0", 73 "eslint": "^8.23.1",
74 "eslint-config-airbnb": "^19.0.4", 74 "eslint-config-airbnb": "^19.0.4",
75 "eslint-config-airbnb-typescript": "^17.0.0", 75 "eslint-config-airbnb-typescript": "^17.0.0",
76 "eslint-config-prettier": "^8.5.0", 76 "eslint-config-prettier": "^8.5.0",
diff --git a/subprojects/frontend/src/language/problem.grammar b/subprojects/frontend/src/language/problem.grammar
index 95861110..7feb6bfe 100644
--- a/subprojects/frontend/src/language/problem.grammar
+++ b/subprojects/frontend/src/language/problem.grammar
@@ -18,7 +18,10 @@ statement {
18 (EnumBody { "{" sep<",", IndividualNodeName> "}" } | ".") 18 (EnumBody { "{" sep<",", IndividualNodeName> "}" } | ".")
19 } | 19 } |
20 PredicateDefinition { 20 PredicateDefinition {
21 (ckw<"error"> ckw<"pred">? | ckw<"pred">) 21 (
22 (ckw<"error"> | ckw<"contained"> | ckw<"containment">) ckw<"pred">? |
23 ckw<"pred">
24 )
22 RelationName ParameterList<Parameter>? 25 RelationName ParameterList<Parameter>?
23 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." } 26 PredicateBody { ("<->" sep<OrOp, Conjunction>)? "." }
24 } | 27 } |
@@ -28,23 +31,29 @@ statement {
28 RuleBody { ":" sep<OrOp, Conjunction> "==>" sep<OrOp, Consequent> "." } 31 RuleBody { ":" sep<OrOp, Conjunction> "==>" sep<OrOp, Consequent> "." }
29 } | 32 } |
30 Assertion { 33 Assertion {
31 kw<"default">? (NotOp | UnknownOp)? RelationName 34 ckw<"default">? (NotOp | UnknownOp)? RelationName
32 ParameterList<AssertionArgument> (":" LogicValue)? "." 35 ParameterList<AssertionArgument> (":" LogicValue)? "."
33 } | 36 } |
34 NodeValueAssertion { 37 NodeValueAssertion {
35 IndividualNodeName ":" Constant "." 38 QualifiedName ":" Constant "."
36 } | 39 } |
37 IndividualDeclaration { 40 IndividualDeclaration {
38 ckw<"indiv"> sep<",", IndividualNodeName> "." 41 ckw<"indiv"> sep<",", IndividualNodeName> "."
39 } | 42 } |
40 ScopeDeclaration { 43 ScopeDeclaration {
41 kw<"scope"> sep<",", ScopeElement> "." 44 ckw<"scope"> sep<",", ScopeElement> "."
42 } 45 }
43} 46}
44 47
45ReferenceDeclaration { 48ReferenceDeclaration {
46 (kw<"refers"> | kw<"contains">)? 49 (
47 RelationName 50 ExplicitContainmentReference[@dynamicPrecedence=1] {
51 (ckw<"refers"> | ckw<"contains"> | ckw<"container">) RelationName ~containment
52 } |
53 ImplicitContainmentReference {
54 RelationName ~containment
55 }
56 )
48 ("[" Multiplicity? "]")? 57 ("[" Multiplicity? "]")?
49 RelationName 58 RelationName
50 (kw<"opposite"> RelationName)? 59 (kw<"opposite"> RelationName)?
diff --git a/subprojects/frontend/src/language/problemLanguageSupport.ts b/subprojects/frontend/src/language/problemLanguageSupport.ts
index 07a884e7..03a7c4cc 100644
--- a/subprojects/frontend/src/language/problemLanguageSupport.ts
+++ b/subprojects/frontend/src/language/problemLanguageSupport.ts
@@ -27,7 +27,8 @@ const parserWithMetadata = parser.configure({
27 LineComment: t.lineComment, 27 LineComment: t.lineComment,
28 BlockComment: t.blockComment, 28 BlockComment: t.blockComment,
29 'problem class enum pred rule indiv scope': t.definitionKeyword, 29 'problem class enum pred rule indiv scope': t.definitionKeyword,
30 'abstract extends refers contains opposite error default': t.modifier, 30 'abstract extends refers contains container opposite': t.modifier,
31 'default error contained containment': t.modifier,
31 'true false unknown error': t.operatorKeyword, 32 'true false unknown error': t.operatorKeyword,
32 'may must current count': t.operatorKeyword, 33 'may must current count': t.operatorKeyword,
33 'new delete': t.keyword, 34 'new delete': t.keyword,
diff --git a/subprojects/frontend/src/theme/ThemeProvider.tsx b/subprojects/frontend/src/theme/ThemeProvider.tsx
index ffb18a06..550b3b30 100644
--- a/subprojects/frontend/src/theme/ThemeProvider.tsx
+++ b/subprojects/frontend/src/theme/ThemeProvider.tsx
@@ -70,8 +70,8 @@ const typography: TypographyVariantsOptions = {
70 fontFamily: 70 fontFamily:
71 '"InterVariable", "Inter", "Roboto", "Helvetica", "Arial", sans-serif', 71 '"InterVariable", "Inter", "Roboto", "Helvetica", "Arial", sans-serif',
72 fontWeightMedium: 600, 72 fontWeightMedium: 600,
73 fontWeightEditorNormal: 450, 73 fontWeightEditorNormal: 400,
74 fontWeightEditorBold: 650, 74 fontWeightEditorBold: 700,
75 editor: { 75 editor: {
76 fontFamily: 76 fontFamily:
77 '"JetBrains MonoVariable", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace', 77 '"JetBrains MonoVariable", "JetBrains Mono", "Cascadia Code", "Fira Code", monospace',
@@ -173,7 +173,7 @@ const lightTheme = createResponsiveTheme({
173 divider: alpha('#19202b', 0.16), 173 divider: alpha('#19202b', 0.16),
174 outer: { 174 outer: {
175 background: '#f5f5f5', 175 background: '#f5f5f5',
176 border: '#d6d7d9', 176 border: '#c8c8c8',
177 }, 177 },
178 highlight: { 178 highlight: {
179 number: '#0084bc', 179 number: '#0084bc',
@@ -200,8 +200,8 @@ const lightTheme = createResponsiveTheme({
200const darkTheme = createResponsiveTheme({ 200const darkTheme = createResponsiveTheme({
201 typography: { 201 typography: {
202 ...typography, 202 ...typography,
203 fontWeightEditorNormal: 400, 203 fontWeightEditorNormal: 350,
204 fontWeightEditorBold: 600, 204 fontWeightEditorBold: 650,
205 }, 205 },
206 components: { 206 components: {
207 ...components, 207 ...components,
diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
index 9c061c8f..477940aa 100644
--- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
+++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/syntaxcoloring/ProblemSemanticHighlightingCalculator.java
@@ -20,6 +20,7 @@ import tools.refinery.language.model.problem.ClassDeclaration;
20import tools.refinery.language.model.problem.NamedElement; 20import tools.refinery.language.model.problem.NamedElement;
21import tools.refinery.language.model.problem.Node; 21import tools.refinery.language.model.problem.Node;
22import tools.refinery.language.model.problem.PredicateDefinition; 22import tools.refinery.language.model.problem.PredicateDefinition;
23import tools.refinery.language.model.problem.PredicateKind;
23import tools.refinery.language.model.problem.ProblemPackage; 24import tools.refinery.language.model.problem.ProblemPackage;
24import tools.refinery.language.model.problem.ReferenceDeclaration; 25import tools.refinery.language.model.problem.ReferenceDeclaration;
25 26
@@ -99,10 +100,12 @@ public class ProblemSemanticHighlightingCalculator extends DefaultSemanticHighli
99 if (eObject instanceof ClassDeclaration classDeclaration && classDeclaration.isAbstract()) { 100 if (eObject instanceof ClassDeclaration classDeclaration && classDeclaration.isAbstract()) {
100 classesBuilder.add(ABSTRACT_CLASS); 101 classesBuilder.add(ABSTRACT_CLASS);
101 } 102 }
102 if (eObject instanceof ReferenceDeclaration referenceDeclaration && referenceDeclaration.isContainment()) { 103 if (eObject instanceof ReferenceDeclaration referenceDeclaration
104 && ProblemUtil.isContainmentReference(referenceDeclaration)) {
103 classesBuilder.add(CONTAINMENT_CLASS); 105 classesBuilder.add(CONTAINMENT_CLASS);
104 } 106 }
105 if (eObject instanceof PredicateDefinition predicateDefinition && predicateDefinition.isError()) { 107 if (eObject instanceof PredicateDefinition predicateDefinition
108 && predicateDefinition.getKind() == PredicateKind.ERROR) {
106 classesBuilder.add(ERROR_CLASS); 109 classesBuilder.add(ERROR_CLASS);
107 } 110 }
108 if (eObject instanceof Node node) { 111 if (eObject instanceof Node node) {
diff --git a/subprojects/language-model/problem.aird b/subprojects/language-model/problem.aird
index 9bd76766..60d52cc4 100644
--- a/subprojects/language-model/problem.aird
+++ b/subprojects/language-model/problem.aird
@@ -7,7 +7,7 @@
7 <semanticResources>build/resources/main/model/problem.genmodel</semanticResources> 7 <semanticResources>build/resources/main/model/problem.genmodel</semanticResources>
8 <ownedViews xmi:type="viewpoint:DView" uid="_CsAAYKA4EeuqkpDnuik1sg"> 8 <ownedViews xmi:type="viewpoint:DView" uid="_CsAAYKA4EeuqkpDnuik1sg">
9 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/> 9 <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
10 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_CsYa4KA4EeuqkpDnuik1sg" name="problem" repPath="#_CsUwgKA4EeuqkpDnuik1sg" changeId="e743d94a-193b-4553-83d6-610f55227616"> 10 <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_CsYa4KA4EeuqkpDnuik1sg" name="problem" repPath="#_CsUwgKA4EeuqkpDnuik1sg" changeId="dcbd311b-404e-4566-9e24-dcd52dba4c23">
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>
@@ -50,9 +50,9 @@
50 <children xmi:type="notation:Node" xmi:id="_c-HCQKA4EeuqkpDnuik1sg" type="2003" element="_c-A7oKA4EeuqkpDnuik1sg"> 50 <children xmi:type="notation:Node" xmi:id="_c-HCQKA4EeuqkpDnuik1sg" type="2003" element="_c-A7oKA4EeuqkpDnuik1sg">
51 <children xmi:type="notation:Node" xmi:id="_c-HCQ6A4EeuqkpDnuik1sg" type="5007"/> 51 <children xmi:type="notation:Node" xmi:id="_c-HCQ6A4EeuqkpDnuik1sg" type="5007"/>
52 <children xmi:type="notation:Node" xmi:id="_c-HCRKA4EeuqkpDnuik1sg" type="7004"> 52 <children xmi:type="notation:Node" xmi:id="_c-HCRKA4EeuqkpDnuik1sg" type="7004">
53 <children xmi:type="notation:Node" xmi:id="_HjIR8KA5EeuqkpDnuik1sg" type="3010" element="_HjDZcKA5EeuqkpDnuik1sg"> 53 <children xmi:type="notation:Node" xmi:id="_91XrMDNlEe2fD4dIhR_vzA" type="3010" element="_902GwDNlEe2fD4dIhR_vzA">
54 <styles xmi:type="notation:FontStyle" xmi:id="_HjIR8aA5EeuqkpDnuik1sg" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/> 54 <styles xmi:type="notation:FontStyle" xmi:id="_91XrMTNlEe2fD4dIhR_vzA" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
55 <layoutConstraint xmi:type="notation:Location" xmi:id="_HjIR8qA5EeuqkpDnuik1sg"/> 55 <layoutConstraint xmi:type="notation:Location" xmi:id="_91XrMjNlEe2fD4dIhR_vzA"/>
56 </children> 56 </children>
57 <styles xmi:type="notation:SortingStyle" xmi:id="_c-HCRaA4EeuqkpDnuik1sg"/> 57 <styles xmi:type="notation:SortingStyle" xmi:id="_c-HCRaA4EeuqkpDnuik1sg"/>
58 <styles xmi:type="notation:FilteringStyle" xmi:id="_c-HCRqA4EeuqkpDnuik1sg"/> 58 <styles xmi:type="notation:FilteringStyle" xmi:id="_c-HCRqA4EeuqkpDnuik1sg"/>
@@ -76,9 +76,9 @@
76 <children xmi:type="notation:Node" xmi:id="_fit3kKA5EeuqkpDnuik1sg" type="2003" element="_fihqUKA5EeuqkpDnuik1sg"> 76 <children xmi:type="notation:Node" xmi:id="_fit3kKA5EeuqkpDnuik1sg" type="2003" element="_fihqUKA5EeuqkpDnuik1sg">
77 <children xmi:type="notation:Node" xmi:id="_fit3k6A5EeuqkpDnuik1sg" type="5007"/> 77 <children xmi:type="notation:Node" xmi:id="_fit3k6A5EeuqkpDnuik1sg" type="5007"/>
78 <children xmi:type="notation:Node" xmi:id="_fit3lKA5EeuqkpDnuik1sg" type="7004"> 78 <children xmi:type="notation:Node" xmi:id="_fit3lKA5EeuqkpDnuik1sg" type="7004">
79 <children xmi:type="notation:Node" xmi:id="_sv1ZIKA5EeuqkpDnuik1sg" type="3010" element="_svs2QKA5EeuqkpDnuik1sg"> 79 <children xmi:type="notation:Node" xmi:id="_id6DcDNoEe2fD4dIhR_vzA" type="3010" element="_ida7QDNoEe2fD4dIhR_vzA">
80 <styles xmi:type="notation:FontStyle" xmi:id="_sv1ZIaA5EeuqkpDnuik1sg" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/> 80 <styles xmi:type="notation:FontStyle" xmi:id="_id6DcTNoEe2fD4dIhR_vzA" fontColor="2697711" fontName="Noto Sans" fontHeight="8"/>
81 <layoutConstraint xmi:type="notation:Location" xmi:id="_sv1ZIqA5EeuqkpDnuik1sg"/> 81 <layoutConstraint xmi:type="notation:Location" xmi:id="_id6DcjNoEe2fD4dIhR_vzA"/>
82 </children> 82 </children>
83 <styles xmi:type="notation:SortingStyle" xmi:id="_fit3laA5EeuqkpDnuik1sg"/> 83 <styles xmi:type="notation:SortingStyle" xmi:id="_fit3laA5EeuqkpDnuik1sg"/>
84 <styles xmi:type="notation:FilteringStyle" xmi:id="_fit3lqA5EeuqkpDnuik1sg"/> 84 <styles xmi:type="notation:FilteringStyle" xmi:id="_fit3lqA5EeuqkpDnuik1sg"/>
@@ -219,7 +219,7 @@
219 <styles xmi:type="notation:FilteringStyle" xmi:id="_BMfjNqA9EeuqkpDnuik1sg"/> 219 <styles xmi:type="notation:FilteringStyle" xmi:id="_BMfjNqA9EeuqkpDnuik1sg"/>
220 </children> 220 </children>
221 <styles xmi:type="notation:ShapeStyle" xmi:id="_BMfjMaA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/> 221 <styles xmi:type="notation:ShapeStyle" xmi:id="_BMfjMaA9EeuqkpDnuik1sg" fontName="Noto Sans" fontHeight="8"/>
222 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BMfjMqA9EeuqkpDnuik1sg" x="1917" y="180" width="120" height="100"/> 222 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BMfjMqA9EeuqkpDnuik1sg" x="1921" y="60" width="120" height="100"/>
223 </children> 223 </children>
224 <children xmi:type="notation:Node" xmi:id="_QUDYMKA9EeuqkpDnuik1sg" type="2003" element="_QTzgkKA9EeuqkpDnuik1sg"> 224 <children xmi:type="notation:Node" xmi:id="_QUDYMKA9EeuqkpDnuik1sg" type="2003" element="_QTzgkKA9EeuqkpDnuik1sg">
225 <children xmi:type="notation:Node" xmi:id="_QUDYM6A9EeuqkpDnuik1sg" type="5007"/> 225 <children xmi:type="notation:Node" xmi:id="_QUDYM6A9EeuqkpDnuik1sg" type="5007"/>
@@ -550,7 +550,7 @@
550 <styles xmi:type="notation:FilteringStyle" xmi:id="_eKwNAxEKEe2AArBmfNpEZA"/> 550 <styles xmi:type="notation:FilteringStyle" xmi:id="_eKwNAxEKEe2AArBmfNpEZA"/>
551 </children> 551 </children>
552 <styles xmi:type="notation:ShapeStyle" xmi:id="_eKvl8REKEe2AArBmfNpEZA" fontName="Noto Sans" fontHeight="8"/> 552 <styles xmi:type="notation:ShapeStyle" xmi:id="_eKvl8REKEe2AArBmfNpEZA" fontName="Noto Sans" fontHeight="8"/>
553 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKvl8hEKEe2AArBmfNpEZA" x="2072" y="180" width="120" height="100"/> 553 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_eKvl8hEKEe2AArBmfNpEZA" x="2076" y="60" width="120" height="100"/>
554 </children> 554 </children>
555 <children xmi:type="notation:Node" xmi:id="_BnoHYBg0Ee2_erjsEmF9GQ" type="2003" element="_BmVG4Bg0Ee2_erjsEmF9GQ"> 555 <children xmi:type="notation:Node" xmi:id="_BnoHYBg0Ee2_erjsEmF9GQ" type="2003" element="_BmVG4Bg0Ee2_erjsEmF9GQ">
556 <children xmi:type="notation:Node" xmi:id="_BnrxwBg0Ee2_erjsEmF9GQ" type="5007"/> 556 <children xmi:type="notation:Node" xmi:id="_BnrxwBg0Ee2_erjsEmF9GQ" type="5007"/>
@@ -605,7 +605,57 @@
605 <styles xmi:type="notation:FilteringStyle" xmi:id="_LinJ1hg0Ee2_erjsEmF9GQ"/> 605 <styles xmi:type="notation:FilteringStyle" xmi:id="_LinJ1hg0Ee2_erjsEmF9GQ"/>
606 </children> 606 </children>
607 <styles xmi:type="notation:ShapeStyle" xmi:id="_LinJ0Rg0Ee2_erjsEmF9GQ" fontName="Noto Sans" fontHeight="8"/> 607 <styles xmi:type="notation:ShapeStyle" xmi:id="_LinJ0Rg0Ee2_erjsEmF9GQ" fontName="Noto Sans" fontHeight="8"/>
608 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LinJ0hg0Ee2_erjsEmF9GQ" x="2223" y="180" width="120" height="111"/> 608 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LinJ0hg0Ee2_erjsEmF9GQ" x="2232" y="60" width="120" height="111"/>
609 </children>
610 <children xmi:type="notation:Node" xmi:id="_xp1icDNlEe2fD4dIhR_vzA" type="2003" element="_xpDfUDNlEe2fD4dIhR_vzA">
611 <children xmi:type="notation:Node" xmi:id="_xp2JgDNlEe2fD4dIhR_vzA" type="5007"/>
612 <children xmi:type="notation:Node" xmi:id="_xp2JgTNlEe2fD4dIhR_vzA" type="7004">
613 <children xmi:type="notation:Node" xmi:id="_2OW2gDNlEe2fD4dIhR_vzA" type="3010" element="_2N3HQDNlEe2fD4dIhR_vzA">
614 <styles xmi:type="notation:FontStyle" xmi:id="_2OW2gTNlEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
615 <layoutConstraint xmi:type="notation:Location" xmi:id="_2OW2gjNlEe2fD4dIhR_vzA"/>
616 </children>
617 <children xmi:type="notation:Node" xmi:id="_20SOEDNlEe2fD4dIhR_vzA" type="3010" element="_2zSIgDNlEe2fD4dIhR_vzA">
618 <styles xmi:type="notation:FontStyle" xmi:id="_20SOETNlEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
619 <layoutConstraint xmi:type="notation:Location" xmi:id="_20SOEjNlEe2fD4dIhR_vzA"/>
620 </children>
621 <children xmi:type="notation:Node" xmi:id="_4LeqgDNlEe2fD4dIhR_vzA" type="3010" element="_4K8fADNlEe2fD4dIhR_vzA">
622 <styles xmi:type="notation:FontStyle" xmi:id="_4LeqgTNlEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
623 <layoutConstraint xmi:type="notation:Location" xmi:id="_4LeqgjNlEe2fD4dIhR_vzA"/>
624 </children>
625 <children xmi:type="notation:Node" xmi:id="_5M7gcDNlEe2fD4dIhR_vzA" type="3010" element="_5MhQwDNlEe2fD4dIhR_vzA">
626 <styles xmi:type="notation:FontStyle" xmi:id="_5M7gcTNlEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
627 <layoutConstraint xmi:type="notation:Location" xmi:id="_5M7gcjNlEe2fD4dIhR_vzA"/>
628 </children>
629 <styles xmi:type="notation:SortingStyle" xmi:id="_xp2JgjNlEe2fD4dIhR_vzA"/>
630 <styles xmi:type="notation:FilteringStyle" xmi:id="_xp2JgzNlEe2fD4dIhR_vzA"/>
631 </children>
632 <styles xmi:type="notation:ShapeStyle" xmi:id="_xp1icTNlEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
633 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xp1icjNlEe2fD4dIhR_vzA" x="2076" y="204" width="120" height="100"/>
634 </children>
635 <children xmi:type="notation:Node" xmi:id="_DFHboDNoEe2fD4dIhR_vzA" type="2003" element="_DD1pQDNoEe2fD4dIhR_vzA">
636 <children xmi:type="notation:Node" xmi:id="_DFICsDNoEe2fD4dIhR_vzA" type="5007"/>
637 <children xmi:type="notation:Node" xmi:id="_DFICsTNoEe2fD4dIhR_vzA" type="7004">
638 <children xmi:type="notation:Node" xmi:id="_FDz88DNoEe2fD4dIhR_vzA" type="3010" element="_FDOuIDNoEe2fD4dIhR_vzA">
639 <styles xmi:type="notation:FontStyle" xmi:id="_FDz88TNoEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
640 <layoutConstraint xmi:type="notation:Location" xmi:id="_FDz88jNoEe2fD4dIhR_vzA"/>
641 </children>
642 <children xmi:type="notation:Node" xmi:id="_F3CwsDNoEe2fD4dIhR_vzA" type="3010" element="_F2glMDNoEe2fD4dIhR_vzA">
643 <styles xmi:type="notation:FontStyle" xmi:id="_F3CwsTNoEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
644 <layoutConstraint xmi:type="notation:Location" xmi:id="_F3CwsjNoEe2fD4dIhR_vzA"/>
645 </children>
646 <children xmi:type="notation:Node" xmi:id="_GTcY0DNoEe2fD4dIhR_vzA" type="3010" element="_GS7bcDNoEe2fD4dIhR_vzA">
647 <styles xmi:type="notation:FontStyle" xmi:id="_GTcY0TNoEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
648 <layoutConstraint xmi:type="notation:Location" xmi:id="_GTcY0jNoEe2fD4dIhR_vzA"/>
649 </children>
650 <children xmi:type="notation:Node" xmi:id="_GyKVIDNoEe2fD4dIhR_vzA" type="3010" element="_Gx7EkDNoEe2fD4dIhR_vzA">
651 <styles xmi:type="notation:FontStyle" xmi:id="_GyKVITNoEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
652 <layoutConstraint xmi:type="notation:Location" xmi:id="_GyKVIjNoEe2fD4dIhR_vzA"/>
653 </children>
654 <styles xmi:type="notation:SortingStyle" xmi:id="_DFICsjNoEe2fD4dIhR_vzA"/>
655 <styles xmi:type="notation:FilteringStyle" xmi:id="_DFICszNoEe2fD4dIhR_vzA"/>
656 </children>
657 <styles xmi:type="notation:ShapeStyle" xmi:id="_DFHboTNoEe2fD4dIhR_vzA" fontName="Noto Sans" fontHeight="8"/>
658 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DFHbojNoEe2fD4dIhR_vzA" x="1921" y="204" width="120" height="100"/>
609 </children> 659 </children>
610 <styles xmi:type="notation:DiagramStyle" xmi:id="_CsZB8qA4EeuqkpDnuik1sg"/> 660 <styles xmi:type="notation:DiagramStyle" xmi:id="_CsZB8qA4EeuqkpDnuik1sg"/>
611 <edges xmi:type="notation:Edge" xmi:id="_4eaYwKA8EeuqkpDnuik1sg" type="4001" element="_4eU5TqA8EeuqkpDnuik1sg" source="_D1D6MKA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg"> 661 <edges xmi:type="notation:Edge" xmi:id="_4eaYwKA8EeuqkpDnuik1sg" type="4001" element="_4eU5TqA8EeuqkpDnuik1sg" source="_D1D6MKA4EeuqkpDnuik1sg" target="_xsq_MKA8EeuqkpDnuik1sg">
@@ -722,17 +772,17 @@
722 </edges> 772 </edges>
723 <edges xmi:type="notation:Edge" xmi:id="_Vj1sQKA8EeuqkpDnuik1sg" type="4001" element="_VjwMzqA8EeuqkpDnuik1sg" source="_6KEUMKA6EeuqkpDnuik1sg" target="_EfWNUKA4EeuqkpDnuik1sg"> 773 <edges xmi:type="notation:Edge" xmi:id="_Vj1sQKA8EeuqkpDnuik1sg" type="4001" element="_VjwMzqA8EeuqkpDnuik1sg" source="_6KEUMKA6EeuqkpDnuik1sg" target="_EfWNUKA4EeuqkpDnuik1sg">
724 <children xmi:type="notation:Node" xmi:id="_Vj1sRKA8EeuqkpDnuik1sg" type="6001"> 774 <children xmi:type="notation:Node" xmi:id="_Vj1sRKA8EeuqkpDnuik1sg" type="6001">
725 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sRaA8EeuqkpDnuik1sg" x="-42" y="526"/> 775 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sRaA8EeuqkpDnuik1sg" x="-37" y="526"/>
726 </children> 776 </children>
727 <children xmi:type="notation:Node" xmi:id="_Vj1sRqA8EeuqkpDnuik1sg" type="6002"> 777 <children xmi:type="notation:Node" xmi:id="_Vj1sRqA8EeuqkpDnuik1sg" type="6002">
728 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sR6A8EeuqkpDnuik1sg" x="174" y="-10"/> 778 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sR6A8EeuqkpDnuik1sg" x="176" y="-10"/>
729 </children> 779 </children>
730 <children xmi:type="notation:Node" xmi:id="_Vj1sSKA8EeuqkpDnuik1sg" type="6003"> 780 <children xmi:type="notation:Node" xmi:id="_Vj1sSKA8EeuqkpDnuik1sg" type="6003">
731 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sSaA8EeuqkpDnuik1sg" x="-51" y="10"/> 781 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vj1sSaA8EeuqkpDnuik1sg" x="-41" y="10"/>
732 </children> 782 </children>
733 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Vj1sQaA8EeuqkpDnuik1sg" routing="Rectilinear"/> 783 <styles xmi:type="notation:ConnectorStyle" xmi:id="_Vj1sQaA8EeuqkpDnuik1sg" routing="Rectilinear"/>
734 <styles xmi:type="notation:FontStyle" xmi:id="_Vj1sQqA8EeuqkpDnuik1sg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/> 784 <styles xmi:type="notation:FontStyle" xmi:id="_Vj1sQqA8EeuqkpDnuik1sg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
735 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Vj1sQ6A8EeuqkpDnuik1sg" points="[-48, 24, 553, 682]$[-720, 24, -119, 682]$[-720, -708, -119, -50]$[-660, -708, -59, -50]"/> 785 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Vj1sQ6A8EeuqkpDnuik1sg" points="[-48, 24, 553, 682]$[-720, 24, -119, 682]$[-720, -696, -119, -38]$[-660, -696, -59, -38]"/>
736 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Vj1sSqA8EeuqkpDnuik1sg" id="(0.4067796610169492,0.0)"/> 786 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Vj1sSqA8EeuqkpDnuik1sg" id="(0.4067796610169492,0.0)"/>
737 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Vj1sS6A8EeuqkpDnuik1sg" id="(0.5,1.0)"/> 787 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Vj1sS6A8EeuqkpDnuik1sg" id="(0.5,1.0)"/>
738 </edges> 788 </edges>
@@ -864,22 +914,6 @@
864 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQNawEeuymriYTNxK2g" id="(1.0,0.12244897959183673)"/> 914 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQNawEeuymriYTNxK2g" id="(1.0,0.12244897959183673)"/>
865 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQdawEeuymriYTNxK2g" id="(0.0,0.6122448979591837)"/> 915 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YCtQdawEeuymriYTNxK2g" id="(0.0,0.6122448979591837)"/>
866 </edges> 916 </edges>
867 <edges xmi:type="notation:Edge" xmi:id="_2ko-QKA9EeuqkpDnuik1sg" type="4001" element="_2kWqbKA9EeuqkpDnuik1sg" source="_zaq8oKA9EeuqkpDnuik1sg" target="_JT0o8KA4EeuqkpDnuik1sg">
868 <children xmi:type="notation:Node" xmi:id="_2ko-RKA9EeuqkpDnuik1sg" type="6001">
869 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ko-RaA9EeuqkpDnuik1sg" x="-53" y="-17"/>
870 </children>
871 <children xmi:type="notation:Node" xmi:id="_2ko-RqA9EeuqkpDnuik1sg" type="6002">
872 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ko-R6A9EeuqkpDnuik1sg" x="21" y="10"/>
873 </children>
874 <children xmi:type="notation:Node" xmi:id="_2ko-SKA9EeuqkpDnuik1sg" type="6003">
875 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ko-SaA9EeuqkpDnuik1sg" x="3" y="10"/>
876 </children>
877 <styles xmi:type="notation:ConnectorStyle" xmi:id="_2ko-QaA9EeuqkpDnuik1sg" routing="Rectilinear"/>
878 <styles xmi:type="notation:FontStyle" xmi:id="_2ko-QqA9EeuqkpDnuik1sg" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
879 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2ko-Q6A9EeuqkpDnuik1sg" points="[0, 36, -218, 36]$[218, 36, 0, 36]"/>
880 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2ko-SqA9EeuqkpDnuik1sg" id="(1.0,0.24742268041237114)"/>
881 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2ko-S6A9EeuqkpDnuik1sg" id="(0.0,0.24489795918367346)"/>
882 </edges>
883 <edges xmi:type="notation:Edge" xmi:id="_0V8EUKA4EeuqkpDnuik1sg" type="4001" element="_0V3L1qA4EeuqkpDnuik1sg" source="_c-HCQKA4EeuqkpDnuik1sg" target="_c-HCQKA4EeuqkpDnuik1sg"> 917 <edges xmi:type="notation:Edge" xmi:id="_0V8EUKA4EeuqkpDnuik1sg" type="4001" element="_0V3L1qA4EeuqkpDnuik1sg" source="_c-HCQKA4EeuqkpDnuik1sg" target="_c-HCQKA4EeuqkpDnuik1sg">
884 <children xmi:type="notation:Node" xmi:id="_0V8rYKA4EeuqkpDnuik1sg" type="6001"> 918 <children xmi:type="notation:Node" xmi:id="_0V8rYKA4EeuqkpDnuik1sg" type="6001">
885 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0V8rYaA4EeuqkpDnuik1sg" x="30" y="11"/> 919 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0V8rYaA4EeuqkpDnuik1sg" x="30" y="11"/>
@@ -1854,6 +1888,22 @@
1854 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JYvTRBg0Ee2_erjsEmF9GQ" id="(0.3813559322033898,0.0)"/> 1888 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JYvTRBg0Ee2_erjsEmF9GQ" id="(0.3813559322033898,0.0)"/>
1855 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JYvTRRg0Ee2_erjsEmF9GQ" id="(0.5,0.5)"/> 1889 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JYvTRRg0Ee2_erjsEmF9GQ" id="(0.5,0.5)"/>
1856 </edges> 1890 </edges>
1891 <edges xmi:type="notation:Edge" xmi:id="_lhC68DOBEe2fD4dIhR_vzA" type="4001" element="_2kWqbKA9EeuqkpDnuik1sg" source="_zaq8oKA9EeuqkpDnuik1sg" target="_EfWNUKA4EeuqkpDnuik1sg">
1892 <children xmi:type="notation:Node" xmi:id="_lhC69DOBEe2fD4dIhR_vzA" type="6001">
1893 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lhDiADOBEe2fD4dIhR_vzA" x="-115" y="-29"/>
1894 </children>
1895 <children xmi:type="notation:Node" xmi:id="_lhDiATOBEe2fD4dIhR_vzA" type="6002">
1896 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lhDiAjOBEe2fD4dIhR_vzA" x="-2" y="10"/>
1897 </children>
1898 <children xmi:type="notation:Node" xmi:id="_lhDiAzOBEe2fD4dIhR_vzA" type="6003">
1899 <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lhDiBDOBEe2fD4dIhR_vzA" x="2" y="10"/>
1900 </children>
1901 <styles xmi:type="notation:ConnectorStyle" xmi:id="_lhC68TOBEe2fD4dIhR_vzA" routing="Rectilinear"/>
1902 <styles xmi:type="notation:FontStyle" xmi:id="_lhC68jOBEe2fD4dIhR_vzA" fontColor="7490599" fontName="Noto Sans" fontHeight="8"/>
1903 <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lhC68zOBEe2fD4dIhR_vzA" points="[0, 24, -175, 219]$[85, 24, -90, 219]$[85, -180, -90, 15]$[170, -180, -5, 15]"/>
1904 <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lhGlUDOBEe2fD4dIhR_vzA" id="(1.0,0.24742268041237114)"/>
1905 <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lhGlUTOBEe2fD4dIhR_vzA" id="(0.0423728813559322,0.21428571428571427)"/>
1906 </edges>
1857 </data> 1907 </data>
1858 </ownedAnnotationEntries> 1908 </ownedAnnotationEntries>
1859 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Csiy8KA4EeuqkpDnuik1sg" source="DANNOTATION_CUSTOMIZATION_KEY"> 1909 <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Csiy8KA4EeuqkpDnuik1sg" source="DANNOTATION_CUSTOMIZATION_KEY">
@@ -1880,7 +1930,7 @@
1880 </ownedStyle> 1930 </ownedStyle>
1881 <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']"/> 1931 <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']"/>
1882 </ownedDiagramElements> 1932 </ownedDiagramElements>
1883 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_EfNqcKA4EeuqkpDnuik1sg" name="Relation" tooltipText="" outgoingEdges="_XWbypqA5EeuqkpDnuik1sg" incomingEdges="_ODPlcKA4EeuqkpDnuik1sg _gRoBcKA4EeuqkpDnuik1sg _rUgDkKA5EeuqkpDnuik1sg _VjwMzqA8EeuqkpDnuik1sg _w-iG36A8EeuqkpDnuik1sg _Z7FrQKA6EeuqkpDnuik1sg _ufJ3IKA4EeuqkpDnuik1sg _VtPctqA4EeuqkpDnuik1sg _UwbfHtbGEeuymriYTNxK2g" width="12" height="10"> 1933 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_EfNqcKA4EeuqkpDnuik1sg" name="Relation" tooltipText="" outgoingEdges="_XWbypqA5EeuqkpDnuik1sg" incomingEdges="_ODPlcKA4EeuqkpDnuik1sg _gRoBcKA4EeuqkpDnuik1sg _rUgDkKA5EeuqkpDnuik1sg _VjwMzqA8EeuqkpDnuik1sg _w-iG36A8EeuqkpDnuik1sg _Z7FrQKA6EeuqkpDnuik1sg _ufJ3IKA4EeuqkpDnuik1sg _VtPctqA4EeuqkpDnuik1sg _UwbfHtbGEeuymriYTNxK2g _2kWqbKA9EeuqkpDnuik1sg" width="12" height="10">
1884 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/> 1934 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/>
1885 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/> 1935 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//Relation"/>
1886 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 1936 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -1892,7 +1942,7 @@
1892 </ownedStyle> 1942 </ownedStyle>
1893 <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']"/> 1943 <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']"/>
1894 </ownedDiagramElements> 1944 </ownedDiagramElements>
1895 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_JTstIKA4EeuqkpDnuik1sg" name="ClassDeclaration" tooltipText="" outgoingEdges="_ODPlcKA4EeuqkpDnuik1sg _VtPctqA4EeuqkpDnuik1sg _jk6-PKA4EeuqkpDnuik1sg _plK3JqA9EeuqkpDnuik1sg _-XLKltawEeuymriYTNxK2g" incomingEdges="_2kWqbKA9EeuqkpDnuik1sg" width="12" height="10"> 1945 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_JTstIKA4EeuqkpDnuik1sg" name="ClassDeclaration" tooltipText="" outgoingEdges="_ODPlcKA4EeuqkpDnuik1sg _VtPctqA4EeuqkpDnuik1sg _jk6-PKA4EeuqkpDnuik1sg _plK3JqA9EeuqkpDnuik1sg _-XLKltawEeuymriYTNxK2g" width="12" height="10">
1896 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ClassDeclaration"/> 1946 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ClassDeclaration"/>
1897 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ClassDeclaration"/> 1947 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ClassDeclaration"/>
1898 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 1948 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -1943,14 +1993,14 @@
1943 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 1993 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
1944 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 1994 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
1945 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 1995 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
1946 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_IMjpcqA5EeuqkpDnuik1sg" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 1996 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="__Bk_ojNlEe2fD4dIhR_vzA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
1947 <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"/> 1997 <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"/>
1948 </ownedStyle> 1998 </ownedStyle>
1949 <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']"/> 1999 <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']"/>
1950 <ownedElements xmi:type="diagram:DNodeListElement" uid="_HjDZcKA5EeuqkpDnuik1sg" name="containment : EBoolean = false" tooltipText=""> 2000 <ownedElements xmi:type="diagram:DNodeListElement" uid="_902GwDNlEe2fD4dIhR_vzA" name="kind : ReferenceKind = DEFAULT" tooltipText="">
1951 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration/containment"/> 2001 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration/kind"/>
1952 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration/containment"/> 2002 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration/kind"/>
1953 <ownedStyle xmi:type="diagram:BundledImage" uid="_IMmswaA5EeuqkpDnuik1sg" labelAlignment="LEFT"> 2003 <ownedStyle xmi:type="diagram:BundledImage" uid="__BoC8jNlEe2fD4dIhR_vzA" labelAlignment="LEFT">
1954 <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"/> 2004 <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"/>
1955 </ownedStyle> 2005 </ownedStyle>
1956 <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']"/> 2006 <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']"/>
@@ -1959,12 +2009,12 @@
1959 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_gRoBcKA4EeuqkpDnuik1sg" sourceNode="_c-A7oKA4EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg"> 2009 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_gRoBcKA4EeuqkpDnuik1sg" sourceNode="_c-A7oKA4EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg">
1960 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration"/> 2010 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration"/>
1961 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration"/> 2011 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//ReferenceDeclaration"/>
1962 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_IMsMUKA5EeuqkpDnuik1sg" targetArrow="InputClosedArrow" routingStyle="tree"> 2012 <ownedStyle xmi:type="diagram:EdgeStyle" uid="__Bwl6DNlEe2fD4dIhR_vzA" targetArrow="InputClosedArrow" routingStyle="tree">
1963 <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"/> 2013 <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"/>
1964 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_IMsMUaA5EeuqkpDnuik1sg" showIcon="false"> 2014 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="__Bwl6TNlEe2fD4dIhR_vzA" showIcon="false">
1965 <labelFormat>italic</labelFormat> 2015 <labelFormat>italic</labelFormat>
1966 </beginLabelStyle> 2016 </beginLabelStyle>
1967 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_IMsMUqA5EeuqkpDnuik1sg" showIcon="false"/> 2017 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="__Bwl6jNlEe2fD4dIhR_vzA" showIcon="false"/>
1968 </ownedStyle> 2018 </ownedStyle>
1969 <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']"/> 2019 <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']"/>
1970 </ownedDiagramElements> 2020 </ownedDiagramElements>
@@ -2047,14 +2097,14 @@
2047 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> 2097 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
2048 <arrangeConstraints>KEEP_SIZE</arrangeConstraints> 2098 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
2049 <arrangeConstraints>KEEP_RATIO</arrangeConstraints> 2099 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
2050 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_OHh2exEJEe2AArBmfNpEZA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216"> 2100 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_jX0uAjNoEe2fD4dIhR_vzA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
2051 <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"/> 2101 <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"/>
2052 </ownedStyle> 2102 </ownedStyle>
2053 <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']"/> 2103 <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']"/>
2054 <ownedElements xmi:type="diagram:DNodeListElement" uid="_svs2QKA5EeuqkpDnuik1sg" name="error : EBoolean = false" tooltipText=""> 2104 <ownedElements xmi:type="diagram:DNodeListElement" uid="_ida7QDNoEe2fD4dIhR_vzA" name="kind : PredicateKind = DEFAULT" tooltipText="">
2055 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//PredicateDefinition/error"/> 2105 <target xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//PredicateDefinition/kind"/>
2056 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//PredicateDefinition/error"/> 2106 <semanticElements xmi:type="ecore:EAttribute" href="src/main/resources/model/problem.ecore#//PredicateDefinition/kind"/>
2057 <ownedStyle xmi:type="diagram:BundledImage" uid="_tWLAYaA5EeuqkpDnuik1sg" labelAlignment="LEFT"> 2107 <ownedStyle xmi:type="diagram:BundledImage" uid="_jX18JDNoEe2fD4dIhR_vzA" labelAlignment="LEFT">
2058 <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"/> 2108 <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"/>
2059 </ownedStyle> 2109 </ownedStyle>
2060 <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']"/> 2110 <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']"/>
@@ -2063,12 +2113,12 @@
2063 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_rUgDkKA5EeuqkpDnuik1sg" sourceNode="_fihqUKA5EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg"> 2113 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_rUgDkKA5EeuqkpDnuik1sg" sourceNode="_fihqUKA5EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg">
2064 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/> 2114 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/>
2065 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/> 2115 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/>
2066 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_OHuDzhEJEe2AArBmfNpEZA" targetArrow="InputClosedArrow" routingStyle="tree"> 2116 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jX7bzjNoEe2fD4dIhR_vzA" targetArrow="InputClosedArrow" routingStyle="tree">
2067 <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"/> 2117 <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"/>
2068 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_OHuDzxEJEe2AArBmfNpEZA" showIcon="false"> 2118 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_jX7bzzNoEe2fD4dIhR_vzA" showIcon="false">
2069 <labelFormat>italic</labelFormat> 2119 <labelFormat>italic</labelFormat>
2070 </beginLabelStyle> 2120 </beginLabelStyle>
2071 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_OHuD0BEJEe2AArBmfNpEZA" showIcon="false"/> 2121 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jX7b0DNoEe2fD4dIhR_vzA" showIcon="false"/>
2072 </ownedStyle> 2122 </ownedStyle>
2073 <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']"/> 2123 <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']"/>
2074 </ownedDiagramElements> 2124 </ownedDiagramElements>
@@ -2551,7 +2601,7 @@
2551 <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']"/> 2601 <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']"/>
2552 </ownedElements> 2602 </ownedElements>
2553 </ownedDiagramElements> 2603 </ownedDiagramElements>
2554 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2kWqbKA9EeuqkpDnuik1sg" name="[0..1] targetType" sourceNode="_zac6MKA9EeuqkpDnuik1sg" targetNode="_JTstIKA4EeuqkpDnuik1sg"> 2604 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_2kWqbKA9EeuqkpDnuik1sg" name="[0..1] targetType" sourceNode="_zac6MKA9EeuqkpDnuik1sg" targetNode="_EfNqcKA4EeuqkpDnuik1sg">
2555 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//TypeScope/targetType"/> 2605 <target xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//TypeScope/targetType"/>
2556 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//TypeScope/targetType"/> 2606 <semanticElements xmi:type="ecore:EReference" href="src/main/resources/model/problem.ecore#//TypeScope/targetType"/>
2557 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2kXRcKA9EeuqkpDnuik1sg" routingStyle="manhattan" strokeColor="0,0,0"> 2607 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_2kXRcKA9EeuqkpDnuik1sg" routingStyle="manhattan" strokeColor="0,0,0">
@@ -3288,12 +3338,12 @@
3288 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ddmjcCrZEeyyC-O0_LlY9w" sourceNode="_fihqUKA5EeuqkpDnuik1sg" targetNode="_A8hIkCrZEeyyC-O0_LlY9w"> 3338 <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ddmjcCrZEeyyC-O0_LlY9w" sourceNode="_fihqUKA5EeuqkpDnuik1sg" targetNode="_A8hIkCrZEeyyC-O0_LlY9w">
3289 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/> 3339 <target xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/>
3290 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/> 3340 <semanticElements xmi:type="ecore:EClass" href="src/main/resources/model/problem.ecore#//PredicateDefinition"/>
3291 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_OHuD1BEJEe2AArBmfNpEZA" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree"> 3341 <ownedStyle xmi:type="diagram:EdgeStyle" uid="_jX7b1DNoEe2fD4dIhR_vzA" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="tree">
3292 <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']/@conditionnalStyles.0/@style"/> 3342 <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']/@conditionnalStyles.0/@style"/>
3293 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_OHuD1REJEe2AArBmfNpEZA" showIcon="false"> 3343 <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_jX7b1TNoEe2fD4dIhR_vzA" showIcon="false">
3294 <labelFormat>italic</labelFormat> 3344 <labelFormat>italic</labelFormat>
3295 </beginLabelStyle> 3345 </beginLabelStyle>
3296 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_OHuD1hEJEe2AArBmfNpEZA" showIcon="false"/> 3346 <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_jX7b1jNoEe2fD4dIhR_vzA" showIcon="false"/>
3297 </ownedStyle> 3347 </ownedStyle>
3298 <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']"/> 3348 <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']"/>
3299 </ownedDiagramElements> 3349 </ownedDiagramElements>
@@ -3689,6 +3739,92 @@
3689 <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']"/> 3739 <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']"/>
3690 </ownedElements> 3740 </ownedElements>
3691 </ownedDiagramElements> 3741 </ownedDiagramElements>
3742 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_xpDfUDNlEe2fD4dIhR_vzA" name="ReferenceKind" tooltipText="" width="12" height="10">
3743 <target xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//ReferenceKind"/>
3744 <semanticElements xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//ReferenceKind"/>
3745 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
3746 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
3747 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
3748 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_xpDfUTNlEe2fD4dIhR_vzA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3749 <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"/>
3750 </ownedStyle>
3751 <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']"/>
3752 <ownedElements xmi:type="diagram:DNodeListElement" uid="_2N3HQDNlEe2fD4dIhR_vzA" name="DEFAULT" tooltipText="">
3753 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/DEFAULT"/>
3754 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/DEFAULT"/>
3755 <ownedStyle xmi:type="diagram:BundledImage" uid="_2N3HQTNlEe2fD4dIhR_vzA" labelAlignment="LEFT">
3756 <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"/>
3757 </ownedStyle>
3758 <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']"/>
3759 </ownedElements>
3760 <ownedElements xmi:type="diagram:DNodeListElement" uid="_2zSIgDNlEe2fD4dIhR_vzA" name="REFERENCE" tooltipText="">
3761 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/REFERENCE"/>
3762 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/REFERENCE"/>
3763 <ownedStyle xmi:type="diagram:BundledImage" uid="_2zSvkDNlEe2fD4dIhR_vzA" labelAlignment="LEFT">
3764 <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"/>
3765 </ownedStyle>
3766 <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']"/>
3767 </ownedElements>
3768 <ownedElements xmi:type="diagram:DNodeListElement" uid="_4K8fADNlEe2fD4dIhR_vzA" name="CONTAINMENT" tooltipText="">
3769 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/CONTAINMENT"/>
3770 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/CONTAINMENT"/>
3771 <ownedStyle xmi:type="diagram:BundledImage" uid="_4K8fATNlEe2fD4dIhR_vzA" labelAlignment="LEFT">
3772 <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"/>
3773 </ownedStyle>
3774 <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']"/>
3775 </ownedElements>
3776 <ownedElements xmi:type="diagram:DNodeListElement" uid="_5MhQwDNlEe2fD4dIhR_vzA" name="CONTAINER" tooltipText="">
3777 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/CONTAINER"/>
3778 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//ReferenceKind/CONTAINER"/>
3779 <ownedStyle xmi:type="diagram:BundledImage" uid="_5MhQwTNlEe2fD4dIhR_vzA" labelAlignment="LEFT">
3780 <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"/>
3781 </ownedStyle>
3782 <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']"/>
3783 </ownedElements>
3784 </ownedDiagramElements>
3785 <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_DD1pQDNoEe2fD4dIhR_vzA" name="PredicateKind" tooltipText="" width="12" height="10">
3786 <target xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//PredicateKind"/>
3787 <semanticElements xmi:type="ecore:EEnum" href="src/main/resources/model/problem.ecore#//PredicateKind"/>
3788 <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
3789 <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
3790 <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
3791 <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DD1pQTNoEe2fD4dIhR_vzA" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="221,236,202">
3792 <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"/>
3793 </ownedStyle>
3794 <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']"/>
3795 <ownedElements xmi:type="diagram:DNodeListElement" uid="_FDOuIDNoEe2fD4dIhR_vzA" name="DEFAULT" tooltipText="">
3796 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/DEFAULT"/>
3797 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/DEFAULT"/>
3798 <ownedStyle xmi:type="diagram:BundledImage" uid="_FDPVMDNoEe2fD4dIhR_vzA" labelAlignment="LEFT">
3799 <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"/>
3800 </ownedStyle>
3801 <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']"/>
3802 </ownedElements>
3803 <ownedElements xmi:type="diagram:DNodeListElement" uid="_F2glMDNoEe2fD4dIhR_vzA" name="ERROR" tooltipText="">
3804 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/ERROR"/>
3805 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/ERROR"/>
3806 <ownedStyle xmi:type="diagram:BundledImage" uid="_F2hMQDNoEe2fD4dIhR_vzA" labelAlignment="LEFT">
3807 <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"/>
3808 </ownedStyle>
3809 <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']"/>
3810 </ownedElements>
3811 <ownedElements xmi:type="diagram:DNodeListElement" uid="_GS7bcDNoEe2fD4dIhR_vzA" name="CONTAINED" tooltipText="">
3812 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/CONTAINED"/>
3813 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/CONTAINED"/>
3814 <ownedStyle xmi:type="diagram:BundledImage" uid="_GS7bcTNoEe2fD4dIhR_vzA" labelAlignment="LEFT">
3815 <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"/>
3816 </ownedStyle>
3817 <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']"/>
3818 </ownedElements>
3819 <ownedElements xmi:type="diagram:DNodeListElement" uid="_Gx7EkDNoEe2fD4dIhR_vzA" name="CONTAINMENT" tooltipText="">
3820 <target xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/CONTAINMENT"/>
3821 <semanticElements xmi:type="ecore:EEnumLiteral" href="src/main/resources/model/problem.ecore#//PredicateKind/CONTAINMENT"/>
3822 <ownedStyle xmi:type="diagram:BundledImage" uid="_Gx7roDNoEe2fD4dIhR_vzA" labelAlignment="LEFT">
3823 <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"/>
3824 </ownedStyle>
3825 <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']"/>
3826 </ownedElements>
3827 </ownedDiagramElements>
3692 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/> 3828 <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
3693 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_CsWlsKA4EeuqkpDnuik1sg"/> 3829 <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_CsWlsKA4EeuqkpDnuik1sg"/>
3694 <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/> 3830 <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 571d52f3..58f26eae 100644
--- a/subprojects/language-model/src/main/resources/model/problem.ecore
+++ b/subprojects/language-model/src/main/resources/model/problem.ecore
@@ -20,15 +20,15 @@
20 <eClassifiers xsi:type="ecore:EClass" name="ReferenceDeclaration" eSuperTypes="#//Relation"> 20 <eClassifiers xsi:type="ecore:EClass" name="ReferenceDeclaration" eSuperTypes="#//Relation">
21 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceType" eType="#//Relation"/> 21 <eStructuralFeatures xsi:type="ecore:EReference" name="referenceType" eType="#//Relation"/>
22 <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//ReferenceDeclaration"/> 22 <eStructuralFeatures xsi:type="ecore:EReference" name="opposite" eType="#//ReferenceDeclaration"/>
23 <eStructuralFeatures xsi:type="ecore:EAttribute" name="containment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
24 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity" 23 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity"
25 containment="true"/> 24 containment="true"/>
25 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ReferenceKind"/>
26 </eClassifiers> 26 </eClassifiers>
27 <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true"> 27 <eClassifiers xsi:type="ecore:EClass" name="NamedElement" abstract="true">
28 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> 28 <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
29 </eClassifiers> 29 </eClassifiers>
30 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Relation #//ParametricDefinition"> 30 <eClassifiers xsi:type="ecore:EClass" name="PredicateDefinition" eSuperTypes="#//Relation #//ParametricDefinition">
31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="error" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 31 <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//PredicateKind"/>
32 </eClassifiers> 32 </eClassifiers>
33 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable"> 33 <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//Variable">
34 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/> 34 <eStructuralFeatures xsi:type="ecore:EReference" name="parameterType" eType="#//Relation"/>
@@ -78,7 +78,7 @@
78 </eClassifiers> 78 </eClassifiers>
79 <eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" interface="true"/> 79 <eClassifiers xsi:type="ecore:EClass" name="Statement" abstract="true" interface="true"/>
80 <eClassifiers xsi:type="ecore:EClass" name="TypeScope"> 80 <eClassifiers xsi:type="ecore:EClass" name="TypeScope">
81 <eStructuralFeatures xsi:type="ecore:EReference" name="targetType" eType="#//ClassDeclaration"/> 81 <eStructuralFeatures xsi:type="ecore:EReference" name="targetType" eType="#//Relation"/>
82 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 82 <eStructuralFeatures xsi:type="ecore:EAttribute" name="increment" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
83 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity" 83 <eStructuralFeatures xsi:type="ecore:EReference" name="multiplicity" eType="#//Multiplicity"
84 containment="true"/> 84 containment="true"/>
@@ -191,4 +191,16 @@
191 <eLiterals name="GREATER_EQ" value="3"/> 191 <eLiterals name="GREATER_EQ" value="3"/>
192 <eLiterals name="EQ" value="4"/> 192 <eLiterals name="EQ" value="4"/>
193 </eClassifiers> 193 </eClassifiers>
194 <eClassifiers xsi:type="ecore:EEnum" name="ReferenceKind">
195 <eLiterals name="DEFAULT"/>
196 <eLiterals name="REFERENCE" value="1"/>
197 <eLiterals name="CONTAINMENT" value="2"/>
198 <eLiterals name="CONTAINER" value="3"/>
199 </eClassifiers>
200 <eClassifiers xsi:type="ecore:EEnum" name="PredicateKind">
201 <eLiterals name="DEFAULT"/>
202 <eLiterals name="ERROR" value="1"/>
203 <eLiterals name="CONTAINED" value="2"/>
204 <eLiterals name="CONTAINMENT" value="3"/>
205 </eClassifiers>
194</ecore:EPackage> 206</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 1b72ecfd..5442d29d 100644
--- a/subprojects/language-model/src/main/resources/model/problem.genmodel
+++ b/subprojects/language-model/src/main/resources/model/problem.genmodel
@@ -29,6 +29,18 @@
29 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/GREATER_EQ"/> 29 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/GREATER_EQ"/>
30 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/EQ"/> 30 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ComparisonOp/EQ"/>
31 </genEnums> 31 </genEnums>
32 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//ReferenceKind">
33 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/DEFAULT"/>
34 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/REFERENCE"/>
35 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/CONTAINMENT"/>
36 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//ReferenceKind/CONTAINER"/>
37 </genEnums>
38 <genEnums typeSafeEnumCompatible="false" ecoreEnum="problem.ecore#//PredicateKind">
39 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/DEFAULT"/>
40 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/ERROR"/>
41 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINED"/>
42 <genEnumLiterals ecoreEnumLiteral="problem.ecore#//PredicateKind/CONTAINMENT"/>
43 </genEnums>
32 <genClasses ecoreClass="problem.ecore#//Problem"> 44 <genClasses ecoreClass="problem.ecore#//Problem">
33 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/> 45 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/nodes"/>
34 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/> 46 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//Problem/statements"/>
@@ -43,14 +55,14 @@
43 <genClasses ecoreClass="problem.ecore#//ReferenceDeclaration"> 55 <genClasses ecoreClass="problem.ecore#//ReferenceDeclaration">
44 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/referenceType"/> 56 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/referenceType"/>
45 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/opposite"/> 57 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/opposite"/>
46 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ReferenceDeclaration/containment"/>
47 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/multiplicity"/> 58 <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference problem.ecore#//ReferenceDeclaration/multiplicity"/>
59 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//ReferenceDeclaration/kind"/>
48 </genClasses> 60 </genClasses>
49 <genClasses ecoreClass="problem.ecore#//NamedElement"> 61 <genClasses ecoreClass="problem.ecore#//NamedElement">
50 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//NamedElement/name"/> 62 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//NamedElement/name"/>
51 </genClasses> 63 </genClasses>
52 <genClasses ecoreClass="problem.ecore#//PredicateDefinition"> 64 <genClasses ecoreClass="problem.ecore#//PredicateDefinition">
53 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/error"/> 65 <genFeatures createChild="false" ecoreFeature="ecore:EAttribute problem.ecore#//PredicateDefinition/kind"/>
54 </genClasses> 66 </genClasses>
55 <genClasses ecoreClass="problem.ecore#//Parameter"> 67 <genClasses ecoreClass="problem.ecore#//Parameter">
56 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/> 68 <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference problem.ecore#//Parameter/parameterType"/>
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 f7b86dca..2a5af628 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
+++ b/subprojects/language/src/main/java/tools/refinery/language/Problem.xtext
@@ -26,15 +26,23 @@ EnumDeclaration:
26EnumLiteral returns Node: 26EnumLiteral returns Node:
27 name=Identifier; 27 name=Identifier;
28 28
29enum ReferenceKind:
30 REFERENCE="refers" | CONTAINMENT="contains" | CONTAINER="container";
31
29ReferenceDeclaration: 32ReferenceDeclaration:
30 (containment?="contains" | "refers")? 33 (
31 referenceType=[Relation|QualifiedName] 34 kind=ReferenceKind referenceType=[Relation|QualifiedName] |
35 referenceType=[Relation|NonRelationKindQualifiedName]
36 )
32 ("[" multiplicity=Multiplicity "]")? 37 ("[" multiplicity=Multiplicity "]")?
33 name=Identifier 38 name=Identifier
34 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?; 39 ("opposite" opposite=[ReferenceDeclaration|QualifiedName])?;
35 40
41enum PredicateKind:
42 ERROR="error" | CONTAINED="contained" | CONTAINMENT="containment";
43
36PredicateDefinition: 44PredicateDefinition:
37 (error?="error" "pred"? | "pred") 45 (kind=PredicateKind "pred"? | "pred")
38 name=Identifier 46 name=Identifier
39 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")" 47 "(" (parameters+=Parameter ("," parameters+=Parameter)*)? ")"
40 ("<->" bodies+=Conjunction (";" bodies+=Conjunction)*)? 48 ("<->" bodies+=Conjunction (";" bodies+=Conjunction)*)?
@@ -150,7 +158,7 @@ ScopeDeclaration:
150 "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* "."; 158 "scope" typeScopes+=TypeScope ("," typeScopes+=TypeScope)* ".";
151 159
152TypeScope: 160TypeScope:
153 targetType=[ClassDeclaration|QualifiedName] 161 targetType=[Relation|QualifiedName]
154 (increment?="+=" | "=") 162 (increment?="+=" | "=")
155 multiplicity=DefiniteMultiplicity; 163 multiplicity=DefiniteMultiplicity;
156 164
@@ -175,12 +183,19 @@ IndividualDeclaration:
175UpperBound returns ecore::EInt: 183UpperBound returns ecore::EInt:
176 INT | "*"; 184 INT | "*";
177 185
186NonRelationKindQualifiedName hidden():
187 NonRelationKindIdentifier ("::" Identifier)*;
188
178QualifiedName hidden(): 189QualifiedName hidden():
179 Identifier ("::" Identifier)*; 190 Identifier ("::" Identifier)*;
180 191
192NonRelationKindIdentifier:
193 ID | "true" | "false" | "unknown" | "error" | "class" | "abstract" | "extends" | "enum" |
194 "pred" | "indiv" | "problem" | "new" | "delete" | "rule" | "may" | "must" | "current" |
195 "count" | "default" | "scope" | "contained" | "containment";
196
181Identifier: 197Identifier:
182 ID | "true" | "false" | "unknown" | "error" | "class" | "abstract" | "extends" | "enum" | "pred" | 198 NonRelationKindIdentifier | "refers" | "contains" | "container";
183 "indiv" | "problem" | "new" | "delete" | "rule" | "may" | "must" | "current" | "count";
184 199
185Integer returns ecore::EInt hidden(): 200Integer returns ecore::EInt hidden():
186 "-"? INT; 201 "-"? INT;
diff --git a/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java b/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
index b1e39176..0be296fd 100644
--- a/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
+++ b/subprojects/language/src/main/java/tools/refinery/language/ProblemUtil.java
@@ -27,6 +27,10 @@ public final class ProblemUtil {
27 27
28 public static final String NODE_CLASS_NAME = "node"; 28 public static final String NODE_CLASS_NAME = "node";
29 29
30 public static final String DOMAIN_CLASS_NAME = "domain";
31
32 public static final String DATA_CLASS_NAME = "data";
33
30 private ProblemUtil() { 34 private ProblemUtil() {
31 throw new IllegalStateException("This is a static utility class and should not be instantiated directly"); 35 throw new IllegalStateException("This is a static utility class and should not be instantiated directly");
32 } 36 }
@@ -80,15 +84,15 @@ public final class ProblemUtil {
80 return false; 84 return false;
81 } 85 }
82 86
83 public static Optional<ClassDeclaration> getNodeClassDeclaration(EObject context) { 87 public static Optional<ClassDeclaration> getBuiltinClassDeclaration(EObject context, String name) {
84 return getBuiltInLibrary(context).flatMap(problem -> problem.getStatements().stream() 88 return getBuiltInLibrary(context).flatMap(problem -> problem.getStatements().stream()
85 .filter(ClassDeclaration.class::isInstance).map(ClassDeclaration.class::cast) 89 .filter(ClassDeclaration.class::isInstance).map(ClassDeclaration.class::cast)
86 .filter(declaration -> NODE_CLASS_NAME.equals(declaration.getName())).findFirst()); 90 .filter(declaration -> name.equals(declaration.getName())).findFirst());
87 } 91 }
88 92
89 public static Collection<ClassDeclaration> getSuperclassesAndSelf(ClassDeclaration classDeclaration) { 93 public static Collection<ClassDeclaration> getSuperclassesAndSelf(ClassDeclaration classDeclaration) {
90 Set<ClassDeclaration> found = new HashSet<>(); 94 Set<ClassDeclaration> found = new HashSet<>();
91 getNodeClassDeclaration(classDeclaration).ifPresent(found::add); 95 getBuiltinClassDeclaration(classDeclaration, NODE_CLASS_NAME).ifPresent(found::add);
92 Deque<ClassDeclaration> queue = new ArrayDeque<>(); 96 Deque<ClassDeclaration> queue = new ArrayDeque<>();
93 queue.addLast(classDeclaration); 97 queue.addLast(classDeclaration);
94 while (!queue.isEmpty()) { 98 while (!queue.isEmpty()) {
@@ -102,6 +106,11 @@ public final class ProblemUtil {
102 } 106 }
103 } 107 }
104 } 108 }
109 getBuiltinClassDeclaration(classDeclaration, DATA_CLASS_NAME).ifPresent((dataClassDelcaration) -> {
110 if (!found.contains(dataClassDelcaration)) {
111 getBuiltinClassDeclaration(classDeclaration, DOMAIN_CLASS_NAME).ifPresent(found::add);
112 }
113 });
105 return found; 114 return found;
106 } 115 }
107 116
@@ -113,6 +122,28 @@ public final class ProblemUtil {
113 return referenceDeclarations; 122 return referenceDeclarations;
114 } 123 }
115 124
125 public static boolean isDataClass(Relation relation) {
126 if (relation instanceof ClassDeclaration classDeclaration) {
127 var supertypes = getSuperclassesAndSelf(classDeclaration);
128 return getBuiltinClassDeclaration(classDeclaration, DATA_CLASS_NAME).map(supertypes::contains)
129 .orElse(false);
130 }
131 return false;
132 }
133
134 public static boolean isContainmentReference(ReferenceDeclaration referenceDeclaration) {
135 switch (referenceDeclaration.getKind()) {
136 case REFERENCE, CONTAINER:
137 return false;
138 case CONTAINMENT:
139 return true;
140 case DEFAULT:
141 return isDataClass(referenceDeclaration.getReferenceType());
142 default:
143 throw new IllegalArgumentException("Unknown reference kind " + referenceDeclaration.getKind());
144 }
145 }
146
116 private static URI getLibraryUri(String libraryName) { 147 private static URI getLibraryUri(String libraryName) {
117 return URI.createURI(ProblemUtil.class.getClassLoader() 148 return URI.createURI(ProblemUtil.class.getClassLoader()
118 .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString()); 149 .getResource("tools/refinery/language/%s.problem".formatted(libraryName)).toString());
diff --git a/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem b/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem
index 323e03f1..e39ff1a3 100644
--- a/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem
+++ b/subprojects/language/src/main/resources/tools/refinery/language/builtin.problem
@@ -19,3 +19,22 @@ class real extends data.
19class int extends data. 19class int extends data.
20 20
21class string extends data. 21class string extends data.
22
23pred contained(node node).
24
25pred contains(node container, node contained).
26
27pred root(node node).
28
29% error missingContainer(contained node) <->
30% !contains(node, _), !root(node).
31%
32% error tooManyContainers(contained node) <->
33% count contains(_, node) > 1
34% ;
35% contains(_, node), root(node)
36% ;
37% contains(_, node), !contained(node).
38%
39% error containmentCycle(node node) <->
40% contains+(node, node).