Solving ../../benchmarks/smtlib/true/isaplanner_prop15.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} ; eltlist -> {cons, nil} ; nat -> {s, z} } definition: { (leq, P: { leq(a, y) <= True leq(b, b) <= True False <= leq(b, a) } ) (insert, F: { insert(x, nil, cons(x, nil)) <= True insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) } eq_eltlist(_oi, _pi) <= insert(_mi, _ni, _oi) /\ insert(_mi, _ni, _pi) ) (length, F: { length(nil, z) <= True length(cons(x, ll), s(_qi)) <= length(ll, _qi) } eq_nat(_si, _ti) <= length(_ri, _si) /\ length(_ri, _ti) ) (leqnat, P: { leqnat(z, s(nn2)) <= True leqnat(z, z) <= True leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) False <= leqnat(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) } ) } properties: { le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) } over-approximation: {insert, length, leqnat} under-approximation: {le_nat, leqnat} Clause system for inference is: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Solving took 0.184483 seconds. Yes: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= _r_1(x_0_1, x_1_1) _r_1(nil, cons(x_1_0, x_1_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006158 s (model generation: 0.006056, model checking: 0.000102): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None insert -> [ insert : { } ] ; le_nat -> [ le_nat : { } ] ; length -> [ length : { } ] ; leq -> [ leq : { } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> b } length(nil, z) <= True : Yes: { } leq(a, y) <= True : Yes: { y -> b } leq(b, b) <= True : Yes: { } le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : No: () insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 1, which took 0.006982 s (model generation: 0.006810, model checking: 0.000172): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(b, nil, cons(b, nil)) <= True length(nil, z) <= True leq(a, b) <= True leq(b, b) <= True } Current best model: |_ name: None insert -> [ insert : { insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { } ] ; length -> [ length : { length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : Yes: { x -> a } length(nil, z) <= True : No: () leq(a, y) <= True : Yes: { y -> a } leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : No: () insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : Yes: { _li -> cons(_osre_0, _osre_1) ; x -> b ; y -> a ; z -> nil } 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : Yes: { _qi -> z ; ll -> nil } insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> b ; y -> b } False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 2, which took 0.010012 s (model generation: 0.009854, model checking: 0.000158): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True insert(b, cons(a, nil), cons(a, cons(a, nil))) \/ leq(b, a) <= insert(b, nil, cons(a, nil)) } Current best model: |_ name: None insert -> [ insert : { insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, a) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> z ; _vi -> cons(_zsre_0, _zsre_1) ; _wi -> s(_atre_0) ; l -> nil ; x -> a } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> a ; y -> b } False <= leq(b, a) : Yes: { } leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 3, which took 0.011281 s (model generation: 0.011146, model checking: 0.000135): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { le_nat(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> s(_wtre_0) ; _vi -> cons(_xtre_0, _xtre_1) ; _wi -> s(_ytre_0) ; l -> cons(_ztre_0, _ztre_1) ; x -> b } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : Yes: { nn1 -> z ; nn2 -> s(_cure_0) } le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : No: () False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : No: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 4, which took 0.011861 s (model generation: 0.011746, model checking: 0.000115): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True le_nat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= True le_nat(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : No: () insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 5, which took 0.011756 s (model generation: 0.011649, model checking: 0.000107): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True le_nat(s(z), s(z)) <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) le_nat(z, z) <= le_nat(s(z), s(z)) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= True le_nat(z, s(x_1_0)) <= True le_nat(z, z) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : No: () insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : No: () le_nat(s(nn1), s(nn2)) <= le_nat(nn1, nn2) : No: () le_nat(nn1, nn2) <= le_nat(s(nn1), s(nn2)) : Yes: { nn1 -> s(_hure_0) ; nn2 -> z } False <= le_nat(s(nn1), z) : No: () False <= le_nat(z, z) : Yes: { } length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 6, which took 0.018070 s (model generation: 0.017720, model checking: 0.000350): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True False <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) le_nat(s(z), z) <= le_nat(s(s(z)), s(z)) False <= le_nat(s(z), s(z)) False <= le_nat(z, z) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; le_nat -> [ le_nat : { le_nat(s(x_0_0), s(x_1_0)) <= le_nat(x_0_0, x_1_0) le_nat(s(x_0_0), z) <= True le_nat(z, s(x_1_0)) <= True } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> s(z) ; _vi -> cons(_pure_0, cons(_nvre_0, _nvre_1)) ; _wi -> s(z) ; l -> cons(_rure_0, _rure_1) ; x -> b } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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) : Yes: { } False <= le_nat(z, z) : No: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 7, which took 0.018402 s (model generation: 0.018149, model checking: 0.000253): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= le_nat(s(s(z)), s(z)) False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(b) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_0) insert(b, nil, cons(x_2_0, x_2_1)) <= _r_1(x_2_0) } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= True length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> s(z) ; _vi -> cons(b, _zvre_1) ; _wi -> s(z) ; l -> cons(_bwre_0, _bwre_1) ; x -> b } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : Yes: { _li -> cons(b, _hwre_1) ; x -> b ; y -> a ; z -> nil } 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 8, which took 0.020327 s (model generation: 0.019932, model checking: 0.000395): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(b, nil)) /\ length(cons(b, nil), s(z)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= le_nat(s(s(z)), s(z)) False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> s(z) ; _vi -> cons(_fxre_0, nil) ; _wi -> s(z) ; l -> cons(_hxre_0, nil) ; x -> a } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 9, which took 0.020767 s (model generation: 0.020439, model checking: 0.000328): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True False <= insert(a, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(b, nil)) /\ length(cons(b, nil), s(z)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= le_nat(s(s(z)), s(z)) False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : Yes: { _ui -> s(s(z)) ; _vi -> cons(_zyre_0, cons(_kase_0, nil)) ; _wi -> s(s(z)) ; l -> cons(_bzre_0, cons(_nase_0, nil)) ; x -> a } insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : No: () False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () ------------------------------------------- Step 10, which took 0.022322 s (model generation: 0.022056, model checking: 0.000266): Clauses: { insert(x, nil, cons(x, nil)) <= True -> 0 length(nil, z) <= True -> 0 leq(a, y) <= True -> 0 leq(b, b) <= True -> 0 le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) -> 0 insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) -> 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 length(cons(x, ll), s(_qi)) <= length(ll, _qi) -> 0 insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) -> 0 False <= leq(b, a) -> 0 leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) -> 0 leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) -> 0 } Accumulated learning constraints: { insert(a, cons(b, nil), cons(a, cons(b, nil))) <= True insert(a, nil, cons(a, nil)) <= True insert(b, cons(a, nil), cons(a, cons(b, nil))) <= True insert(b, cons(b, nil), cons(b, cons(b, nil))) <= True insert(b, nil, cons(b, nil)) <= True le_nat(s(z), s(s(z))) <= True le_nat(z, s(z)) <= True length(cons(a, nil), s(z)) <= True length(nil, z) <= True leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True le_nat(s(s(z)), s(s(z))) <= insert(a, cons(a, cons(a, nil)), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(s(z))) False <= insert(a, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(a, cons(a, nil))) /\ length(cons(a, cons(a, nil)), s(z)) False <= insert(b, cons(a, nil), cons(a, nil)) False <= insert(b, cons(a, nil), cons(b, nil)) /\ length(cons(b, nil), s(z)) insert(b, cons(a, nil), cons(a, cons(a, nil))) <= insert(b, nil, cons(a, nil)) False <= le_nat(s(s(z)), s(z)) False <= le_nat(s(z), s(z)) False <= le_nat(s(z), z) False <= le_nat(z, z) False <= leq(b, a) } Current best model: |_ name: None insert -> [ insert : { _r_1(nil, cons(x_1_0, x_1_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _| Answer of teacher: insert(x, nil, cons(x, nil)) <= True : No: () length(nil, z) <= True : No: () leq(a, y) <= True : No: () leq(b, b) <= True : No: () le_nat(_ui, _wi) <= insert(x, l, _vi) /\ length(_vi, _wi) /\ length(l, _ui) : No: () insert(x, cons(y, z), cons(y, _li)) \/ leq(x, y) <= insert(x, z, _li) : Yes: { _li -> cons(_kbse_0, cons(_ocse_0, _ocse_1)) ; x -> b ; y -> a ; z -> cons(_nbse_0, nil) } 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: () length(cons(x, ll), s(_qi)) <= length(ll, _qi) : No: () insert(x, cons(y, z), cons(x, cons(y, z))) <= leq(x, y) : Yes: { x -> a ; y -> a ; z -> cons(_mcse_0, _mcse_1) } False <= leq(b, a) : No: () leqnat(s(nn1), s(nn2)) <= leqnat(nn1, nn2) : No: () leqnat(nn1, nn2) <= leqnat(s(nn1), s(nn2)) : No: () Total time: 0.184483 Learner time: 0.155557 Teacher time: 0.002381 Reasons for stopping: Yes: |_ name: None insert -> [ insert : { _r_1(cons(x_0_0, x_0_1), cons(x_1_0, x_1_1)) <= _r_1(x_0_1, x_1_1) _r_1(nil, cons(x_1_0, x_1_1)) <= True insert(a, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(a, nil, cons(x_2_0, x_2_1)) <= True insert(b, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= _r_1(x_1_1, x_2_1) insert(b, nil, cons(x_2_0, x_2_1)) <= True } ] ; 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 } ] ; length -> [ length : { length(cons(x_0_0, x_0_1), s(x_1_0)) <= length(x_0_1, x_1_0) length(nil, z) <= True } ] ; leq -> [ leq : { leq(a, a) <= True leq(a, b) <= True leq(b, b) <= True } ] ; leqnat -> [ leqnat : { } ] -- Equality automata are defined for: {elt, eltlist, nat} _|