# If two equivalence classes share an element, they are the same class.
@prefix : <https://eyereasoner.github.io/eye/reasoning#>.
@prefix log: <http://www.w3.org/2000/10/swap/log#>.

{ ?x :inX true. } => { ?x :sim ?x. }.
{ ?x :sim ?y. } => { ?y :sim ?x. }.
{ ?x :sim ?y. ?y :sim ?z. } => { ?x :sim ?z. }.
{ ?u :sim ?x. } => { ?u :inClassOf ?x. }.
{ ?x :sim ?y. } => { (?x ?y) :sameClass true. }.
{ (?x ?y) :sameClass true. } => { (?y ?x) :sameClass true. }.
{ ?z :inClassOf ?x. ?z :inClassOf ?y. (?x ?y) :sameClass true. } => { (?x ?y ?z) :sharedMemberShowsSameClass true. }.

:a :inX true.
:b :inX true.
:c :inX true.
:b :sim :a.
:b :sim :c.

{ (?x ?y ?z) :sharedMemberShowsSameClass true. ?x log:notEqualTo ?y. } log:query { :result :sameClassBecauseOfSharedMember (?x ?y ?z). }.
