src/HOLCF/IOA/ex/TrivEx2.ML
author nipkow
Tue, 28 Mar 2000 17:31:36 +0200
changeset 8600 a466c687c726
parent 6470 f3015fd68d66
child 12218 6597093b77e7
permissions -rw-r--r--
mods because of weak_case_cong
     1 (*  Title:      HOLCF/IOA/TrivEx.thy
     2     ID:         $Id$
     3     Author:     Olaf Mueller
     4     Copyright   1995  TU Muenchen
     5 
     6 Trivial Abstraction Example
     7 *)
     8 
     9 val prems = goal HOL.thy "(P ==> Q-->R) ==> P&Q --> R";
    10   by (fast_tac (claset() addDs prems) 1);
    11 qed "imp_conj_lemma";
    12 
    13 
    14 Goalw [is_abstraction_def] 
    15 "is_abstraction h_abs C_ioa A_ioa";
    16 by (rtac conjI 1);
    17 (* ------------- start states ------------ *)
    18 by (simp_tac (simpset() addsimps 
    19     [h_abs_def,starts_of_def,C_ioa_def,A_ioa_def]) 1);
    20 (* -------------- step case ---------------- *)
    21 by (REPEAT (rtac allI 1));
    22 by (rtac imp_conj_lemma 1);
    23 by (simp_tac (simpset() addsimps [trans_of_def,
    24         C_ioa_def,A_ioa_def,C_trans_def,A_trans_def])1);
    25 by (induct_tac "a" 1);
    26 by (simp_tac (simpset() addsimps [h_abs_def]) 1);
    27 qed"h_abs_is_abstraction";
    28 
    29 
    30 (*
    31 Goalw [xt2_def,plift,option_lift]
    32   "(xt2 (plift afun)) (s,a,t) = (afun a)";
    33 (* !!!!!!!!!!!!! Occurs check !!!! *)
    34 by (induct_tac "a" 1);
    35 
    36 *)
    37 
    38 Goalw [Enabled_def, enabled_def, h_abs_def,A_ioa_def,C_ioa_def,A_trans_def,
    39            C_trans_def,trans_of_def] 
    40 "!!s. Enabled A_ioa {INC} (h_abs s) ==> Enabled C_ioa {INC} s";
    41 by Auto_tac;
    42 qed"Enabled_implication";
    43 
    44 
    45 Goalw [is_live_abstraction_def]
    46 "is_live_abstraction h_abs (C_ioa, WF C_ioa {INC}) (A_ioa, WF A_ioa {INC})";
    47 by Auto_tac;
    48 (* is_abstraction *)
    49 by (rtac h_abs_is_abstraction 1);
    50 (* temp_weakening *)
    51 by (abstraction_tac 1);
    52 by (etac Enabled_implication 1);
    53 qed"h_abs_is_liveabstraction";
    54 
    55 
    56 Goalw [C_live_ioa_def]
    57 "validLIOA C_live_ioa (<>[] <%(n,a,m). n~=0>)";
    58 by (rtac AbsRuleT2 1);
    59 by (rtac h_abs_is_liveabstraction 1);
    60 by (rtac MC_result 1);
    61 by (abstraction_tac 1);
    62 by (asm_full_simp_tac (simpset() addsimps [h_abs_def]) 1);
    63 qed"TrivEx2_abstraction";
    64 
    65 
    66 (*
    67 Goal "validIOA aut_ioa (Box (Init (%(s,a,t). a= Some(Alarm(APonR)))) 
    68 IMPLIES (Next (Init (%(s,a,t). info_comp(s) = APonR))))";
    69 
    70 *)
    71