src/HOLCF/Cfun3.ML
author oheimb
Fri, 31 May 1996 19:55:19 +0200
changeset 1779 1155c06fa956
parent 1675 36ba4da350c3
child 1853 c18ccd5631e0
permissions -rw-r--r--
introduced forgotten bind_thm calls
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
     1
(*  Title:      HOLCF/cfun3.ML
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
     3
    Author:     Franz Regensburger
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     4
    Copyright   1993 Technische Universitaet Muenchen
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     5
*)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     6
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     7
open Cfun3;
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     8
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     9
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    10
(* the contlub property for fapp its 'first' argument                       *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    11
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    12
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
    13
qed_goal "contlub_fapp1" Cfun3.thy "contlub(fapp)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    14
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    15
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    16
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    17
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    18
        (rtac (expand_fun_eq RS iffD2) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    19
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    20
        (rtac (thelub_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    21
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    22
        (rtac (Cfunapp2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    23
        (etac cont_lubcfun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    24
        (rtac (thelub_fun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    25
        (etac (monofun_fapp1 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    26
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    27
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    28
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    29
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    30
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    31
(* the cont property for fapp in its first argument                        *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    32
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    33
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    34
qed_goal "cont_fapp1" Cfun3.thy "cont(fapp)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    35
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    36
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    37
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    38
        (rtac monofun_fapp1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    39
        (rtac contlub_fapp1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    40
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    41
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    42
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    43
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    44
(* contlub, cont properties of fapp in its first argument in mixfix _[_]   *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    45
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    46
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
    47
qed_goal "contlub_cfun_fun" Cfun3.thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    48
"is_chain(FY) ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    49
\ lub(range FY)`x = lub(range (%i.FY(i)`x))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    50
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    51
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    52
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    53
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    54
        (etac (contlub_fapp1 RS contlubE RS spec RS mp RS fun_cong) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    55
        (rtac (thelub_fun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    56
        (etac (monofun_fapp1 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    57
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    58
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    59
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    60
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    61
qed_goal "cont_cfun_fun" Cfun3.thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    62
"is_chain(FY) ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    63
\ range(%i.FY(i)`x) <<| lub(range FY)`x"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    64
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    65
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    66
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    67
        (rtac thelubE 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    68
        (etac ch2ch_fappL 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    69
        (etac (contlub_cfun_fun RS sym) 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    70
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    71
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    72
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    73
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    74
(* contlub, cont  properties of fapp in both argument in mixfix _[_]       *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    75
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    76
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
    77
qed_goal "contlub_cfun" Cfun3.thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    78
"[|is_chain(FY);is_chain(TY)|] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    79
\ (lub(range FY))`(lub(range TY)) = lub(range(%i.FY(i)`(TY i)))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    80
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    81
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    82
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    83
        (rtac contlub_CF2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    84
        (rtac cont_fapp1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    85
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    86
        (rtac cont_fapp2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    87
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    88
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    89
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    90
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    91
qed_goal "cont_cfun" Cfun3.thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    92
"[|is_chain(FY);is_chain(TY)|] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
    93
\ range(%i.(FY i)`(TY i)) <<| (lub (range FY))`(lub(range TY))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    94
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    95
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    96
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    97
        (rtac thelubE 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    98
        (rtac (monofun_fapp1 RS ch2ch_MF2LR) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
    99
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   100
        (rtac monofun_fapp2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   101
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   102
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   103
        (etac (contlub_cfun RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   104
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   105
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   106
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   107
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   108
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   109
(* cont2cont lemma for fapp                                               *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   110
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   111
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   112
qed_goal "cont2cont_fapp" Cfun3.thy 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   113
        "[|cont(%x.ft x);cont(%x.tt x)|] ==> cont(%x. (ft x)`(tt x))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   114
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   115
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   116
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   117
        (rtac cont2cont_app2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   118
        (rtac cont2cont_app2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   119
        (rtac cont_const 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   120
        (rtac cont_fapp1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   121
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   122
        (rtac cont_fapp2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   123
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   124
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   125
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   126
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   127
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   128
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   129
(* cont2mono Lemma for %x. LAM y. c1(x)(y)                                  *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   130
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   131
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   132
qed_goal "cont2mono_LAM" Cfun3.thy 
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   133
 "[|!x.cont(c1 x); !y.monofun(%x.c1 x y)|] ==>\
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   134
\                       monofun(%x. LAM y. c1 x y)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   135
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   136
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   137
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   138
        (rtac monofunI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   139
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   140
        (rtac (less_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   141
        (rtac (less_fun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   142
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   143
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   144
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   145
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   146
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   147
        (etac ((hd (tl prems)) RS spec RS monofunE RS spec RS spec RS mp) 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   148
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   149
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   150
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   151
(* cont2cont Lemma for %x. LAM y. c1 x y)                                 *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   152
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   153
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   154
qed_goal "cont2cont_LAM" Cfun3.thy 
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   155
 "[| !x.cont(c1 x); !y.cont(%x.c1 x y) |] ==> cont(%x. LAM y. c1 x y)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   156
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   157
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   158
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   159
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   160
        (etac cont2mono_LAM 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   161
        (rtac (cont2mono RS allI) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   162
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   163
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   164
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   165
        (rtac (thelub_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   166
        (rtac (cont2mono_LAM RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   167
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   168
        (rtac (cont2mono RS allI) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   169
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   170
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   171
        (res_inst_tac [("f","fabs")] arg_cong 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   172
        (rtac ext 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   173
        (rtac (beta_cfun RS ext RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   174
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   175
        (rtac (cont2contlub RS contlubE 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   176
                RS spec RS mp ) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   177
        (etac spec 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   178
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   179
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   180
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   181
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   182
(* elimination of quantifier in premisses of cont2cont_LAM yields good    *)
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   183
(* lemma for the cont tactic                                               *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   184
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   185
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   186
bind_thm ("cont2cont_LAM2", allI RSN (2,(allI RS cont2cont_LAM)));
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   187
(*
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   188
[| !!x. cont (?c1.0 x);
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   189
    !!y. cont (%x. ?c1.0 x y) |] ==> cont (%x. LAM y. ?c1.0 x y)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   190
*)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   191
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   192
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   193
(* cont2cont tactic                                                       *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   194
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   195
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   196
val cont_lemmas = [cont_const, cont_id, cont_fapp2,
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   197
                        cont2cont_fapp,cont2cont_LAM2];
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   198
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   199
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   200
val cont_tac = (fn i => (resolve_tac cont_lemmas i));
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   201
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   202
val cont_tacR = (fn i => (REPEAT (cont_tac i)));
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   203
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   204
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   205
(* function application _[_]  is strict in its first arguments              *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   206
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   207
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   208
qed_goal "strict_fapp1" Cfun3.thy "(UU::'a->'b)`x = (UU::'b)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   209
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   210
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   211
        (rtac (inst_cfun_pcpo RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   212
        (rewtac UU_cfun_def),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   213
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   214
        (cont_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   215
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   216
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   217
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   218
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   219
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   220
(* results about strictify                                                  *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   221
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   222
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   223
qed_goalw "Istrictify1" Cfun3.thy [Istrictify_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   224
        "Istrictify(f)(UU)= (UU)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   225
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   226
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   227
        (Simp_tac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   228
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   229
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   230
qed_goalw "Istrictify2" Cfun3.thy [Istrictify_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   231
        "~x=UU ==> Istrictify(f)(x)=f`x"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   232
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   233
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   234
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   235
        (Asm_simp_tac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   236
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   237
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   238
qed_goal "monofun_Istrictify1" Cfun3.thy "monofun(Istrictify)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   239
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   240
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   241
        (rtac monofunI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   242
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   243
        (rtac (less_fun RS iffD2) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   244
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   245
        (res_inst_tac [("Q","xa=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   246
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   247
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   248
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   249
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   250
        (rtac monofun_cfun_fun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   251
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   252
        (hyp_subst_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   253
        (rtac (Istrictify1 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   254
        (rtac (Istrictify1 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   255
        (rtac refl_less 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   256
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   257
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   258
qed_goal "monofun_Istrictify2" Cfun3.thy "monofun(Istrictify(f))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   259
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   260
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   261
        (rtac monofunI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   262
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   263
        (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   264
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   265
        (etac notUU_I 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   266
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   267
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   268
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   269
        (rtac monofun_cfun_arg 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   270
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   271
        (hyp_subst_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   272
        (rtac (Istrictify1 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   273
        (rtac minimal 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   274
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   275
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   276
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   277
qed_goal "contlub_Istrictify1" Cfun3.thy "contlub(Istrictify)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   278
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   279
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   280
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   281
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   282
        (rtac (expand_fun_eq RS iffD2) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   283
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   284
        (rtac (thelub_fun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   285
        (etac (monofun_Istrictify1 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   286
        (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   287
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   288
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   289
        (rtac (Istrictify2 RS ext RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   290
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   291
        (rtac (thelub_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   292
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   293
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   294
        (rtac cont_lubcfun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   295
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   296
        (rtac refl 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   297
        (hyp_subst_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   298
        (rtac (Istrictify1 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   299
        (rtac (Istrictify1 RS ext RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   300
        (rtac (chain_UU_I_inverse RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   301
        (rtac (refl RS allI) 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   302
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   303
961
932784dfa671 Removed bugs which occurred due to new generation mechanism for type variables
regensbu
parents: 892
diff changeset
   304
qed_goal "contlub_Istrictify2" Cfun3.thy "contlub(Istrictify(f::'a -> 'b))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   305
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   306
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   307
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   308
        (strip_tac 1),
1675
36ba4da350c3 adapted several proofs
oheimb
parents: 1461
diff changeset
   309
        (case_tac "lub(range(Y))=(UU::'a)" 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   310
        (res_inst_tac [("t","lub(range(Y))")] subst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   311
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   312
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   313
        (rtac (Istrictify1 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   314
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   315
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   316
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   317
        (res_inst_tac [("t","Y(i)"),("s","UU::'a")] subst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   318
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   319
        (rtac (chain_UU_I RS spec) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   320
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   321
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   322
        (rtac Istrictify1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   323
        (rtac (Istrictify2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   324
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   325
        (res_inst_tac [("s","lub(range(%i. f`(Y i)))")] trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   326
        (rtac contlub_cfun_arg 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   327
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   328
        (rtac lub_equal2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   329
        (rtac (chain_mono2 RS exE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   330
        (atac 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   331
        (rtac chain_UU_I_inverse2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   332
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   333
        (rtac exI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   334
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   335
        (rtac (Istrictify2 RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   336
        (fast_tac HOL_cs 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   337
        (rtac ch2ch_monofun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   338
        (rtac monofun_fapp2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   339
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   340
        (rtac ch2ch_monofun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   341
        (rtac monofun_Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   342
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   343
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   344
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   345
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   346
bind_thm ("cont_Istrictify1", contlub_Istrictify1 RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   347
        (monofun_Istrictify1 RS monocontlub2cont)); 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   348
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   349
bind_thm ("cont_Istrictify2", contlub_Istrictify2 RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   350
        (monofun_Istrictify2 RS monocontlub2cont)); 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   351
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   352
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   353
qed_goalw "strictify1" Cfun3.thy [strictify_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   354
        "strictify`f`UU=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   355
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   356
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   357
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   358
        (cont_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   359
        (rtac cont_Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   360
        (rtac cont2cont_CF1L 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   361
        (rtac cont_Istrictify1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   362
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   363
        (rtac cont_Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   364
        (rtac Istrictify1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   365
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   366
892
d0dc8d057929 added qed, qed_goal[w]
clasohm
parents: 625
diff changeset
   367
qed_goalw "strictify2" Cfun3.thy [strictify_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   368
        "~x=UU ==> strictify`f`x=f`x"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   369
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   370
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   371
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   372
        (cont_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   373
        (rtac cont_Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   374
        (rtac cont2cont_CF1L 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   375
        (rtac cont_Istrictify1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   376
        (rtac (beta_cfun RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   377
        (rtac cont_Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   378
        (rtac Istrictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   379
        (resolve_tac prems 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   380
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   381
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   382
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   383
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   384
(* Instantiate the simplifier                                               *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   385
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   386
1267
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   387
Addsimps [minimal,refl_less,beta_cfun,strict_fapp1,strictify1, strictify2];
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   388
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   389
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   390
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   391
(* use cont_tac as autotac.                                                *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   392
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   393
1267
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   394
simpset := !simpset setsolver 
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   395
           (fn thms => (resolve_tac (TrueI::refl::thms)) ORELSE' atac ORELSE'
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   396
                       (fn i => DEPTH_SOLVE_1 (cont_tac i))
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   397
           );