| 〈build_rec#(0; x, to)〉 (to ≠ fail → x0 = depths(to .t, 0) + x), x2 = x, x ≠ [], 0 ≤ max(x), x0 = x ⊦ 〈build_rec#(0; x, to)〉 〈to0 := to, x0 := x ; if x0 ≠ [] then to0 := fail〉 (to0 = fail → (∀ t. x2 ≠ depths(t, 0))) |
〈build_rec#(0; x, to)〉 (x = x1 ∧ to = to1), x2 = x, x ≠ [], 0 ≤ max(x), x0 = x, to1 ≠ fail → x0 = depths(to1 .t, 0) + x1 ⊦ 〈to0 := to1, x0 := x1〉 〈if x0 ≠ [] then to0 := fail〉 (to0 = fail → (∀ t. x2 ≠ depths(t, 0)))
[[CONCRETESIMPRULES : ()]]