| 〈if tn5 = none ∧ ap(t0 _ t1) then { RED1((t0 _ t1) .1; tn5) ; 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, 〈TOPRED(t0 _ t1; tn)〉 tn = tn5, 〈RED1(t1; tn4): m 〉 tn4 = none, 〈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) ⊦ |
〈TOPRED(t; tn)〉 tn = tn0, 〈TOPRED(t; tn): n 〉 tn = tn1 ⊦ tn0 = tn1
〈if tn5 = none ∧ ap(t0 _ t1) then { RED1((t0 _ t1) .1; tn5) ; 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, 〈TOPRED(t0 _ t1; tn)〉 tn = tn5, 〈RED1(t1; tn4): m 〉 tn4 = none, 〈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) ⊦ 〈TOPRED(t0 _ t1; tn): m 〉 tn = none
〈if tn5 = none ∧ ap(t0 _ t1) then { RED1((t0 _ t1) .1; tn5) ; 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, 〈TOPRED(t0 _ t1; tn)〉 tn = tn5, 〈RED1(t1; tn4): m 〉 tn4 = none, 〈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), tn5 = none ⊦
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (t0 _ t1, tn5, m, none)]]