(** * Properties of operations over types *)
Remark transl_params_types:
forall params,
map typ_of_type (map snd params) = typlist_of_typelist (type_of_params params).

(* Specifications: *)
Lemma transl_fundef_sig1:
forall ce f tf args res cc,
match_fundef ce f tf ->
classify_fun (type_of_fundef f) = fun_case_f args res cc ->
funsig tf = signature_of_type args res cc.
Lemma transl_fundef_sig2:
forall ce f tf args res cc,
match_fundef ce f tf ->
type_of_fundef f = Tfunction args res cc ->
funsig tf = signature_of_type args res cc.
Lemma transl_sizeof:
forall (cunit prog: Clight.program) t sz,
linkorder cunit prog ->
sizeof cunit.(prog_comp_env) t = OK sz ->
sz = Ctypes.sizeof prog.(prog_comp_env) t.
Lemma transl_alignof:
forall (cunit prog: Clight.program) t al,
linkorder cunit prog ->
alignof cunit.(prog_comp_env) t = OK al ->
al = Ctypes.alignof prog.(prog_comp_env) t.
Lemma transl_alignof_blockcopy:
forall (cunit prog: Clight.program) t sz,
linkorder cunit prog ->
sizeof cunit.(prog_comp_env) t = OK sz ->
sz = Ctypes.sizeof prog.(prog_comp_env) t /\
alignof_blockcopy cunit.(prog_comp_env) t = alignof_blockcopy prog.(prog_comp_env) t.
Lemma field_offset_stable:
forall (cunit prog: Clight.program) id co f,
linkorder cunit prog ->
cunit.(prog_comp_env)!id = Some co ->
prog.(prog_comp_env)!id = Some co /\
field_offset prog.(prog_comp_env) f (co_members co) = field_offset cunit.(prog_comp_env) f (co_members co).