TSTP Solution File: PUZ025-1 by Bliksem---1.12

View Problem - Process Solution

%------------------------------------------------------------------------------
% File     : Bliksem---1.12
% Problem  : PUZ025-1 : TPTP v8.1.0. Released v1.0.0.
% Transfm  : none
% Format   : tptp:raw
% Command  : bliksem %s

% Computer : n029.cluster.edu
% Model    : x86_64 x86_64
% CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 2.10GHz
% Memory   : 8042.1875MB
% OS       : Linux 3.10.0-693.el7.x86_64
% CPULimit : 300s
% WCLimit  : 0s
% DateTime : Mon Jul 18 17:58:13 EDT 2022

% Result   : Unsatisfiable 0.82s 1.20s
% Output   : Refutation 0.82s
% Verified : 
% SZS Type : -

% Comments : 
%------------------------------------------------------------------------------
%----WARNING: Could not form TPTP format derivation
%------------------------------------------------------------------------------
%----ORIGINAL SYSTEM OUTPUT
% 0.11/0.12  % Problem  : PUZ025-1 : TPTP v8.1.0. Released v1.0.0.
% 0.11/0.13  % Command  : bliksem %s
% 0.14/0.34  % Computer : n029.cluster.edu
% 0.14/0.34  % Model    : x86_64 x86_64
% 0.14/0.34  % CPU      : Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz
% 0.14/0.34  % Memory   : 8042.1875MB
% 0.14/0.34  % OS       : Linux 3.10.0-693.el7.x86_64
% 0.14/0.34  % CPULimit : 300
% 0.14/0.34  % DateTime : Sat May 28 23:09:28 EDT 2022
% 0.14/0.34  % CPUTime  : 
% 0.82/1.20  *** allocated 10000 integers for termspace/termends
% 0.82/1.20  *** allocated 10000 integers for clauses
% 0.82/1.20  *** allocated 10000 integers for justifications
% 0.82/1.20  Bliksem 1.12
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  Automatic Strategy Selection
% 0.82/1.20  
% 0.82/1.20  Clauses:
% 0.82/1.20  [
% 0.82/1.20     [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X ) ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( says( X, Y ) ) ), 
% 0.82/1.20    'a_truth'( Y ) ],
% 0.82/1.20     [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( says( X, Y ) ) ), ~( 
% 0.82/1.20    'a_truth'( Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( X ) ), ~( 'a_truth'( says( Y, X ) ) ), 'a_truth'( 
% 0.82/1.20    truthteller( Y ) ) ],
% 0.82/1.20     [ 'a_truth'( X ), ~( 'a_truth'( says( Y, X ) ) ), 'a_truth'( liar( Y ) )
% 0.82/1.20     ],
% 0.82/1.20     [ ~( people( X, Y, Z ) ), ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( 
% 0.82/1.20    liar( Y ) ) ), 'a_truth'( 'equal_type'( X, Y ) ) ],
% 0.82/1.20     [ ~( people( X, Y, Z ) ), ~( 'a_truth'( truthteller( X ) ) ), ~( 
% 0.82/1.20    'a_truth'( truthteller( Y ) ) ), 'a_truth'( 'equal_type'( X, Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), ~( 'a_truth'( truthteller( X )
% 0.82/1.20     ) ), 'a_truth'( truthteller( Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), ~( 'a_truth'( liar( X ) ) ), 
% 0.82/1.20    'a_truth'( liar( Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( 'equal_type'( X, Y ) )
% 0.82/1.20    , 'a_truth'( liar( Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( 'equal_type'( X, Y ) ), 
% 0.82/1.20    'a_truth'( truthteller( Y ) ) ],
% 0.82/1.20     [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), 'a_truth'( 'equal_type'( Y, X
% 0.82/1.20     ) ) ],
% 0.82/1.20     [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( truthteller( X ) ) ), ~( 
% 0.82/1.20    'a_truth'( Y ) ), answer( yes ) ],
% 0.82/1.20     [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( truthteller( X ) ) ), 
% 0.82/1.20    'a_truth'( Y ), answer( no ) ],
% 0.82/1.20     [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( 
% 0.82/1.20    Y ) ), answer( no ) ],
% 0.82/1.20     [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y )
% 0.82/1.20    , answer( yes ) ],
% 0.82/1.20     [ people( b, c, a ) ],
% 0.82/1.20     [ people( a, b, a ) ],
% 0.82/1.20     [ people( a, c, b ) ],
% 0.82/1.20     [ people( c, b, a ) ],
% 0.82/1.20     [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ],
% 0.82/1.20     [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ],
% 0.82/1.20     [ ~( answer( X ) ) ]
% 0.82/1.20  ] .
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  percentage equality = 0.000000, percentage horn = 0.750000
% 0.82/1.20  This a non-horn, non-equality problem
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  Options Used:
% 0.82/1.20  
% 0.82/1.20  useres =            1
% 0.82/1.20  useparamod =        0
% 0.82/1.20  useeqrefl =         0
% 0.82/1.20  useeqfact =         0
% 0.82/1.20  usefactor =         1
% 0.82/1.20  usesimpsplitting =  0
% 0.82/1.20  usesimpdemod =      0
% 0.82/1.20  usesimpres =        3
% 0.82/1.20  
% 0.82/1.20  resimpinuse      =  1000
% 0.82/1.20  resimpclauses =     20000
% 0.82/1.20  substype =          standard
% 0.82/1.20  backwardsubs =      1
% 0.82/1.20  selectoldest =      5
% 0.82/1.20  
% 0.82/1.20  litorderings [0] =  split
% 0.82/1.20  litorderings [1] =  liftord
% 0.82/1.20  
% 0.82/1.20  termordering =      none
% 0.82/1.20  
% 0.82/1.20  litapriori =        1
% 0.82/1.20  termapriori =       0
% 0.82/1.20  litaposteriori =    0
% 0.82/1.20  termaposteriori =   0
% 0.82/1.20  demodaposteriori =  0
% 0.82/1.20  ordereqreflfact =   0
% 0.82/1.20  
% 0.82/1.20  litselect =         none
% 0.82/1.20  
% 0.82/1.20  maxweight =         15
% 0.82/1.20  maxdepth =          30000
% 0.82/1.20  maxlength =         115
% 0.82/1.20  maxnrvars =         195
% 0.82/1.20  excuselevel =       1
% 0.82/1.20  increasemaxweight = 1
% 0.82/1.20  
% 0.82/1.20  maxselected =       10000000
% 0.82/1.20  maxnrclauses =      10000000
% 0.82/1.20  
% 0.82/1.20  showgenerated =    0
% 0.82/1.20  showkept =         0
% 0.82/1.20  showselected =     0
% 0.82/1.20  showdeleted =      0
% 0.82/1.20  showresimp =       1
% 0.82/1.20  showstatus =       2000
% 0.82/1.20  
% 0.82/1.20  prologoutput =     1
% 0.82/1.20  nrgoals =          5000000
% 0.82/1.20  totalproof =       1
% 0.82/1.20  
% 0.82/1.20  Symbols occurring in the translation:
% 0.82/1.20  
% 0.82/1.20  {}  [0, 0]      (w:1, o:2, a:1, s:1, b:0), 
% 0.82/1.20  .  [1, 2]      (w:1, o:30, a:1, s:1, b:0), 
% 0.82/1.20  !  [4, 1]      (w:0, o:21, a:1, s:1, b:0), 
% 0.82/1.20  =  [13, 2]      (w:1, o:0, a:0, s:1, b:0), 
% 0.82/1.20  ==>  [14, 2]      (w:1, o:0, a:0, s:1, b:0), 
% 0.82/1.20  truthteller  [40, 1]      (w:1, o:26, a:1, s:1, b:0), 
% 0.82/1.20  'a_truth'  [41, 1]      (w:1, o:27, a:1, s:1, b:0), 
% 0.82/1.20  liar  [42, 1]      (w:1, o:28, a:1, s:1, b:0), 
% 0.82/1.20  says  [45, 2]      (w:1, o:55, a:1, s:1, b:0), 
% 0.82/1.20  people  [49, 3]      (w:1, o:58, a:1, s:1, b:0), 
% 0.82/1.20  'equal_type'  [50, 2]      (w:1, o:56, a:1, s:1, b:0), 
% 0.82/1.20  'ask_1_if_2'  [51, 2]      (w:1, o:57, a:1, s:1, b:0), 
% 0.82/1.20  yes  [52, 0]      (w:1, o:15, a:1, s:1, b:0), 
% 0.82/1.20  answer  [53, 1]      (w:1, o:29, a:1, s:1, b:0), 
% 0.82/1.20  no  [54, 0]      (w:1, o:16, a:1, s:1, b:0), 
% 0.82/1.20  b  [55, 0]      (w:1, o:18, a:1, s:1, b:0), 
% 0.82/1.20  c  [56, 0]      (w:1, o:19, a:1, s:1, b:0), 
% 0.82/1.20  a  [57, 0]      (w:1, o:17, a:1, s:1, b:0).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  Starting Search:
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  Bliksems!, er is een bewijs:
% 0.82/1.20  % SZS status Unsatisfiable
% 0.82/1.20  % SZS output start Refutation
% 0.82/1.20  
% 0.82/1.20  clause( 0, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 1, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X ) )
% 0.82/1.20     ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 3, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 'a_truth'( 
% 0.82/1.20    says( X, Y ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 4, [ 'a_truth'( truthteller( Y ) ), ~( 'a_truth'( says( Y, X ) ) )
% 0.82/1.20    , ~( 'a_truth'( X ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 5, [ 'a_truth'( liar( Y ) ), ~( 'a_truth'( says( Y, X ) ) ), 
% 0.82/1.20    'a_truth'( X ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 8, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( truthteller( Y
% 0.82/1.20     ) ), ~( 'a_truth'( 'equal_type'( X, Y ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 10, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( liar( Y ) ), 
% 0.82/1.20    'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 11, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( truthteller( Y ) ), 
% 0.82/1.20    'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 12, [ 'a_truth'( 'equal_type'( Y, X ) ), ~( 'a_truth'( 'equal_type'( 
% 0.82/1.20    X, Y ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 13, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), 
% 0.82/1.20    answer( yes ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 15, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), answer( no
% 0.82/1.20     ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 16, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), answer( yes ), 
% 0.82/1.20    ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 21, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 22, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 23, [ ~( answer( X ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 42, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( b, c
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 45, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( c, b
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 54, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( b
% 0.82/1.20    , c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 58, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( c
% 0.82/1.20    , b ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 73, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( b, c ) ) ]
% 0.82/1.20     )
% 0.82/1.20  .
% 0.82/1.20  clause( 81, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( c, b ) ) ]
% 0.82/1.20     )
% 0.82/1.20  .
% 0.82/1.20  clause( 91, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ), 
% 0.82/1.20    ~( 'a_truth'( liar( c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 112, [ 'a_truth'( truthteller( b ) ), 'a_truth'( truthteller( c ) )
% 0.82/1.20    , ~( 'a_truth'( liar( a ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 117, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( truthteller( c
% 0.82/1.20     ) ) ), 'a_truth'( liar( a ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 159, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( truthteller( 
% 0.82/1.20    a ) ), 'a_truth'( liar( b ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 178, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.82/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 179, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.82/1.20    'equal_type'( a, b ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 180, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ) ]
% 0.82/1.20     )
% 0.82/1.20  .
% 0.82/1.20  clause( 181, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ) ]
% 0.82/1.20     )
% 0.82/1.20  .
% 0.82/1.20  clause( 188, [ ~( 'a_truth'( truthteller( b ) ) ), ~( 'a_truth'( 
% 0.82/1.20    truthteller( c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 193, [ ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 202, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.82/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 203, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( 'equal_type'( a, 
% 0.82/1.20    b ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 211, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), ~( 'ask_1_if_2'( 
% 0.82/1.20    X, Y ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 212, [ ~( 'a_truth'( liar( c ) ) ) ] )
% 0.82/1.20  .
% 0.82/1.20  clause( 217, [] )
% 0.82/1.20  .
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  % SZS output end Refutation
% 0.82/1.20  found a proof!
% 0.82/1.20  
% 0.82/1.20  % ABCDEFGHIJKLMNOPQRSTUVWXYZ
% 0.82/1.20  
% 0.82/1.20  initialclauses(
% 0.82/1.20  [ clause( 219, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ] )
% 0.82/1.20  , clause( 220, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  , clause( 221, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( says( X
% 0.82/1.20    , Y ) ) ), 'a_truth'( Y ) ] )
% 0.82/1.20  , clause( 222, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( says( X, Y ) )
% 0.82/1.20     ), ~( 'a_truth'( Y ) ) ] )
% 0.82/1.20  , clause( 223, [ ~( 'a_truth'( X ) ), ~( 'a_truth'( says( Y, X ) ) ), 
% 0.82/1.20    'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , clause( 224, [ 'a_truth'( X ), ~( 'a_truth'( says( Y, X ) ) ), 'a_truth'( 
% 0.82/1.20    liar( Y ) ) ] )
% 0.82/1.20  , clause( 225, [ ~( people( X, Y, Z ) ), ~( 'a_truth'( liar( X ) ) ), ~( 
% 0.82/1.20    'a_truth'( liar( Y ) ) ), 'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.82/1.20  , clause( 226, [ ~( people( X, Y, Z ) ), ~( 'a_truth'( truthteller( X ) ) )
% 0.82/1.20    , ~( 'a_truth'( truthteller( Y ) ) ), 'a_truth'( 'equal_type'( X, Y ) ) ]
% 0.82/1.20     )
% 0.82/1.20  , clause( 227, [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), ~( 'a_truth'( 
% 0.82/1.20    truthteller( X ) ) ), 'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , clause( 228, [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), ~( 'a_truth'( liar( 
% 0.82/1.20    X ) ) ), 'a_truth'( liar( Y ) ) ] )
% 0.82/1.20  , clause( 229, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( 
% 0.82/1.20    'equal_type'( X, Y ) ), 'a_truth'( liar( Y ) ) ] )
% 0.82/1.20  , clause( 230, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( 'equal_type'( X, Y
% 0.82/1.20     ) ), 'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , clause( 231, [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), 'a_truth'( 
% 0.82/1.20    'equal_type'( Y, X ) ) ] )
% 0.82/1.20  , clause( 232, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( truthteller( X )
% 0.82/1.20     ) ), ~( 'a_truth'( Y ) ), answer( yes ) ] )
% 0.82/1.20  , clause( 233, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( truthteller( X )
% 0.82/1.20     ) ), 'a_truth'( Y ), answer( no ) ] )
% 0.82/1.20  , clause( 234, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), 
% 0.82/1.20    ~( 'a_truth'( Y ) ), answer( no ) ] )
% 0.82/1.20  , clause( 235, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), 
% 0.82/1.20    'a_truth'( Y ), answer( yes ) ] )
% 0.82/1.20  , clause( 236, [ people( b, c, a ) ] )
% 0.82/1.20  , clause( 237, [ people( a, b, a ) ] )
% 0.82/1.20  , clause( 238, [ people( a, c, b ) ] )
% 0.82/1.20  , clause( 239, [ people( c, b, a ) ] )
% 0.82/1.20  , clause( 240, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  , clause( 241, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.82/1.20  , clause( 242, [ ~( answer( X ) ) ] )
% 0.82/1.20  ] ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 0, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ] )
% 0.82/1.20  , clause( 219, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 
% 0.82/1.20    1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 1, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X ) )
% 0.82/1.20     ) ] )
% 0.82/1.20  , clause( 220, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 
% 0.82/1.20    1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 3, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 'a_truth'( 
% 0.82/1.20    says( X, Y ) ) ) ] )
% 0.82/1.20  , clause( 222, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( says( X, Y ) )
% 0.82/1.20     ), ~( 'a_truth'( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.82/1.20     ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 4, [ 'a_truth'( truthteller( Y ) ), ~( 'a_truth'( says( Y, X ) ) )
% 0.82/1.20    , ~( 'a_truth'( X ) ) ] )
% 0.82/1.20  , clause( 223, [ ~( 'a_truth'( X ) ), ~( 'a_truth'( says( Y, X ) ) ), 
% 0.82/1.20    'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 2
% 0.82/1.20     ), ==>( 1, 1 ), ==>( 2, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 5, [ 'a_truth'( liar( Y ) ), ~( 'a_truth'( says( Y, X ) ) ), 
% 0.82/1.20    'a_truth'( X ) ] )
% 0.82/1.20  , clause( 224, [ 'a_truth'( X ), ~( 'a_truth'( says( Y, X ) ) ), 'a_truth'( 
% 0.82/1.20    liar( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 2
% 0.82/1.20     ), ==>( 1, 1 ), ==>( 2, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 8, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( truthteller( Y
% 0.82/1.20     ) ), ~( 'a_truth'( 'equal_type'( X, Y ) ) ) ] )
% 0.82/1.20  , clause( 227, [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), ~( 'a_truth'( 
% 0.82/1.20    truthteller( X ) ) ), 'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 2
% 0.82/1.20     ), ==>( 1, 0 ), ==>( 2, 1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 10, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( liar( Y ) ), 
% 0.82/1.20    'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.82/1.20  , clause( 229, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( 
% 0.82/1.20    'equal_type'( X, Y ) ), 'a_truth'( liar( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.82/1.20     ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 11, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( truthteller( Y ) ), 
% 0.82/1.20    'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.82/1.20  , clause( 230, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( 'equal_type'( X, Y
% 0.82/1.20     ) ), 'a_truth'( truthteller( Y ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.82/1.20     ), ==>( 1, 2 ), ==>( 2, 1 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 12, [ 'a_truth'( 'equal_type'( Y, X ) ), ~( 'a_truth'( 'equal_type'( 
% 0.82/1.20    X, Y ) ) ) ] )
% 0.82/1.20  , clause( 231, [ ~( 'a_truth'( 'equal_type'( X, Y ) ) ), 'a_truth'( 
% 0.82/1.20    'equal_type'( Y, X ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 1
% 0.82/1.20     ), ==>( 1, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 13, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), 
% 0.82/1.20    answer( yes ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  , clause( 232, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( truthteller( X )
% 0.82/1.20     ) ), ~( 'a_truth'( Y ) ), answer( yes ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 3
% 0.82/1.20     ), ==>( 1, 0 ), ==>( 2, 1 ), ==>( 3, 2 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 15, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), answer( no
% 0.82/1.20     ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  , clause( 234, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), 
% 0.82/1.20    ~( 'a_truth'( Y ) ), answer( no ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 3
% 0.82/1.20     ), ==>( 1, 0 ), ==>( 2, 1 ), ==>( 3, 2 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 16, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), answer( yes ), 
% 0.82/1.20    ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.82/1.20  , clause( 235, [ ~( 'ask_1_if_2'( X, Y ) ), ~( 'a_truth'( liar( X ) ) ), 
% 0.82/1.20    'a_truth'( Y ), answer( yes ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 3
% 0.82/1.20     ), ==>( 1, 0 ), ==>( 2, 1 ), ==>( 3, 2 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 21, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  , clause( 240, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 22, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.82/1.20  , clause( 241, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.82/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 23, [ ~( answer( X ) ) ] )
% 0.82/1.20  , clause( 242, [ ~( answer( X ) ) ] )
% 0.82/1.20  , substitution( 0, [ :=( X, X )] ), permutation( 0, [ ==>( 0, 0 )] ) ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  resolution(
% 0.82/1.20  clause( 299, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( b, 
% 0.82/1.20    c ) ) ) ] )
% 0.82/1.20  , clause( 3, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.82/1.20    'a_truth'( says( X, Y ) ) ) ] )
% 0.82/1.20  , 2, clause( 21, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  , 0, substitution( 0, [ :=( X, a ), :=( Y, 'equal_type'( b, c ) )] ), 
% 0.82/1.20    substitution( 1, [] )).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 42, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( b, c
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  , clause( 299, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( b
% 0.82/1.20    , c ) ) ) ] )
% 0.82/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.82/1.20     ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  resolution(
% 0.82/1.20  clause( 300, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( c, 
% 0.82/1.20    b ) ) ) ] )
% 0.82/1.20  , clause( 42, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( b
% 0.82/1.20    , c ) ) ) ] )
% 0.82/1.20  , 1, clause( 12, [ 'a_truth'( 'equal_type'( Y, X ) ), ~( 'a_truth'( 
% 0.82/1.20    'equal_type'( X, Y ) ) ) ] )
% 0.82/1.20  , 0, substitution( 0, [] ), substitution( 1, [ :=( X, c ), :=( Y, b )] )
% 0.82/1.20    ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 45, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( c, b
% 0.82/1.20     ) ) ) ] )
% 0.82/1.20  , clause( 300, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( c
% 0.82/1.20    , b ) ) ) ] )
% 0.82/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.82/1.20     ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  resolution(
% 0.82/1.20  clause( 301, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( b
% 0.82/1.20    , c ) ) ) ] )
% 0.82/1.20  , clause( 4, [ 'a_truth'( truthteller( Y ) ), ~( 'a_truth'( says( Y, X ) )
% 0.82/1.20     ), ~( 'a_truth'( X ) ) ] )
% 0.82/1.20  , 1, clause( 21, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.82/1.20  , 0, substitution( 0, [ :=( X, 'equal_type'( b, c ) ), :=( Y, a )] ), 
% 0.82/1.20    substitution( 1, [] )).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  subsumption(
% 0.82/1.20  clause( 54, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( b
% 0.82/1.20    , c ) ) ) ] )
% 0.82/1.20  , clause( 301, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( 
% 0.82/1.20    b, c ) ) ) ] )
% 0.82/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.82/1.20     ).
% 0.82/1.20  
% 0.82/1.20  
% 0.82/1.20  resolution(
% 0.82/1.20  clause( 303, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( c
% 0.86/1.20    , b ) ) ) ] )
% 0.86/1.20  , clause( 54, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( 
% 0.86/1.20    b, c ) ) ) ] )
% 0.86/1.20  , 1, clause( 12, [ 'a_truth'( 'equal_type'( Y, X ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( X, Y ) ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [] ), substitution( 1, [ :=( X, c ), :=( Y, b )] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 58, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( c
% 0.86/1.20    , b ) ) ) ] )
% 0.86/1.20  , clause( 303, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( 
% 0.86/1.20    c, b ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 304, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( b, c ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 5, [ 'a_truth'( liar( Y ) ), ~( 'a_truth'( says( Y, X ) ) ), 
% 0.86/1.20    'a_truth'( X ) ] )
% 0.86/1.20  , 1, clause( 21, [ 'a_truth'( says( a, 'equal_type'( b, c ) ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [ :=( X, 'equal_type'( b, c ) ), :=( Y, a )] ), 
% 0.86/1.20    substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 73, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( b, c ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 304, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( b, c ) )
% 0.86/1.20     ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 305, [ 'a_truth'( 'equal_type'( c, b ) ), 'a_truth'( liar( a ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 12, [ 'a_truth'( 'equal_type'( Y, X ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( X, Y ) ) ) ] )
% 0.86/1.20  , 1, clause( 73, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( b, c )
% 0.86/1.20     ) ] )
% 0.86/1.20  , 1, substitution( 0, [ :=( X, b ), :=( Y, c )] ), substitution( 1, [] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 81, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( c, b ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 305, [ 'a_truth'( 'equal_type'( c, b ) ), 'a_truth'( liar( a ) )
% 0.86/1.20     ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 306, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( liar( c ) ) ), 
% 0.86/1.20    'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , clause( 45, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( 'equal_type'( c
% 0.86/1.20    , b ) ) ) ] )
% 0.86/1.20  , 1, clause( 11, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( truthteller( Y )
% 0.86/1.20     ), 'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [] ), substitution( 1, [ :=( X, c ), :=( Y, b )] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 91, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ), 
% 0.86/1.20    ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , clause( 306, [ ~( 'a_truth'( liar( a ) ) ), ~( 'a_truth'( liar( c ) ) ), 
% 0.86/1.20    'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 2 ), ==>( 2
% 0.86/1.20    , 0 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 308, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ), 
% 0.86/1.20    'a_truth'( truthteller( c ) ) ] )
% 0.86/1.20  , clause( 91, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) )
% 0.86/1.20    , ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , 2, clause( 0, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , 1, substitution( 0, [] ), substitution( 1, [ :=( X, c )] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 112, [ 'a_truth'( truthteller( b ) ), 'a_truth'( truthteller( c ) )
% 0.86/1.20    , ~( 'a_truth'( liar( a ) ) ) ] )
% 0.86/1.20  , clause( 308, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) )
% 0.86/1.20    , 'a_truth'( truthteller( c ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 2 ), ==>( 2
% 0.86/1.20    , 1 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 309, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( truthteller( 
% 0.86/1.20    b ) ), 'a_truth'( liar( a ) ) ] )
% 0.86/1.20  , clause( 8, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( truthteller( 
% 0.86/1.20    Y ) ), ~( 'a_truth'( 'equal_type'( X, Y ) ) ) ] )
% 0.86/1.20  , 2, clause( 81, [ 'a_truth'( liar( a ) ), 'a_truth'( 'equal_type'( c, b )
% 0.86/1.20     ) ] )
% 0.86/1.20  , 1, substitution( 0, [ :=( X, c ), :=( Y, b )] ), substitution( 1, [] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 117, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( truthteller( c
% 0.86/1.20     ) ) ), 'a_truth'( liar( a ) ) ] )
% 0.86/1.20  , clause( 309, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( truthteller( 
% 0.86/1.20    b ) ), 'a_truth'( liar( a ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 ), ==>( 2
% 0.86/1.20    , 2 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 311, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( truthteller( c
% 0.86/1.20     ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , clause( 58, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( 'equal_type'( 
% 0.86/1.20    c, b ) ) ) ] )
% 0.86/1.20  , 1, clause( 10, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( liar( Y )
% 0.86/1.20     ), 'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [] ), substitution( 1, [ :=( X, c ), :=( Y, b )] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 159, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( truthteller( 
% 0.86/1.20    a ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , clause( 311, [ 'a_truth'( truthteller( a ) ), ~( 'a_truth'( truthteller( 
% 0.86/1.20    c ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 ), ==>( 2
% 0.86/1.20    , 2 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 314, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , clause( 23, [ ~( answer( X ) ) ] )
% 0.86/1.20  , 0, clause( 13, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) )
% 0.86/1.20    , answer( yes ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [ :=( X, yes )] ), substitution( 1, [ :=( X, X ), 
% 0.86/1.20    :=( Y, Y )] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 178, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , clause( 314, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), 
% 0.86/1.20    ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.86/1.20     ), ==>( 1, 1 ), ==>( 2, 2 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 316, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( a, b ) ) ) ] )
% 0.86/1.20  , clause( 178, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( Y ) ), 
% 0.86/1.20    ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, clause( 22, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [ :=( X, c ), :=( Y, 'equal_type'( a, b ) )] ), 
% 0.86/1.20    substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 179, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( a, b ) ) ) ] )
% 0.86/1.20  , clause( 316, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( a, b ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 317, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( a ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , clause( 179, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( a, b ) ) ) ] )
% 0.86/1.20  , 1, clause( 10, [ ~( 'a_truth'( truthteller( X ) ) ), 'a_truth'( liar( Y )
% 0.86/1.20     ), 'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [] ), substitution( 1, [ :=( X, a ), :=( Y, b )] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 318, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ), 
% 0.86/1.20    ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , clause( 317, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( a ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , 1, clause( 159, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( 
% 0.86/1.20    truthteller( a ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , 1, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 319, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ), 
% 0.86/1.20    'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , clause( 318, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) )
% 0.86/1.20    , ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , 0, 2, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 320, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 319, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) )
% 0.86/1.20    , 'a_truth'( liar( b ) ) ] )
% 0.86/1.20  , 1, 2, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 180, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 320, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b ) )
% 0.86/1.20     ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 322, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( liar( a )
% 0.86/1.20     ) ), 'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , clause( 179, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    'equal_type'( a, b ) ) ) ] )
% 0.86/1.20  , 1, clause( 11, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( truthteller( Y )
% 0.86/1.20     ), 'a_truth'( 'equal_type'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [] ), substitution( 1, [ :=( X, a ), :=( Y, b )] )
% 0.86/1.20    ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 323, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) ), 
% 0.86/1.20    'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ) ] )
% 0.86/1.20  , clause( 322, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( liar( a
% 0.86/1.20     ) ) ), 'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , 0, clause( 112, [ 'a_truth'( truthteller( b ) ), 'a_truth'( truthteller( 
% 0.86/1.20    c ) ), ~( 'a_truth'( liar( a ) ) ) ] )
% 0.86/1.20  , 1, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 324, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) ), 
% 0.86/1.20    'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , clause( 323, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) )
% 0.86/1.20    , 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ) ] )
% 0.86/1.20  , 0, 3, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 325, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 324, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) )
% 0.86/1.20    , 'a_truth'( truthteller( b ) ) ] )
% 0.86/1.20  , 1, 2, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 181, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 325, [ ~( 'a_truth'( liar( a ) ) ), 'a_truth'( truthteller( b ) )
% 0.86/1.20     ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 1 ), ==>( 1, 0 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 326, [ ~( 'a_truth'( truthteller( b ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 1, [ ~( 'a_truth'( truthteller( X ) ) ), ~( 'a_truth'( liar( X )
% 0.86/1.20     ) ) ] )
% 0.86/1.20  , 1, clause( 180, [ ~( 'a_truth'( truthteller( c ) ) ), 'a_truth'( liar( b
% 0.86/1.20     ) ) ] )
% 0.86/1.20  , 1, substitution( 0, [ :=( X, b )] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 188, [ ~( 'a_truth'( truthteller( b ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 326, [ ~( 'a_truth'( truthteller( b ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 327, [ 'a_truth'( truthteller( b ) ), 'a_truth'( truthteller( b ) )
% 0.86/1.20    , ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 181, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( liar( a ) ) )
% 0.86/1.20     ] )
% 0.86/1.20  , 1, clause( 117, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ), 'a_truth'( liar( a ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 328, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( truthteller( c
% 0.86/1.20     ) ) ) ] )
% 0.86/1.20  , clause( 327, [ 'a_truth'( truthteller( b ) ), 'a_truth'( truthteller( b )
% 0.86/1.20     ), ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , 0, 1, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 331, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 188, [ ~( 'a_truth'( truthteller( b ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , 0, clause( 328, [ 'a_truth'( truthteller( b ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 332, [ ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 331, [ ~( 'a_truth'( truthteller( c ) ) ), ~( 'a_truth'( 
% 0.86/1.20    truthteller( c ) ) ) ] )
% 0.86/1.20  , 0, 1, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 193, [ ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , clause( 332, [ ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 335, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , clause( 23, [ ~( answer( X ) ) ] )
% 0.86/1.20  , 0, clause( 15, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), answer( 
% 0.86/1.20    no ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [ :=( X, no )] ), substitution( 1, [ :=( X, X ), :=( 
% 0.86/1.20    Y, Y )] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 202, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , clause( 335, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.86/1.20     ), ==>( 1, 1 ), ==>( 2, 2 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 337, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( 'equal_type'( a, 
% 0.86/1.20    b ) ) ) ] )
% 0.86/1.20  , clause( 202, [ ~( 'a_truth'( liar( X ) ) ), ~( 'a_truth'( Y ) ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, clause( 22, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [ :=( X, c ), :=( Y, 'equal_type'( a, b ) )] ), 
% 0.86/1.20    substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 203, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( 'equal_type'( a, 
% 0.86/1.20    b ) ) ) ] )
% 0.86/1.20  , clause( 337, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( 'equal_type'( a
% 0.86/1.20    , b ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 ), ==>( 1, 1 )] )
% 0.86/1.20     ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 338, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), ~( 'ask_1_if_2'( 
% 0.86/1.20    X, Y ) ) ] )
% 0.86/1.20  , clause( 23, [ ~( answer( X ) ) ] )
% 0.86/1.20  , 0, clause( 16, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), answer( yes
% 0.86/1.20     ), ~( 'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, substitution( 0, [ :=( X, yes )] ), substitution( 1, [ :=( X, X ), 
% 0.86/1.20    :=( Y, Y )] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 211, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), ~( 'ask_1_if_2'( 
% 0.86/1.20    X, Y ) ) ] )
% 0.86/1.20  , clause( 338, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , substitution( 0, [ :=( X, X ), :=( Y, Y )] ), permutation( 0, [ ==>( 0, 0
% 0.86/1.20     ), ==>( 1, 1 ), ==>( 2, 2 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 339, [ ~( 'a_truth'( liar( c ) ) ), 'a_truth'( 'equal_type'( a, b )
% 0.86/1.20     ) ] )
% 0.86/1.20  , clause( 211, [ ~( 'a_truth'( liar( X ) ) ), 'a_truth'( Y ), ~( 
% 0.86/1.20    'ask_1_if_2'( X, Y ) ) ] )
% 0.86/1.20  , 2, clause( 22, [ 'ask_1_if_2'( c, 'equal_type'( a, b ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [ :=( X, c ), :=( Y, 'equal_type'( a, b ) )] ), 
% 0.86/1.20    substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 340, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( liar( c ) ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , clause( 203, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( 'equal_type'( a
% 0.86/1.20    , b ) ) ) ] )
% 0.86/1.20  , 1, clause( 339, [ ~( 'a_truth'( liar( c ) ) ), 'a_truth'( 'equal_type'( a
% 0.86/1.20    , b ) ) ] )
% 0.86/1.20  , 1, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  factor(
% 0.86/1.20  clause( 341, [ ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , clause( 340, [ ~( 'a_truth'( liar( c ) ) ), ~( 'a_truth'( liar( c ) ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , 0, 1, substitution( 0, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 212, [ ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , clause( 341, [ ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [ ==>( 0, 0 )] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 342, [ 'a_truth'( truthteller( c ) ) ] )
% 0.86/1.20  , clause( 212, [ ~( 'a_truth'( liar( c ) ) ) ] )
% 0.86/1.20  , 0, clause( 0, [ 'a_truth'( truthteller( X ) ), 'a_truth'( liar( X ) ) ]
% 0.86/1.20     )
% 0.86/1.20  , 1, substitution( 0, [] ), substitution( 1, [ :=( X, c )] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  resolution(
% 0.86/1.20  clause( 343, [] )
% 0.86/1.20  , clause( 193, [ ~( 'a_truth'( truthteller( c ) ) ) ] )
% 0.86/1.20  , 0, clause( 342, [ 'a_truth'( truthteller( c ) ) ] )
% 0.86/1.20  , 0, substitution( 0, [] ), substitution( 1, [] )).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  subsumption(
% 0.86/1.20  clause( 217, [] )
% 0.86/1.20  , clause( 343, [] )
% 0.86/1.20  , substitution( 0, [] ), permutation( 0, [] ) ).
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  end.
% 0.86/1.20  
% 0.86/1.20  % ABCDEFGHIJKLMNOPQRSTUVWXYZ
% 0.86/1.20  
% 0.86/1.20  Memory use:
% 0.86/1.20  
% 0.86/1.20  space for terms:        3332
% 0.86/1.20  space for clauses:      9589
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  clauses generated:      283
% 0.86/1.20  clauses kept:           218
% 0.86/1.20  clauses selected:       62
% 0.86/1.20  clauses deleted:        6
% 0.86/1.20  clauses inuse deleted:  0
% 0.86/1.20  
% 0.86/1.20  subsentry:          596
% 0.86/1.20  literals s-matched: 478
% 0.86/1.20  literals matched:   478
% 0.86/1.20  full subsumption:   219
% 0.86/1.20  
% 0.86/1.20  checksum:           2066906611
% 0.86/1.20  
% 0.86/1.20  
% 0.86/1.20  Bliksem ended
%------------------------------------------------------------------------------