diff -r 6f669bba4f0c -r 69472e74bd3b Nominal/ExCoreHaskell.thy --- a/Nominal/ExCoreHaskell.thy Mon Mar 29 16:44:26 2010 +0200 +++ b/Nominal/ExCoreHaskell.thy Mon Mar 29 16:56:59 2010 +0200 @@ -7,6 +7,7 @@ ML {* val _ = recursive := false *} atom_decl var +atom_decl cvar atom_decl tvar (* there are types, coercion types and regular types list-data-structure *) @@ -23,22 +24,24 @@ | TApp "ty" "ty" | TFun "string" "ty_lst" | TAll tv::"tvar" "tkind" T::"ty" bind tv in T -| TEq "ty" "ty" "ty" +| TEq "ckind" "ty" and ty_lst = TsNil | TsCons "ty" "ty_lst" and co = - CC "string" + CC cvar +| CConst "string" | CApp "co" "co" | CFun "string" "co_lst" | CAll tv::"tvar" "ckind" C::"co" bind tv in C -| CEq "co" "co" "co" +| CEq "ckind" "co" +| CRefl "ty" | CSym "co" -| CCir "co" "co" -(* At ??? *) +| CCir "co" "co" +| CAt "co" "ty" | CLeft "co" | CRight "co" -| CSim "co" +| CSim "co" "co" | CRightc "co" | CLeftc "co" | CCoe "co" "co" @@ -49,8 +52,9 @@ Var "var" | C "string" | LAMT tv::"tvar" "tkind" t::"trm" bind tv in t -| LAMC tv::"tvar" "ckind" t::"trm" bind tv in t -| APP "trm" "ty" +| LAMC cv::"cvar" "ckind" t::"trm" bind cv in t +| AppT "trm" "ty" +| AppC "trm" "co" | Lam v::"var" "ty" t::"trm" bind v in t | App "trm" "trm" | Let x::"var" "ty" "trm" t::"trm" bind x in t @@ -69,7 +73,7 @@ | TVTKCons "tvar" "tkind" "tvtk_lst" and tvck_lst = TVCKNil -| TVCKCons "tvar" "ckind" "tvck_lst" +| TVCKCons "cvar" "ckind" "tvck_lst" binder bv :: "pat \ atom list" and bv_vt :: "vt_lst \ atom list"