Solving ../../benchmarks/smtlib/false/tree_taller_max.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: { elt -> {a, b} ; etree -> {leaf, node} ; nat -> {s, z} } definition: { (leq_nat, P: { leq_nat(z, n2) <= True leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) False <= leq_nat(s(nn1), z) } ) (le_nat, P: { le_nat(z, s(nn2)) <= True le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) False <= le_nat(s(nn1), z) False <= le_nat(z, z) } ) (subtree, P: { subtree(leaf, t) <= True subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) False <= subtree(node(ea, ta1, ta2), leaf) eq_elt(ea, eb) <= subtree(node(ea, ta1, ta2), node(eb, tb1, tb2)) subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) } ) (max, F: { le_nat(n, m) \/ max(n, m, n) <= True max(n, m, m) <= le_nat(n, m) } eq_nat(_wib, _xib) <= max(_uib, _vib, _wib) /\ max(_uib, _vib, _xib) ) (min, F: { le_nat(n, m) \/ min(n, m, m) <= True min(n, m, n) <= le_nat(n, m) } eq_nat(_ajb, _bjb) <= min(_yib, _zib, _ajb) /\ min(_yib, _zib, _bjb) ) (height, F: { height(leaf, z) <= True height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) } eq_nat(_hjb, _ijb) <= height(_gjb, _hjb) /\ height(_gjb, _ijb) ) (shallower, P: { shallower(leaf, n) <= True shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) False <= shallower(node(e, t1, t2), z) } ) (taller, P: { taller(leaf, z) <= True taller(node(e, t1, t2), z) <= True taller(node(e, t1, t2), s(m)) <= taller(t1, m) taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) False <= taller(leaf, s(m)) taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) } ) } properties: { taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) } over-approximation: {height, leq_nat, max, min, shallower, subtree} under-approximation: {height, leq_nat, min, shallower, subtree} Clause system for inference is: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Solving took 0.167173 seconds. No: Contradictory set of ground constraints: { False <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True max(s(z), s(z), s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, leaf, node(a, leaf, leaf)), s(s(z))) <= True taller(node(a, leaf, node(a, node(a, leaf, leaf), leaf)), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= taller(leaf, s(z)) False <= taller(node(a, leaf, leaf), s(s(z))) taller(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= taller(node(a, leaf, node(a, leaf, leaf)), s(z)) } ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006443 s (model generation: 0.006221, model checking: 0.000222): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> z ; n -> z } le_nat(z, s(nn2)) <= True : Yes: { } taller(leaf, z) <= True : Yes: { } taller(node(e, t1, t2), z) <= True : Yes: { } height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : No: () shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : No: () taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () ------------------------------------------- Step 1, which took 0.007194 s (model generation: 0.006971, model checking: 0.000223): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(z, s(z)) <= True le_nat(z, z) \/ max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(z, s(x_1_0)) <= True le_nat(z, z) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> z ; n -> s(_hgnuw_0) } le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : Yes: { m -> s(_ignuw_0) ; n -> z } le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> z } le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : Yes: { } leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : Yes: { _jjb -> z ; n1 -> z ; n2 -> z ; t1 -> node(_ghnuw_0, _ghnuw_1, _ghnuw_2) ; t2 -> node(_hhnuw_0, _hhnuw_1, _hhnuw_2) } shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : Yes: { m -> z ; t1 -> node(_lhnuw_0, _lhnuw_1, _lhnuw_2) } taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () ------------------------------------------- Step 2, which took 0.009411 s (model generation: 0.009159, model checking: 0.000252): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(s(z), z) \/ max(s(z), z, s(z)) <= True le_nat(z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(z, z) } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), z) <= True le_nat(z, s(x_1_0)) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(s(x_0_0), z, s(x_2_0)) <= True max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= True taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> s(_mhnuw_0) ; n -> s(_nhnuw_0) } le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : Yes: { m -> z ; n -> s(_phnuw_0) } le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_thnuw_0) } le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : Yes: { } False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : No: () shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : No: () taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : Yes: { m -> s(_uhnuw_0) ; t1 -> leaf ; t2 -> leaf } ------------------------------------------- Step 3, which took 0.011023 s (model generation: 0.010858, model checking: 0.000165): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(s(z), s(s(z))) <= True le_nat(s(z), s(z)) \/ max(s(z), s(z), s(z)) <= True le_nat(z, s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), z) False <= le_nat(z, z) taller(leaf, s(z)) <= taller(node(a, leaf, leaf), s(s(z))) } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= True le_nat(z, s(x_1_0)) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(s(x_0_0), s(x_1_0), s(x_2_0)) <= True max(s(x_0_0), z, s(x_2_0)) <= True max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, s(x_1_0)) <= True taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= True taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : No: () le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : Yes: { nn1 -> z ; nn2 -> z } False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : No: () shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : No: () taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : Yes: { } taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () ------------------------------------------- Step 4, which took 0.010830 s (model generation: 0.010228, model checking: 0.000602): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True max(s(z), s(z), s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= taller(leaf, s(z)) False <= taller(node(a, leaf, leaf), s(s(z))) } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= le_nat(x_0_0, x_1_0) le_nat(z, s(x_1_0)) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(s(x_0_0), s(x_1_0), s(x_2_0)) <= True max(s(x_0_0), z, s(x_2_0)) <= True max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= taller(x_0_2, x_1_0) taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : No: () le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : Yes: { _jjb -> z ; n1 -> z ; n2 -> z ; t1 -> node(_xjnuw_0, _xjnuw_1, _xjnuw_2) ; t2 -> leaf } shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : Yes: { m -> s(z) ; t1 -> node(_hknuw_0, _hknuw_1, node(_qlnuw_0, _qlnuw_1, _qlnuw_2)) ; t2 -> leaf } taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () ------------------------------------------- Step 5, which took 0.012121 s (model generation: 0.011517, model checking: 0.000604): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True max(s(z), s(z), s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, node(a, leaf, leaf), leaf), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= taller(leaf, s(z)) False <= taller(node(a, leaf, leaf), s(s(z))) taller(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= taller(node(a, leaf, node(a, leaf, leaf)), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= le_nat(x_0_0, x_1_0) le_nat(z, s(x_1_0)) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(s(x_0_0), s(x_1_0), s(x_2_0)) <= True max(s(x_0_0), z, s(x_2_0)) <= True max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= taller(x_0_1, x_1_0) taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : No: () le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : Yes: { _jjb -> z ; n1 -> z ; n2 -> z ; t1 -> leaf ; t2 -> node(_oonuw_0, _oonuw_1, _oonuw_2) } shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : No: () taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : Yes: { m -> s(z) ; t1 -> leaf ; t2 -> node(_hpnuw_0, node(_cqnuw_0, _cqnuw_1, _cqnuw_2), _hpnuw_2) } False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () ------------------------------------------- Step 6, which took 0.098106 s (model generation: 0.012445, model checking: 0.085661): Clauses: { le_nat(n, m) \/ max(n, m, n) <= True -> 0 le_nat(z, s(nn2)) <= True -> 0 taller(leaf, z) <= True -> 0 taller(node(e, t1, t2), z) <= True -> 0 height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) -> 0 height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) -> 0 max(n, m, m) <= le_nat(n, m) -> 0 le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) -> 0 le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) -> 0 False <= le_nat(s(nn1), z) -> 0 False <= le_nat(z, z) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) -> 0 shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) -> 0 shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) -> 0 shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) -> 0 subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) -> 0 subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) -> 0 taller(node(e, t1, t2), s(m)) <= taller(t1, m) -> 0 taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) -> 0 False <= taller(leaf, s(m)) -> 0 taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) -> 0 } Accumulated learning constraints: { le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True max(s(z), s(z), s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, leaf, node(a, leaf, leaf)), s(s(z))) <= True taller(node(a, leaf, node(a, node(a, leaf, leaf), leaf)), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= taller(leaf, s(z)) False <= taller(node(a, leaf, leaf), s(s(z))) taller(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= taller(node(a, leaf, node(a, leaf, leaf)), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= le_nat(x_0_0, x_1_0) le_nat(z, s(x_1_0)) <= True } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { max(s(x_0_0), s(x_1_0), s(x_2_0)) <= True max(s(x_0_0), z, s(x_2_0)) <= True max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { } ] ; subtree -> [ subtree : { } ] ; taller -> [ taller : { taller(leaf, z) <= True taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= taller(x_0_1, x_1_0) taller(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= taller(x_0_2, x_1_0) taller(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: le_nat(n, m) \/ max(n, m, n) <= True : No: () le_nat(z, s(nn2)) <= True : No: () taller(leaf, z) <= True : No: () taller(node(e, t1, t2), z) <= True : No: () height(node(e, t1, t2), s(_fjb)) \/ le_nat(_cjb, _djb) <= height(t1, _cjb) /\ height(t1, _fjb) /\ height(t2, _djb) : No: () height(node(e, t1, t2), s(_ejb)) <= height(t1, _cjb) /\ height(t2, _djb) /\ height(t2, _ejb) /\ le_nat(_cjb, _djb) : No: () max(n, m, m) <= le_nat(n, m) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () taller(node(e, t1, t2), s(s(_jjb))) <= max(n1, n2, _jjb) /\ taller(t1, n1) /\ taller(t2, n2) : Yes: { _jjb -> z ; n1 -> z ; n2 -> z ; t1 -> leaf ; t2 -> leaf } shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : No: () shallower(t2, m) <= shallower(t1, m) /\ shallower(node(e, t1, t2), s(m)) : No: () shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : No: () subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) <= subtree(ta1, tb1) /\ subtree(ta2, tb2) : No: () subtree(ta2, tb2) <= subtree(ta1, tb1) /\ subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () subtree(ta1, tb1) <= subtree(node(eb, ta1, ta2), node(eb, tb1, tb2)) : No: () taller(node(e, t1, t2), s(m)) <= taller(t1, m) : No: () taller(t1, m) \/ taller(node(e, t1, t2), s(m)) <= taller(t2, m) : No: () False <= taller(leaf, s(m)) : No: () taller(t1, m) \/ taller(t2, m) <= taller(node(e, t1, t2), s(m)) : No: () Total time: 0.167173 Learner time: 0.067399 Teacher time: 0.087729 Reasons for stopping: No: Contradictory set of ground constraints: { False <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True max(s(z), s(z), s(z)) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True taller(leaf, z) <= True taller(node(a, leaf, leaf), z) <= True taller(node(a, leaf, node(a, leaf, leaf)), s(s(z))) <= True taller(node(a, leaf, node(a, node(a, leaf, leaf), leaf)), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(s(z))) <= True taller(node(a, node(a, leaf, leaf), leaf), s(z)) <= True taller(node(a, node(a, leaf, leaf), node(a, leaf, leaf)), s(s(z))) <= True False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= taller(leaf, s(z)) False <= taller(node(a, leaf, leaf), s(s(z))) taller(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= taller(node(a, leaf, node(a, leaf, leaf)), s(z)) }