| author | paulson | 
| Thu, 08 Jan 1998 11:21:45 +0100 | |
| changeset 4521 | c7f56322a84b | 
| parent 1788 | ca62fab4ce92 | 
| child 5101 | 52e7c75acfe6 | 
| permissions | -rw-r--r-- | 
| 1475 | 1  | 
(* Title: HOL/Sexp  | 
| 923 | 2  | 
ID: $Id$  | 
| 1475 | 3  | 
Author: Lawrence C Paulson, Cambridge University Computer Laboratory  | 
| 923 | 4  | 
Copyright 1992 University of Cambridge  | 
5  | 
||
6  | 
S-expressions, general binary trees for defining recursive data structures  | 
|
7  | 
*)  | 
|
8  | 
||
9  | 
Sexp = Univ +  | 
|
10  | 
consts  | 
|
| 
1370
 
7361ac9b024d
removed quotes from types in consts and syntax sections
 
clasohm 
parents: 
1151 
diff
changeset
 | 
11  | 
sexp :: 'a item set  | 
| 923 | 12  | 
|
| 1151 | 13  | 
sexp_case :: "['a=>'b, nat=>'b, ['a item, 'a item]=>'b,  | 
14  | 
'a item] => 'b"  | 
|
| 923 | 15  | 
|
| 1475 | 16  | 
sexp_rec :: "['a item, 'a=>'b, nat=>'b,  | 
| 1151 | 17  | 
['a item, 'a item, 'b, 'b]=>'b] => 'b"  | 
| 923 | 18  | 
|
19  | 
  pred_sexp :: "('a item * 'a item)set"
 | 
|
20  | 
||
| 1788 | 21  | 
inductive sexp  | 
| 923 | 22  | 
intrs  | 
23  | 
LeafI "Leaf(a): sexp"  | 
|
| 1395 | 24  | 
NumbI "Numb(i): sexp"  | 
| 923 | 25  | 
SconsI "[| M: sexp; N: sexp |] ==> M$N : sexp"  | 
26  | 
||
27  | 
defs  | 
|
28  | 
||
| 1475 | 29  | 
sexp_case_def  | 
| 1151 | 30  | 
"sexp_case c d e M == @ z. (? x. M=Leaf(x) & z=c(x))  | 
| 1395 | 31  | 
| (? k. M=Numb(k) & z=d(k))  | 
32  | 
| (? N1 N2. M = N1 $ N2 & z=e N1 N2)"  | 
|
| 923 | 33  | 
|
34  | 
pred_sexp_def  | 
|
| 
972
 
e61b058d58d2
changed syntax of tuples from <..., ...> to (..., ...)
 
clasohm 
parents: 
923 
diff
changeset
 | 
35  | 
     "pred_sexp == UN M: sexp. UN N: sexp. {(M, M$N), (N, M$N)}"
 | 
| 923 | 36  | 
|
37  | 
sexp_rec_def  | 
|
| 1475 | 38  | 
"sexp_rec M c d e == wfrec pred_sexp  | 
39  | 
(%g. sexp_case c d (%N1 N2. e N1 N2 (g N1) (g N2))) M"  | 
|
| 923 | 40  | 
end  |