Solving ../../benchmarks/true/length_cons_le.smt2... Inference procedure has parameters: Ice fuel: 200 Timeout: 30s Convolution: complete Learning problem is: env: { nat -> {s, z} ; natlist -> {cons, nil} } definition: { (le, P: {() -> le([z, s(nn2)]) (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) (le([s(nn1), z])) -> BOT (le([z, z])) -> BOT} ) (length, F: {() -> length([nil, z]) (length([ll, _vj])) -> length([cons(x, ll), s(_vj)])} (length([_wj, _xj]) /\ length([_wj, _yj])) -> eq_nat([_xj, _yj]) ) } properties: {(length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak])} over-approximation: {length} under-approximation: {le} Clause system for inference is: { () -> le([z, s(nn2)]) -> 0 ; () -> length([nil, z]) -> 0 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 0 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 0 ; (le([s(nn1), z])) -> BOT -> 0 ; (le([z, z])) -> BOT -> 0 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 0 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 0 } Solving took 0.048721 seconds. Proved Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { (q_gen_3056) -> q_gen_3056 () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058, q_gen_3064}, Q_f={q_gen_3054}, Delta= { (q_gen_3064) -> q_gen_3064 () -> q_gen_3064 (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 (q_gen_3058) -> q_gen_3058 (q_gen_3064) -> q_gen_3058 (q_gen_3064) -> q_gen_3058 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.004077 s (model generation: 0.003976, model checking: 0.000101): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: complete }}} ; length -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 0 ; () -> length([nil, z]) -> 3 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 1 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 1 ; (le([s(nn1), z])) -> BOT -> 1 ; (le([z, z])) -> BOT -> 1 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 1 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 1 } Sat witness: Yes: (() -> length([nil, z]), { }) ------------------------------------------- Step 1, which took 0.003583 s (model generation: 0.003516, model checking: 0.000067): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054}, Q_f={q_gen_3054}, Delta= { () -> q_gen_3054 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 3 ; () -> length([nil, z]) -> 3 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 1 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 1 ; (le([s(nn1), z])) -> BOT -> 1 ; (le([z, z])) -> BOT -> 1 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 1 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 1 } Sat witness: Yes: (() -> le([z, s(nn2)]), { nn2 -> z }) ------------------------------------------- Step 2, which took 0.003512 s (model generation: 0.003442, model checking: 0.000070): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { () -> q_gen_3056 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054}, Q_f={q_gen_3054}, Delta= { () -> q_gen_3054 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 3 ; () -> length([nil, z]) -> 3 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 1 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 1 ; (le([s(nn1), z])) -> BOT -> 1 ; (le([z, z])) -> BOT -> 1 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 1 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 4 } Sat witness: Yes: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> z ; ll -> nil ; x -> z }) ------------------------------------------- Step 3, which took 0.004386 s (model generation: 0.003491, model checking: 0.000895): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { () -> q_gen_3056 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058}, Q_f={q_gen_3054}, Delta= { (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 3 ; () -> length([nil, z]) -> 3 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 2 ; (le([s(nn1), z])) -> BOT -> 2 ; (le([z, z])) -> BOT -> 2 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 2 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 4 } Sat witness: Yes: ((le([nn1, nn2])) -> le([s(nn1), s(nn2)]), { nn1 -> z ; nn2 -> s(z) }) ------------------------------------------- Step 4, which took 0.003717 s (model generation: 0.003516, model checking: 0.000201): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058}, Q_f={q_gen_3054}, Delta= { (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 6 ; () -> length([nil, z]) -> 4 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 3 ; (le([s(nn1), z])) -> BOT -> 3 ; (le([z, z])) -> BOT -> 3 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 3 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 4 } Sat witness: Yes: (() -> le([z, s(nn2)]), { nn2 -> s(z) }) ------------------------------------------- Step 5, which took 0.004554 s (model generation: 0.004305, model checking: 0.000249): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { (q_gen_3056) -> q_gen_3056 () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058}, Q_f={q_gen_3054}, Delta= { (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 6 ; () -> length([nil, z]) -> 4 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 4 ; (le([s(nn1), z])) -> BOT -> 4 ; (le([z, z])) -> BOT -> 4 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 4 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 7 } Sat witness: Yes: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> z ; ll -> nil ; x -> s(z) }) ------------------------------------------- Step 6, which took 0.007706 s (model generation: 0.006900, model checking: 0.000806): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { (q_gen_3056) -> q_gen_3056 () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058, q_gen_3064}, Q_f={q_gen_3054}, Delta= { () -> q_gen_3064 (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 (q_gen_3064) -> q_gen_3058 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 7 ; () -> length([nil, z]) -> 5 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 5 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 5 ; (le([s(nn1), z])) -> BOT -> 5 ; (le([z, z])) -> BOT -> 5 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 5 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 10 } Sat witness: Yes: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> z ; ll -> nil ; x -> s(s(z)) }) ------------------------------------------- Step 7, which took 0.007233 s (model generation: 0.006497, model checking: 0.000736): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { (q_gen_3056) -> q_gen_3056 () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058, q_gen_3064}, Q_f={q_gen_3054}, Delta= { (q_gen_3064) -> q_gen_3064 () -> q_gen_3064 (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 (q_gen_3064) -> q_gen_3058 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 8 ; () -> length([nil, z]) -> 6 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 6 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 6 ; (le([s(nn1), z])) -> BOT -> 6 ; (le([z, z])) -> BOT -> 6 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 6 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 13 } Sat witness: Yes: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> s(z) ; ll -> cons(z, nil) ; x -> s(z) }) ------------------------------------------- Step 8, which took 0.004891 s (model generation: 0.004347, model checking: 0.000544): Model: |_ { le -> {{{ Q={q_gen_3055, q_gen_3056}, Q_f={q_gen_3055}, Delta= { (q_gen_3056) -> q_gen_3056 () -> q_gen_3056 (q_gen_3055) -> q_gen_3055 (q_gen_3056) -> q_gen_3055 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3054, q_gen_3058, q_gen_3064}, Q_f={q_gen_3054}, Delta= { (q_gen_3064) -> q_gen_3064 () -> q_gen_3064 (q_gen_3058, q_gen_3054) -> q_gen_3054 () -> q_gen_3054 (q_gen_3058) -> q_gen_3058 (q_gen_3064) -> q_gen_3058 () -> q_gen_3058 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| Teacher's answer: New clause system: { () -> le([z, s(nn2)]) -> 9 ; () -> length([nil, z]) -> 7 ; (le([nn1, nn2])) -> le([s(nn1), s(nn2)]) -> 7 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 7 ; (le([s(nn1), z])) -> BOT -> 7 ; (le([z, z])) -> BOT -> 7 ; (length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]) -> 7 ; (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 16 } Sat witness: Yes: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> s(z) ; ll -> cons(z, nil) ; x -> z }) Total time: 0.048721 Reason for stopping: Proved