(** Some properties of [temp_last]. *)

(* Specifications: *)
Lemma temp_last_change_last_source:
forall s d s' sigma,
temp_last (sigma ++ (s, d) :: nil) ->
temp_last (sigma ++ (s', d) :: nil).
Lemma temp_last_push:
forall s1 d1 s2 d2 sigma,
temp_last ((s2, d2) :: sigma) ->
is_not_temp s1 -> is_not_temp d1 ->
temp_last ((s1, d1) :: (s2, d2) :: sigma).
Lemma temp_last_pop:
forall s1 d1 sigma s2 d2,
temp_last ((s1, d1) :: sigma ++ (s2, d2) :: nil) ->
temp_last (sigma ++ (s2, d2) :: nil).
Lemma temp_last_change_last_source:
forall s d s' sigma,
temp_last (sigma ++ (s, d) :: nil) ->
temp_last (sigma ++ (s', d) :: nil).
Lemma temp_last_push:
forall s1 d1 s2 d2 sigma,
temp_last ((s2, d2) :: sigma) ->
is_not_temp s1 -> is_not_temp d1 ->
temp_last ((s1, d1) :: (s2, d2) :: sigma).
Lemma temp_last_pop:
forall s1 d1 sigma s2 d2,
temp_last ((s1, d1) :: sigma ++ (s2, d2) :: nil) ->
temp_last (sigma ++ (s2, d2) :: nil).