Shifting polynomials

This can be done for CRings in general, but we do it here only for C because extensionality makes everything much easier, and we only need it for C.

Section Poly_Shifted.

Definition Shift (a : C) (p : C[X]) :=
  ∑ 0 (lth_of_poly p) (fun i => _C_ (nth_coeff i p) [*] (_X_[+]_C_ a) [^]i).

Lemma Shift_apply : forall a p (x : C), (Shift a p) ! x [=] p ! (x[+]a).



Lemma Shift_wdr : forall a p p', p [=] p' -> Shift a p [=] Shift a p'.



Lemma Shift_shift : forall a p, Shift [--]a (Shift a p) [=] p.



Lemma Shift_mult : forall a p1 p2, Shift a (p1[*]p2) [=] Shift a p1[*]Shift a p2.


Lemma Shift_degree_le : forall a p n, degree_le n p -> degree_le n (Shift a p).







Lemma Shift_monic : forall a p n, monic n p -> monic n (Shift a p).

























End Poly_Shifted.