| synced(files, icache, pcache) ⊦ ¬ synced(files0, icache0, pcache0) ↔ ¬(∀ ino. (ino ∈ files → synced(ino, icache, pcache)) → ino ∈ files0 → synced(ino, icache0, pcache0)) |
∀ ino. ino ∈ files → (ino ∈ icache → ¬ icache[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty) ⊦ ¬(∀ ino. ino ∈ files0 → (ino ∈ icache0 → ¬ icache0[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache0 → ¬ pcache0[datakey(ino, n)].dirty)) ↔ ¬ (∀ ino. (ino ∈ files → (ino ∈ icache → ¬ icache[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty)) → ino ∈ files0 → (ino ∈ icache0 → ¬ icache0[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache0 → ¬ pcache0[datakey(ino, n)].dirty))
Used simplifier rules: synced-files: ⊦ synced(files, icache, pcache) ↔ (∀ ino. ino ∈ files → synced(ino, icache, pcache));%synced-ino: ⊦ synced(ino, icache, pcache) ↔ (ino ∈ icache → ¬ icache[ino].dirty) ∧ (∀ n. datakey(ino, n) ∈ pcache → ¬ pcache[datakey(ino, n)].dirty);