English
For a generator p ∈ α, IsSupported(of(p), s) holds exactly when p ∈ s.
Русский
Для генератора p ∈ α свойство IsSupported(of(p), s) истинно тогда и только тогда, когда p ∈ s.
LaTeX
$$$\\mathrm{IsSupported}(\\mathrm{of}(p), s) \\iff p \\in s$$$
Lean4
theorem isSupported_of {p} {s : Set α} : IsSupported (of p) s ↔ p ∈ s :=
suffices IsSupported (of p) s → p ∈ s from ⟨this, fun hps => Subring.subset_closure ⟨p, hps, rfl⟩⟩
fun hps : IsSupported (of p) s => by
classical
haveI := Classical.decPred s
have : ∀ x, IsSupported x s → ∃ n : ℤ, lift (fun a => if a ∈ s then (0 : ℤ[X]) else Polynomial.X) x = n :=
by
intro x hx
refine Subring.InClosure.recOn hx ?_ ?_ ?_ ?_
· use 1
rw [RingHom.map_one]
norm_cast
· use -1
rw [RingHom.map_neg, RingHom.map_one, Int.cast_neg, Int.cast_one]
· rintro _ ⟨z, hzs, rfl⟩ _ _
use 0
rw [RingHom.map_mul, lift_of, if_pos hzs, zero_mul]
norm_cast
· rintro x y ⟨q, hq⟩ ⟨r, hr⟩
refine ⟨q + r, ?_⟩
rw [RingHom.map_add, hq, hr]
norm_cast
specialize this (of p) hps
rw [lift_of] at this
split_ifs at this with h
· exact h
exfalso
apply Ne.symm Int.zero_ne_one
rcases this with ⟨w, H⟩
rw [← Polynomial.C_eq_intCast] at H
have : Polynomial.X.coeff 1 = (Polynomial.C ↑w).coeff 1 := by rw [H]; rfl
rwa [Polynomial.coeff_C, if_neg (one_ne_zero : 1 ≠ 0), Polynomial.coeff_X, if_pos rfl] at this