Finitely supported functions descend to quotients
DefinitionLindemannWeierstrass430_FinsuppQuotientlindemann-weierstrass-lean430-backportnumber-theorytranscendence
A finitely supported function on a type descends to its quotient when it is constant on each equivalence class. The construction records the descended support explicitly and proves evaluation at a quotient class agrees with the original function.
This utility is the finite-support interface used by the algebraic symmetrization in the Lindemann--Weierstrass proof.
Definition code
/-
Copyright (c) 2022 Yuyang Zhao. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yuyang Zhao
-/
import Mathlib.Data.Finsupp.Defs
/-!
# Lifts a `Finsupp` from an underlying type to a `Finsupp` on a quotient
-/
noncomputable section
open Finset Function
variable {α β : Type*}
namespace Quot
variable {r : α → α → Prop} [Zero β] (f : α →₀ β) (h : ∀ a b, r a b → f a = f b)
/-- Lift a function `α →₀ β` to `Quot r →₀ β`. -/
protected def liftFinsupp : Quot r →₀ β := by
classical
refine ⟨image (mk r) f.support, Quot.lift f h, fun a => ⟨?_, ?_⟩⟩
· rw [mem_image]; rintro ⟨b, hb, rfl⟩; exact Finsupp.mem_support_iff.mp hb
· induction a using Quot.ind
rw [lift_mk _ h]
exact fun hb => mem_image_of_mem _ (Finsupp.mem_support_iff.mpr hb)
@[simp]
theorem liftFinsupp_mk (a : α) : Quot.liftFinsupp f h (Quot.mk r a) = f a :=
rfl
end Quot
namespace Quotient
variable {s : Setoid α} [Zero β] (f : α →₀ β) (h : ∀ a b, s a b → f a = f b)
/-- Lift a function `α →₀ β` to `Quot r →₀ β`. -/
protected def liftFinsupp : Quotient s →₀ β :=
Quot.liftFinsupp f h
@[simp]
theorem liftFinsupp_mk (a : α) : Quotient.liftFinsupp f h ⟦a⟧ = f a :=
rfl
end Quotient
Source
Yuyang Zhao, mathlib4 PR #28013, Lindemann--Weierstrass theorem, c5ea-compatible snapshot 5abb7c68488b527e4d7ecf5d7bbe085db8d2a388; https://github.com/leanprover-community/mathlib4/pull/28013. Mathematical source: Nathan Jacobson, Basic Algebra I, 2nd ed., §4.12, Theorem 4.22.