Knights and Knaves is a classic knowledge and reasoning based model. Knights always tell the truth, knaves always lie.
Run puzzle.py to see the result of 4 pre programmed puzzles. The output will tell you who is a knight and who is a knave based on their own claims.
logic.py contains all of the prepositional logic and reasoning used to determine who is a knight and who is a knave