aboutsummaryrefslogtreecommitdiffstats
path: root/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin
diff options
context:
space:
mode:
authorLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-05-17 01:58:13 -0400
committerLibravatar ArenBabikian <aren.babikian@mail.mcgill.ca>2020-05-17 01:58:13 -0400
commit48871e1be75169e4e3768a7c0c47791e02c7e634 (patch)
treecfcd4e4fdc0dea4f4b0102a610459ed7509f47f8 /Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin
parentAdjust Taxation model. (diff)
downloadVIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.tar.gz
VIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.tar.zst
VIATRA-Generator-48871e1be75169e4e3768a7c0c47791e02c7e634.zip
update measurements setup. make archives.
Diffstat (limited to 'Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin')
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl45
-rw-r--r--Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql361
2 files changed, 0 insertions, 406 deletions
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl
deleted file mode 100644
index 66ae728e..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/NewOCLFileX.ocl
+++ /dev/null
@@ -1,45 +0,0 @@
1import 'file:/Users/Aren Babikian/git/VIATRA-Attributes/case.study.a.model/model/Taxation.ecore'
2
3package Taxation
4
5--context Income inv inv8:
6--if(not self.income_type.oclIsTypeOf(Employment_Income)) then
7--self.details->forAll(d| d.distance = 0)
8--else
9--self.details->forAll(d| d.distance >= 0.0 and d.distance <= 100)
10--endif
11--
12--context Legal_Union_Record inv inv490:
13--self.individual_A.oclIsKindOf(Tax_Payer)
14--
15--context Legal_Union_Record inv inv491:
16--self.individual_B->forAll(i | i.oclIsKindOf(Physical_Person) )
17--
18--context Legal_Union_Record inv inv492:
19--self.individual_B->forAll(i | not i.oclIsTypeOf(Dependent) )
20--
21--context Legal_Union_Record inv inv493:
22--self.individual_A <> self.individual_B
23--
24--context Tax_Payer inv inv13:
25-- self.addresses->exists( hab_add:Address | hab_add.oclIsTypeOf(Habitual_Address) = true and hab_add.country=Country::ZZ)
26--implies
27-- self.oclIsTypeOf(Resident_Tax_Payer)
28
29 context Income inv inv7:
30let val:Real =self.details->asOrderedSet()->first().distance in
31self.details->forAll(d: Income_Detail|d.distance = val)
32
33--context External_Allowance inv inv15:
34--let child:Dependent = self.person in
35--let h:Household = Household.allInstances()->select(children->includes(child))->asOrderedSet()->first() in
36--let t1:Set(Physical_Person) = Set{h.parents.individual_A}->union(h.parents.individual_B)->select(oclIsKindOf(Tax_Payer)) in
37--if(t1->size()=1) then
38--self.reciver = t1->asOrderedSet()->first()
39--else
40--self.reciver = t1->asOrderedSet()->at(2) or self.reciver = t1->asOrderedSet()->at(1)
41--endif
42
43
44
45endpackage \ No newline at end of file
diff --git a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql b/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql
deleted file mode 100644
index 05bffd2d..00000000
--- a/Tests/MODELS2020-CaseStudies/case.study.pledge.run/bin/queries/case_study_A.vql
+++ /dev/null
@@ -1,361 +0,0 @@
1package queries
2
3import "http:///TaxCard.ecore"
4
5//AttributeRemoved -> DF
6
7//inv1-External_Allowance.amount is a derived feature (TODOcheck)
8//inv2-Tax_Card.income.taxPayer.taxesDue is a derived feature (TODOcheck)
9
10//inv3-multiplicity adjusted
11@Constraint(message = "inv03", severity = "error", key = {dep})
12pattern inv03(dep : Dependent) {
13 find x_inv03_eligAll(dep);
14 neg find x_inv03_hasAll(dep);
15} or {
16 Dependent.birth_year(dep, by);
17 check(2018-by > 21);
18 Dependent.continued_studies(dep, false);
19 Dependent.allowances(dep, _);
20}
21pattern x_inv03_eligAll(dep : Dependent) {
22 Dependent.birth_year(dep, by);
23 check(2018-by <= 21);
24} or {
25 Dependent.continued_studies(dep, true);
26}
27pattern x_inv03_hasAll(dep : Dependent) {
28 Dependent.allowances(dep, _);
29}
30
31//inv5 - oclIsTypeOf - handled here
32@Constraint(message = "inv05", severity = "error", key = {inc})
33pattern inv05(inc : Income) {
34 //income_type: None
35 neg find x_inv08_noType(inc);
36 Income.details.worked_days(inc, wd);
37 check(wd != 0);
38} or {
39 //income_type: Not Employment_Income
40 Income.income_type(inc, type);
41 neg find x_inv08_notEI(type);
42 Income.details.worked_days(inc, wd);
43 check(wd != 0);
44} or {
45 //income_type: Employment Income
46 Income.income_type(inc, type);
47 Employment_Income(type);
48 find x_inv05_inRange(inc);
49}
50pattern x_inv05_inRange(inc : Income) {
51 Income.details.worked_days(inc, wd);
52 check(wd < 1);
53} or {
54 Income.details.worked_days(inc, wd);
55 check(wd > 25);
56}
57
58//inv6-Does not make sens, but directly from OCL
59//first part of or from definition of getAge()
60@Constraint(message = "inv06", severity = "error", key = {tp})
61pattern inv06(tp : Tax_Payer) {
62 Tax_Payer.dependents(tp, _);
63 Tax_Payer.birth_year(tp, TPBy);
64 check(2018 - TPBy > 2018-16);
65} or {
66 Tax_Payer.birth_year(tp, TPBy);
67 Tax_Payer.dependents(tp, dep);
68 Dependent.birth_year(dep, DepBy);
69 check(2018-DepBy <= 2018-TPBy-16);
70}
71
72//inv7-OrderedSet
73@Constraint(message = "inv07", severity = "error", key = {inc})
74pattern inv07(inc : Income) {
75 Income.details.distance(inc, d1);
76 Income.details.distance(inc, d2);
77 check(d1 != d2);//compare values
78}
79
80//user_complete_details-AttributeRemoved
81
82//inv8 - oclIsTypeOf - handled here
83@Constraint(message = "inv08", severity = "error", key = {inc})
84pattern inv08(inc : Income) {
85 //income_type: None
86 neg find x_inv08_noType(inc);
87 Income.details.distance(inc, dist);
88 check(dist != 0);
89} or {
90 //income_type: Not Employment_Income
91 Income.income_type(inc, type);
92 neg find x_inv08_notEI(type);
93 Income.details.distance(inc, dist);
94 check(dist != 0);
95} or {
96 //income_type: Employment Income
97 Income.income_type(inc, type);
98 Employment_Income(type);
99 find x_inv08_inRange(inc);
100}
101pattern x_inv08_notEI(type : Employment_Income) {
102 Employment_Income(type);
103}
104pattern x_inv08_noType(inc : Income) {
105 Income.income_type(inc, _);
106}
107pattern x_inv08_inRange(inc : Income) {
108 Income.details.distance(inc, dist);
109 check(dist < 0);
110} or {
111 Income.details.distance(inc, dist);
112 check(dist > 100);
113}
114//inv9-DerivedFeature
115
116//inv10-Ordered Sets
117@Constraint(message = "inv10", severity = "error", key = {inc})
118pattern inv10(inc : Income) {
119 Income.details.amount(inc, a1);
120 Income.details.amount(inc, a2);
121 check(a1 != a2);//compare values
122}
123
124//inv11-attributes-handled by multiplicity
125@Constraint(message = "inv11", severity = "error", key = {exp})
126pattern inv11(exp : Expense) {
127 find x_inv11_incOver100(exp);
128 find x_inv11_incNotOver100(exp);
129}
130pattern x_inv11_incOver100(exp : Expense) {
131 Expense.income.income_amount(exp, incVal);
132 check(incVal / 2 > 50);
133
134} or {
135 Expense.declared_amount(exp, decl);
136 check(decl != 50);
137}
138pattern x_inv11_incNotOver100(exp : Expense) {
139 Expense.income.income_amount(exp, incVal);
140 check(incVal / 2 <= 50);
141} or {
142 Expense.declared_amount(exp, decl);
143 check(decl < 50);
144} or {
145 Expense.income.income_amount(exp, incVal);
146 Expense.declared_amount(exp, decl);
147 check(decl > incVal/2);
148}
149
150//inv12
151//exists - handled logically
152@Constraint(message = "inv12", severity = "error", key = {tp})
153pattern inv12(tp : Tax_Payer) {
154 Tax_Payer.addresses(tp, hab_add);
155 Habitual_Address(hab_add);
156 neg find x_inv12_notZZ(hab_add);
157 Tax_Payer.incomes(tp, inc);
158 Local_Income(inc);
159 neg find x_inv12_notNonRes(tp);
160}
161pattern x_inv12_notNonRes(tp : Non_Resident_Tax_Payer) {
162 Non_Resident_Tax_Payer(tp);
163}
164pattern x_inv12_notZZ(hab_add : Habitual_Address) {
165 Address.country(hab_add, ::ZZ);
166}
167
168//inv13 - Added new containment rel Phys_Pers->Address
169//exists - handled logically
170@Constraint(message = "inv13", severity = "error", key = {tp})
171pattern inv13(tp : Tax_Payer) {
172 Tax_Payer.addresses(tp, hab_add);
173 Habitual_Address(hab_add);
174 Address.country(hab_add, ::ZZ);
175 neg find x_inv13(tp);
176}
177pattern x_inv13(tp : Resident_Tax_Payer) {
178 Resident_Tax_Payer(tp);
179}
180
181//inv14-MultiplicityChanged
182
183//inv15-Ordered Sets in assignment if block
184//ERROR if no household object
185//@Constraint(message = "inv15", severity = "error", key = {ea})
186//pattern inv15(ea : External_Allowance) {
187// neg find x_inv15(ea);
188//}
189//pattern x_inv15(ea : External_Allowance) {
190// External_Allowance.person(ea, child);
191// Household.children(h, child);//only one due to multiplicity
192// Household.parents.individual_A(h, iA);
193// Tax_Payer(iA);
194// External_Allowance.reciver(ea, iA);
195//} or {
196// External_Allowance.person(ea, child);
197// Household.children(h, child);//only one due to multiplicity
198// Household.parents.individual_B(h, iB);
199// Tax_Payer(iB);
200// External_Allowance.reciver(ea, iB);
201//}
202
203@Constraint(message = "inv15", severity = "error", key = {ea})
204pattern inv15(ea : External_Allowance) {
205 External_Allowance.person(ea, child);
206 Household.children(h, child);//only one due to multiplicity
207 Household.parents.individual_A(h, iA);
208 Household.parents.individual_B(h, iB);
209
210 Dependant(iA)
211 Dependant(iB)
212 neg find x_inv15(ea);
213}
214pattern x_inv15(ea : External_Allowance) {
215
216 Tax_Payer(iA);
217 External_Allowance.reciver(ea, iA);
218} or {
219 External_Allowance.person(ea, child);
220 Household.children(h, child);//only one due to multiplicity
221
222 Tax_Payer(iB);
223 External_Allowance.reciver(ea, iB);
224}
225
226//inv16-Tax_Card.tax_card_type is a derived feature
227
228//inv17-attribute-handled by multiplicity
229@Constraint(message = "inv17", severity = "error", key = {lur})
230pattern inv17(lur : Legal_Union_Record) {
231 Legal_Union_Record.start_year(lur, sy);
232 check(sy < 1950);
233} or {
234 Legal_Union_Record.start_year(lur, sy);
235 check(sy > 2018);
236}
237
238//inv18-MultiplicityChecked
239//inv19-MultiplicityChecked
240
241//inv20-Useless constraint since both edges are containment (TODOCheck)
242//OclIsUndefined-Handled by multiplicity
243@Constraint(message = "inv20", severity = "error", key = {lur})
244pattern inv20(lur : Legal_Union_Record) {
245 Legal_Union_Record.individual_A(lur, iA);
246 Legal_Union_Record.individual_B(lur, iB);
247 iA == iB;
248}
249//inv21-MultiplicityChecked
250//inv22-MultiplicityChecked
251//inv23-MultiplicityChecked
252//inv24-MultiplicityChecked
253//inv25-MultiplicityChecked
254//inv26-MultiplicityChanged
255//inv27-dupOfInv24
256//inv28-dubOfInv23
257//inv29-MultiplicityChanged
258//inv30-AttributeRemoved
259//inv31-AttributeRemoved
260//inv32-AttributeRemoved
261
262//inv33-attribute-handled by multiplicity
263@Constraint(message = "inv33", severity = "error", key = {p})
264pattern inv33(p : Physical_Person) {
265 Physical_Person.birth_year(p, by);
266 check(2018-by < 0);
267} or {
268 Physical_Person.birth_year(p, by);
269 check(2018-by > 100);
270}
271
272//inv34-attribute-handled by multiplicity
273@Constraint(message = "inv34", severity = "error", key = {p})
274pattern inv34(p : Physical_Person) {
275 Physical_Person.birth_month(p, birthMonth);
276 check(birthMonth < 1);
277} or {
278 Physical_Person.birth_month(p, birthMonth);
279 check(birthMonth > 12);
280}
281
282//inv35-attribute-handled by multiplicity
283@Constraint(message = "inv35", severity = "error", key = {p})
284pattern inv35(p : Physical_Person) {
285 Physical_Person.birth_day(p, birthDay);
286 check(birthDay < 1);
287} or {
288 Physical_Person.birth_day(p, birthDay);
289 check(birthDay > 28);
290}
291
292//inv36-AttributeRemoved
293//inv37-AttributeRemoved
294//inv38-AttributeRemoved
295//inv39-AttributeRemoved
296//inv40-AttributeRemoved
297//inv41-AttributeRemoved
298//inv42-AttributeRemoved
299//inv43-AttributeRemoved
300//inv44-AttributeRemoved
301//inv45-AttributeRemoved
302//inv46-AttributeRemoved
303
304//inv47-attributes-handled by multiplicity
305@Constraint(message = "inv47", severity = "error", key = {lur})
306pattern inv47(lur : Legal_Union_Record) {
307 Legal_Union_Record.end_year(lur, endY);
308 Legal_Union_Record.start_year(lur, startY);
309 neg find x_inv47(lur);
310 check(startY >= endY);
311} or {
312 Legal_Union_Record.end_year(lur, endY);
313 Legal_Union_Record.start_year(lur, startY);
314 check(endY!= -1);
315 check(startY >= endY);
316}
317pattern x_inv47(lur : Legal_Union_Record) {
318 Legal_Union_Record.separation_cause(lur, ::NONE);
319}
320
321//inv48-attributes-handled by multiplicity
322@Constraint(message = "inv48", severity = "error", key = {p})
323pattern inv48(p : Physical_Person) {
324 Physical_Person.disability_percentage(p, disPer);
325 check(disPer > 1.0);
326} or {
327 Physical_Person.disability_percentage(p, disPer);
328 check(disPer < 0.0);
329} or {
330 Physical_Person.disability_type(p, ::NONE);
331 Physical_Person.disability_percentage(p, disPer);
332 check(disPer != 0.0);
333} or {
334 neg find x_inv48(p);
335 Physical_Person.disability_percentage(p, disPer);
336 check(disPer == 0.0);
337}
338pattern x_inv48(p : Physical_Person) {
339 Physical_Person.disability_type(p, ::NONE);
340}
341
342//inv49-OclKindOf-handled by multiplicity
343@Constraint(message = "inv49", severity = "error", key = {lur})
344pattern inv49_A(lur : Legal_Union_Record) {
345 Legal_Union_Record.individual_A(lur, i);
346 Legal_Union_Record.individual_B(lur, i);
347}
348//inv49-OclKindOf-handled by multiplicity
349@Constraint(message = "inv49", severity = "error", key = {lur})
350pattern inv49_B(lur : Legal_Union_Record) {
351 Legal_Union_Record.individual_A(lur, i);
352 Dependent(i);
353} or {
354 Legal_Union_Record.individual_B(lur, i);
355 Dependent(i);
356}
357
358//inv50-MultiplicityChecked
359//inv51-MultiplicityChecked
360//inv52-MultiplicityChecked
361//inv53-MultiplicityChecked \ No newline at end of file