Nominal/Ex/ExLetMult.thy
author Christian Urban <urbanc@in.tum.de>
Wed, 25 Aug 2010 22:55:42 +0800
changeset 2434 92dc6cfa3a95
parent 2120 2786ff1df475
permissions -rw-r--r--
automatic lifting
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1744
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     1
theory ExLetMult
2057
232595afb82e ExLetMult
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 1773
diff changeset
     2
imports "../NewParser"
1744
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     3
begin
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     4
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     5
atom_decl name
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     6
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     7
nominal_datatype trm =
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     8
  Vr "name"
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
     9
| Ap "trm" "trm"
2057
232595afb82e ExLetMult
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 1773
diff changeset
    10
| Lm x::"name" t::"trm" bind_set x in t
232595afb82e ExLetMult
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents: 1773
diff changeset
    11
| Lt l::"lts" t::"trm" s::"trm" bind "bn l" in t s
1744
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    12
and lts =
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    13
  Lnil
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    14
| Lcons "name" "trm" "lts"
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    15
binder
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    16
  bn
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    17
where
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    18
  "bn Lnil = []"
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    19
| "bn (Lcons x t l) = (atom x) # (bn l)"
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    20
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    21
thm trm_lts.eq_iff
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    22
thm trm_lts.induct
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    23
thm trm_lts.fv[simplified trm_lts.supp]
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    24
2082
0854af516f14 cleaned up a bit the examples; added equivariance to all examples
Christian Urban <urbanc@in.tum.de>
parents: 2057
diff changeset
    25
0854af516f14 cleaned up a bit the examples; added equivariance to all examples
Christian Urban <urbanc@in.tum.de>
parents: 2057
diff changeset
    26
1744
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    27
end
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    28
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    29
00680cea0dde Let with multiple bindings.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
diff changeset
    30