| ins≤(a, x0) = a1 ' + y, a0 < a, a1 ∈ ins≤(a, x0), ∀ a. ordered≤(ins≤(a, x0)) ↔ ordered≤(x0) ⊦ ¬ a1 < a0 ∧ ordered≤(ins≤(a, x0)) ↔ ordered≤(a0 ' + x0) |
⊦ x ≠ [] ∧ x.tail ≠ [] → (ordered≤(x) ↔ ¬ x.tail.head < x.head ∧ ordered≤(x.tail))
ins≤(a, x0) = a1 ' + y, a0 < a, a1 ∈ ins≤(a, x0), ∀ a. ordered≤(ins≤(a, x0)) ↔ ordered≤(x0) ⊦ a0 ' + x0 = [], (a0 ' + x0).tail = [], ¬ a1 < a0 ∧ ordered≤(ins≤(a, x0)) ↔ ¬ (a0 ' + x0).tail.head < (a0 ' + x0).head ∧ ordered≤((a0 ' + x0).tail)
Used simplifier rules: ins-e: ⊦ ins≤(a, []) = a ';%le-o: ⊦ ordered≤(a ');%le-e: ⊦ ordered≤([]);% ⊦ (a ' + x).tail = x; (s)%a: ⊦ (x + y) + z = x + y + z; from specification list% ⊦ x + y = [] ↔ x = [] ∧ y = []; (as)% ⊦ a ' ≠ []; (s)% ⊦ a ' = b ' + x ↔ a = b ∧ x = []; (ws)% ⊦ x + [] = x; (s)% ⊦ a ∈ b ' ↔ a = b; (s)%transitivity: ⊦ a < b ∧ b < c → a < c; (forward) from specification oelem%lel: ⊦ a < b ∧ a = c → c < b; (forward) from specification oelem% ⊦ ¬ a < a; (s) Used terms: a0 ' + x0