English
If A,B are flat R-algebras and their tensor product is a field, then at least one of A,B is algebraic over R.
Русский
Если A,B плоские над R и A ⊗_R B — поле, то хотя бы одно из A,B алгебраично над R.
LaTeX
$$$\\text{IsField}(A\\otimes_R B) \\Rightarrow (\\text{Algebraic}_R(A) \\lor \\text{Algebraic}_R(B))$$$
Lean4
/-- If `A` and `B` are flat `R`-algebras, both of them are transcendental, then `A ⊗[R] B` cannot
be a field. -/
theorem _root_.Algebra.TensorProduct.not_isField_of_transcendental (A : Type v) [CommRing A] (B : Type w) [CommRing B]
[Algebra R A] [Algebra R B] [Module.Flat R A] [Module.Flat R B] [Algebra.Transcendental R A]
[Algebra.Transcendental R B] : ¬IsField (A ⊗[R] B) := fun H ↦
by
letI := H.toField
obtain ⟨a, hta⟩ := ‹Algebra.Transcendental R A›
obtain ⟨b, htb⟩ := ‹Algebra.Transcendental R B›
have ha : Function.Injective (algebraMap R A) := Algebra.injective_of_transcendental
have hb : Function.Injective (algebraMap R B) := Algebra.injective_of_transcendental
let fa : A →ₐ[R] A ⊗[R] B := Algebra.TensorProduct.includeLeft
let fb : B →ₐ[R] A ⊗[R] B := Algebra.TensorProduct.includeRight
have hfa : Function.Injective fa := Algebra.TensorProduct.includeLeft_injective hb
have hfb : Function.Injective fb := Algebra.TensorProduct.includeRight_injective ha
haveI := hfa.isDomain fa.toRingHom
haveI := hfb.isDomain fb.toRingHom
haveI := ha.isDomain _
haveI : Module.Flat R (toSubmodule fa.range) := .of_linearEquiv (AlgEquiv.ofInjective fa hfa).symm.toLinearEquiv
have key1 : Module.rank R ↥(fa.range ⊓ fb.range) ≤ 1 := (include_range R A B).rank_inf_le_one_of_flat_left
let ga : R[X] →ₐ[R] A := aeval a
let gb : R[X] →ₐ[R] B := aeval b
let gab := fa.comp ga
replace hta : Function.Injective ga := transcendental_iff_injective.1 hta
replace htb : Function.Injective gb := transcendental_iff_injective.1 htb
have htab : Function.Injective gab := hfa.comp hta
algebraize_only [ga.toRingHom, gb.toRingHom]
let f := Algebra.TensorProduct.mapOfCompatibleSMul R[X] R A B
haveI := Algebra.TensorProduct.nontrivial_of_algebraMap_injective_of_isDomain R[X] A B hta htb
have hf : Function.Injective f := RingHom.injective _
have key2 : gab.range ≤ fa.range ⊓ fb.range :=
by
simp_rw [gab, ga, ← aeval_algHom]
rw [Algebra.TensorProduct.includeLeft_apply, ← Algebra.adjoin_singleton_eq_range_aeval]
simp_rw [Algebra.adjoin_le_iff, Set.singleton_subset_iff, Algebra.coe_inf, Set.mem_inter_iff, AlgHom.coe_range,
Set.mem_range]
refine ⟨⟨a, by simp [fa]⟩, ⟨b, hf ?_⟩⟩
simp_rw [fb, Algebra.TensorProduct.includeRight_apply, f, Algebra.TensorProduct.mapOfCompatibleSMul_tmul]
convert ← (TensorProduct.smul_tmul (R := R[X]) (R' := R[X]) (M := A) (N := B) X 1 1).symm <;>
(simp_rw [Algebra.smul_def, mul_one]; exact aeval_X _)
have key3 :=
(Subalgebra.inclusion key2).comp (AlgEquiv.ofInjective gab htab).toAlgHom |>.toLinearMap.lift_rank_le_of_injective
((Subalgebra.inclusion_injective key2).comp (AlgEquiv.injective _))
have := lift_uzero.{u} _ ▸ (basisMonomials R).mk_eq_rank.symm
simp only [this, mk_eq_aleph0, lift_aleph0, aleph0_le_lift] at key3
exact (key3.trans key1).not_gt one_lt_aleph0