(* Note: crux of the commutation between unwind and balanced focused reduction *)
lemma unwind2_rmap_uni_crux (f) (p) (b) (q) (m) (n):
(* Note: crux of the commutation between unwind and balanced focused reduction *)
lemma unwind2_rmap_uni_crux (f) (p) (b) (q) (m) (n):
- b ϵ 𝐂❨Ⓕ,m❩ → q ϵ 𝐂❨Ⓕ,n❩ →
+ b ϵ 𝐂❨Ⓕ,m,𝟎❩ → q ϵ 𝐂❨Ⓕ,n,𝟎❩ →
(𝐮❨↑(♭b+♭q)❩ ∘ ▶[f]p ≗ ▶[f](p●𝗔◗b●𝗟◗q) ∘ 𝐮❨↑(m+n)❩).
#f #p #b #q #m #n #Hm #Hn
<list_append_rcons_sn <list_append_rcons_sn >list_append_assoc
(𝐮❨↑(♭b+♭q)❩ ∘ ▶[f]p ≗ ▶[f](p●𝗔◗b●𝗟◗q) ∘ 𝐮❨↑(m+n)❩).
#f #p #b #q #m #n #Hm #Hn
<list_append_rcons_sn <list_append_rcons_sn >list_append_assoc
[ <tr_compose_nap <tr_compose_nap <tr_uni_nap <tr_uni_nap
>nsucc_unfold >nplus_succ_dx >nplus_succ_dx <nplus_assoc <nplus_assoc
>tr_nap_plus_dx <unwind2_rmap_append <nap_plus_unwind2_rmap_closed
[ <tr_compose_nap <tr_compose_nap <tr_uni_nap <tr_uni_nap
>nsucc_unfold >nplus_succ_dx >nplus_succ_dx <nplus_assoc <nplus_assoc
>tr_nap_plus_dx <unwind2_rmap_append <nap_plus_unwind2_rmap_closed
| @(stream_eq_canc_sn … (tr_tl_compose_uni_sn …))
@(stream_eq_trans ????? (tr_tl_compose_uni_sn …))
>stream_tls_succ <unwind2_rmap_append
| @(stream_eq_canc_sn … (tr_tl_compose_uni_sn …))
@(stream_eq_trans ????? (tr_tl_compose_uni_sn …))
>stream_tls_succ <unwind2_rmap_append