@@ -581,6 +581,50 @@ show rename g (eval₂ C (X ∘ f) p) = _,
581
581
lemma rename_id (p : mv_polynomial β α) : rename id p = p :=
582
582
eval₂_eta p
583
583
584
+ lemma rename_monomial (f : β → γ) (p : β →₀ ℕ) (a : α) :
585
+ rename f (monomial p a) = monomial (p.map_domain f) a :=
586
+ begin
587
+ rw [rename, eval₂_monomial, monomial_eq, finsupp.prod_map_domain_index],
588
+ { exact assume n, pow_zero _ },
589
+ { exact assume n i₁ i₂, pow_add _ _ _ }
590
+ end
591
+
592
+ lemma rename_eq (f : β → γ) (p : mv_polynomial β α) :
593
+ rename f p = finsupp.map_domain (finsupp.map_domain f) p :=
594
+ begin
595
+ simp only [rename, eval₂, finsupp.map_domain],
596
+ congr, ext s a : 2 ,
597
+ rw [← monomial, monomial_eq, finsupp.prod_sum_index],
598
+ congr, ext n i : 2 ,
599
+ rw [finsupp.prod_single_index],
600
+ exact pow_zero _,
601
+ exact assume a, pow_zero _,
602
+ exact assume a b c, pow_add _ _ _
603
+ end
604
+
605
+ lemma injective_rename (f : β → γ) (hf : function.injective f) :
606
+ function.injective (rename f : mv_polynomial β α → mv_polynomial γ α) :=
607
+ have (rename f : mv_polynomial β α → mv_polynomial γ α) =
608
+ finsupp.map_domain (finsupp.map_domain f) := funext (rename_eq f),
609
+ begin
610
+ rw this ,
611
+ exact finsupp.injective_map_domain (finsupp.injective_map_domain hf)
612
+ end
613
+
614
+ lemma total_degree_rename_le (f : β → γ) (p : mv_polynomial β α) :
615
+ (p.rename f).total_degree ≤ p.total_degree :=
616
+ finset.sup_le $ assume b,
617
+ begin
618
+ assume h,
619
+ rw rename_eq at h,
620
+ have h' := finsupp.map_domain_support h,
621
+ rcases finset.mem_image.1 h' with ⟨s, hs, rfl⟩,
622
+ rw finsupp.sum_map_domain_index,
623
+ exact le_trans (le_refl _) (finset.le_sup hs),
624
+ exact assume _, rfl,
625
+ exact assume _ _ _, rfl
626
+ end
627
+
584
628
end rename
585
629
586
630
instance rename.is_ring_hom
0 commit comments