Solving ../../benchmarks/smtlib/true/tree_shallow_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: { 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) } ) (max, F: { leq_nat(n, m) \/ max(n, m, n) <= True max(n, m, m) <= leq_nat(n, m) } eq_nat(_u, _v) <= max(_s, _t, _u) /\ max(_s, _t, _v) ) (height, F: { height(leaf, z) <= True height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) } eq_nat(_ba, _ca) <= height(_aa, _ba) /\ height(_aa, _ca) ) (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) } ) (height_rel, P: { height_rel(leaf, z) <= True shallower(t2, nn) <= height_rel(t1, nn) /\ height_rel(node(e, t1, t2), s(nn)) height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) False <= height_rel(leaf, s(nn)) height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) False <= height_rel(node(e, t1, t2), z) } ) } properties: { shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) } over-approximation: {height, height_rel, max} under-approximation: {height, height_rel} Clause system for inference is: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Solving took 0.590314 seconds. Yes: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True max(s(x_0_0), s(x_1_0), s(x_2_0)) <= leq_nat(x_0_0, x_2_0) /\ leq_nat(x_1_0, x_2_0) max(s(x_0_0), z, s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(z, s(x_1_0), s(x_2_0)) <= leq_nat(x_1_0, x_2_0) max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006729 s (model generation: 0.006117, model checking: 0.000612): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { } ] ; max -> [ max : { } ] ; shallower -> [ shallower : { } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> z ; n -> z } leq_nat(z, n2) <= True : Yes: { n2 -> z } shallower(leaf, n) <= True : Yes: { n -> z } height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : 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: () False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 1, which took 0.006488 s (model generation: 0.006345, model checking: 0.000143): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(z, z) <= True shallower(leaf, z) <= True } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(z, z) <= True } ] ; max -> [ max : { } ] ; shallower -> [ shallower : { shallower(leaf, z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> z ; n -> s(_vekmw_0) } leq_nat(z, n2) <= True : Yes: { n2 -> s(_yekmw_0) } shallower(leaf, n) <= True : Yes: { n -> s(_zekmw_0) } height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : Yes: { m -> z ; n -> z } leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> z } leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : No: () shallower(node(e, t1, t2), s(m)) <= shallower(t1, m) /\ shallower(t2, m) : Yes: { m -> z ; t1 -> leaf ; t2 -> leaf } 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: () False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 2, which took 0.009165 s (model generation: 0.008321, model checking: 0.000844): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(s(z), z) \/ max(s(z), z, s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(z, z, z) <= True shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= True leq_nat(s(x_0_0), z) <= True leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { max(s(x_0_0), z, s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : No: () leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : Yes: { m -> z ; n -> s(_kfkmw_0) } leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : Yes: { } shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : 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)) : Yes: { m -> z ; t1 -> leaf ; t2 -> node(_pfkmw_0, _pfkmw_1, _pfkmw_2) } shallower(t1, m) <= shallower(node(e, t1, t2), s(m)) : Yes: { m -> z ; t1 -> node(_rfkmw_0, _rfkmw_1, _rfkmw_2) } False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 3, which took 0.008799 s (model generation: 0.008604, model checking: 0.000195): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(s(z), z, s(z)) <= True max(z, z, z) <= True shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True False <= leq_nat(s(z), z) shallower(node(a, leaf, leaf), z) <= shallower(node(a, leaf, node(a, leaf, leaf)), s(z)) shallower(node(a, leaf, leaf), z) <= shallower(node(a, node(a, leaf, leaf), leaf), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= True leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { max(s(x_0_0), z, s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= True shallower(node(x_0_0, x_0_1, x_0_2), z) <= True } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : No: () leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : Yes: { m -> s(_ufkmw_0) ; n -> z } leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : Yes: { nn1 -> s(_wfkmw_0) ; nn2 -> z } False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : 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: () False <= shallower(node(e, t1, t2), z) : Yes: { } ------------------------------------------- Step 4, which took 0.084641 s (model generation: 0.010393, model checking: 0.074248): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(s(z), z, s(z)) <= True max(z, s(z), s(z)) <= True max(z, z, z) <= True shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True False <= leq_nat(s(s(z)), s(z)) False <= leq_nat(s(z), z) False <= shallower(node(a, leaf, leaf), z) False <= shallower(node(a, leaf, node(a, leaf, leaf)), s(z)) False <= shallower(node(a, node(a, leaf, leaf), leaf), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; 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 : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : Yes: { m -> s(z) ; n -> s(s(_lkkmw_0)) } leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : Yes: { m -> s(z) ; n -> s(z) } leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : Yes: { _da -> s(z) ; m -> z ; n -> s(s(z)) ; t1 -> node(_zgkmw_0, leaf, node(_tmkmw_0, leaf, 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: () False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 5, which took 0.151287 s (model generation: 0.011880, model checking: 0.139407): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(s(s(z)), s(z), s(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 shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True False <= leq_nat(s(s(z)), s(z)) False <= leq_nat(s(z), z) shallower(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= max(s(s(z)), z, s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) False <= shallower(node(a, leaf, leaf), z) False <= shallower(node(a, leaf, node(a, leaf, leaf)), s(z)) False <= shallower(node(a, node(a, leaf, leaf), leaf), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True max(s(x_0_0), s(x_1_0), s(x_2_0)) <= True max(s(x_0_0), z, s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : No: () leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : Yes: { _da -> s(z) ; m -> s(_zdnmw_0) ; n -> s(s(z)) ; t1 -> node(_benmw_0, leaf, node(_qknmw_0, leaf, 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: () False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 6, which took 0.112132 s (model generation: 0.012627, model checking: 0.099505): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(s(s(z)), s(z), s(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 shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True False <= leq_nat(s(s(z)), s(z)) False <= leq_nat(s(z), z) shallower(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= max(s(s(z)), s(z), s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) shallower(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= max(s(s(z)), z, s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) False <= shallower(node(a, leaf, leaf), z) False <= shallower(node(a, leaf, node(a, leaf, leaf)), s(z)) False <= shallower(node(a, node(a, leaf, leaf), leaf), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True max(s(x_0_0), s(x_1_0), s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(s(x_0_0), z, s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(z, s(x_1_0), s(x_2_0)) <= True max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : No: () leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : Yes: { _da -> s(z) ; m -> s(s(z)) ; n -> z ; t1 -> leaf ; t2 -> node(_ojqmw_0, leaf, node(_loqmw_0, leaf, 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: () False <= shallower(node(e, t1, t2), z) : No: () ------------------------------------------- Step 7, which took 0.093085 s (model generation: 0.012805, model checking: 0.080280): Clauses: { leq_nat(n, m) \/ max(n, m, n) <= True -> 0 leq_nat(z, n2) <= True -> 0 shallower(leaf, n) <= True -> 0 height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) -> 0 height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) -> 0 height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) -> 0 height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) -> 0 height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) -> 0 height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) -> 0 max(n, m, m) <= leq_nat(n, m) -> 0 leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) -> 0 leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) -> 0 False <= leq_nat(s(nn1), z) -> 0 shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) -> 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 False <= shallower(node(e, t1, t2), z) -> 0 } Accumulated learning constraints: { leq_nat(s(z), s(z)) <= True leq_nat(z, s(z)) <= True leq_nat(z, z) <= True max(s(s(z)), s(z), s(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 shallower(leaf, s(z)) <= True shallower(leaf, z) <= True shallower(node(a, leaf, leaf), s(z)) <= True False <= leq_nat(s(s(z)), s(z)) False <= leq_nat(s(z), z) shallower(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= max(s(s(z)), s(z), s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) shallower(node(a, node(a, leaf, node(a, leaf, leaf)), leaf), s(s(z))) <= max(s(s(z)), z, s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) shallower(node(a, leaf, node(a, leaf, node(a, leaf, leaf))), s(s(z))) <= max(z, s(s(z)), s(z)) /\ shallower(node(a, leaf, node(a, leaf, leaf)), s(s(z))) False <= shallower(node(a, leaf, leaf), z) False <= shallower(node(a, leaf, node(a, leaf, leaf)), s(z)) False <= shallower(node(a, node(a, leaf, leaf), leaf), s(z)) } Current best model: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True max(s(x_0_0), s(x_1_0), s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(s(x_0_0), z, s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(z, s(x_1_0), s(x_2_0)) <= leq_nat(x_1_0, x_2_0) max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _| Answer of teacher: leq_nat(n, m) \/ max(n, m, n) <= True : No: () leq_nat(z, n2) <= True : No: () shallower(leaf, n) <= True : No: () height(node(e, t1, t2), s(_z)) \/ leq_nat(_w, _x) <= height(t1, _w) /\ height(t1, _z) /\ height(t2, _x) : No: () height(node(e, t1, t2), s(_y)) <= height(t1, _w) /\ height(t2, _x) /\ height(t2, _y) /\ leq_nat(_w, _x) : No: () height_rel(node(e, t1, t2), s(nn)) <= height_rel(t1, nn) /\ shallower(t2, nn) : No: () height_rel(t1, nn) \/ shallower(t1, nn) <= height_rel(t2, nn) /\ height_rel(node(e, t1, t2), s(nn)) : No: () height_rel(t1, nn) \/ height_rel(node(e, t1, t2), s(nn)) <= height_rel(t2, nn) /\ shallower(t1, nn) : No: () height_rel(t1, nn) \/ height_rel(t2, nn) <= height_rel(node(e, t1, t2), s(nn)) : No: () max(n, m, m) <= leq_nat(n, m) : No: () leq_nat(s(nn1), s(nn2)) <= leq_nat(nn1, nn2) : No: () leq_nat(nn1, nn2) <= leq_nat(s(nn1), s(nn2)) : No: () False <= leq_nat(s(nn1), z) : No: () shallower(node(e, t1, t2), s(_da)) <= max(n, m, _da) /\ shallower(t1, n) /\ shallower(t2, m) : Yes: { _da -> s(z) ; m -> s(s(z)) ; n -> s(z) ; t1 -> leaf ; t2 -> node(_lvsmw_0, leaf, node(_yitmw_0, leaf, 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: () False <= shallower(node(e, t1, t2), z) : No: () Total time: 0.590314 Learner time: 0.077092 Teacher time: 0.395234 Reasons for stopping: Yes: |_ name: None height -> [ height : { } ] ; height_rel -> [ height_rel : { } ] ; leq_nat -> [ leq_nat : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True } ] ; max -> [ max : { leq_nat(s(x_0_0), s(x_1_0)) <= leq_nat(x_0_0, x_1_0) leq_nat(z, s(x_1_0)) <= True leq_nat(z, z) <= True max(s(x_0_0), s(x_1_0), s(x_2_0)) <= leq_nat(x_0_0, x_2_0) /\ leq_nat(x_1_0, x_2_0) max(s(x_0_0), z, s(x_2_0)) <= leq_nat(x_0_0, x_2_0) max(z, s(x_1_0), s(x_2_0)) <= leq_nat(x_1_0, x_2_0) max(z, z, z) <= True } ] ; shallower -> [ shallower : { shallower(leaf, s(x_1_0)) <= True shallower(leaf, z) <= True shallower(node(x_0_0, x_0_1, x_0_2), s(x_1_0)) <= shallower(x_0_1, x_1_0) /\ shallower(x_0_2, x_1_0) } ] -- Equality automata are defined for: {elt, etree, nat} _|