Skip to content

Commit 112dbac

Browse files
committed
feat(RatFunc): scalar tower instance from R[X] (#30963)
A scalar tower in which R[X] occurs induces a scalar tower with `RatFunc R`. Co-authored-by: Xavier Genereux <xaviergenereux@hotmail.com>
1 parent e31670e commit 112dbac

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

Mathlib/FieldTheory/RatFunc/Basic.lean

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -773,6 +773,35 @@ end rank
773773

774774
end lift
775775

776+
section IsScalarTower
777+
778+
/-- Let `RatFunc A / A[X] / R / R₀` be a tower. If `A[X] / R / R₀` is a scalar tower
779+
then so is `RatFunc A / R / R₀`. -/
780+
instance (R₀ R A : Type*) [CommSemiring R₀] [CommSemiring R] [CommRing A] [IsDomain A]
781+
[Algebra R₀ A[X]] [SMul R₀ R] [Algebra R A[X]] [IsScalarTower R₀ R A[X]] :
782+
IsScalarTower R₀ R (RatFunc A) := IsScalarTower.to₁₂₄ _ _ A[X] _
783+
784+
/-- Let `K / RatFunc A / A[X] / R` be a tower. If `K / A[X] / R` is a scalar tower
785+
then so is `K / RatFunc A / R`. -/
786+
instance (R A K : Type*) [CommRing A] [IsDomain A] [Field K] [Algebra A[X] K]
787+
[FaithfulSMul A[X] K] [CommSemiring R] [Algebra R A[X]] [SMul R K] [IsScalarTower R A[X] K] :
788+
IsScalarTower R (RatFunc A) K :=
789+
IsScalarTower.to₁₃₄ _ A[X] _ _
790+
791+
/-- Let `K / k / RatFunc A / A[X]` be a tower. If `K / k / A[X]` is a scalar tower
792+
then so is `K / k / RatFunc A`. -/
793+
instance (A k K : Type*) [CommRing A] [IsDomain A] [Field k] [Field K] [Algebra A[X] k]
794+
[Algebra A[X] K] [SMul k K] [FaithfulSMul A[X] k] [FaithfulSMul A[X] K]
795+
[IsScalarTower A[X] k K] : IsScalarTower (RatFunc A) k K where
796+
smul_assoc a b c := by
797+
induction a using RatFunc.induction_on with | f p q hq =>
798+
rw [← smul_right_inj hq]
799+
simp_rw [← smul_assoc, Algebra.smul_def q]
800+
field_simp [hq]
801+
simp
802+
803+
end IsScalarTower
804+
776805
end IsDomain
777806

778807
end IsFractionRing

0 commit comments

Comments
 (0)