@@ -8,6 +8,7 @@ import Mathlib.Algebra.CharP.Quotient
88import Mathlib.LinearAlgebra.CliffordAlgebra.Contraction
99import Mathlib.RingTheory.MvPolynomial.Basic
1010import Mathlib.RingTheory.MvPolynomial.Ideal
11+ import Mathlib.Tactic.Ring.NamePolyVars
1112
1213/-! # `algebraMap R (CliffordAlgebra Q)` is not always injective.
1314
@@ -34,36 +35,39 @@ noncomputable section
3435open LinearMap (BilinForm)
3536open LinearMap (BilinMap)
3637
38+ name_poly_vars X, Y, Z over ZMod 2
39+
3740namespace Q60596
3841
3942open MvPolynomial
4043
4144/-- The monomial ideal generated by terms of the form $x_ix_i$. -/
4245def kIdeal : Ideal (MvPolynomial (Fin 3 ) (ZMod 2 )) :=
43- Ideal.span (Set.range fun i => (X i * X i : MvPolynomial (Fin 3 ) (ZMod 2 )))
46+ Ideal.span (Set.range fun i =>
47+ (MvPolynomial.X i * MvPolynomial.X i : MvPolynomial (Fin 3 ) (ZMod 2 )))
4448
4549theorem mem_kIdeal_iff (x : MvPolynomial (Fin 3 ) (ZMod 2 )) :
4650 x ∈ kIdeal ↔ ∀ m : Fin 3 →₀ ℕ, m ∈ x.support → ∃ i, 2 ≤ m i := by
4751 have :
4852 kIdeal = Ideal.span ((monomial · (1 : ZMod 2 )) '' Set.range (Finsupp.single · 2 )) := by
49- simp_rw [kIdeal, X, monomial_mul, one_mul, ← Finsupp.single_add, ← Set.range_comp,
53+ simp_rw [kIdeal, MvPolynomial. X, monomial_mul, one_mul, ← Finsupp.single_add, ← Set.range_comp,
5054 Function.comp_def]
5155 rw [this, mem_ideal_span_monomial_image]
5256 simp
5357
54- theorem X0_X1_X2_notMem_kIdeal : (X 0 * X 1 * X 2 : MvPolynomial (Fin 3 ) (ZMod 2 )) ∉ kIdeal := by
58+ theorem X_Y_Z_notMem_kIdeal : (X * Y * Z : MvPolynomial (Fin 3 ) (ZMod 2 )) ∉ kIdeal := by
5559 intro h
5660 simp_rw [mem_kIdeal_iff, support_mul_X, support_X, Finset.map_singleton, addRightEmbedding_apply,
5761 Finset.mem_singleton, forall_eq, ← Fin.sum_univ_three fun i => Finsupp.single i 1 ,
5862 ← Finsupp.equivFunOnFinite_symm_eq_sum] at h
5963 contradiction
6064
61- @[deprecated (since := "2025-05-23")] alias X0_X1_X2_not_mem_kIdeal := X0_X1_X2_notMem_kIdeal
65+ @[deprecated (since := "2025-05-23")] alias X_Y_Z_not_mem_kIdeal := X_Y_Z_notMem_kIdeal
6266
63- theorem mul_self_mem_kIdeal_of_X0_X1_X2_mul_mem {x : MvPolynomial (Fin 3 ) (ZMod 2 )}
64- (h : X 0 * X 1 * X 2 * x ∈ kIdeal) : x * x ∈ kIdeal := by
67+ theorem mul_self_mem_kIdeal_of_X_Y_Z_mul_mem {x : MvPolynomial (Fin 3 ) (ZMod 2 )}
68+ (h : X * Y * Z * x ∈ kIdeal) : x * x ∈ kIdeal := by
6569 rw [mem_kIdeal_iff] at h
66- have : x ∈ Ideal.span ((X : Fin 3 → MvPolynomial _ (ZMod 2 )) '' Set.univ) := by
70+ have : x ∈ Ideal.span ((MvPolynomial. X : Fin 3 → MvPolynomial _ (ZMod 2 )) '' Set.univ) := by
6771 rw [mem_ideal_span_X_image]
6872 intro m hm
6973 simp_rw [mul_assoc, support_X_mul, Finset.map_map, Finset.mem_map,
@@ -127,11 +131,11 @@ theorem sq_zero_of_αβγ_mul {x : K} : α * β * γ * x = 0 → x * x = 0 := by
127131 induction x using Quotient.inductionOn'
128132 change Ideal.Quotient.mk _ _ = 0 → Ideal.Quotient.mk _ _ = 0
129133 rw [Ideal.Quotient.eq_zero_iff_mem, Ideal.Quotient.eq_zero_iff_mem]
130- exact mul_self_mem_kIdeal_of_X0_X1_X2_mul_mem
134+ exact mul_self_mem_kIdeal_of_X_Y_Z_mul_mem
131135
132136/-- Though `αβγ` is not itself zero -/
133137theorem αβγ_ne_zero : α * β * γ ≠ 0 := fun h =>
134- X0_X1_X2_notMem_kIdeal <| Ideal.Quotient.eq_zero_iff_mem.1 h
138+ X_Y_Z_notMem_kIdeal <| Ideal.Quotient.eq_zero_iff_mem.1 h
135139
136140/-- The 1-form on $K^3$, the kernel of which we will take a quotient by.
137141
0 commit comments