# HG changeset patch # User Christian Urban # Date 1269875642 -7200 # Node ID 2dca07aca28745801079dc53d9727cc100b16215 # Parent 69472e74bd3bd4c6e431d6fd35a2f424dabc10ef small changes in the core-haskell spec diff -r 69472e74bd3b -r 2dca07aca287 Nominal/ExCoreHaskell.thy --- a/Nominal/ExCoreHaskell.thy Mon Mar 29 16:56:59 2010 +0200 +++ b/Nominal/ExCoreHaskell.thy Mon Mar 29 17:14:02 2010 +0200 @@ -29,11 +29,11 @@ TsNil | TsCons "ty" "ty_lst" and co = - CC cvar + CVar "cvar" | CConst "string" | CApp "co" "co" | CFun "string" "co_lst" -| CAll tv::"tvar" "ckind" C::"co" bind tv in C +| CAll cv::"cvar" "ckind" C::"co" bind cv in C | CEq "ckind" "co" | CRefl "ty" | CSym "co" @@ -50,7 +50,7 @@ | CsCons "co" "co_lst" and trm = Var "var" -| C "string" +| K "string" | LAMT tv::"tvar" "tkind" t::"trm" bind tv in t | LAMC cv::"cvar" "ckind" t::"trm" bind cv in t | AppT "trm" "ty" @@ -64,7 +64,7 @@ ANil | ACons p::"pat" t::"trm" "assoc_lst" bind "bv p" in t and pat = - K "string" "tvtk_lst" "tvck_lst" "vt_lst" + Kpat "string" "tvtk_lst" "tvck_lst" "vt_lst" and vt_lst = VTNil | VTCons "var" "ty" "vt_lst" diff -r 69472e74bd3b -r 2dca07aca287 Paper/Paper.thy --- a/Paper/Paper.thy Mon Mar 29 16:56:59 2010 +0200 +++ b/Paper/Paper.thy Mon Mar 29 17:14:02 2010 +0200 @@ -360,41 +360,44 @@ \begin{figure} \begin{boxedminipage}{\linewidth} \begin{center} - \begin{tabular}{r@ {\hspace{2mm}}cl} + \begin{tabular}{r@ {\hspace{1mm}}r@ {\hspace{2mm}}l} \multicolumn{3}{@ {}l}{Type Kinds}\\ - @{text "\"} & @{text "::="} & @{text "\ | \\<^isub>1 \ \\<^isub>2"}\medskip\\ + @{text "\"} & @{text "::="} & @{text "\ | \\<^isub>1 \ \\<^isub>2"}\smallskip\\ \multicolumn{3}{@ {}l}{Coercion Kinds}\\ - @{text "\"} & @{text "::="} & @{text "\\<^isub>1 \ \\<^isub>2"}\medskip\\ + @{text "\"} & @{text "::="} & @{text "\\<^isub>1 \ \\<^isub>2"}\smallskip\\ \multicolumn{3}{@ {}l}{Types}\\ @{text "\"} & @{text "::="} & @{text "a | T | \\<^isub>1 \\<^isub>2 | S\<^isub>n"}$\;\overline{@{text "\"}}$@{text "\<^sup>n"} - @{text "| \a:\. \ | \ \ \"}\medskip\\ + @{text "| \a:\. \ | \ \ \"}\smallskip\\ \multicolumn{3}{@ {}l}{Coercion Types}\\ @{text "\"} & @{text "::="} & @{text "c | C | \\<^isub>1 \\<^isub>2 | S\<^isub>n"}$\;\overline{@{text "\"}}$@{text "\<^sup>n"} - @{text "| \c:\. \ | \ \ \ |"}\\ - & & @{text "refl \ | sym \ | \\<^isub>1 \ \\<^isub>2 | \ @ \ |"}\\ - & & @{text "left \ | right \ | \\<^isub>1 \ \\<^isub>2 |"}\\ - & & @{text "rightc \ | leftc \ | \\<^isub>1 \ \\<^isub>2"}\medskip\\ + @{text "| \c:\. \ | \ \ \ "}\\ + & @{text "|"} & @{text "refl \ | sym \ | \\<^isub>1 \ \\<^isub>2 | \ @ \ | left \ | right \"}\\ + & @{text "|"} & @{text "\\<^isub>1 \ \\<^isub>2 | rightc \ | leftc \ | \\<^isub>1 \ \\<^isub>2"}\smallskip\\ \multicolumn{3}{@ {}l}{Terms}\\ - @{text "e"} & @{text "::="} & @{text "x | K | \a:\. e | \c:\. e | e \ | e \ |"}\\ - & & @{text "\x:\. e | e\<^isub>1 e\<^isub>2 | \ x:\ = e\<^isub>1 \ e\<^isub>2 |"}\\ - & & @{text "\ e\<^isub>1 \"}$\;\overline{@{text "p \ e\<^isub>2"}}$ @{text "| e \ \"}\medskip\\ + @{text "e"} & @{text "::="} & @{text "x | K | \a:\. e | \c:\. e | e \ | e \"}\\ + & @{text "|"} & @{text "\x:\. e | e\<^isub>1 e\<^isub>2 | \ x:\ = e\<^isub>1 \ e\<^isub>2"}\\ + & @{text "|"} & @{text "\ e\<^isub>1 \"}$\;\overline{@{text "p \ e\<^isub>2"}}$ @{text "| e \ \"}\smallskip\\ \multicolumn{3}{@ {}l}{Patterns}\\ - @{text "p"} & @{text "::="} & @{text "K"}$\;\overline{@{text "a:\"}}\;\overline{@{text "c:\"}}\;\overline{@{text "x:\"}}$\medskip\\ + @{text "p"} & @{text "::="} & @{text "K"}$\;\overline{@{text "a:\"}}\;\overline{@{text "c:\"}}\;\overline{@{text "x:\"}}$\smallskip\\ \multicolumn{3}{@ {}l}{Constants}\\ - @{text C} & & coercion constants\\ - @{text T} & & value type constructors\\ - @{text "S\<^isub>n"} & & n-ary type functions\\ - @{text K} & & data constructors\medskip\\ + & @{text C} & coercion constants\\ + & @{text T} & value type constructors\\ + & @{text "S\<^isub>n"} & n-ary type functions (which need to be fully applied)\\ + & @{text K} & data constructors\smallskip\\ \multicolumn{3}{@ {}l}{Variables}\\ - @{text a} & & type variables\\ - @{text c} & & coercion variables\\ - @{text x} & & term variables\\ + & @{text a} & type variables\\ + & @{text c} & coercion variables\\ + & @{text x} & term variables\\ \end{tabular} \end{center} \end{boxedminipage} - \caption{The term-language of System @{text "F\<^isub>C"}, also often referred to as \emph{Core-Haskell} - \cite{CoreHaskell}. In this version of Core-Haskell we made a modification by - separating completely the grammars for type kinds and coercion types.\label{corehas}} + \caption{The term-language of System @{text "F\<^isub>C"} + \cite{CoreHaskell}, also often referred to as \emph{Core-Haskell}. In this + version of the term-language we made a modification by separating the + grammars for type and coercion kinds, as well as types and coercion + types. For this paper the interesting term-constructor is @{text "\"} + involving the binding of multiple type-, coercion- and term-variables from + patterns.\label{corehas}} \end{figure} *}