lemma after_tls: ∀n,f1,f2,f. @⦃0, f1⦄ ≡ n →
f1 ⊚ f2 ≡ f → ⫱*[n]f1 ⊚ f2 ≡ ⫱*[n]f.
#n elim n -n //
-#n #IH #f1 #f2 #f #Hf1 #Hf cases (at_inv_pxn … Hf1) -Hf1 [ |*: // ]
-#g1 #Hg1 #H1 cases (after_inv_nxx … Hf … H1) -Hf /2 width=1 by/
+#n #IH #f1 #f2 #f #Hf1 #Hf
+cases (at_inv_pxn … Hf1) -Hf1 [ |*: // ] #g1 #Hg1 #H1
+cases (after_inv_nxx … Hf … H1) -Hf #g #Hg #H0 destruct
+<tls_xn <tls_xn /2 width=1 by/
qed.
(* Properties on isid *******************************************************)
elim (at_inv_xxn … Hf2) -Hf2 [1,3: * |*: // ]
[ #g2 #j1 #Hg2 #H1 #H2 destruct
elim (after_inv_pnx … Hf) -Hf [ |*: // ] #g #Hg #H destruct
- /3 width=5 by after_next/
+ <tls_xn /3 width=5 by after_next/
| #g2 #Hg2 #H2 destruct
elim (after_inv_nxx … Hf) -Hf [2,3: // ] #g #Hg #H destruct
- /3 width=5 by after_next/
+ <tls_xn /3 width=5 by after_next/
]
]
qed.
elim (at_inv_xxn … Hf2) -Hf2 [1,3: * |*: // ]
[ #g2 #j1 #Hg2 #H1 #H2 destruct
elim (after_inv_pnx … Hf) -Hf [ |*: // ] #g #Hg #H destruct
- /3 width=5 by after_next/
+ <tls_xn /3 width=5 by after_next/
| #g2 #Hg2 #H2 destruct
elim (after_inv_nxx … Hf) -Hf [2,3: // ] #g #Hg #H destruct
- /3 width=5 by after_next/
+ <tls_xn /3 width=5 by after_next/
]
]
qed.