First i input like this in the text box using wx.python:
participant(client)
participant(server)
key(kcs)
message(mes)
believes(client, shared(client, server, kcs))
believes(server, shared(client, server, kcs))
sees(server, encrypted(mes, kcs))
sees(client, encrypted(mes, kcs))
Then, i want to match that input text with the rules that I have in another file:
p.assertz("believes(A, said(B, X)):- participant(A), participant(B), A\=B, key(K), message(X), believes(A, shared(A, B, K)), sees(A, encrypted(X, K))")
p.assertz("believes(A, said(B, X)):- participant(A), participant(B), A\=B, key(K), message(X), believes(A, public(B, K)), sees(A, encrypted(X, K))")
p.assertz("believes(A, believes(B, X)):- participant(A), participant(B), A\=B, message(X), believes(A, fresh(X)), believes(A, said(B, X))")
p.assertz("believes(A, X):- participant(A), participant(B), A\=B, message(X), believes(A, controls(B, X)), believes(A, believes(B, X))")
p.assertz("believes(A, [X, Y]):- message(X), message(Y), X\=Y, participant(A), believes(A, X), believes(A, Y)")
p.assertz("believes(A, Y):- message(X), participant(A), member(Y, X), X\=Y, believes(A, X)")
p.assertz("believes(A, believes(B, Y)):- message(X), participant(A), participant(B), member(Y, X), X\=Y, believes(A, believes(B, X))")
p.assertz("believes(A, said(B, Y)):- message(X), participant(A), participant(B), member(Y, X), X\=Y, believes(A, said(B, X))")
p.assertz("believes(A, fresh([X, Y])):- message(X), message(Y), X\=Y, participant(A), believes(A, fresh(X))")
p.assertz("sees(A, Y):- message(X), participant(A), member(Y, X), X\=Y, sees(A, X)")
p.assertz("sees(A, X):- message(X), participant(A), participant(B), A\=B, believes(A, share(A, B, K)), sees(encrypted(X, K))")
p.assertz("sees(A, X):- message(X), participant(A), participant(B), A\=B, believes(A, public(B, K)), sees(encrypted(X, K))")
p.assertz("believes(A, shared(A,B,K)):- participant(A), participant(B), key(K), A\=B, believes(A, shared(B,A,K))")
p.assertz("believes(A, believes(B,shared(A,B,K))):- participant(A), participant(B), key(K), A\=B, believes(A, believes(B,shared(B,A,K)))")
I match it using iteration like this :
try:
for pquery in p.query("believes(A, said(B, X))"):
print pquery
pquery["A"], " believes ", pquery["B"], " believes ", pquery["X"]
if i >= 1:
print "true"
else:
print "false"
except:
print("False")
Iteration = rules, i have 14 rules, so i have 14 iterations
But when i run the program i get False answer, did i miss something in iteration?because i expect on true answer from the iterations. Need Help. Thank you very much.