Solving ../../benchmarks/smtlib/false/plus_odd_odd.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_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(_qza)) <= plus(n, mm, _qza) } eq_nat(_tza, _uza) <= plus(_rza, _sza, _tza) /\ plus(_rza, _sza, _uza) ) } properties: { is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) } over-approximation: {plus} under-approximation: {} Clause system for inference is: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 False <= is_odd(z) -> 0 plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) -> 0 } Solving took 0.038173 seconds. No: Contradictory set of ground constraints: { False <= True is_odd(s(s(s(z)))) <= True 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_odd(s(s(z))) False <= is_odd(z) } ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006130 s (model generation: 0.006067, model checking: 0.000063): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 False <= is_odd(z) -> 0 plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None 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_odd(s(s(n3))) <= is_odd(n3) : No: () is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () False <= is_odd(z) : No: () plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) : No: () ------------------------------------------- Step 1, which took 0.006122 s (model generation: 0.006058, model checking: 0.000064): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 False <= is_odd(z) -> 0 plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) -> 0 } Accumulated learning constraints: { is_odd(s(z)) <= True plus(z, z, z) <= True } Current best model: |_ name: None 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(_ggpqw_0) } is_odd(s(s(n3))) <= is_odd(n3) : No: () is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) : No: () is_odd(n3) <= is_odd(s(s(n3))) : Yes: { n3 -> z } False <= is_odd(z) : No: () plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) : Yes: { _qza -> z ; mm -> z ; n -> z } ------------------------------------------- Step 2, which took 0.007082 s (model generation: 0.007022, model checking: 0.000060): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 False <= is_odd(z) -> 0 plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) -> 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_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_odd(s(s(n3))) <= is_odd(n3) : No: () is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) : No: () is_odd(n3) <= is_odd(s(s(n3))) : No: () False <= is_odd(z) : Yes: { } plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) : Yes: { _qza -> s(_lgpqw_0) ; mm -> z ; n -> s(_ngpqw_0) } ------------------------------------------- Step 3, which took 0.011158 s (model generation: 0.010975, model checking: 0.000183): Clauses: { is_odd(s(z)) <= True -> 0 plus(n, z, n) <= True -> 0 is_odd(s(s(n3))) <= is_odd(n3) -> 0 is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) -> 0 is_odd(n3) <= is_odd(s(s(n3))) -> 0 False <= is_odd(z) -> 0 plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) -> 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_odd(s(s(z))) False <= is_odd(z) } Current best model: |_ name: None is_odd -> [ is_odd : { _r_1(z) <= True is_odd(s(x_0_0)) <= _r_1(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_odd(s(s(n3))) <= is_odd(n3) : Yes: { n3 -> s(z) } is_odd(_vza) <= is_odd(x) /\ is_odd(y) /\ plus(x, y, _vza) : Yes: { _vza -> s(s(_vgpqw_0)) ; x -> s(z) ; y -> s(z) } is_odd(n3) <= is_odd(s(s(n3))) : No: () False <= is_odd(z) : No: () plus(n, s(mm), s(_qza)) <= plus(n, mm, _qza) : No: () Total time: 0.038173 Learner time: 0.030122 Teacher time: 0.000370 Reasons for stopping: No: Contradictory set of ground constraints: { False <= True is_odd(s(s(s(z)))) <= True 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_odd(s(s(z))) False <= is_odd(z) }