28 lines
No EOL
1.1 KiB
Text
28 lines
No EOL
1.1 KiB
Text
with SystemPerfect, System do
|
|
// propriétés universelles
|
|
deadlock := any_s - src(any_t - self_epsilon);
|
|
notResettable := any_s - coreach(initial, any_t);
|
|
// Systèmes réactifs
|
|
control := any_t & label action;
|
|
uncontrol := any_t & label time;
|
|
SR := any_s & ([T.level=0] | [T.level=4] | deadlock);
|
|
LossCtrl := src(control) & SR;
|
|
WinCtrl := src(control) - SR;
|
|
LossEnv := src(uncontrol) - SR;
|
|
WinEnv := src(uncontrol) & SR;
|
|
/* Classical equations for
|
|
* - winning strategy (| for lfp and to reach winning states)
|
|
* - controller synthesis (& for gfp and to avoid loosing states)
|
|
Winning = Win |& src(WinningStep);
|
|
WinningStep = Step & rtgt(Loosing);
|
|
Loosing = Loss |& (src(LoosingStep) - src(NotLoosingStep));
|
|
LoosingStep = Step & rtgt(Winning);
|
|
NonLoosingStep = Step - rtgt(Winning);
|
|
*/
|
|
WinningCtrl -=
|
|
control &
|
|
rtgt(LossEnv &
|
|
(src(uncontrol & rtgt(WinCtrl & src(WinningCtrl))) -
|
|
src(uncontrol - rtgt(WinCtrl & src(WinningCtrl)))));
|
|
project(any_s, (WinningCtrl|uncontrol,empty_t), 'Ctrl_$NODENAME', true,C) > 'Ctrl_$NODENAME.alt';
|
|
done |