Solving ../../benchmarks/smtlib/true/plus_odd_odd_even.smt2... Inference procedure has parameters: Ice fuel: 200 Timeout: Some(60.) (sec) Teacher_type: Checks all clauses every time Approximation method: remove every clause that can be safely removed Learning problem is: env: { nat -> {s, z} } definition: { (is_even, P: { is_even(z) <= True is_even(s(s(n3))) <= is_even(n3) is_even(n3) <= is_even(s(s(n3))) False <= is_even(s(z)) } ) (is_odd, P: { is_odd(s(z)) <= True is_odd(s(s(n3))) <= is_odd(n3) is_odd(n3) <= is_odd(s(s(n3))) False <= is_odd(z) } ) (plus, F: { plus(n, z, n) <= True plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) } eq_nat(_xha, _yha) <= plus(_vha, _wha, _xha) /\ plus(_vha, _wha, _yha) ) } properties: { is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) } over-approximation: {is_odd, plus} under-approximation: {is_even} Clause system for inference is: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Solving took 0.127526 seconds. Yes: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_even(x_1_0) /\ is_odd(x_2_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_even(x_2_0) /\ is_odd(x_1_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_0_0) plus(s(x_0_0), z, s(x_2_0)) <= is_even(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_odd(x_0_0) plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.016029 s (model generation: 0.015875, model checking: 0.000154): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None is_even -> [ is_even : { } ] ; is_odd -> [ is_odd : { } ] ; plus -> [ plus : { } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : Yes: { } plus(n, z, n) <= True : Yes: { n -> z } is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : No: () ------------------------------------------- Step 1, which took 0.007633 s (model generation: 0.007502, model checking: 0.000131): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(z, z, z) <= True } Current best model: |_ name: None is_even -> [ is_even : { } ] ; is_odd -> [ is_odd : { is_odd(s(x_0_0)) <= True } ] ; plus -> [ plus : { plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : Yes: { n -> s(_qxrba_0) } is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : Yes: { n3 -> z } plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> z ; mm -> z ; n -> z } ------------------------------------------- Step 2, which took 0.009988 s (model generation: 0.009905, model checking: 0.000083): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True is_odd(z) <= is_odd(s(s(z))) } Current best model: |_ name: None is_even -> [ is_even : { } ] ; is_odd -> [ is_odd : { is_odd(s(x_0_0)) <= True is_odd(z) <= True } ] ; plus -> [ plus : { plus(s(x_0_0), z, s(x_2_0)) <= True plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : Yes: { _zha -> z ; x -> z ; y -> z } is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> s(_eyrba_0) ; mm -> z ; n -> s(_gyrba_0) } ------------------------------------------- Step 3, which took 0.008716 s (model generation: 0.008648, model checking: 0.000068): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True is_odd(z) <= is_odd(s(s(z))) is_even(z) <= is_odd(z) } Current best model: |_ name: None is_even -> [ is_even : { is_even(z) <= True } ] ; is_odd -> [ is_odd : { is_odd(s(x_0_0)) <= True is_odd(z) <= True } ] ; plus -> [ plus : { plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= True plus(s(x_0_0), z, s(x_2_0)) <= True plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : Yes: { n3 -> z } is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : Yes: { _zha -> s(_oyrba_0) ; x -> z ; y -> s(_qyrba_0) } is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : No: () ------------------------------------------- Step 4, which took 0.008355 s (model generation: 0.008304, model checking: 0.000051): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True is_even(s(s(z))) <= is_even(z) is_odd(z) <= is_odd(s(s(z))) is_even(s(z)) <= is_odd(z) is_even(z) <= is_odd(z) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= True is_even(z) <= True } ] ; is_odd -> [ is_odd : { is_odd(s(x_0_0)) <= True is_odd(z) <= True } ] ; plus -> [ plus : { plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= True plus(s(x_0_0), z, s(x_2_0)) <= True plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : Yes: { } is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : No: () ------------------------------------------- Step 5, which took 0.015286 s (model generation: 0.014855, model checking: 0.000431): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True False <= is_even(s(z)) is_even(s(s(z))) <= is_even(z) False <= is_odd(s(s(z))) False <= is_odd(z) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= True plus(s(x_0_0), z, s(x_2_0)) <= True plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : Yes: { _zha -> s(z) ; x -> s(z) ; y -> s(z) } is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : No: () ------------------------------------------- Step 6, which took 0.014245 s (model generation: 0.013837, model checking: 0.000408): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True False <= is_even(s(z)) is_even(s(s(z))) <= is_even(z) False <= is_odd(s(s(z))) False <= is_odd(z) False <= plus(s(z), s(z), s(z)) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= True plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> s(s(z)) ; mm -> z ; n -> s(_yzrba_0) } ------------------------------------------- Step 7, which took 0.009592 s (model generation: 0.009180, model checking: 0.000412): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True False <= is_even(s(z)) is_even(s(s(z))) <= is_even(z) False <= is_odd(s(s(z))) False <= is_odd(z) False <= plus(s(z), s(z), s(z)) plus(s(z), s(z), s(s(s(z)))) <= plus(s(z), z, s(s(z))) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_even(x_2_0) plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : Yes: { n -> s(s(z)) } is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> s(s(z)) ; mm -> s(_zasba_0) ; n -> s(_absba_0) } ------------------------------------------- Step 8, which took 0.011222 s (model generation: 0.010686, model checking: 0.000536): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(s(z)), z, s(s(z))) <= True plus(s(z), s(s(z)), s(s(s(z)))) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True False <= is_even(s(z)) is_even(s(s(z))) <= is_even(z) False <= is_odd(s(s(z))) False <= is_odd(z) False <= plus(s(z), s(z), s(z)) plus(s(z), s(z), s(s(s(z)))) <= plus(s(z), z, s(s(z))) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_1_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_even(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_odd(x_0_0) plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> s(s(z)) ; mm -> z ; n -> s(s(z)) } ------------------------------------------- Step 9, which took 0.011555 s (model generation: 0.011008, model checking: 0.000547): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_even(s(s(n3))) <= is_even(n3) -> 0 is_even(n3) <= is_even(s(s(n3))) -> 0 False <= is_even(s(z)) -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(s(s(z)), s(z), s(s(s(z)))) <= True plus(s(s(z)), z, s(s(z))) <= True plus(s(z), s(s(z)), s(s(s(z)))) <= True plus(s(z), s(z), s(s(z))) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True False <= is_even(s(z)) is_even(s(s(z))) <= is_even(z) False <= is_odd(s(s(z))) False <= is_odd(z) False <= plus(s(z), s(z), s(z)) plus(s(z), s(z), s(s(s(z)))) <= plus(s(z), z, s(s(z))) } Current best model: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_1_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_even(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_odd(x_0_0) plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: is_odd(s(z)) <= True : No: () plus(n, z, n) <= True : No: () is_even(s(s(n3))) <= is_even(n3) : No: () is_even(n3) <= is_even(s(s(n3))) : No: () False <= is_even(s(z)) : No: () is_odd(s(s(n3))) <= is_odd(n3) : No: () is_even(_zha) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _zha) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () plus(n, s(mm), s(_uha)) <= plus(n, mm, _uha) : Yes: { _uha -> s(s(z)) ; mm -> s(s(z)) ; n -> s(z) } Total time: 0.127526 Learner time: 0.109800 Teacher time: 0.002821 Reasons for stopping: Yes: |_ name: None is_even -> [ is_even : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; is_odd -> [ is_odd : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) } ] ; plus -> [ plus : { is_even(s(x_0_0)) <= is_odd(x_0_0) is_even(z) <= True is_odd(s(x_0_0)) <= is_even(x_0_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_even(x_1_0) /\ is_odd(x_2_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_even(x_2_0) /\ is_odd(x_1_0) plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= is_odd(x_0_0) plus(s(x_0_0), z, s(x_2_0)) <= is_even(x_2_0) plus(s(x_0_0), z, s(x_2_0)) <= is_odd(x_0_0) plus(z, s(x_1_0), s(x_2_0)) <= True plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _|