Solving ../../benchmarks/smtlib/false/mult_leq.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: { (leq, P: { leq(z, s(nn2)) <= True leq(z, z) <= True leq(s(nn1), s(nn2)) <= leq(nn1, nn2) leq(nn1, nn2) <= leq(s(nn1), s(nn2)) False <= leq(s(nn1), z) } ) (plus, F: { plus(n, z, n) <= True plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) } eq_nat(_ihb, _jhb) <= plus(_ghb, _hhb, _ihb) /\ plus(_ghb, _hhb, _jhb) ) (mult, F: { mult(n, z, z) <= True mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) } eq_nat(_ohb, _phb) <= mult(_mhb, _nhb, _ohb) /\ mult(_mhb, _nhb, _phb) ) } properties: { leq(n, _qhb) <= mult(n, m, _qhb) } over-approximation: {mult, plus} under-approximation: {leq} Clause system for inference is: { mult(n, z, z) <= True -> 0 plus(n, z, n) <= True -> 0 leq(s(nn1), s(nn2)) <= leq(nn1, nn2) -> 0 leq(nn1, nn2) <= leq(s(nn1), s(nn2)) -> 0 False <= leq(s(nn1), z) -> 0 leq(n, _qhb) <= mult(n, m, _qhb) -> 0 mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) -> 0 plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) -> 0 } Solving took 0.058887 seconds. No: Contradictory set of ground constraints: { leq(s(z), s(z)) <= True leq(s(z), z) <= True leq(z, z) <= True mult(s(z), s(z), s(z)) <= True mult(s(z), z, z) <= True mult(z, s(z), z) <= True mult(z, z, 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 leq(z, s(z)) <= leq(s(z), s(s(z))) False <= leq(s(z), z) } ------------------- STEPS: ------------------------------------------- Step 0, which took 0.007838 s (model generation: 0.007571, model checking: 0.000267): Clauses: { mult(n, z, z) <= True -> 0 plus(n, z, n) <= True -> 0 leq(s(nn1), s(nn2)) <= leq(nn1, nn2) -> 0 leq(nn1, nn2) <= leq(s(nn1), s(nn2)) -> 0 False <= leq(s(nn1), z) -> 0 leq(n, _qhb) <= mult(n, m, _qhb) -> 0 mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) -> 0 plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None leq -> [ leq : { } ] ; mult -> [ mult : { } ] ; plus -> [ plus : { } ] -- Equality automata are defined for: {nat} _| Answer of teacher: mult(n, z, z) <= True : Yes: { n -> z } plus(n, z, n) <= True : Yes: { n -> z } leq(s(nn1), s(nn2)) <= leq(nn1, nn2) : No: () leq(nn1, nn2) <= leq(s(nn1), s(nn2)) : No: () False <= leq(s(nn1), z) : No: () leq(n, _qhb) <= mult(n, m, _qhb) : No: () mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) : No: () plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) : No: () ------------------------------------------- Step 1, which took 0.006424 s (model generation: 0.006343, model checking: 0.000081): Clauses: { mult(n, z, z) <= True -> 0 plus(n, z, n) <= True -> 0 leq(s(nn1), s(nn2)) <= leq(nn1, nn2) -> 0 leq(nn1, nn2) <= leq(s(nn1), s(nn2)) -> 0 False <= leq(s(nn1), z) -> 0 leq(n, _qhb) <= mult(n, m, _qhb) -> 0 mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) -> 0 plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) -> 0 } Accumulated learning constraints: { mult(z, z, z) <= True plus(z, z, z) <= True } Current best model: |_ name: None leq -> [ leq : { } ] ; mult -> [ mult : { mult(z, z, z) <= True } ] ; plus -> [ plus : { plus(z, z, z) <= True } ] -- Equality automata are defined for: {nat} _| Answer of teacher: mult(n, z, z) <= True : Yes: { n -> s(_lcpqw_0) } plus(n, z, n) <= True : Yes: { n -> s(_mcpqw_0) } leq(s(nn1), s(nn2)) <= leq(nn1, nn2) : No: () leq(nn1, nn2) <= leq(s(nn1), s(nn2)) : No: () False <= leq(s(nn1), z) : No: () leq(n, _qhb) <= mult(n, m, _qhb) : Yes: { _qhb -> z ; m -> z ; n -> z } mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) : Yes: { _khb -> z ; _lhb -> z ; mm -> z ; n -> z } plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) : Yes: { _fhb -> z ; mm -> z ; n -> z } ------------------------------------------- Step 2, which took 0.007727 s (model generation: 0.007643, model checking: 0.000084): Clauses: { mult(n, z, z) <= True -> 0 plus(n, z, n) <= True -> 0 leq(s(nn1), s(nn2)) <= leq(nn1, nn2) -> 0 leq(nn1, nn2) <= leq(s(nn1), s(nn2)) -> 0 False <= leq(s(nn1), z) -> 0 leq(n, _qhb) <= mult(n, m, _qhb) -> 0 mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) -> 0 plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) -> 0 } Accumulated learning constraints: { leq(z, z) <= True mult(s(z), z, z) <= True mult(z, s(z), z) <= True mult(z, z, 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 leq -> [ leq : { leq(z, z) <= True } ] ; mult -> [ mult : { mult(s(x_0_0), z, z) <= True mult(z, s(x_1_0), z) <= True mult(z, z, 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: mult(n, z, z) <= True : No: () plus(n, z, n) <= True : No: () leq(s(nn1), s(nn2)) <= leq(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> z } leq(nn1, nn2) <= leq(s(nn1), s(nn2)) : No: () False <= leq(s(nn1), z) : No: () leq(n, _qhb) <= mult(n, m, _qhb) : Yes: { _qhb -> z ; m -> z ; n -> s(_bdpqw_0) } mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) : Yes: { _khb -> z ; _lhb -> s(_ddpqw_0) ; mm -> z ; n -> s(_fdpqw_0) } plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) : Yes: { _fhb -> s(_gdpqw_0) ; mm -> z ; n -> s(_idpqw_0) } ------------------------------------------- Step 3, which took 0.008962 s (model generation: 0.008891, model checking: 0.000071): Clauses: { mult(n, z, z) <= True -> 0 plus(n, z, n) <= True -> 0 leq(s(nn1), s(nn2)) <= leq(nn1, nn2) -> 0 leq(nn1, nn2) <= leq(s(nn1), s(nn2)) -> 0 False <= leq(s(nn1), z) -> 0 leq(n, _qhb) <= mult(n, m, _qhb) -> 0 mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) -> 0 plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) -> 0 } Accumulated learning constraints: { leq(s(z), s(z)) <= True leq(s(z), z) <= True leq(z, z) <= True mult(s(z), s(z), s(z)) <= True mult(s(z), z, z) <= True mult(z, s(z), z) <= True mult(z, z, 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 leq -> [ leq : { leq(s(x_0_0), s(x_1_0)) <= True leq(s(x_0_0), z) <= True leq(z, z) <= True } ] ; mult -> [ mult : { mult(s(x_0_0), s(x_1_0), s(x_2_0)) <= True mult(s(x_0_0), z, z) <= True mult(z, s(x_1_0), z) <= True mult(z, 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: mult(n, z, z) <= True : No: () plus(n, z, n) <= True : No: () leq(s(nn1), s(nn2)) <= leq(nn1, nn2) : No: () leq(nn1, nn2) <= leq(s(nn1), s(nn2)) : Yes: { nn1 -> z ; nn2 -> s(_kdpqw_0) } False <= leq(s(nn1), z) : Yes: { } leq(n, _qhb) <= mult(n, m, _qhb) : No: () mult(n, s(mm), _lhb) <= mult(n, mm, _khb) /\ plus(n, _khb, _lhb) : No: () plus(n, s(mm), s(_fhb)) <= plus(n, mm, _fhb) : No: () Total time: 0.058887 Learner time: 0.030448 Teacher time: 0.000503 Reasons for stopping: No: Contradictory set of ground constraints: { leq(s(z), s(z)) <= True leq(s(z), z) <= True leq(z, z) <= True mult(s(z), s(z), s(z)) <= True mult(s(z), z, z) <= True mult(z, s(z), z) <= True mult(z, z, 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 leq(z, s(z)) <= leq(s(z), s(s(z))) False <= leq(s(z), z) }