Solving ../../benchmarks/smtlib/true/timbuk_reverse.smt2... Inference procedure has parameters: Ice fuel: 200 Timeout: Some(60.) (sec) Teacher_type: Checks all clauses every time Approximation method: remove every clause that can be safely removed Learning problem is: env: { elt -> {a, b} ; eltlist -> {cons, nil} } definition: { (leq, P: { leq(a, y) <= True leq(b, b) <= True False <= leq(b, a) } ) (append, F: { append(nil, l2, l2) <= True append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) } eq_eltlist(_lj, _mj) <= append(_jj, _kj, _lj) /\ append(_jj, _kj, _mj) ) (reverse, F: { reverse(nil, nil) <= True reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) } eq_eltlist(_qj, _rj) <= reverse(_pj, _qj) /\ reverse(_pj, _rj) ) (sorted, P: { sorted(cons(x, nil)) <= True sorted(nil) <= True } ) (invsorted, P: { invsorted(cons(x, nil)) <= True invsorted(nil) <= True } ) } properties: { invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) } over-approximation: {append, leq, reverse, sorted} under-approximation: {invsorted, leq} Clause system for inference is: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 sorted(cons(x, nil)) <= True -> 0 sorted(nil) <= True -> 0 reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) -> 0 append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) -> 0 invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) -> 0 } Solving took 0.070223 seconds. Yes: |_ name: None append -> [ append : { append(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(cons(x_0_0, x_0_1), nil, cons(x_2_0, x_2_1)) <= True append(nil, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(nil, nil, nil) <= True } ] ; invsorted -> [ invsorted : { invsorted(cons(x_0_0, x_0_1)) <= True invsorted(nil) <= True } ] ; reverse -> [ reverse : { reverse(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True reverse(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006102 s (model generation: 0.006050, model checking: 0.000052): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 sorted(cons(x, nil)) <= True -> 0 sorted(nil) <= True -> 0 reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) -> 0 append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) -> 0 invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None append -> [ append : { } ] ; invsorted -> [ invsorted : { } ] ; reverse -> [ reverse : { } ] ; sorted -> [ sorted : { } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> nil } reverse(nil, nil) <= True : Yes: { } sorted(cons(x, nil)) <= True : Yes: { } sorted(nil) <= True : Yes: { } reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) : No: () append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) : No: () invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) : No: () ------------------------------------------- Step 1, which took 0.007046 s (model generation: 0.006968, model checking: 0.000078): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 sorted(cons(x, nil)) <= True -> 0 sorted(nil) <= True -> 0 reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) -> 0 append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) -> 0 invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) -> 0 } Accumulated learning constraints: { append(nil, nil, nil) <= True reverse(nil, nil) <= True sorted(cons(a, nil)) <= True sorted(nil) <= True } Current best model: |_ name: None append -> [ append : { append(nil, nil, nil) <= True } ] ; invsorted -> [ invsorted : { } ] ; reverse -> [ reverse : { reverse(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> cons(_wemcd_0, _wemcd_1) } reverse(nil, nil) <= True : No: () sorted(cons(x, nil)) <= True : No: () sorted(nil) <= True : No: () reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) : No: () append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) : Yes: { _ij -> nil ; l2 -> nil ; t1 -> nil } invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) : Yes: { _sj -> nil ; l -> nil } ------------------------------------------- Step 2, which took 0.013190 s (model generation: 0.013123, model checking: 0.000067): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 sorted(cons(x, nil)) <= True -> 0 sorted(nil) <= True -> 0 reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) -> 0 append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) -> 0 invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) -> 0 } Accumulated learning constraints: { append(cons(a, nil), nil, cons(a, nil)) <= True append(nil, cons(a, nil), cons(a, nil)) <= True append(nil, nil, nil) <= True invsorted(nil) <= True reverse(nil, nil) <= True sorted(cons(a, nil)) <= True sorted(nil) <= True } Current best model: |_ name: None append -> [ append : { append(cons(x_0_0, x_0_1), nil, cons(x_2_0, x_2_1)) <= True append(nil, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(nil, nil, nil) <= True } ] ; invsorted -> [ invsorted : { invsorted(nil) <= True } ] ; reverse -> [ reverse : { reverse(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: append(nil, l2, l2) <= True : No: () reverse(nil, nil) <= True : No: () sorted(cons(x, nil)) <= True : No: () sorted(nil) <= True : No: () reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) : Yes: { _nj -> nil ; _oj -> cons(_dfmcd_0, _dfmcd_1) ; t1 -> nil } append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) : Yes: { _ij -> cons(_ffmcd_0, _ffmcd_1) ; l2 -> cons(_gfmcd_0, _gfmcd_1) ; t1 -> nil } invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) : No: () ------------------------------------------- Step 3, which took 0.025578 s (model generation: 0.025511, model checking: 0.000067): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 sorted(cons(x, nil)) <= True -> 0 sorted(nil) <= True -> 0 reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) -> 0 append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) -> 0 invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) -> 0 } Accumulated learning constraints: { append(cons(a, nil), cons(a, nil), cons(a, cons(a, nil))) <= True append(cons(a, nil), nil, cons(a, nil)) <= True append(nil, cons(a, nil), cons(a, nil)) <= True append(nil, nil, nil) <= True invsorted(nil) <= True reverse(cons(a, nil), cons(a, nil)) <= True reverse(nil, nil) <= True sorted(cons(a, nil)) <= True sorted(nil) <= True } Current best model: |_ name: None append -> [ append : { append(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(cons(x_0_0, x_0_1), nil, cons(x_2_0, x_2_1)) <= True append(nil, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(nil, nil, nil) <= True } ] ; invsorted -> [ invsorted : { invsorted(nil) <= True } ] ; reverse -> [ reverse : { reverse(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True reverse(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: append(nil, l2, l2) <= True : No: () reverse(nil, nil) <= True : No: () sorted(cons(x, nil)) <= True : No: () sorted(nil) <= True : No: () reverse(cons(h1, t1), _oj) <= append(_nj, cons(h1, nil), _oj) /\ reverse(t1, _nj) : No: () append(cons(h1, t1), l2, cons(h1, _ij)) <= append(t1, l2, _ij) : No: () invsorted(_sj) <= reverse(l, _sj) /\ sorted(l) : Yes: { _sj -> cons(_ifmcd_0, _ifmcd_1) ; l -> cons(_jfmcd_0, _jfmcd_1) } Total time: 0.070223 Learner time: 0.051652 Teacher time: 0.000264 Reasons for stopping: Yes: |_ name: None append -> [ append : { append(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(cons(x_0_0, x_0_1), nil, cons(x_2_0, x_2_1)) <= True append(nil, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(nil, nil, nil) <= True } ] ; invsorted -> [ invsorted : { invsorted(cons(x_0_0, x_0_1)) <= True invsorted(nil) <= True } ] ; reverse -> [ reverse : { reverse(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True reverse(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _|