| ∀ n, a1. n < # y → less#(a1, (a2 ' + y)[n, y[n]][n + 1, (a2 ' + y)[n]]) = (a2 < a1 ⊃ 1;0) + less#(a1, y) ⊦ less#(a, (a2 ' + a2 ' + y)[1, a0]) = (a0 < a ⊃ 1;0) + (a2 < a ⊃ 1;0) + less#(a, y) |
⊦ n ≠ 0 ∧ x ≠ [] → x[n, a] = x.head ' + x.tail[n -1, a]
Used simplifier rules: less-rec: ⊦ less#(a, b ' + x) = (b < a ⊃ 1;0) + less#(a, x);% ⊦ (a ' + x).head = a; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ (a ' + x).tail = x; (s)% ⊦ (b ' + x)[0, a] = a + x; (s)% ⊦ a + x = a ' + x; (s)% ⊦ m + n = m + n0 ↔ n = n0; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ a ' + x ≠ []; (s) Used terms: a0, 1, a2 ' + a2 ' + y