(*
 Lemma agree_except_sym:
  forall x s s', agree_except x s s' -> agree_except x s' s.
 Proof.
 unfold agree_except; intuition. symmetry. apply H0; auto.
 Qed.
*)

Axiom env_reset2: forall s x z, env_set x (env_get s x) (env_set x z s) = s.

(* Specifications: *)
Lemma list_denote_agree_pn_atom_neg: forall pos s nextv z, fresh (freshmax_list freshmax_pn_atom) pos nextv -> list_denote (neg oo pn_atom_denote) (@andp _) TT pos s -> list_denote (neg oo pn_atom_denote) (@andp _) TT pos (set_in_state nextv z s).
Lemma fresh_lt: forall {A} (f: A -> var) a x y, fresh f a x -> Ident.lt x y -> fresh f a y.
Lemma or_FF: forall {A} (P: pred A), (orp P FF) = P.
Lemma permute_sigma0: forall sigma0 (a: space_atom) sigma, Permutation (sigma0 ++ a :: sigma) (a :: sigma0 ++ sigma).
Lemma space_denote_permute: forall l l', Permutation l l' -> space_denote l = space_denote l'.
Lemma assertion_denote_permute: forall pi l l', Permutation l l' -> assertion_denote (Assertion pi l) = assertion_denote (Assertion pi l').
Lemma if_bool_e: forall {A: Type} (b: bool) (c d e: A), (if b then c else d) = e -> b=true /\ c=e \/ b=false /\ d=e.