Goguen, Meseguer, 1984. Equality, types, modules, and (why not?) generics for logic programming.. https://doi.org/10.1016/0743-1066(84)90004-9