Skip to content
Closed
Changes from 7 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
2822f1b
feat(GroupTheory/Perm/Fin): extension of injective Fin functions to p…
cameronfreer Jan 30, 2026
4041858
style(GroupTheory/Perm/Fin): simplify docstrings for extension lemmas
cameronfreer Jan 30, 2026
736c074
refactor(GroupTheory/Perm/Fin): derive m ≤ n from injectivity
cameronfreer Jan 30, 2026
098a34e
style(GroupTheory/Perm/Fin): remove redundant docstrings
cameronfreer Jan 30, 2026
362b758
doc(GroupTheory/Perm/Fin): mention agreement property in docstring
cameronfreer Jan 30, 2026
b90cae9
chore(GroupTheory/Perm/Fin): remove StrictMono version of extension l…
cameronfreer Feb 3, 2026
ea08732
chore(GroupTheory/Perm/Fin): remove redundant Fintype import
cameronfreer Feb 3, 2026
7142bc4
feat(Logic/Equiv/Fintype): add Perm.exists_extending_pair
cameronfreer Feb 3, 2026
a5a7118
refactor(GroupTheory/Perm/Fin): use exists_extending_pair
cameronfreer Feb 3, 2026
499e5d2
golf(Logic/Equiv/Fintype): shorten exists_extending_pair proof
cameronfreer Feb 3, 2026
2290eec
fix(Logic/Equiv/Fintype): remove unused Finite α hypothesis
cameronfreer Feb 3, 2026
8368fb4
golf(GroupTheory/GroupAction/MultipleTransitivity): shorten isMultipl…
cameronfreer Feb 17, 2026
a515dd8
feat(GroupTheory/GroupAction/MultipleTransitivity): generalize exists…
cameronfreer Feb 17, 2026
6efac91
docs(Logic/Equiv/Fintype): fix docstring for exists_extending_pair
cameronfreer Feb 17, 2026
9c65ab6
chore(GroupTheory/Perm/Fin): remove exists_extending_injective
cameronfreer Feb 17, 2026
e979816
refactor(MultipleTransitivity): rename and add embedding wrapper
cameronfreer Feb 17, 2026
16b5c5b
[pre-commit.ci lite] apply automatic fixes
pre-commit-ci-lite[bot] Feb 17, 2026
9f501e8
feat(Logic/Equiv/Fintype): generalize toCompl from [Finite α] to [Fin…
cameronfreer Feb 18, 2026
ef7b66b
golf(Logic/Equiv/Fintype): replace grind with term proofs in toCompl
cameronfreer Feb 18, 2026
5c41f1c
chore(MultipleTransitivity): remove redundant exists_extending_pair_o…
cameronfreer Feb 18, 2026
3c6b4ff
golf(Logic/Equiv/Fintype): minor cleanup in toCompl proof
cameronfreer Feb 18, 2026
ccb15a3
replace refine with exact in Mathlib/Logic/Equiv/Fintype.lean
cameronfreer Feb 18, 2026
be39990
replace haveI with have in Mathlib/Logic/Equiv/Fintype.lean
cameronfreer Feb 18, 2026
f4a5fc8
merge: resolve conflict with upstream master
cameronfreer Feb 23, 2026
906674e
Merge branch 'master' into feat/perm-extend-injective-fin
cameronfreer Mar 7, 2026
7fced4a
fix: repair extendSubtype_apply_of_not_mem proof and use variable scope
cameronfreer Mar 7, 2026
bf75084
golf: simplify extendSubtype_mem and extendSubtype_apply_of_not_mem
cameronfreer Mar 7, 2026
df42b8c
revert: keep convert/rw for extendSubtype_mem
cameronfreer Mar 7, 2026
7694c32
Merge branch 'master' into feat/perm-extend-injective-fin
cameronfreer Mar 16, 2026
fe83e6a
Merge branch 'master' into feat/perm-extend-injective-fin
cameronfreer Apr 1, 2026
75f9bd2
refactor: extract setDiffEquiv and fix lint warnings
cameronfreer Apr 2, 2026
fc2de20
golf: simplify exists_map_finset_eq using eq_of_subset_of_card_le
cameronfreer Apr 2, 2026
8691629
style: convert toCompl from tactic mode to term mode
cameronfreer Apr 2, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions Mathlib/GroupTheory/Perm/Fin.lean
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ Authors: Eric Wieser, Yi Yuan
-/
module

public import Mathlib.Data.Fin.Pigeonhole
public import Mathlib.GroupTheory.Perm.Cycle.Type
public import Mathlib.GroupTheory.Perm.Option
public import Mathlib.Logic.Equiv.Fin.Rotate
Expand Down Expand Up @@ -523,3 +524,16 @@ theorem Equiv.Perm.prod_Ioi_comp_eq_sign_mul_prod {R : Type*} [CommRing R]
apply Finset.prod_comm' (by simp)

end Sign

section Extension

/-! ### Extension of injective functions to permutations -/

/-- Injective `k : Fin m → Fin n` extends to a permutation agreeing with `k` on `Fin.castLE`. -/
theorem Equiv.Perm.exists_extending_injective {m n : ℕ} (k : Fin m → Fin n)
(hk : Function.Injective k) :
∃ σ : Perm (Fin n), ∀ i : Fin m, σ (Fin.castLE (Fin.le_of_injective k hk) i) = k i :=
let e := (Fin.castLEquiv (Fin.le_of_injective k hk)).symm.trans (Equiv.ofInjective k hk)
⟨e.extendSubtype, fun i => Equiv.extendSubtype_apply_of_mem e _ i.isLt⟩

end Extension
Loading