High Order Function with Type Parameter

This is a local violation of the invariants. It is not something that happens due to the code in another trait as I had shown in my proof of unsafety.

In my category of delineating the boundary of safety, I want to be able to say that if I violate the invariants locally, then that is unsafe because it is a human observable bug.

Whereas, the proof example I showed upthread, the trait NatPos did not violate its invariants. It required coercion to a Nat with a shared mutable reference in order to violate the invariants of `Pos'. That was a non-local unsafety, thus although a bug, I'd like to have the compiler make it impossible. And so I described the optional rule for making it impossible. Whether that optional rule has any practical implementation is a separate question.