| fs0 = fs, log0 = log, fo.inodes?, ro.inodes?, log-cons(log, fs), node-cons(nd.key, nd), ri-cons(ri, fs), ri-inj(fi), ri-inj(ri) ⊦ (∀ adr1. ¬(new(adr1 ', fs) ∧ ¬ dups(adr1 '))) ∧ ⟨err := ENOSPC; boolvar := ?⟩ (boolvar ∧ fs0 = fs ∧ log0 = log), ∃ adr1. (new(adr1 ', fs) ∧ ¬ dups(adr1 ')) ∧ ⟨adr := adr1; fs[adr] := nd, log := log + adr, err := ESUCCESS; boolvar := ?⟩ (boolvar ∧ fs0 = fs ∧ log0 = log), ⟨fail#(; ; err); adr := ?; boolvar := ?⟩ boolvar |
ro.inodes?, fo.inodes?, log-cons(log, fs), node-cons(nd.key, nd), ri-cons(ri, fs), ri-inj(ri), ri-inj(fi) ⊦ ⟨fail#(; ; err); adr := ?; boolvar := ?⟩ boolvar, adr ∈ fs ∧ ⟨err := ENOSPC; boolvar := ?⟩ boolvar, ∃ adr0. ¬ adr0 ∈ fs ∧ ⟨adr := adr0; fs1 := fs[adr, nd], log1 := log + adr ', err := ESUCCESS; boolvar := ?⟩ (boolvar ∧ fs = fs1 ∧ log = log1)
Used simplifier rules: ⊦ ax + adr = ax + adr '; (s)% ⊦ ¬ dups(adr '); (s)% ⊦ new(adr ', fs) ↔ ¬ adr ∈ fs; (s)