úÎc ë     (C) 2011 Edward Kmett BSD-style (see the file LICENSE)Edward Kmett <ekmett@gmail.com> provisional5rank2 types, type operators, (optional) type families Safe-Inferred=HJKM lLeibnizian equality states that two things are equal if you can substite one for the other in all contextsEquality is reflexive8If two things are equal you can convert one to the otherEquality is transitiveEquality is symmetric/You can lift equality into any type constructor... in any position WType constructors are injective, so you can lower equality through any type constructor ... in any positionEquality forms a category0 !"#$%&'()* +,-./   !"#$%&'()* +,-./0      !!"##$%&'()*eq-3.0 Data.Eq.Type:=Reflsubstreflcoercetranssymmliftlift2lift2'lift3lift3'lowerlower2lower3 $fCategory*:=Lower3unlower3Inj3Lower2unlower2Inj2LowerunlowerInjLift3unlift3Lift2unlift2LiftunliftSymmunsymmCoerceuncoerce TFCo:R:Inj3f TFCo:R:Inj2f TFCo:R:Injf $fGroupoid:=$fSemigroupoid:=