| t0 _ t1 = C[t2], context(C), t2 =>top t, ∀ t'. t0 => t' ↔ (∃ C, t2, t1. context(C) ∧ t0 = C[t2] ∧ t2 =>top t1 ∧ t' = C[t1]), ∀ t'. t1 => t' ↔ (∃ C, t0, t2. context(C) ∧ t1 = C[t0] ∧ t0 =>top t2 ∧ t' = C[t2]) ⊦ t0 _ t1 => C[t] |
⊦ t =>top t' ↔ (∃ v1, v2. t = K _ v1 _ v2 ∧ t' = v1 ∧ value(v1) ∧ value(v2)) ∨ (∃ v1, v2, v3. t = S _ v1 _ v2 _ v3 ∧ t' = v1 _ v3 _ (v2 _ v3) ∧ value(v1) ∧ value(v2) ∧ value(v3))
t0 _ t1 = C[t2], context(C), (∃ v1, v2. t2 = K _ v1 _ v2 ∧ t = v1 ∧ value(v1) ∧ value(v2)) ∨ (∃ v1, v2, v3. t2 = S _ v1 _ v2 _ v3 ∧ t = v1 _ v3 _ (v2 _ v3) ∧ value(v1) ∧ value(v2) ∧ value(v3)), ∀ t'. t0 => t' ↔ (∃ C, t2, t1. context(C) ∧ t0 = C[t2] ∧ t2 =>top t1 ∧ t' = C[t1]), ∀ t'. t1 => t' ↔ (∃ C, t0, t2. context(C) ∧ t1 = C[t0] ∧ t0 =>top t2 ∧ t' = C[t2]) ⊦ t0 _ t1 => C[t]
[[CONCRETESIMPRULES : ()], [EXTRATERMS : (t, t2)]]