Documentation

Mathlib.Data.W.Constructions

Examples of W-types #

We take the view of W types as inductive types. Given α : Type and β : α → Type, the W type determined by this data, WType β, is the inductively with constructors from α and arities of each constructor a : α given by β a.

This file contains Nat and List as examples of W types.

Main results #

inductive WType.Natα :

The constructors for the naturals

Instances For

    The arity of the constructors for the naturals, zero takes no arguments, succ takes one

    Equations
      Instances For

        The isomorphism from the naturals to its corresponding WType

        Equations
          Instances For

            The isomorphism from the WType of the naturals to the naturals

            Equations
              Instances For

                The naturals are equivalent to their associated WType

                Equations
                  Instances For

                    WType.Natα is equivalent to PUnitPUnit. This is useful when considering the associated polynomial endofunctor.

                    Equations
                      Instances For
                        inductive WType.Listα (γ : Type u) :

                        The constructors for lists. There is "one constructor cons x for each x : γ", since we view List γ as

                        | nil : List γ
                        | cons x₀ : List γ → List γ
                        | cons x₁ : List γ → List γ
                        |   ⋮      γ many times
                        
                        Instances For
                          Equations
                            def WType.Listβ (γ : Type u) :
                            Listα γType u

                            The arities of each constructor for lists, nil takes no arguments, cons hd takes one

                            Equations
                              Instances For
                                instance WType.instInhabitedListβCons (γ : Type u) (hd : γ) :
                                Equations
                                  def WType.ofList (γ : Type u) :
                                  List γWType (Listβ γ)

                                  The isomorphism from lists to the WType construction of lists

                                  Equations
                                    Instances For
                                      def WType.toList (γ : Type u) :
                                      WType (Listβ γ)List γ

                                      The isomorphism from the WType construction of lists to lists

                                      Equations
                                        Instances For
                                          def WType.equivList (γ : Type u) :

                                          Lists are equivalent to their associated WType

                                          Equations
                                            Instances For

                                              WType.Listα is equivalent to γ with an extra point. This is useful when considering the associated polynomial endofunctor

                                              Equations
                                                Instances For