diff -r b6873d123f9b -r 89715c48f728 Nominal/Ex/TypeVarsTest.thy --- a/Nominal/Ex/TypeVarsTest.thy Sat May 12 21:39:09 2012 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -theory TypeVarsTest -imports "../Nominal2" -begin - -(* a nominal datatype with type variables and sorts *) - - -(* the sort constraints need to be attached to the *) -(* first occurence of the type variables on the *) -(* right-hand side *) - -atom_decl name - -class s1 -class s2 - -instance nat :: s1 .. -instance int :: s2 .. - -nominal_datatype ('a::s1, 'b::s2, 'c::at) lam = - Var "name" -| App "('a, 'b, 'c) lam" "('a, 'b, 'c) lam" -| Lam x::"name" l::"('a, 'b, 'c) lam" binds x in l -| Foo "'a" "'b" -| Bar x::"'c" l::"('a, 'b, 'c) lam" binds x in l (* Bar binds a polymorphic atom *) - -term Foo -term Bar - -thm lam.distinct -thm lam.induct -thm lam.exhaust -thm lam.strong_exhaust -thm lam.fv_defs -thm lam.bn_defs -thm lam.perm_simps -thm lam.eq_iff -thm lam.fv_bn_eqvt -thm lam.size_eqvt - - -nominal_datatype ('alpha, 'beta, 'gamma) psi = - PsiNil -| Output "'alpha" "'alpha" "('alpha, 'beta, 'gamma) psi" - - -nominal_datatype 'a foo = - Node x::"name" f::"'a foo" binds x in f -| Leaf "'a" - -term "Leaf" - - - - -end - - -