| ∀ dirs, files. ¬ # dirs0 < # dirs → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files → n < ino)), ∀ n. n ∈ dirs0 ∨ n ∈ files0 → n < ino1, ∀ files1, dirs. # files1 < # (files0 ++ ino)[ino, af] → (∀ dirs0, files. # dirs0 < # dirs → true → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs0 ∨ n ∈ files → n < ino))) → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files1 → n < ino)) ⊦ ino = 0, ino0 = 0, ino1 = 0, ino ∈ files0, ino0 ∈ dirs0, ∃ ino1. ino1 ≠ 0 ∧ (∀ n. n = ino0 ∨ n ∈ dirs0 ∨ n = ino ∨ n ∈ files0 → n < ino1) |
∀ n. n ∈ dirs0 ∨ n ∈ files0 → n < ino1, ∀ dirs, files. ¬ # dirs0 < # dirs → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files → n < ino)), ∀ files1, dirs. # files1 < # (files0 ++ ino)[ino, af] → (∀ dirs0, files. # dirs0 < # dirs → true → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs0 ∨ n ∈ files → n < ino))) → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files1 → n < ino)) ⊦ ino = 0, ino0 = 0, ino1 = 0, ino0 ∈ dirs0, ino ∈ files0, ∀ dirs1, files. # dirs1 < # dirs0 → true → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs1 ∨ n ∈ files → n < ino)), ∃ ino1. ino1 ≠ 0 ∧ (∀ n. n = ino0 ∨ n ∈ dirs0 ∨ n = ino ∨ n ∈ files0 → n < ino1)
∀ n. n ∈ dirs0 ∨ n ∈ files0 → n < ino1, ∀ dirs, files. ¬ # dirs0 < # dirs → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files → n < ino)), ∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs0 ∨ n ∈ files0 → n < ino), ∀ files1, dirs. # files1 < # (files0 ++ ino)[ino, af] → (∀ dirs0, files. # dirs0 < # dirs → true → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs0 ∨ n ∈ files → n < ino))) → (∃ ino. ino ≠ 0 ∧ (∀ n. n ∈ dirs ∨ n ∈ files1 → n < ino)) ⊦ ino = 0, ino0 = 0, ino1 = 0, ino0 ∈ dirs0, ino ∈ files0, ∃ ino1. ino1 ≠ 0 ∧ (∀ n. n = ino0 ∨ n ∈ dirs0 ∨ n = ino ∨ n ∈ files0 → n < ino1)
Used simplifier rules: ino ≠ 0, ¬ ino ∈ files ⊦ ino0 ∈ files ++ ino ↔ ino0 = ino ∨ ino0 ∈ files; (s)%ino ∈ files ⊦ # files[ino, af] = # files; (s)%¬ ino ∈ files, ino ≠ 0 ⊦ #(files ++ ino) = # files + 1; (s)% ⊦ m < n + 1 ↔ ¬ n < m; (s)% ⊦ ¬ n < n; (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic Used terms: files0, dirs0