Solving ../../benchmarks/smtlib/true/length_cons_le_tsil.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} ; nattsil -> {nil, snoc} } 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(snoc(ll, x), s(_gka)) <= length(ll, _gka) } eq_nat(_ika, _jka) <= length(_hka, _ika) /\ length(_hka, _jka) ) } properties: { le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) } over-approximation: {length} under-approximation: {le} Clause system for inference is: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Solving took 0.105777 seconds. Yes: |_ name: None 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(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_0, x_1_0) } ] -- Equality automata are defined for: {nat, nattsil} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.005712 s (model generation: 0.005668, model checking: 0.000044): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None le -> [ le : { } ] ; length -> [ length : { } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : Yes: { } 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: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : No: () length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () ------------------------------------------- Step 1, which took 0.010155 s (model generation: 0.010059, model checking: 0.000096): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { length(nil, z) <= True } Current best model: |_ name: None le -> [ le : { } ] ; length -> [ length : { length(nil, z) <= True } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : 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: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : No: () length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : Yes: { _gka -> z ; ll -> nil } ------------------------------------------- Step 2, which took 0.017866 s (model generation: 0.017611, model checking: 0.000255): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { length(nil, z) <= True length(snoc(nil, z), s(z)) <= True } Current best model: |_ name: None le -> [ le : { } ] ; length -> [ length : { length(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= True } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : 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: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : Yes: { _kka -> z ; _lka -> s(_kqhq_0) ; l -> nil } length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () ------------------------------------------- Step 3, which took 0.020680 s (model generation: 0.020542, model checking: 0.000138): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { le(z, s(z)) <= True length(nil, z) <= True length(snoc(nil, z), s(z)) <= True } Current best model: |_ name: None le -> [ le : { le(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= True } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_nqhq_0) } le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : Yes: { _kka -> s(_oqhq_0) ; _lka -> s(_pqhq_0) ; l -> snoc(_qqhq_0, _qqhq_1) } length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () ------------------------------------------- Step 4, which took 0.022250 s (model generation: 0.022155, model checking: 0.000095): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(nil, z) <= True length(snoc(nil, z), s(z)) <= True le(s(z), s(z)) <= length(snoc(snoc(nil, z), z), s(z)) } Current best model: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= True le(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= True } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : 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: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : No: () length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () ------------------------------------------- Step 5, which took 0.013620 s (model generation: 0.013566, model checking: 0.000054): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(nil, z) <= True length(snoc(nil, z), s(z)) <= True le(z, z) <= le(s(z), s(z)) le(s(z), s(z)) <= length(snoc(snoc(nil, z), z), s(z)) } Current best model: |_ name: None 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(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= True } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> s(_vqhq_0) ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : Yes: { } le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : No: () length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () ------------------------------------------- Step 6, which took 0.007779 s (model generation: 0.007662, model checking: 0.000117): Clauses: { length(nil, z) <= True -> 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 le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) -> 0 length(snoc(ll, x), s(_gka)) <= length(ll, _gka) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, s(z)) <= True length(nil, z) <= True length(snoc(nil, z), s(z)) <= True le(s(z), z) <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(z, z) False <= length(snoc(snoc(nil, z), z), s(z)) } Current best model: |_ name: None 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(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_0, x_1_0) } ] -- Equality automata are defined for: {nat, nattsil} _| Answer of teacher: length(nil, z) <= True : 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: () le(_kka, _lka) <= length(l, _kka) /\ length(snoc(l, x), _lka) : No: () length(snoc(ll, x), s(_gka)) <= length(ll, _gka) : No: () Total time: 0.105777 Learner time: 0.097263 Teacher time: 0.000799 Reasons for stopping: Yes: |_ name: None 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(nil, z) <= True length(snoc(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_0, x_1_0) } ] -- Equality automata are defined for: {nat, nattsil} _|