| ⊦ ⟪fail_or_success#(; ; err); if err = ESUCCESS then maxino := maxino0, syn := true, ginval0 := ∅, nx := [], gstore0 := ∅, gstore := ∅, ginval := ∅, fi0 := ∅, fi := ∅ else maxino := ?, syn := ?, ginval0 := ?, nx := ?, gstore0 := ?, gstore := ?, ginval := ?, fi0 := ?, fi := ?⟫ ( err = ESUCCESS → syn ∧ inv(gstore0 \ ginval) ∧ inv(gstore) ∧ elems nx ∩ ginval = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ ginval ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi)) |
⊦ ⟪choose err0 with ⌊err0⌋ ∨ err0 = ESUCCESS in err := err0; if err = ESUCCESS then maxino := maxino0, syn := true, ginval0 := ∅, nx := [], gstore0 := ∅, gstore := ∅, ginval := ∅, fi0 := ∅, fi := ∅ else maxino := ?, syn := ?, ginval0 := ?, nx := ?, gstore0 := ?, gstore := ?, ginval := ?, fi0 := ?, fi := ?⟫ ( err = ESUCCESS → syn ∧ inv(gstore0 \ ginval) ∧ inv(gstore) ∧ elems nx ∩ ginval = ∅ ∧ ¬ dups(nx) ∧ dom gstore ∪ elems nx = dom gstore0 ∪ ginval ∧ remove-refsize0(gstore) = gstore ∧ ri-inj(fi0) ∧ ri-inj(fi))
Used simplifier rules: fail_or_success#(; ; ERR) {choose ERR0 with ⌊ERR0⌋ ∨ ERR0 = ESUCCESS in ERR := ERR0};