New semantics for overlapping instances and instances of abstract synonym types

Under the old semantics it was possible to define an abstract type A (:== Int), and implement toInt A where toInt i = i. Under the new semantics this is not possible any more.

This is a very useful feature when a newtype is not a good option because it would lead to (un)casts everywhere in the code (even if they are just syntactical). Is there a way to get this working with the new overlapping detection algorithm?

Edited by Ghost User