From e44d27fde5c3b6c933ea3de33781f6ad03d6545b Mon Sep 17 00:00:00 2001 From: ArenBabikian Date: Wed, 6 May 2020 16:16:57 -0400 Subject: Adjustments to FamilyTree and Pledge Case studies --- .../src/queries/familyTreeConstraints.vql | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src') diff --git a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql index 1b9b6659..a204443a 100644 --- a/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql +++ b/Tests/MODELS2020-CaseStudies/case.study.familyTree.run/src/queries/familyTreeConstraints.vql @@ -9,14 +9,25 @@ pattern memberIsItsOwnParent(m: Member) = { m == p; } -//@Constraint(message="parentTooYoung", severity="error", key={m, p}) -//pattern parentTooYoung(m: Member, p: Member) = { -// FamilyTree.members(_, m); -// Member.parents(m, p); -// Member.age(m, mAge); -// Member.age(p, pAge); -// check (mAge <= (pAge + 12)); -//} +@Constraint(message="twoMembersHaveNoParent", severity="error", key={m1, m2}) +pattern twoMembersHaveNoParent(m1:Member, m2:Member) = { + neg find memberHasParent(m1); + neg find memberHasParent(m2); + m1 != m2; +} + +pattern memberHasParent(m: Member) = { + Member.parents(m, _); +} + +@Constraint(message="parentTooYoung", severity="error", key={m, p}) +pattern parentTooYoung(m: Member, p: Member) = { + FamilyTree.members(_, m); + Member.parents(m, p); + Member.age(m, mAge); + Member.age(p, pAge); + check (mAge <= (pAge + 12)); +} -- cgit v1.2.3-70-g09d2