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