| ⊦ str < str2 ∧ str2 < str3 → str < str3 |
str < str2, str2 < str3, ¬ str < str3 ⊦
| str < str2, str2 < str3, ¬ str < str3 ⊦ |
str2 < str3, str < str2, ¬ str < str3 ⊦
| str2 < str3, str < str2, ¬ str < str3 ⊦ |
char + str0 < str2, str2 < str3, ¬ char + str0 < str3, ∀ str2, str3. ¬(str2 < str3 ∧ str0 < str2 ∧ ¬ str0 < str3) ⊦
Used simplifier rules: less-empty: ⊦ "" < str ↔ str ≠ ""; Less-notempty: ⊦ ¬ str < ""; string freely generated by "", +;;
| char + str0 < str2, str2 < str3, ¬ char + str0 < str3, ∀ str2, str3. ¬(str2 < str3 ∧ str0 < str2 ∧ ¬ str0 < str3) ⊦ |
str2 < str3, char ' + str0 < str2, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1 ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| str2 < str3, char ' + str0 < str2, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1 ⊦ |
char ' + str0 < char0 + str, char0 + str < str3, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str3, char, str0. ¬(str < str3 ∧ char ' + str0 < str ∧ ¬ char ' + str0 < str3 ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦
Used simplifier rules: less-empty: ⊦ "" < str ↔ str ≠ ""; Less-notempty: ⊦ ¬ str < ""; string freely generated by "", +;;
| char ' + str0 < char0 + str, char0 + str < str3, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str3, char, str0. ¬(str < str3 ∧ char ' + str0 < str ∧ ¬ char ' + str0 < str3 ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦ |
char0 ' + str < str3, char ' + str0 < char0 ' + str, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| char0 ' + str < str3, char ' + str0 < char0 ' + str, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦ |
⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2
char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, char < char0 ∨ char = char0 ∧ str0 < str ⊦
Used terms: str, char0, str0, char
| ⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2 |
| char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, char < char0 ∨ char = char0 ∧ str0 < str ⊦ |
char0 ' + str < str3, char < char0, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦
char = char0, char0 ' + str < str3, str0 < str, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦
| char0 ' + str < str3, char < char0, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦ |
char < char0, char0 ' + str < char1 + str1, ¬ char ' + str0 < char1 + str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ char0, str, char, str0. ¬ ( char0 ' + str < str1 ∧ char < char0 ∧ ¬ char ' + str0 < str1 ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1) ∧ (∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1))) ⊦
Used simplifier rules: Less-notempty: ⊦ ¬ str < ""; string freely generated by "", +;;
| char < char0, char0 ' + str < char1 + str1, ¬ char ' + str0 < char1 + str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ char0, str, char, str0. ¬ ( char0 ' + str < str1 ∧ char < char0 ∧ ¬ char ' + str0 < str1 ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1) ∧ (∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1))) ⊦ |
char < char0, char0 ' + str < char1 ' + str1, ¬ char < char1, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ char2, str2, char3, str3. ¬ char2 ' + str2 < str1 ∨ ¬ char3 < char2 ∨ char3 ' + str3 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str3 < str ∨ str3 < str1) ∨ ¬ (∀ str1, char1, str0. ¬ str2 < str1 ∨ ¬ char1 ' + str0 < str2 ∨ char1 ' + str0 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦ char = char1 ∧ str0 < str1
Used simplifier rules: Less-rec: ⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2; a: ⊦ (x + y) + z = x + y + z; from specification list[string] ⊦ a + x = a ' + x; (s)
| char < char0, char0 ' + str < char1 ' + str1, ¬ char < char1, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ char2, str2, char3, str3. ¬ char2 ' + str2 < str1 ∨ ¬ char3 < char2 ∨ char3 ' + str3 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str3 < str ∨ str3 < str1) ∨ ¬ (∀ str1, char1, str0. ¬ str2 < str1 ∨ ¬ char1 ' + str0 < str2 ∨ char1 ' + str0 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦ char = char1 ∧ str0 < str1 |
⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2
Used simplifier rules: val-trans-01: ⊦ char < char2 ∧ char2 < char3 → char < char3; Used terms: str1, char1, str, char0
| ⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2 |
| char = char0, char0 ' + str < str3, str0 < str, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦ |
str0 < str, char0 ' + str < str3, ¬ char0 ' + str0 < str3, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1 ⊦
| str0 < str, char0 ' + str < str3, ¬ char0 ' + str0 < str3, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1 ⊦ |
char0 ' + str < char + str1, str0 < str, ¬ char0 ' + str0 < char + str1, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str0, str, char0. ¬ ( str0 < str ∧ char0 ' + str < str1 ∧ ¬ char0 ' + str0 < str1 ∧ (∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1)) ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦
Used simplifier rules: Less-notempty: ⊦ ¬ str < ""; string freely generated by "", +;;
| char0 ' + str < char + str1, str0 < str, ¬ char0 ' + str0 < char + str1, ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str0, str, char0. ¬ ( str0 < str ∧ char0 ' + str < str1 ∧ ¬ char0 ' + str0 < str1 ∧ (∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1)) ∧ (∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1)) ⊦ |
str < str1, str0 < str, ¬ str0 < str1, ∀ str2, str3, char1. ¬ str2 < str3 ∨ ¬ char1 ' + str3 < str1 ∨ char1 ' + str2 < str1 ∨ ¬ (∀ str1, char1, str2. ¬ str3 < str1 ∨ ¬ char1 ' + str2 < str3 ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1)) ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦
Used simplifier rules: Less-rec: ⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2; Char-irref: ⊦ ¬ char < char; a: ⊦ (x + y) + z = x + y + z; from specification list[string] ⊦ a + x = a ' + x; (s)
| str < str1, str0 < str, ¬ str0 < str1, ∀ str2, str3, char1. ¬ str2 < str3 ∨ ¬ char1 ' + str3 < str1 ∨ char1 ' + str2 < str1 ∨ ¬ (∀ str1, char1, str2. ¬ str3 < str1 ∨ ¬ char1 ' + str2 < str3 ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1)) ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1), ∀ str, str1. ¬ str < str1 ∨ ¬ str0 < str ∨ str0 < str1, ∀ str1, char1, str2. ¬ str < str1 ∨ ¬ char1 ' + str2 < str ∨ char1 ' + str2 < str1 ∨ ¬(∀ str, str1. ¬ str < str1 ∨ ¬ str2 < str ∨ str2 < str1) ⊦ |
Used terms: str, str1
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.