(* Lemma agree_except_sym: forall x s s', agree_except x s s' -> agree_except x s' s. *)

(* Specifications: *)
Axiom 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).
Axiom fresh_lt:
forall {A} (f: A -> var) a x y, fresh f a x -> Ident.lt x y -> fresh f a y.
Axiom space_denote_permute: forall l l',
Permutation l l' ->  space_denote l = space_denote l'.
Axiom assertion_denote_permute: forall pi l l',
Permutation l l' ->
assertion_denote (Assertion pi l) = assertion_denote (Assertion pi l').
Axiom incon_e: forall P, incon P = true -> assertion_denote P |-- FF.
Axiom isolate_sound:
forall e P nextv nextv2 results
(LT: Ident.lt nextv nextv2),
isolate e P nextv = Some results ->
fresh freshmax_expr e nextv ->
fresh freshmax_assertion P nextv ->
assertion_denote P |--
fold_right (fun P => orp (existsv nextv (assertion_denote P))) FF results /\
forall Q, In Q results ->
match Q with
|Assertion _ (Next e0 _ :: _) => e=e0
| _ => False
end /\
fresh freshmax_assertion Q nextv2.
Axiom env_reset2: forall s x z, env_set x (env_get s x) (env_set x z s) = s.
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'.