On Fri, Jul 7, 2017 at 4:43 PM, Steve D'Aprano <steve+pyt...@pearwood.info> wrote: > On Fri, 7 Jul 2017 01:41 am, Marko Rauhamaa wrote: >> In Second-Order Logic, you can define identity directly: >> >> ∀x ∀y x = y ↔ ∀P (P(x) ↔ P(y)) > > Translating to English: > > For all x, for all y, x equals y if and only if for all P > (P(x) if and only if P(y)) > > > That might be sufficient for second-order logic, but it won't do for > programming. Defining if-and-only-if for functions that can return more than > two values (true and false) requires having a definition of equality, which > would make the definition circular.
It sounds to me like this has defined equality, not identity, right? In Python, you could have x and y be two different integers with the same value, and the return values of all functions would be indistinguishable. Unless you're including the 'id' function, in which case... welcome to circular reasoning again. ChrisA -- https://mail.python.org/mailman/listinfo/python-list