| 〈if tn4 = none ∧ ap(t0 _ t1) then { RED1((t0 _ t1) .1; tn4) ; if tn4 ≠ none then tn4 := some(tn4 .t _ (t0 _ t1) .2) else if value((t0 _ t1) .1) then { RED1((t0 _ t1) .2; tn4) ; if tn4 ≠ none then tn4 := some((t0 _ t1) .1 _ tn4 .t) } }〉 tn4 = tn0, 〈TOPRED(t0 _ t1; tn)〉 tn = tn4, 〈RED1(t0; tn3): m 〉 tn3 = none, 〈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 ≠ none, ¬ value(t0), tn4 = none ⊦ |
〈RED1((t0 _ t1) .1; tn4)〉 〈if tn4 ≠ none then tn4 := some(tn4 .t _ (t0 _ t1) .2) else if value((t0 _ t1) .1) then { RED1((t0 _ t1) .2; tn4) ; if tn4 ≠ none then tn4 := some((t0 _ t1) .1 _ tn4 .t) }〉 tn4 = tn0, 〈TOPRED(t0 _ t1; tn)〉 tn = tn4, 〈RED1(t0; tn3): m 〉 tn3 = none, 〈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 ≠ none, ¬ value(t0), tn4 = none ⊦
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ap(t _ t0)])]]