Solution
Door 1 - tiger
Door 2 - lady


Xpress-Mosel Model

model 'trial6'

! Description  : The Sixth Trial
! Source       : Smullyan, R., (1991), The Lady or The Tiger, Oxford University Press
! Date written : Xpress-MP 16/12/99, Mosel 19/4/03
! Written by   : M J Chlond 

  uses 'mmxprs'
  
  parameters
    door  = 2
    prize = 2		! 1 = Lady, 2 = Tiger
  end-parameters

  declarations
    D = 1..door
    P = 1..prize
    x: array(D,P) of mpvar   ! x(i,j) = 1 if door i hides prize j, else 0
    t: array(D) of mpvar     ! t(i) = 1 if statement on door i is true, else 0
    d: array(1..2) of mpvar  ! dummy variables
  end-declarations

  any:= x(1,1)

  ! each door hides 1 prize
  forall(i in D)
    pca(i):= sum(j in P) x(i,j) = 1 

  ! if door i hides prize i then statement i is true else false
  forall(i in D)
    lca(i):= x(i,i) = t(i)

  ! if statement on door 1 is true (i.e. x(1,1)=x(2,1)) then set t(1) = 1, else t(1) = 0
  lcb1:= x(1,1)-x(2,1)-2*d(1) <= -1 
  lcb2:= x(1,1)-x(2,1)-d(1) >= -1

  lcb3:= x(1,1)-x(2,1)+2*d(2) >= 1
  lcb4:= x(1,1)-x(2,1)+2*d(2) <= 2

  lcb5:= d(1)+d(2)-t(1) <= 1
  lcb6:=d(1)+d(2)-2*t(1) >= 0

  ! if statement on door 2 is true then set t(2) = 1, else t(2) = 0
  lcc:= x(1,1) = t(2)

  forall(i in D,j in P)
    x(i,j) is_binary
  forall(i in D)
    t(i) is_binary
  forall(i in 1..2)
    d(i) is_binary
    
  minimise(any)

  forall(i in D) do
    forall(j in P)
      write(getsol(x(i,j)),' ')
    writeln
  end-do

  forall(i in D) do
    write(getsol(t(i)))
    writeln
  end-do
  
end-model