1 (* Title: HOLCF/IOA/TrivEx.thy
4 Copyright 1995 TU Muenchen
6 Trivial Abstraction Example
9 val prems = goal HOL.thy "(P ==> Q-->R) ==> P&Q --> R";
10 by (fast_tac (claset() addDs prems) 1);
14 Goalw [is_abstraction_def]
15 "is_abstraction h_abs C_ioa A_ioa";
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";
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);
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";
42 qed"Enabled_implication";
45 Goalw [is_live_abstraction_def]
46 "is_live_abstraction h_abs (C_ioa, WF C_ioa {INC}) (A_ioa, WF A_ioa {INC})";
49 by (rtac h_abs_is_abstraction 1);
51 by (abstraction_tac 1);
52 by (etac Enabled_implication 1);
53 qed"h_abs_is_liveabstraction";
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";
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))))";