proposition: Lemma nat_ns_step : forall p n, forall l1 l2 x y, nat_ns p n = l1 ++ [:: x, y & l2] -> y = x + 1.
proof: Proof. move=> p; elim=> [|n Ihn] l1 l2 x y /=. by move/(congr1 size)=> /=; rewrite size_cat /= !addnS; move/eqP; rewrite eqSS. case: l1 => [|u l3] /=; last by case=> _; move/Ihn. case=> <-; case: (nat_ns_head p n)=> [l' ->]; case=> <- _. rewrite Zpos_P_of_succ_nat. rewrite /Z.succ /=. ring. Qed.
imports: ZArith Zwf Lia mathcomp(ssreflect eqtype ssrbool ssrnat div fintype seq ssrfun order) mathcomp(bigop fingroup choice ssralg ssrnum rat poly) pol