Inference procedure has parameters: Ice fuel: 200 Timeout: 60s Convolution: right 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.076666 seconds. Proved Model: |_ { eqnat -> {{{ Q={q_gen_2575}, Q_f={q_gen_2575}, Delta= { (q_gen_2575) -> q_gen_2575 () -> q_gen_2575 } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574, q_gen_2579}, Q_f={q_gen_2574}, Delta= { (q_gen_2579) -> q_gen_2579 () -> q_gen_2579 (q_gen_2574) -> q_gen_2574 (q_gen_2579) -> q_gen_2574 () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- Equality automata are defined for: {eq_nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.010427 s (model generation: 0.009950, model checking: 0.000477): Model: |_ { eqnat -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} ; leq -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} } -- 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.010140 s (model generation: 0.010057, model checking: 0.000083): Model: |_ { eqnat -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574}, Q_f={q_gen_2574}, Delta= { () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- 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.010318 s (model generation: 0.010129, model checking: 0.000189): Model: |_ { eqnat -> {{{ Q={q_gen_2575}, Q_f={q_gen_2575}, Delta= { () -> q_gen_2575 } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574}, Q_f={q_gen_2574}, Delta= { () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- 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.010619 s (model generation: 0.010445, model checking: 0.000174): Model: |_ { eqnat -> {{{ Q={q_gen_2575}, Q_f={q_gen_2575}, Delta= { () -> q_gen_2575 } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574}, Q_f={q_gen_2574}, Delta= { (q_gen_2574) -> q_gen_2574 () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- 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.011102 s (model generation: 0.010655, model checking: 0.000447): Model: |_ { eqnat -> {{{ Q={q_gen_2575}, Q_f={q_gen_2575}, Delta= { (q_gen_2575) -> q_gen_2575 () -> q_gen_2575 } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574}, Q_f={q_gen_2574}, Delta= { (q_gen_2574) -> q_gen_2574 () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- 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.012061 s (model generation: 0.010783, model checking: 0.001278): Model: |_ { eqnat -> {{{ Q={q_gen_2575}, Q_f={q_gen_2575}, Delta= { (q_gen_2575) -> q_gen_2575 () -> q_gen_2575 } Datatype: Convolution form: right }}} ; leq -> {{{ Q={q_gen_2574, q_gen_2579}, Q_f={q_gen_2574}, Delta= { () -> q_gen_2579 (q_gen_2574) -> q_gen_2574 (q_gen_2579) -> q_gen_2574 () -> q_gen_2574 } Datatype: Convolution form: right }}} } -- 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.076666 Reason for stopping: Proved