Solving ../../benchmarks/smtlib/true/insert_length_eq.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, _xt)) \/ leq(x, y) <= insert(x, z, _xt) insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) } eq_eltlist(_au, _bu) <= insert(_yt, _zt, _au) /\ insert(_yt, _zt, _bu) ) (length, F: { length(nil, z) <= True length(cons(x, ll), s(_cu)) <= length(ll, _cu) } eq_nat(_eu, _fu) <= length(_du, _eu) /\ length(_du, _fu) ) } properties: { eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) } over-approximation: {insert, length} under-approximation: {} 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 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 } Solving took 0.280388 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)) <= _r_2(x_1_1) _r_2(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)) <= _r_2(x_2_1) 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)) <= _r_2(x_2_1) } ] ; 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 } ] -- Equality automata are defined for: {elt, eltlist, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006137 s (model generation: 0.006069, model checking: 0.000068): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None insert -> [ insert : { } ] ; length -> [ length : { } ] ; leq -> [ leq : { } ] -- 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: { } eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : No: () insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 1, which took 0.006899 s (model generation: 0.006820, model checking: 0.000079): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : No: () insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : Yes: { _xt -> cons(_ecne_0, _ecne_1) ; x -> b ; y -> a ; z -> nil } length(cons(x, ll), s(_cu)) <= length(ll, _cu) : Yes: { _cu -> 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: () ------------------------------------------- Step 2, which took 0.011319 s (model generation: 0.011159, model checking: 0.000160): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> s(_tcne_0) ; _hu -> cons(_ucne_0, _ucne_1) ; _iu -> s(z) ; l -> cons(_wcne_0, _wcne_1) ; x -> b } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> a ; y -> b } False <= leq(b, a) : Yes: { } ------------------------------------------- Step 3, which took 0.022332 s (model generation: 0.022182, model checking: 0.000150): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> s(_tdne_0) ; _hu -> cons(_udne_0, cons(_nene_0, _nene_1)) ; _iu -> s(z) ; l -> cons(_wdne_0, _wdne_1) ; x -> b } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 4, which took 0.019307 s (model generation: 0.019137, model checking: 0.000170): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> s(_rene_0) ; _hu -> cons(_sene_0, _sene_1) ; _iu -> s(z) ; l -> cons(_uene_0, _uene_1) ; x -> a } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : Yes: { _xt -> cons(b, _pfne_1) ; x -> b ; y -> a ; z -> nil } length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 5, which took 0.024398 s (model generation: 0.024072, model checking: 0.000326): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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 False <= insert(a, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> z ; _hu -> cons(_ogne_0, cons(_khne_0, nil)) ; _iu -> s(s(z)) ; l -> nil ; x -> b } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 6, which took 0.031234 s (model generation: 0.030883, model checking: 0.000351): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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 False <= insert(a, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, nil, cons(a, cons(a, nil))) /\ length(cons(a, 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) } 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 : { _r_2(nil) <= True length(cons(x_0_0, x_0_1), s(x_1_0)) <= _r_2(x_0_1) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> z ; _hu -> cons(_whne_0, nil) ; _iu -> s(s(_gjne_0)) ; l -> nil ; x -> a } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : Yes: { _cu -> s(_sine_0) ; ll -> cons(_tine_0, nil) } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 7, which took 0.033157 s (model generation: 0.032902, model checking: 0.000255): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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(a, nil)), s(s(z))) <= 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(a, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, nil, cons(a, cons(a, nil))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= length(cons(a, nil), s(s(z))) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(nil) <= True _r_2(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_2(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_2(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_1) } ] ; 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> z ; _hu -> cons(_ojne_0, cons(_ukne_0, nil)) ; _iu -> s(s(z)) ; l -> nil ; x -> a } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 8, which took 0.033113 s (model generation: 0.032880, model checking: 0.000233): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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(a, nil)), s(s(z))) <= 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(a, cons(a, nil), cons(a, nil)) False <= insert(a, nil, cons(a, cons(a, nil))) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, nil, cons(a, cons(a, nil))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= length(cons(a, nil), s(s(z))) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(nil) <= True _r_2(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_2(x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_2(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_1) } ] ; 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> s(z) ; _hu -> cons(_nlne_0, cons(_smne_0, cons(_wmne_0, nil))) ; _iu -> s(s(s(z))) ; l -> cons(_plne_0, nil) ; x -> b } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : No: () length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () ------------------------------------------- Step 9, which took 0.035592 s (model generation: 0.035192, model checking: 0.000400): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) -> 0 insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) -> 0 length(cons(x, ll), s(_cu)) <= length(ll, _cu) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 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(a, nil)), s(s(z))) <= 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(a, cons(a, nil), cons(a, nil)) False <= insert(a, nil, cons(a, cons(a, nil))) False <= insert(b, cons(a, nil), cons(a, cons(a, cons(a, nil)))) /\ length(cons(a, cons(a, cons(a, nil))), s(s(s(z)))) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, nil, cons(a, cons(a, nil))) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= length(cons(a, nil), s(s(z))) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(nil) <= True _r_2(cons(x_0_0, x_0_1)) <= _r_1(x_0_1) insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_2(x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_2(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_1) } ] ; 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 } ] -- 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: () eq_nat(s(_gu), _iu) <= insert(x, l, _hu) /\ length(_hu, _iu) /\ length(l, _gu) : Yes: { _gu -> s(s(z)) ; _hu -> cons(_pnne_0, cons(_rone_0, nil)) ; _iu -> s(s(z)) ; l -> cons(_rnne_0, cons(_sone_0, nil)) ; x -> b } insert(x, cons(y, z), cons(y, _xt)) \/ leq(x, y) <= insert(x, z, _xt) : Yes: { _xt -> cons(_ynne_0, cons(_zone_0, nil)) ; x -> b ; y -> a ; z -> cons(_bone_0, _bone_1) } length(cons(x, ll), s(_cu)) <= length(ll, _cu) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> b ; y -> b ; z -> cons(_apne_0, _apne_1) } False <= leq(b, a) : No: () Total time: 0.280388 Learner time: 0.221297 Teacher time: 0.002192 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)) <= _r_2(x_1_1) _r_2(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)) <= _r_2(x_2_1) 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)) <= _r_2(x_2_1) } ] ; 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 } ] -- Equality automata are defined for: {elt, eltlist, nat} _|