aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs
diff options
context:
space:
mode:
authorLibravatar Aren Babikian <aren.babikian@mail.mcgill.ca>2021-01-06 00:01:51 +0100
committerLibravatar Aren Babikian <aren.babikian@mail.mcgill.ca>2021-01-06 00:01:51 +0100
commit7dcbe0bc5a9cac09de030b5f328f2e4d575f4ab5 (patch)
treed90109608b1f4871f3aef9c873cb80262a4154a1 /Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs
parentmerge models20 measurements (diff)
downloadVIATRA-Generator-7dcbe0bc5a9cac09de030b5f328f2e4d575f4ab5.tar.gz
VIATRA-Generator-7dcbe0bc5a9cac09de030b5f328f2e4d575f4ab5.tar.zst
VIATRA-Generator-7dcbe0bc5a9cac09de030b5f328f2e4d575f4ab5.zip
rebase dreal-integ on models20-measurements
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs')
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/errors.txt22
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated792
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem340
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel51
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt1
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml916
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.pngbin90845 -> 0 bytes
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi8
8 files changed, 0 insertions, 2130 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/errors.txt b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/errors.txt
deleted file mode 100644
index 87a7ed57..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/errors.txt
+++ /dev/null
@@ -1,22 +0,0 @@
1Error occured (IllegalArgumentException): TypeConstraint applicable for enumerable input keys only; received instead org.eclipse.viatra.query.patternlanguage.emf.types.BottomTypeKey@3ba3f40d
2 org.eclipse.viatra.query.runtime.matchers.psystem.basicenumerables.TypeConstraint.<init>(TypeConstraint.java:42)
3 org.eclipse.viatra.query.patternlanguage.emf.specification.internal.EPMToPBody.acceptTypeConstraint(EPMToPBody.java:115)
4 org.eclipse.viatra.query.patternlanguage.emf.specification.internal.PatternBodyTransformer.preprocessParameters(PatternBodyTransformer.java:168)
5 org.eclipse.viatra.query.patternlanguage.emf.specification.internal.PatternBodyTransformer.transform(PatternBodyTransformer.java:123)
6 org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder.getBodies(SpecificationBuilder.java:300)
7 org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder.buildBodies(SpecificationBuilder.java:286)
8 org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder.buildSpecification(SpecificationBuilder.java:197)
9 org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder.lambda$4(SpecificationBuilder.java:157)
10 java.util.Optional.orElseGet(Optional.java:267)
11 org.eclipse.viatra.query.patternlanguage.emf.specification.SpecificationBuilder.getOrCreateSpecification(SpecificationBuilder.java:157)
12 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.util.ParseUtil.createSpecification(ParseUtil.java:114)
13 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.util.ParseUtil.parse(ParseUtil.java:101)
14 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider.generateQueries(PatternProvider.java:66)
15 hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.ModelGenerationMethodProvider.createModelGenerationMethod(ModelGenerationMethodProvider.java:57)
16 hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasoner.solve(ViatraReasoner.java:97)
17 hu.bme.mit.inf.dslreasoner.application.execution.GenerationTaskExecutor.executeGenerationTask(GenerationTaskExecutor.java:316)
18 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor._execute(ScriptExecutor.java:129)
19 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.execute(ScriptExecutor.java:338)
20 hu.bme.mit.inf.dslreasoner.application.execution.ScriptExecutor.executeScript(ScriptExecutor.java:110)
21 hu.bme.mit.inf.dslreasoner.application.execution.StandaloneScriptExecutor.executeScript(StandaloneScriptExecutor.java:149)
22 run.FamilyTreeGen.main(FamilyTreeGen.java:7)
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated
deleted file mode 100644
index 315a1e15..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generated3valued.vql_deactivated
+++ /dev/null
@@ -1,792 +0,0 @@
1import epackage "http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage"
2import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem"
3import epackage "http://www.bme.hu/mit/inf/dslreasoner/logic/model/language"
4
5//////////
6// 0. Util
7//////////
8private pattern interpretation(problem:LogicProblem, interpretation:PartialInterpretation) {
9 PartialInterpretation.problem(interpretation,problem);
10}
11
12/////////////////////////
13// 0.1 Existence
14/////////////////////////
15/** [[exist(element)]]=1 */
16private pattern mustExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
17 find interpretation(problem,interpretation);
18 LogicProblem.elements(problem,element);
19} or {
20 find interpretation(problem,interpretation);
21 PartialInterpretation.newElements(interpretation,element);
22}
23
24/** [[exist(element)]]>=1/2 */
25private pattern mayExist(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
26 find mustExist(problem,interpretation,element);
27} or {
28 find interpretation(problem,interpretation);
29 neg find elementCloseWorld(element);
30 PartialInterpretation.openWorldElements(interpretation,element);
31}
32
33private pattern elementCloseWorld(element:DefinedElement) {
34 PartialInterpretation.openWorldElements(i,element);
35 PartialInterpretation.maxNewElements(i,0);
36} or {
37 Scope.targetTypeInterpretation(scope,interpretation);
38 PartialTypeInterpratation.elements(interpretation,element);
39 Scope.maxNewElements(scope,0);
40}
41
42////////////////////////
43// 0.2 Equivalence
44////////////////////////
45pattern mayEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement)
46// For non-primitive type. Boolean types always must equivalent or cannot equivalent
47{
48 find mayExist(problem,interpretation,a);
49 find mayExist(problem,interpretation,b);
50 a == b;
51} or {
52 find mayExist(problem,interpretation,a);
53 find mayExist(problem,interpretation,b);
54 IntegerElement(a);
55 IntegerElement(b);
56 PrimitiveElement.valueSet(a,false);
57} or {
58 find mayExist(problem,interpretation,a);
59 find mayExist(problem,interpretation,b);
60 IntegerElement(a);
61 IntegerElement(b);
62 PrimitiveElement.valueSet(b,false);
63} or {
64 find mayExist(problem,interpretation,a);
65 find mayExist(problem,interpretation,b);
66 RealElement(a);
67 RealElement(b);
68 PrimitiveElement.valueSet(a,false);
69} or {
70 find mayExist(problem,interpretation,a);
71 find mayExist(problem,interpretation,b);
72 RealElement(a);
73 RealElement(b);
74 PrimitiveElement.valueSet(b,false);
75} or {
76 find mayExist(problem,interpretation,a);
77 find mayExist(problem,interpretation,b);
78 RealElement(a);
79 IntegerElement(b);
80 PrimitiveElement.valueSet(a,false);
81} or {
82 find mayExist(problem,interpretation,a);
83 find mayExist(problem,interpretation,b);
84 RealElement(a);
85 IntegerElement(b);
86 PrimitiveElement.valueSet(b,false);
87} or {
88 find mayExist(problem,interpretation,a);
89 find mayExist(problem,interpretation,b);
90 IntegerElement(a);
91 RealElement(b);
92 PrimitiveElement.valueSet(a,false);
93} or {
94 find mayExist(problem,interpretation,a);
95 find mayExist(problem,interpretation,b);
96 IntegerElement(a);
97 RealElement(b);
98 PrimitiveElement.valueSet(b,false);
99} or {
100 find mayExist(problem,interpretation,a);
101 find mayExist(problem,interpretation,b);
102 StringElement(a);
103 StringElement(b);
104 PrimitiveElement.valueSet(a,false);
105} or {
106 find mayExist(problem,interpretation,a);
107 find mayExist(problem,interpretation,b);
108 StringElement(a);
109 StringElement(b);
110 PrimitiveElement.valueSet(b,false);
111}
112
113pattern mustEquivalent(problem:LogicProblem, interpretation:PartialInterpretation, a: DefinedElement, b: DefinedElement) {
114// For non-primitive and Boolean primitive type
115 find mustExist(problem,interpretation,a);
116 find mustExist(problem,interpretation,b);
117 a == b;
118} or {
119 find mustExist(problem,interpretation,a);
120 find mustExist(problem,interpretation,b);
121 PrimitiveElement.valueSet(a,true);
122 PrimitiveElement.valueSet(b,true);
123 IntegerElement.value(a,value);
124 IntegerElement.value(b,value);
125} or {
126 find mustExist(problem,interpretation,a);
127 find mustExist(problem,interpretation,b);
128 PrimitiveElement.valueSet(a,true);
129 PrimitiveElement.valueSet(b,true);
130 RealElement.value(a,value);
131 RealElement.value(b,value);
132} or {
133 find mustExist(problem,interpretation,a);
134 find mustExist(problem,interpretation,b);
135 PrimitiveElement.valueSet(a,true);
136 PrimitiveElement.valueSet(b,true);
137 RealElement.value(a,value);
138 IntegerElement.value(b,value);
139} or {
140 find mustExist(problem,interpretation,a);
141 find mustExist(problem,interpretation,b);
142 PrimitiveElement.valueSet(a,true);
143 PrimitiveElement.valueSet(b,true);
144 IntegerElement.value(a,value);
145 RealElement.value(b,value);
146} or {
147 find mustExist(problem,interpretation,a);
148 find mustExist(problem,interpretation,b);
149 PrimitiveElement.valueSet(a,true);
150 PrimitiveElement.valueSet(b,true);
151 StringElement.value(a,value);
152 StringElement.value(b,value);
153}
154
155//////////
156// 1. Problem-Specific Base Indexers
157//////////
158// 1.1 Type Indexers
159//////////
160// 1.1.1 Required Patterns by TypeIndexer
161//////////
162private pattern typeInterpretation(problem:LogicProblem, interpretation:PartialInterpretation, type:TypeDeclaration, typeInterpretation:PartialComplexTypeInterpretation) {
163 find interpretation(problem,interpretation);
164 LogicProblem.types(problem,type);
165 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
166 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
167}
168
169private pattern directInstanceOf(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement, type:Type) {
170 find interpretation(problem,interpretation);
171 LogicProblem.types(problem,type);
172 TypeDefinition.elements(type,element);
173} or {
174 find interpretation(problem,interpretation);
175 find typeInterpretation(problem,interpretation,type,typeInterpretation);
176 PartialComplexTypeInterpretation.elements(typeInterpretation,element);
177}
178
179private pattern isPrimitive(element: PrimitiveElement) {
180 PrimitiveElement(element);
181}
182//////////
183// 1.1.2 primitive Type Indexers
184//////////
185// Currently unused. Refer primitive types as:
186// > PrimitiveElement(element)
187// specific types are referred as:
188// > BooleanElement(variableName)
189// > IntegerElement(variableName)
190// > RealElement(variableName)
191// > StringElement(variableName)
192// And their value as
193// > BooleanElement.value(variableName,value)
194// > IntegerElement.value(variableName,value)
195// > RealElement.value(variableName,value)
196// > StringElement.value(variableName,value)
197// Whether a value is set is defined by:
198// > PrimitiveElement.valueSet(variableName,isFilled);
199//////////
200// 1.1.3 domain-specific Type Indexers
201//////////
202/**
203 * An element must be an instance of type "FamilyTree class".
204 */
205private pattern mustInstanceOfFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
206 Type.name(type,"FamilyTree class");
207 find directInstanceOf(problem,interpretation,element,type);
208}
209private pattern scopeDisallowsNewFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation) {
210 find interpretation(problem,interpretation);
211 PartialInterpretation.scopes(interpretation,scope);
212 Scope.targetTypeInterpretation(scope,typeInterpretation);
213 Scope.maxNewElements(scope,0);
214 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
215 Type.name(type,"FamilyTree class");
216}
217
218/**
219 * An element may be an instance of type "FamilyTree class".
220 */
221private pattern mayInstanceOfFamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
222{
223 find interpretation(problem,interpretation);
224 PartialInterpretation.newElements(interpretation,element);
225 neg find mustInstanceOfMember_class(problem,interpretation,element);
226 neg find scopeDisallowsNewFamilyTree_class(problem, interpretation);
227 neg find isPrimitive(element);
228} or {
229 find interpretation(problem,interpretation);
230 PartialInterpretation.openWorldElements(interpretation,element);
231 neg find mustInstanceOfMember_class(problem,interpretation,element);
232 neg find scopeDisallowsNewFamilyTree_class(problem, interpretation);
233 neg find isPrimitive(element);
234} or
235{ find mustInstanceOfFamilyTree_class(problem,interpretation,element); }
236/**
237 * An element must be an instance of type "Member class".
238 */
239private pattern mustInstanceOfMember_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement) {
240 Type.name(type,"Member class");
241 find directInstanceOf(problem,interpretation,element,type);
242}
243private pattern scopeDisallowsNewMember_class(problem:LogicProblem, interpretation:PartialInterpretation) {
244 find interpretation(problem,interpretation);
245 PartialInterpretation.scopes(interpretation,scope);
246 Scope.targetTypeInterpretation(scope,typeInterpretation);
247 Scope.maxNewElements(scope,0);
248 PartialComplexTypeInterpretation.interpretationOf(typeInterpretation,type);
249 Type.name(type,"Member class");
250}
251
252/**
253 * An element may be an instance of type "Member class".
254 */
255private pattern mayInstanceOfMember_class(problem:LogicProblem, interpretation:PartialInterpretation, element:DefinedElement)
256{
257 find interpretation(problem,interpretation);
258 PartialInterpretation.newElements(interpretation,element);
259 neg find mustInstanceOfFamilyTree_class(problem,interpretation,element);
260 neg find scopeDisallowsNewMember_class(problem, interpretation);
261 neg find isPrimitive(element);
262} or {
263 find interpretation(problem,interpretation);
264 PartialInterpretation.openWorldElements(interpretation,element);
265 neg find mustInstanceOfFamilyTree_class(problem,interpretation,element);
266 neg find scopeDisallowsNewMember_class(problem, interpretation);
267 neg find isPrimitive(element);
268} or
269{ find mustInstanceOfMember_class(problem,interpretation,element); }
270
271//////////
272// 1.2 Relation Declaration Indexers
273//////////
274/**
275 * Matcher for detecting tuples t where []members reference FamilyTree(source,target)
276 */
277private pattern mustInRelationmembers_reference_FamilyTree(
278 problem:LogicProblem, interpretation:PartialInterpretation,
279 source: DefinedElement, target:DefinedElement)
280{
281 find interpretation(problem,interpretation);
282 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
283 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"members reference FamilyTree");
284 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
285 BinaryElementRelationLink.param1(link,source);
286 BinaryElementRelationLink.param2(link,target);
287}
288/**
289 * Matcher for detecting tuples t where <>members reference FamilyTree(source,target)
290 */
291private pattern mayInRelationmembers_reference_FamilyTree(
292 problem:LogicProblem, interpretation:PartialInterpretation,
293 source: DefinedElement, target:DefinedElement)
294{
295 find interpretation(problem,interpretation);
296 // The two endpoint of the link have to exist
297 find mayExist(problem, interpretation, source);
298 find mayExist(problem, interpretation, target);
299 // Type consistency
300 find mayInstanceOfFamilyTree_class(problem,interpretation,source);
301 find mayInstanceOfMember_class(problem,interpretation,target);
302 // The reference is containment, then a new reference cannot be create if:
303 // 1. Multiple parents
304 neg find mustContains4(problem,interpretation,_,target);
305 // 2. Circle in the containment hierarchy
306 neg find mustTransitiveContains(source,target);
307} or {
308 find mustInRelationmembers_reference_FamilyTree(problem,interpretation,source,target);
309}
310/**
311 * Matcher for detecting tuples t where []children reference Member(source,target)
312 */
313private pattern mustInRelationchildren_reference_Member(
314 problem:LogicProblem, interpretation:PartialInterpretation,
315 source: DefinedElement, target:DefinedElement)
316{
317 find interpretation(problem,interpretation);
318 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
319 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"children reference Member");
320 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
321 BinaryElementRelationLink.param1(link,source);
322 BinaryElementRelationLink.param2(link,target);
323}
324/**
325 * Matcher for detecting tuples t where <>children reference Member(source,target)
326 */
327private pattern mayInRelationchildren_reference_Member(
328 problem:LogicProblem, interpretation:PartialInterpretation,
329 source: DefinedElement, target:DefinedElement)
330{
331 find interpretation(problem,interpretation);
332 // The two endpoint of the link have to exist
333 find mayExist(problem, interpretation, source);
334 find mayExist(problem, interpretation, target);
335 // Type consistency
336 find mayInstanceOfMember_class(problem,interpretation,source);
337 find mayInstanceOfMember_class(problem,interpretation,target);
338 // There are "numberOfExistingReferences" currently existing instances of the reference to the target,
339 // the upper bound of the opposite reference multiplicity should be considered.
340 numberOfExistingOppositeReferences == count find mustInRelationparents_reference_Member(problem,interpretation,target,_);
341 check(numberOfExistingOppositeReferences < 2);
342} or {
343 find mustInRelationchildren_reference_Member(problem,interpretation,source,target);
344}
345/**
346 * Matcher for detecting tuples t where []parents reference Member(source,target)
347 */
348private pattern mustInRelationparents_reference_Member(
349 problem:LogicProblem, interpretation:PartialInterpretation,
350 source: DefinedElement, target:DefinedElement)
351{
352 find interpretation(problem,interpretation);
353 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
354 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"parents reference Member");
355 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
356 BinaryElementRelationLink.param1(link,source);
357 BinaryElementRelationLink.param2(link,target);
358}
359/**
360 * Matcher for detecting tuples t where <>parents reference Member(source,target)
361 */
362private pattern mayInRelationparents_reference_Member(
363 problem:LogicProblem, interpretation:PartialInterpretation,
364 source: DefinedElement, target:DefinedElement)
365{
366 find interpretation(problem,interpretation);
367 // The two endpoint of the link have to exist
368 find mayExist(problem, interpretation, source);
369 find mayExist(problem, interpretation, target);
370 // Type consistency
371 find mayInstanceOfMember_class(problem,interpretation,source);
372 find mayInstanceOfMember_class(problem,interpretation,target);
373 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
374 // the upper bound of the multiplicity should be considered.
375 numberOfExistingReferences == count find mustInRelationparents_reference_Member(problem,interpretation,source,_);
376 check(numberOfExistingReferences < 2);
377} or {
378 find mustInRelationparents_reference_Member(problem,interpretation,source,target);
379}
380/**
381 * Matcher for detecting tuples t where []name attribute Member(source,target)
382 */
383private pattern mustInRelationname_attribute_Member(
384 problem:LogicProblem, interpretation:PartialInterpretation,
385 source: DefinedElement, target:DefinedElement)
386{
387 find interpretation(problem,interpretation);
388 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
389 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute Member");
390 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
391 BinaryElementRelationLink.param1(link,source);
392 BinaryElementRelationLink.param2(link,target);
393}
394/**
395 * Matcher for detecting tuples t where <>name attribute Member(source,target)
396 */
397private pattern mayInRelationname_attribute_Member(
398 problem:LogicProblem, interpretation:PartialInterpretation,
399 source: DefinedElement, target:DefinedElement)
400{
401 find interpretation(problem,interpretation);
402 // The two endpoint of the link have to exist
403 find mayExist(problem, interpretation, source);
404 find mayExist(problem, interpretation, target);
405 // Type consistency
406 find mayInstanceOfMember_class(problem,interpretation,source);
407 StringElement(target);
408 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
409 // the upper bound of the multiplicity should be considered.
410 numberOfExistingReferences == count find mustInRelationname_attribute_Member(problem,interpretation,source,_);
411 check(numberOfExistingReferences < 1);
412} or {
413 find mustInRelationname_attribute_Member(problem,interpretation,source,target);
414}
415/**
416 * Matcher for detecting tuples t where []age attribute Member(source,target)
417 */
418private pattern mustInRelationage_attribute_Member(
419 problem:LogicProblem, interpretation:PartialInterpretation,
420 source: DefinedElement, target:DefinedElement)
421{
422 find interpretation(problem,interpretation);
423 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
424 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"age attribute Member");
425 PartialRelationInterpretation.relationlinks(relationIterpretation,link);
426 BinaryElementRelationLink.param1(link,source);
427 BinaryElementRelationLink.param2(link,target);
428}
429/**
430 * Matcher for detecting tuples t where <>age attribute Member(source,target)
431 */
432private pattern mayInRelationage_attribute_Member(
433 problem:LogicProblem, interpretation:PartialInterpretation,
434 source: DefinedElement, target:DefinedElement)
435{
436 find interpretation(problem,interpretation);
437 // The two endpoint of the link have to exist
438 find mayExist(problem, interpretation, source);
439 find mayExist(problem, interpretation, target);
440 // Type consistency
441 find mayInstanceOfMember_class(problem,interpretation,source);
442 IntegerElement(target);
443 // There are "numberOfExistingReferences" currently existing instances of the reference from the source,
444 // the upper bound of the multiplicity should be considered.
445 numberOfExistingReferences == count find mustInRelationage_attribute_Member(problem,interpretation,source,_);
446 check(numberOfExistingReferences < 1);
447} or {
448 find mustInRelationage_attribute_Member(problem,interpretation,source,target);
449}
450
451//////////
452// 1.3 Relation Definition Indexers
453//////////
454// Must, May and Current queries for pattern queries memberIsItsOwnParent
455private pattern mustInRelation_pattern_queries_memberIsItsOwnParent(
456 problem:LogicProblem, interpretation:PartialInterpretation,
457 var_m)
458{
459 find interpretation(problem,interpretation);
460 var_m == var_p;
461 find mustInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_p);
462 find mustInRelationparents_reference_Member(problem,interpretation,var_p,var_p);
463}
464private pattern mayInRelation_pattern_queries_memberIsItsOwnParent(
465 problem:LogicProblem, interpretation:PartialInterpretation,
466 var_m)
467{
468 find interpretation(problem,interpretation);
469 var_m == var_p;
470 find mayInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_p);
471 find mayInRelationparents_reference_Member(problem,interpretation,var_p,var_p);
472}
473private pattern currentInRelation_pattern_queries_memberIsItsOwnParent(
474 problem:LogicProblem, interpretation:PartialInterpretation,
475 var_m)
476{
477 find interpretation(problem,interpretation);
478 var_m == var_p;
479 find mustInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_p);
480 find mustInRelationparents_reference_Member(problem,interpretation,var_p,var_p);
481}
482// Must, May and Current queries for pattern queries twoMembersHaveNoParent
483private pattern mustInRelation_pattern_queries_twoMembersHaveNoParent(
484 problem:LogicProblem, interpretation:PartialInterpretation,
485 var_m1, var_m2)
486{
487 find interpretation(problem,interpretation);
488 // var_m1 exported
489 // var_m2 exported
490 find mustInstanceOfMember_class(problem,interpretation,var_m1);
491 find mustInstanceOfMember_class(problem,interpretation,var_m2);
492 neg find mayInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m1);
493 neg find mayInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m2);
494 neg find mayEquivalent(problem, interpretation, var_m1, var_m2);
495}
496private pattern mayInRelation_pattern_queries_twoMembersHaveNoParent(
497 problem:LogicProblem, interpretation:PartialInterpretation,
498 var_m1, var_m2)
499{
500 find interpretation(problem,interpretation);
501 // var_m1 exported
502 // var_m2 exported
503 find mayInstanceOfMember_class(problem,interpretation,var_m1);
504 find mayInstanceOfMember_class(problem,interpretation,var_m2);
505 neg find mustInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m1);
506 neg find mustInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m2);
507 neg find mustEquivalent(problem, interpretation, var_m1, var_m2);
508}
509private pattern currentInRelation_pattern_queries_twoMembersHaveNoParent(
510 problem:LogicProblem, interpretation:PartialInterpretation,
511 var_m1, var_m2)
512{
513 find interpretation(problem,interpretation);
514 // var_m1 exported
515 // var_m2 exported
516 find mustInstanceOfMember_class(problem,interpretation,var_m1);
517 find mustInstanceOfMember_class(problem,interpretation,var_m2);
518 neg find currentInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m1);
519 neg find currentInRelation_pattern_queries_memberHasParent(problem,interpretation,var_m2);
520 neg find mustEquivalent(problem, interpretation, var_m1, var_m2);
521}
522// Must, May and Current queries for pattern queries memberHasParent
523private pattern mustInRelation_pattern_queries_memberHasParent(
524 problem:LogicProblem, interpretation:PartialInterpretation,
525 var_m)
526{
527 find interpretation(problem,interpretation);
528 // var_m exported
529 find mustInRelationparents_reference_Member(problem,interpretation,var_m,var__0);
530 find mustInstanceOfMember_class(problem,interpretation,var__0);
531}
532private pattern mayInRelation_pattern_queries_memberHasParent(
533 problem:LogicProblem, interpretation:PartialInterpretation,
534 var_m)
535{
536 find interpretation(problem,interpretation);
537 // var_m exported
538 find mayInRelationparents_reference_Member(problem,interpretation,var_m,var__0);
539 find mayInstanceOfMember_class(problem,interpretation,var__0);
540}
541private pattern currentInRelation_pattern_queries_memberHasParent(
542 problem:LogicProblem, interpretation:PartialInterpretation,
543 var_m)
544{
545 find interpretation(problem,interpretation);
546 // var_m exported
547 find mustInRelationparents_reference_Member(problem,interpretation,var_m,var__0);
548 find mustInstanceOfMember_class(problem,interpretation,var__0);
549}
550// Must, May and Current queries for pattern queries parentTooYoung
551private pattern mustInRelation_pattern_queries_parentTooYoung(
552 problem:LogicProblem, interpretation:PartialInterpretation,
553 var_m, var_p)
554{
555 find interpretation(problem,interpretation);
556 // var_m exported
557 // var_p exported
558 find mustInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_m);
559 find mustInRelationparents_reference_Member(problem,interpretation,var_m,var_p);
560 find mustInRelationage_attribute_Member(problem,interpretation,var_m,var_mAge);
561 find mustInRelationage_attribute_Member(problem,interpretation,var_p,var_pAge);
562 PrimitiveElement.valueSet(var_mAge,true); IntegerElement.value(var_mAge,value_var_mAge);
563 PrimitiveElement.valueSet(var_pAge,true); IntegerElement.value(var_pAge,value_var_pAge);
564 check((value_var_mAge<=(value_var_pAge+12)));
565}
566private pattern mayInRelation_pattern_queries_parentTooYoung(
567 problem:LogicProblem, interpretation:PartialInterpretation,
568 var_m, var_p)
569{
570 find interpretation(problem,interpretation);
571 // var_m exported
572 // var_p exported
573 find mayInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_m);
574 find mayInRelationparents_reference_Member(problem,interpretation,var_m,var_p);
575 find mayInRelationage_attribute_Member(problem,interpretation,var_m,var_mAge);
576 find mayInRelationage_attribute_Member(problem,interpretation,var_p,var_pAge);
577 PrimitiveElement.valueSet(var_mAge,setted_var_mAge); IntegerElement.value(var_mAge,value_var_mAge);
578 PrimitiveElement.valueSet(var_pAge,setted_var_pAge); IntegerElement.value(var_pAge,value_var_pAge);
579 check(
580 !setted_var_mAge || !setted_var_pAge
581 ||
582 ((value_var_mAge<=(value_var_pAge+12)))
583 );
584}
585private pattern currentInRelation_pattern_queries_parentTooYoung(
586 problem:LogicProblem, interpretation:PartialInterpretation,
587 var_m, var_p)
588{
589 find interpretation(problem,interpretation);
590 // var_m exported
591 // var_p exported
592 find mustInRelationmembers_reference_FamilyTree(problem,interpretation,_var__0,var_m);
593 find mustInRelationparents_reference_Member(problem,interpretation,var_m,var_p);
594 find mustInRelationage_attribute_Member(problem,interpretation,var_m,var_mAge);
595 find mustInRelationage_attribute_Member(problem,interpretation,var_p,var_pAge);
596 PrimitiveElement.valueSet(var_mAge,true); IntegerElement.value(var_mAge,value_var_mAge);
597 PrimitiveElement.valueSet(var_pAge,true); IntegerElement.value(var_pAge,value_var_pAge);
598 check((value_var_mAge<=(value_var_pAge+12)));
599}
600
601//////////
602// 1.4 Containment Indexer
603//////////
604private pattern mustContains2(source: DefinedElement, target: DefinedElement) {
605 find mustContains4(_,_,source,target);
606}
607
608private pattern mustContains4(problem:LogicProblem, interpretation:PartialInterpretation,
609 source: DefinedElement, target: DefinedElement)
610 { find mustInRelationmembers_reference_FamilyTree(problem,interpretation,source,target); }
611
612private pattern mustTransitiveContains(source,target) {
613 find mustContains2+(source,target);
614}
615
616//////////
617// 2. Invalidation Indexers
618//////////
619// 2.1 Invalidated by WF Queries
620//////////
621pattern invalidatedBy_pattern_queries_memberIsItsOwnParent(problem:LogicProblem, interpretation:PartialInterpretation,
622 var_m)
623{
624 find mustInRelation_pattern_queries_memberIsItsOwnParent(problem,interpretation,var_m);
625}
626pattern invalidatedBy_pattern_queries_twoMembersHaveNoParent(problem:LogicProblem, interpretation:PartialInterpretation,
627 var_m1, var_m2)
628{
629 find mustInRelation_pattern_queries_twoMembersHaveNoParent(problem,interpretation,var_m1,var_m2);
630}
631pattern invalidatedBy_pattern_queries_parentTooYoung(problem:LogicProblem, interpretation:PartialInterpretation,
632 var_m, var_p)
633{
634 find mustInRelation_pattern_queries_parentTooYoung(problem,interpretation,var_m,var_p);
635}
636
637//////////
638// 3. Unfinishedness Indexers
639//////////
640// 3.1 Unfinishedness Measured by Multiplicity
641//////////
642
643//////////
644// 3.2 Unfinishedness Measured by WF Queries
645//////////
646pattern unfinishedBy_pattern_queries_memberIsItsOwnParent(problem:LogicProblem, interpretation:PartialInterpretation,
647 var_m)
648{
649 find currentInRelation_pattern_queries_memberIsItsOwnParent(problem,interpretation,var_m);
650}
651pattern unfinishedBy_pattern_queries_twoMembersHaveNoParent(problem:LogicProblem, interpretation:PartialInterpretation,
652 var_m1, var_m2)
653{
654 find currentInRelation_pattern_queries_twoMembersHaveNoParent(problem,interpretation,var_m1,var_m2);
655}
656pattern unfinishedBy_pattern_queries_parentTooYoung(problem:LogicProblem, interpretation:PartialInterpretation,
657 var_m, var_p)
658{
659 find currentInRelation_pattern_queries_parentTooYoung(problem,interpretation,var_m,var_p);
660}
661
662//////////
663// 4. Refinement Indexers
664//////////
665// 4.1 Object constructors
666//////////
667private pattern hasElementInContainment(problem:LogicProblem, interpretation:PartialInterpretation)
668{
669 find interpretation(problem,interpretation);
670 find mustInstanceOfFamilyTree_class(problem,interpretation,root);
671 find mustExist(problem, interpretation, root);
672}or{
673 find interpretation(problem,interpretation);
674 find mustInstanceOfMember_class(problem,interpretation,root);
675 find mustExist(problem, interpretation, root);
676}
677pattern createObject_Member_class_by_members_reference_FamilyTree(
678 problem:LogicProblem, interpretation:PartialInterpretation,
679 relationInterpretation:PartialRelationInterpretation, typeInterpretation:PartialComplexTypeInterpretation,
680 container:DefinedElement)
681{
682 find interpretation(problem,interpretation);
683 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
684 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Member class");
685 PartialInterpretation.partialrelationinterpretation(interpretation,relationInterpretation);
686 PartialRelationInterpretation.interpretationOf.name(relationInterpretation,"members reference FamilyTree");
687 find mustInstanceOfFamilyTree_class(problem,interpretation,container);
688 find mayInstanceOfMember_class(problem,interpretation,newObject);
689 find mayInRelationmembers_reference_FamilyTree(problem,interpretation,container,newObject);
690 find mustExist(problem, interpretation, container);
691 neg find mustExist(problem, interpretation, newObject);
692}
693pattern createObject_Member_class(
694 problem:LogicProblem, interpretation:PartialInterpretation,
695 typeInterpretation:PartialComplexTypeInterpretation)
696{
697 find interpretation(problem,interpretation);
698 neg find hasElementInContainment(problem,interpretation);
699 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
700 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"Member class");
701 find mayInstanceOfMember_class(problem,interpretation,newObject);
702 find mayExist(problem, interpretation, newObject);
703 neg find mustExist(problem, interpretation, newObject);
704}
705pattern createObject_FamilyTree_class(
706 problem:LogicProblem, interpretation:PartialInterpretation,
707 typeInterpretation:PartialComplexTypeInterpretation)
708{
709 find interpretation(problem,interpretation);
710 neg find hasElementInContainment(problem,interpretation);
711 PartialInterpretation.partialtypeinterpratation(interpretation,typeInterpretation);
712 PartialComplexTypeInterpretation.interpretationOf.name(typeInterpretation,"FamilyTree class");
713 find mayInstanceOfFamilyTree_class(problem,interpretation,newObject);
714 find mayExist(problem, interpretation, newObject);
715 neg find mustExist(problem, interpretation, newObject);
716}
717
718//////////
719// 4.2 Type refinement
720//////////
721pattern refineTypeTo_Member_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
722 find interpretation(problem,interpretation);
723 PartialInterpretation.newElements(interpretation,element);
724 find mayInstanceOfMember_class(problem,interpretation,element);
725 neg find mustInstanceOfMember_class(problem,interpretation,element);
726 neg find mustInstanceOfFamilyTree_class(problem,interpretation,element);
727}
728pattern refineTypeTo_FamilyTree_class(problem:LogicProblem, interpretation:PartialInterpretation, element: DefinedElement) {
729 find interpretation(problem,interpretation);
730 PartialInterpretation.newElements(interpretation,element);
731 find mayInstanceOfFamilyTree_class(problem,interpretation,element);
732 neg find mustInstanceOfMember_class(problem,interpretation,element);
733 neg find mustInstanceOfFamilyTree_class(problem,interpretation,element);
734}
735
736//////////
737// 4.3 Relation refinement
738//////////
739pattern refineRelation_children_reference_Member_and_parents_reference_Member(
740 problem:LogicProblem, interpretation:PartialInterpretation,
741 relationIterpretation:PartialRelationInterpretation, oppositeInterpretation:PartialRelationInterpretation,
742 from: DefinedElement, to: DefinedElement)
743{
744 find interpretation(problem,interpretation);
745 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
746 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"children reference Member");
747 PartialInterpretation.partialrelationinterpretation(interpretation,oppositeInterpretation);
748 PartialRelationInterpretation.interpretationOf.name(oppositeInterpretation,"parents reference Member");
749 find mustExist(problem, interpretation, from);
750 find mustExist(problem, interpretation, to);
751 find mustInstanceOfMember_class(problem,interpretation,from);
752 find mustInstanceOfMember_class(problem,interpretation,to);
753 find mayInRelationchildren_reference_Member(problem,interpretation,from,to);
754 neg find mustInRelationchildren_reference_Member(problem,interpretation,from,to);
755}
756pattern refineRelation_name_attribute_Member(
757 problem:LogicProblem, interpretation:PartialInterpretation,
758 relationIterpretation:PartialRelationInterpretation,
759 from: DefinedElement, to: DefinedElement)
760{
761 find interpretation(problem,interpretation);
762 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
763 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"name attribute Member");
764 find mustExist(problem, interpretation, from);
765 find mustExist(problem, interpretation, to);
766 find mustInstanceOfMember_class(problem,interpretation,from);
767 StringElement(to);
768 find mayInRelationname_attribute_Member(problem,interpretation,from,to);
769 neg find mustInRelationname_attribute_Member(problem,interpretation,from,to);
770}
771pattern refineRelation_age_attribute_Member(
772 problem:LogicProblem, interpretation:PartialInterpretation,
773 relationIterpretation:PartialRelationInterpretation,
774 from: DefinedElement, to: DefinedElement)
775{
776 find interpretation(problem,interpretation);
777 PartialInterpretation.partialrelationinterpretation(interpretation,relationIterpretation);
778 PartialRelationInterpretation.interpretationOf.name(relationIterpretation,"age attribute Member");
779 find mustExist(problem, interpretation, from);
780 find mustExist(problem, interpretation, to);
781 find mustInstanceOfMember_class(problem,interpretation,from);
782 IntegerElement(to);
783 find mayInRelationage_attribute_Member(problem,interpretation,from,to);
784 neg find mustInRelationage_attribute_Member(problem,interpretation,from,to);
785}
786
787//////////
788// 5 Unit Propagations
789//////////
790
791// Main propagations:
792
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem
deleted file mode 100644
index d15360ce..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/generation.logicproblem
+++ /dev/null
@@ -1,340 +0,0 @@
1<?xml version="1.0" encoding="ASCII"?>
2<language:LogicProblem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/ecore2logicannotation" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/problem" xmlns:language_1="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:viatra2logicannotations="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language/viatra2logicannotation">
3 <types xsi:type="language_1:TypeDeclaration" name="FamilyTree class"/>
4 <types xsi:type="language_1:TypeDeclaration" name="Member class"/>
5 <assertions name="upperMultiplicity parents Member" annotations="//@annotations.0">
6 <value xsi:type="language_1:Forall">
7 <quantifiedVariables name="src">
8 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
9 </quantifiedVariables>
10 <quantifiedVariables name="trg 1">
11 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
12 </quantifiedVariables>
13 <quantifiedVariables name="trg 2">
14 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
15 </quantifiedVariables>
16 <quantifiedVariables name="trg 3">
17 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
18 </quantifiedVariables>
19 <expression xsi:type="language_1:Impl">
20 <leftOperand xsi:type="language_1:And">
21 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
22 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
23 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.1"/>
24 </operands>
25 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
26 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
27 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.2"/>
28 </operands>
29 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
30 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.0"/>
31 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.3"/>
32 </operands>
33 </leftOperand>
34 <rightOperand xsi:type="language_1:Not">
35 <operand xsi:type="language_1:Distinct">
36 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.1"/>
37 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.2"/>
38 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.0/@value/@quantifiedVariables.3"/>
39 </operand>
40 </rightOperand>
41 </expression>
42 </value>
43 </assertions>
44 <assertions name="oppositeReference children Member" annotations="//@annotations.1">
45 <value xsi:type="language_1:Forall">
46 <quantifiedVariables name="src">
47 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
48 </quantifiedVariables>
49 <quantifiedVariables name="trg">
50 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
51 </quantifiedVariables>
52 <expression xsi:type="language_1:Iff">
53 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.1">
54 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
55 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
56 </leftOperand>
57 <rightOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
58 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.1"/>
59 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.1/@value/@quantifiedVariables.0"/>
60 </rightOperand>
61 </expression>
62 </value>
63 </assertions>
64 <assertions name="upperMultiplicity name Member" annotations="//@annotations.2">
65 <value xsi:type="language_1:Forall">
66 <quantifiedVariables name="src">
67 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
68 </quantifiedVariables>
69 <quantifiedVariables name="trg 1">
70 <range xsi:type="language_1:StringTypeReference"/>
71 </quantifiedVariables>
72 <quantifiedVariables name="trg 2">
73 <range xsi:type="language_1:StringTypeReference"/>
74 </quantifiedVariables>
75 <expression xsi:type="language_1:Impl">
76 <leftOperand xsi:type="language_1:And">
77 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
78 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
79 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
80 </operands>
81 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.3">
82 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.0"/>
83 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
84 </operands>
85 </leftOperand>
86 <rightOperand xsi:type="language_1:Not">
87 <operand xsi:type="language_1:Distinct">
88 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.1"/>
89 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.2/@value/@quantifiedVariables.2"/>
90 </operand>
91 </rightOperand>
92 </expression>
93 </value>
94 </assertions>
95 <assertions name="upperMultiplicity age Member" annotations="//@annotations.3">
96 <value xsi:type="language_1:Forall">
97 <quantifiedVariables name="src">
98 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
99 </quantifiedVariables>
100 <quantifiedVariables name="trg 1">
101 <range xsi:type="language_1:IntTypeReference"/>
102 </quantifiedVariables>
103 <quantifiedVariables name="trg 2">
104 <range xsi:type="language_1:IntTypeReference"/>
105 </quantifiedVariables>
106 <expression xsi:type="language_1:Impl">
107 <leftOperand xsi:type="language_1:And">
108 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
109 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
110 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
111 </operands>
112 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
113 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.0"/>
114 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
115 </operands>
116 </leftOperand>
117 <rightOperand xsi:type="language_1:Not">
118 <operand xsi:type="language_1:Distinct">
119 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.1"/>
120 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.3/@value/@quantifiedVariables.2"/>
121 </operand>
122 </rightOperand>
123 </expression>
124 </value>
125 </assertions>
126 <assertions name="errorpattern queries memberIsItsOwnParent" annotations="//@annotations.8">
127 <value xsi:type="language_1:Forall">
128 <quantifiedVariables name="p0">
129 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
130 </quantifiedVariables>
131 <expression xsi:type="language_1:Not">
132 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5">
133 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.4/@value/@quantifiedVariables.0"/>
134 </operand>
135 </expression>
136 </value>
137 </assertions>
138 <assertions name="errorpattern queries twoMembersHaveNoParent" annotations="//@annotations.9">
139 <value xsi:type="language_1:Forall">
140 <quantifiedVariables name="p0">
141 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
142 </quantifiedVariables>
143 <quantifiedVariables name="p1">
144 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
145 </quantifiedVariables>
146 <expression xsi:type="language_1:Not">
147 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6">
148 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.0"/>
149 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.5/@value/@quantifiedVariables.1"/>
150 </operand>
151 </expression>
152 </value>
153 </assertions>
154 <assertions name="errorpattern queries parentTooYoung" annotations="//@annotations.10">
155 <value xsi:type="language_1:Forall">
156 <quantifiedVariables name="p0">
157 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
158 </quantifiedVariables>
159 <quantifiedVariables name="p1">
160 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
161 </quantifiedVariables>
162 <expression xsi:type="language_1:Not">
163 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8">
164 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.0"/>
165 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@assertions.6/@value/@quantifiedVariables.1"/>
166 </operand>
167 </expression>
168 </value>
169 </assertions>
170 <relations xsi:type="language_1:RelationDeclaration" name="members reference FamilyTree">
171 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
172 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
173 </relations>
174 <relations xsi:type="language_1:RelationDeclaration" name="children reference Member">
175 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
176 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
177 </relations>
178 <relations xsi:type="language_1:RelationDeclaration" name="parents reference Member">
179 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
180 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
181 </relations>
182 <relations xsi:type="language_1:RelationDeclaration" name="name attribute Member">
183 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
184 <parameters xsi:type="language_1:StringTypeReference"/>
185 </relations>
186 <relations xsi:type="language_1:RelationDeclaration" name="age attribute Member">
187 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
188 <parameters xsi:type="language_1:IntTypeReference"/>
189 </relations>
190 <relations xsi:type="language_1:RelationDefinition" name="pattern queries memberIsItsOwnParent" annotations="//@annotations.4">
191 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
192 <variables name="parameter m">
193 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
194 </variables>
195 <value xsi:type="language_1:Or">
196 <operands xsi:type="language_1:Exists">
197 <quantifiedVariables name="variable 0">
198 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
199 </quantifiedVariables>
200 <expression xsi:type="language_1:And">
201 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
202 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@value/@operands.0/@quantifiedVariables.0"/>
203 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/>
204 </operands>
205 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
206 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/>
207 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.5/@variables.0"/>
208 </operands>
209 </expression>
210 </operands>
211 </value>
212 </relations>
213 <relations xsi:type="language_1:RelationDefinition" name="pattern queries twoMembersHaveNoParent" annotations="//@annotations.5">
214 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
215 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
216 <variables name="parameter m1">
217 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
218 </variables>
219 <variables name="parameter m2">
220 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
221 </variables>
222 <value xsi:type="language_1:Or">
223 <operands xsi:type="language_1:And">
224 <operands xsi:type="language_1:InstanceOf">
225 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.0"/>
226 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
227 </operands>
228 <operands xsi:type="language_1:InstanceOf">
229 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.1"/>
230 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
231 </operands>
232 <operands xsi:type="language_1:Not">
233 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
234 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.0"/>
235 </operand>
236 </operands>
237 <operands xsi:type="language_1:Not">
238 <operand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7">
239 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.1"/>
240 </operand>
241 </operands>
242 <operands xsi:type="language_1:Distinct">
243 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.0"/>
244 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.6/@variables.1"/>
245 </operands>
246 </operands>
247 </value>
248 </relations>
249 <relations xsi:type="language_1:RelationDefinition" name="pattern queries memberHasParent" annotations="//@annotations.6">
250 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
251 <variables name="parameter m">
252 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
253 </variables>
254 <value xsi:type="language_1:Or">
255 <operands xsi:type="language_1:Exists">
256 <quantifiedVariables name="variable 0">
257 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
258 </quantifiedVariables>
259 <expression xsi:type="language_1:And">
260 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
261 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7/@variables.0"/>
262 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7/@value/@operands.0/@quantifiedVariables.0"/>
263 </operands>
264 <operands xsi:type="language_1:InstanceOf">
265 <value xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.7/@value/@operands.0/@quantifiedVariables.0"/>
266 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
267 </operands>
268 </expression>
269 </operands>
270 </value>
271 </relations>
272 <relations xsi:type="language_1:RelationDefinition" name="pattern queries parentTooYoung" annotations="//@annotations.7">
273 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
274 <parameters xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
275 <variables name="parameter m">
276 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
277 </variables>
278 <variables name="parameter p">
279 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.1"/>
280 </variables>
281 <value xsi:type="language_1:Or">
282 <operands xsi:type="language_1:Exists">
283 <quantifiedVariables name="variable 0">
284 <range xsi:type="language_1:ComplexTypeReference" referred="//@types.0"/>
285 </quantifiedVariables>
286 <quantifiedVariables name="variable mAge">
287 <range xsi:type="language_1:IntTypeReference"/>
288 </quantifiedVariables>
289 <quantifiedVariables name="variable pAge">
290 <range xsi:type="language_1:IntTypeReference"/>
291 </quantifiedVariables>
292 <expression xsi:type="language_1:And">
293 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.0">
294 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@value/@operands.0/@quantifiedVariables.0"/>
295 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@variables.0"/>
296 </operands>
297 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.2">
298 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@variables.0"/>
299 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@variables.1"/>
300 </operands>
301 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
302 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@variables.0"/>
303 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@value/@operands.0/@quantifiedVariables.1"/>
304 </operands>
305 <operands xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.4">
306 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@variables.1"/>
307 <parameterSubstitutions xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@value/@operands.0/@quantifiedVariables.2"/>
308 </operands>
309 <operands xsi:type="language_1:LessOrEqualThan">
310 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@value/@operands.0/@quantifiedVariables.1"/>
311 <rightOperand xsi:type="language_1:Plus">
312 <leftOperand xsi:type="language_1:SymbolicValue" symbolicReference="//@relations.8/@value/@operands.0/@quantifiedVariables.2"/>
313 <rightOperand xsi:type="language_1:IntLiteral" value="12"/>
314 </rightOperand>
315 </operands>
316 </expression>
317 </operands>
318 </value>
319 </relations>
320 <containmentHierarchies typesOrderedInHierarchy="//@types.0 //@types.1" containmentRelations="//@relations.0"/>
321 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.0" relation="//@relations.2" upper="2"/>
322 <annotations xsi:type="ecore2logicannotations:InverseRelationAssertion" target="//@assertions.1" inverseA="//@relations.1" inverseB="//@relations.2"/>
323 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.2" relation="//@relations.3" upper="1"/>
324 <annotations xsi:type="ecore2logicannotations:UpperMultiplicityAssertion" target="//@assertions.3" relation="//@relations.4" upper="1"/>
325 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.5" patternFullyQualifiedName="queries.memberIsItsOwnParent">
326 <variableTrace targetLogicVariable="//@relations.5/@value/@operands.0/@quantifiedVariables.0"/>
327 </annotations>
328 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.6" patternFullyQualifiedName="queries.twoMembersHaveNoParent"/>
329 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.7" patternFullyQualifiedName="queries.memberHasParent">
330 <variableTrace targetLogicVariable="//@relations.7/@value/@operands.0/@quantifiedVariables.0"/>
331 </annotations>
332 <annotations xsi:type="viatra2logicannotations:TransfomedViatraQuery" target="//@relations.8" patternFullyQualifiedName="queries.parentTooYoung">
333 <variableTrace targetLogicVariable="//@relations.8/@value/@operands.0/@quantifiedVariables.0"/>
334 <variableTrace targetLogicVariable="//@relations.8/@value/@operands.0/@quantifiedVariables.1"/>
335 <variableTrace targetLogicVariable="//@relations.8/@value/@operands.0/@quantifiedVariables.2"/>
336 </annotations>
337 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.4" query="//@annotations.4"/>
338 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.5" query="//@annotations.5"/>
339 <annotations xsi:type="viatra2logicannotations:TransformedViatraWellformednessConstraint" target="//@assertions.6" query="//@annotations.7"/>
340</language:LogicProblem>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel
deleted file mode 100644
index df908518..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/debug/init.partialmodel
+++ /dev/null
@@ -1,51 +0,0 @@
1<?xml version="1.0" encoding="ASCII"?>
2<partialinterpretation:PartialInterpretation xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:language="http://www.bme.hu/mit/inf/dslreasoner/logic/model/language" xmlns:partialinterpretation="http://www.bme.hu/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage" minNewElements="6" maxNewElements="6">
3 <problem href="outputs/debug/generation.logicproblem#/"/>
4 <partialrelationinterpretation>
5 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.0"/>
6 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.0"/>
7 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.0/@parameters.1"/>
8 </partialrelationinterpretation>
9 <partialrelationinterpretation>
10 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.1"/>
11 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.0"/>
12 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.1/@parameters.1"/>
13 </partialrelationinterpretation>
14 <partialrelationinterpretation>
15 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.2"/>
16 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.0"/>
17 <param2 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.2/@parameters.1"/>
18 </partialrelationinterpretation>
19 <partialrelationinterpretation>
20 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.3"/>
21 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.0"/>
22 <param2 xsi:type="language:StringTypeReference" href="outputs/debug/generation.logicproblem#//@relations.3/@parameters.1"/>
23 </partialrelationinterpretation>
24 <partialrelationinterpretation>
25 <interpretationOf href="outputs/debug/generation.logicproblem#//@relations.4"/>
26 <param1 xsi:type="language:ComplexTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.0"/>
27 <param2 xsi:type="language:IntTypeReference" href="outputs/debug/generation.logicproblem#//@relations.4/@parameters.1"/>
28 </partialrelationinterpretation>
29 <newElements xsi:type="partialinterpretation:BooleanElement" name="true" valueSet="true" value="true"/>
30 <newElements xsi:type="partialinterpretation:BooleanElement" name="false" valueSet="true"/>
31 <newElements xsi:type="partialinterpretation:IntegerElement" name="1" valueSet="true" value="1"/>
32 <newElements xsi:type="partialinterpretation:IntegerElement" name="2" valueSet="true" value="2"/>
33 <newElements xsi:type="partialinterpretation:IntegerElement" name="3" valueSet="true" value="3"/>
34 <newElements xsi:type="partialinterpretation:IntegerElement" name="4" valueSet="true" value="4"/>
35 <newElements xsi:type="partialinterpretation:IntegerElement" name="5" valueSet="true" value="5"/>
36 <partialtypeinterpratation xsi:type="partialinterpretation:PartialBooleanInterpretation" elements="//@newElements.0 //@newElements.1"/>
37 <partialtypeinterpratation xsi:type="partialinterpretation:PartialIntegerInterpretation" elements="//@newElements.2 //@newElements.3 //@newElements.4 //@newElements.5 //@newElements.6"/>
38 <partialtypeinterpratation xsi:type="partialinterpretation:PartialRealInterpretation" elements="//@openWorldElements.0"/>
39 <partialtypeinterpratation xsi:type="partialinterpretation:PartialStringInterpretation" elements="//@openWorldElements.1"/>
40 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.0">
41 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.0"/>
42 </partialtypeinterpratation>
43 <partialtypeinterpratation xsi:type="partialinterpretation:PartialComplexTypeInterpretation" scopes="//@scopes.1">
44 <interpretationOf href="outputs/debug/generation.logicproblem#//@types.1"/>
45 </partialtypeinterpratation>
46 <openWorldElements xsi:type="partialinterpretation:RealElement" name="New Reals"/>
47 <openWorldElements xsi:type="partialinterpretation:StringElement" name="New Strings"/>
48 <openWorldElements name="New Objects"/>
49 <scopes targetTypeInterpretation="//@partialtypeinterpratation.4"/>
50 <scopes targetTypeInterpretation="//@partialtypeinterpratation.5"/>
51</partialinterpretation:PartialInterpretation>
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt
deleted file mode 100644
index 67589bd9..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/log.txt
+++ /dev/null
@@ -1 +0,0 @@
1Model generation finished
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml
deleted file mode 100644
index a187635b..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.gml
+++ /dev/null
@@ -1,916 +0,0 @@
1graph
2[
3 node
4 [
5 id 0
6 graphics
7 [
8 w 41.800000000000004
9 h 26
10 type "rectangle"
11 fill "#FFFFFF"
12 fill2 "#FFFFFF"
13 outline "#000000"
14 ]
15 LabelGraphics
16 [
17 text "true"
18 outline "#000000"
19 fill "#FFFFFF"
20 fontSize 16
21 fontName "Monospace"
22 autoSizePolicy "node_width"
23 anchor "t"
24 borderDistance 0.0
25 ]
26 LabelGraphics
27 [
28 text "
29 "
30 fontSize 14
31 fontName "Consolas"
32 alignment "left"
33 anchor "tl"
34 borderDistance 6
35 ]
36 ]
37
38 node
39 [
40 id 1
41 graphics
42 [
43 w 50.6
44 h 26
45 type "rectangle"
46 fill "#FFFFFF"
47 fill2 "#FFFFFF"
48 outline "#000000"
49 ]
50 LabelGraphics
51 [
52 text "false"
53 outline "#000000"
54 fill "#FFFFFF"
55 fontSize 16
56 fontName "Monospace"
57 autoSizePolicy "node_width"
58 anchor "t"
59 borderDistance 0.0
60 ]
61 LabelGraphics
62 [
63 text "
64 "
65 fontSize 14
66 fontName "Consolas"
67 alignment "left"
68 anchor "tl"
69 borderDistance 6
70 ]
71 ]
72
73 node
74 [
75 id 2
76 graphics
77 [
78 w 15.400000000000002
79 h 26
80 type "rectangle"
81 fill "#FFFFFF"
82 fill2 "#FFFFFF"
83 outline "#000000"
84 ]
85 LabelGraphics
86 [
87 text "1"
88 outline "#000000"
89 fill "#FFFFFF"
90 fontSize 16
91 fontName "Monospace"
92 autoSizePolicy "node_width"
93 anchor "t"
94 borderDistance 0.0
95 ]
96 LabelGraphics
97 [
98 text "
99 "
100 fontSize 14
101 fontName "Consolas"
102 alignment "left"
103 anchor "tl"
104 borderDistance 6
105 ]
106 ]
107
108 node
109 [
110 id 3
111 graphics
112 [
113 w 15.400000000000002
114 h 26
115 type "rectangle"
116 fill "#FFFFFF"
117 fill2 "#FFFFFF"
118 outline "#000000"
119 ]
120 LabelGraphics
121 [
122 text "2"
123 outline "#000000"
124 fill "#FFFFFF"
125 fontSize 16
126 fontName "Monospace"
127 autoSizePolicy "node_width"
128 anchor "t"
129 borderDistance 0.0
130 ]
131 LabelGraphics
132 [
133 text "
134 "
135 fontSize 14
136 fontName "Consolas"
137 alignment "left"
138 anchor "tl"
139 borderDistance 6
140 ]
141 ]
142
143 node
144 [
145 id 4
146 graphics
147 [
148 w 15.400000000000002
149 h 26
150 type "rectangle"
151 fill "#FFFFFF"
152 fill2 "#FFFFFF"
153 outline "#000000"
154 ]
155 LabelGraphics
156 [
157 text "3"
158 outline "#000000"
159 fill "#FFFFFF"
160 fontSize 16
161 fontName "Monospace"
162 autoSizePolicy "node_width"
163 anchor "t"
164 borderDistance 0.0
165 ]
166 LabelGraphics
167 [
168 text "
169 "
170 fontSize 14
171 fontName "Consolas"
172 alignment "left"
173 anchor "tl"
174 borderDistance 6
175 ]
176 ]
177
178 node
179 [
180 id 5
181 graphics
182 [
183 w 15.400000000000002
184 h 26
185 type "rectangle"
186 fill "#FFFFFF"
187 fill2 "#FFFFFF"
188 outline "#000000"
189 ]
190 LabelGraphics
191 [
192 text "4"
193 outline "#000000"
194 fill "#FFFFFF"
195 fontSize 16
196 fontName "Monospace"
197 autoSizePolicy "node_width"
198 anchor "t"
199 borderDistance 0.0
200 ]
201 LabelGraphics
202 [
203 text "
204 "
205 fontSize 14
206 fontName "Consolas"
207 alignment "left"
208 anchor "tl"
209 borderDistance 6
210 ]
211 ]
212
213 node
214 [
215 id 6
216 graphics
217 [
218 w 15.400000000000002
219 h 26
220 type "rectangle"
221 fill "#FFFFFF"
222 fill2 "#FFFFFF"
223 outline "#000000"
224 ]
225 LabelGraphics
226 [
227 text "5"
228 outline "#000000"
229 fill "#FFFFFF"
230 fontSize 16
231 fontName "Monospace"
232 autoSizePolicy "node_width"
233 anchor "t"
234 borderDistance 0.0
235 ]
236 LabelGraphics
237 [
238 text "
239 "
240 fontSize 14
241 fontName "Consolas"
242 alignment "left"
243 anchor "tl"
244 borderDistance 6
245 ]
246 ]
247
248 node
249 [
250 id 7
251 graphics
252 [
253 w 138.60000000000002
254 h 40
255 type "rectangle"
256 fill "#FFFFFF"
257 fill2 "#FFFFFF"
258 outline "#000000"
259 ]
260 LabelGraphics
261 [
262 text "null"
263 outline "#000000"
264 fill "#FFFFFF"
265 fontSize 16
266 fontName "Monospace"
267 autoSizePolicy "node_width"
268 anchor "t"
269 borderDistance 0.0
270 ]
271 LabelGraphics
272 [
273 text "
274 FamilyTree class
275 "
276 fontSize 14
277 fontName "Consolas"
278 alignment "left"
279 anchor "tl"
280 borderDistance 6
281 ]
282 ]
283
284 node
285 [
286 id 8
287 graphics
288 [
289 w 107.80000000000001
290 h 40
291 type "rectangle"
292 fill "#FFFFFF"
293 fill2 "#FFFFFF"
294 outline "#000000"
295 ]
296 LabelGraphics
297 [
298 text "null"
299 outline "#000000"
300 fill "#FFFFFF"
301 fontSize 16
302 fontName "Monospace"
303 autoSizePolicy "node_width"
304 anchor "t"
305 borderDistance 0.0
306 ]
307 LabelGraphics
308 [
309 text "
310 Member class
311 "
312 fontSize 14
313 fontName "Consolas"
314 alignment "left"
315 anchor "tl"
316 borderDistance 6
317 ]
318 ]
319
320 node
321 [
322 id 9
323 graphics
324 [
325 w 107.80000000000001
326 h 40
327 type "rectangle"
328 fill "#FFFFFF"
329 fill2 "#FFFFFF"
330 outline "#000000"
331 ]
332 LabelGraphics
333 [
334 text "null"
335 outline "#000000"
336 fill "#FFFFFF"
337 fontSize 16
338 fontName "Monospace"
339 autoSizePolicy "node_width"
340 anchor "t"
341 borderDistance 0.0
342 ]
343 LabelGraphics
344 [
345 text "
346 Member class
347 "
348 fontSize 14
349 fontName "Consolas"
350 alignment "left"
351 anchor "tl"
352 borderDistance 6
353 ]
354 ]
355
356 node
357 [
358 id 10
359 graphics
360 [
361 w 107.80000000000001
362 h 40
363 type "rectangle"
364 fill "#FFFFFF"
365 fill2 "#FFFFFF"
366 outline "#000000"
367 ]
368 LabelGraphics
369 [
370 text "null"
371 outline "#000000"
372 fill "#FFFFFF"
373 fontSize 16
374 fontName "Monospace"
375 autoSizePolicy "node_width"
376 anchor "t"
377 borderDistance 0.0
378 ]
379 LabelGraphics
380 [
381 text "
382 Member class
383 "
384 fontSize 14
385 fontName "Consolas"
386 alignment "left"
387 anchor "tl"
388 borderDistance 6
389 ]
390 ]
391
392 node
393 [
394 id 11
395 graphics
396 [
397 w 107.80000000000001
398 h 40
399 type "rectangle"
400 fill "#FFFFFF"
401 fill2 "#FFFFFF"
402 outline "#000000"
403 ]
404 LabelGraphics
405 [
406 text "null"
407 outline "#000000"
408 fill "#FFFFFF"
409 fontSize 16
410 fontName "Monospace"
411 autoSizePolicy "node_width"
412 anchor "t"
413 borderDistance 0.0
414 ]
415 LabelGraphics
416 [
417 text "
418 Member class
419 "
420 fontSize 14
421 fontName "Consolas"
422 alignment "left"
423 anchor "tl"
424 borderDistance 6
425 ]
426 ]
427
428 node
429 [
430 id 12
431 graphics
432 [
433 w 107.80000000000001
434 h 40
435 type "rectangle"
436 fill "#FFFFFF"
437 fill2 "#FFFFFF"
438 outline "#000000"
439 ]
440 LabelGraphics
441 [
442 text "null"
443 outline "#000000"
444 fill "#FFFFFF"
445 fontSize 16
446 fontName "Monospace"
447 autoSizePolicy "node_width"
448 anchor "t"
449 borderDistance 0.0
450 ]
451 LabelGraphics
452 [
453 text "
454 Member class
455 "
456 fontSize 14
457 fontName "Consolas"
458 alignment "left"
459 anchor "tl"
460 borderDistance 6
461 ]
462 ]
463
464 node
465 [
466 id 13
467 graphics
468 [
469 w 85.80000000000001
470 h 26
471 type "rectangle"
472 fill "#FFFFFF"
473 fill2 "#FFFFFF"
474 outline "#000000"
475 ]
476 LabelGraphics
477 [
478 text "New Reals"
479 outline "#000000"
480 fill "#FFFFFF"
481 fontSize 16
482 fontName "Monospace"
483 autoSizePolicy "node_width"
484 anchor "t"
485 borderDistance 0.0
486 ]
487 LabelGraphics
488 [
489 text "
490 "
491 fontSize 14
492 fontName "Consolas"
493 alignment "left"
494 anchor "tl"
495 borderDistance 6
496 ]
497 ]
498
499 node
500 [
501 id 14
502 graphics
503 [
504 w 103.4
505 h 26
506 type "rectangle"
507 fill "#FFFFFF"
508 fill2 "#FFFFFF"
509 outline "#000000"
510 ]
511 LabelGraphics
512 [
513 text "New Strings"
514 outline "#000000"
515 fill "#FFFFFF"
516 fontSize 16
517 fontName "Monospace"
518 autoSizePolicy "node_width"
519 anchor "t"
520 borderDistance 0.0
521 ]
522 LabelGraphics
523 [
524 text "
525 "
526 fontSize 14
527 fontName "Consolas"
528 alignment "left"
529 anchor "tl"
530 borderDistance 6
531 ]
532 ]
533
534 node
535 [
536 id 15
537 graphics
538 [
539 w 103.4
540 h 26
541 type "rectangle"
542 fill "#FFFFFF"
543 fill2 "#FFFFFF"
544 outline "#000000"
545 ]
546 LabelGraphics
547 [
548 text "New Objects"
549 outline "#000000"
550 fill "#FFFFFF"
551 fontSize 16
552 fontName "Monospace"
553 autoSizePolicy "node_width"
554 anchor "t"
555 borderDistance 0.0
556 ]
557 LabelGraphics
558 [
559 text "
560 "
561 fontSize 14
562 fontName "Consolas"
563 alignment "left"
564 anchor "tl"
565 borderDistance 6
566 ]
567 ]
568 edge
569 [
570 source 7
571 target 8
572 graphics
573 [
574 fill "#000000"
575 width 3
576 targetArrow "standard"
577 ]
578 LabelGraphics
579 [
580 text "members reference FamilyTree"
581 fontSize 14
582 fontName "Consolas"
583 configuration "AutoFlippingLabel"
584 model "six_pos"
585 position "thead"
586 ]
587 ]
588 edge
589 [
590 source 7
591 target 9
592 graphics
593 [
594 fill "#000000"
595 width 3
596 targetArrow "standard"
597 ]
598 LabelGraphics
599 [
600 text "members reference FamilyTree"
601 fontSize 14
602 fontName "Consolas"
603 configuration "AutoFlippingLabel"
604 model "six_pos"
605 position "thead"
606 ]
607 ]
608 edge
609 [
610 source 7
611 target 10
612 graphics
613 [
614 fill "#000000"
615 width 3
616 targetArrow "standard"
617 ]
618 LabelGraphics
619 [
620 text "members reference FamilyTree"
621 fontSize 14
622 fontName "Consolas"
623 configuration "AutoFlippingLabel"
624 model "six_pos"
625 position "thead"
626 ]
627 ]
628 edge
629 [
630 source 7
631 target 11
632 graphics
633 [
634 fill "#000000"
635 width 3
636 targetArrow "standard"
637 ]
638 LabelGraphics
639 [
640 text "members reference FamilyTree"
641 fontSize 14
642 fontName "Consolas"
643 configuration "AutoFlippingLabel"
644 model "six_pos"
645 position "thead"
646 ]
647 ]
648 edge
649 [
650 source 7
651 target 12
652 graphics
653 [
654 fill "#000000"
655 width 3
656 targetArrow "standard"
657 ]
658 LabelGraphics
659 [
660 text "members reference FamilyTree"
661 fontSize 14
662 fontName "Consolas"
663 configuration "AutoFlippingLabel"
664 model "six_pos"
665 position "thead"
666 ]
667 ]
668 edge
669 [
670 source 9
671 target 8
672 graphics
673 [
674 fill "#000000"
675 targetArrow "standard"
676 ]
677 LabelGraphics
678 [
679 text "children reference Member"
680 fontSize 14
681 fontName "Consolas"
682 configuration "AutoFlippingLabel"
683 model "six_pos"
684 position "thead"
685 ]
686 ]
687 edge
688 [
689 source 8
690 target 9
691 graphics
692 [
693 fill "#000000"
694 targetArrow "standard"
695 ]
696 LabelGraphics
697 [
698 text "children reference Member"
699 fontSize 14
700 fontName "Consolas"
701 configuration "AutoFlippingLabel"
702 model "six_pos"
703 position "thead"
704 ]
705 ]
706 edge
707 [
708 source 9
709 target 10
710 graphics
711 [
712 fill "#000000"
713 targetArrow "standard"
714 ]
715 LabelGraphics
716 [
717 text "children reference Member"
718 fontSize 14
719 fontName "Consolas"
720 configuration "AutoFlippingLabel"
721 model "six_pos"
722 position "thead"
723 ]
724 ]
725 edge
726 [
727 source 11
728 target 9
729 graphics
730 [
731 fill "#000000"
732 targetArrow "standard"
733 ]
734 LabelGraphics
735 [
736 text "children reference Member"
737 fontSize 14
738 fontName "Consolas"
739 configuration "AutoFlippingLabel"
740 model "six_pos"
741 position "thead"
742 ]
743 ]
744 edge
745 [
746 source 9
747 target 11
748 graphics
749 [
750 fill "#000000"
751 targetArrow "standard"
752 ]
753 LabelGraphics
754 [
755 text "children reference Member"
756 fontSize 14
757 fontName "Consolas"
758 configuration "AutoFlippingLabel"
759 model "six_pos"
760 position "thead"
761 ]
762 ]
763 edge
764 [
765 source 8
766 target 9
767 graphics
768 [
769 fill "#000000"
770 targetArrow "standard"
771 ]
772 LabelGraphics
773 [
774 text "parents reference Member"
775 fontSize 14
776 fontName "Consolas"
777 configuration "AutoFlippingLabel"
778 model "six_pos"
779 position "thead"
780 ]
781 ]
782 edge
783 [
784 source 9
785 target 8
786 graphics
787 [
788 fill "#000000"
789 targetArrow "standard"
790 ]
791 LabelGraphics
792 [
793 text "parents reference Member"
794 fontSize 14
795 fontName "Consolas"
796 configuration "AutoFlippingLabel"
797 model "six_pos"
798 position "thead"
799 ]
800 ]
801 edge
802 [
803 source 10
804 target 9
805 graphics
806 [
807 fill "#000000"
808 targetArrow "standard"
809 ]
810 LabelGraphics
811 [
812 text "parents reference Member"
813 fontSize 14
814 fontName "Consolas"
815 configuration "AutoFlippingLabel"
816 model "six_pos"
817 position "thead"
818 ]
819 ]
820 edge
821 [
822 source 9
823 target 11
824 graphics
825 [
826 fill "#000000"
827 targetArrow "standard"
828 ]
829 LabelGraphics
830 [
831 text "parents reference Member"
832 fontSize 14
833 fontName "Consolas"
834 configuration "AutoFlippingLabel"
835 model "six_pos"
836 position "thead"
837 ]
838 ]
839 edge
840 [
841 source 11
842 target 9
843 graphics
844 [
845 fill "#000000"
846 targetArrow "standard"
847 ]
848 LabelGraphics
849 [
850 text "parents reference Member"
851 fontSize 14
852 fontName "Consolas"
853 configuration "AutoFlippingLabel"
854 model "six_pos"
855 position "thead"
856 ]
857 ]
858 edge
859 [
860 source 8
861 target 6
862 graphics
863 [
864 fill "#000000"
865 targetArrow "standard"
866 ]
867 LabelGraphics
868 [
869 text "age attribute Member"
870 fontSize 14
871 fontName "Consolas"
872 configuration "AutoFlippingLabel"
873 model "six_pos"
874 position "thead"
875 ]
876 ]
877 edge
878 [
879 source 10
880 target 3
881 graphics
882 [
883 fill "#000000"
884 targetArrow "standard"
885 ]
886 LabelGraphics
887 [
888 text "age attribute Member"
889 fontSize 14
890 fontName "Consolas"
891 configuration "AutoFlippingLabel"
892 model "six_pos"
893 position "thead"
894 ]
895 ]
896 edge
897 [
898 source 11
899 target 3
900 graphics
901 [
902 fill "#000000"
903 targetArrow "standard"
904 ]
905 LabelGraphics
906 [
907 text "age attribute Member"
908 fontSize 14
909 fontName "Consolas"
910 configuration "AutoFlippingLabel"
911 model "six_pos"
912 position "thead"
913 ]
914 ]
915]
916
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png
deleted file mode 100644
index e99dc418..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.png
+++ /dev/null
Binary files differ
diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi
deleted file mode 100644
index c3ca6161..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/outputs/models/1.xmi
+++ /dev/null
@@ -1,8 +0,0 @@
1<?xml version="1.0" encoding="ASCII"?>
2<familytree:FamilyTree xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:familytree="http://www.example.org/familytree" xsi:schemaLocation="http://www.example.org/familytree inputs/familytree.ecore">
3 <members age="2" children="//@members.4" parents="//@members.4"/>
4 <members age="5" children="//@members.4" parents="//@members.4"/>
5 <members age="2" parents="//@members.4"/>
6 <members/>
7 <members children="//@members.0 //@members.1 //@members.2" parents="//@members.0 //@members.1"/>
8</familytree:FamilyTree>