Solving ../../benchmarks/smtlib/false/append_length_le.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: { nat -> {s, z} ; natlist -> {cons, nil} } definition: { (append, F: { append(nil, l2, l2) <= True append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) } eq_natlist(_dlb, _elb) <= append(_blb, _clb, _dlb) /\ append(_blb, _clb, _elb) ) (le, P: { le(z, s(nn2)) <= True le(s(nn1), s(nn2)) <= le(nn1, nn2) le(nn1, nn2) <= le(s(nn1), s(nn2)) False <= le(s(nn1), z) False <= le(z, z) } ) (length, F: { length(nil, z) <= True length(cons(x, ll), s(_flb)) <= length(ll, _flb) } eq_nat(_hlb, _ilb) <= length(_glb, _hlb) /\ length(_glb, _ilb) ) } properties: { le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) } over-approximation: {append, length} under-approximation: {le} Clause system for inference is: { append(nil, l2, l2) <= True -> 0 length(nil, z) <= True -> 0 le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) -> 0 append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 length(cons(x, ll), s(_flb)) <= length(ll, _flb) -> 0 } Solving took 0.127078 seconds. No: Contradictory set of ground constraints: { append(cons(z, nil), cons(z, nil), cons(z, cons(z, nil))) <= True append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True le(z, s(z)) <= True le(z, z) <= True length(cons(z, nil), s(z)) <= True length(nil, z) <= True False <= le(z, z) } ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006443 s (model generation: 0.006367, model checking: 0.000076): Clauses: { append(nil, l2, l2) <= True -> 0 length(nil, z) <= True -> 0 le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) -> 0 append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 length(cons(x, ll), s(_flb)) <= length(ll, _flb) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None append -> [ append : { } ] ; le -> [ le : { } ] ; length -> [ length : { } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> nil } length(nil, z) <= True : Yes: { } le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) : No: () append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () length(cons(x, ll), s(_flb)) <= length(ll, _flb) : No: () ------------------------------------------- Step 1, which took 0.008135 s (model generation: 0.006847, model checking: 0.001288): Clauses: { append(nil, l2, l2) <= True -> 0 length(nil, z) <= True -> 0 le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) -> 0 append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 length(cons(x, ll), s(_flb)) <= length(ll, _flb) -> 0 } Accumulated learning constraints: { append(nil, nil, nil) <= True length(nil, z) <= True } Current best model: |_ name: None append -> [ append : { append(nil, nil, nil) <= True } ] ; le -> [ le : { } ] ; length -> [ length : { length(nil, z) <= True } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> cons(_esoqw_0, _esoqw_1) } length(nil, z) <= True : No: () le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) : Yes: { _jlb -> z ; _klb -> nil ; _llb -> z ; l1 -> nil ; l2 -> nil } append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) : Yes: { _alb -> nil ; l2 -> nil ; t1 -> nil } le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () length(cons(x, ll), s(_flb)) <= length(ll, _flb) : Yes: { _flb -> z ; ll -> nil } ------------------------------------------- Step 2, which took 0.009068 s (model generation: 0.008808, model checking: 0.000260): Clauses: { append(nil, l2, l2) <= True -> 0 length(nil, z) <= True -> 0 le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) -> 0 append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 length(cons(x, ll), s(_flb)) <= length(ll, _flb) -> 0 } Accumulated learning constraints: { append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True le(z, z) <= True length(cons(z, nil), s(z)) <= True length(nil, z) <= 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 } ] ; le -> [ le : { le(z, z) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : No: () length(nil, z) <= True : No: () le(_jlb, _llb) <= append(l1, l2, _klb) /\ length(_klb, _llb) /\ length(l1, _jlb) : Yes: { _jlb -> z ; _klb -> cons(_vsoqw_0, _vsoqw_1) ; _llb -> s(_wsoqw_0) ; l1 -> nil ; l2 -> cons(_ysoqw_0, _ysoqw_1) } append(cons(h1, t1), l2, cons(h1, _alb)) <= append(t1, l2, _alb) : Yes: { _alb -> cons(_zsoqw_0, _zsoqw_1) ; l2 -> cons(_atoqw_0, _atoqw_1) ; t1 -> nil } le(s(nn1), s(nn2)) <= le(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> z } le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : Yes: { } length(cons(x, ll), s(_flb)) <= length(ll, _flb) : No: () Total time: 0.127078 Learner time: 0.022022 Teacher time: 0.001624 Reasons for stopping: No: Contradictory set of ground constraints: { append(cons(z, nil), cons(z, nil), cons(z, cons(z, nil))) <= True append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True le(z, s(z)) <= True le(z, z) <= True length(cons(z, nil), s(z)) <= True length(nil, z) <= True False <= le(z, z) }