Inference procedure has parameters: Ice fuel: 200 Timeout: 60s Convolution: left Learning problem is: env: { nat -> {s, z} ; nattsil -> {nil, snoc} } 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, _hl])) -> length([snoc(ll, x), s(_hl)])} (length([_il, _jl]) /\ length([_il, _kl])) -> eq_nat([_jl, _kl]) ) } properties: {(length([l, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml])} 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 0 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 0 } Solving took 0.067130 seconds. Proved Model: |_ { le -> {{{ Q={q_gen_3006, q_gen_3007}, Q_f={q_gen_3006}, Delta= { (q_gen_3007) -> q_gen_3007 () -> q_gen_3007 (q_gen_3006) -> q_gen_3006 (q_gen_3007) -> q_gen_3006 } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005, q_gen_3009}, Q_f={q_gen_3005}, Delta= { (q_gen_3009) -> q_gen_3009 () -> q_gen_3009 () -> q_gen_3005 (q_gen_3005, q_gen_3009) -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.012359 s (model generation: 0.012165, model checking: 0.000194): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; length -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 1 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 1 } Sat witness: Found: (() -> length([nil, z]), { }) ------------------------------------------- Step 1, which took 0.009776 s (model generation: 0.009702, model checking: 0.000074): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005}, Q_f={q_gen_3005}, Delta= { () -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 1 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 1 } Sat witness: Found: (() -> le([z, s(nn2)]), { nn2 -> z }) ------------------------------------------- Step 2, which took 0.008966 s (model generation: 0.008853, model checking: 0.000113): Model: |_ { le -> {{{ Q={q_gen_3006, q_gen_3007}, Q_f={q_gen_3006}, Delta= { () -> q_gen_3007 (q_gen_3007) -> q_gen_3006 } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005}, Q_f={q_gen_3005}, Delta= { () -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 1 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 4 } Sat witness: Found: ((length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]), { _hl -> z ; ll -> nil ; x -> z }) ------------------------------------------- Step 3, which took 0.007663 s (model generation: 0.007467, model checking: 0.000196): Model: |_ { le -> {{{ Q={q_gen_3006, q_gen_3007}, Q_f={q_gen_3006}, Delta= { () -> q_gen_3007 (q_gen_3007) -> q_gen_3006 } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005, q_gen_3009}, Q_f={q_gen_3005}, Delta= { () -> q_gen_3009 () -> q_gen_3005 (q_gen_3005, q_gen_3009) -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 4 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 4 } Sat witness: Found: ((length([l, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]), { _ll -> s(z) ; _ml -> s(s(z)) ; l -> snoc(nil, z) ; x -> z }) ------------------------------------------- Step 4, which took 0.010040 s (model generation: 0.007928, model checking: 0.002112): Model: |_ { le -> {{{ Q={q_gen_3006, q_gen_3007}, Q_f={q_gen_3006}, Delta= { () -> q_gen_3007 (q_gen_3006) -> q_gen_3006 (q_gen_3007) -> q_gen_3006 } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005, q_gen_3009}, Q_f={q_gen_3005}, Delta= { () -> q_gen_3009 () -> q_gen_3005 (q_gen_3005, q_gen_3009) -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 4 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 4 } Sat witness: Found: (() -> le([z, s(nn2)]), { nn2 -> s(z) }) ------------------------------------------- Step 5, which took 0.008674 s (model generation: 0.008430, model checking: 0.000244): Model: |_ { le -> {{{ Q={q_gen_3006, q_gen_3007}, Q_f={q_gen_3006}, Delta= { (q_gen_3007) -> q_gen_3007 () -> q_gen_3007 (q_gen_3006) -> q_gen_3006 (q_gen_3007) -> q_gen_3006 } Datatype: Convolution form: left }}} ; length -> {{{ Q={q_gen_3005, q_gen_3009}, Q_f={q_gen_3005}, Delta= { () -> q_gen_3009 () -> q_gen_3005 (q_gen_3005, q_gen_3009) -> q_gen_3005 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _ll]) /\ length([snoc(l, x), _ml])) -> le([_ll, _ml]) -> 4 (length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]) -> 7 } Sat witness: Found: ((length([ll, _hl])) -> length([snoc(ll, x), s(_hl)]), { _hl -> z ; ll -> nil ; x -> s(z) }) Total time: 0.067130 Reason for stopping: Proved