| ⊦ str < str2 ∧ str2 < str3 → str < str3 |
str < str2, str2 < str3, ¬ str < str3 ⊦
| str < str2, str2 < str3, ¬ str < str3 ⊦ |
str < str2, str2 < str3, ¬ str < str3 ⊦
| str < str2, str2 < str3, ¬ str < str3 ⊦ |
char + str0 < str2, str2 < str3, ¬ char + str0 < str3, ∀ str2, str3. ¬(str0 < str2 ∧ str2 < str3 ∧ ¬ 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. ¬(str0 < str2 ∧ str2 < str3 ∧ ¬ str0 < str3) ⊦ |
char ' + str0 < str2, str2 < str3, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| char ' + str0 < str2, str2 < str3, ¬ char ' + str0 < str3, ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char ' + str0 < char0 + str, char0 + str < str3, ¬ char ' + str0 < str3, ∀ char, str0, str3. ¬(char ' + str0 < str ∧ str < str3 ∧ ¬ char ' + str0 < str3 ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used simplifier rules: Less-notempty: ⊦ ¬ str < ""; String freely generated by "", +;
| char ' + str0 < char0 + str, char0 + str < str3, ¬ char ' + str0 < str3, ∀ char, str0, str3. ¬(char ' + str0 < str ∧ str < str3 ∧ ¬ char ' + str0 < str3 ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char ' + str0 < char0 ' + str, char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used simplifier rules: ⊦ a + x = a ' + x; (s)
| char ' + str0 < char0 ' + str, char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2
char0 ' + str < str3, ¬ char ' + str0 < str3, char < char0 ∨ char = char0 ∧ str0 < str, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used terms: str, char0, str0, char
| ⊦ char1 ' + str1 < char2 ' + str2 ↔ char1 < char2 ∨ char1 = char2 ∧ str1 < str2 |
| char0 ' + str < str3, ¬ char ' + str0 < str3, char < char0 ∨ char = char0 ∧ str0 < str, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char < char0, char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
char = char0, char0 ' + str < str3, str0 < str, ¬ char ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
| char < char0, char0 ' + str < str3, ¬ char ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char < char0, char0 ' + str < char1 + str1, ¬ char ' + str0 < char1 + str1, ∀ char, char0, str, str0. ¬ ( char < char0 ∧ char0 ' + str < str1 ∧ ¬ char ' + str0 < str1 ∧ (∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used simplifier rules: Less-notempty: ⊦ ¬ str < ""; String freely generated by "", +;
| char < char0, char0 ' + str < char1 + str1, ¬ char ' + str0 < char1 + str1, ∀ char, char0, str, str0. ¬ ( char < char0 ∧ char0 ' + str < str1 ∧ ¬ char ' + str0 < str1 ∧ (∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char < char0, char0 ' + str < char1 ' + str1, ¬ char < char1, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ char2, char3, str2, str3. ¬ char2 < char3 ∨ ¬ char3 ' + str2 < str1 ∨ char2 ' + str3 < str1 ∨ ¬ (∀ char1, str1, str0. ¬ char1 ' + str1 < str2 ∨ ¬ str2 < str0 ∨ char1 ' + str1 < str0 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∨ ¬(∀ str, str1. ¬ str3 < str ∨ ¬ str < str1 ∨ str3 < str1), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ 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, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ char2, char3, str2, str3. ¬ char2 < char3 ∨ ¬ char3 ' + str2 < str1 ∨ char2 ' + str3 < str1 ∨ ¬ (∀ char1, str1, str0. ¬ char1 ' + str1 < str2 ∨ ¬ str2 < str0 ∨ char1 ' + str1 < str0 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∨ ¬(∀ str, str1. ¬ str3 < str ∨ ¬ str < str1 ∨ str3 < str1), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ 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, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char0 ' + str < str3, str0 < str, ¬ char0 ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
| char0 ' + str < str3, str0 < str, ¬ char0 ' + str0 < str3, ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
char0 ' + str < char + str1, str0 < str, ¬ char0 ' + str0 < char + str1, ∀ char0, str, str0. ¬ ( char0 ' + str < str1 ∧ str0 < str ∧ ¬ char0 ' + str0 < str1 ∧ (∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦
Used simplifier rules: Less-notempty: ⊦ ¬ str < ""; String freely generated by "", +;
| char0 ' + str < char + str1, str0 < str, ¬ char0 ' + str0 < char + str1, ∀ char0, str, str0. ¬ ( char0 ' + str < str1 ∧ str0 < str ∧ ¬ char0 ' + str0 < str1 ∧ (∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∧ (∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1)), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < str1 ⊦ |
str < str1, str0 < str, ¬ str0 < str1, ∀ char1, str2, str3. ¬ char1 ' + str2 < str1 ∨ ¬ str3 < str2 ∨ char1 ' + str3 < str1 ∨ ¬ (∀ char1, str1, str0. ¬ char1 ' + str1 < str2 ∨ ¬ str2 < str0 ∨ char1 ' + str1 < str0 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∨ ¬(∀ str, str1. ¬ str3 < str ∨ ¬ str < str1 ∨ str3 < str1), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < 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, ∀ char1, str2, str3. ¬ char1 ' + str2 < str1 ∨ ¬ str3 < str2 ∨ char1 ' + str3 < str1 ∨ ¬ (∀ char1, str1, str0. ¬ char1 ' + str1 < str2 ∨ ¬ str2 < str0 ∨ char1 ' + str1 < str0 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2)) ∨ ¬(∀ str, str1. ¬ str3 < str ∨ ¬ str < str1 ∨ str3 < str1), ∀ char1, str1, str2. ¬ char1 ' + str1 < str ∨ ¬ str < str2 ∨ char1 ' + str1 < str2 ∨ ¬(∀ str, str2. ¬ str1 < str ∨ ¬ str < str2 ∨ str1 < str2), ∀ str, str1. ¬ str0 < str ∨ ¬ str < str1 ∨ str0 < 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.