having a little trouble with the last part of the knights challenge. When run, it will print nothing for puzzle 3. I have been through the logic countless times now and in my head it seems to work. Any one know why this is not working as expected? Thanks in advance.
knowledge3 = And(
# Information given in the definition of a Knight and Knave puzzle
# Each character is either a knight or a Knave
Or(AKnight, AKnave),
Or(BKnight, BKnave),
Or(CKnight, CKnave),
# Not both
Biconditional(AKnight, Not(AKnave)),
Biconditional(AKnave, Not(AKnight)),
Biconditional(BKnight, Not(BKnave)),
Biconditional(BKnave, Not(BKnight)),
Biconditional(CKnight, Not(CKnave)),
Biconditional(CKnave, Not(CKnight)),
# Information about what the characters actually said
# A says either "I am a knight." or "I am a knave.", but you don't know which.
Or(Implication(AKnight, AKnight), Implication(AKnight, AKnave)),
Or(Implication(AKnave, Not(AKnight)), Implication(AKnave, Not(AKnave))),
# B says "A said 'I am a knave'."
Implication(BKnight, Or(Implication(AKnight, AKnave), Implication(AKnave, Not(AKnave)))),
Implication(BKnave, Or(Not(Implication(AKnight, AKnave)), Not(Implication(AKnave, Not(AKnave))))),
# B says "C is a knave."
Implication(BKnight, CKnave),
Implication(BKnave, CKnight),
# C says "A is a knight."
Implication(CKnight, AKnight),
Implication(CKnave, AKnave)
)