úÎ À 2    5rank2 types, type operators, (optional) type families provisionalEdward Kmett <ekmett@gmail.com> Trustworthy@Leibnizian equality states that two things are equal if you can , substite one for the other in all contexts Equality is reflexive 9If two things are equal you can convert one to the other Equality is transitive Equality is symmetric 0You can lift equality into any type constructor ... in any position Equality forms a category              eq-4.0 Data.Eq.Type:=Reflsubstreflcoercetranssymmliftlift2lift2'lift3lift3' $fCategory:=Lift3unlift3Lift2unlift2LiftunliftSymmunsymmCoerceuncoerce $fGroupoid:=$fSemigroupoid:=