Equivalences involving ℕ #
This file defines some additional constructive equivalences using Encodable and the pairing
function on ℕ.
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
@[simp]
@[simp]
An equivalence between ℕ ⊕ ℕ and ℕ, by mapping (Sum.inl x) to 2 * x and (Sum.inr x) to
2 * x + 1.
Instances For
@[simp]
An equivalence between ℤ and ℕ, through ℤ ≃ ℕ ⊕ ℕ and ℕ ⊕ ℕ ≃ ℕ.
Instances For
An equivalence between α × α and α, given that there is an equivalence between α and ℕ.
Equations
- e.prodEquivOfEquivNat = Trans.trans (Trans.trans (e.prodCongr e) Nat.pairEquiv) e.symm