<div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto"><br>
    Except you've got your mappings the wrong way around. </div></blockquote><div dir="auto"><br></div><div dir="auto">Ok, let’s go with that:</div><div dir="auto"><br></div><div dir="auto">(new R(a)).p() <= a</div><div dir="auto"><br></div><div dir="auto">It’s difficult to be precise, because you haven’t spelled out the entire semantics (and I’m pretty sure it doesn’t exist), but, if we are able to do some kind of “normalization”, we are presumably able to do the simplest imaginable kind:</div><div dir="auto"><br></div><div dir="auto">record R(Boolean b) {</div><div dir="auto">  Boolean b() { return true; }</div><div dir="auto">  bool equals(Object o) { return true; }</div><div dir="auto">}</div><div dir="auto"><br></div><div dir="auto">And also:</div><div dir="auto"><br></div><div dir="auto">record S(Boolean b) {</div><div dir="auto">  Boolean b() { return false; }</div><div dir="auto">  book equals(Object o) { return true; }</div><div dir="auto">}</div><div dir="auto"><br></div><div dir="auto">from which we can deduce:</div><div dir="auto"><br></div><div dir="auto">false = S(true).b() <= true</div><div dir="auto"><br></div><div dir="auto">And</div><div dir="auto"><br></div><div dir="auto">true = R(false).b() <= false</div><div dir="auto"><br></div><div dir="auto">So true <= false and false <= true, hence true = false, and since you interpret “=“ as .equals, we are forced to make .equals() on Boolean say that true is equal to false.</div><div dir="auto"><br></div><div dir="auto">The key here is that <= in “R(a).p() <= a” is the one defined on the domain (type) of *a* and you don’t get to choose what it is as part of the definition of your record; it’s already chosen for you!</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto"></div></blockquote></div></div>