Solving ../../benchmarks/smtlib/false/reverse_not_null.smt2... Inference procedure has parameters: Ice fuel: 200 Timeout: Some(60.) (sec) Teacher_type: Checks all clauses every time Approximation method: remove every clause that can be safely removed Learning problem is: env: { nat -> {s, z} ; natlist -> {cons, nil} } definition: { (append, F: { append(nil, l2, l2) <= True append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) } eq_natlist(_fab, _gab) <= append(_dab, _eab, _fab) /\ append(_dab, _eab, _gab) ) (reverse, F: { reverse(nil, nil) <= True reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) } eq_natlist(_kab, _lab) <= reverse(_jab, _kab) /\ reverse(_jab, _lab) ) (not_null, P: { not_null(cons(x, ll)) <= True False <= not_null(nil) } ) } properties: { not_null(_mab) <= reverse(l1, _mab) } over-approximation: {append, reverse} under-approximation: {not_null} Clause system for inference is: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) -> 0 append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) -> 0 False <= not_null(nil) -> 0 not_null(_mab) <= reverse(l1, _mab) -> 0 } Solving took 0.100415 seconds. No: Contradictory set of ground constraints: { append(cons(z, nil), cons(z, nil), cons(z, cons(z, nil))) <= True append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True not_null(nil) <= True reverse(cons(z, nil), cons(z, nil)) <= True reverse(nil, nil) <= True False <= not_null(nil) } ------------------- STEPS: ------------------------------------------- Step 0, which took 0.006713 s (model generation: 0.006651, model checking: 0.000062): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) -> 0 append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) -> 0 False <= not_null(nil) -> 0 not_null(_mab) <= reverse(l1, _mab) -> 0 } Accumulated learning constraints: { } Current best model: |_ name: None append -> [ append : { } ] ; not_null -> [ not_null : { } ] ; reverse -> [ reverse : { } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> nil } reverse(nil, nil) <= True : Yes: { } reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) : No: () append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) : No: () False <= not_null(nil) : No: () not_null(_mab) <= reverse(l1, _mab) : No: () ------------------------------------------- Step 1, which took 0.006332 s (model generation: 0.006281, model checking: 0.000051): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) -> 0 append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) -> 0 False <= not_null(nil) -> 0 not_null(_mab) <= reverse(l1, _mab) -> 0 } Accumulated learning constraints: { append(nil, nil, nil) <= True reverse(nil, nil) <= True } Current best model: |_ name: None append -> [ append : { append(nil, nil, nil) <= True } ] ; not_null -> [ not_null : { } ] ; reverse -> [ reverse : { reverse(nil, nil) <= True } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : Yes: { l2 -> cons(_lhrqw_0, _lhrqw_1) } reverse(nil, nil) <= True : No: () reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) : No: () append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) : Yes: { _cab -> nil ; l2 -> nil ; t1 -> nil } False <= not_null(nil) : No: () not_null(_mab) <= reverse(l1, _mab) : Yes: { _mab -> nil ; l1 -> nil } ------------------------------------------- Step 2, which took 0.007950 s (model generation: 0.007893, model checking: 0.000057): Clauses: { append(nil, l2, l2) <= True -> 0 reverse(nil, nil) <= True -> 0 reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) -> 0 append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) -> 0 False <= not_null(nil) -> 0 not_null(_mab) <= reverse(l1, _mab) -> 0 } Accumulated learning constraints: { append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True not_null(nil) <= True reverse(nil, nil) <= True } Current best model: |_ name: None append -> [ append : { append(cons(x_0_0, x_0_1), nil, cons(x_2_0, x_2_1)) <= True append(nil, cons(x_1_0, x_1_1), cons(x_2_0, x_2_1)) <= True append(nil, nil, nil) <= True } ] ; not_null -> [ not_null : { not_null(nil) <= True } ] ; reverse -> [ reverse : { reverse(nil, nil) <= True } ] -- Equality automata are defined for: {nat, natlist} _| Answer of teacher: append(nil, l2, l2) <= True : No: () reverse(nil, nil) <= True : No: () reverse(cons(h1, t1), _iab) <= append(_hab, cons(h1, nil), _iab) /\ reverse(t1, _hab) : Yes: { _hab -> nil ; _iab -> cons(_shrqw_0, _shrqw_1) ; t1 -> nil } append(cons(h1, t1), l2, cons(h1, _cab)) <= append(t1, l2, _cab) : Yes: { _cab -> cons(_uhrqw_0, _uhrqw_1) ; l2 -> cons(_vhrqw_0, _vhrqw_1) ; t1 -> nil } False <= not_null(nil) : Yes: { } not_null(_mab) <= reverse(l1, _mab) : No: () Total time: 0.100415 Learner time: 0.020825 Teacher time: 0.000170 Reasons for stopping: No: Contradictory set of ground constraints: { append(cons(z, nil), cons(z, nil), cons(z, cons(z, nil))) <= True append(cons(z, nil), nil, cons(z, nil)) <= True append(nil, cons(z, nil), cons(z, nil)) <= True append(nil, nil, nil) <= True not_null(nil) <= True reverse(cons(z, nil), cons(z, nil)) <= True reverse(nil, nil) <= True False <= not_null(nil) }