тут проблема в том, что ATM (abstract type member) корректнее сравнивать скорее с existential types ,чем с type family
и если ваш тип, содержащий ATM будет использоваться в type class-like роли, вы всё из-за отсутствия когерентности не можете получить подтверждение, что в двух местах Env будет одинаковый для одного F