Equivalences involving ℕ
#
This file defines some additional constructive equivalences using Encodable
and the pairing
function on ℕ
.
@[simp]
theorem
Equiv.boolProdNatEquivNat_symm_apply :
∀ (a : ℕ), Equiv.boolProdNatEquivNat.symm a = Nat.boddDiv2 a
@[simp]
theorem
Equiv.boolProdNatEquivNat_apply :
∀ (a : Bool × ℕ), Equiv.boolProdNatEquivNat a = Function.uncurry Nat.bit a
An equivalence between Bool × ℕ
and ℕ
, by mapping (true, x)
to 2 * x + 1
and
(false, x)
to 2 * x
.
Equations
- Equiv.boolProdNatEquivNat = { toFun := Function.uncurry Nat.bit, invFun := Nat.boddDiv2, left_inv := Equiv.boolProdNatEquivNat.proof_1, right_inv := Equiv.boolProdNatEquivNat.proof_2 }
Instances For
An equivalence between ℕ ⊕ ℕ
and ℕ
, by mapping (Sum.inl x)
to 2 * x
and (Sum.inr x)
to
2 * x + 1
.
Equations
Instances For
An equivalence between ℤ
and ℕ
, through ℤ ≃ ℕ ⊕ ℕ
and ℕ ⊕ ℕ ≃ ℕ
.
Equations
Instances For
An equivalence between α × α
and α
, given that there is an equivalence between α
and ℕ
.
Equations
- Equiv.prodEquivOfEquivNat e = Trans.trans (Trans.trans (Equiv.prodCongr e e) Nat.pairEquiv) e.symm