
Results obtained from Alexei Lisitsa's paper
"Finite countermodels for safety verification of parameterized tree systems"
submitted to FMCAD'2011.

The two-way token protocol (Section IV).
$ date
Wed Jun 15 16:30:52 CEST 2011

$ memtime darwin -fd true --print-level 2 two-way-token.p
Darwin 1.4.2

Finite Domain: setting initial domain size to 1.
Finite Domain: using non-ground splitting in preprocessing.
Finite Domain: will print multiplication tables instead of DIG representation.

Defaulting to tptp format.
Parsing two-way-token.p ...



Configuration:
--resolve                               : true
--subsume                               : true
--compact                               : true
--productivity                          : true
--mixed-literals                        : true
--finite-domain                         : true
--finite-domain-functionality           : true
--unique-name-assumption                : false
--lemma                                 : Grounded
--lemma-min                             : 1000
--lemma-max                             : 5000
--lemma-uip                             : false
--lemma-parametric-assert               : 0
--plus-v                                : false
--equality                              : Axioms
--backtracking                          : Backjumping
--iterative-deepening                   : TermDepth
--depth-bound                           : 1
--max-depth-bound                       : 0
--lookahead-all                         : false
--restart                               : Lazy
--neg-assert-candidates                 : Use
--eprover                               :
--preprocess-split                      : NonGround
--preprocess-unit                       : true
--preprocess-pure                       : false
--preprocess-resolution                 : false
--preprocess-equality                   : true
--input-format                          : tptp
--timeout-cpu                           : 0.
--timeout-wc                            : 0.
--memory-limit                          : 0
--print-level                           : 2
--print-configuration                   : true
--print-preprocess-split                : false
--print-preprocess-unit                 : false
--print-preprocess-resolution           : false
--print-preprocess-pure                 : false
--print-preprocess-equality             : false
--print-equality-axioms                 : false
--print-lemmas                          : false
--print-fd-sorts                        : false
--print-fd-transformation               : false
--print-fd-axioms                       : false
--print-fd-problem                      : Silent
--print-statistics                      : true
--print-context                         : false
--print-context-file                    :
--print-DIG                             : false
--print-DIG-file                        :
--print-model-finite                    : true
--print-model-tptp                      : false
--print-model-tptp-file                 :
--print-derivation-online               : false
--print-context-unifier                 : false
--print-assert-candidates               : false
--print-split-candidates                : false
--print-constants                       : false

Problem:
Horn                                    : true
BS                                      : false
Equality                                : false

Proving  ...

SZS status Satisfiable for two-way-token.p

MODEL (Multiplication Tables):
SZS output start FiniteModel for two-way-token.p
Domain size: 3

Constants:
n = '1
q0 = '1
q1 = '2
q2 = '3
q3 = '2
t = '2

Functions:
fN('1, '1) = '1
fN('1, '2) = '2
fN('1, '3) = '3
fN('2, '1) = '2
fN('2, '2) = '3
fN('2, '3) = '3
fN('3, '1) = '3
fN('3, '2) = '3
fN('3, '3) = '3

fT('1, '1) = '2
fT('1, '2) = '3
fT('1, '3) = '3
fT('2, '1) = '3
fT('2, '2) = '3
fT('2, '3) = '3
fT('3, '1) = '3
fT('3, '2) = '3
fT('3, '3) = '3


