X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2FHaskWeakVars.v;h=44e267d0ab21bc49d2cfb98e735ef686a486f24b;hb=273645efdb974dd04042e6c59bbedbe0ad658298;hp=8a77e0922c969174f033df6955ddcf9dcb07023e;hpb=1f411b48dd607e76a65903e8506d0ae5e7470321;p=coq-hetmet.git diff --git a/src/HaskWeakVars.v b/src/HaskWeakVars.v index 8a77e09..44e267d 100644 --- a/src/HaskWeakVars.v +++ b/src/HaskWeakVars.v @@ -13,12 +13,6 @@ Require Import HaskCoreVars. Require Import HaskCoreTypes. Require Import HaskWeakTypes. -(* TO DO: finish this *) -Inductive WeakCoercion : Type := weakCoercion : Kind -> WeakType -> WeakType -> CoreCoercion -> WeakCoercion. - -(* a WeakCoerVar just wraps a CoreVar and tags it with the pair of types amongst which it coerces *) -Inductive WeakCoerVar := weakCoerVar : CoreVar -> Kind -> WeakType -> WeakType -> WeakCoerVar. - (* a WeakExprVar just wraps a CoreVar and tags it with the type of its value *) Inductive WeakExprVar := weakExprVar : CoreVar -> WeakType -> WeakExprVar. @@ -54,9 +48,11 @@ Definition tyConTyVars (tc:CoreTyCon) := Opaque tyConTyVars. Definition tyConKind (tc:TyCon) : list Kind := map (fun (x:WeakTypeVar) => x:Kind) (tyConTyVars tc). -Variable tyFunResultKind : CoreTyCon -> Kind. Extract Inlined Constant tyFunResultKind => "tyFunResultKind". + +Variable rawTyFunKind : CoreTyCon -> Kind. Extract Inlined Constant rawTyFunKind => "(coreKindToKind . TyCon.tyConKind)". + Definition tyFunKind (tc:TyFun) : ((list Kind) * Kind) := - ((map (fun (x:WeakTypeVar) => x:Kind) (tyConTyVars tc)) , (tyFunResultKind tc)). + splitKind (rawTyFunKind tc). (* (* EqDecidable instances for all of the above *)