;; solve-puzzle
; play with amb, with enigms of Smullyan
; on the door 1 is writen : the is a draon in beind me, or a princess behind the other
; on the door 2 is writen : there is a pricess behind the other door
; Sur la porte 2 est inscrit : il y a une princesse dans l'autre cellule.
; Soit les affiches disent toutes les deux la vérité, soit elles mentent toutes les deux.
; Que contient la première cellule ? Et la seconde ?
(define (solve-puzzle)
(let* ((door1 (amb 'princess 'dragon)) ; behind the first door there is a princess or a dragon
(door2 (amb 'princess 'dragon))
(door1-true (or (eqv? door1 'dragon)
(eqv? door2 'princess)))
(door2-true (eqv? door1 'princess)))
(assert (or (and door1-true door2-true)
(and (not door1-true) (not door2-true))))
(list door1 door2)))