!:$      !"# Safe$%&'()*+Safe,-.HUVNone%_|typelevel-rewrite-rules module nametypelevel-rewrite-rules module nametypelevel-rewrite-rulestype constructor/family nametypelevel-rewrite-rules module nametypelevel-rewrite-rulesdata constructor nameSafe  typelevel-rewrite-rulesan expression like (as ++ '[]) ++ bs would be represented as *Fun appendTyCon [Var "as", Fun nilTyCon [] or rather LFun appendTyCon [Fun starTyCon [], Var "as", Fun nilTyCon [Fun starTyCon []]A because those polymorphic TyCons need to be specialized to the , kind  None  typelevel-rewrite-rulesA newtype around - which has an . instance.  None%_ :None%_ None% None"#_L  !"  !" None"#%./typelevel-rewrite-rulesexpectedtypelevel-rewrite-rulesactual0typelevel-rewrite-rulesGiven constraintstypelevel-rewrite-rulesDerived constraintstypelevel-rewrite-rulesWanted constraints##1    !"#$%&'()*+, - . / 0 1 2 3 4 56789:;<=> ? @A#typelevel-rewrite-rules-0.1-inplaceTypeLevel.Append!TypeLevel.Rewrite.Internal.LookupTypeLevel.Rewrite.Internal.Term!TypeLevel.Rewrite.Internal.TypeEq'TypeLevel.Rewrite.Internal.TypeTemplate#TypeLevel.Rewrite.Internal.TypeTerm#TypeLevel.Rewrite.Internal.TypeRule&TypeLevel.Rewrite.Internal.PrettyPrintTypeLevel.RewritePaths_typelevel_rewrite_rulesRightAssociative RightIdentity++ lookupModule lookupTyCon lookupDataCon splitFirstDot splitLastDot lookupFQNatomTermTypeEqunTypeEq $fEqTypeEq TypeTemplatetoTypeTemplate_maybeTypeTerm toTypeTerm fromTypeTermTypeRuletoTypeRule_maybe applyRulespprMaybepprListpprTyConpprTypepprTyVar pprTypeEqpprTermpprRule pprReductpprTypeTemplate pprTypeTerm pprTypeRule pprTypeReductpluginversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNamebaseGHC.Num*ghcTyCoRepTypeghc-prim GHC.ClassesEqusagesolve