Skip to content

feat(CategoryTheory): pasting for kan extensions#41530

Open
FernandoChu wants to merge 4 commits into
leanprover-community:masterfrom
FernandoChu:paste
Open

feat(CategoryTheory): pasting for kan extensions#41530
FernandoChu wants to merge 4 commits into
leanprover-community:masterfrom
FernandoChu:paste

Conversation

@FernandoChu

Copy link
Copy Markdown
Collaborator

This PR constructs pasting for left lifts and shows the pasting lemma for (abs) left kan lifts. This is done for all four notions of left/right lifts/extensions.

This is needed for the oo-cosmos project.


AI disclosure. Claude was used in defining the API for the left lift case. After manually fixing its bad proofs/definitions/docstrings, Claude was later asked to replicate this for the other three cases, which I again finetuned.

@FernandoChu FernandoChu requested a review from dagurtomas July 9, 2026 09:21
@github-actions github-actions Bot added large-import Automatically added label for PRs with a significant increase in transitive imports t-category-theory Category theory labels Jul 9, 2026
@github-actions

github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

PR summary 1a11b5fbf7

Import changes exceeding 2%

% File
+2.01% Mathlib.CategoryTheory.Bicategory.Extension
+5.57% Mathlib.CategoryTheory.Bicategory.Kan.IsKan

Import changes for modified files

Dependency changes

File Base Count Head Count Change
Mathlib.CategoryTheory.Bicategory.Kan.IsKan 449 474 +25 (+5.57%)
Mathlib.CategoryTheory.Bicategory.Extension 448 457 +9 (+2.01%)
Import changes for all files
Files Import difference
Mathlib.CategoryTheory.Bicategory.Kan.Adjunction 4
Mathlib.CategoryTheory.Bicategory.Extension 9
Mathlib.CategoryTheory.Bicategory.Kan.HasKan 13
Mathlib.CategoryTheory.Bicategory.Kan.IsKan 25

Declarations diff (regex)

+ IsAbsKan
+ fac
+ hom_ext
+ isKan
+ mk
+ ofIsoAbsKan
+ ofIsoKan
+ uniqueUpToIso
+ uniqueUpToIso_hom_left
+ uniqueUpToIso_inv_left
+ whisker
+ whiskerHom
+ whiskerIdCancel
+ whiskerIso
+ whiskerOfCommute
+ whiskerOfCompIdIsoSelf
+ whisker_counit
+ whisker_extension
+ whiskering
++ IsKan.ofIsKanTop_extension
++ IsKan.ofIsKanTop_lift
++ desc
++ homMk_left
++ homMk_right
++ ofCompId
++ ofIso_counit
++ ofIso_extension
++ ofIso_lift
++ ofIso_unit
++ paste_counit
++ paste_extension
++ paste_lift
++ paste_unit
++++ IsAbsKan.ofPaste
++++ IsAbsKan.paste
++++ IsKan.ofIsKanTop
++++ IsKan.ofIsKanTop_fac
++++ IsKan.ofPaste
++++ IsKan.paste
++++ isAbsKanEquivIsAbsKanPaste
++++ isKanEquivIsKanPaste
++++ mapIso
++++ paste
++++ pasteWhiskerIso
++++ whiskerOfIso
++++++++++++ ofIso

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)

Lean-aware diff — post-build, computed from the Lean environment (commit 1a11b5f).

  • +118 new declarations
  • −0 removed declarations
