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.
(**)
(**)
(**)
Require Export Bmc.CoreConj.
Definition k_ind_step_conj (T : trans)
(P : prop) (k: nat) : Prop :=
forall ss : sseq,
~(path T ss 0 k /\ safety_nth_offset P ss 0 k /\ ~P ss.[k]).
Definition k_induction_post_conj (I : prop) (T : trans) (P : prop) (k: nat) : Prop :=
k_ind_step_conj T P (S k) /\ safety_nth_conj I T P k.

Lemma k_induction_post_conj_eq :
forall (I:prop) (T:trans) (P:prop) (k:nat),
k_induction_post I T P k <-> k_induction_post_conj I T P k.