Solving ../../benchmarks/smtlib/true/timbuk_insertionSort_elt.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) } ) (insert, F: { insert(x, nil, cons(x, nil)) <= True insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) } eq_eltlist(_aj, _bj) <= insert(_yi, _zi, _aj) /\ insert(_yi, _zi, _bj) ) (sort, F: { sort(nil, nil) <= True sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) } eq_eltlist(_fj, _gj) <= sort(_ej, _fj) /\ sort(_ej, _gj) ) (sorted, P: { sorted(cons(x, nil)) <= True sorted(nil) <= True } ) } properties: { sorted(_hj) <= sort(l, _hj) } over-approximation: {insert, sort} under-approximation: {sorted} Clause system for inference is: { insert(x, nil, cons(x, nil)) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 sort(nil, nil) <= True -> 0 insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) -> 0 sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 sorted(_hj) <= sort(l, _hj) -> 0 } Solving took 0.046868 seconds. Yes: |_ name: None insert -> [ insert : { insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; sort -> [ sort : { sort(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True sort(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.006708 s (model generation: 0.006581, model checking: 0.000127): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 sort(nil, nil) <= True -> 0 insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) -> 0 sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 sorted(_hj) <= sort(l, _hj) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None insert -> [ insert : { } ] ; leq -> [ leq : { } ] ; sort -> [ sort : { } ] ; sorted -> [ sorted : { } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> b } leq(a, y) <= True : Yes: { y -> b } leq(b, b) <= True : Yes: { } sort(nil, nil) <= True : Yes: { } insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) : No: () sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () sorted(_hj) <= sort(l, _hj) : No: () ------------------------------------------- Step 1, which took 0.010162 s (model generation: 0.010064, model checking: 0.000098): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 sort(nil, nil) <= True -> 0 insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) -> 0 sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 sorted(_hj) <= sort(l, _hj) -> 0 } Accumulated learning constraints: { insert(b, nil, cons(b, nil)) <= True leq(a, b) <= True leq(b, b) <= True sort(nil, nil) <= True } Current best model: |_ name: None insert -> [ insert : { insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; leq -> [ leq : { leq(a, b) <= True leq(b, b) <= True } ] ; sort -> [ sort : { sort(nil, nil) <= True } ] ; sorted -> [ sorted : { } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> a } leq(a, y) <= True : Yes: { y -> a } leq(b, b) <= True : No: () sort(nil, nil) <= True : No: () insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) : Yes: { _xi -> cons(_mrnbd_0, _mrnbd_1) ; x -> b ; y -> a ; z -> nil } sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) : Yes: { _cj -> nil ; _dj -> cons(_rrnbd_0, _rrnbd_1) ; y -> b ; z -> nil } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> b ; y -> b } False <= leq(b, a) : No: () sorted(_hj) <= sort(l, _hj) : Yes: { _hj -> nil ; l -> nil } ------------------------------------------- Step 2, which took 0.015720 s (model generation: 0.015633, model checking: 0.000087): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 sort(nil, nil) <= True -> 0 insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) -> 0 sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 sorted(_hj) <= sort(l, _hj) -> 0 } Accumulated learning constraints: { insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True sort(nil, nil) <= True sorted(nil) <= True insert(b, cons(a, nil), cons(a, cons(a, nil))) \/ leq(b, a) <= insert(b, nil, cons(a, nil)) sort(cons(b, nil), cons(a, nil)) <= insert(b, nil, cons(a, nil)) } Current best model: |_ name: None insert -> [ insert : { insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, a) <= True leq(b, b) <= True } ] ; sort -> [ sort : { sort(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True sort(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () sort(nil, nil) <= True : No: () insert(x, cons(y, z), cons(y, _xi)) \/ leq(x, y) <= insert(x, z, _xi) : No: () sort(cons(y, z), _dj) <= insert(y, _cj, _dj) /\ sort(z, _cj) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> a ; y -> b } False <= leq(b, a) : Yes: { } sorted(_hj) <= sort(l, _hj) : Yes: { _hj -> cons(_esnbd_0, _esnbd_1) ; l -> cons(_fsnbd_0, _fsnbd_1) } Total time: 0.046868 Learner time: 0.032278 Teacher time: 0.000312 Reasons for stopping: Yes: |_ name: None insert -> [ insert : { insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; sort -> [ sort : { sort(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= True sort(nil, nil) <= True } ] ; sorted -> [ sorted : { sorted(cons(x_0_0, x_0_1)) <= True sorted(nil) <= True } ] -- Equality automata are defined for: {elt, eltlist} _|