Skip to content

Feat/projective with seminorms#41932

Draft
mpacholski wants to merge 41 commits into
leanprover-community:masterfrom
mpacholski:feat/projective-with-seminorms
Draft

Feat/projective with seminorms#41932
mpacholski wants to merge 41 commits into
leanprover-community:masterfrom
mpacholski:feat/projective-with-seminorms

Conversation

@mpacholski

Copy link
Copy Markdown

Open in Gitpod

mpacholski and others added 30 commits July 13, 2026 21:33
…arMap₁₂_add` and `toLinearMap₁₂_smul`

Prove that the projection `toLinearMap₁₂` (which strips the topology from a continuous semibilinear map) preserves addition and scalar multiplication, and mark both lemmas with `@[simp]`.
…ap₁₂ and remove the now-duplicate toLinearMap₁₂_apply lemma
…arMap₁₂_apply to toLinearMap₁₂_apply_apply_apply and add @[simps apply] to definition
Port the `lifts` API from `PiTensorProduct` to the binary `TensorProduct` in `Mathlib/LinearAlgebra/TensorProduct/Basic.lean`.

This API provides the necessary machinery to represent any tensor element as a formal sum of pure generators in the free monoid, which is a key prerequisite for defining and proving properties of the binary projective seminorm.

Specifically, add:
- `FreeAddMonoid.toTensorProduct`: proves that the image of a free monoid element is the sum of its pure tensor components.
- `lifts`: defines the set of all valid monoid representations of a given tensor.
- `nonempty_lifts`: proves that every tensor has at least one representation.
- `lifts_zero`, `lifts_add`, `lifts_smul_left` and `lifts_smul_right`: establish the algebraic behavior of lifts under addition, zero, and scalar multiplication.
…e toLinearMap₁₂_apply to toLinearMap₁₂_apply_apply_apply and add @[simps apply] to definition"

This reverts commit dfaf63b.
…m on binary tensor products

Introduce the projective seminorm on the tensor product of two normed spaces,
mirroring the n-ary construction in `PiTensorProduct.ProjectiveSeminorm`.

- Create `Mathlib/Analysis/Normed/Module/TensorProduct/ProjectiveSeminorm.lean`.
- Define `TensorProduct.projectiveSeminormAux` on `FreeAddMonoid (X × Y)`.
- Define the `Norm` instance on `X ⊗[𝕜] Y` as the infimum of the auxiliary
  seminorm over all representations (lifts) of a tensor.
- Prove basic properties including `projectiveSeminormAux_nonneg`,
  `projectiveSeminormAux_add_le`, `projectiveSeminormAux_smul`, and
  `projectiveSeminorm_zero`.
…ap₁₂_apply_apply_apply, and assign it a hight priority
@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Jul 19, 2026
@github-actions

Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR.

Thank you again for joining our community.

@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown

PR summary ce4169d83a

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.Topology.Algebra.Module.TensorProduct.Projective (new file) 1594
Mathlib.Analysis.Normed.Module.TensorProduct.ProjectiveSeminorm (new file) 1678
Mathlib.Analysis.LocallyConvex.TensorProduct.Projective (new file) 1682

Declarations diff (regex)

+ ProjectiveSeminormFamily
+ ProjectiveTensorProduct
+ _root_.ContinuousLinearMap.le_opNorm_tprod
+ _root_.FreeAddMonoid.toTensorProduct
+ absConvexHulls
+ bddBelow_projectiveSemiNormAux
+ continuousAt_mk_apply_of_basis
+ continuousAt_tmul_right_of_basis
+ exists_smul_of_mem_nhds_zero
+ filterBasis
+ instTopologicalSpaceProjectiveTensorProduct
+ instance (x : M ⊗[R] N) : Nonempty ↑x.lifts := nonempty_subtype.mpr (nonempty_lifts x)
+ instance : AddCommGroup (M ⊗[R]π N) := addCommGroup
+ instance : LocallyConvexSpace R (M ⊗[R]π N) := LocallyConvexSpace.sInf fun _ ⟨_, h, _⟩ ↦ h
+ instance : Module R (M ⊗[R]π N) := instModule
+ instance : Norm (X ⊗[𝕜] Y)
+ instance : NormedSpace 𝕜 (X ⊗[𝕜] Y) := ⟨projectiveSeminorm_smul_le⟩
+ instance : SeminormedAddCommGroup (X ⊗[𝕜] Y)
+ lifts
+ lifts_add
+ lifts_smul
+ lifts_zero
+ locallyConvexSpace_of_basis
+ mem_lifts_iff
+ moduleFilterBasis
+ nhdsZero_hasBasis_absConvexHull_tmul
+ nonempty_lifts
+ norm_def
+ norm_eval_le_projectiveSeminorm
+ projectiveSeminorm
+ projectiveSeminormAux
+ projectiveSeminormAux_add_le
+ projectiveSeminormAux_nonneg
+ projectiveSeminormAux_smul
+ projectiveSeminorm_add_le
+ projectiveSeminorm_smul_le
+ projectiveSeminorm_tprod_le
+ projectiveSeminorm_zero
+ tendsto_tmul_nhds_zero_of_basis
+ tensorProductTopologies
+ toLinearMap₁₂_apply_apply_apply
- toLinearMap₁₂_apply

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean -- pending)

Computed after the build finishes.


No changes to strong technical debt.

Increase in weak tech debt: (relative, absolute) = (3.00, 0.00)
Current number Change Type (weak)
5016 3 exposed public sections

Current commit ce4169d83a
Reference commit f041774a2d

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.sh pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@mpacholski
mpacholski force-pushed the feat/projective-with-seminorms branch 8 times, most recently from 1c54034 to f121461 Compare July 20, 2026 10:29
…inorm family

Introduce `ProjectiveSeminormFamily` on the binary tensor product `X ⊗[𝕜] Y` of two polynormable spaces.

For each pair of indices `(i, j) : ιX × ιY`, the corresponding seminorm is constructed by:
- Temporarily equipping `X` and `Y` with the `SeminormedAddCommGroup` structures induced by `p i` and `q j`.
- Upgrading these locally to `NormedSpace` structures.
- Instantiating the binary `projectiveSeminorm` on the tensor product under these local structures.

feat(Topology/Algebra/Module): define projective tensor product of topological modules

Introduce the topological foundations for the projective tensor product of
topological modules, following the geometric formulation in Schaefer's
"Topological Vector Spaces".

- Define the type synonym `ProjectiveTensorProduct 𝕜 X Y` with scoped notation `X ⊗[𝕜]π Y`.
- Define the `TopologicalSpace` instance on `X ⊗[𝕜]π Y` as the supremum (`sSup`) of all topologies making the tensor product a locally convex topological module for which the canonical bilinear map `tmul` is continuous.

Specifically:
- Prove that the topology generated by `ProjectiveSeminormFamily p q` makes the canonical map `tmul` continuous.
- Establish the compatibility class `WithSeminorms (ProjectiveSeminormFamily p q)` on the topological space `M ⊗[R]π N` by showing the equivalence between the supremum topology and the seminorm-induced topology.

feat(Analysis/LocallyConvex/TensorProduct): show projective topology is induced by the projective seminorm family

Prove that the projective tensor topology on `X ⊗[𝕜]π Y` (defined via the `sSup` of compatible topologies making the canonical bilinear map `tmul` continuous) is strictly induced by the projective seminorm family `ProjectiveSeminormFamily p q`.

Specifically:
- Prove that the topology generated by `ProjectiveSeminormFamily p q` makes the canonical map `tmul` continuous.
- Establish the compatibility class `WithSeminorms (ProjectiveSeminormFamily p q)` on the topological space `M ⊗[R]π N` by showing the equivalence between the supremum topology and the seminorm-induced topology.

feat(Analysis/LocallyConvex/TensorProduct): show projective topology is induced by the projective seminorm family

Prove that the projective tensor topology on `X ⊗[𝕜]π Y` (defined via the `sSup` of compatible topologies making the canonical bilinear map `tmul` continuous) is strictly induced by the projective seminorm family `ProjectiveSeminormFamily p q`.

Specifically:
- Prove that the topology generated by `ProjectiveSeminormFamily p q` makes the canonical map `tmul` continuous.
- Establish the compatibility class `WithSeminorms (ProjectiveSeminormFamily p q)` on the topological space `M ⊗[R]π N` by showing the equivalence between the supremum topology and the seminorm-induced topology.
@mpacholski
mpacholski force-pushed the feat/projective-with-seminorms branch from f121461 to ce4169d Compare July 20, 2026 14:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant