22 Sexp_def "Sexp == lfp(%Z. range(Leaf) Un range(Numb) Un Z<*>Z)" |
22 Sexp_def "Sexp == lfp(%Z. range(Leaf) Un range(Numb) Un Z<*>Z)" |
23 |
23 |
24 Sexp_case_def |
24 Sexp_case_def |
25 "Sexp_case(M,c,d,e) == @ z. (? x. M=Leaf(x) & z=c(x)) \ |
25 "Sexp_case(M,c,d,e) == @ z. (? x. M=Leaf(x) & z=c(x)) \ |
26 \ | (? k. M=Numb(k) & z=d(k)) \ |
26 \ | (? k. M=Numb(k) & z=d(k)) \ |
27 \ | (? N1 N2. M = N1 . N2 & z=e(N1,N2))" |
27 \ | (? N1 N2. M = N1 $ N2 & z=e(N1,N2))" |
28 |
28 |
29 pred_Sexp_def |
29 pred_Sexp_def |
30 "pred_Sexp == UN M: Sexp. UN N: Sexp. {<M, M.N>, <N, M.N>}" |
30 "pred_Sexp == UN M: Sexp. UN N: Sexp. {<M, M$N>, <N, M$N>}" |
31 |
31 |
32 Sexp_rec_def |
32 Sexp_rec_def |
33 "Sexp_rec(M,c,d,e) == wfrec(pred_Sexp, M, \ |
33 "Sexp_rec(M,c,d,e) == wfrec(pred_Sexp, M, \ |
34 \ %M g. Sexp_case(M, c, d, %N1 N2. e(N1, N2, g(N1), g(N2))))" |
34 \ %M g. Sexp_case(M, c, d, %N1 N2. e(N1, N2, g(N1), g(N2))))" |
35 end |
35 end |