aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als')
-rw-r--r--Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als203
1 files changed, 203 insertions, 0 deletions
diff --git a/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als
new file mode 100644
index 00000000..16ff4006
--- /dev/null
+++ b/Tests/ca.mcgill.ecse.dslreasoner.standalone.test/outputs/fam/debug/problem.als
@@ -0,0 +1,203 @@
1one sig util'language {
2 util'root : one type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))),
3 util'contains : (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart)))))))))) lone->set (type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))))
4}
5abstract sig util'Object {
6}
7sig type'FunctionalElement'class in util'Object {
8 interface'reference'FunctionalElement : lone type'FunctionalInterface'class,
9 parent'reference'FunctionalElement : lone type'Function'class
10}
11sig type'FunctionalArchitectureModel'class in util'Object {
12 rootElements'reference'FunctionalArchitectureModel : set type'FunctionalElement'class
13}
14sig type'Function'class in type'FunctionalElement'class {
15 subElements'reference'Function : set type'FunctionalElement'class
16}
17sig type'FAMTerminator'class in util'Object {
18 data'reference'FAMTerminator : lone type'FunctionalData'class
19}
20sig type'InformationLink'class in util'Object {
21 from'reference'InformationLink : lone type'FunctionalOutput'class,
22 to'reference'InformationLink : one type'FunctionalInput'class
23}
24sig type'FunctionalInterface'class in util'Object {
25 data'reference'FunctionalInterface : set type'FunctionalData'class,
26 element'reference'FunctionalInterface : lone type'FunctionalElement'class
27}
28sig type'FunctionalInput'class in type'FunctionalData'class {
29 IncomingLinks'reference'FunctionalInput : set type'InformationLink'class
30}
31sig type'FunctionalOutput'class in type'FunctionalData'class {
32 outgoingLinks'reference'FunctionalOutput : set type'InformationLink'class
33}
34sig type'FunctionalData'class in util'Object {
35 terminator'reference'FunctionalData : lone type'FAMTerminator'class,
36 interface'reference'FunctionalData : lone type'FunctionalInterface'class
37}
38sig type'FunctionType'enum in util'Object {
39}
40sig type'FunctionalArchitectureModel'class'DefinedPart in type'FunctionalArchitectureModel'class {
41}
42sig type'FunctionalArchitectureModel'class'UndefinedPart in type'FunctionalArchitectureModel'class {
43}
44one sig element'o'1 in type'FunctionalArchitectureModel'class'DefinedPart {
45}
46one sig element'Root'literal'FunctionType,
47element'Intermediate'literal'FunctionType,
48element'Leaf'literal'FunctionType in type'FunctionType'enum {
49}
50pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [parameter'T: type'FAMTerminator'class, parameter'I: type'InformationLink'class] {
51 (some variable'Out: type'FunctionalOutput'class { parameter'I in variable'Out.outgoingLinks'reference'FunctionalOutput && parameter'T in variable'Out.terminator'reference'FunctionalData }) || (some variable'In: type'FunctionalInput'class { variable'In in parameter'I.to'reference'InformationLink && (variable'In in type'FunctionalInput'class && parameter'T in variable'In.terminator'reference'FunctionalData) })
52}
53pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [parameter'This: type'Function'class, parameter'Target: type'FunctionType'enum] {
54 (some variable'Model: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ] && parameter'Target = element'Root'literal'FunctionType }) || ((all variable'Child: type'Function'class, variable'Model: type'FunctionalArchitectureModel'class { parameter'This in type'Function'class && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ]) && (! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [ variable'Model , parameter'This ]) && parameter'Target = element'Leaf'literal'FunctionType)) }) || (some variable'Par: type'Function'class, variable'Child: type'Function'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ parameter'This , variable'Par ] && (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [ variable'Child , parameter'This ] && parameter'Target = element'Intermediate'literal'FunctionType) }))
55}
56pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'rootElements [parameter'Model: type'FunctionalArchitectureModel'class, parameter'Root: type'Function'class] {
57 parameter'Root in type'Function'class && parameter'Root in parameter'Model.rootElements'reference'FunctionalArchitectureModel
58}
59pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'parent [parameter'Func: type'Function'class, parameter'Par: type'Function'class] {
60 parameter'Func in type'Function'class && (parameter'Par in parameter'Func.parent'reference'FunctionalElement && parameter'Par in type'Function'class)
61}
62pred pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [parameter'This: type'FunctionalElement'class, parameter'Target: type'FunctionalArchitectureModel'class] {
63 parameter'This in type'FunctionalElement'class && parameter'Target in type'FunctionalArchitectureModel'class
64}
65fact typedefinition'FunctionType'enum {
66 type'FunctionType'enum = element'Root'literal'FunctionType + (element'Intermediate'literal'FunctionType + element'Leaf'literal'FunctionType)
67}
68fact typedefinition'FunctionalArchitectureModel'class'DefinedPart {
69 type'FunctionalArchitectureModel'class'DefinedPart = element'o'1
70}
71fact typeElementsUnique'FunctionType'enum {
72 element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1))))
73}
74fact typeElementsUnique'FunctionalArchitectureModel'class'DefinedPart {
75 element'Root'literal'FunctionType != element'Intermediate'literal'FunctionType && (element'Root'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Root'literal'FunctionType != element'o'1 && (element'Intermediate'literal'FunctionType != element'Leaf'literal'FunctionType && (element'Intermediate'literal'FunctionType != element'o'1 && element'Leaf'literal'FunctionType != element'o'1))))
76}
77fact abstract'FunctionalElement'class {
78 type'FunctionalElement'class = type'Function'class
79}
80fact abstract'FunctionalArchitectureModel'class {
81 type'FunctionalArchitectureModel'class = type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart
82}
83fact abstract'FunctionalData'class {
84 type'FunctionalData'class = type'FunctionalInput'class + type'FunctionalOutput'class
85}
86fact ObjectTypeDefinition {
87 util'Object = type'FunctionalElement'class + (type'FunctionalArchitectureModel'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalData'class + type'FunctionType'enum)))))
88}
89fact common'types'FunctionalArchitectureModel'class'FunctionalElement'class {
90 type'FunctionalArchitectureModel'class & type'FunctionalElement'class = none
91}
92fact common'types'FAMTerminator'class'FunctionalElement'class {
93 type'FAMTerminator'class & type'FunctionalElement'class = none
94}
95fact common'types'FAMTerminator'class'FunctionalArchitectureModel'class {
96 type'FAMTerminator'class & type'FunctionalArchitectureModel'class = none
97}
98fact common'types'InformationLink'class'FunctionalElement'class {
99 type'InformationLink'class & type'FunctionalElement'class = none
100}
101fact common'types'InformationLink'class'FunctionalArchitectureModel'class {
102 type'InformationLink'class & type'FunctionalArchitectureModel'class = none
103}
104fact common'types'InformationLink'class'FAMTerminator'class {
105 type'InformationLink'class & type'FAMTerminator'class = none
106}
107fact common'types'FunctionalInterface'class'FunctionalElement'class {
108 type'FunctionalInterface'class & type'FunctionalElement'class = none
109}
110fact common'types'FunctionalInterface'class'FunctionalArchitectureModel'class {
111 type'FunctionalInterface'class & type'FunctionalArchitectureModel'class = none
112}
113fact common'types'FunctionalInterface'class'FAMTerminator'class {
114 type'FunctionalInterface'class & type'FAMTerminator'class = none
115}
116fact common'types'FunctionalInterface'class'InformationLink'class {
117 type'FunctionalInterface'class & type'InformationLink'class = none
118}
119fact common'types'FunctionalData'class'FunctionalElement'class {
120 type'FunctionalData'class & type'FunctionalElement'class = none
121}
122fact common'types'FunctionalData'class'FunctionalArchitectureModel'class {
123 type'FunctionalData'class & type'FunctionalArchitectureModel'class = none
124}
125fact common'types'FunctionalData'class'FAMTerminator'class {
126 type'FunctionalData'class & type'FAMTerminator'class = none
127}
128fact common'types'FunctionalData'class'InformationLink'class {
129 type'FunctionalData'class & type'InformationLink'class = none
130}
131fact common'types'FunctionalData'class'FunctionalInterface'class {
132 type'FunctionalData'class & type'FunctionalInterface'class = none
133}
134fact common'types'FunctionType'enum'FunctionalElement'class {
135 type'FunctionType'enum & type'FunctionalElement'class = none
136}
137fact common'types'FunctionType'enum'FunctionalArchitectureModel'class {
138 type'FunctionType'enum & type'FunctionalArchitectureModel'class = none
139}
140fact common'types'FunctionType'enum'FAMTerminator'class {
141 type'FunctionType'enum & type'FAMTerminator'class = none
142}
143fact common'types'FunctionType'enum'InformationLink'class {
144 type'FunctionType'enum & type'InformationLink'class = none
145}
146fact common'types'FunctionType'enum'FunctionalInterface'class {
147 type'FunctionType'enum & type'FunctionalInterface'class = none
148}
149fact common'types'FunctionType'enum'FunctionalData'class {
150 type'FunctionType'enum & type'FunctionalData'class = none
151}
152fact common'types'FunctionalArchitectureModel'class'UndefinedPart'FunctionalArchitectureModel'class'DefinedPart {
153 type'FunctionalArchitectureModel'class'UndefinedPart & type'FunctionalArchitectureModel'class'DefinedPart = none
154}
155fact common'types'FunctionalOutput'class'FunctionalInput'class {
156 type'FunctionalOutput'class & type'FunctionalInput'class = none
157}
158fact util'containmentDefinition {
159 util'language.util'contains = interface'reference'FunctionalElement + (rootElements'reference'FunctionalArchitectureModel + (subElements'reference'Function + (data'reference'FunctionalInterface + (outgoingLinks'reference'FunctionalOutput + terminator'reference'FunctionalData))))
160}
161fact util'noParentForRoot {
162 no parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->(util'language.util'root) in util'language.util'contains }
163}
164fact util'atLeastOneParent {
165 all child: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { child = util'language.util'root || (some parent: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { parent->child in util'language.util'contains }) }
166}
167fact util'noCircularContainment {
168 no circle: type'FunctionalArchitectureModel'class + (type'FunctionalData'class + (type'Function'class + (type'FAMTerminator'class + (type'InformationLink'class + (type'FunctionalInterface'class + (type'FunctionalElement'class + (type'FunctionalInput'class + (type'FunctionalOutput'class + (type'FunctionalArchitectureModel'class'DefinedPart + type'FunctionalArchitectureModel'class'UndefinedPart))))))))) { circle->circle in ^ (util'language.util'contains) }
169}
170fact lowerMultiplicity'model'FunctionalElement {
171 all src: type'FunctionalElement'class { some trg'1: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] } }
172}
173fact upperMultiplicity'model'FunctionalElement {
174 all src: type'FunctionalElement'class, trg'1: type'FunctionalArchitectureModel'class, trg'2: type'FunctionalArchitectureModel'class { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'model [ src , trg'2 ] => ! (trg'1 != trg'2) }
175}
176fact oppositeReference'interface'FunctionalElement {
177 interface'reference'FunctionalElement = ~ element'reference'FunctionalInterface
178}
179fact oppositeReference'parent'FunctionalElement {
180 parent'reference'FunctionalElement = ~ subElements'reference'Function
181}
182fact oppositeReference'data'FAMTerminator {
183 data'reference'FAMTerminator = ~ terminator'reference'FunctionalData
184}
185fact oppositeReference'from'InformationLink {
186 from'reference'InformationLink = ~ outgoingLinks'reference'FunctionalOutput
187}
188fact oppositeReference'to'InformationLink {
189 to'reference'InformationLink = ~ IncomingLinks'reference'FunctionalInput
190}
191fact oppositeReference'data'FunctionalInterface {
192 data'reference'FunctionalInterface = ~ interface'reference'FunctionalData
193}
194fact lowerMultiplicity'type'Function {
195 all src: type'Function'class { some trg'1: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] } }
196}
197fact upperMultiplicity'type'Function {
198 all src: type'Function'class, trg'1: type'FunctionType'enum, trg'2: type'FunctionType'enum { pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'1 ] && pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'type [ src , trg'2 ] => ! (trg'1 != trg'2) }
199}
200fact errorpattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation {
201 all p0: type'FAMTerminator'class, p1: type'InformationLink'class { ! (pattern'ca'mcgill'ecse'dslreasoner'standalone'test'fam'queries'terminatorAndInformation [ p0 , p1 ]) }
202}
203run { } for exactly 5 util'Object , 31 Int , exactly 0 String \ No newline at end of file