Solving ../../benchmarks/smtlib/true/length_cons_le_fun_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} ; 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(_ofa)) <= length(ll, _ofa) } eq_nat(_qfa, _rfa) <= length(_pfa, _qfa) /\ length(_pfa, _rfa) ) (fcons, F: { fcons(x, l, cons(x, l)) <= True } eq_eltlist(_ufa, _vfa) <= fcons(_sfa, _tfa, _ufa) /\ fcons(_sfa, _tfa, _vfa) ) } properties: { le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) } over-approximation: {fcons, length} under-approximation: {le} Clause system for inference is: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Solving took 0.149817 seconds. Yes: |_ name: None fcons -> [ fcons : { _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 fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.007668 s (model generation: 0.007533, model checking: 0.000135): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None fcons -> [ fcons : { } ] ; le -> [ le : { } ] ; length -> [ length : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: fcons(x, l, cons(x, l)) <= True : Yes: { l -> nil ; x -> b } length(nil, z) <= True : Yes: { } le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 1, which took 0.006781 s (model generation: 0.006713, model checking: 0.000068): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(b, nil, cons(b, nil)) <= True length(nil, z) <= True } Current best model: |_ name: None fcons -> [ fcons : { fcons(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le -> [ le : { } ] ; length -> [ length : { length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: fcons(x, l, cons(x, l)) <= True : Yes: { l -> nil ; x -> a } length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : 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(_ofa)) <= length(ll, _ofa) : Yes: { _ofa -> z ; ll -> nil } ------------------------------------------- Step 2, which took 0.009953 s (model generation: 0.009866, model checking: 0.000087): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, nil, cons(a, nil)) <= True fcons(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True } Current best model: |_ name: None fcons -> [ fcons : { fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le -> [ le : { } ] ; 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: fcons(x, l, cons(x, l)) <= True : Yes: { l -> cons(_uahq_0, _uahq_1) ; x -> b } length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : Yes: { _wfa -> z ; _xfa -> cons(_xahq_0, _xahq_1) ; _yfa -> s(_yahq_0) ; l -> nil ; x -> a } 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 3, which took 0.015623 s (model generation: 0.015508, model checking: 0.000115): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, nil)) <= True le(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True } Current best model: |_ name: None fcons -> [ fcons : { fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le -> [ le : { 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: fcons(x, l, cons(x, l)) <= True : Yes: { l -> cons(_gbhq_0, _gbhq_1) ; x -> a } length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : Yes: { _wfa -> s(_ibhq_0) ; _xfa -> cons(_jbhq_0, _jbhq_1) ; _yfa -> s(_kbhq_0) ; l -> cons(_lbhq_0, _lbhq_1) ; x -> b } le(s(nn1), s(nn2)) <= le(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_obhq_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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 4, which took 0.012326 s (model generation: 0.012265, model checking: 0.000061): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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), s(z)) <= fcons(b, cons(a, nil), cons(a, nil)) } Current best model: |_ name: None fcons -> [ fcons : { fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(b, nil, cons(x_2_0, x_2_1)) <= 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: fcons(x, l, cons(x, l)) <= True : No: () length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : No: () 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 5, which took 0.011660 s (model generation: 0.011608, model checking: 0.000052): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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), s(z)) <= fcons(b, cons(a, nil), cons(a, nil)) le(z, z) <= le(s(z), s(z)) } Current best model: |_ name: None fcons -> [ fcons : { fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(b, nil, cons(x_2_0, x_2_1)) <= 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: fcons(x, l, cons(x, l)) <= True : No: () length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> s(_tbhq_0) ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : Yes: { } length(cons(x, ll), s(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 6, which took 0.014933 s (model generation: 0.014359, model checking: 0.000574): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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 False <= fcons(b, cons(a, nil), cons(a, nil)) 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 fcons -> [ fcons : { _r_1(b) <= True fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_0) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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: fcons(x, l, cons(x, l)) <= True : No: () length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : Yes: { _wfa -> s(z) ; _xfa -> cons(_ybhq_0, _ybhq_1) ; _yfa -> s(z) ; l -> cons(_achq_0, _achq_1) ; x -> a } 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 7, which took 0.014091 s (model generation: 0.013820, model checking: 0.000271): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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 False <= fcons(a, cons(a, nil), cons(a, nil)) False <= fcons(b, cons(a, nil), cons(a, nil)) False <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(s(z), z) False <= le(z, z) } Current best model: |_ name: None fcons -> [ fcons : { _r_1(cons(x_0_0, x_0_1)) <= True fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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} _| Answer of teacher: fcons(x, l, cons(x, l)) <= True : No: () length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : Yes: { _wfa -> s(z) ; _xfa -> cons(_gdhq_0, cons(_udhq_0, _udhq_1)) ; _yfa -> s(z) ; l -> cons(_idhq_0, _idhq_1) ; x -> b } 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 8, which took 0.015518 s (model generation: 0.015036, model checking: 0.000482): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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 False <= fcons(a, cons(a, nil), cons(a, nil)) False <= fcons(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= fcons(b, cons(a, nil), cons(a, nil)) False <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(s(z), z) False <= le(z, z) } Current best model: |_ name: None fcons -> [ fcons : { _r_1(cons(x_0_0, x_0_1)) <= True fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: fcons(x, l, cons(x, l)) <= True : No: () length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : Yes: { _wfa -> s(s(z)) ; _xfa -> cons(_lehq_0, cons(_dfhq_0, nil)) ; _yfa -> s(s(z)) ; l -> cons(_nehq_0, cons(_gfhq_0, nil)) ; x -> b } 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(_ofa)) <= length(ll, _ofa) : No: () ------------------------------------------- Step 9, which took 0.023357 s (model generation: 0.023171, model checking: 0.000186): Clauses: { fcons(x, l, cons(x, l)) <= True -> 0 length(nil, z) <= True -> 0 le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) -> 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(_ofa)) <= length(ll, _ofa) -> 0 } Accumulated learning constraints: { fcons(a, cons(a, nil), cons(a, cons(a, nil))) <= True fcons(a, nil, cons(a, nil)) <= True fcons(b, cons(a, nil), cons(b, cons(a, nil))) <= True fcons(b, nil, cons(b, 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 False <= fcons(a, cons(a, nil), cons(a, nil)) le(s(s(z)), s(s(z))) <= fcons(b, cons(a, cons(a, nil)), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= fcons(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= fcons(b, cons(a, nil), cons(a, nil)) False <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(s(z), z) False <= le(z, z) } Current best model: |_ name: None fcons -> [ fcons : { _r_1(nil, cons(x_1_0, x_1_1)) <= True fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: fcons(x, l, cons(x, l)) <= True : Yes: { l -> cons(_vfhq_0, cons(_vghq_0, _vghq_1)) ; x -> b } length(nil, z) <= True : No: () le(_wfa, _yfa) <= fcons(x, l, _xfa) /\ length(_xfa, _yfa) /\ length(l, _wfa) : 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(_ofa)) <= length(ll, _ofa) : No: () Total time: 0.149817 Learner time: 0.129879 Teacher time: 0.002031 Reasons for stopping: Yes: |_ name: None fcons -> [ fcons : { _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 fcons(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(a, nil, cons(x_2_0, x_2_1)) <= True fcons(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) fcons(b, nil, cons(x_2_0, x_2_1)) <= 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)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] -- Equality automata are defined for: {elt, eltlist, nat} _|