From ac3d399075bda8c77a74a4553ee7b7217a50734c Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Wed, 21 Jun 2017 18:39:47 +0200 Subject: Added missing types: exit state, final state and choice --- .../partialsnapshot_mavo/yakindu/patterns.vql | 110 +++++++++++++-------- 1 file changed, 70 insertions(+), 40 deletions(-) (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner') diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql index afee1332..e964cfc7 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.yakindu.sgraph/queries/hu/bme/mit/inf/dslreasoner/partialsnapshot_mavo/yakindu/patterns.vql @@ -2,6 +2,10 @@ package hu.bme.mit.inf.dslreasoner.partialsnapshot_mavo.yakindu import epackage "hu.bme.mit.inf.yakindumm" +///////// +// Entry +///////// + pattern entryInRegion(r1 : Region, e1 : Entry) { Region.vertices(r1, e1); } @@ -40,21 +44,64 @@ pattern multipleTransitionFromEntry(e : Entry, t1 : Transition, t2: Transition) t1!=t2; } +///////// +// Exit +///////// -@Constraint(severity="error", message="error", key = {s}) -pattern hasNoOutgoing(s : Synchronization) { - neg find transition(_, s, _); +@Constraint(severity="error", message="error", key = {e}) +pattern outgoingFromExit(t : Transition, e : Exit) { + find transition(t, e, _); } -@Constraint(severity="error", message="error", key = {s}) -pattern hasNoIncoming(s : Synchronization) { - neg find transition(_, _, s); +///////// +// Final +///////// + +@Constraint(severity="error", message="error", key = {f}) +pattern outgoingFromFinal(t : Transition, f : FinalState) { + find transition(t, f, _); } +///////// +// State vs Region +///////// + +@Constraint(severity="error", message="error", key = {region}) +pattern noStateInRegion(region: Region) { + neg find StateInRegion(region,_); +} pattern StateInRegion(region: Region, state: State) { Region.vertices(region,state); } +///////// +// Choice +///////// + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoOutgoing(c : Choice) { + neg find transition(_, c, _); +} + +@Constraint(severity="error", message="error", key = {c}) +pattern choiceHasNoIncoming(c: Choice) { + neg find transition(_, _, c); +} + +///////// +// Synchronization +///////// + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoOutgoing(s : Synchronization) { + neg find transition(_, s, _); +} + +@Constraint(severity="error", message="error", key = {s}) +pattern synchHasNoIncoming(s : Synchronization) { + neg find transition(_, _, s); +} + @Constraint(severity="error", message="error", key = {s}) pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Vertex) { find transition(t1, v1, s); @@ -70,11 +117,6 @@ pattern SynchronizedIncomingInSameRegion(s : Synchronization, v1 : Vertex, v2 : Region.vertices(r, v2); } -@Constraint(severity="error", message="error", key = {region}) -pattern noStateInRegion(region: Region) { - neg find StateInRegion(region,_); -} - @Constraint(severity="error", message="error", key = {s}) pattern notSynchronizingStates(s : Synchronization) { neg find hasMultipleOutgoingTrainsition(s); @@ -142,7 +184,9 @@ pattern hasMultipleRegions(composite: CompositeElement) { region1 != region2; } -// multiplicity constraints +/** + * Simplifying model generation + */ @Constraint(severity="error", message="error", key = {s}) pattern synchThree(s: Synchronization) { Transition.target(t1,s); @@ -160,6 +204,9 @@ pattern synchThree(s: Synchronization) { t1!=t3; } +/** + * Simplifying model generation + */ @Constraint(severity="error", message="error", key = {s1,s2}) pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { Synchronization(s1); @@ -167,31 +214,14 @@ pattern twoSynch(s1 : Synchronization, s2 : Synchronization) { s1 != s2; } -pattern synch(s:Synchronization) { - Synchronization(s); -} -@Constraint(severity="error", message="error", key = {s}) -pattern noSynch(s:Statechart) { - Statechart(s); - neg find synch(_); -} -@Constraint(severity="error", message="error", key = {s}) -pattern noSynch1(s:Statechart) { - Statechart(s); - neg find synch(_); -} -@Constraint(severity="error", message="error", key = {s}) -pattern noSynch2(s:Statechart) { - Statechart(s); - neg find synch(_); -} -@Constraint(severity="error", message="error", key = {s}) -pattern noSynch3(s:Statechart) { - Statechart(s); - neg find synch(_); -} -@Constraint(severity="error", message="error", key = {s}) -pattern noSynch4(s:Statechart) { - Statechart(s); - neg find synch(_); -} \ No newline at end of file +/** + * Model generation task: at least one synch + */ +//@Constraint(severity="error", message="error", key = {s}) +//pattern noSynch(s:Statechart) { +// Statechart(s); +// neg find synch(_); +//} +//pattern synch(s:Synchronization) { +// Synchronization(s); +//} \ No newline at end of file -- cgit v1.2.3-54-g00ecf