Inference procedure has parameters: Ice fuel: 200 Timeout: 60s Convolution: left Learning problem is: env: { nat -> {s, z} } definition: { (eqnat, P: {() -> eqnat([z, z]) (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) (eqnat([s(x2), z])) -> BOT (eqnat([z, s(u)])) -> BOT} ) (leq, P: {() -> leq([z, y]) (leq([z, x2])) -> leq([s(z), s(x2)]) (leq([s(z), s(x2)])) -> leq([z, x2]) (leq([s(z), z])) -> BOT} ) } properties: {(leq([m, n]) /\ leq([n, m])) -> eqnat([n, m])} over-approximation: {leq} under-approximation: {eqnat} Clause system for inference is: { () -> eqnat([z, z]) -> 0 () -> leq([z, y]) -> 0 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 0 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 0 (eqnat([s(x2), z])) -> BOT -> 0 (eqnat([z, s(u)])) -> BOT -> 0 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 0 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 0 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 0 (leq([s(z), z])) -> BOT -> 0 } Solving took 0.064534 seconds. Proved Model: |_ { eqnat -> {{{ Q={q_gen_3017}, Q_f={q_gen_3017}, Delta= { (q_gen_3017) -> q_gen_3017 () -> q_gen_3017 } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016, q_gen_3021}, Q_f={q_gen_3016}, Delta= { (q_gen_3021) -> q_gen_3021 () -> q_gen_3021 (q_gen_3016) -> q_gen_3016 (q_gen_3021) -> q_gen_3016 () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.011232 s (model generation: 0.011048, model checking: 0.000184): Model: |_ { eqnat -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; leq -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 0 () -> leq([z, y]) -> 3 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 1 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 1 (eqnat([s(x2), z])) -> BOT -> 1 (eqnat([z, s(u)])) -> BOT -> 1 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 1 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 1 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 1 (leq([s(z), z])) -> BOT -> 1 } Sat witness: Found: (() -> leq([z, y]), { y -> z }) ------------------------------------------- Step 1, which took 0.009619 s (model generation: 0.009573, model checking: 0.000046): Model: |_ { eqnat -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016}, Q_f={q_gen_3016}, Delta= { () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 3 () -> leq([z, y]) -> 3 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 1 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 1 (eqnat([s(x2), z])) -> BOT -> 1 (eqnat([z, s(u)])) -> BOT -> 1 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 1 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 1 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 1 (leq([s(z), z])) -> BOT -> 1 } Sat witness: Found: (() -> eqnat([z, z]), { }) ------------------------------------------- Step 2, which took 0.007692 s (model generation: 0.007597, model checking: 0.000095): Model: |_ { eqnat -> {{{ Q={q_gen_3017}, Q_f={q_gen_3017}, Delta= { () -> q_gen_3017 } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016}, Q_f={q_gen_3016}, Delta= { () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 3 () -> leq([z, y]) -> 3 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 1 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 1 (eqnat([s(x2), z])) -> BOT -> 1 (eqnat([z, s(u)])) -> BOT -> 1 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 1 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 4 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 2 (leq([s(z), z])) -> BOT -> 2 } Sat witness: Found: ((leq([z, x2])) -> leq([s(z), s(x2)]), { x2 -> z ; z -> z }) ------------------------------------------- Step 3, which took 0.009125 s (model generation: 0.008989, model checking: 0.000136): Model: |_ { eqnat -> {{{ Q={q_gen_3017}, Q_f={q_gen_3017}, Delta= { () -> q_gen_3017 } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016}, Q_f={q_gen_3016}, Delta= { (q_gen_3016) -> q_gen_3016 () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 3 () -> leq([z, y]) -> 3 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 1 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 1 (eqnat([s(x2), z])) -> BOT -> 1 (eqnat([z, s(u)])) -> BOT -> 1 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 4 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 4 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 2 (leq([s(z), z])) -> BOT -> 2 } Sat witness: Found: ((leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]), { m -> s(z) ; n -> s(z) }) ------------------------------------------- Step 4, which took 0.007581 s (model generation: 0.007385, model checking: 0.000196): Model: |_ { eqnat -> {{{ Q={q_gen_3017}, Q_f={q_gen_3017}, Delta= { (q_gen_3017) -> q_gen_3017 () -> q_gen_3017 } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016}, Q_f={q_gen_3016}, Delta= { (q_gen_3016) -> q_gen_3016 () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 3 () -> leq([z, y]) -> 6 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 2 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 2 (eqnat([s(x2), z])) -> BOT -> 2 (eqnat([z, s(u)])) -> BOT -> 2 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 4 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 4 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 3 (leq([s(z), z])) -> BOT -> 3 } Sat witness: Found: (() -> leq([z, y]), { y -> s(z) }) ------------------------------------------- Step 5, which took 0.010335 s (model generation: 0.007783, model checking: 0.002552): Model: |_ { eqnat -> {{{ Q={q_gen_3017}, Q_f={q_gen_3017}, Delta= { (q_gen_3017) -> q_gen_3017 () -> q_gen_3017 } Datatype: Convolution form: left }}} ; leq -> {{{ Q={q_gen_3016, q_gen_3021}, Q_f={q_gen_3016}, Delta= { () -> q_gen_3021 (q_gen_3016) -> q_gen_3016 (q_gen_3021) -> q_gen_3016 () -> q_gen_3016 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> eqnat([z, z]) -> 4 () -> leq([z, y]) -> 9 (eqnat([x2, y2])) -> eqnat([s(x2), s(y2)]) -> 3 (eqnat([s(x2), s(y2)])) -> eqnat([x2, y2]) -> 3 (eqnat([s(x2), z])) -> BOT -> 3 (eqnat([z, s(u)])) -> BOT -> 3 (leq([m, n]) /\ leq([n, m])) -> eqnat([n, m]) -> 5 (leq([z, x2])) -> leq([s(z), s(x2)]) -> 5 (leq([s(z), s(x2)])) -> leq([z, x2]) -> 4 (leq([s(z), z])) -> BOT -> 4 } Sat witness: Found: (() -> leq([z, y]), { y -> s(s(z)) }) Total time: 0.064534 Reason for stopping: Proved