Require Export ZArith.
(*Require Export Bmc.Logic.*)
Open Scope nat_scope.
Set Implicit Arguments.
(**)
Definition state : Type := Z.
Definition sseq : Type := nat -> state.
Definition nth (n : nat) (ss : sseq) : state :=
ss n.
Notation "ss .[ n ] " := (nth n ss)
(at level 0).
Definition skipn (n : nat) (ss : sseq) : sseq :=
fun i => ss (i+n).

Lemma skipn_nth: forall (ss : sseq) (n m : nat),
(skipn n ss).[m] = ss.[n+m].