| str1.last ∈ str, ∀ char. char ∈ str1 → char ∈ str, ∀ str0, str, str2. # str2 < # str1 → (∀ char. char ∈ str2 → char ∈ str) → string-right-trim(str, str0 + str2) = string-right-trim(str, str0) ⊦ string-right-trim(str, str0 + str1.butlast) = string-right-trim(str, str0), str0 + str1 = "", str1 = "" |
str1.last ∈ str, ∀ char. char ∈ str1 → char ∈ str, ∀ str0, str, str2. # str2 < # str1 → (∀ char. char ∈ str2 → char ∈ str) → string-right-trim(str, str0 + str2) = string-right-trim(str, str0) ⊦ ∀ char. char ∈ str1.butlast → char ∈ str, string-right-trim(str, str0 + str1.butlast) = string-right-trim(str, str0), str0 + str1 = "", str1 = ""
Used simplifier rules: butlast-length: ⊦ str ≠ "" → # str.butlast = # str - 1;% ⊦ # str = 0 ↔ str = "";% ⊦ m < 1 ↔ m = 0;% ⊦ ¬ m ≤ n ↔ n < m;%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0;% ⊦ m < n + 1 ↔ ¬ n < m;% ⊦ ¬ n < n;% ⊦ (m + n0) + n1 = m + n0 + n1;% ⊦ m + n = n + m; Used terms: str0, str, str1.butlast