src/HOLCF/IOA/Modelcheck/Cockpit.thy
author paulson
Tue, 05 Sep 2000 10:16:03 +0200
changeset 9841 ca3173f87b5c
parent 8733 3213613a775a
child 10127 86269867de34
permissions -rw-r--r--
safe_meson_tac -> meson_tac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     1
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     2
Cockpit = MuIOAOracle +
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     3
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     4
datatype 'a action = Alarm 'a | Info 'a | Ack 'a
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     5
datatype event = None | PonR | Eng | Fue
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
     6
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     7
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     8
(*This cockpit automaton is a deeply simplified version of the
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
     9
  control component of a helicopter alarm system considered in a study
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    10
  of ESG.  Some properties will be proved by using model checker
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    11
  mucke.*)
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    12
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    13
automaton cockpit =
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    14
  signature
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    15
    actions event action
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    16
    inputs "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    17
    outputs "Ack a","Info a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    18
  states
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    19
    APonR_incl :: bool
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    20
    info :: event
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    21
  initially "info=None & ~APonR_incl"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    22
  transitions
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    23
    "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    24
      post info:="if (a=None) then info else a",
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    25
        APonR_incl:="if (a=PonR) then True else APonR_incl"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    26
    "Info a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    27
      pre "(a=info)"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    28
    "Ack a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    29
      pre "(a=PonR --> APonR_incl) & (a=None --> ~APonR_incl)"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    30
      post info:="None",APonR_incl:="if (a=PonR) then False else APonR_incl"
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    31
8733
3213613a775a renamed 'hide' to 'hide_action';
wenzelm
parents: 7299
diff changeset
    32
automaton cockpit_hide = hide_action "Info a" in cockpit
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    33
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    34
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    35
(*Subsequent automata express the properties to be proved, see also
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    36
  Cockpit.ML*)
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    37
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    38
automaton Al_before_Ack =
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    39
  signature
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    40
    actions event action
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    41
    inputs "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    42
    outputs "Ack a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    43
  states
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    44
    APonR_incl :: bool
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    45
  initially "~APonR_incl"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    46
  transitions
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    47
    "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    48
      post APonR_incl:="if (a=PonR) then True else APonR_incl"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    49
    "Ack a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    50
      pre "(a=PonR --> APonR_incl)"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    51
      post APonR_incl:="if (a=PonR) then False else APonR_incl"
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    52
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    53
automaton Info_while_Al =
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    54
  signature
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    55
    actions event action
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    56
    inputs "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    57
    outputs "Ack a", "Info i"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    58
  states
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    59
    info_at_Pon :: bool
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    60
  initially "~info_at_Pon"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    61
  transitions
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    62
    "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    63
      post
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    64
        info_at_Pon:="if (a=PonR) then True else (if (a=None) then info_at_Pon else False)"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    65
    "Info a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    66
      pre "(a=PonR) --> info_at_Pon"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    67
    "Ack a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    68
      post info_at_Pon:="False"
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    69
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    70
automaton Info_before_Al =
7299
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    71
  signature
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    72
    actions event action
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    73
    inputs "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    74
    outputs "Ack a", "Info i"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    75
  states
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    76
    info_at_None :: bool
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    77
  initially "info_at_None"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    78
  transitions
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    79
    "Alarm a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    80
      post info_at_None:="if (a=None) then info_at_None else False"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    81
    "Info a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    82
      pre "(a=None) --> info_at_None"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    83
    "Ack a"
743b22579a2f quite a lot of tuning and cleanup;
wenzelm
parents: 6471
diff changeset
    84
      post info_at_None:="True"
6471
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    85
08d12ef5fc19 added translation from IOA to mucalculus and corresponding modelchecker examples;
mueller
parents:
diff changeset
    86
end