src/HOLCF/Cfun3.ML
author paulson
Tue, 17 Oct 2000 10:20:43 +0200
changeset 10230 5eb935d6cc69
parent 9248 e1dee89de037
child 10834 a7897aebbffc
permissions -rw-r--r--
tidying and renaming of contrapos rules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
     1
(*  Title:      HOLCF/Cfun3
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
     3
    Author:     Franz Regensburger
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
     4
    Copyright   1993 Technische Universitaet Muenchen
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
     5
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
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 = Abs_CFun(%x. UU)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    11
by (simp_tac (HOL_ss addsimps [UU_def,UU_cfun_def]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    12
qed "inst_cfun_pcpo";
2640
ee4dfce170a0 Changes of HOLCF from Oscar Slotosch:
slotosch
parents: 2566
diff changeset
    13
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    14
(* ------------------------------------------------------------------------ *)
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
    15
(* the contlub property for Rep_CFun its 'first' argument                       *)
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
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    18
Goal "contlub(Rep_CFun)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    19
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    20
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    21
by (rtac (expand_fun_eq RS iffD2) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    22
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    23
by (stac thelub_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    24
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    25
by (stac Cfunapp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    26
by (etac cont_lubcfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    27
by (stac thelub_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    28
by (etac (monofun_Rep_CFun1 RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    29
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    30
qed "contlub_Rep_CFun1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    31
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    32
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    33
(* ------------------------------------------------------------------------ *)
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
    34
(* the cont property for Rep_CFun in its first argument                        *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    35
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    36
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    37
Goal "cont(Rep_CFun)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    38
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    39
by (rtac monofun_Rep_CFun1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    40
by (rtac contlub_Rep_CFun1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    41
qed "cont_Rep_CFun1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    42
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    43
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    44
(* ------------------------------------------------------------------------ *)
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
    45
(* contlub, cont properties of Rep_CFun in its first argument in mixfix _[_]   *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    46
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    47
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    48
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4423
diff changeset
    49
"chain(FY) ==>\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    50
\ lub(range FY)`x = lub(range (%i. FY(i)`x))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    51
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    52
by (etac (contlub_Rep_CFun1 RS contlubE RS spec RS mp RS fun_cong) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    53
by (stac thelub_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    54
by (etac (monofun_Rep_CFun1 RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    55
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    56
qed "contlub_cfun_fun";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    57
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    58
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    59
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4423
diff changeset
    60
"chain(FY) ==>\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    61
\ range(%i. FY(i)`x) <<| lub(range FY)`x";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    62
by (rtac thelubE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    63
by (etac ch2ch_Rep_CFunL 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    64
by (etac (contlub_cfun_fun RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    65
qed "cont_cfun_fun";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    66
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    67
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    68
(* ------------------------------------------------------------------------ *)
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
    69
(* contlub, cont  properties of Rep_CFun in both argument in mixfix _[_]       *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    70
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    71
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    72
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4423
diff changeset
    73
"[|chain(FY);chain(TY)|] ==>\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    74
\ (lub(range FY))`(lub(range TY)) = lub(range(%i. FY(i)`(TY i)))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    75
by (rtac contlub_CF2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    76
by (rtac cont_Rep_CFun1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    77
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    78
by (rtac cont_Rep_CFun2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    79
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    80
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    81
qed "contlub_cfun";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    82
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
    83
Goal 
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4423
diff changeset
    84
"[|chain(FY);chain(TY)|] ==>\
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    85
\ range(%i.(FY i)`(TY i)) <<| (lub (range FY))`(lub(range TY))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    86
by (rtac thelubE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    87
by (rtac (monofun_Rep_CFun1 RS ch2ch_MF2LR) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    88
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    89
by (rtac monofun_Rep_CFun2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    90
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    91
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    92
by (etac (contlub_cfun RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    93
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
    94
qed "cont_cfun";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    95
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    96
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    97
(* ------------------------------------------------------------------------ *)
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
    98
(* cont2cont lemma for Rep_CFun                                               *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
    99
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   100
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   101
Goal "[|cont(%x. ft x);cont(%x. tt x)|] ==> cont(%x. (ft x)`(tt x))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   102
by (best_tac (claset() addIs [cont2cont_app2, cont_const, cont_Rep_CFun1,
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   103
	                      cont_Rep_CFun2]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   104
qed "cont2cont_Rep_CFun";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   105
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   106
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   107
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   108
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   109
(* cont2mono Lemma for %x. LAM y. c1(x)(y)                                  *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   110
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   111
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   112
val [p1,p2] = Goal  
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   113
 "[| !!x. cont(c1 x); !!y. monofun(%x. c1 x y)|] ==> monofun(%x. LAM y. c1 x y)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   114
by (rtac monofunI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   115
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   116
by (stac less_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   117
by (stac less_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   118
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   119
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   120
by (rtac p1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   121
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   122
by (rtac p1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   123
by (etac (p2 RS monofunE RS spec RS spec RS mp) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   124
qed "cont2mono_LAM";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   125
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   126
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   127
(* cont2cont Lemma for %x. LAM y. c1 x y)                                 *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   128
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   129
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   130
val [p1,p2] = Goal  
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   131
 "[| !!x. cont(c1 x); !!y. cont(%x. c1 x y) |] ==> cont(%x. LAM y. c1 x y)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   132
by (rtac monocontlub2cont 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   133
by (rtac (p1 RS cont2mono_LAM) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   134
by (rtac (p2 RS cont2mono) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   135
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   136
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   137
by (stac thelub_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   138
by (rtac (p1 RS cont2mono_LAM RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   139
by (rtac (p2 RS cont2mono) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   140
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   141
by (res_inst_tac [("f","Abs_CFun")] arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   142
by (rtac ext 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   143
by (stac (p1 RS beta_cfun RS ext) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   144
by (etac (p2 RS cont2contlub RS contlubE RS spec RS mp) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   145
qed "cont2cont_LAM";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   146
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   147
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   148
(* cont2cont tactic                                                       *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   149
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   150
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
   151
val cont_lemmas1 = [cont_const, cont_id, cont_Rep_CFun2,
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
   152
                    cont2cont_Rep_CFun,cont2cont_LAM];
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   153
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   154
Addsimps cont_lemmas1;
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   155
4004
773f3c061777 corrected two comments
oheimb
parents: 3842
diff changeset
   156
(* HINT: cont_tac is now installed in simplifier in Lift.ML ! *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   157
2566
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   158
(*val cont_tac = (fn i => (resolve_tac cont_lemmas i));*)
cbf02fc74332 changed handling of cont_lemmas and adm_lemmas
oheimb
parents: 2033
diff changeset
   159
(*val cont_tacR = (fn i => (REPEAT (cont_tac i)));*)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   160
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   161
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   162
(* function application _[_]  is strict in its first arguments              *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   163
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   164
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   165
Goal "(UU::'a::cpo->'b)`x = (UU::'b)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   166
by (stac inst_cfun_pcpo 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   167
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   168
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   169
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   170
qed "strict_Rep_CFun1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   171
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   172
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   173
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   174
(* results about strictify                                                  *)
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
Goalw [Istrictify_def]
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   178
        "Istrictify(f)(UU)= (UU)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   179
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   180
qed "Istrictify1";
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
Goalw [Istrictify_def]
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   183
        "~x=UU ==> Istrictify(f)(x)=f`x";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   184
by (Asm_simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   185
qed "Istrictify2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   186
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   187
Goal "monofun(Istrictify)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   188
by (rtac monofunI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   189
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   190
by (rtac (less_fun RS iffD2) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   191
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   192
by (res_inst_tac [("Q","xa=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   193
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   194
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   195
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   196
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   197
by (rtac monofun_cfun_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   198
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   199
by (hyp_subst_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   200
by (stac Istrictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   201
by (stac Istrictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   202
by (rtac refl_less 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   203
qed "monofun_Istrictify1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   204
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   205
Goal "monofun(Istrictify(f))";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   206
by (rtac monofunI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   207
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   208
by (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   209
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   210
by (etac notUU_I 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   211
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   212
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   213
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   214
by (rtac monofun_cfun_arg 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   215
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   216
by (hyp_subst_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   217
by (stac Istrictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   218
by (rtac minimal 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   219
qed "monofun_Istrictify2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   220
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 "contlub(Istrictify)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   223
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   224
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   225
by (rtac (expand_fun_eq RS iffD2) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   226
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   227
by (stac thelub_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   228
by (etac (monofun_Istrictify1 RS ch2ch_monofun) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   229
by (res_inst_tac [("Q","x=UU")] (excluded_middle RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   230
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   231
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   232
by (stac (Istrictify2 RS ext) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   233
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   234
by (stac thelub_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   235
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   236
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   237
by (rtac cont_lubcfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   238
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   239
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   240
by (hyp_subst_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   241
by (stac Istrictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   242
by (stac (Istrictify1 RS ext) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   243
by (rtac (chain_UU_I_inverse RS sym) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   244
by (rtac (refl RS allI) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   245
qed "contlub_Istrictify1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   246
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   247
Goal "contlub(Istrictify(f::'a -> 'b))";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   248
by (rtac contlubI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   249
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   250
by (case_tac "lub(range(Y))=(UU::'a)" 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   251
by (asm_simp_tac (simpset() addsimps [Istrictify1, chain_UU_I_inverse, chain_UU_I, Istrictify1]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   252
by (stac Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   253
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   254
by (res_inst_tac [("s","lub(range(%i. f`(Y i)))")] trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   255
by (rtac contlub_cfun_arg 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   256
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   257
by (rtac lub_equal2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   258
by (best_tac (claset() addIs [ch2ch_monofun, monofun_Istrictify2]) 3);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   259
by (best_tac (claset() addIs [ch2ch_monofun, monofun_Rep_CFun2]) 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   260
by (rtac (chain_mono2 RS exE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   261
by (atac 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   262
by (etac chain_UU_I_inverse2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   263
by (blast_tac (claset() addIs [Istrictify2 RS sym]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   264
qed "contlub_Istrictify2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   265
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   266
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   267
bind_thm ("cont_Istrictify1", contlub_Istrictify1 RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   268
        (monofun_Istrictify1 RS monocontlub2cont)); 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   269
1779
1155c06fa956 introduced forgotten bind_thm calls
oheimb
parents: 1675
diff changeset
   270
bind_thm ("cont_Istrictify2", contlub_Istrictify2 RS 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1267
diff changeset
   271
        (monofun_Istrictify2 RS monocontlub2cont)); 
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   272
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   273
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   274
Goalw [strictify_def] "strictify`f`UU=UU";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   275
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   276
by (simp_tac (simpset() addsimps [cont_Istrictify2,cont_Istrictify1, cont2cont_CF1L]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   277
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   278
by (rtac cont_Istrictify2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   279
by (rtac Istrictify1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   280
qed "strictify1";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   281
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   282
Goalw [strictify_def] "~x=UU ==> strictify`f`x=f`x";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   283
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   284
by (simp_tac (simpset() addsimps [cont_Istrictify2,cont_Istrictify1, cont2cont_CF1L]) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   285
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   286
by (rtac cont_Istrictify2 1);
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   287
by (etac Istrictify2 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   288
qed "strictify2";
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   289
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   290
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   291
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   292
(* Instantiate the simplifier                                               *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   293
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   294
5291
5706f0ef1d43 eliminated fabs,fapp.
slotosch
parents: 4721
diff changeset
   295
Addsimps [minimal,refl_less,beta_cfun,strict_Rep_CFun1,strictify1, strictify2];
1267
bca91b4e1710 added local simpsets
clasohm
parents: 1168
diff changeset
   296
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   297
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   298
(* ------------------------------------------------------------------------ *)
1168
74be52691d62 The curried version of HOLCF is now just called HOLCF. The old
regensbu
parents: 961
diff changeset
   299
(* use cont_tac as autotac.                                                *)
243
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   300
(* ------------------------------------------------------------------------ *)
c22b85994e17 Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
nipkow
parents:
diff changeset
   301
4004
773f3c061777 corrected two comments
oheimb
parents: 3842
diff changeset
   302
(* HINT: cont_tac is now installed in simplifier in Lift.ML ! *)
4098
71e05eb27fb6 isatool fixclasimp;
wenzelm
parents: 4004
diff changeset
   303
(*simpset_ref() := simpset() addsolver (K (DEPTH_SOLVE_1 o cont_tac));*)
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   304
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   305
(* ------------------------------------------------------------------------ *)
4721
c8a8482a8124 renamed is_chain to chain, is_tord to tord, replaced chain_finite by chfin
oheimb
parents: 4423
diff changeset
   306
(* some lemmata for functions with flat/chfin domain/range types	    *)
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   307
(* ------------------------------------------------------------------------ *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   308
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   309
Goal "chain (Y::nat => 'a::cpo->'b::chfin) \
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   310
\     ==> !s. ? n. lub(range(Y))`s = Y n`s";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   311
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   312
by (stac contlub_cfun_fun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   313
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   314
by (fast_tac (HOL_cs addSIs [thelubI,chfin,lub_finch2,chfin2finch,ch2ch_Rep_CFunL])1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   315
qed "chfin_Rep_CFunR";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   316
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   317
(* ------------------------------------------------------------------------ *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   318
(* continuous isomorphisms are strict                                       *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   319
(* a prove for embedding projection pairs is similar                        *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   320
(* ------------------------------------------------------------------------ *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   321
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   322
Goal  
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3327
diff changeset
   323
"!!f g.[|!y. f`(g`y)=(y::'b) ; !x. g`(f`x)=(x::'a) |] \
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   324
\ ==> f`UU=UU & g`UU=UU";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   325
by (rtac conjI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   326
by (rtac UU_I 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   327
by (res_inst_tac [("s","f`(g`(UU::'b))"),("t","UU::'b")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   328
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   329
by (rtac (minimal RS monofun_cfun_arg) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   330
by (rtac UU_I 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   331
by (res_inst_tac [("s","g`(f`(UU::'a))"),("t","UU::'a")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   332
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   333
by (rtac (minimal RS monofun_cfun_arg) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   334
qed "iso_strict";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   335
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   336
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   337
Goal "[|!x. rep`(ab`x)=x;!y. ab`(rep`y)=y; z~=UU|] ==> rep`z ~= UU";
10230
5eb935d6cc69 tidying and renaming of contrapos rules
paulson
parents: 9248
diff changeset
   338
by (etac contrapos_nn 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   339
by (dres_inst_tac [("f","ab")] cfun_arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   340
by (etac box_equals 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   341
by (fast_tac HOL_cs 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   342
by (etac (iso_strict RS conjunct1) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   343
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   344
qed "isorep_defined";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   345
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   346
Goal "[|!x. rep`(ab`x) = x;!y. ab`(rep`y)=y ; z~=UU|] ==> ab`z ~= UU";
10230
5eb935d6cc69 tidying and renaming of contrapos rules
paulson
parents: 9248
diff changeset
   347
by (etac contrapos_nn 1);
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   348
by (dres_inst_tac [("f","rep")] cfun_arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   349
by (etac box_equals 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   350
by (fast_tac HOL_cs 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   351
by (etac (iso_strict RS conjunct2) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   352
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   353
qed "isoabs_defined";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   354
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   355
(* ------------------------------------------------------------------------ *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   356
(* propagation of flatness and chainfiniteness by continuous isomorphisms   *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   357
(* ------------------------------------------------------------------------ *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   358
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   359
Goal "!!f g.[|! Y::nat=>'a. chain Y --> (? n. max_in_chain n Y); \
3842
b55686a7b22c fixed dots;
wenzelm
parents: 3327
diff changeset
   360
\ !y. f`(g`y)=(y::'b) ; !x. g`(f`x)=(x::'a::chfin) |] \
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   361
\ ==> ! Y::nat=>'b. chain Y --> (? n. max_in_chain n Y)";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   362
by (rewtac max_in_chain_def);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   363
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   364
by (rtac exE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   365
by (res_inst_tac [("P","chain(%i. g`(Y i))")] mp 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   366
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   367
by (etac ch2ch_Rep_CFunR 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   368
by (rtac exI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   369
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   370
by (res_inst_tac [("s","f`(g`(Y x))"),("t","Y(x)")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   371
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   372
by (res_inst_tac [("s","f`(g`(Y j))"),("t","Y(j)")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   373
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   374
by (rtac cfun_arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   375
by (rtac mp 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   376
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   377
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   378
qed "chfin2chfin";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   379
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   380
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   381
Goal "!!f g.[|!x y::'a. x<<y --> x=UU | x=y; \
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   382
\ !y. f`(g`y)=(y::'b); !x. g`(f`x)=(x::'a)|] ==> !x y::'b. x<<y --> x=UU | x=y";
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   383
by (strip_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   384
by (rtac disjE 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   385
by (res_inst_tac [("P","g`x<<g`y")] mp 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   386
by (etac monofun_cfun_arg 2);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   387
by (dtac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   388
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   389
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   390
by (rtac trans 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   391
by (res_inst_tac [("s","f`(g`x)"),("t","x")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   392
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   393
by (etac cfun_arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   394
by (rtac (iso_strict RS conjunct1) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   395
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   396
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   397
by (rtac disjI2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   398
by (res_inst_tac [("s","f`(g`x)"),("t","x")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   399
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   400
by (res_inst_tac [("s","f`(g`y)"),("t","y")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   401
by (etac spec 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   402
by (etac cfun_arg_cong 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   403
qed "flat2flat";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   404
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   405
(* ------------------------------------------------------------------------- *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   406
(* a result about functions with flat codomain                               *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   407
(* ------------------------------------------------------------------------- *)
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   408
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   409
Goal "f`(x::'a)=(c::'b::flat) ==> f`(UU::'a)=(UU::'b) | (!z. f`(z::'a)=c)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   410
by (case_tac "f`(x::'a)=(UU::'b)" 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   411
by (rtac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   412
by (rtac UU_I 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   413
by (res_inst_tac [("s","f`(x)"),("t","UU::'b")] subst 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   414
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   415
by (rtac (minimal RS monofun_cfun_arg) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   416
by (case_tac "f`(UU::'a)=(UU::'b)" 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   417
by (etac disjI1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   418
by (rtac disjI2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   419
by (rtac allI 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   420
by (hyp_subst_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   421
by (res_inst_tac [("a","f`(UU::'a)")] (refl RS box_equals) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   422
by (res_inst_tac [("fo5","f")] ((minimal RS monofun_cfun_arg) RS (ax_flat RS spec RS spec RS mp) RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   423
by (contr_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   424
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   425
by (res_inst_tac [("fo5","f")] ((minimal RS monofun_cfun_arg) RS (ax_flat RS spec RS spec RS mp) RS disjE) 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   426
by (contr_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   427
by (atac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   428
qed "flat_codom";
3326
930c9bed5a09 Moved the classes flat chfin from Fix to Pcpo.
slotosch
parents: 3031
diff changeset
   429
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   430
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   431
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   432
(* Access to definitions                                                    *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   433
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   434
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   435
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   436
Goalw [ID_def] "ID`x=x";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   437
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   438
by (rtac cont_id 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   439
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   440
qed "ID1";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   441
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   442
Goalw [oo_def] "(f oo g)=(LAM x. f`(g`x))";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   443
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   444
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   445
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   446
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   447
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   448
qed "cfcomp1";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   449
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   450
Goal  "(f oo g)`x=f`(g`x)";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   451
by (stac cfcomp1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   452
by (stac beta_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   453
by (Simp_tac 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   454
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   455
qed "cfcomp2";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   456
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   457
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   458
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   459
(* Show that interpretation of (pcpo,_->_) is a category                    *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   460
(* The class of objects is interpretation of syntactical class pcpo         *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   461
(* The class of arrows  between objects 'a and 'b is interpret. of 'a -> 'b *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   462
(* The identity arrow is interpretation of ID                               *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   463
(* The composition of f and g is interpretation of oo                       *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   464
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   465
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   466
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   467
Goal "f oo ID = f ";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   468
by (rtac ext_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   469
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   470
by (stac ID1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   471
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   472
qed "ID2";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   473
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   474
Goal "ID oo f = f ";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   475
by (rtac ext_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   476
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   477
by (stac ID1 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   478
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   479
qed "ID3";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   480
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   481
9248
e1dee89de037 massive tidy-up: goal -> Goal, remove use of prems, etc.
paulson
parents: 9245
diff changeset
   482
Goal "f oo (g oo h) = (f oo g) oo h";
9245
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   483
by (rtac ext_cfun 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   484
by (res_inst_tac [("s","f`(g`(h`x))")] trans  1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   485
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   486
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   487
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   488
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   489
by (stac cfcomp2 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   490
by (rtac refl 1);
428385c4bc50 removed most batch-style proofs
paulson
parents: 8820
diff changeset
   491
qed "assoc_oo";
3327
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   492
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   493
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   494
(* Merge the different rewrite rules for the simplifier                     *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   495
(* ------------------------------------------------------------------------ *)
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   496
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   497
Addsimps ([ID1,ID2,ID3,cfcomp2]);
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   498
9b8e638f8602 Eliminated ccc1. Moved ID,oo into Cfun.
slotosch
parents: 3326
diff changeset
   499