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