src/HOL/BCV/Opt.thy
author nipkow
Fri, 01 Sep 2000 18:29:52 +0200
changeset 9791 a39e5d43de55
permissions -rw-r--r--
Completely new version of BCV
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9791
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/BCV/Opt.thy
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     2
    ID:         $Id$
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     3
    Author:     Tobias Nipkow
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     4
    Copyright   2000 TUM
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     5
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     6
More about options
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     7
*)
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     8
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
     9
Opt = Semilat +
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    10
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    11
constdefs
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    12
 le :: 'a ord => 'a option ord
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    13
"le r o1 o2 == case o2 of None => o1=None |
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    14
                              Some y => (case o1 of None => True |
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    15
                                                    Some x => x <=_r y)"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    16
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    17
 opt :: 'a set => 'a option set
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    18
"opt A == insert None {x . ? y:A. x = Some y}"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    19
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    20
 sup :: 'a binop => 'a option binop
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    21
"sup f o1 o2 ==
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    22
 case o1 of None => o2 | Some x => (case o2 of None => o1
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    23
                                             | Some y => Some(f x y))"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    24
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    25
 sl :: "'a sl => 'a option sl"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    26
"sl == %(A,r,f). (opt A, le r, sup f)"
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    27
a39e5d43de55 Completely new version of BCV
nipkow
parents:
diff changeset
    28
end