def reflexive(Relation,Set):
for a in Set:
if(a,a) not in Relation:
return False
return True
def symmetric(Relation,Set):
for a,b in Relation:
if (b,a) not in Relation:
return False
return True
def transitive(Relation,Set):
for a in Set:
for b in Set:
if(a,b) in Relation:
for c in Set:
if (b,c) in Relation and (a,c) not in Relation:
return False
return True
def irreflexive(Relation,Set):
for a in Set:
if (a,a) in Relation:
return False
return True
def antisymmetric(Relation,Set):
seen = set()
for a, b in Relation:
if a == b:
continue
if (b, a) in seen:
return False
seen.add((a, b))
return True
if __name__=="__main__":
Set=set([0,1,2,3])
R1=[(0,0),(1,1),(2,2),(3,3)]
R2=[(0,0),(0,2),(2,0),(2,2),(2,3),(3,2),(3,3)]
R3=[(0,0),(1,1),(1,2),(2,1),(2,2),(3,3)]
R4=[(0,0),(1,1),(1,3),(2,2),(2,3),(3,1),(3,2),(3,3)]
R5=[(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,2),(3,3)]
R6=[(1,2),(1,3),(2,1),(2,3),(3,2)]
for Relation in [R1,R2,R3,R4,R5,R6]:
print("Set=",Set)
print("Relation=",Relation)
print("Reflexive:",reflexive(Relation,Set))
print("Symmetric:",symmetric(Relation,Set))
print("Transitive:",transitive(Relation,Set))
print("Irreflexive:",irreflexive(Relation,Set))
print("AntiSymmetric:",antisymmetric(Relation,Set))
if(reflexive(Relation,Set)==True & symmetric(Relation,Set)==True & transitive(Relation,Set)==True):
print("Relation is Equivalence Relation on a Set")
else:
print("Not an Equivalence Relation on a Set")
if(reflexive(Relation,Set)==True & antisymmetric(Relation,Set)==True & transitive(Relation,Set)==True):
print("Partial Order Relation on a Set")
else:
print("Not a Partial Order Relation on a Set")
print(" ")