Documentation

ToMathlib.PFunctor.Lens.Basic

More properties about lenses between polynomial functors #

theorem heq_forall_iff {α : Sort u} {β γ : αSort v} (h : ∀ (a : α), β a = γ a) {f : (a : α) → β a} {g : (a : α) → γ a} :
f g ∀ (a : α), f a g a
theorem PFunctor.Lens.ext {P : PFunctor.{uA₁, uB₁}} {Q : PFunctor.{uA₂, uB₂}} (l₁ l₂ : P.Lens Q) (h₁ : ∀ (a : P.A), l₁.toFunA a = l₂.toFunA a) (h₂ : ∀ (a : P.A), l₁.toFunB a = Eq.rec (motive := fun (x : Q.A) (h : l₂.toFunA a = x) => Q.B xP.B a) (l₂.toFunB a) ) :
l₁ = l₂

The identity lens

Instances For

    Composition of lenses

    Instances For

      Composition of lenses

      Instances For
        structure PFunctor.Lens.Equiv (P : PFunctor.{uA₁, uB₁}) (Q : PFunctor.{uA₂, uB₂}) :
        Type (max (max (max uA₁ uA₂) uB₁) uB₂)

        An equivalence between two polynomial functors P and Q, using lenses. This corresponds to an isomorphism in the category PFunctor with Lens morphisms.

        Instances For
          theorem PFunctor.Lens.Equiv.ext {P : PFunctor.{uA₁, uB₁}} {Q : PFunctor.{uA₂, uB₂}} {x y : P ≃ₗ Q} (toLens : x.toLens = y.toLens) (invLens : x.invLens = y.invLens) :
          x = y

          An equivalence between two polynomial functors P and Q, using lenses. This corresponds to an isomorphism in the category PFunctor with Lens morphisms.

          Instances For

            The (unique) initial lens from the zero functor to any functor P.

            Instances For

              The (unique) terminal lens from any functor P to the unit functor 1.

              Instances For

                Alias of PFunctor.Lens.initial.


                The (unique) initial lens from the zero functor to any functor P.

                Instances For

                  Alias of PFunctor.Lens.terminal.


                  The (unique) terminal lens from any functor P to the unit functor 1.

                  Instances For

                    Left injection lens inl : P → P + Q

                    Instances For

                      Right injection lens inr : Q → P + Q

                      Instances For

                        Copairing of lenses [l₁, l₂]ₗ : P + Q → R

                        Instances For

                          Parallel application of lenses for coproduct l₁ ⊎ l₂ : P + Q → R + W

                          Instances For
                            def PFunctor.Lens.sigmaExists {I : Type v} {F : IPFunctor.{uA₁, uB₁}} {R : PFunctor.{uA₂, uB₂}} (l : (i : I) → (F i).Lens R) :
                            (sigma F).Lens R

                            Dependent copairing of lenses over sigma: Σ i, F i → R.

                            Instances For
                              def PFunctor.Lens.sigmaMap {I : Type v} {F : IPFunctor.{uA₁, uB₁}} {G : IPFunctor.{uA₂, uB₂}} (l : (i : I) → (F i).Lens (G i)) :
                              (sigma F).Lens (sigma G)

                              Pointwise mapping of lenses over sigma.

                              Instances For

                                Projection lens fst : P * Q → P

                                Instances For

                                  Projection lens snd : P * Q → Q

                                  Instances For

                                    Pairing of lenses ⟨l₁, l₂⟩ₗ : P → Q * R

                                    Instances For

                                      Parallel application of lenses for product l₁ ×ₗ l₂ : P * Q → R * W

                                      Instances For
                                        def PFunctor.Lens.piForall {I : Type v} {P : PFunctor.{uA₁, uB₁}} {F : IPFunctor.{uA₂, uB₂}} (l : (i : I) → P.Lens (F i)) :
                                        P.Lens (pi F)

                                        Dependent pairing of lenses into a pi: P → ∀ i, F i.

                                        Instances For
                                          def PFunctor.Lens.piMap {I : Type v} {F : IPFunctor.{uA₁, uB₁}} {G : IPFunctor.{uA₂, uB₂}} (l : (i : I) → (F i).Lens (G i)) :
                                          (pi F).Lens (pi G)

                                          Pointwise mapping of lenses over pi.

                                          Instances For

                                            Apply lenses to both sides of a composition: l₁ ◃ₗ l₂ : (P ◃ Q ⇆ R ◃ W)

                                            Instances For

                                              Apply lenses to both sides of a tensor / parallel product: l₁ ⊗ₗ l₂ : (P ⊗ Q ⇆ R ⊗ W)

                                              Instances For

                                                Lens to introduce X on the right: P → P ◃ X

                                                Instances For

                                                  Lens to introduce X on the left: P → X ◃ P

                                                  Instances For

                                                    Lens from P ◃ X to P

                                                    Instances For

                                                      Lens from X ◃ P to P

                                                      Instances For

                                                        Apply lenses to both sides of a composition: l₁ ◃ₗ l₂ : (P ◃ Q ⇆ R ◃ W)

                                                        Instances For

                                                          Parallel application of lenses for product l₁ ×ₗ l₂ : P * Q → R * W

                                                          Instances For

                                                            Parallel application of lenses for coproduct l₁ ⊎ l₂ : P + Q → R + W

                                                            Instances For

                                                              Apply lenses to both sides of a tensor / parallel product: l₁ ⊗ₗ l₂ : (P ⊗ Q ⇆ R ⊗ W)

                                                              Instances For
                                                                def PFunctor.Lens.enclose (P : PFunctor.{uA, uB}) :
                                                                Type (max uA uA₁ uB uB₁)

                                                                The type of lenses from a polynomial functor P to X

                                                                Instances For

                                                                  Helper lens for speedup

                                                                  Instances For

                                                                    The speedup lens operation: Lens (S y^S) P → Lens (S y^S) (P ◃ P)

                                                                    Instances For

                                                                      Commutativity of coproduct

                                                                      Instances For

                                                                        Associativity of coproduct

                                                                        Instances For

                                                                          Coproduct with 0 is identity (right)

                                                                          Instances For

                                                                            Coproduct with 0 is identity (left)

                                                                            Instances For

                                                                              Commutativity of product

                                                                              Instances For

                                                                                Associativity of product

                                                                                Instances For

                                                                                  Product with 1 is identity (right)

                                                                                  Instances For

                                                                                    Product with 1 is identity (left)

                                                                                    Instances For

                                                                                      Product with 0 is zero (right)

                                                                                      Instances For

                                                                                        Product with 0 is zero (left)

                                                                                        Instances For

                                                                                          Left distributive law for product over coproduct

                                                                                          Instances For

                                                                                            Right distributive law for coproduct over product

                                                                                            Instances For
                                                                                              theorem PFunctor.Lens.compMap_comp {P : PFunctor.{uA₁, uB₁}} {Q : PFunctor.{uA₂, uB₂}} {R : PFunctor.{uA₃, uB₃}} {P' : PFunctor.{uA₄, uB₄}} {Q' : PFunctor.{uA₅, uB₅}} {R' : PFunctor.{uA₆, uB₆}} (l₁ : P.Lens P') (l₂ : Q.Lens Q') (l₁' : P'.Lens R) (l₂' : Q'.Lens R') :
                                                                                              l₁' ∘ₗ l₁ ◃ₗ (l₂' ∘ₗ l₂) = l₁' ◃ₗ l₂' ∘ₗ (l₁ ◃ₗ l₂)

                                                                                              Associativity of composition

                                                                                              Instances For

                                                                                                Composition with X is identity (right)

                                                                                                Instances For

                                                                                                  Composition with X is identity (left)

                                                                                                  Instances For

                                                                                                    Distributivity of composition over coproduct on the right

                                                                                                    Instances For
                                                                                                      theorem PFunctor.Lens.tensorMap_comp {P : PFunctor.{uA₁, uB₁}} {Q : PFunctor.{uA₂, uB₂}} {R : PFunctor.{uA₃, uB₃}} {P' : PFunctor.{uA₄, uB₄}} {Q' : PFunctor.{uA₅, uB₅}} {R' : PFunctor.{uA₆, uB₆}} (l₁ : P.Lens P') (l₂ : Q.Lens Q') (l₁' : P'.Lens R) (l₂' : Q'.Lens R') :
                                                                                                      l₁' ∘ₗ l₁ ⊗ₗ (l₂' ∘ₗ l₂) = l₁' ⊗ₗ l₂' ∘ₗ (l₁ ⊗ₗ l₂)

                                                                                                      Commutativity of tensor product

                                                                                                      Instances For

                                                                                                        Associativity of tensor product

                                                                                                        Instances For

                                                                                                          Tensor product with X is identity (right)

                                                                                                          Instances For

                                                                                                            Tensor product with X is identity (left)

                                                                                                            Instances For

                                                                                                              Tensor product with 0 is zero (left)

                                                                                                              Instances For

                                                                                                                Tensor product with 0 is zero (right)

                                                                                                                Instances For

                                                                                                                  Left distributivity of tensor product over coproduct

                                                                                                                  Instances For

                                                                                                                    Right distributivity of tensor product over coproduct

                                                                                                                    Instances For

                                                                                                                      Convert an equivalence between two polynomial functors P and Q to a lens.

                                                                                                                      Instances For
                                                                                                                        instance PFunctor.Lens.instIsEmptyBSigma {I : Type v} [IsEmpty I] {F : IPFunctor.{u, u_1}} {a : (sigma F).A} :
                                                                                                                        IsEmpty ((sigma F).B a)

                                                                                                                        Sigma of an empty family is the zero functor.

                                                                                                                        Instances For

                                                                                                                          Sigma of a PUnit-indexed family is equivalent to the functor itself (up to ulift).

                                                                                                                          Instances For

                                                                                                                            Sigma of a unique-indexed family is equivalent to the default fiber (up to ulift).

                                                                                                                            Instances For

                                                                                                                              Left distributivity of product over sigma.

                                                                                                                              Instances For

                                                                                                                                Right distributivity of product over sigma.

                                                                                                                                Instances For

                                                                                                                                  Left distributivity of tensor product over sigma.

                                                                                                                                  Instances For

                                                                                                                                    Right distributivity of tensor product over sigma.

                                                                                                                                    Instances For

                                                                                                                                      Right distributivity of composition over sigma.

                                                                                                                                      Instances For

                                                                                                                                        Pi over a PUnit-indexed family is equivalent to the functor itself.

                                                                                                                                        Instances For
                                                                                                                                          def PFunctor.Lens.piZero {I : Type v} [Inhabited I] {F : IPFunctor.{uA, uB}} (F_zero : ∀ (i : I), F i = 0) :

                                                                                                                                          Pi of a family of zero functors over an inhabited type is the zero functor.

                                                                                                                                          Instances For

                                                                                                                                            ULift equivalence for lenses

                                                                                                                                            Instances For