Require Export Bmc.Core.
Definition backward_post (I : prop) (T : trans) (P : prop) (k: nat) : Prop :=
lasso_bwd T P k /\ safety_nth I T P k.
(* *)
Local Theorem case1 :
forall (I : prop) (T : trans) (P : prop) (k : nat),
backward_post I T P k ->
forall (i : nat), (i <= k) -> prop_nth_init_lf I T P i.
Local Lemma case2_2' : forall (T : trans) (P : prop) (i k : nat),
i > k ->
( forall ss : sseq, (loop_free T ss 0 k -> P ss.[k]) ) ->
forall ss : sseq, (loop_free T ss (i-k) k -> P ss.[i]).
Local Lemma case2_2 : forall (I : prop) (T : trans) (P : prop) (i k : nat),
i > k ->
lasso_bwd T P k ->
prop_nth_init_lf I T P i.
Local Lemma case2 :
forall (I : prop) (T : trans) (P : prop) (k : nat),
backward_post I T P k ->
forall (i : nat), (i > k) -> prop_nth_init_lf I T P i.
(**)
Require Export Bmc.LoopFree.
(**)
Require Export Bmc.CoreConj.
Definition backward_post_conj (I : prop) (T : trans) (P : prop) (k: nat) : Prop :=
lasso_bwd_conj T P k /\ safety_nth_conj I T P k.

Lemma backward_post_conj_eq :
forall (I:prop) (T:trans) (P:prop) (k:nat),
backward_post I T P k <-> backward_post_conj I T P k.