Solving ../../benchmarks/smtlib/true/length_append_le_z.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: { (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(_fda)) <= length(ll, _fda) } eq_nat(_hda, _ida) <= length(_gda, _hda) /\ length(_gda, _ida) ) (append, F: { append(nil, l2, l2) <= True append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) } eq_eltlist(_mda, _nda) <= append(_kda, _lda, _mda) /\ append(_kda, _lda, _nda) ) } properties: { le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) } over-approximation: {append, length} under-approximation: {} Clause system for inference is: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 0 } Solving took 0.066973 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 } ] ; le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= 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: {elt, eltlist, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.005932 s (model generation: 0.005862, model checking: 0.000070): Clauses: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None append -> [ append : { } ] ; le -> [ le : { } ] ; length -> [ length : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> nil } le(z, s(nn2)) <= True : Yes: { } length(nil, z) <= True : Yes: { } le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) : No: () append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) : 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(_fda)) <= length(ll, _fda) : No: () ------------------------------------------- Step 1, which took 0.006365 s (model generation: 0.006283, model checking: 0.000082): Clauses: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 0 } Accumulated learning constraints: { append(nil, nil, nil) <= True le(z, s(z)) <= True length(nil, z) <= True } Current best model: |_ name: None append -> [ append : { append(nil, nil, nil) <= True } ] ; le -> [ le : { le(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> cons(_jxbq_0, _jxbq_1) } le(z, s(nn2)) <= True : No: () length(nil, z) <= True : No: () le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) : No: () append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) : Yes: { _jda -> nil ; l2 -> nil ; t1 -> nil } le(s(nn1), s(nn2)) <= le(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_oxbq_0) } 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(_fda)) <= length(ll, _fda) : Yes: { _fda -> z ; ll -> nil } ------------------------------------------- Step 2, which took 0.013558 s (model generation: 0.013462, model checking: 0.000096): Clauses: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 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 le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(cons(a, 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(s(x_0_0), s(x_1_0)) <= True le(z, s(x_1_0)) <= 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: {elt, eltlist, nat} _| Answer of teacher: append(nil, l2, l2) <= True : No: () le(z, s(nn2)) <= True : No: () length(nil, z) <= True : No: () le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) : No: () append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) : Yes: { _jda -> cons(_rxbq_0, _rxbq_1) ; l2 -> cons(_sxbq_0, _sxbq_1) ; t1 -> nil } le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> z ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () length(cons(x, ll), s(_fda)) <= length(ll, _fda) : No: () ------------------------------------------- Step 3, which took 0.016443 s (model generation: 0.016345, model checking: 0.000098): Clauses: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 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 le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True le(z, z) <= le(s(z), s(z)) } 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 } ] ; le -> [ le : { le(s(x_0_0), s(x_1_0)) <= True le(z, s(x_1_0)) <= True 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: {elt, eltlist, nat} _| Answer of teacher: append(nil, l2, l2) <= True : No: () le(z, s(nn2)) <= True : No: () length(nil, z) <= True : No: () le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) : No: () append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> s(_yxbq_0) ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : Yes: { } length(cons(x, ll), s(_fda)) <= length(ll, _fda) : No: () ------------------------------------------- Step 4, which took 0.012091 s (model generation: 0.011965, model checking: 0.000126): Clauses: { append(nil, l2, l2) <= True -> 0 le(z, s(nn2)) <= True -> 0 length(nil, z) <= True -> 0 le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) -> 0 append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) -> 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(_fda)) <= length(ll, _fda) -> 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 le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True le(s(z), z) <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(z, z) } 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 } ] ; le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(s(x_0_0), z) <= True le(z, s(x_1_0)) <= 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: {elt, eltlist, nat} _| Answer of teacher: append(nil, l2, l2) <= True : No: () le(z, s(nn2)) <= True : No: () length(nil, z) <= True : No: () le(z, _qda) <= append(l1, l2, _pda) /\ le(z, _oda) /\ length(_pda, _qda) /\ length(l1, _oda) : No: () append(cons(h1, t1), l2, cons(h1, _jda)) <= append(t1, l2, _jda) : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : Yes: { } False <= le(z, z) : No: () length(cons(x, ll), s(_fda)) <= length(ll, _fda) : No: () Total time: 0.066973 Learner time: 0.053917 Teacher time: 0.000472 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 } ] ; le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= 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: {elt, eltlist, nat} _|