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