proposition: Lemma loop_lift (k : nat) (a a' : A) : loop (A := A) f h a k = Some a' -> loop (A := B) f' h' (lift a) k = Some (lift a').
proof: Proof. Proof using halt_lift_comp step_lift_comp. revert a. induction k as [ | k']; intros; cbn in *. - rewrite halt_lift_comp. destruct (h a); now inv H. - rewrite halt_lift_comp. destruct (h a) eqn:E. + now inv H. + rewrite step_lift_comp by auto. now apply IHk'. Qed.
imports: Undecidability.Shared.Libs.PSL.FiniteTypes.FinTypes Undecidability.Shared.Libs.PSL.FiniteTypes.BasicFinTypes Undecidability.Shared.Libs.PSL.FiniteTypes.CompoundFinTypes Undecidability.Shared.Libs.PSL.FiniteTypes.VectorFin Undecidability.Shared.Libs.PSL.Vectors.FinNotation Undecidability.Shared.Libs.PSL.Inhabited Undecidability.Shared.Libs.PSL.Base Undecidability.Shared.Libs.PSL.Vectors.Vectors Lia