Generator formulas for direct-sum Fubini equivalences #
Small reusable lemmas for the three direct-sum operations used in orbit Fubini arguments: mapping each fiber, uncurrying a dependent pair of indices, and reindexing along an equivalence.
noncomputable def
MagnitudeConjecture.DirectSumFubini.mapRangeLinearEquiv
{R : Type uR}
[Semiring R]
{iota : Type uI}
{beta : iota → Type uM}
{gamma : iota → Type uT}
[(i : iota) → AddCommMonoid (beta i)]
[(i : iota) → Module R (beta i)]
[(i : iota) → AddCommMonoid (gamma i)]
[(i : iota) → Module R (gamma i)]
(e : (i : iota) → beta i ≃ₗ[R] gamma i)
:
DirectSum iota beta ≃ₗ[R] DirectSum iota gamma
Instances For
@[simp]
theorem
MagnitudeConjecture.DirectSumFubini.mapRangeLinearEquiv_of
{R : Type uR}
[Semiring R]
{iota : Type uI}
{beta : iota → Type uM}
{gamma : iota → Type uT}
[DecidableEq iota]
[(i : iota) → AddCommMonoid (beta i)]
[(i : iota) → Module R (beta i)]
[(i : iota) → AddCommMonoid (gamma i)]
[(i : iota) → Module R (gamma i)]
(e : (i : iota) → beta i ≃ₗ[R] gamma i)
(i : iota)
(x : beta i)
:
(mapRangeLinearEquiv e) ((DirectSum.of beta i) x) = (DirectSum.of gamma i) ((e i) x)
@[simp]
theorem
MagnitudeConjecture.DirectSumFubini.sigmaLcurryEquiv_symm_of_of
{R : Type uR}
[Semiring R]
{iota : Type uI}
{alpha : iota → Type uM}
{T : (i : iota) → alpha i → Type uT}
[DecidableEq iota]
[(i : iota) → DecidableEq (alpha i)]
[(i : iota) → (j : alpha i) → AddCommMonoid (T i j)]
[(i : iota) → (j : alpha i) → Module R (T i j)]
(i : iota)
(j : alpha i)
(x : T i j)
:
(DirectSum.sigmaLcurryEquiv R).symm
((DirectSum.of (fun (i : iota) => DirectSum (alpha i) (T i)) i) ((DirectSum.of (T i) j) x)) = (DirectSum.of (fun (p : (i : iota) × alpha i) => T p.fst p.snd) ⟨i, j⟩) x
@[simp]
theorem
MagnitudeConjecture.DirectSumFubini.reindexCastLinearEquiv_of
{R : Type uR}
[Semiring R]
{iota : Type uI}
{kappa : Type uM}
[DecidableEq iota]
[DecidableEq kappa]
(e : iota ≃ kappa)
{T : kappa → Type uT}
[(i : kappa) → AddCommMonoid (T i)]
[(i : kappa) → Module R (T i)]
(i : iota)
(x : T (e i))
:
(mapRangeLinearEquiv fun (j : kappa) => LinearEquiv.cast ⋯)
((DirectSum.lequivCongrLeft R e) ((DirectSum.of (fun (i : iota) => T (e i)) i) x)) = (DirectSum.of T (e i)) x