Require compcert.common.Globalenvs.
(*To prove memsem*)
Inductive CC_core : Type :=
CC_core_State : function ->
statement -> cont -> env -> temp_env -> CC_core
| CC_core_Callstate : fundef -> list val -> cont -> CC_core
| CC_core_Returnstate : val -> cont -> CC_core.
Definition CC_core_to_CC_state (c:CC_core) (m:mem) : state :=
match c with
CC_core_State f st k e te => State f st k e te m
|  CC_core_Callstate fd args k => Callstate fd args k m
| CC_core_Returnstate v k => Returnstate v k m
end.
Definition CC_state_to_CC_core (c:state): CC_core * mem :=
match c with
State f st k e te m => (CC_core_State f st k e te, m)
|  Callstate fd args k m => (CC_core_Callstate fd args k, m)
| Returnstate v k m => (CC_core_Returnstate v k, m)
end.

(* Specifications: *)
Lemma  CC_core_CC_state_1: forall c m,
CC_state_to_CC_core  (CC_core_to_CC_state c m) = (c,m).
Lemma  CC_core_CC_state_3: forall s c m,
s= CC_core_to_CC_state c m -> CC_state_to_CC_core  s = (c,m).
Lemma CC_core_to_CC_state_inj: forall c m c' m',
CC_core_to_CC_state c m = CC_core_to_CC_state c' m' -> (c',m')=(c,m).