[Imprint][Data Privacy Statement][E-Mail]



View long theorem info. View the proof. Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Proof step 1 from proof insorted (conclusion) (back to tree)

⊦ pos(char, sortedchars) < # sortedchars ↔ true

System applied rule normalize

And obtained the following new goals

Rule argument

Additional information

Proof step 2 from proof insorted (previous step) (back to tree)

¬(pos(char, sortedchars) < # sortedchars ↔ true) ⊦

Heuristic simplifier applied rule simplifier

And obtained the following new goals

Rule argument

Additional information

Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)

Proof step 3 from proof insorted (previous step) (back to tree)

# sortedchars ≤ pos(char, sortedchars) ⊦

User applied rule apply rewrite lemma

And obtained the following new goals

Rule argument

spec: <toplevel>, name:Sortedchars, seq:⊦ sortedchars = " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~", subst:, <all paths>

Additional information

Used terms:

Proof step 4 from proof insorted (previous step) (back to tree)

⊦ sortedchars = " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~"

Lemma Sortedchars

Proof step 5 from proof insorted (previous step) (back to tree)

# " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~" ≤ pos(char, " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~") ⊦

Heuristic simplifier applied rule simplifier

And obtained the following new goals

Rule argument

Additional information

Used simplifier rules: len-str-01: str ≠ "" ⊦ # (* str) = # str.rstring + 1; not-zero: 0 < n ⊦ (* n) ≤ m → m ≠ 0; (forward) from specification nat c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ # "" = 0; (s)

Proof step 6 from proof insorted (previous step) (back to tree)

pos(char, " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~") ≠ 0, 87 ≤ pos(char, " !#$%&()*+-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_abcdefghijklmnopqrstuvwxyz|~") ⊦

User applied rule structural induction

And closed the goal!

Rule argument

indvar: char

Additional information

Used simplifier rules: pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-02: str ≠ "", char ≠ str.char1 ⊦ pos((* char), (* str)) = pos(char, str.rstring) + 1; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; pos-str-03: str ≠ "", char = str.char1 ⊦ pos((* char), (* str)) = 0; char generated by `a`, `b`, `c`, `d`, `e`, `f`, `g`, `h`, `i`, `j`, `k`, `l`, `m`, `n`, `o`, `p`, `q`, `r`, `s`, `t`, `u`, `v`, `w`, `x`, `y`, `z`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `H`, `I`, `J`, `K`, `L`, `M`, `N`, `O`, `P`, `Q`, `R`, `S`, `T`, `U`, `V`, `W`, `X`, `Y`, `Z`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `_`, `-`, `+`, `=`, `~`, `<`, `>`, `?`, `.`, `:`, `/`, `|`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `(`, `)`, `[`, `]`, ` ` ;; a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic

Proof Tree for insorted (View conclusion)

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.

the proof tree