Inference procedure has parameters: Ice fuel: 200 Timeout: 60s Convolution: left Learning problem is: env: { nat -> {s, z} } definition: { (double, F: {() -> double([z, z]) (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))])} (double([_efa, _ffa]) /\ double([_efa, _gfa])) -> eq_nat([_ffa, _gfa]) ) (is_zero, P: {(double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT (double([n, z])) -> is_zero([n])} ) } properties: {() -> is_zero([z])} over-approximation: {double} under-approximation: {is_zero} Clause system for inference is: { () -> double([z, z]) -> 0 () -> is_zero([z]) -> 0 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 0 (double([n, z])) -> is_zero([n]) -> 0 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 0 } Solving took 0.198033 seconds. Proved Model: |_ { double -> {{{ Q={q_gen_8404, q_gen_8406, q_gen_8407}, Q_f={q_gen_8404}, Delta= { (q_gen_8407) -> q_gen_8407 () -> q_gen_8407 (q_gen_8404) -> q_gen_8404 (q_gen_8406) -> q_gen_8404 () -> q_gen_8404 (q_gen_8407) -> q_gen_8406 } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={q_gen_8403}, Q_f={q_gen_8403}, Delta= { () -> q_gen_8403 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.066617 s (model generation: 0.066424, model checking: 0.000193): Model: |_ { double -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> double([z, z]) -> 0 () -> is_zero([z]) -> 3 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 1 (double([n, z])) -> is_zero([n]) -> 1 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 1 } Sat witness: Found: (() -> is_zero([z]), { }) ------------------------------------------- Step 1, which took 0.021118 s (model generation: 0.021016, model checking: 0.000102): Model: |_ { double -> {{{ Q={}, Q_f={}, Delta= { } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={q_gen_8403}, Q_f={q_gen_8403}, Delta= { () -> q_gen_8403 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> double([z, z]) -> 3 () -> is_zero([z]) -> 3 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 1 (double([n, z])) -> is_zero([n]) -> 1 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 1 } Sat witness: Found: (() -> double([z, z]), { }) ------------------------------------------- Step 2, which took 0.019939 s (model generation: 0.019730, model checking: 0.000209): Model: |_ { double -> {{{ Q={q_gen_8404}, Q_f={q_gen_8404}, Delta= { () -> q_gen_8404 } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={q_gen_8403}, Q_f={q_gen_8403}, Delta= { () -> q_gen_8403 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> double([z, z]) -> 3 () -> is_zero([z]) -> 3 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 1 (double([n, z])) -> is_zero([n]) -> 1 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 4 } Sat witness: Found: ((double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]), { _dfa -> z ; nn -> z }) ------------------------------------------- Step 3, which took 0.021093 s (model generation: 0.020890, model checking: 0.000203): Model: |_ { double -> {{{ Q={q_gen_8404, q_gen_8407}, Q_f={q_gen_8404}, Delta= { () -> q_gen_8407 (q_gen_8404) -> q_gen_8404 (q_gen_8407) -> q_gen_8404 () -> q_gen_8404 } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={q_gen_8403}, Q_f={q_gen_8403}, Delta= { () -> q_gen_8403 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> double([z, z]) -> 3 () -> is_zero([z]) -> 3 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 4 (double([n, z])) -> is_zero([n]) -> 2 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 4 } Sat witness: Found: ((double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT, { _hfa -> s(z) ; n -> z }) ------------------------------------------- Step 4, which took 0.043317 s (model generation: 0.022842, model checking: 0.020475): Model: |_ { double -> {{{ Q={q_gen_8404, q_gen_8406, q_gen_8407}, Q_f={q_gen_8404}, Delta= { () -> q_gen_8407 (q_gen_8406) -> q_gen_8404 () -> q_gen_8404 (q_gen_8407) -> q_gen_8406 } Datatype: Convolution form: left }}} ; is_zero -> {{{ Q={q_gen_8403}, Q_f={q_gen_8403}, Delta= { () -> q_gen_8403 } Datatype: Convolution form: left }}} } -- Equality automata are defined for: {eq_nat} _| Teacher's answer: New clause system: { () -> double([z, z]) -> 4 () -> is_zero([z]) -> 4 (double([n, _hfa]) /\ is_zero([n]) /\ not eq_nat([_hfa, z])) -> BOT -> 4 (double([n, z])) -> is_zero([n]) -> 3 (double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]) -> 7 } Sat witness: Found: ((double([nn, _dfa])) -> double([s(nn), s(s(_dfa))]), { _dfa -> s(s(z)) ; nn -> s(z) }) Total time: 0.198033 Reason for stopping: Proved