Solving ../../benchmarks/true/length_cons_le_tsil.smt2... Inference procedure has parameters: Ice fuel: 200 Timeout: 30s Convolution: complete 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, _by])) -> length([snoc(ll, x), s(_by)])} (length([_cy, _dy]) /\ length([_cy, _ey])) -> eq_nat([_dy, _ey]) ) } properties: {(length([l, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy])} 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 0 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 0 } Solving took 0.092659 seconds. Proved Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { (q_gen_3074) -> q_gen_3074 () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076, q_gen_3082}, Q_f={q_gen_3072}, Delta= { (q_gen_3082) -> q_gen_3082 () -> q_gen_3082 () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 (q_gen_3076) -> q_gen_3076 (q_gen_3082) -> q_gen_3076 (q_gen_3082) -> q_gen_3076 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.008404 s (model generation: 0.008012, model checking: 0.000392): 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_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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 1 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 1 } Sat witness: Yes: (() -> length([nil, z]), { }) ------------------------------------------- Step 1, which took 0.006102 s (model generation: 0.005969, model checking: 0.000133): Model: |_ { le -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3072 } Datatype: Convolution form: complete }}} } -- 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 1 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 1 } Sat witness: Yes: (() -> le([z, s(nn2)]), { nn2 -> z }) ------------------------------------------- Step 2, which took 0.007830 s (model generation: 0.007620, model checking: 0.000210): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { () -> q_gen_3074 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3072 } Datatype: Convolution form: complete }}} } -- 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 1 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 4 } Sat witness: Yes: ((length([ll, _by])) -> length([snoc(ll, x), s(_by)]), { _by -> z ; ll -> nil ; x -> z }) ------------------------------------------- Step 3, which took 0.011377 s (model generation: 0.010466, model checking: 0.000911): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { () -> q_gen_3074 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- 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)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 2 ; (le([s(nn1), z])) -> BOT -> 2 ; (le([z, z])) -> BOT -> 2 ; (length([l, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 2 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 4 } Sat witness: Yes: ((le([nn1, nn2])) -> le([s(nn1), s(nn2)]), { nn1 -> z ; nn2 -> s(z) }) ------------------------------------------- Step 4, which took 0.006963 s (model generation: 0.006744, model checking: 0.000219): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- 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)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 3 ; (le([s(nn1), z])) -> BOT -> 3 ; (le([z, z])) -> BOT -> 3 ; (length([l, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 3 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 4 } Sat witness: Yes: (() -> le([z, s(nn2)]), { nn2 -> s(z) }) ------------------------------------------- Step 5, which took 0.005288 s (model generation: 0.004689, model checking: 0.000599): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { (q_gen_3074) -> q_gen_3074 () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- 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)]) -> 4 ; (le([s(nn1), s(nn2)])) -> le([nn1, nn2]) -> 4 ; (le([s(nn1), z])) -> BOT -> 4 ; (le([z, z])) -> BOT -> 4 ; (length([l, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 4 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 7 } Sat witness: Yes: ((length([ll, _by])) -> length([snoc(ll, x), s(_by)]), { _by -> z ; ll -> nil ; x -> s(z) }) ------------------------------------------- Step 6, which took 0.012330 s (model generation: 0.012025, model checking: 0.000305): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { (q_gen_3074) -> q_gen_3074 () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076, q_gen_3082}, Q_f={q_gen_3072}, Delta= { () -> q_gen_3082 () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 (q_gen_3082) -> q_gen_3076 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 5 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 10 } Sat witness: Yes: ((length([ll, _by])) -> length([snoc(ll, x), s(_by)]), { _by -> z ; ll -> nil ; x -> s(s(z)) }) ------------------------------------------- Step 7, which took 0.008582 s (model generation: 0.006980, model checking: 0.001602): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { (q_gen_3074) -> q_gen_3074 () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076, q_gen_3082}, Q_f={q_gen_3072}, Delta= { (q_gen_3082) -> q_gen_3082 () -> q_gen_3082 () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 (q_gen_3082) -> q_gen_3076 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 6 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 13 } Sat witness: Yes: ((length([ll, _by])) -> length([snoc(ll, x), s(_by)]), { _by -> s(z) ; ll -> snoc(nil, z) ; x -> s(z) }) ------------------------------------------- Step 8, which took 0.014245 s (model generation: 0.013024, model checking: 0.001221): Model: |_ { le -> {{{ Q={q_gen_3073, q_gen_3074}, Q_f={q_gen_3073}, Delta= { (q_gen_3074) -> q_gen_3074 () -> q_gen_3074 (q_gen_3073) -> q_gen_3073 (q_gen_3074) -> q_gen_3073 } Datatype: Convolution form: complete }}} ; length -> {{{ Q={q_gen_3072, q_gen_3076, q_gen_3082}, Q_f={q_gen_3072}, Delta= { (q_gen_3082) -> q_gen_3082 () -> q_gen_3082 () -> q_gen_3072 (q_gen_3072, q_gen_3076) -> q_gen_3072 (q_gen_3076) -> q_gen_3076 (q_gen_3082) -> q_gen_3076 () -> q_gen_3076 } Datatype: Convolution form: complete }}} } -- Equality automata are defined for: {eq_nat, eq_nattsil} _| 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, _fy]) /\ length([snoc(l, x), _gy])) -> le([_fy, _gy]) -> 7 ; (length([ll, _by])) -> length([snoc(ll, x), s(_by)]) -> 16 } Sat witness: Yes: ((length([ll, _by])) -> length([snoc(ll, x), s(_by)]), { _by -> s(z) ; ll -> snoc(nil, z) ; x -> z }) Total time: 0.092659 Reason for stopping: Proved