+CategoryTheory.Bicategory.LeftExtension.IsAbsKan.ofIso
+CategoryTheory.Bicategory.LeftExtension.IsAbsKan.ofPaste
+CategoryTheory.Bicategory.LeftExtension.IsAbsKan.paste
+CategoryTheory.Bicategory.LeftExtension.IsKan.ofIsKanTop
+CategoryTheory.Bicategory.LeftExtension.IsKan.ofIsKanTop_extension
+CategoryTheory.Bicategory.LeftExtension.IsKan.ofIsKanTop_fac
+CategoryTheory.Bicategory.LeftExtension.IsKan.ofIso
+CategoryTheory.Bicategory.LeftExtension.IsKan.ofPaste
+CategoryTheory.Bicategory.LeftExtension.IsKan.paste
+CategoryTheory.Bicategory.LeftExtension.homMk_right
+CategoryTheory.Bicategory.LeftExtension.isAbsKanEquivIsAbsKanPaste
+CategoryTheory.Bicategory.LeftExtension.isKanEquivIsKanPaste
+CategoryTheory.Bicategory.LeftExtension.mapIso
+CategoryTheory.Bicategory.LeftExtension.ofIso
+CategoryTheory.Bicategory.LeftExtension.ofIso_extension
+CategoryTheory.Bicategory.LeftExtension.ofIso_unit
+CategoryTheory.Bicategory.LeftExtension.paste
+CategoryTheory.Bicategory.LeftExtension.pasteWhiskerIso
+CategoryTheory.Bicategory.LeftExtension.paste_extension
+CategoryTheory.Bicategory.LeftExtension.paste_unit
+CategoryTheory.Bicategory.LeftExtension.whiskerOfIso
+CategoryTheory.Bicategory.LeftLift.IsAbsKan.ofIso
+CategoryTheory.Bicategory.LeftLift.IsAbsKan.ofPaste
+CategoryTheory.Bicategory.LeftLift.IsAbsKan.paste
+CategoryTheory.Bicategory.LeftLift.IsKan.ofIsKanTop
+CategoryTheory.Bicategory.LeftLift.IsKan.ofIsKanTop_fac
+CategoryTheory.Bicategory.LeftLift.IsKan.ofIsKanTop_lift
+CategoryTheory.Bicategory.LeftLift.IsKan.ofIso
+CategoryTheory.Bicategory.LeftLift.IsKan.ofPaste
+CategoryTheory.Bicategory.LeftLift.IsKan.paste
+CategoryTheory.Bicategory.LeftLift.homMk_right
+CategoryTheory.Bicategory.LeftLift.isAbsKanEquivIsAbsKanPaste
+CategoryTheory.Bicategory.LeftLift.isKanEquivIsKanPaste
+CategoryTheory.Bicategory.LeftLift.mapIso
+CategoryTheory.Bicategory.LeftLift.ofIso
+CategoryTheory.Bicategory.LeftLift.ofIso_lift
+CategoryTheory.Bicategory.LeftLift.ofIso_unit
+CategoryTheory.Bicategory.LeftLift.paste
+CategoryTheory.Bicategory.LeftLift.pasteWhiskerIso
+CategoryTheory.Bicategory.LeftLift.paste_lift
+CategoryTheory.Bicategory.LeftLift.paste_unit
+CategoryTheory.Bicategory.LeftLift.whiskerOfIso
+CategoryTheory.Bicategory.RightExtension.IsAbsKan
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.desc
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.isKan
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.ofIso
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.ofIsoAbsKan
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.ofPaste
+CategoryTheory.Bicategory.RightExtension.IsAbsKan.paste
+CategoryTheory.Bicategory.RightExtension.IsKan.desc
+CategoryTheory.Bicategory.RightExtension.IsKan.fac
+CategoryTheory.Bicategory.RightExtension.IsKan.fac_assoc
+CategoryTheory.Bicategory.RightExtension.IsKan.hom_ext
+CategoryTheory.Bicategory.RightExtension.IsKan.mk
+CategoryTheory.Bicategory.RightExtension.IsKan.ofCompId
+CategoryTheory.Bicategory.RightExtension.IsKan.ofIsKanTop
+CategoryTheory.Bicategory.RightExtension.IsKan.ofIsKanTop_extension
+CategoryTheory.Bicategory.RightExtension.IsKan.ofIsKanTop_fac
+CategoryTheory.Bicategory.RightExtension.IsKan.ofIso
+CategoryTheory.Bicategory.RightExtension.IsKan.ofIsoKan
+CategoryTheory.Bicategory.RightExtension.IsKan.ofPaste
+CategoryTheory.Bicategory.RightExtension.IsKan.paste
+CategoryTheory.Bicategory.RightExtension.IsKan.uniqueUpToIso
+CategoryTheory.Bicategory.RightExtension.IsKan.uniqueUpToIso_hom_left
+CategoryTheory.Bicategory.RightExtension.IsKan.uniqueUpToIso_inv_left
+CategoryTheory.Bicategory.RightExtension.IsKan.whiskerOfCommute
+CategoryTheory.Bicategory.RightExtension.homMk.congr_simp
+CategoryTheory.Bicategory.RightExtension.homMk_left
+CategoryTheory.Bicategory.RightExtension.isAbsKanEquivIsAbsKanPaste
+CategoryTheory.Bicategory.RightExtension.isKanEquivIsKanPaste
+CategoryTheory.Bicategory.RightExtension.mapIso
+CategoryTheory.Bicategory.RightExtension.ofCompId
+CategoryTheory.Bicategory.RightExtension.ofCompId_hom
+CategoryTheory.Bicategory.RightExtension.ofCompId_left
+CategoryTheory.Bicategory.RightExtension.ofCompId_right_as
+CategoryTheory.Bicategory.RightExtension.ofIso
+CategoryTheory.Bicategory.RightExtension.ofIso_counit
+CategoryTheory.Bicategory.RightExtension.ofIso_extension
+CategoryTheory.Bicategory.RightExtension.paste
+CategoryTheory.Bicategory.RightExtension.pasteWhiskerIso
+CategoryTheory.Bicategory.RightExtension.paste_counit
+CategoryTheory.Bicategory.RightExtension.paste_extension
+CategoryTheory.Bicategory.RightExtension.whisker
+CategoryTheory.Bicategory.RightExtension.whiskerHom
+CategoryTheory.Bicategory.RightExtension.whiskerHom_left
+CategoryTheory.Bicategory.RightExtension.whiskerIdCancel
+CategoryTheory.Bicategory.RightExtension.whiskerIdCancel_left
+CategoryTheory.Bicategory.RightExtension.whiskerIso
+CategoryTheory.Bicategory.RightExtension.whiskerOfCompIdIsoSelf
+CategoryTheory.Bicategory.RightExtension.whiskerOfCompIdIsoSelf_hom_left
+CategoryTheory.Bicategory.RightExtension.whiskerOfCompIdIsoSelf_inv_left
+CategoryTheory.Bicategory.RightExtension.whiskerOfIso
+CategoryTheory.Bicategory.RightExtension.whisker_counit
+CategoryTheory.Bicategory.RightExtension.whisker_extension
+CategoryTheory.Bicategory.RightExtension.whiskering
+CategoryTheory.Bicategory.RightExtension.whiskering_map
+CategoryTheory.Bicategory.RightExtension.whiskering_obj
+CategoryTheory.Bicategory.RightLift.IsAbsKan.ofIso
+CategoryTheory.Bicategory.RightLift.IsAbsKan.ofPaste
+CategoryTheory.Bicategory.RightLift.IsAbsKan.paste
+CategoryTheory.Bicategory.RightLift.IsKan.ofIsKanTop
+CategoryTheory.Bicategory.RightLift.IsKan.ofIsKanTop_fac
+CategoryTheory.Bicategory.RightLift.IsKan.ofIsKanTop_lift
+CategoryTheory.Bicategory.RightLift.IsKan.ofIso
+CategoryTheory.Bicategory.RightLift.IsKan.ofPaste
+CategoryTheory.Bicategory.RightLift.IsKan.paste
+CategoryTheory.Bicategory.RightLift.homMk_left
+CategoryTheory.Bicategory.RightLift.isAbsKanEquivIsAbsKanPaste
+CategoryTheory.Bicategory.RightLift.isKanEquivIsKanPaste
+CategoryTheory.Bicategory.RightLift.mapIso
+CategoryTheory.Bicategory.RightLift.ofIso
+CategoryTheory.Bicategory.RightLift.ofIso_counit
+CategoryTheory.Bicategory.RightLift.ofIso_lift
+CategoryTheory.Bicategory.RightLift.paste
+CategoryTheory.Bicategory.RightLift.pasteWhiskerIso
+CategoryTheory.Bicategory.RightLift.paste_counit
+CategoryTheory.Bicategory.RightLift.paste_lift
+CategoryTheory.Bicategory.RightLift.whiskerOfIso

Increase in strong tech debt: (relative, absolute) = (5.43, 0.00)
Current number Change Type (strong)
4516 1 backward.defeqAttrib.useBackward
5669 11 backward.isDefEq.respectTransparency
No changes to weak technical debt.

Current commit 1a11b5fbf7
Reference commit f0630767e5

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).

@mathlib-dependent-issues mathlib-dependent-issues Bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Jul 9, 2026
@mathlib-dependent-issues

Copy link
Copy Markdown

This PR/issue depends on:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) large-import Automatically added label for PRs with a significant increase in transitive imports t-category-theory Category theory

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant