Definition LR_of_type (t: type) :=
  match t with
  | Tarray _ _ _ => RRRR
  | _ => LLLL
  end.

(* Specifications: *)
Lemma legal_nested_efield_weaken: forall t_root e gfs tts, legal_nested_efield t_root e gfs tts (LR_of_type t_root) = true -> legal_nested_efield_rec t_root gfs tts = true /\ type_almost_match e t_root (LR_of_type t_root) = true.
Lemma weakened_legal_nested_efield_spec: forall t_root e gfs efs tts rho, legal_nested_efield_rec t_root gfs tts = true -> type_almost_match e t_root (LR_of_type t_root) = true -> efield_denote efs gfs rho -> typeconv' (nested_field_type t_root gfs) = typeconv' (typeof (nested_efield e efs tts)).
Lemma classify_add_typeconv: forall t n a ty, typeconv (Tarray t n a) = typeconv ty -> Cop.classify_add ty = Cop.classify_add (Tpointer t a).
Lemma isBinOpResultType_add_ptr_ptrofs: forall e t n a t0 ei, is_ptrofs_type (typeof ei) = true -> typeconv (Tarray t0 n a) = typeconv (typeof e) -> complete_legal_cosu_type t0 = true -> eqb_type (typeof e) int_or_ptr_type = false -> isBinOpResultType Cop.Oadd e ei (tptr t) = tc_isptr e.
Lemma isBinOpResultType_add_ptr: forall e t n a t0 ei, is_int_type (typeof ei) = true -> typeconv (Tarray t0 n a) = typeconv (typeof e) -> complete_legal_cosu_type t0 = true -> eqb_type (typeof e) int_or_ptr_type = false -> isBinOpResultType Cop.Oadd e ei (tptr t) = tc_isptr e.