projet-mini-genie-logiciel-.../livrables/SimplePDL-invariants.mtl
2021-10-20 16:36:15 +02:00

20 lines
1 KiB
Plaintext

[comment encoding = UTF-8 /]
[module toLTL('http://simplepdl')]
[template public processToLTL(aProcess : Process)]
[comment @main/]
[file (aProcess.name + '.ltl', false, 'UTF-8')]
[let wds : OrderedSet(WorkDefinition) = aProcess.getWDs() ]
[for (wds) before ('[] <> ((') separator (') /\\ (') after ('));')]['(' + self.name + '_idle /\\ -' + self.name + '_running /\\ -' + self.name + '_finished) \\/ (-' + self.name + '_idle /\\ ' + self.name + '_running /\\ -' + self.name + '_finished) \\/ (-' + self.name + '_idle /\\ -' + self.name + '_running /\\ ' + self.name + '_finished)'/][/for]
[for (wds) before ('[] <> ((') separator (') /\\ (') after ('));')][self.name + '_finished => [](-' + self.name + '_running' + ' /\\ -' + self.name + '_idle /\\ ' + self.name + '_started)'/][/for]
[/let]
[/file]
[/template]
[query public getWDs(p: Process) : OrderedSet(WorkDefinition) =
p.processElements->select( e | e.oclIsTypeOf(WorkDefinition) )
->collect( e | e.oclAsType(WorkDefinition) )
->asOrderedSet()
/]