Predicates:
bad1:
bad1('3)

init1:
init1('2)

bad:
bad('1, '1)
bad('2, '1)
bad('2, '2)
bad('3, '1)
bad('3, '2)
bad('3, '3)

init:
init('1, '1)
init('2, '2)

r:
r('1, '1)
r('1, '2)
r('1, '3)
r('2, '2)
r('3, '1)
r('3, '2)
r('3, '3)

predT:
predT('1, '1, '1)
predT('1, '1, '3)
predT('1, '2, '2)
predT('1, '2, '3)
predT('1, '3, '3)
predT('2, '1, '2)
predT('2, '2, '3)
predT('3, '1, '3)

SZS output end FiniteModel for two-way-token.p

Statistics:
Close                                   :       63
Assert                                  :     2755
Split                                   :      140
Resolve                                 :     1208
Subsume                                 :      366
Compact                                 :        0
Productivity Filtered                   :        8
Assert Candidates                       :     5791
Split Candidates                        :     5545
Jumps                                   :        0
Debug                                   :        0
Global Debug                            :        0
Global Debug2                           :        0
Maximum Context Size                    :      470
Incomplete Branches                     :        0
Restarts                                :        2
Bound                                   :        3
Lemmas                                  :       56

CPU  Time (s)                           :      0.2
Memory    (MB)                          :        1
Exit [0]
0.20 user, 0.00 system, 0.30 elapsed -- Max VSize = 4740KB, Max RSS = 3368KB



$ (echo "set(verbose)."; tptp_to_ladr <two-way-token.p) | memtime mace4
============================== Mace4 =================================
Mace4 (32) version 2008-06A, June 2008.
Process 7047 was started by goubault on dell26.lsv.ens-cachan.fr,
Wed Jun 15 16:47:58 2011
The command was "mace4".
============================== end of head ===========================

============================== INPUT =================================
set(verbose).
set(prolog_style_variables).

formulas(assumptions).
predT(n,n,q0) # label(clause1) # label(axiom).
predT(t,n,q1) # label(clause2) # label(axiom).
predT(n,t,q3) # label(clause3) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q0) | predT(fT(X,Y),fN(Z,V),q1) # label(clause4) # label(axiom).
-predT(X,Z,q1) | -predT(Y,V,q0) | predT(fN(X,Y),fT(Z,V),q2) # label(clause5) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q1) | predT(fN(X,Y),fT(Z,V),q2) # label(clause6) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q0) | predT(fN(X,Y),fN(Z,V),q0) # label(clause7) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q2) | predT(fN(X,Y),fN(Z,V),q2) # label(clause8) # label(axiom).
-predT(X,Z,q2) | -predT(Y,V,q0) | predT(fN(X,Y),fN(Z,V),q2) # label(clause9) # label(axiom).
-predT(X,Z,q3) | -predT(Y,V,q0) | predT(fT(X,Y),fN(Z,V),q2) # label(clause10) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q3) | predT(fT(X,Y),fN(Z,V),q2) # label(clause11) # label(axiom).
-predT(X,Z,q0) | -predT(Y,V,q0) | predT(fN(X,Y),fT(Z,V),q3) # label(clause12) # label(axiom).
init(n,q0) # label(clause13) # label(axiom).
init(t,q1) # label(clause14) # label(axiom).
-init(X,q0) | -init(Y,q0) | init(fT(X,Y),q1) # label(clause15) # label(axiom).
-init(X,q0) | -init(Y,q1) | init(fN(X,Y),q1) # label(clause16) # label(axiom).
-init(X,q0) | -init(Y,q0) | init(fN(X,Y),q0) # label(clause17) # label(axiom).
-init(X,q1) | -init(Y,q0) | init(fN(X,Y),q1) # label(clause18) # label(axiom).
bad(n,q0) # label(clause19) # label(axiom).
bad(t,q1) # label(clause20) # label(axiom).
-bad(X,q0) | -bad(Y,q0) | bad(fN(X,Y),q0) # label(clause21) # label(axiom).
-bad(X,q0) | -bad(Y,q0) | bad(fT(X,Y),q1) # label(clause22) # label(axiom).
-bad(X,q0) | -bad(Y,q1) | bad(fN(X,Y),q1) # label(clause23) # label(axiom).
-bad(X,q1) | -bad(Y,q0) | bad(fN(X,Y),q0) # label(clause24) # label(axiom).
-bad(X,q0) | -bad(Y,q1) | bad(fT(X,Y),q2) # label(clause25) # label(axiom).
-bad(X,q1) | -bad(Y,q0) | bad(fT(X,Y),q2) # label(clause26) # label(axiom).
-bad(X,q1) | -bad(Y,q1) | bad(fN(X,Y),q2) # label(clause27) # label(axiom).
-bad(X,q1) | -bad(Y,q2) | bad(fT(X,Y),q2) # label(clause28) # label(axiom).
-bad(X,q2) | -bad(Y,q1) | bad(fT(X,Y),q2) # label(clause29) # label(axiom).
-bad(X,q2) | -bad(Y,q2) | bad(fT(X,Y),q2) # label(clause30) # label(axiom).
-bad(X,q1) | -bad(Y,q1) | bad(fN(X,Y),q2) # label(clause31) # label(axiom).
-bad(X,q0) | -bad(Y,q2) | bad(fN(X,Y),q2) # label(clause32) # label(axiom).
-bad(X,q2) | -bad(Y,q0) | bad(fN(X,Y),q2) # label(clause33) # label(axiom).
-bad(X,q1) | -bad(Y,q2) | bad(fN(X,Y),q2) # label(clause34) # label(axiom).
-bad(X,q2) | -bad(Y,q1) | bad(fN(X,Y),q2) # label(clause35) # label(axiom).
-bad(X,q2) | -bad(Y,q2) | bad(fN(X,Y),q2) # label(clause36) # label(axiom).
-predT(X,Y,q2) | r(X,Y) # label(clause37) # label(axiom).
-r(X,Y) | -r(Y,Z) | r(X,Z) # label(clause38) # label(axiom).
-init(X,q1) | init1(X) # label(clause39) # label(axiom).
-bad(X,q2) | bad1(X) # label(clause40) # label(axiom).
-init1(X) | -r(X,Y) | -bad1(Y) # label(clause41) # label(axiom).
end_of_list.

formulas(goals).
end_of_list.

============================== end of input ==========================

============================== PROCESS NON-CLAUSAL FORMULAS ==========

% Formulas that are not ordinary clauses:

============================== end of process non-clausal formulas ===

============================== CLAUSES FOR SEARCH ====================

formulas(mace4_clauses).
predT(n,n,q0) # label(clause1) # label(axiom).
predT(t,n,q1) # label(clause2) # label(axiom).
predT(n,t,q3) # label(clause3) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q0) | predT(fT(A,C),fN(B,D),q1) # label(clause4) # label(axiom).
-predT(A,B,q1) | -predT(C,D,q0) | predT(fN(A,C),fT(B,D),q2) # label(clause5) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q1) | predT(fN(A,C),fT(B,D),q2) # label(clause6) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q0) | predT(fN(A,C),fN(B,D),q0) # label(clause7) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q2) | predT(fN(A,C),fN(B,D),q2) # label(clause8) # label(axiom).
-predT(A,B,q2) | -predT(C,D,q0) | predT(fN(A,C),fN(B,D),q2) # label(clause9) # label(axiom).
-predT(A,B,q3) | -predT(C,D,q0) | predT(fT(A,C),fN(B,D),q2) # label(clause10) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q3) | predT(fT(A,C),fN(B,D),q2) # label(clause11) # label(axiom).
-predT(A,B,q0) | -predT(C,D,q0) | predT(fN(A,C),fT(B,D),q3) # label(clause12) # label(axiom).
init(n,q0) # label(clause13) # label(axiom).
init(t,q1) # label(clause14) # label(axiom).
-init(A,q0) | -init(B,q0) | init(fT(A,B),q1) # label(clause15) # label(axiom).
-init(A,q0) | -init(B,q1) | init(fN(A,B),q1) # label(clause16) # label(axiom).
-init(A,q0) | -init(B,q0) | init(fN(A,B),q0) # label(clause17) # label(axiom).
-init(A,q1) | -init(B,q0) | init(fN(A,B),q1) # label(clause18) # label(axiom).
bad(n,q0) # label(clause19) # label(axiom).
bad(t,q1) # label(clause20) # label(axiom).
-bad(A,q0) | -bad(B,q0) | bad(fN(A,B),q0) # label(clause21) # label(axiom).
-bad(A,q0) | -bad(B,q0) | bad(fT(A,B),q1) # label(clause22) # label(axiom).
-bad(A,q0) | -bad(B,q1) | bad(fN(A,B),q1) # label(clause23) # label(axiom).
-bad(A,q1) | -bad(B,q0) | bad(fN(A,B),q0) # label(clause24) # label(axiom).
-bad(A,q0) | -bad(B,q1) | bad(fT(A,B),q2) # label(clause25) # label(axiom).
-bad(A,q1) | -bad(B,q0) | bad(fT(A,B),q2) # label(clause26) # label(axiom).
-bad(A,q1) | -bad(B,q1) | bad(fN(A,B),q2) # label(clause27) # label(axiom).
-bad(A,q1) | -bad(B,q2) | bad(fT(A,B),q2) # label(clause28) # label(axiom).
-bad(A,q2) | -bad(B,q1) | bad(fT(A,B),q2) # label(clause29) # label(axiom).
-bad(A,q2) | -bad(B,q2) | bad(fT(A,B),q2) # label(clause30) # label(axiom).
-bad(A,q1) | -bad(B,q1) | bad(fN(A,B),q2) # label(clause31) # label(axiom).
-bad(A,q0) | -bad(B,q2) | bad(fN(A,B),q2) # label(clause32) # label(axiom).
-bad(A,q2) | -bad(B,q0) | bad(fN(A,B),q2) # label(clause33) # label(axiom).
-bad(A,q1) | -bad(B,q2) | bad(fN(A,B),q2) # label(clause34) # label(axiom).
-bad(A,q2) | -bad(B,q1) | bad(fN(A,B),q2) # label(clause35) # label(axiom).
-bad(A,q2) | -bad(B,q2) | bad(fN(A,B),q2) # label(clause36) # label(axiom).
-predT(A,B,q2) | r(A,B) # label(clause37) # label(axiom).
-r(A,B) | -r(B,C) | r(A,C) # label(clause38) # label(axiom).
-init(A,q1) | init1(A) # label(clause39) # label(axiom).
-bad(A,q2) | bad1(A) # label(clause40) # label(axiom).
-init1(A) | -r(A,B) | -bad1(B) # label(clause41) # label(axiom).
end_of_list.

============================== end of clauses for search =============

% There are no domain elements in the input.

============================== DOMAIN SIZE 2 =========================

=== Mace4 starting on domain size 2. ===

% Cell selection order:

n.
q0.
q1.
q2.
q3.
t.
fN(0,0).
fT(0,0).
bad1(0).
init1(0).
bad(0,0).
init(0,0).
r(0,0).
predT(0,0,0).
fN(0,1).
fN(1,0).
fN(1,1).
fT(0,1).
fT(1,0).
fT(1,1).
bad1(1).
init1(1).
bad(0,1).
bad(1,0).
bad(1,1).
init(0,1).
init(1,0).
init(1,1).
r(0,1).
r(1,0).
r(1,1).
predT(0,0,1).
predT(0,1,0).
predT(1,0,0).
predT(0,1,1).
predT(1,0,1).
predT(1,1,0).
predT(1,1,1).

Initial partial model:

 n : -

 q0 : -

 q1 : -

 q2 : -

 q3 : -

 t : -

 fN :
      | 0 1
    --+----
    0 | - -
    1 | - -

 fT :
      | 0 1
    --+----
    0 | - -
    1 | - -

 bad1 :
        0 1
    -------
        - -

 init1 :
        0 1
    -------
        - -

 bad :
      | 0 1
    --+----
    0 | - -
    1 | - -

 init :
      | 0 1
    --+----
    0 | - -
    1 | - -

 r :
      | 0 1
    --+----
    0 | - -
    1 | - -
predT(0,0,0) = -.
predT(0,0,1) = -.
predT(0,1,0) = -.
predT(0,1,1) = -.
predT(1,0,0) = -.
predT(1,0,1) = -.
predT(1,1,0) = -.
predT(1,1,1) = -.

============================== STATISTICS ============================

For domain size 2.

Current CPU time: 0.00 seconds (total CPU time: 0.01 seconds).
Ground clauses: seen=251, kept=251.
Selections=24, assignments=47, propagations=308, current_models=0.
Rewrite_terms=5508, rewrite_bools=3996, indexes=1788.
Rules_from_neg_clauses=58, cross_offs=58.

============================== end of statistics =====================

============================== DOMAIN SIZE 3 =========================

=== Mace4 starting on domain size 3. ===

% Cell selection order:

n.
q0.
q1.
q2.
q3.
t.
fN(0,0).
fT(0,0).
bad1(0).
init1(0).
bad(0,0).
init(0,0).
r(0,0).
predT(0,0,0).
fN(0,1).
fN(1,0).
fN(1,1).
fT(0,1).
fT(1,0).
fT(1,1).
bad1(1).
init1(1).
bad(0,1).
bad(1,0).
bad(1,1).
init(0,1).
init(1,0).
init(1,1).
r(0,1).
r(1,0).
r(1,1).
predT(0,0,1).
predT(0,1,0).
predT(1,0,0).
predT(0,1,1).
predT(1,0,1).
predT(1,1,0).
predT(1,1,1).
fN(0,2).
fN(2,0).
fN(1,2).
fN(2,1).
fN(2,2).
fT(0,2).
fT(2,0).
fT(1,2).
fT(2,1).
fT(2,2).
bad1(2).
init1(2).
bad(0,2).
bad(2,0).
bad(1,2).
bad(2,1).
bad(2,2).
init(0,2).
init(2,0).
init(1,2).
init(2,1).
init(2,2).
r(0,2).
r(2,0).
r(1,2).
r(2,1).
r(2,2).
predT(0,0,2).
predT(0,2,0).
predT(2,0,0).
predT(0,1,2).
predT(0,2,1).
predT(1,0,2).
predT(1,2,0).
predT(2,0,1).
predT(2,1,0).
predT(0,2,2).
predT(1,1,2).
predT(1,2,1).
predT(2,0,2).
predT(2,1,1).
predT(2,2,0).
predT(1,2,2).
predT(2,1,2).
predT(2,2,1).
predT(2,2,2).

Initial partial model:

 n : -

 q0 : -

 q1 : -

 q2 : -

 q3 : -

 t : -

 fN :
      | 0 1 2
    --+------
    0 | - - -
    1 | - - -
    2 | - - -

 fT :
      | 0 1 2
    --+------
    0 | - - -
    1 | - - -
    2 | - - -

 bad1 :
        0 1 2
    ---------
        - - -

 init1 :
        0 1 2
    ---------
        - - -

 bad :
      | 0 1 2
    --+------
    0 | - - -
    1 | - - -
    2 | - - -

 init :
      | 0 1 2
    --+------
    0 | - - -
    1 | - - -
    2 | - - -

 r :
      | 0 1 2
    --+------
    0 | - - -
    1 | - - -
    2 | - - -
predT(0,0,0) = -.
predT(0,0,1) = -.
predT(0,0,2) = -.
predT(0,1,0) = -.
predT(0,1,1) = -.
predT(0,1,2) = -.
predT(0,2,0) = -.
predT(0,2,1) = -.
predT(0,2,2) = -.
predT(1,0,0) = -.
predT(1,0,1) = -.
predT(1,0,2) = -.
predT(1,1,0) = -.
predT(1,1,1) = -.
predT(1,1,2) = -.
predT(1,2,0) = -.
predT(1,2,1) = -.
predT(1,2,2) = -.
predT(2,0,0) = -.
predT(2,0,1) = -.
predT(2,0,2) = -.
predT(2,1,0) = -.
predT(2,1,1) = -.
predT(2,1,2) = -.
predT(2,2,0) = -.
predT(2,2,1) = -.
predT(2,2,2) = -.

============================== MODEL =================================

interpretation( 3, [number=1, seconds=0], [

        function(n, [ 0 ]),

        function(q0, [ 0 ]),

        function(q1, [ 1 ]),

        function(q2, [ 2 ]),

        function(q3, [ 1 ]),

        function(t, [ 1 ]),

        function(fN(_,_), [
                           0, 1, 2,
                           1, 2, 2,
                           2, 2, 2 ]),

        function(fT(_,_), [
                           1, 2, 2,
                           2, 2, 2,
                           2, 2, 2 ]),

        relation(bad1(_), [ 0, 0, 1 ]),

        relation(init1(_), [ 0, 1, 0 ]),

        relation(bad(_,_), [
                           1, 0, 0,
                           1, 1, 0,
                           1, 1, 1 ]),

        relation(init(_,_), [
                           1, 0, 0,
                           0, 1, 0,
                           0, 0, 0 ]),

        relation(r(_,_), [
                           1, 0, 1,
                           0, 1, 0,
                           1, 0, 1 ]),

        relation(predT(_,_,_), [
                           1, 0, 0,
                           0, 1, 0,
                           0, 0, 1,
                           0, 1, 0,
                           0, 0, 1,
                           0, 0, 0,
                           0, 0, 1,
                           0, 0, 0,
                           0, 0, 0 ])
]).

============================== end of model ==========================

============================== STATISTICS ============================

For domain size 3.

Current CPU time: 0.00 seconds (total CPU time: 0.03 seconds).
Ground clauses: seen=967, kept=967.
Selections=68, assignments=174, propagations=1520, current_models=1.
Rewrite_terms=25313, rewrite_bools=28296, indexes=6432.
Rules_from_neg_clauses=193, cross_offs=508.

============================== end of statistics =====================

------------- memory usage (for entire run) -------------------

Total malloced: 20 megabytes
  type (bytes each)        gets      frees     in use      bytes
chunk ( 104)               1097       1097          0      0.0 K
string_buf (   8)          1097       1097          0      0.0 K
token (  20)               1779       1779          0      0.0 K
pterm (  16)               1209       1209          0      0.0 K
ilist (   8)                 58         44         14      0.1 K
plist (   8)               5139       4863        276      2.2 K
i2list (  12)                50         50          0      0.0 K
term (  20)               20551      20300        251      4.9 K
      term arg arrays:                                     1.2 K
topform (  44)               41          0         41      1.8 K
clist_pos (  20)              0          0          0      0.0 K
clist (  16)                  0          0          0      0.0 K
mclause (  20)             1218       1218          0      0.0 K (29.9 K high)
mstate (  16)               223        223          0      0.0 K
jnode (  28)               7446       7446          0      0.0 K
estack (3208)               439        439          0      0.0 K (avail=0, 0.0 K)

Memory report, 1 @ 20 = 20 megs (0.24 megs used).
List   1, length      66,      0.3 K
List   2, length     969,      7.6 K
List   3, length       8,      0.1 K
List   4, length      16,      0.2 K
List   5, length    2714,     53.0 K
List   6, length     149,      3.5 K
List   7, length    2468,     67.5 K
List   8, length    3091,     96.6 K
List  26, length      27,      2.7 K

User_CPU=0.03, System_CPU=0.01, Wall_clock=0.

Exiting with 1 model.

------ process 7047 exit (max_models) ------

Process 7047 exit (max_models) Wed Jun 15 16:47:58 2011
The process finished Wed Jun 15 16:47:58 2011
Exit [0]
0.03 user, 0.01 system, 0.10 elapsed -- Max VSize = 1488KB, Max RSS = 148KB




$ memtime paradox2-3 --verbose 2 two-way-token.p
Paradox, version 2.3, 2007-11-01.
+++ PROBLEM: two-way-token.p
Reading 'two-way-token.p' ... OK
+++ SOLVING: two-way-token.p
domain size 1
domain size 2
domain size 3
+++ RESULT: Satisfiable
Exit [0]
0.10 user, 0.00 system, 0.20 elapsed -- Max VSize = 5976KB, Max RSS = 3016KB



$ memtime h1 -all two-way-token.p
Exit [0]
3.48 user, 0.04 system, 3.54 elapsed -- Max VSize = 15072KB, Max RSS = 13668KB

$ pldet -v two-way-token.model.pl >two-way-token.xml 
$ grep "state name=" two-way-token.xml | wc
     32      64    1325
$ grep entry two-way-token.xml | wc
   1647    6676  210367
