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.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.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.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_2: forall s c m, CC_state_to_CC_core s = (c,m) -> s= CC_core_to_CC_state 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_CC_state_4: forall s, exists c, exists m, s = CC_core_to_CC_state 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).
Lemma cl_corestep_not_halted : forall ge m q m' q' i, step2corestep (part_semantics2 ge) q m q' m' -> ~final_state q i.
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_2: forall s c m, CC_state_to_CC_core s = (c,m) -> s= CC_core_to_CC_state 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_CC_state_4: forall s, exists c, exists m, s = CC_core_to_CC_state 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).