X-Git-Url: http://git.megacz.com/?p=coq-hetmet.git;a=blobdiff_plain;f=src%2FHaskKinds.v;h=d575d12da0d535351ff97076143bdc5b073ae7b0;hp=b61ed0752aac28ba04e694ac19bbd889d8d90c8f;hb=489b12c6c491b96c37839610d33fbdf666ee527f;hpb=97552c1a6dfb32098d4491951929ab1d4aca96a0 diff --git a/src/HaskKinds.v b/src/HaskKinds.v index b61ed07..d575d12 100644 --- a/src/HaskKinds.v +++ b/src/HaskKinds.v @@ -12,7 +12,6 @@ Variable Note : Type. Extract Inlined Con Variable natToString : nat -> string. Extract Inlined Constant natToString => "natToString". Instance NatToStringInstance : ToString nat := { toString := natToString }. -(* Figure 7: production κ, ι *) Inductive Kind : Type := | KindStar : Kind (* ★ - the kind of coercions and the kind of types inhabited by [boxed] values *) | KindArrow : Kind -> Kind -> Kind (* ⇛ - type-function-space; things of kind X⇛Y are NOT inhabited by expressions*) @@ -38,6 +37,10 @@ Instance KindToString : ToString Kind := { toString := kindToString }. Notation "'★'" := KindStar. Notation "a ⇛ b" := (KindArrow a b). +(* the kind of environment classifiers *) +Definition ECKind := ★ ⇛ ★ ⇛ ★. +Opaque ECKind. + Fixpoint kindToLatexMath (k:Kind) : LatexMath := match k with | ★ => rawLatexMath "\star"