Inductive comp_state_eq(A : Set) : comp_state A -> comp_state A -> Prop :=
  | cse_done : 
    forall a s, 
      comp_state_eq (cs_done a s) (cs_done a s)
  | cse_eof : 
    comp_state_eq (@cs_eof A) (@cs_eof A)
  | cse_more : 
    forall c1 c2 s,
      Comp_eq c1 c2 ->
      comp_state_eq (cs_more c1 s) (cs_more c2 s).Inductive comp_state_eq(A : Set) : comp_state A -> comp_state A -> Prop :=
  | cse_done : 
    forall a s, 
      comp_state_eq (cs_done a s) (cs_done a s)
  | cse_eof : 
    comp_state_eq (@cs_eof A) (@cs_eof A)
  | cse_more : 
    forall c1 c2 s,
      Comp_eq c1 c2 ->
      comp_state_eq (cs_more c1 s) (cs_more c2 s).Inductive comp_state_eq(A : Set) : comp_state A -> comp_state A -> Prop :=
  | cse_done : 
    forall a s, 
      comp_state_eq (cs_done a s) (cs_done a s)
  | cse_eof : 
    comp_state_eq (@cs_eof A) (@cs_eof A)
  | cse_more : 
    forall c1 c2 s,
      Comp_eq c1 c2 ->
      comp_state_eq (cs_more c1 s) (cs_more c2 s).Inductive comp_state_eq(A : Set) : comp_state A -> comp_state A -> Prop :=
  | cse_done : 
    forall a s, 
      comp_state_eq (cs_done a s) (cs_done a s)
  | cse_eof : 
    comp_state_eq (@cs_eof A) (@cs_eof A)
  | cse_more : 
    forall c1 c2 s,
      Comp_eq c1 c2 ->
      comp_state_eq (cs_more c1 s) (cs_more c2 s).

(* Specifications: *)
Theorem comp_state_eq_refl : forall (A : Set)(c : comp_state A), comp_state_eq c c.
Lemma evalDet_steps_done_func_h : forall (A : Set)(x : comp_state A) y1, evalDet_steps x y1 -> forall a a' s s', y1 = (cs_done a s) -> evalDet_steps x (cs_done a' s') -> (a = a' /\ s = s').
Theorem evalDet_steps_done_func : forall (A : Set) x (a a' : A) s s', evalDet_steps x (cs_done a s) -> evalDet_steps x (cs_done a' s') -> (a = a' /\ s = s').
Lemma evalDet_steps_done_eof_func_h : forall (A : Set)(x : comp_state A) y1, evalDet_steps x y1 -> forall a s, y1 = (cs_done a s) -> evalDet_steps x (@cs_eof A) -> False.
Theorem evalDet_steps_done_eof_func : forall (A : Set) x (a : A) s, evalDet_steps x (cs_done a s) -> evalDet_steps x (@cs_eof A) -> False.
Theorem evalDet_func : forall (A : Set)(c : Comp A)(s : Blist)(y1 y2 : comp_answer A), evalDet c s y1 -> evalDet c s y2 -> y1 = y2.