Solving ../../benchmarks/smtlib/true/prefix_nil.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: { elist -> {econs, enil} ; elt -> {a, b} ; nat -> {s, z} } definition: { (prefix_elt, P: { prefix_elt(enil, l) <= True prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) False <= prefix_elt(econs(z, zs), enil) } ) } properties: { prefix_elt(enil, l) <= True } over-approximation: {} under-approximation: {prefix_elt} Clause system for inference is: { prefix_elt(enil, l) <= True -> 0 prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) -> 0 prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) -> 0 eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) -> 0 False <= prefix_elt(econs(z, zs), enil) -> 0 } Solving took 0.053758 seconds. Yes: |_ name: None prefix_elt -> [ prefix_elt : { _r_1(a, a) <= True _r_1(b, b) <= True prefix_elt(econs(x_0_0, x_0_1), econs(x_1_0, x_1_1)) <= _r_1(x_0_0, x_1_0) /\ prefix_elt(x_0_1, x_1_1) prefix_elt(enil, econs(x_1_0, x_1_1)) <= True prefix_elt(enil, enil) <= True } ] -- Equality automata are defined for: {elist, elt, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006041 s (model generation: 0.005990, model checking: 0.000051): Clauses: { prefix_elt(enil, l) <= True -> 0 prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) -> 0 prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) -> 0 eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) -> 0 False <= prefix_elt(econs(z, zs), enil) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None prefix_elt -> [ prefix_elt : { } ] -- Equality automata are defined for: {elist, elt, nat} _| Answer of teacher: prefix_elt(enil, l) <= True : Yes: { l -> enil } prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) : No: () prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) : No: () eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) : No: () False <= prefix_elt(econs(z, zs), enil) : No: () ------------------------------------------- Step 1, which took 0.005998 s (model generation: 0.005948, model checking: 0.000050): Clauses: { prefix_elt(enil, l) <= True -> 0 prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) -> 0 prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) -> 0 eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) -> 0 False <= prefix_elt(econs(z, zs), enil) -> 0 } Accumulated learning constraints: { prefix_elt(enil, enil) <= True } Current best model: |_ name: None prefix_elt -> [ prefix_elt : { prefix_elt(enil, enil) <= True } ] -- Equality automata are defined for: {elist, elt, nat} _| Answer of teacher: prefix_elt(enil, l) <= True : Yes: { l -> econs(_jrjca_0, _jrjca_1) } prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) : Yes: { ys -> enil ; zs -> enil } prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) : No: () eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) : No: () False <= prefix_elt(econs(z, zs), enil) : No: () ------------------------------------------- Step 2, which took 0.006636 s (model generation: 0.006591, model checking: 0.000045): Clauses: { prefix_elt(enil, l) <= True -> 0 prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) -> 0 prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) -> 0 eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) -> 0 False <= prefix_elt(econs(z, zs), enil) -> 0 } Accumulated learning constraints: { prefix_elt(econs(a, enil), econs(a, enil)) <= True prefix_elt(enil, econs(a, enil)) <= True prefix_elt(enil, enil) <= True } Current best model: |_ name: None prefix_elt -> [ prefix_elt : { prefix_elt(econs(x_0_0, x_0_1), econs(x_1_0, x_1_1)) <= True prefix_elt(enil, econs(x_1_0, x_1_1)) <= True prefix_elt(enil, enil) <= True } ] -- Equality automata are defined for: {elist, elt, nat} _| Answer of teacher: prefix_elt(enil, l) <= True : No: () prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) : No: () prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) : Yes: { ys -> enil ; zs -> econs(_nrjca_0, _nrjca_1) } eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) : Yes: { y2 -> b ; z -> a } False <= prefix_elt(econs(z, zs), enil) : No: () ------------------------------------------- Step 3, which took 0.018526 s (model generation: 0.018311, model checking: 0.000215): Clauses: { prefix_elt(enil, l) <= True -> 0 prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) -> 0 prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) -> 0 eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) -> 0 False <= prefix_elt(econs(z, zs), enil) -> 0 } Accumulated learning constraints: { prefix_elt(econs(a, enil), econs(a, enil)) <= True prefix_elt(enil, econs(a, enil)) <= True prefix_elt(enil, enil) <= True prefix_elt(econs(a, enil), enil) <= prefix_elt(econs(a, econs(a, enil)), econs(a, enil)) False <= prefix_elt(econs(a, enil), econs(b, enil)) } Current best model: |_ name: None prefix_elt -> [ prefix_elt : { _r_1(a) <= True prefix_elt(econs(x_0_0, x_0_1), econs(x_1_0, x_1_1)) <= _r_1(x_1_0) prefix_elt(econs(x_0_0, x_0_1), enil) <= True prefix_elt(enil, econs(x_1_0, x_1_1)) <= True prefix_elt(enil, enil) <= True } ] -- Equality automata are defined for: {elist, elt, nat} _| Answer of teacher: prefix_elt(enil, l) <= True : No: () prefix_elt(econs(y2, zs), econs(y2, ys)) <= prefix_elt(zs, ys) : Yes: { y2 -> b ; ys -> enil ; zs -> enil } prefix_elt(zs, ys) <= prefix_elt(econs(y2, zs), econs(y2, ys)) : Yes: { y2 -> a ; ys -> econs(b, _asjca_1) ; zs -> econs(_bsjca_0, _bsjca_1) } eq_elt(z, y2) <= prefix_elt(econs(z, zs), econs(y2, ys)) : Yes: { y2 -> a ; z -> b } False <= prefix_elt(econs(z, zs), enil) : Yes: { } Total time: 0.053758 Learner time: 0.036840 Teacher time: 0.000361 Reasons for stopping: Yes: |_ name: None prefix_elt -> [ prefix_elt : { _r_1(a, a) <= True _r_1(b, b) <= True prefix_elt(econs(x_0_0, x_0_1), econs(x_1_0, x_1_1)) <= _r_1(x_0_0, x_1_0) /\ prefix_elt(x_0_1, x_1_1) prefix_elt(enil, econs(x_1_0, x_1_1)) <= True prefix_elt(enil, enil) <= True } ] -- Equality automata are defined for: {elist, elt, nat} _|