Require Export Bmc.Core.
Open Scope nat_scope.
Definition spseq : Type := nat -> prop.
Definition pdr_post_t (I:prop) (T:trans) (P:prop) (r:spseq) (k:nat) : Prop :=
(forall i s, I s -> r i s) /\
(forall i s, r i s -> P s) /\
(forall i s, r i s -> r (S i) s) /\
(forall i s s', i <= k -> r i s /\ T s s' -> r (S i) s') /\
(forall s, r k s <-> r (S k) s).

Theorem pdr_soundness_t1 :
forall (I:prop) (T:trans) (P:prop),
( exists (k:nat) (r:spseq), pdr_post_t I T P r k ) ->
forall i, prop_nth_init I T P i.