src/HOL/BCV/DFA_Framework.ML
author wenzelm
Thu, 14 Dec 2000 19:36:48 +0100
changeset 10671 ac6b3b671198
parent 10172 3daeda3d3cd0
permissions -rw-r--r--
added Summation;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/BCV/DFAandWTI.ML
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     2
    ID:         $Id$
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     4
    Copyright   2000 TUM
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     5
*)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     6
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     7
Goalw [wti_is_stable_topless_def]
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     8
 "[| wti_is_stable_topless r T step wti succs n A; \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     9
\    ss : list n A; !p<n. ss!p ~= T; p < n |] ==> \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    10
\ wti ss p = stable r step succs ss p";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    11
by (Asm_simp_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    12
qed "wti_is_stable_toplessD";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    13
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    14
Goalw [is_dfa_def]
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    15
 "[| is_dfa r dfa step succs n A; ss : list n A |] ==> \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    16
\ dfa ss:list n A & stables r step succs (dfa ss) & ss <=[r] dfa ss & \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    17
\ (!ts: list n A. stables r step succs ts & ss <=[r] ts \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    18
\       --> dfa ss <=[r] ts)";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    19
by (Asm_full_simp_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    20
qed "is_dfaD";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    21
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    22
Goalw [is_bcv_def,welltyping_def,stables_def]
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    23
 "[| order r; top r T; \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    24
\    wti_is_stable_topless r T step wti succs n A; \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    25
\    is_dfa r dfa step succs n A |] ==> is_bcv r T wti n A dfa";
10172
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    26
by (Clarify_tac 1);
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    27
by (dtac is_dfaD 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    28
by (assume_tac 1);
10172
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    29
by (Clarify_tac 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    30
by (rtac iffI 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    31
 by (rtac bexI 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    32
  by (rtac conjI 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    33
   by (assume_tac 1);
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    34
  by (asm_full_simp_tac
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    35
        (simpset() addsimps[wti_is_stable_toplessD,stables_def]) 1);
10172
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    36
 by (assume_tac 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    37
by (Clarify_tac 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    38
by (asm_full_simp_tac
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    39
    (simpset() addsimps [imp_conjR,all_conj_distrib,wti_is_stable_toplessD,
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    40
                         stables_def] addcongs [conj_cong]) 1);
10172
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    41
by (dres_inst_tac [("x","ts")] bspec 1);
3daeda3d3cd0 expandshort
paulson
parents: 9791
diff changeset
    42
 by (assume_tac 1);
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    43
by (force_tac (claset()addDs [le_listD],simpset()) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    44
qed "is_bcv_dfa";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    45
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    46
(*
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    47
Goal
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    48
 "x:M ==> replicate n x : list n M";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    49
by (induct_tac "n" 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    50
by (Simp_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    51
by (asm_simp_tac (simpset() addsimps [in_list_Suc_iff,Bex_def]) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    52
qed "replicate_in_list";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    53
Addsimps [replicate_in_list];
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    54
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    55
Goal "!ys. replicate n x <= ys = (length ys = n & (!y:set ys. x <= y))";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    56
by (induct_tac "n" 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    57
 by (Force_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    58
by (asm_full_simp_tac (simpset() addsimps [Cons_le_iff,length_Suc_conv]) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    59
by (Force_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    60
qed_spec_mp "replicate_le_conv";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    61
AddIffs [replicate_le_conv];
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    62
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    63
Goal
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    64
 "[| wti_is_stable_topless step wti succs n A; is_dfa dfa step succs n A; \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    65
\    0 < n; init : (option A) |] ==> \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    66
\ dfa (init # replicate (n-1) None) = \
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    67
\ (? tos : list n (option A). init <= tos!0 & welltyping wti tos)";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    68
by (subgoal_tac "? m. n = m+1" 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    69
 by (res_inst_tac [("x","n-1")] exI 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    70
 by (arith_tac 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    71
by (Clarify_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    72
by (Asm_full_simp_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    73
by (dtac dfa_iff_welltyping 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    74
  by (assume_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    75
 by (etac trans 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    76
 by (asm_simp_tac (simpset() addsimps [in_list_Suc_iff,Bex_def]) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    77
by (asm_full_simp_tac (simpset() addsimps [Cons_le_iff]) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    78
by (rtac iffI 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    79
 by (Clarify_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    80
 by (rtac bexI 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    81
  by (rtac conjI 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    82
   by (assume_tac 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    83
  by (assume_tac 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    84
 by (Asm_simp_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    85
by (Clarify_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    86
by (asm_full_simp_tac (simpset() addsimps [in_list_Suc_iff,Bex_def]) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    87
by (Clarify_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    88
by (asm_full_simp_tac (simpset() addsimps []) 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    89
by (rtac exI 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    90
by (rtac conjI 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    91
 by (rtac conjI 2);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    92
  by (assume_tac 3);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    93
 by (Blast_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    94
by (Force_tac 1);
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    95
qed "dfa_iff_welltyping0";
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    96
*)