Definition gupd_reptype_array_is_pair: forall t n a i t0,
0 <= i < n ->
sigT (fun F => sigT (fun G =>
forall v v0,
F (gupd_reptype_array t n a i t0 v v0) =
(proj_except_reptype_array t n a i v, v0) /\
gupd_reptype_array t n a i t0 v v0 =
G (proj_except_reptype_array t n a i v, v0)
)).

Lemma nf_replace2_is_nf_replace2_1_nf_replace2: forall t gf gfs t0,
legal_nested_field t (gf :: gfs) ->
nf_replace2 t gfs (nf_replace2 (nested_field_type2 t gfs) (gf :: nil) t0) =
nf_replace2 t (gf :: gfs) t0.