author | Cezary Kaliszyk <kaliszyk@in.tum.de> |
Wed, 12 May 2010 16:57:01 +0200 | |
changeset 2116 | ce228f7b2b72 |
parent 2105 | e25b0fff0dd2 |
child 2120 | 2786ff1df475 |
permissions | -rw-r--r-- |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
1 |
theory ExPS8 |
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
2 |
imports "../NewParser" |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
3 |
begin |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
4 |
|
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
5 |
(* example 8 from Peter Sewell's bestiary *) |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
6 |
|
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
7 |
atom_decl name |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
8 |
|
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
9 |
ML {* val _ = cheat_fv_rsp := true *} |
2116
ce228f7b2b72
include set_simps and append_simps in fv_rsp
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
2105
diff
changeset
|
10 |
ML {* val _ = cheat_equivp := true *} |
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
11 |
ML {* val _ = cheat_alpha_bn_rsp := true *} |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
12 |
|
1941 | 13 |
nominal_datatype exp = |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
14 |
EVar name |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
15 |
| EUnit |
1941 | 16 |
| EPair exp exp |
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
17 |
| ELetRec l::lrbs e::exp bind_set "b_lrbs l" in l e |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
18 |
and fnclause = |
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
19 |
K x::name p::pat f::exp bind_set "b_pat p" in f |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
20 |
and fnclauses = |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
21 |
S fnclause |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
22 |
| ORs fnclause fnclauses |
1941 | 23 |
and lrb = |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
24 |
Clause fnclauses |
1941 | 25 |
and lrbs = |
26 |
Single lrb |
|
27 |
| More lrb lrbs |
|
28 |
and pat = |
|
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
29 |
PVar name |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
30 |
| PUnit |
1941 | 31 |
| PPair pat pat |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
32 |
binder |
1941 | 33 |
b_lrbs :: "lrbs \<Rightarrow> atom set" and |
34 |
b_pat :: "pat \<Rightarrow> atom set" and |
|
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
35 |
b_fnclauses :: "fnclauses \<Rightarrow> atom set" and |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
36 |
b_fnclause :: "fnclause \<Rightarrow> atom set" and |
1941 | 37 |
b_lrb :: "lrb \<Rightarrow> atom set" |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
38 |
where |
1941 | 39 |
"b_lrbs (Single l) = b_lrb l" |
40 |
| "b_lrbs (More l ls) = b_lrb l \<union> b_lrbs ls" |
|
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
41 |
| "b_pat (PVar x) = {atom x}" |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
42 |
| "b_pat (PUnit) = {}" |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
43 |
| "b_pat (PPair p1 p2) = b_pat p1 \<union> b_pat p2" |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
44 |
| "b_fnclauses (S fc) = (b_fnclause fc)" |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
45 |
| "b_fnclauses (ORs fc fcs) = (b_fnclause fc) \<union> (b_fnclauses fcs)" |
1941 | 46 |
| "b_lrb (Clause fcs) = (b_fnclauses fcs)" |
47 |
| "b_fnclause (K x pat exp) = {atom x}" |
|
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
48 |
|
2052
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
49 |
thm exp_fnclause_fnclauses_lrb_lrbs_pat.fv |
ca512f9c0b0a
Move ExPS8 to new parser.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
1941
diff
changeset
|
50 |
thm exp_fnclause_fnclauses_lrb_lrbs_pat.eq_iff |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
51 |
|
2082
0854af516f14
cleaned up a bit the examples; added equivariance to all examples
Christian Urban <urbanc@in.tum.de>
parents:
2052
diff
changeset
|
52 |
equivariance alpha_exp_raw |
1655
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
53 |
end |
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
54 |
|
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
55 |
|
9cec4269b7f9
Extract PS7 and PS8 from Test. PS7 needs the same fix as Core Haskell.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff
changeset
|
56 |