Nominal/Ex/Shallow.thy
author Cezary Kaliszyk <kaliszyk@in.tum.de>
Sat, 04 Jun 2011 09:07:50 +0900
changeset 2816 84c3929d2684
parent 2634 3ce1089cdbf3
child 2950 0911cb7bf696
permissions -rw-r--r--
Finish and test the locale approach

theory Shallow
imports "../Nominal2" 
begin

(* 
  Various shallow binders
*)

atom_decl name

text {* binding lists of names *}

nominal_datatype trm1 =
  Var1 "name"
| App1 "trm1" "trm1"
| Lam1 xs::"name list" t::"trm1" bind xs in t

thm trm1.strong_exhaust


text {* binding a finite set of names *}

nominal_datatype trm2 =
  Var2 "name"
| App2 "trm2" "trm2"
| Lam2 xs::"name fset" t::"trm2" bind (set) xs in t

thm trm2.strong_exhaust

text {* restricting a finite set of names *}

nominal_datatype trm3 =
  Var3 "name"
| App3 "trm3" "trm3"
| Lam3 xs::"name fset" t::"trm3" bind (set+) xs in t

thm trm3.eq_iff

end