Documentation

Mathlib.Data.Nat.Pairing

Naturals pairing function #

This file defines a pairing function for the naturals as follows:

 0  1  4  9 16
 2  3  5 10 17
 6  7  8 11 18
12 13 14 15 19
20 21 22 23 24

It has the advantage of being monotone in both directions and sending ⟦0, n^2 - 1⟧ to ⟦0, n - 1⟧².

def Nat.pair (a b : ) :

Pairing function for the natural numbers.

Equations
def Nat.unpair (n : ) :

Unpairing function for the natural numbers.

Equations
@[simp]
theorem Nat.pair_unpair (n : ) :
pair (unpair n).1 (unpair n).2 = n
theorem Nat.pair_unpair' {n a b : } (H : unpair n = (a, b)) :
pair a b = n
@[simp]
theorem Nat.unpair_pair (a b : ) :
unpair (pair a b) = (a, b)

An equivalence between ℕ × ℕ and .

Equations
@[simp]
theorem Nat.pair_eq_pair {a b c d : } :
pair a b = pair c d a = c b = d
theorem Nat.unpair_lt {n : } (n1 : 1 n) :
(unpair n).1 < n
@[simp]
theorem Nat.unpair_zero :
unpair 0 = 0
theorem Nat.unpair_left_le (n : ) :
(unpair n).1 n
theorem Nat.left_le_pair (a b : ) :
a pair a b
theorem Nat.right_le_pair (a b : ) :
b pair a b
theorem Nat.unpair_right_le (n : ) :
(unpair n).2 n
theorem Nat.pair_lt_pair_left {a₁ a₂ : } (b : ) (h : a₁ < a₂) :
pair a₁ b < pair a₂ b
theorem Nat.pair_lt_pair_right (a : ) {b₁ b₂ : } (h : b₁ < b₂) :
pair a b₁ < pair a b₂
theorem Nat.pair_lt_max_add_one_sq (m n : ) :
pair m n < (m n + 1) ^ 2
theorem Nat.max_sq_add_min_le_pair (m n : ) :
(m n) ^ 2 + m n pair m n
theorem Nat.add_le_pair (m n : ) :
m + n pair m n
theorem Nat.unpair_add_le (n : ) :
(unpair n).1 + (unpair n).2 n
theorem iSup_unpair {α : Type u_1} [CompleteLattice α] (f : α) :
⨆ (n : ), f (Nat.unpair n).1 (Nat.unpair n).2 = ⨆ (i : ), ⨆ (j : ), f i j
theorem iInf_unpair {α : Type u_1} [CompleteLattice α] (f : α) :
⨅ (n : ), f (Nat.unpair n).1 (Nat.unpair n).2 = ⨅ (i : ), ⨅ (j : ), f i j
theorem Set.iUnion_unpair_prod {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} :
⋃ (n : ), s (Nat.unpair n).1 ×ˢ t (Nat.unpair n).2 = (⋃ (n : ), s n) ×ˢ ⋃ (n : ), t n
theorem Set.iUnion_unpair {α : Type u_1} (f : Set α) :
⋃ (n : ), f (Nat.unpair n).1 (Nat.unpair n).2 = ⋃ (i : ), ⋃ (j : ), f i j
theorem Set.iInter_unpair {α : Type u_1} (f : Set α) :
⋂ (n : ), f (Nat.unpair n).1 (Nat.unpair n).2 = ⋂ (i : ), ⋂ (j : ), f i j