aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/hu.bme.mit.inf.dslreasoner.domains.alloyexamples/patterns/hu/bme/mit/inf/dslreasoner/domains/alloyexamples/Ecore.vql
blob: 16c24d05b8f9fbc8adb5ccdd5b9a98a6712b9887 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package hu.bme.mit.inf.dslreasoner.domains.alloyexamples

import epackage "http://www.eclipse.org/emf/2002/Ecore"

pattern directSupertype(a: EClass, b:EClass) {
	EClass.eSuperTypes(a,b);
}

@Constraint(key={a}, severity="error", message="error")
pattern loopInInheritence(a: EClass) {
	find directSupertype+(a,a);
}

pattern unsat_subpackage(a: EPackage, b: EPackage) {
	EPackage.eSubpackages(a, b);
}

@Constraint(key={p}, severity="error", message="error")
pattern unsat_loopInInheritance(p: EPackage) {
	neg find unsat_subpackage(_, p);
	neg find loopInInheritence(_);
}

pattern opposite(a:EReference, b: EReference) {
	EReference.eOpposite(a,b);
}
@Constraint(key={a}, severity="error", message="error")
pattern oppositeDifferentClass(a:EReference) {
	EReference.eOpposite(a,b);
	EReference.eContainingClass(a,aContaining);
	EReference.eType(b,bTarget);
	aContaining != bTarget;
}

@Constraint(key={a}, severity="error", message="error")
pattern nonSymmetricOpposite(a:EReference, b:EReference) {
	find opposite(a,b);
	neg find opposite(b,a);
}