In [32]:
import forge
from puzzle.puzzlepedia import puzzlepedia

puzzle = puzzlepedia.parse("""
name in {Beth, Charles, David, Frank, Jessica, Karen, Taylor}
room in {small, large, left_small, left_large}
crime in {innocent*6, guilty}

#1 Background.
#2 Background.
#3 Guilty suspect is lying.
#4 Background.
#5 Background.
#6 Murder happened at 11am.
#7
small != guilty
large != guilty

#8 Background.

#9
if Beth == innocent:
  Charles == large
  David == large
  Jessica == left_large
  Taylor == left_large
# Beth seems to be in the small room.
Beth.small or Beth.left_small

#10
if Charles == innocent:
  Beth.small | Frank.small | Karen.small

#11
if David == innocent:
  Beth.left_small | Frank.left_small | Karen.left_small

#12
if Frank == innocent:
  Karen.small | Beth.left_small

#13
if Karen == innocent:
  Beth.small | Frank.left_small

#14
if Jessica == innocent:
  if Frank == innocent: Karen == innocent
  if Karen == innocent: Frank == innocent

#15
if Taylor == innocent:
  Frank.small | Karen.left_small
""")

In [ ]: