| # str ≤ # stringvar, r -- mkfs(stringvar .class, ty, fieldvar) ' ∈ rks, ∀ rk0. rk0 ≠ r -- mkfs(stringvar .class, ty, fieldvar) ' ∧ rk0 ∈ rks ∧ is_fskey(rk0 .key) → # rk0 .key .fs .class .class < # str, ∀ rks0. # rks0 < # rks → (true → (∃ str. ∀ rk. rk ∈ rks0 ∧ is_fskey(rk .key) → ¬ # str ≤ # rk .key .fs .class .class)) ⊦ rks = ∅, # rks = 0, ∀ rk. rk ∈ rks ∧ is_fskey(rk .key) → ¬ # (char + stringvar) ≤ # rk .key .fs .class .class, ∃ str. ∀ rk. rk ∈ rks ∧ is_fskey(rk .key) → ¬ # str ≤ # rk .key .fs .class .class |
# str < # rk .key .fs .class .class, # stringvar < # rk .key .fs .class .class, r -- mkfs(stringvar .class, ty, fieldvar) ' ∈ rks, # str ≤ # stringvar, is_fskey(rk .key), rk ∈ rks, ∀ rk0. rk0 ≠ r -- mkfs(stringvar .class, ty, fieldvar) ' ∧ rk0 ∈ rks ∧ is_fskey(rk0 .key) → # rk0 .key .fs .class .class < # str, ∀ rks0. # rks0 < # rks → (true → (∃ str. ∀ rk. rk ∈ rks0 ∧ is_fskey(rk .key) → ¬ # str ≤ # rk .key .fs .class .class)) ⊦ # rks = 0, rks = ∅, ∃ str. ∀ rk. rk ∈ rks ∧ is_fskey(rk .key) → ¬ # str ≤ # rk .key .fs .class .class
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ m < n → n ≠ 0], [CSIMPFORWARD : ⊦ m ≤ n ∧ n < n0 → m < n0], [CSIMPFORWARD : ⊦ m < n → n ≠ 0], [CSIMPSEQ : ⊦ m + n = n + m], [CSIMPSEQ : ⊦ (m + n0) + n1 = m + n0 + n1], [CSIMPSEQ : ⊦ m + 1 ≤ n ↔ m < n], [CSIMPSEQ : ⊦ (str1 + str2) + str3 = str1 + str2 + str3], [CSIMPSEQ : ⊦ # (char ' + str) = # str + 1], [CSIMPSEQ : ⊦ char + str = char ' + str])]]