src/HOLCF/Sprod3.ML
author kleing
Wed, 07 Jan 2004 07:52:12 +0100
changeset 14343 6bc647f472b9
parent 12030 46d57d0290a2
child 14981 e73f8140af78
permissions -rw-r--r--
map_idI
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
     1
(*  Title:      HOLCF/Sprod3
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
12030
wenzelm
parents: 10834
diff changeset
     4
    License:    GPL (GNU GENERAL PUBLIC LICENSE)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     5
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
     6
Class instance of  ** for class pcpo
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
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
     9
(* for compatibility with old HOLCF-Version *)
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    10
Goal "UU = Ispair UU UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    11
by (simp_tac (HOL_ss addsimps [UU_def,UU_sprod_def]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    12
qed "inst_sprod_pcpo";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    13
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    14
Addsimps [inst_sprod_pcpo RS sym];
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    15
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    16
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    17
(* continuity of Ispair, Isfst, Issnd                                       *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    18
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    19
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    20
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
    21
"[| 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
    22
\ Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    23
\ Ispair (lub(range(%i. Isfst(Ispair(Y i) x)))) \
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    24
\        (lub(range(%i. Issnd(Ispair(Y i) x))))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    25
by (res_inst_tac [("f1","Ispair")] (arg_cong RS cong) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    26
by (rtac lub_equal 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    27
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    28
by (rtac (monofun_Isfst RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    29
by (rtac ch2ch_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    30
by (rtac (monofun_Ispair1 RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    31
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    32
by (rtac allI 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    33
by (Asm_simp_tac 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    34
by (rtac sym 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    35
by (dtac chain_UU_I_inverse2 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    36
by (etac exE 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    37
by (rtac lub_chain_maxelem 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    38
by (etac Issnd2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    39
by (rtac allI 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    40
by (rename_tac "j" 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    41
by (case_tac "Y(j)=UU" 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    42
by Auto_tac;  
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    43
qed "sprod3_lemma1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    44
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    45
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
    46
"[| 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
    47
\   Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    48
\   Ispair (lub(range(%i. Isfst(Ispair(Y i) x))))\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    49
\          (lub(range(%i. Issnd(Ispair(Y i) x))))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    50
by (res_inst_tac [("s","UU"),("t","lub(range(Y))")] ssubst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    51
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    52
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    53
by (rtac strict_Ispair1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    54
by (rtac (strict_Ispair RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    55
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    56
by (rtac chain_UU_I_inverse 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    57
by Auto_tac;  
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    58
by (etac (chain_UU_I RS spec) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    59
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    60
qed "sprod3_lemma2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    61
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    62
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    63
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
    64
"[| chain(Y); x = UU |] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    65
\          Ispair (lub(range Y)) x =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
    66
\          Ispair (lub(range(%i. Isfst(Ispair (Y i) x))))\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    67
\                 (lub(range(%i. Issnd(Ispair (Y i) x))))";
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    68
by (etac ssubst 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    69
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    70
by (rtac strict_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    71
by (rtac (strict_Ispair RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    72
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    73
by (rtac chain_UU_I_inverse 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    74
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    75
by (simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    76
qed "sprod3_lemma3";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    77
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    78
Goal "contlub(Ispair)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    79
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    80
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    81
by (rtac (expand_fun_eq RS iffD2) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    82
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    83
by (stac (lub_fun RS thelubI) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    84
by (etac (monofun_Ispair1 RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    85
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    86
by (rtac (thelub_sprod RS sym) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    87
by (rtac ch2ch_fun 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    88
by (etac (monofun_Ispair1 RS ch2ch_monofun) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    89
by (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    90
by (res_inst_tac [("Q","lub(range(Y))=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    91
by (etac sprod3_lemma1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    92
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    93
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    94
by (etac sprod3_lemma2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    95
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    96
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    97
by (etac sprod3_lemma3 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    98
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
    99
qed "contlub_Ispair1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   100
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   101
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
   102
"[| 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
   103
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   104
\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   105
\                (lub(range(%i. Issnd (Ispair x (Y i)))))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   106
by (res_inst_tac [("f1","Ispair")] (arg_cong RS cong) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   107
by (rtac sym 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   108
by (dtac chain_UU_I_inverse2 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   109
by (etac exE 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   110
by (rtac lub_chain_maxelem 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   111
by (etac Isfst2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   112
by (rtac allI 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   113
by (rename_tac "j" 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   114
by (case_tac "Y(j)=UU" 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   115
by Auto_tac;  
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   116
qed "sprod3_lemma4";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   117
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   118
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
   119
"[| 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
   120
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   121
\         Ispair (lub(range(%i. Isfst(Ispair x (Y i)))))\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   122
\                (lub(range(%i. Issnd(Ispair x (Y i)))))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   123
by (res_inst_tac [("s","UU"),("t","lub(range(Y))")] ssubst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   124
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   125
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   126
by (rtac strict_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   127
by (rtac (strict_Ispair RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   128
by (rtac disjI2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   129
by (rtac chain_UU_I_inverse 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   130
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   131
by (asm_simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   132
by (etac (chain_UU_I RS spec) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   133
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   134
qed "sprod3_lemma5";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   135
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   136
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
   137
"[| chain(Y); x = UU |] ==>\
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   138
\         Ispair x (lub(range Y)) =\
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   139
\         Ispair (lub(range(%i. Isfst (Ispair x (Y i)))))\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   140
\                (lub(range(%i. Issnd (Ispair x (Y i)))))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   141
by (res_inst_tac [("s","UU"),("t","x")] ssubst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   142
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   143
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   144
by (rtac strict_Ispair1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   145
by (rtac (strict_Ispair RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   146
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   147
by (rtac chain_UU_I_inverse 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   148
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   149
by (simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   150
qed "sprod3_lemma6";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   151
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   152
Goal "contlub(Ispair(x))";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   153
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   154
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   155
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   156
by (rtac (thelub_sprod RS sym) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   157
by (etac (monofun_Ispair2 RS ch2ch_monofun) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   158
by (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   159
by (res_inst_tac [("Q","lub(range(Y))=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   160
by (etac sprod3_lemma4 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   161
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   162
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   163
by (etac sprod3_lemma5 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   164
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   165
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   166
by (etac sprod3_lemma6 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   167
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   168
qed "contlub_Ispair2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   169
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   170
Goal "cont(Ispair)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   171
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   172
by (rtac monofun_Ispair1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   173
by (rtac contlub_Ispair1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   174
qed "cont_Ispair1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   175
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   176
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   177
Goal "cont(Ispair(x))";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   178
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   179
by (rtac monofun_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   180
by (rtac contlub_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   181
qed "cont_Ispair2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   182
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   183
Goal "contlub(Isfst)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   184
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   185
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   186
by (stac (lub_sprod RS thelubI) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   187
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   188
by (res_inst_tac [("Q","lub(range(%i. Issnd(Y(i))))=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   189
by (asm_simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   190
by (res_inst_tac [("s","UU"),("t","lub(range(%i. Issnd(Y(i))))")] ssubst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   191
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   192
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   193
by (asm_simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   194
by (rtac sym 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   195
by (rtac chain_UU_I_inverse 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   196
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   197
by (rtac strict_Isfst 1);
10230
5eb935d6cc69 tidying and renaming of contrapos rules
paulson
parents: 9248
diff changeset
   198
by (rtac contrapos_np 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   199
by (etac (defined_IsfstIssnd RS conjunct2) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   200
by (fast_tac (HOL_cs addSDs [monofun_Issnd RS ch2ch_monofun RS chain_UU_I RS spec]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   201
qed "contlub_Isfst";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   202
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   203
Goal "contlub(Issnd)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   204
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   205
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   206
by (stac (lub_sprod RS thelubI) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   207
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   208
by (res_inst_tac [("Q","lub(range(%i. Isfst(Y(i))))=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   209
by (asm_simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   210
by (res_inst_tac [("s","UU"),("t","lub(range(%i. Isfst(Y(i))))")] ssubst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   211
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   212
by (asm_simp_tac Sprod0_ss  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   213
by (rtac sym 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   214
by (rtac chain_UU_I_inverse 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   215
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   216
by (rtac strict_Issnd 1);
10230
5eb935d6cc69 tidying and renaming of contrapos rules
paulson
parents: 9248
diff changeset
   217
by (rtac contrapos_np 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   218
by (etac (defined_IsfstIssnd RS conjunct1) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   219
by (fast_tac (HOL_cs addSDs [monofun_Isfst RS ch2ch_monofun RS chain_UU_I RS spec]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   220
qed "contlub_Issnd";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   221
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   222
Goal "cont(Isfst)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   223
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   224
by (rtac monofun_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   225
by (rtac contlub_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   226
qed "cont_Isfst";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   227
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   228
Goal "cont(Issnd)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   229
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   230
by (rtac monofun_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   231
by (rtac contlub_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   232
qed "cont_Issnd";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   233
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   234
Goal "[|x1=x2;y1=y2|] ==> (:x1,y1:) = (:x2,y2:)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   235
by (fast_tac HOL_cs 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   236
qed "spair_eq";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   237
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   238
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   239
(* convert all lemmas to the continuous versions                            *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   240
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   241
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   242
Goalw [spair_def]
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   243
        "(LAM x y. Ispair x y)$a$b = Ispair a b";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   244
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   245
by (simp_tac (simpset() addsimps [cont_Ispair2, cont_Ispair1, cont2cont_CF1L]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   246
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   247
by (rtac cont_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   248
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   249
qed "beta_cfun_sprod";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   250
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   251
Addsimps [beta_cfun_sprod];
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   252
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   253
Goalw [spair_def]
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   254
        "[| aa~=UU ; ba~=UU ; (:a,b:)=(:aa,ba:) |] ==> a=aa & b=ba";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   255
by (etac inject_Ispair 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   256
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   257
by (etac box_equals 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   258
by (rtac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   259
by (rtac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   260
qed "inject_spair";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   261
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   262
Goalw [spair_def] "UU = (:UU,UU:)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   263
by (rtac sym 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   264
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   265
by (rtac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   266
by (rtac sym 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   267
by (rtac inst_sprod_pcpo 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   268
qed "inst_sprod_pcpo2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   269
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   270
Goalw [spair_def] 
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   271
        "(a=UU | b=UU) ==> (:a,b:)=UU";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   272
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   273
by (rtac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   274
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   275
by (rtac (inst_sprod_pcpo RS sym) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   276
by (etac strict_Ispair 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   277
qed "strict_spair";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   278
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   279
Goalw [spair_def] "(:UU,b:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   280
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   281
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   282
by (rtac (inst_sprod_pcpo RS sym) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   283
by (rtac strict_Ispair1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   284
qed "strict_spair1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   285
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   286
Goalw [spair_def] "(:a,UU:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   287
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   288
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   289
by (rtac (inst_sprod_pcpo RS sym) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   290
by (rtac strict_Ispair2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   291
qed "strict_spair2";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   292
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   293
Addsimps [strict_spair1,strict_spair2];
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   294
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   295
Goalw [spair_def] "(:x,y:)~=UU ==> ~x=UU & ~y=UU";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   296
by (rtac strict_Ispair_rev 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   297
by Auto_tac;  
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   298
qed "strict_spair_rev";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   299
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   300
Goalw [spair_def] "(:a,b:) = UU ==> (a = UU | b = UU)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   301
by (rtac defined_Ispair_rev 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   302
by Auto_tac;  
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   303
qed "defined_spair_rev";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   304
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   305
Goalw [spair_def]
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   306
        "[|a~=UU; b~=UU|] ==> (:a,b:) ~= UU";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   307
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   308
by (stac inst_sprod_pcpo 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   309
by (etac defined_Ispair 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   310
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   311
qed "defined_spair";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   312
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   313
Goalw [spair_def]
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   314
        "z=UU | (? a b. z=(:a,b:) & a~=UU & b~=UU)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   315
by (rtac (Exh_Sprod RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   316
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   317
by (stac inst_sprod_pcpo 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   318
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   319
by (rtac disjI2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   320
by (etac exE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   321
by (etac exE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   322
by (rtac exI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   323
by (rtac exI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   324
by (rtac conjI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   325
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   326
by (fast_tac HOL_cs 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   327
by (fast_tac HOL_cs 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   328
qed "Exh_Sprod2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   329
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   330
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   331
val [prem1,prem2] = Goalw [spair_def]
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   332
   "[|p=UU ==> Q;  !!x y. [| p=(:x,y:); x~=UU; y~=UU|] ==> Q|] ==> Q";
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   333
by (rtac IsprodE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   334
by (rtac prem1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   335
by (stac inst_sprod_pcpo 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   336
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   337
by (rtac prem2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   338
by (atac 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   339
by (atac 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   340
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   341
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   342
qed "sprodE";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   343
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   344
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   345
Goalw [sfst_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   346
        "p=UU==>sfst$p=UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   347
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   348
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   349
by (rtac strict_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   350
by (rtac (inst_sprod_pcpo RS subst) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   351
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   352
qed "strict_sfst";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   353
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   354
Goalw [sfst_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   355
        "sfst$(:UU,y:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   356
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   357
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   358
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   359
by (rtac strict_Isfst1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   360
qed "strict_sfst1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   361
 
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   362
Goalw [sfst_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   363
        "sfst$(:x,UU:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   364
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   365
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   366
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   367
by (rtac strict_Isfst2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   368
qed "strict_sfst2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   369
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   370
Goalw [ssnd_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   371
        "p=UU==>ssnd$p=UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   372
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   373
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   374
by (rtac strict_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   375
by (rtac (inst_sprod_pcpo RS subst) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   376
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   377
qed "strict_ssnd";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   378
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   379
Goalw [ssnd_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   380
        "ssnd$(:UU,y:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   381
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   382
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   383
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   384
by (rtac strict_Issnd1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   385
qed "strict_ssnd1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   386
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   387
Goalw [ssnd_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   388
        "ssnd$(:x,UU:) = UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   389
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   390
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   391
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   392
by (rtac strict_Issnd2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   393
qed "strict_ssnd2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   394
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   395
Goalw [sfst_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   396
        "y~=UU ==>sfst$(:x,y:)=x";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   397
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   398
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   399
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   400
by (etac Isfst2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   401
qed "sfst2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   402
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   403
Goalw [ssnd_def,spair_def] 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   404
        "x~=UU ==>ssnd$(:x,y:)=y";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   405
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   406
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   407
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   408
by (etac Issnd2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   409
qed "ssnd2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   410
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   411
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   412
Goalw [sfst_def,ssnd_def,spair_def]
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   413
        "p~=UU ==> sfst$p ~=UU & ssnd$p ~=UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   414
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   415
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   416
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   417
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   418
by (rtac defined_IsfstIssnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   419
by (rtac (inst_sprod_pcpo RS subst) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   420
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   421
qed "defined_sfstssnd";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   422
 
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   423
Goalw [sfst_def,ssnd_def,spair_def] "(:sfst$p , ssnd$p:) = p";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   424
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   425
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   426
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   427
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   428
by (rtac cont_Isfst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   429
by (rtac (surjective_pairing_Sprod RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   430
qed "surjective_pairing_Sprod2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   431
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   432
Goalw [sfst_def,ssnd_def,spair_def]
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   433
"chain(S) ==> range(S) <<| \
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   434
\              (: lub(range(%i. sfst$(S i))), lub(range(%i. ssnd$(S i))) :)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   435
by (stac beta_cfun_sprod 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   436
by (stac (beta_cfun RS ext) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   437
by (rtac cont_Issnd 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   438
by (stac (beta_cfun RS ext) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   439
by (rtac cont_Isfst 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   440
by (etac lub_sprod 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   441
qed "lub_sprod2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   442
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   443
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   444
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
   445
(*
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4098
diff changeset
   446
 "chain ?S1 ==>
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   447
 lub (range ?S1) =
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   448
 (:lub (range (%i. sfst$(?S1 i))), lub (range (%i. ssnd$(?S1 i))):)" : thm
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 1043
diff changeset
   449
*)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   450
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   451
Goalw [ssplit_def]
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   452
        "ssplit$f$UU=UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   453
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   454
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   455
by (stac strictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   456
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   457
qed "ssplit1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   458
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   459
Goalw [ssplit_def]
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   460
        "[|x~=UU;y~=UU|] ==> ssplit$f$(:x,y:)= f$x$y";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   461
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   462
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   463
by (stac strictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   464
by (rtac defined_spair 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   465
by (assume_tac 1);
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   466
by (assume_tac 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   467
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   468
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   469
by (stac sfst2 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   470
by (assume_tac 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   471
by (stac ssnd2 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   472
by (assume_tac 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   473
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   474
qed "ssplit2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   475
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   476
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   477
Goalw [ssplit_def]
10834
a7897aebbffc *** empty log message ***
nipkow
parents: 10230
diff changeset
   478
  "ssplit$spair$z=z";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   479
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   480
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   481
by (case_tac "z=UU" 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   482
by (hyp_subst_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   483
by (rtac strictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   484
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   485
by (rtac strictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   486
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   487
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   488
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   489
by (rtac surjective_pairing_Sprod2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   490
qed "ssplit3";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   491
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   492
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   493
(* install simplifier for Sprod                                             *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   494
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   495
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 5033
diff changeset
   496
val Sprod_rews = [strict_sfst1,strict_sfst2,
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   497
                strict_ssnd1,strict_ssnd2,sfst2,ssnd2,defined_spair,
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1277
diff changeset
   498
                ssplit1,ssplit2];
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
   499
Addsimps Sprod_rews;
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents: 1267
diff changeset
   500