Require Export Bmc.Core.
Definition k_ind_step (T : trans)
(P : prop) (i: nat) : Prop :=
forall ss : sseq,
path T ss 0 i -> safety_nth_offset P ss 0 i -> P ss.[i].
Definition k_induction_post (I : prop) (T : trans) (P : prop) (k: nat) : Prop :=
k_ind_step T P (S k) /\ safety_nth I T P k.
(**)

Lemma shift_k_ind_step :
forall (T : trans) (P : prop) (i k : nat),
k < i ->
( forall ss : sseq,
path T ss 0 k -> safety_nth_offset P ss 0 k -> P ss.[k] ) ->
forall ss : sseq,
path T ss (i-k) k -> safety_nth_offset P ss (i-k) k -> P ss.[i].