Solving ../../benchmarks/smtlib/true/plus_not_zero_implication.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: { (plus, F: { plus(n, z, n) <= True plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) } eq_nat(_je, _ke) <= plus(_he, _ie, _je) /\ plus(_he, _ie, _ke) ) (not_zero, P: { not_zero(s(nn)) <= True False <= not_zero(z) } ) } properties: { not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) } over-approximation: {plus} under-approximation: {} Clause system for inference is: { not_zero(s(nn)) <= True -> 0 plus(n, z, n) <= True -> 0 not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) -> 0 False <= not_zero(z) -> 0 plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) -> 0 } Solving took 0.038783 seconds. Yes: |_ name: None not_zero -> [ not_zero : { not_zero(s(x_0_0)) <= 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} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.005687 s (model generation: 0.005648, model checking: 0.000039): Clauses: { not_zero(s(nn)) <= True -> 0 plus(n, z, n) <= True -> 0 not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) -> 0 False <= not_zero(z) -> 0 plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None not_zero -> [ not_zero : { } ] ; plus -> [ plus : { } ] -- Equality automata are defined for: {nat} _| Answer of teacher: not_zero(s(nn)) <= True : Yes: { } plus(n, z, n) <= True : Yes: { n -> z } not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) : No: () False <= not_zero(z) : No: () plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) : No: () ------------------------------------------- Step 1, which took 0.007272 s (model generation: 0.007223, model checking: 0.000049): Clauses: { not_zero(s(nn)) <= True -> 0 plus(n, z, n) <= True -> 0 not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) -> 0 False <= not_zero(z) -> 0 plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) -> 0 } Accumulated learning constraints: { not_zero(s(z)) <= True plus(z, z, z) <= True } Current best model: |_ name: None not_zero -> [ not_zero : { not_zero(s(x_0_0)) <= True } ] ; plus -> [ plus : { plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: not_zero(s(nn)) <= True : No: () plus(n, z, n) <= True : Yes: { n -> s(_hxrba_0) } not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) : No: () False <= not_zero(z) : No: () plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) : Yes: { _ge -> z ; mm -> z ; n -> z } ------------------------------------------- Step 2, which took 0.007693 s (model generation: 0.007636, model checking: 0.000057): Clauses: { not_zero(s(nn)) <= True -> 0 plus(n, z, n) <= True -> 0 not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) -> 0 False <= not_zero(z) -> 0 plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) -> 0 } Accumulated learning constraints: { not_zero(s(z)) <= True plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True } Current best model: |_ name: None not_zero -> [ not_zero : { not_zero(s(x_0_0)) <= 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: not_zero(s(nn)) <= True : No: () plus(n, z, n) <= True : No: () not_zero(_le) <= not_zero(n) /\ plus(n, m, _le) : No: () False <= not_zero(z) : No: () plus(n, s(mm), s(_ge)) <= plus(n, mm, _ge) : Yes: { _ge -> s(_lxrba_0) ; mm -> z ; n -> s(_nxrba_0) } Total time: 0.038783 Learner time: 0.020507 Teacher time: 0.000145 Reasons for stopping: Yes: |_ name: None not_zero -> [ not_zero : { not_zero(s(x_0_0)) <= 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} _|