| 〈if tn5 ≠ none then tn5 := some(tn5 .t _ (t0 _ t1) .2) else if value((t0 _ t1) .1) then { RED1((t0 _ t1) .2; tn5) ; if tn5 ≠ none then tn5 := some((t0 _ t1) .1 _ tn5 .t) }〉 tn5 = tn0, 〈RED1((t0 _ t1) .1; tn4)〉 tn4 = tn5, 〈TOPRED(t0 _ t1; tn)〉 tn = tn4, 〈RED1(t0; tn3): m 〉 tn3 = some(t2), 〈TOPRED(t0 _ t1; tn2): m 〉 tn2 = none, ∀ n0, t, tn1, tn0. n0 < m + 1 → (〈RED1(t; tn2): n0 〉 tn2 = tn1 ∧ 〈RED1(t; tn2)〉 tn2 = tn0 ∧ tn0 ≠ tn1 → false), tn0 ≠ some(t2 _ t1), tn4 = none ⊦ |
〈tn5 := some(tn5 .t _ (t0 _ t1) .2)〉 tn5 = tn0, 〈RED1((t0 _ t1) .1; tn4)〉 tn4 = tn5, 〈TOPRED(t0 _ t1; tn)〉 tn = tn4, 〈RED1(t0; tn3): m 〉 tn3 = some(t2), 〈TOPRED(t0 _ t1; tn2): m 〉 tn2 = none, ∀ n0, t, tn1, tn0. n0 < m + 1 → (〈RED1(t; tn2): n0 〉 tn2 = tn1 ∧ 〈RED1(t; tn2)〉 tn2 = tn0 ∧ tn0 ≠ tn1 → false), tn0 ≠ some(t2 _ t1), tn4 = none, tn5 ≠ none ⊦
〈if value((t0 _ t1) .1) then { RED1((t0 _ t1) .2; tn5) ; if tn5 ≠ none then tn5 := some((t0 _ t1) .1 _ tn5 .t) }〉 tn5 = tn0, 〈RED1((t0 _ t1) .1; tn4)〉 tn4 = tn5, 〈TOPRED(t0 _ t1; tn)〉 tn = tn4, 〈RED1(t0; tn3): m 〉 tn3 = some(t2), 〈TOPRED(t0 _ t1; tn2): m 〉 tn2 = none, ∀ n0, t, tn1, tn0. n0 < m + 1 → (〈RED1(t; tn2): n0 〉 tn2 = tn1 ∧ 〈RED1(t; tn2)〉 tn2 = tn0 ∧ tn0 ≠ tn1 → false), tn0 ≠ some(t2 _ t1), tn4 = none, ¬ tn5 ≠ none ⊦
[[CONCRETESIMPRULES : ()]]