Îõ³h$ ©¤4      !"#$%&'()*+,-./0123(C) 2011-2014 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett  provisional5rank2 types, type operators, (optional) type familiesNone '(.ÉÊÔÖ×Ù= eqíLeibnizian equality states that two things are equal if you can substitute one for the other in all contextseqEquality is reflexiveeq8If two things are equal you can convert one to the othereq+Apply one equality to another, respectivelyeqEquality is transitiveeqEquality is symmetriceq/You can lift equality into any type constructor eq... in any position eqìType constructors are generative and injective, so you can lower equality through any type constructors ...eq... in any position ...eq8... these definitions are poly-kinded on GHC 7.6 and up.eqEquality forms a category  4+(C) 2011-2014 Edward Kmett, 2018 Ryan Scott BSD-style (see the file LICENSE)Edward Kmett  provisionalGHCNone'(./ÉÊÔÖ×Ùl eq"Heterogeneous Leibnizian equality.îLeibnizian equality states that two things are equal if you can substitute one for the other in all contexts.eqEquality is reflexive.eq:If two things are equal, you can convert one to the other.eq+Apply one equality to another, respectivelyeqEquality is transitive.eqEquality is symmetric. eq2You can lift equality into any type constructor...!eq... in any position.%eqéType constructors are generative and injective, so you can lower equality through any type constructors.(eqêConvert an appropriately kinded heterogeneous Leibnizian equality into a homogeneous Leibnizian equality .)eq*Convert a homogeneous Leibnizian equality > to an appropriately kinded heterogeneous Leibizian equality.3eqEquality forms a category. !"#$%&'()*+,-. !"#$%&'()*+,-.44           !"#$%&'eq-4.3-566wVEvEcCWKBsjlbSiQRR Data.Eq.TypeData.Eq.Type.Hetero:=Reflsubstreflcoerceapplytranssymmliftlift2lift2'lift3lift3'lowerlower2lower3 fromLeibniz toLeibniz reprLeibniz$fTestCoercionk:=$fTestEqualityk:= $fGroupoidk:=$fSemigroupoidk:= $fCategoryk:=:==HReflhsubst toHomogeneousfromHomogeneousheteroFromLeibnizheteroToLeibniz$fTestCoercionk:==$fTestEqualityk:==$fGroupoidk:==$fSemigroupoidk:==$fCategoryk:==