src/HOL/IOA/meta_theory/IOA.ML
changeset 2018 bcd69cc47cf0
parent 1949 1badf0b08040
child 2056 93c093620c28
equal deleted inserted replaced
2017:dd3e2a91aeca 2018:bcd69cc47cf0
     3     Author:     Tobias Nipkow & Konrad Slind
     3     Author:     Tobias Nipkow & Konrad Slind
     4     Copyright   1994  TU Muenchen
     4     Copyright   1994  TU Muenchen
     5 
     5 
     6 The I/O automata of Lynch and Tuttle.
     6 The I/O automata of Lynch and Tuttle.
     7 *)
     7 *)
       
     8 
       
     9 Addsimps [Let_def];
     8 
    10 
     9 open IOA Asig;
    11 open IOA Asig;
    10 
    12 
    11 val ioa_projections = [asig_of_def, starts_of_def, trans_of_def];
    13 val ioa_projections = [asig_of_def, starts_of_def, trans_of_def];
    12 
    14 
    79   by (safe_tac (!claset));
    81   by (safe_tac (!claset));
    80   by (res_inst_tac [("Q","reachable A (snd ex n)")] conjunct1 1);
    82   by (res_inst_tac [("Q","reachable A (snd ex n)")] conjunct1 1);
    81   by (nat_ind_tac "n" 1);
    83   by (nat_ind_tac "n" 1);
    82   by (fast_tac (!claset addIs [p1,reachable_0]) 1);
    84   by (fast_tac (!claset addIs [p1,reachable_0]) 1);
    83   by (eres_inst_tac[("x","n1")]allE 1);
    85   by (eres_inst_tac[("x","n1")]allE 1);
    84   by (eres_inst_tac[("P","%x.!a.?Q x a"), ("opt","fst ex n1")] optE 1);
    86   by (eres_inst_tac[("P","%x.!a.?Q x a"), ("opt","fst ex n1")] optionE 1);
    85   by (Asm_simp_tac 1);
    87   by (Asm_simp_tac 1);
    86   by (safe_tac (!claset));
    88   by (safe_tac (!claset));
    87   by (etac (p2 RS mp) 1);
    89   by (etac (p2 RS mp) 1);
    88   by (ALLGOALS(fast_tac(!claset addDs [hd Option.option.inject RS iffD1,
    90   by (ALLGOALS(fast_tac(!claset addDs [hd Option.option.inject RS iffD1,
    89                                       reachable_n])));
    91                                       reachable_n])));