Solving ../../benchmarks/smtlib/true/plus_succ_le_1.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(_pta)) <= plus(n, mm, _pta) } eq_nat(_sta, _tta) <= plus(_qta, _rta, _sta) /\ plus(_qta, _rta, _tta) ) (le, P: { le(z, s(nn2)) <= True le(s(nn1), s(nn2)) <= le(nn1, nn2) le(nn1, nn2) <= le(s(nn1), s(nn2)) False <= le(s(nn1), z) False <= le(z, z) } ) } properties: { le(m, _uta) <= plus(s(n), m, _uta) } over-approximation: {plus} under-approximation: {le} Clause system for inference is: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Solving took 0.124158 seconds. Yes: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= True } ] ; plus -> [ plus : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= True plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= le(x_1_0, 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} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.008144 s (model generation: 0.008068, model checking: 0.000076): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None le -> [ le : { } ] ; plus -> [ plus : { } ] -- Equality automata are defined for: {nat} _| Answer of teacher: plus(n, z, n) <= True : Yes: { n -> z } le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : No: () le(m, _uta) <= plus(s(n), m, _uta) : No: () ------------------------------------------- Step 1, which took 0.011688 s (model generation: 0.011486, model checking: 0.000202): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { plus(z, z, z) <= True } Current best model: |_ name: None le -> [ le : { } ] ; plus -> [ plus : { plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: plus(n, z, n) <= True : Yes: { n -> s(_qksba_0) } le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : Yes: { _pta -> z ; mm -> z ; n -> z } le(m, _uta) <= plus(s(n), m, _uta) : No: () ------------------------------------------- Step 2, which took 0.019976 s (model generation: 0.019812, model checking: 0.000164): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { plus(s(z), z, s(z)) <= True plus(z, s(z), s(z)) <= True plus(z, z, z) <= True } Current best model: |_ name: None le -> [ le : { } ] ; 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: plus(n, z, n) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : Yes: { _pta -> s(_uksba_0) ; mm -> z ; n -> s(_wksba_0) } le(m, _uta) <= plus(s(n), m, _uta) : Yes: { _uta -> s(_xksba_0) ; m -> z } ------------------------------------------- Step 3, which took 0.021446 s (model generation: 0.021317, model checking: 0.000129): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { le(z, 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 } Current best model: |_ name: None le -> [ le : { le(z, s(x_1_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} _| Answer of teacher: plus(n, z, n) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_alsba_0) } le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : No: () le(m, _uta) <= plus(s(n), m, _uta) : Yes: { _uta -> s(_blsba_0) ; m -> s(_clsba_0) } ------------------------------------------- Step 4, which took 0.014112 s (model generation: 0.014028, model checking: 0.000084): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, 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 le(s(z), s(z)) <= plus(s(z), s(z), s(z)) } Current best model: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= True le(z, s(x_1_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} _| Answer of teacher: plus(n, z, n) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> z ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : No: () le(m, _uta) <= plus(s(n), m, _uta) : No: () ------------------------------------------- Step 5, which took 0.011378 s (model generation: 0.011285, model checking: 0.000093): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, 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 le(z, z) <= le(s(z), s(z)) le(s(z), s(z)) <= plus(s(z), s(z), s(z)) } Current best model: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= True le(z, s(x_1_0)) <= True le(z, 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: plus(n, z, n) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : Yes: { nn1 -> s(_hlsba_0) ; nn2 -> z } False <= le(s(nn1), z) : No: () False <= le(z, z) : Yes: { } plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : No: () le(m, _uta) <= plus(s(n), m, _uta) : No: () ------------------------------------------- Step 6, which took 0.022448 s (model generation: 0.022149, model checking: 0.000299): Clauses: { plus(n, z, n) <= True -> 0 le(s(nn1), s(nn2)) <= le(nn1, nn2) -> 0 le(nn1, nn2) <= le(s(nn1), s(nn2)) -> 0 False <= le(s(nn1), z) -> 0 False <= le(z, z) -> 0 plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) -> 0 le(m, _uta) <= plus(s(n), m, _uta) -> 0 } Accumulated learning constraints: { le(s(z), s(s(z))) <= True le(z, 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 le(s(z), z) <= le(s(s(z)), s(z)) False <= le(s(z), s(z)) False <= le(z, z) False <= plus(s(z), s(z), s(z)) } Current best model: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(s(x_0_0), z) <= True le(z, s(x_1_0)) <= True } ] ; plus -> [ plus : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(s(x_0_0), z) <= True le(z, s(x_1_0)) <= True plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= le(x_0_0, 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: plus(n, z, n) <= True : No: () le(s(nn1), s(nn2)) <= le(nn1, nn2) : No: () le(nn1, nn2) <= le(s(nn1), s(nn2)) : No: () False <= le(s(nn1), z) : Yes: { } False <= le(z, z) : No: () plus(n, s(mm), s(_pta)) <= plus(n, mm, _pta) : Yes: { _pta -> s(z) ; mm -> z ; n -> s(s(z)) } le(m, _uta) <= plus(s(n), m, _uta) : Yes: { _uta -> s(z) ; m -> s(z) ; n -> s(_fmsba_0) } Total time: 0.124158 Learner time: 0.108145 Teacher time: 0.001047 Reasons for stopping: Yes: |_ name: None le -> [ le : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= True } ] ; plus -> [ plus : { le(s(x_0_0), s(x_1_0)) <= le(x_0_0, x_1_0) le(z, s(x_1_0)) <= True plus(s(x_0_0), s(x_1_0), s(x_2_0)) <= le(x_1_0, 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} _|