Solving ../../benchmarks/smtlib/true/insert_length_leq.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} ; nat -> {s, z} } 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, _db)) \/ leq(x, y) <= insert(x, z, _db) insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) } eq_eltlist(_gb, _hb) <= insert(_eb, _fb, _gb) /\ insert(_eb, _fb, _hb) ) (length, F: { length(nil, z) <= True length(cons(x, ll), s(_ib)) <= length(ll, _ib) } eq_nat(_kb, _lb) <= length(_jb, _kb) /\ length(_jb, _lb) ) (leqnat, P: { leqnat(z, s(nn2)) <= True leqnat(z, z) <= True leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) False <= leqnat(s(nn1), z) } ) } properties: { leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) } over-approximation: {insert, length} under-approximation: {leqnat} Clause system for inference is: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Solving took 0.337850 seconds. Yes: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= _r_1(x_0_1, x_1_1) _r_1(nil, cons(x_1_0, x_1_1)) <= True _r_1(nil, nil) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) 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)) <= _r_1(x_1_1, x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.005957 s (model generation: 0.005882, model checking: 0.000075): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None insert -> [ insert : { } ] ; length -> [ length : { } ] ; leq -> [ leq : { } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> b } length(nil, z) <= True : Yes: { } leq(a, y) <= True : Yes: { y -> b } leq(b, b) <= True : Yes: { } leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 1, which took 0.006647 s (model generation: 0.006560, model checking: 0.000087): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(b, nil, cons(b, nil)) <= True length(nil, z) <= True leq(a, b) <= True leq(b, b) <= True } Current best model: |_ name: None insert -> [ insert : { insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> a } length(nil, z) <= True : No: () leq(a, y) <= True : Yes: { y -> a } leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : Yes: { _db -> cons(_xrne_0, _xrne_1) ; x -> b ; y -> a ; z -> nil } length(cons(x, ll), s(_ib)) <= length(ll, _ib) : Yes: { _ib -> z ; ll -> nil } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> b ; y -> b } False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 2, which took 0.009352 s (model generation: 0.009234, model checking: 0.000118): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True insert(b, cons(a, nil), cons(a, cons(a, nil))) \/ leq(b, a) <= 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, a) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> z ; _nb -> cons(_ssne_0, _ssne_1) ; _ob -> s(_tsne_0) ; l -> nil ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> a ; y -> b } False <= leq(b, a) : Yes: { } leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 3, which took 0.019070 s (model generation: 0.018874, model checking: 0.000196): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(z, s(x_1_0)) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(_ftne_0) ; _nb -> cons(_gtne_0, _gtne_1) ; _ob -> s(_htne_0) ; l -> cons(_itne_0, _itne_1) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_ltne_0) } leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 4, which took 0.023628 s (model generation: 0.023472, model checking: 0.000156): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= True leqnat(z, s(x_1_0)) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : Yes: { nn1 -> z ; nn2 -> z } False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 5, which took 0.020159 s (model generation: 0.020051, model checking: 0.000108): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) leqnat(z, z) <= leqnat(s(z), s(z)) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= True leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : Yes: { nn1 -> s(_qtne_0) ; nn2 -> z } False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 6, which took 0.022054 s (model generation: 0.021918, model checking: 0.000136): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) leqnat(s(z), z) <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= True leqnat(s(x_0_0), z) <= True leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : Yes: { } ------------------------------------------- Step 7, which took 0.015185 s (model generation: 0.014932, model checking: 0.000253): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(_oune_0)) ; _nb -> cons(_ytne_0, _ytne_1) ; _ob -> s(z) ; l -> cons(_aune_0, _aune_1) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 8, which took 0.011501 s (model generation: 0.011308, model checking: 0.000193): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(z)) ; _nb -> cons(_wune_0, nil) ; _ob -> s(z) ; l -> cons(_yune_0, cons(_svne_0, nil)) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 9, which took 0.018659 s (model generation: 0.018482, model checking: 0.000177): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True 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 length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) leqnat(z, s(z)) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(s(z))) <= leqnat(z, s(z)) } Current best model: |_ name: None insert -> [ insert : { _r_1(b) <= True 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)) <= _r_1(x_2_0) insert(b, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_0) } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> z ; _nb -> cons(_hwne_0, _hwne_1) ; _ob -> s(_iwne_0) ; l -> nil ; x -> a } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : Yes: { _db -> cons(b, _zwne_1) ; x -> b ; y -> a ; z -> nil } length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> z } leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 10, which took 0.020505 s (model generation: 0.020243, model checking: 0.000262): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ 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 } ] ; length -> [ length : { _r_1(a, z) <= True length(cons(x_0_0, x_0_1), s(x_1_0)) <= _r_1(x_0_0, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : Yes: { _ib -> z ; ll -> nil ; x -> b } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 11, which took 0.022957 s (model generation: 0.022773, model checking: 0.000184): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(cons(b, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ 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 } ] ; length -> [ length : { _r_1(a, z) <= True _r_1(b, z) <= True length(cons(x_0_0, x_0_1), s(x_1_0)) <= _r_1(x_0_0, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : No: () insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : Yes: { _ib -> s(z) ; ll -> cons(b, _syne_1) ; x -> b } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 12, which took 0.023695 s (model generation: 0.023495, model checking: 0.000200): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(cons(b, cons(b, nil)), s(s(z))) <= True length(cons(b, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1)) <= True 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)) <= _r_1(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(_yaoe_0)) ; _nb -> cons(_xzne_0, cons(_vaoe_0, _vaoe_1)) ; _ob -> s(z) ; l -> cons(_zzne_0, _zzne_1) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 13, which took 0.023609 s (model generation: 0.023411, model checking: 0.000198): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(cons(b, cons(b, nil)), s(s(z))) <= True length(cons(b, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) /\ length(cons(a, nil), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ 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 } ] ; length -> [ length : { _r_1(a, z) <= True _r_1(b, s(x_1_0)) <= True _r_1(b, z) <= True length(cons(x_0_0, x_0_1), s(x_1_0)) <= _r_1(x_0_0, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(_zboe_0)) ; _nb -> cons(a, _gboe_1) ; _ob -> s(z) ; l -> cons(b, _iboe_1) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : Yes: { _ib -> s(z) ; ll -> cons(b, _lboe_1) ; x -> a } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 14, which took 0.025516 s (model generation: 0.025036, model checking: 0.000480): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, cons(b, nil)), s(s(z))) <= True length(cons(a, nil), s(z)) <= True length(cons(b, cons(b, nil)), s(s(z))) <= True length(cons(b, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) /\ length(cons(a, nil), s(s(z))) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) False <= insert(b, cons(b, nil), cons(a, nil)) /\ length(cons(b, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ name: None insert -> [ insert : { _r_1(nil) <= True 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)) <= _r_1(x_1_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(z)) ; _nb -> cons(_ucoe_0, nil) ; _ob -> s(z) ; l -> cons(_wcoe_0, cons(_feoe_0, nil)) ; x -> a } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : Yes: { _db -> cons(_ddoe_0, _ddoe_1) ; x -> b ; y -> a ; z -> cons(_gdoe_0, nil) } length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> b ; y -> b ; z -> cons(_jeoe_0, _jeoe_1) } False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () ------------------------------------------- Step 15, which took 0.031565 s (model generation: 0.031232, model checking: 0.000333): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) -> 0 insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) -> 0 length(cons(x, ll), s(_ib)) <= length(ll, _ib) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 False <= leqnat(s(nn1), z) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, cons(a, nil)), cons(b, cons(b, cons(a, nil)))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, cons(b, nil)), s(s(z))) <= True length(cons(a, nil), s(z)) <= True length(cons(b, cons(b, nil)), s(s(z))) <= True length(cons(b, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True leqnat(s(z), s(s(z))) <= True leqnat(z, s(z)) <= True False <= insert(a, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= insert(b, cons(a, cons(a, nil)), cons(a, nil)) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) /\ length(cons(a, nil), s(s(z))) insert(b, cons(a, cons(a, nil)), cons(a, cons(a, nil))) <= insert(b, cons(a, nil), cons(a, nil)) leqnat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, nil)) /\ length(cons(a, nil), s(s(z))) False <= insert(b, cons(b, nil), cons(a, nil)) /\ length(cons(b, nil), s(s(z))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) False <= leqnat(s(s(z)), s(z)) leqnat(z, z) <= leqnat(s(z), s(z)) False <= leqnat(s(z), z) leqnat(s(z), s(z)) <= leqnat(z, z) } Current best model: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) 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)) <= _r_1(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () leqnat(_mb, _ob) <= insert(x, l, _nb) /\ length(_nb, _ob) /\ length(l, _mb) : Yes: { _mb -> s(s(s(z))) ; _nb -> cons(_veoe_0, cons(_bgoe_0, nil)) ; _ob -> s(s(z)) ; l -> cons(_xeoe_0, cons(_cgoe_0, cons(_jgoe_0, nil))) ; x -> b } insert(x, cons(y, z), cons(y, _db)) \/ leq(x, y) <= insert(x, z, _db) : No: () length(cons(x, ll), s(_ib)) <= length(ll, _ib) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () False <= leqnat(s(nn1), z) : No: () Total time: 0.337850 Learner time: 0.296903 Teacher time: 0.003156 Reasons for stopping: Yes: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= _r_1(x_0_1, x_1_1) _r_1(nil, cons(x_1_0, x_1_1)) <= True _r_1(nil, nil) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) 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)) <= _r_1(x_1_1, x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { leqnat(s(x_0_0), s(x_1_0)) <= leqnat(x_0_0, x_1_0) leqnat(z, s(x_1_0)) <= True leqnat(z, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _|