sine-patre/sine_patre.py

47 lines
1.4 KiB
Python

import fol
if __name__ == '__main__':
kb = fol.kb.Kb()
try:
if True:
kb.tell('Est(ALICE, L0, S0)')
kb.tell('Proche(L0, L1)')
kb.tell('Proche(L1, L2)')
kb.tell('Proche(L2, L3)')
kb.tell('Proche(L3, L4)')
kb.tell('Proche(L4, L5)')
kb.tell('Proche(L5, L6)')
kb.tell('Proche(L6, L7)')
kb.tell('(Est(ALICE, x, s) & Proche(x, y)) -> Poss(go(x, y), s)')
kb.tell('Poss(go(x, y), s) -> Est(ALICE, y, do(go(x, y), s))')
answer = kb.ask('Est(ALICE, place, situation)')
print(answer)
# [print(k) for k in kb.base]
if False:
print(f'{len(kb.base)}----------------')
[print(r) for r in kb.base]
print(f'{len(kb.base)}----------------')
print(answer)
if False:
for k, v in kb.indexes.items():
print('--------', k, '--------')
[print(p) for p in v]
else:
kb.tell('Friend(ALICE, BOB)')
kb.tell('Friend(BOB, CLAIRE)')
kb.tell('Friend(x, y) -> Friend(y, x)')
kb.tell('(Friend(x, y) & Friend(y, z)) -> Friend(x, z)')
answer = kb.ask('Friend(ALICE, x)')
print(answer)
# print('--------------------------------')
# [print(b) for b in kb.base]
except KeyboardInterrupt:
pass