Fixpoint solve_strip_1_later_sound (R: expr typ func) : rtac_sound (solve_strip_1_later R) :=
let res :=
match R as R'
return rtac_sound match R' with
| Inj (inr (Data (fnil tympred))) => EAPPLY typ func reify_now_later
| App (App (Inj (inr (Data (fcons tympred)))) hd) tl =>
THEN (EAPPLY typ func reify_hlip_ind)
(THEN (TRY (REFLEXIVITY tbl))
(FIRST [solve_hd_in_hlip hd; solve_strip_1_later tl]))
| _ => FAIL
end
with
| Inj (inr (Data (fnil tympred))) => APPLY_sound_now_later tbl
| App (App (Inj (inr (Data (fcons tympred)))) hd) tl =>
THEN_sound tbl _ _ HLIP_sound_aux1
(THEN_sound tbl _ _ (TRY_sound (REFLEXIVITYTAC_sound tbl))
(FIRST_sound (Forall_cons _ (HLIP_sound_aux2 hd)
(Forall_cons _ (solve_strip_1_later_sound tl) (Forall_nil _)))))
| _ => FAIL_sound
end in
eq_rect_r rtac_sound res (eq_sym (solve_strip_1_later_def R)). (*23 seconds *)

Lemma HLIP_sound: forall temp var ret gt R s, rtac_sound (HLIP temp var ret gt R s).
End tbled.