src/HOLCF/explicit_domains/Stream2.ML
author clasohm
Tue, 30 Jan 1996 13:42:57 +0100
changeset 1461 6bcb44e4d6e5
parent 1274 ea0668a1c0ba
child 2033 639de962ded4
permissions -rw-r--r--
expanded tabs
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     1
(*
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     2
    ID:         $Id$
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
     3
    Author:     Franz Regensburger
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     4
    Copyright   1993 Technische Universitaet Muenchen
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     5
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     6
Lemmas for theory Stream2.thy
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     7
*)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     8
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     9
open Stream2;
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    10
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    11
(* ------------------------------------------------------------------------- *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    12
(* expand fixed point properties                                             *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    13
(* ------------------------------------------------------------------------- *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    14
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    15
val smap_def2 = fix_prover2 Stream2.thy smap_def 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    16
        "smap = (LAM f s. stream_when`(LAM x l.scons`(f`x) `(smap`f`l)) `s)";
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    17
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    18
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    19
(* ------------------------------------------------------------------------- *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    20
(* recursive  properties                                                     *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    21
(* ------------------------------------------------------------------------- *)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    22
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    23
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    24
qed_goal "smap1" Stream2.thy "smap`f`UU = UU"
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    25
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    26
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    27
        (rtac (smap_def2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    28
        (simp_tac (!simpset addsimps stream_when) 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    29
        ]);
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    30
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    31
qed_goal "smap2" Stream2.thy 
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    32
        "x~=UU ==> smap`f`(scons`x`xs) = scons `(f`x) `(smap`f`xs)"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    33
 (fn prems =>
1461
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    34
        [
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    35
        (cut_facts_tac prems 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    36
        (rtac trans 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    37
        (rtac (smap_def2 RS ssubst) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    38
        (asm_simp_tac (!simpset addsimps stream_rews) 1),
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    39
        (rtac refl 1)
6bcb44e4d6e5 expanded tabs
clasohm
parents: 1274
diff changeset
    40
        ]);
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    41
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    42
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    43
val stream2_rews = [smap1, smap2];