Skip Two Indices in Fin #
This file provides the Fin.skipTwo function which maps Fin n to Fin (n+2) by skipping
two specified indices.
Main definitions #
Fin.skipTwo i j hij- Giveni < jinFin (n+2), produces a functionFin n → Fin (n+2)that skips bothiandj
Main results #
Fin.skipTwo_injective-skipTwois injectiveFin.skipTwo_strictMono-skipTwois strictly monotoneFin.skipTwo_range- The range ofskipTwo i jis exactly{i, j}ᶜFin.skipTwo_ne_first-skipTwo i j k ≠ ifor allkFin.skipTwo_ne_second-skipTwo i j k ≠ jfor allkFin.skipTwo_inverse- Every element not equal toiorjis in the range
Implementation notes #
This module provides the canonical location for the Fin.skipTwo definition and its
API lemmas. Files that need skipTwo functionality (such as DesnanotJacobi.lean)
import this module and may define local abbreviations for convenience.
References #
The skipTwo function is the natural generalization of Fin.succAbove (which skips one index)
to skipping two indices. It arises in:
- Desnanot-Jacobi identity proofs (removing two rows/columns from a matrix)
- Pfaffian computations (perfect matching induction)
- Tiling decompositions (removing boundary elements)
theorem
Fin.skipTwo_injective
{n : ℕ}
(i j : Fin (n + 2))
(hij : i < j)
:
Function.Injective (i.skipTwo j hij)
skipTwo is injective.
theorem
Fin.skipTwo_strictMono
{n : ℕ}
(i j : Fin (n + 2))
(hij : i < j)
:
StrictMono (i.skipTwo j hij)
skipTwo is strictly monotone.