src/HOLCF/Sprod3.ML
author oheimb
Wed, 12 Nov 1997 12:34:43 +0100
changeset 4206 688050e83d89
parent 4098 71e05eb27fb6
child 4721 c8a8482a8124
permissions -rw-r--r--
restored last version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
     1
(*  Title:      HOLCF/Sprod3.thy
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: 1277
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
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
     6
Lemmas for Sprod.thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     7
*)
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
open Sprod3;
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    10
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    11
(* for compatibility with old HOLCF-Version *)
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    12
qed_goal "inst_sprod_pcpo" thy "UU = Ispair UU UU"
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    13
 (fn prems => 
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    14
        [
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    15
        (simp_tac (HOL_ss addsimps [UU_def,UU_sprod_def]) 1)
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    16
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    17
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    18
(* continuity of Ispair, Isfst, Issnd                                       *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    19
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    20
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    21
qed_goal "sprod3_lemma1" thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    22
"[| is_chain(Y);  x~= UU;  lub(range(Y))~= UU |] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    23
\ Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    24
\ Ispair (lub(range(%i. Isfst(Ispair(Y i) x)))) \
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    25
\        (lub(range(%i. Issnd(Ispair(Y i) x))))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    26
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    27
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    28
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    29
        (res_inst_tac [("f1","Ispair")] (arg_cong RS cong) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    30
        (rtac lub_equal 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    31
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    32
        (rtac (monofun_Isfst RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    33
        (rtac ch2ch_fun 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    34
        (rtac (monofun_Ispair1 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    35
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    36
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    37
        (asm_simp_tac Sprod0_ss 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    38
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    39
        (rtac lub_chain_maxelem 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    40
        (res_inst_tac [("P","%j.~Y(j)=UU")] exE 1),
1675
36ba4da350c3 adapted several proofs
oheimb
parents: 1461
diff changeset
    41
        (rtac (not_all RS iffD1) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    42
        (res_inst_tac [("Q","lub(range(Y)) = UU")] contrapos 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    43
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    44
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    45
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    46
        (rtac exI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    47
        (etac Issnd2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    48
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    49
        (res_inst_tac [("Q","Y(i)=UU")] (excluded_middle RS disjE) 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    50
        (asm_simp_tac Sprod0_ss 1),
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    51
        (rtac refl_less 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    52
        (res_inst_tac [("s","UU"),("t","Y(i)")] subst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    53
        (etac sym 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    54
        (asm_simp_tac Sprod0_ss  1),
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    55
        (rtac minimal 1)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    56
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    57
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    58
qed_goal "sprod3_lemma2" thy 
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    59
"[| is_chain(Y); x ~= UU; lub(range(Y)) = UU |] ==>\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    60
\   Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    61
\   Ispair (lub(range(%i. Isfst(Ispair(Y i) x))))\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    62
\          (lub(range(%i. Issnd(Ispair(Y i) x))))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    63
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    64
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    65
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    66
        (res_inst_tac [("s","UU"),("t","lub(range(Y))")] ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    67
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    68
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    69
        (rtac strict_Ispair1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    70
        (rtac (strict_Ispair RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    71
        (rtac disjI1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    72
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    73
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    74
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    75
        (etac (chain_UU_I RS spec) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    76
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    77
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    78
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    79
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    80
qed_goal "sprod3_lemma3" thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    81
"[| is_chain(Y); x = UU |] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    82
\          Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    83
\          Ispair (lub(range(%i. Isfst(Ispair (Y i) x))))\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    84
\                 (lub(range(%i. Issnd(Ispair (Y i) x))))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    85
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    86
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    87
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    88
        (res_inst_tac [("s","UU"),("t","x")] ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    89
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    90
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    91
        (rtac strict_Ispair2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    92
        (rtac (strict_Ispair RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    93
        (rtac disjI1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    94
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    95
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
    96
        (simp_tac Sprod0_ss  1)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
    97
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    98
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    99
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   100
qed_goal "contlub_Ispair1" thy "contlub(Ispair)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   101
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   102
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   103
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   104
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   105
        (rtac (expand_fun_eq RS iffD2) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   106
        (strip_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   107
        (stac (lub_fun RS thelubI) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   108
        (etac (monofun_Ispair1 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   109
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   110
        (rtac (thelub_sprod RS sym) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   111
        (rtac ch2ch_fun 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   112
        (etac (monofun_Ispair1 RS ch2ch_monofun) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   113
        (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   114
        (res_inst_tac 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   115
                [("Q","lub(range(Y))=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   116
        (etac sprod3_lemma1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   117
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   118
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   119
        (etac sprod3_lemma2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   120
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   121
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   122
        (etac sprod3_lemma3 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   123
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   124
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   125
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   126
qed_goal "sprod3_lemma4" thy 
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   127
"[| is_chain(Y); x ~= UU; lub(range(Y)) ~= UU |] ==>\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   128
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   129
\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   130
\                (lub(range(%i. Issnd (Ispair x (Y i)))))"
1043
ffa68eb2730b adjusted HOLCF for new hyp_subst_tac
regensbu
parents: 892
diff changeset
   131
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   132
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   133
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   134
        (res_inst_tac [("f1","Ispair")] (arg_cong RS cong) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   135
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   136
        (rtac lub_chain_maxelem 1),
3842
b55686a7b22c fixed dots;
wenzelm
parents: 2640
diff changeset
   137
        (res_inst_tac [("P","%j. Y(j)~=UU")] exE 1),
1675
36ba4da350c3 adapted several proofs
oheimb
parents: 1461
diff changeset
   138
        (rtac (not_all RS iffD1) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   139
        (res_inst_tac [("Q","lub(range(Y)) = UU")] contrapos 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   140
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   141
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   142
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   143
        (rtac exI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   144
        (etac Isfst2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   145
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   146
        (res_inst_tac [("Q","Y(i)=UU")] (excluded_middle RS disjE) 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   147
        (asm_simp_tac Sprod0_ss 1),
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   148
        (rtac refl_less 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   149
        (res_inst_tac [("s","UU"),("t","Y(i)")] subst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   150
        (etac sym 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   151
        (asm_simp_tac Sprod0_ss  1),
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   152
        (rtac minimal 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   153
        (rtac lub_equal 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   154
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   155
        (rtac (monofun_Issnd RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   156
        (rtac (monofun_Ispair2 RS ch2ch_monofun) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   157
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   158
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   159
        (asm_simp_tac Sprod0_ss 1)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   160
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   161
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   162
qed_goal "sprod3_lemma5" thy 
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   163
"[| is_chain(Y); x ~= UU; lub(range(Y)) = UU |] ==>\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   164
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   165
\         Ispair (lub(range(%i. Isfst(Ispair x (Y i)))))\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   166
\                (lub(range(%i. Issnd(Ispair x (Y i)))))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   167
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   168
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   169
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   170
        (res_inst_tac [("s","UU"),("t","lub(range(Y))")] ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   171
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   172
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   173
        (rtac strict_Ispair2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   174
        (rtac (strict_Ispair RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   175
        (rtac disjI2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   176
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   177
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   178
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   179
        (etac (chain_UU_I RS spec) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   180
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   181
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   182
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   183
qed_goal "sprod3_lemma6" thy 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   184
"[| is_chain(Y); x = UU |] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   185
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   186
\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   187
\                (lub(range(%i. Issnd (Ispair x (Y i)))))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   188
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   189
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   190
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   191
        (res_inst_tac [("s","UU"),("t","x")] ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   192
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   193
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   194
        (rtac strict_Ispair1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   195
        (rtac (strict_Ispair RS sym) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   196
        (rtac disjI1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   197
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   198
        (rtac allI 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   199
        (simp_tac Sprod0_ss  1)
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   200
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   201
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   202
qed_goal "contlub_Ispair2" thy "contlub(Ispair(x))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   203
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   204
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   205
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   206
        (strip_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   207
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   208
        (rtac (thelub_sprod RS sym) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   209
        (etac (monofun_Ispair2 RS ch2ch_monofun) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   210
        (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   211
        (res_inst_tac [("Q","lub(range(Y))=UU")] 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   212
                (excluded_middle RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   213
        (etac sprod3_lemma4 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   214
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   215
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   216
        (etac sprod3_lemma5 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   217
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   218
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   219
        (etac sprod3_lemma6 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   220
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   221
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   222
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   223
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   224
qed_goal "cont_Ispair1" thy "cont(Ispair)"
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: 1277
diff changeset
   226
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   227
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   228
        (rtac monofun_Ispair1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   229
        (rtac contlub_Ispair1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   230
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   231
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   232
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   233
qed_goal "cont_Ispair2" thy "cont(Ispair(x))"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   234
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   235
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   236
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   237
        (rtac monofun_Ispair2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   238
        (rtac contlub_Ispair2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   239
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   240
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   241
qed_goal "contlub_Isfst" thy "contlub(Isfst)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   242
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   243
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   244
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   245
        (strip_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   246
        (stac (lub_sprod RS thelubI) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   247
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   248
        (res_inst_tac [("Q","lub(range(%i. Issnd(Y(i))))=UU")]  
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   249
                (excluded_middle RS disjE) 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   250
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   251
        (res_inst_tac [("s","UU"),("t","lub(range(%i. Issnd(Y(i))))")]
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   252
                ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   253
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   254
        (rtac trans 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   255
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   256
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   257
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   258
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   259
        (rtac strict_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   260
        (rtac swap 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   261
        (etac (defined_IsfstIssnd RS conjunct2) 2),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   262
        (fast_tac (HOL_cs addSDs [monofun_Issnd RS ch2ch_monofun RS 
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   263
                                  chain_UU_I RS spec]) 1)
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   264
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   265
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   266
qed_goal "contlub_Issnd" thy "contlub(Issnd)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   267
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   268
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   269
        (rtac contlubI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   270
        (strip_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   271
        (stac (lub_sprod RS thelubI) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   272
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   273
        (res_inst_tac [("Q","lub(range(%i. Isfst(Y(i))))=UU")]
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   274
         (excluded_middle RS disjE) 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   275
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   276
        (res_inst_tac [("s","UU"),("t","lub(range(%i. Isfst(Y(i))))")] 
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   277
                ssubst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   278
        (atac 1),
1277
caef3601c0b2 corrected some errors that occurred after introduction of local simpsets
regensbu
parents: 1274
diff changeset
   279
        (asm_simp_tac Sprod0_ss  1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   280
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   281
        (rtac chain_UU_I_inverse 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   282
        (rtac allI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   283
        (rtac strict_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   284
        (rtac swap 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   285
        (etac (defined_IsfstIssnd RS conjunct1) 2),
1675
36ba4da350c3 adapted several proofs
oheimb
parents: 1461
diff changeset
   286
        (fast_tac (HOL_cs addSDs [monofun_Isfst RS ch2ch_monofun RS
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   287
                                  chain_UU_I RS spec]) 1)
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   288
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   289
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   290
qed_goal "cont_Isfst" thy "cont(Isfst)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   291
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   292
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   293
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   294
        (rtac monofun_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   295
        (rtac contlub_Isfst 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   296
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   297
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   298
qed_goal "cont_Issnd" thy "cont(Issnd)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   299
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   300
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   301
        (rtac monocontlub2cont 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   302
        (rtac monofun_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   303
        (rtac contlub_Issnd 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   304
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   305
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   306
qed_goal "spair_eq" thy "[|x1=x2;y1=y2|] ==> (|x1,y1|) = (|x2,y2|)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   307
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   308
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   309
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   310
        (fast_tac HOL_cs 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   311
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   312
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   313
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   314
(* convert all lemmas to the continuous versions                            *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   315
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   316
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   317
qed_goalw "beta_cfun_sprod" thy [spair_def]
3842
b55686a7b22c fixed dots;
wenzelm
parents: 2640
diff changeset
   318
        "(LAM x y. Ispair x y)`a`b = Ispair a b"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   319
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   320
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   321
        (stac beta_cfun 1),
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 3842
diff changeset
   322
        (simp_tac (simpset() addsimps [cont_Ispair2, cont_Ispair1,
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   323
					cont2cont_CF1L]) 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   324
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   325
        (rtac cont_Ispair2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   326
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   327
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   328
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   329
qed_goalw "inject_spair" thy [spair_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   330
        "[| aa~=UU ; ba~=UU ; (|a,b|)=(|aa,ba|) |] ==> a=aa & b=ba"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   331
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   332
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   333
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   334
        (etac inject_Ispair 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   335
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   336
        (etac box_equals 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   337
        (rtac beta_cfun_sprod 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   338
        (rtac beta_cfun_sprod 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   339
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   340
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   341
qed_goalw "inst_sprod_pcpo2" thy [spair_def] "UU = (|UU,UU|)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   342
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   343
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   344
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   345
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   346
        (rtac beta_cfun_sprod 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   347
        (rtac sym 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   348
        (rtac inst_sprod_pcpo 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   349
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   350
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   351
qed_goalw "strict_spair" thy [spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   352
        "(a=UU | b=UU) ==> (|a,b|)=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   353
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   354
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   355
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   356
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   357
        (rtac beta_cfun_sprod 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   358
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   359
        (rtac (inst_sprod_pcpo RS sym) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   360
        (etac strict_Ispair 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   361
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   362
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   363
qed_goalw "strict_spair1" thy [spair_def] "(|UU,b|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   364
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   365
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   366
        (stac beta_cfun_sprod 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   367
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   368
        (rtac (inst_sprod_pcpo RS sym) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   369
        (rtac strict_Ispair1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   370
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   371
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   372
qed_goalw "strict_spair2" thy [spair_def] "(|a,UU|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   373
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   374
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   375
        (stac beta_cfun_sprod 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   376
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   377
        (rtac (inst_sprod_pcpo RS sym) 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   378
        (rtac strict_Ispair2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   379
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   380
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   381
qed_goalw "strict_spair_rev" thy [spair_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   382
        "(|x,y|)~=UU ==> ~x=UU & ~y=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   383
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   384
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   385
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   386
        (rtac strict_Ispair_rev 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   387
        (rtac (beta_cfun_sprod RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   388
        (rtac (inst_sprod_pcpo RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   389
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   390
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   391
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   392
qed_goalw "defined_spair_rev" thy [spair_def]
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   393
 "(|a,b|) = UU ==> (a = UU | b = UU)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   394
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   395
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   396
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   397
        (rtac defined_Ispair_rev 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   398
        (rtac (beta_cfun_sprod RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   399
        (rtac (inst_sprod_pcpo RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   400
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   401
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   402
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   403
qed_goalw "defined_spair" thy [spair_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   404
        "[|a~=UU; b~=UU|] ==> (|a,b|) ~= UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   405
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   406
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   407
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   408
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   409
        (stac inst_sprod_pcpo 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   410
        (etac defined_Ispair 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   411
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   412
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   413
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   414
qed_goalw "Exh_Sprod2" thy [spair_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   415
        "z=UU | (? a b. z=(|a,b|) & a~=UU & b~=UU)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   416
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   417
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   418
        (rtac (Exh_Sprod RS disjE) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   419
        (rtac disjI1 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   420
        (stac inst_sprod_pcpo 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   421
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   422
        (rtac disjI2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   423
        (etac exE 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   424
        (etac exE 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   425
        (rtac exI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   426
        (rtac exI 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   427
        (rtac conjI 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   428
        (stac beta_cfun_sprod 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   429
        (fast_tac HOL_cs 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   430
        (fast_tac HOL_cs 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   431
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   432
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   433
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   434
qed_goalw "sprodE" thy [spair_def]
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   435
"[|p=UU ==> Q;!!x y. [|p=(|x,y|);x~=UU ; y~=UU|] ==> Q|] ==> Q"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   436
(fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   437
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   438
        (rtac IsprodE 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   439
        (resolve_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   440
        (stac inst_sprod_pcpo 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   441
        (atac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   442
        (resolve_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   443
        (atac 2),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   444
        (atac 2),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   445
        (stac beta_cfun_sprod 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   446
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   447
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   448
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   449
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   450
qed_goalw "strict_sfst" thy [sfst_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   451
        "p=UU==>sfst`p=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   452
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   453
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   454
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   455
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   456
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   457
        (rtac strict_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   458
        (rtac (inst_sprod_pcpo RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   459
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   460
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   461
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   462
qed_goalw "strict_sfst1" thy [sfst_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   463
        "sfst`(|UU,y|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   464
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   465
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   466
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   467
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   468
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   469
        (rtac strict_Isfst1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   470
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   471
 
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   472
qed_goalw "strict_sfst2" thy [sfst_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   473
        "sfst`(|x,UU|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   474
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   475
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   476
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   477
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   478
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   479
        (rtac strict_Isfst2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   480
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   481
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   482
qed_goalw "strict_ssnd" thy [ssnd_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   483
        "p=UU==>ssnd`p=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   484
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   485
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   486
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   487
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   488
        (rtac cont_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   489
        (rtac strict_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   490
        (rtac (inst_sprod_pcpo RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   491
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   492
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   493
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   494
qed_goalw "strict_ssnd1" thy [ssnd_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   495
        "ssnd`(|UU,y|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   496
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   497
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   498
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   499
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   500
        (rtac cont_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   501
        (rtac strict_Issnd1 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   502
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   503
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   504
qed_goalw "strict_ssnd2" thy [ssnd_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   505
        "ssnd`(|x,UU|) = UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   506
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   507
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   508
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   509
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   510
        (rtac cont_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   511
        (rtac strict_Issnd2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   512
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   513
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   514
qed_goalw "sfst2" thy [sfst_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   515
        "y~=UU ==>sfst`(|x,y|)=x"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   516
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   517
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   518
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   519
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   520
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   521
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   522
        (etac Isfst2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   523
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   524
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   525
qed_goalw "ssnd2" thy [ssnd_def,spair_def] 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   526
        "x~=UU ==>ssnd`(|x,y|)=y"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   527
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   528
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   529
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   530
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   531
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   532
        (rtac cont_Issnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   533
        (etac Issnd2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   534
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   535
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   536
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   537
qed_goalw "defined_sfstssnd" thy [sfst_def,ssnd_def,spair_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   538
        "p~=UU ==> sfst`p ~=UU & ssnd`p ~=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   539
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   540
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   541
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   542
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   543
        (rtac cont_Issnd 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   544
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   545
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   546
        (rtac defined_IsfstIssnd 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   547
        (rtac (inst_sprod_pcpo RS subst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   548
        (atac 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   549
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   550
 
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   551
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   552
qed_goalw "surjective_pairing_Sprod2" thy 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   553
        [sfst_def,ssnd_def,spair_def] "(|sfst`p , ssnd`p|) = p"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   554
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   555
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   556
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   557
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   558
        (rtac cont_Issnd 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   559
        (stac beta_cfun 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   560
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   561
        (rtac (surjective_pairing_Sprod RS sym) 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   562
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   563
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   564
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   565
qed_goalw "lub_sprod2" thy [sfst_def,ssnd_def,spair_def]
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   566
"[|is_chain(S)|] ==> range(S) <<| \
3842
b55686a7b22c fixed dots;
wenzelm
parents: 2640
diff changeset
   567
\ (| lub(range(%i. sfst`(S i))), lub(range(%i. ssnd`(S i))) |)"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   568
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   569
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   570
        (cut_facts_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   571
        (stac beta_cfun_sprod 1),
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   572
        (stac (beta_cfun RS ext) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   573
        (rtac cont_Issnd 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   574
        (stac (beta_cfun RS ext) 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   575
        (rtac cont_Isfst 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   576
        (rtac lub_sprod 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   577
        (resolve_tac prems 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   578
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   579
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   580
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   581
bind_thm ("thelub_sprod2", lub_sprod2 RS thelubI);
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   582
(*
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   583
 "is_chain ?S1 ==>
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   584
 lub (range ?S1) =
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   585
 (|lub (range (%i. sfst`(?S1 i))), lub (range (%i. ssnd`(?S1 i)))|)" : thm
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   586
*)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   587
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   588
qed_goalw "ssplit1" thy [ssplit_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   589
        "ssplit`f`UU=UU"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   590
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   591
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   592
        (stac beta_cfun 1),
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   593
        (Simp_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   594
        (stac strictify1 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   595
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   596
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   597
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   598
qed_goalw "ssplit2" thy [ssplit_def]
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   599
        "[|x~=UU;y~=UU|] ==> ssplit`f`(|x,y|)= f`x`y"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   600
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   601
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   602
        (stac beta_cfun 1),
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   603
        (Simp_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   604
        (stac strictify2 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   605
        (rtac defined_spair 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   606
        (resolve_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   607
        (resolve_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   608
        (stac beta_cfun 1),
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   609
        (Simp_tac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   610
        (stac sfst2 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   611
        (resolve_tac prems 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   612
        (stac ssnd2 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   613
        (resolve_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   614
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   615
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   616
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   617
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   618
qed_goalw "ssplit3" thy [ssplit_def]
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   619
  "ssplit`spair`z=z"
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   620
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   621
        [
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   622
        (stac beta_cfun 1),
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   623
        (Simp_tac 1),
1675
36ba4da350c3 adapted several proofs
oheimb
parents: 1461
diff changeset
   624
        (case_tac "z=UU" 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   625
        (hyp_subst_tac 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   626
        (rtac strictify1 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   627
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   628
        (rtac strictify2 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   629
        (atac 1),
2033
639de962ded4 Ran expandshort; used stac instead of ssubst
paulson
parents: 1779
diff changeset
   630
        (stac beta_cfun 1),
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   631
        (Simp_tac 1),
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   632
        (rtac surjective_pairing_Sprod2 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   633
        ]);
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   634
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   635
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   636
(* install simplifier for Sprod                                             *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   637
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   638
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents: 1267
diff changeset
   639
val Sprod_rews = [strict_spair1,strict_spair2,strict_sfst1,strict_sfst2,
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   640
                strict_ssnd1,strict_ssnd2,sfst2,ssnd2,defined_spair,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   641
                ssplit1,ssplit2];
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   642
Addsimps Sprod_rews;
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents: 1267
diff changeset
   643