# Add clauses (This list is sufficient for this strategy) # PJ is the strategy to play jacks first, so all we need to model is all x PJ(x) <-> J(x), # In other words that the PJ strategy should play a card when it is a jack #Jacks kb.add_clause(~J4, PJ4) kb.add_clause(~J9, PJ9) kb.add_clause(~J14, PJ14) kb.add_clause(~J19, PJ19) kb.add_clause(~PJ4, J4) kb.add_clause(~PJ9, J9) kb.add_clause(~PJ14, J14) kb.add_clause(~PJ19, J19) #Aces kb.add_clause(~J0, PJ0) kb.add_clause(~J5, PJ5) kb.add_clause(~J10, PJ10) kb.add_clause(~J15, PJ15) kb.add_clause(~PJ0, J0) kb.add_clause(~PJ5, J5) kb.add_clause(~PJ10, J10) kb.add_clause(~PJ15, J15) # Print all models of the knowledge base for model in kb.models(): print model # Print out whether the KB is satisfiable (if there are no models, it is not satisfiable) print kb.satisfiable()
import kb, sys from kb import KB, Boolean, Integer, Constant # Define our symbols A = Boolean('A') B = Boolean('B') C = Boolean('C') # Create a new knowledge base kb = KB() # Add clauses kb.add_clause(A, B, C) kb.add_clause(~A, B) kb.add_clause(~B, C) kb.add_clause(B, ~C) # Print all models of the knowledge base for model in kb.models(): print(model) # Print out whether the KB is satisfiable (if there are no models, it is not satisfiable) print(kb.satisfiable())