| fi = fi0, fo = fo0, fs = fs0, log = log0, ro = ro0, fo0.inodes?, ro1.inodes?, log-cons(log0, fs0), ri-inj(fi0), ri-inj(ri) ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then {ri := fi, ro := fo, ax := log; ks := ro; boolvar := true} else ri := ?, fi := ?, fs := ?, log := ?, ro := ?, fo := ?, ax := ?, ks := ?, boolvar := ?⟫ (err = ESUCCESS → boolvar ∧ ri-inj(ri) ∧ ri-inj(fi) ∧ log-cons(log, fs) ∧ ro.inodes? ∧ fo.inodes?) |
fi = fi0, fo = fo0, fs = fs0, log = log0, ro = ro0, ro1.inodes?, fo0.inodes?, log-cons(log0, fs0), ri-inj(ri), ri-inj(fi0) ⊦ ⟪choose err0 with ⌊err0⌋ ∨ err0 = ESUCCESS in err := err0; if err = ESUCCESS then {ri := fi, ro := fo, ax := log; ks := ro; boolvar := true} else ri := ?, fi := ?, fs := ?, log := ?, ro := ?, fo := ?, ax := ?, ks := ?, boolvar := ?⟫ (err = ESUCCESS → boolvar ∧ ri-inj(ri) ∧ ri-inj(fi) ∧ log-cons(log, fs) ∧ ro.inodes? ∧ fo.inodes?)
Used simplifier rules: fail_or_success#(; ; ERR) {choose ERR0 with ⌊ERR0⌋ ∨ ERR0 = ESUCCESS in ERR := ERR0};