I believe that in context of the discussion Dick really meant to say commutative, not associative, transitive, reflexive, or any other such term.
-- Jess Holle Peter Becker wrote: > Hi Dick, > > the math guy in me just has to comment on your comments on > transitivity/reflexivity in #218 ;-) > > You got the transitivity part right, it means that if your relation > contains (A,B) and (B,C) then (A,C) is in there. This holds for > equivalence relations, which is what .equals() is supposed to be. If A > is equal to B and B is equal to C, then A and C are equal. > > Reflexivity is the property that for all As (A,A) is in your relation > (think "reflection" in the mirroring sense). That holds for equality, > too: all As are equal to themselves. But it is not what you where > talking about, which is symmetry. > > Symmetry means that if (A,B) is in your relation, then (B,A) is in > there, too. In terms of equality: if A is equal to B, then B has to be > equal to A. This is the property that is very commonly broken in > implementations of .equals, e.g. by using "instanceof" for checking > the type of the other class -- to ensure symmetry the class of the > other object has to be identical to the one implementing the method. > > > With reflexivity and symmetry you can also look at the opposite side: > > Anti-reflexivity means there's no (A,A) in your relation for any value of A. > > Anti-symmetry means if (A,B) is in there, (B,A) is guaranteed not to > be in there. > > Note that the anti-Xs are stronger than just saying it's not X since > they guarantee that something not true at all. For example the > "greater than" is anti-reflexive since nothing can be greater than > itself. > > > The two important combinations are: > > Reflexive, symmetric and transitive: an equivalence relation such as > .equals should be. > > Reflexive, anti-symmetrix and transitive: an order relation (or > "partial order") with "greater or equal" being the archetypical > example. Comparable/Comparator should implement that. > > > It's called "partial order", since it is not necessarily guaranteed > that everything compares. If everything compares one way or the other > (i.e. for all possible pairs of As and Bs you have either (A,B) or > (B,A) in your relation), then the relation is a "total order" such as > "greater or equal". A good example for a partial order that's not > total is "contains" on shapes: if you know that A does not contain B > you still can't say anything about B containing A. > > Sorry for letting the teacher out, but I hope it helps :-) > > Peter > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/javaposse?hl=en -~----------~----~----~----~------~----~------~--~---
