| author | oheimb | 
| Tue, 10 Mar 1998 18:32:08 +0100 | |
| changeset 4719 | 21af5c0be0c9 | 
| parent 2640 | ee4dfce170a0 | 
| child 6382 | 8b0c9205da75 | 
| permissions | -rw-r--r-- | 
| 2640 | 1 | (* Title: HOLCF/Sprod0.thy | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 2 | ID: $Id$ | 
| 1479 | 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 | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 5 | |
| 2640 | 6 | Strict product with typedef | 
| 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 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 9 | Sprod0 = Cfun3 + | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 10 | |
| 2640 | 11 | constdefs | 
| 12 | Spair_Rep :: ['a,'b] => ['a,'b] => bool | |
| 13 | "Spair_Rep == (%a b. %x y.(~a=UU & ~b=UU --> x=a & y=b ))" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 14 | |
| 2640 | 15 | typedef (Sprod)  ('a, 'b) "**" (infixr 20) = "{f. ? a b. f = Spair_Rep a b}"
 | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 16 | |
| 2394 | 17 | syntax (symbols) | 
| 2640 | 18 |   "**"		:: [type, type] => type	 ("(_ \\<otimes>/ _)" [21,20] 20)
 | 
| 2394 | 19 | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 20 | consts | 
| 1479 | 21 |   Ispair        :: "['a,'b] => ('a ** 'b)"
 | 
| 22 |   Isfst         :: "('a ** 'b) => 'a"
 | |
| 23 |   Issnd         :: "('a ** 'b) => 'b"  
 | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 24 | |
| 1168 
74be52691d62
The curried version of HOLCF is now just called HOLCF. The old
 regensbu parents: 
1150diff
changeset | 25 | defs | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 26 | (*defining the abstract constants*) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 27 | |
| 1479 | 28 | Ispair_def "Ispair a b == Abs_Sprod(Spair_Rep a b)" | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 29 | |
| 2640 | 30 | Isfst_def "Isfst(p) == @z. (p=Ispair UU UU --> z=UU) | 
| 1479 | 31 | &(! a b. ~a=UU & ~b=UU & p=Ispair a b --> z=a)" | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 32 | |
| 2640 | 33 | Issnd_def "Issnd(p) == @z. (p=Ispair UU UU --> z=UU) | 
| 1479 | 34 | &(! a b. ~a=UU & ~b=UU & p=Ispair a b --> z=b)" | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 35 | |
| 1274 | 36 | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 37 | end | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 38 |