src/HOLCF/explicit_domains/Coind.thy
author paulson
Tue, 16 Jul 1996 15:49:46 +0200
changeset 1868 836950047d85
parent 1479 21eb5e156d91
permissions -rw-r--r--
Put in minimal simpset to avoid excessive simplification, just as in revision 1.9 of HOL/indrule.ML
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
     1
(*  Title:      HOLCF/Coind.thy
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
     2
    ID:         $Id$
1479
21eb5e156d91 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
Example for co-induction on streams
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
Coind = 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
consts
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    13
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    14
        nats            :: "dnat stream"
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    15
        from            :: "dnat -> dnat stream"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    16
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    17
defs
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    18
        nats_def        "nats == fix`(LAM h.scons`dzero`(smap`dsucc`h))"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    19
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    20
        from_def        "from == fix`(LAM h n.scons`n`(h`(dsucc`n)))"
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    21
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    22
end
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    23
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    24
(*
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    25
                smap`f`UU = UU
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    26
      x~=UU --> smap`f`(scons`x`xs) = scons`(f`x)`(smap`f`xs)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    27
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    28
                nats = scons`dzero`(smap`dsucc`nats)
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    29
1479
21eb5e156d91 expanded tabs
clasohm
parents: 1274
diff changeset
    30
                from`n = scons`n`(from`(dsucc`n))
1274
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    31
*)
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    32
ea0668a1c0ba added 8bit pragmas
regensbu
parents:
diff changeset
    33