| author | huffman |
| Fri, 27 May 2005 00:16:18 +0200 | |
| changeset 16093 | cdcbf5a7f38d |
| parent 14981 | e73f8140af78 |
| child 17233 | 41eee2e7b465 |
| permissions | -rw-r--r-- |
| 5976 | 1 |
(* Title: HOLCF/IOA/meta_theory/Pred.thy |
| 4559 | 2 |
ID: $Id$ |
| 12218 | 3 |
Author: Olaf Müller |
| 4559 | 4 |
|
5 |
Logical Connectives lifted to predicates. |
|
6 |
*) |
|
7 |
||
| 7661 | 8 |
Pred = Main + |
| 4559 | 9 |
|
|
12338
de0f4a63baa5
renamed class "term" to "type" (actually "HOL.type");
wenzelm
parents:
12218
diff
changeset
|
10 |
default type |
| 4559 | 11 |
|
12 |
types |
|
13 |
||
14 |
'a predicate = "'a => bool" |
|
15 |
||
16 |
consts |
|
17 |
||
18 |
satisfies ::"'a => 'a predicate => bool" ("_ |= _" [100,9] 8)
|
|
19 |
valid ::"'a predicate => bool" (* ("|-") *)
|
|
20 |
||
21 |
NOT ::"'a predicate => 'a predicate" (".~ _" [40] 40)
|
|
22 |
AND ::"'a predicate => 'a predicate => 'a predicate" (infixr ".&" 35) |
|
23 |
OR ::"'a predicate => 'a predicate => 'a predicate" (infixr ".|" 30) |
|
24 |
IMPLIES ::"'a predicate => 'a predicate => 'a predicate" (infixr ".-->" 25) |
|
25 |
||
26 |
||
27 |
syntax ("" output)
|
|
28 |
"NOT" ::"'a predicate => 'a predicate" ("~ _" [40] 40)
|
|
29 |
"AND" ::"'a predicate => 'a predicate => 'a predicate" (infixr "&" 35) |
|
30 |
"OR" ::"'a predicate => 'a predicate => 'a predicate" (infixr "|" 30) |
|
31 |
"IMPLIES" ::"'a predicate => 'a predicate => 'a predicate" (infixr "-->" 25) |
|
32 |
||
|
12114
a8e860c86252
eliminated old "symbols" syntax, use "xsymbols" instead;
wenzelm
parents:
7661
diff
changeset
|
33 |
syntax (xsymbols output) |
| 4559 | 34 |
"NOT" ::"'a predicate => 'a predicate" ("\\<not> _" [40] 40)
|
35 |
"AND" ::"'a predicate => 'a predicate => 'a predicate" (infixr "\\<and>" 35) |
|
36 |
"OR" ::"'a predicate => 'a predicate => 'a predicate" (infixr "\\<or>" 30) |
|
|
12114
a8e860c86252
eliminated old "symbols" syntax, use "xsymbols" instead;
wenzelm
parents:
7661
diff
changeset
|
37 |
"IMPLIES" ::"'a predicate => 'a predicate => 'a predicate" (infixr "\\<longrightarrow>" 25) |
| 4559 | 38 |
|
|
12114
a8e860c86252
eliminated old "symbols" syntax, use "xsymbols" instead;
wenzelm
parents:
7661
diff
changeset
|
39 |
syntax (xsymbols) |
| 4559 | 40 |
"satisfies" ::"'a => 'a predicate => bool" ("_ \\<Turnstile> _" [100,9] 8)
|
41 |
||
| 6340 | 42 |
syntax (HTML output) |
43 |
"NOT" ::"'a predicate => 'a predicate" ("\\<not> _" [40] 40)
|
|
| 14565 | 44 |
"AND" ::"'a predicate => 'a predicate => 'a predicate" (infixr "\\<and>" 35) |
45 |
"OR" ::"'a predicate => 'a predicate => 'a predicate" (infixr "\\<or>" 30) |
|
| 6340 | 46 |
|
| 4559 | 47 |
|
48 |
defs |
|
49 |
||
50 |
satisfies_def |
|
51 |
"s |= P == P s" |
|
52 |
||
53 |
(* priority einfuegen, da clash mit |=, wenn graphisches Symbol *) |
|
54 |
valid_def |
|
55 |
"valid P == (! s. (s |= P))" |
|
56 |
||
57 |
||
58 |
NOT_def |
|
59 |
"NOT P s == ~ (P s)" |
|
60 |
||
61 |
AND_def |
|
62 |
"(P .& Q) s == (P s) & (Q s)" |
|
63 |
||
64 |
||
65 |
OR_def |
|
66 |
"(P .| Q) s == (P s) | (Q s)" |
|
67 |
||
68 |
IMPLIES_def |
|
69 |
"(P .--> Q) s == (P s) --> (Q s)" |
|
70 |
||
| 7661 | 71 |
end |