| author | paulson | 
| Mon, 23 Sep 1996 18:12:45 +0200 | |
| changeset 2009 | 9023e474d22a | 
| parent 1479 | 21eb5e156d91 | 
| child 2278 | d63ffafce255 | 
| permissions | -rw-r--r-- | 
| 1479 | 1 | (* Title: HOLCF/ssum0.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 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 6 | Strict sum | 
| 
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 | Ssum0 = Cfun3 + | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 10 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 11 | (* new type for strict sum *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 12 | |
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 13 | types "++" 2 (infixr 10) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 14 | |
| 1479 | 15 | arities "++" :: (pcpo,pcpo)term | 
| 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 | consts | 
| 1479 | 18 | Ssum :: "(['a,'b,bool]=>bool)set" | 
| 19 | Sinl_Rep :: "['a,'a,'b,bool]=>bool" | |
| 20 | Sinr_Rep :: "['b,'a,'b,bool]=>bool" | |
| 21 |   Rep_Ssum      :: "('a ++ 'b) => (['a,'b,bool]=>bool)"
 | |
| 22 |   Abs_Ssum      :: "(['a,'b,bool]=>bool) => ('a ++ 'b)"
 | |
| 23 |   Isinl         :: "'a => ('a ++ 'b)"
 | |
| 24 |   Isinr         :: "'b => ('a ++ 'b)"
 | |
| 25 |   Iwhen         :: "('a->'c)=>('b->'c)=>('a ++ 'b)=> 'c"
 | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 26 | |
| 1168 
74be52691d62
The curried version of HOLCF is now just called HOLCF. The old
 regensbu parents: 
1150diff
changeset | 27 | defs | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 28 | |
| 1479 | 29 | Sinl_Rep_def "Sinl_Rep == (%a.%x y p. | 
| 30 | (a~=UU --> x=a & p))" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 31 | |
| 1479 | 32 | Sinr_Rep_def "Sinr_Rep == (%b.%x y p. | 
| 33 | (b~=UU --> y=b & ~p))" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 34 | |
| 1479 | 35 |   Ssum_def              "Ssum =={f.(? a.f=Sinl_Rep(a))|(? b.f=Sinr_Rep(b))}"
 | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 36 | |
| 1168 
74be52691d62
The curried version of HOLCF is now just called HOLCF. The old
 regensbu parents: 
1150diff
changeset | 37 | rules | 
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 38 | (*faking a type definition... *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 39 | (* "++" is isomorphic to Ssum *) | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 40 | |
| 1479 | 41 | Rep_Ssum "Rep_Ssum(p):Ssum" | 
| 42 | Rep_Ssum_inverse "Abs_Ssum(Rep_Ssum(p)) = p" | |
| 43 | Abs_Ssum_inverse "f:Ssum ==> Rep_Ssum(Abs_Ssum(f)) = f" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 44 | |
| 1168 
74be52691d62
The curried version of HOLCF is now just called HOLCF. The old
 regensbu parents: 
1150diff
changeset | 45 | defs (*defining the abstract constants*) | 
| 1479 | 46 | Isinl_def "Isinl(a) == Abs_Ssum(Sinl_Rep(a))" | 
| 47 | Isinr_def "Isinr(b) == Abs_Ssum(Sinr_Rep(b))" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 48 | |
| 1479 | 49 | Iwhen_def "Iwhen(f)(g)(s) == @z. | 
| 50 | (s=Isinl(UU) --> z=UU) | |
| 51 | &(!a. a~=UU & s=Isinl(a) --> z=f`a) | |
| 52 | &(!b. b~=UU & s=Isinr(b) --> z=g`b)" | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 53 | |
| 1274 | 54 | (* start 8bit 1 *) | 
| 55 | (* end 8bit 1 *) | |
| 243 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 56 | end | 
| 
c22b85994e17
Franz Regensburger's Higher-Order Logic of Computable Functions embedding LCF
 nipkow parents: diff
changeset | 57 |