Inference procedure has parameters: Ice fuel: 200 Timeout: 60s Convolution: right 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.033818 seconds. Proved Model: |_ { le -> {{{ Q={q_gen_2173, q_gen_2174}, Q_f={q_gen_2173}, Delta= { (q_gen_2174) -> q_gen_2174 () -> q_gen_2174 (q_gen_2173) -> q_gen_2173 (q_gen_2174) -> q_gen_2173 } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172, q_gen_2176}, Q_f={q_gen_2172}, Delta= { (q_gen_2176) -> q_gen_2176 () -> q_gen_2176 (q_gen_2176, q_gen_2172) -> q_gen_2172 () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- Equality automata are defined for: {eq_nat, eq_natlist} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.004280 s (model generation: 0.004171, model checking: 0.000109): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} ; length -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} } -- 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: Found: (() -> length([nil, z]), { }) ------------------------------------------- Step 1, which took 0.004638 s (model generation: 0.004508, model checking: 0.000130): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172}, Q_f={q_gen_2172}, Delta= { () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- 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: Found: (() -> le([z, s(nn2)]), { nn2 -> z }) ------------------------------------------- Step 2, which took 0.005212 s (model generation: 0.004866, model checking: 0.000346): Model: |_ { le -> {{{ Q={q_gen_2173, q_gen_2174}, Q_f={q_gen_2173}, Delta= { () -> q_gen_2174 (q_gen_2174) -> q_gen_2173 } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172}, Q_f={q_gen_2172}, Delta= { () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- 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: Found: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> z ; ll -> nil ; x -> z }) ------------------------------------------- Step 3, which took 0.004242 s (model generation: 0.003943, model checking: 0.000299): Model: |_ { le -> {{{ Q={q_gen_2173, q_gen_2174}, Q_f={q_gen_2173}, Delta= { () -> q_gen_2174 (q_gen_2174) -> q_gen_2173 } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172, q_gen_2176}, Q_f={q_gen_2172}, Delta= { () -> q_gen_2176 (q_gen_2176, q_gen_2172) -> q_gen_2172 () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- 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]) -> 4 (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 4 } Sat witness: Found: ((length([l, _zj]) /\ length([cons(x, l), _ak])) -> le([_zj, _ak]), { _ak -> s(s(z)) ; _zj -> s(z) ; l -> cons(z, nil) ; x -> z }) ------------------------------------------- Step 4, which took 0.004466 s (model generation: 0.004214, model checking: 0.000252): Model: |_ { le -> {{{ Q={q_gen_2173, q_gen_2174}, Q_f={q_gen_2173}, Delta= { () -> q_gen_2174 (q_gen_2173) -> q_gen_2173 (q_gen_2174) -> q_gen_2173 } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172, q_gen_2176}, Q_f={q_gen_2172}, Delta= { () -> q_gen_2176 (q_gen_2176, q_gen_2172) -> q_gen_2172 () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- 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)]) -> 2 (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]) -> 4 (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 4 } Sat witness: Found: (() -> le([z, s(nn2)]), { nn2 -> s(z) }) ------------------------------------------- Step 5, which took 0.005449 s (model generation: 0.004967, model checking: 0.000482): Model: |_ { le -> {{{ Q={q_gen_2173, q_gen_2174}, Q_f={q_gen_2173}, Delta= { (q_gen_2174) -> q_gen_2174 () -> q_gen_2174 (q_gen_2173) -> q_gen_2173 (q_gen_2174) -> q_gen_2173 } Datatype: Convolution form: right }}} ; length -> {{{ Q={q_gen_2172, q_gen_2176}, Q_f={q_gen_2172}, Delta= { () -> q_gen_2176 (q_gen_2176, q_gen_2172) -> q_gen_2172 () -> q_gen_2172 } Datatype: Convolution form: right }}} } -- 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)]) -> 3 (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]) -> 4 (length([ll, _vj])) -> length([cons(x, ll), s(_vj)]) -> 7 } Sat witness: Found: ((length([ll, _vj])) -> length([cons(x, ll), s(_vj)]), { _vj -> z ; ll -> nil ; x -> s(z) }) Total time: 0.033818 Reason for stopping: Proved