Documentation

Mathlib.Logic.Equiv.Nat

Equivalences involving #

This file defines some additional constructive equivalences using Encodable and the pairing function on .

def Equiv.boolProdNatEquivNat :
Bool ×

An equivalence between Bool × ℕ and , by mapping (true, x) to 2 * x + 1 and (false, x) to 2 * x.

Instances For
    @[simp]
    theorem Equiv.boolProdNatEquivNat_apply (a✝ : Bool × ) :
    boolProdNatEquivNat a✝ = Function.uncurry Nat.bit a✝
    def Equiv.natSumNatEquivNat :

    An equivalence between ℕ ⊕ ℕ and , by mapping (Sum.inl x) to 2 * x and (Sum.inr x) to 2 * x + 1.

    Instances For
      @[simp]
      theorem Equiv.natSumNatEquivNat_symm_apply (a✝ : ) :
      natSumNatEquivNat.symm a✝ = if a✝.bodd = true then Sum.inr a✝.div2 else Sum.inl a✝.div2
      @[simp]
      theorem Equiv.natSumNatEquivNat_apply :
      natSumNatEquivNat = Sum.elim (fun (x : ) => 2 * x) fun (x : ) => 2 * x + 1
      def Equiv.intEquivNat :

      An equivalence between and , through ℤ ≃ ℕ ⊕ ℕ and ℕ ⊕ ℕ ≃ ℕ.

      Instances For
        def Equiv.prodEquivOfEquivNat {α : Type u_1} (e : α ) :
        α × α α

        An equivalence between α × α and α, given that there is an equivalence between α and .

        Instances For