In [1]:
from pyDatalog import pyDatalog

In [2]:
pyDatalog.create_terms('link, can_reach', 'X', 'Y', 'Z')

class DnsInfo(pyDatalog.Mixin): 
    
    def __init__(self, name, Infected, DDos): 
        super(DnsInfo, self).__init__()
        self.name = name
        self.Infected = Infected     
        self.DDos = DDos      
    
    def __repr__(self): # specifies how to display an Employee
        return self.name

dns = DnsInfo("w1.DnsInfo.com",0 ,1)
dns1 = DnsInfo("100.100.100.100",0 ,0)
dns2 = DnsInfo("w1.DnsInfo.com",0 ,0)
dns3 = DnsInfo("100.100.100.101",0 ,0)
dns4 = DnsInfo("100.100.100.102",0 ,0)
dns5 = DnsInfo("w1.DnsInfo.com",0 ,0)

+link(dns ,dns1)
+link(dns1 ,dns2)
+link(dns1 ,dns3)
+link(dns1 ,dns4)
+link(dns2 ,dns5)

link(X,Y) <= link(Y,X)


Out[2]:
link(X,Y) <= link(Y,X)

In [3]:
can_reach(X,Y) <= (X.DDos==1) & link(X,Y) & (Y.DDos==0)
# via Z
can_reach(dns,Y)


Out[3]:
[(100.100.100.100,)]

In [ ]: