src/HOL/Modelcheck/EindhovenExample.thy
author wenzelm
Tue, 06 Sep 2005 16:24:53 +0200
changeset 17272 c63e5220ed77
parent 6466 2eba94dc5951
child 35416 d8d7d1b785af
permissions -rw-r--r--
converted to Isar theory format;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     1
(*  Title:      HOL/Modelcheck/EindhovenExample.thy
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     2
    ID:         $Id$
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     3
    Author:     Olaf Mueller, Jan Philipps, Robert Sandner
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     4
    Copyright   1997  TU Muenchen
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     5
*)
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
     6
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
     7
theory EindhovenExample
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
     8
imports EindhovenSyn CTL
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
     9
begin
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    10
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    11
types
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    12
  state = "bool * bool * bool"
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    13
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    14
constdefs
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    15
  INIT :: "state pred"
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    16
  "INIT x == ~(fst x)&~(fst (snd x))&~(snd (snd x))"
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    17
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    18
  N :: "[state,state] => bool"
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    19
  "N == % (x1,x2,x3) (y1,y2,y3).
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    20
      (~x1 & ~x2 & ~x3 &   y1 & ~y2 & ~y3) |
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    21
      ( x1 & ~x2 & ~x3 &  ~y1 & ~y2 & ~y3) |
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    22
      ( x1 & ~x2 & ~x3 &   y1 &  y2 &  y3)"
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    23
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    24
  reach:: "state pred"
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    25
  "reach  == mu (%Q x. INIT x | (? y. Q y & N y x))"
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    26
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    27
lemma init_state: "INIT (a, b, c) = (~a & ~b &~c)"
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    28
  by (simp add: INIT_def)
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    29
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    30
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    31
lemmas reach_rws = reach_def INIT_def N_def
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    32
17272
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    33
lemma reach_ex: "reach (True, True, True)"
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    34
  apply (tactic {* simp_tac (Eindhoven_ss addsimps (thms "reach_rws")) 1 *})
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    35
  txt {* the current proof state using the model checker syntax: @{subgoals [mode=Eindhoven]} *}
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    36
  pr (Eindhoven)
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    37
  txt {* actually invoke the model checker, try out after installing
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    38
    the model checker: see the README file *}
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    39
  apply (tactic {* mc_eindhoven_tac 1 *})
c63e5220ed77 converted to Isar theory format;
wenzelm
parents: 6466
diff changeset
    40
  done
6466
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    41
2eba94dc5951 added modelchecker mucke besides modelchecker eindhoven;
mueller
parents:
diff changeset
    42
end