| ⟨loop if ¬ found?0 then {if T1[h1(a)] = empty then {T1 := T1[h1(a), full(a)]; found?0 := true}; if ¬ found?0 then {a := T1[h1(a)].elem, T1 := T1[h1(a), T1[h1(a)].elem:= a]; if T2[h2(a)] = empty then {T2 := T2[h2(a), full(a)]; found?0 := true}}; if ¬ found?0 then a := T2[h2(a)].elem, T2 := T2[h2(a), T2[h2(a)].elem:= a]} times kappa⟩ (T1 = T ∧ found?0 ∧ a = a1 ∧ T2 = T0), inv(T1, h1), inv(T2, h2), disj(T1, T2), abs(T1, T2, h1, h2) ++ a ≠ abs(T, T0, h1, h2) ∨ ¬ inv(T, h1) ∨ ¬ inv(T0, h2) ∨ ¬ disj(T, T0), T1[h1(a)] = full(a) ∨ T2[h2(a)] = full(a) ↔ found?0 ⊦ |
⟨loop if ¬ found?0 then {if T1[h1(a)] = empty then {T1 := T1[h1(a), full(a)]; found?0 := true}; if ¬ found?0 then {a := T1[h1(a)].elem, T1 := T1[h1(a), T1[h1(a)].elem:= a]; if T2[h2(a)] = empty then {T2 := T2[h2(a), full(a)]; found?0 := true}}; if ¬ found?0 then a := T2[h2(a)].elem, T2 := T2[h2(a), T2[h2(a)].elem:= a]} times kappa⟩ (T1 = T ∧ found?0 ∧ a = a1 ∧ T2 = T0), inv(T1, h1), inv(T2, h2), disj(T1, T2), abs(T1, T2, h1, h2) ++ a ≠ abs(T, T0, h1, h2) ∨ ¬ inv(T, h1) ∨ ¬ inv(T0, h2) ∨ ¬ disj(T, T0), ¬(T1[h1(a)] = full(a) ∨ T2[h2(a)] = full(a)), ¬ found?0 ⊦
[Concretesimprules(())]