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]:
In [3]:
can_reach(X,Y) <= (X.DDos==1) & link(X,Y) & (Y.DDos==0)
# via Z
can_reach(dns,Y)
Out[3]:
In [ ]: