Deriving handler for Traversable instances #
This module gives deriving handlers for Functor, LawfulFunctor, Traversable, and
LawfulTraversable. These deriving handlers automatically derive their dependencies, for
example deriving LawfulTraversable all by itself gives all four.
nestedMap f α (List (Array (List α))) synthesizes the expression
Functor.map (Functor.map (Functor.map f)). nestedMap assumes that α appears in
(List (Array (List α))).
(Similar to nestedTraverse but for Functor.)
similar to traverseField but for Functor
Equations
Instances For
Get the auxiliary local declaration corresponding to the current declaration. If there are multiple declarations it will throw.
Equations
Instances For
similar to traverseConstructor but for Functor
Equations
Instances For
Makes a match expression corresponding to the application of casesOn like:
match (motive := motive) indices₁, indices₂, .., (val : type.{univs} params₁ params₂ ..) with
| _, _, .., ctor₁ fields₁₁ fields₁₂ .. => rhss ctor₁ [fields₁₁, fields₁₂, ..]
| _, _, .., ctor₂ fields₂₁ fields₂₂ .. => rhss ctor₂ [fields₂₁, fields₂₂, ..]
This is convenient to make a definition with equation lemmas.
Equations
Instances For
Get FVarIds which is not implementation details in the current context.
Equations
Instances For
Get Exprs of FVarIds which is not implementation details in the current context.
Equations
Instances For
derive the map definition of a Functor
Equations
Instances For
Similar to mkInstanceName, but for a Expr type.
Equations
Instances For
Derive the cls instance for the inductive type constructor n using the tac tactic.
Equations
Instances For
Make the new deriving handler depends on other deriving handlers.
Equations
Instances For
nestedTraverse f α (List (Array (List α))) synthesizes the expression
traverse (traverse (traverse f)). nestedTraverse assumes that α appears in
(List (Array (List α)))
For a sum type inductive Foo (α : Type) | foo1 : List α → ℕ → Foo α | ...
traverseField `Foo f `α `(x : List α) synthesizes
traverse f x as part of traversing foo1.
Equations
Instances For
For a sum type inductive Foo (α : Type) | foo1 : List α → ℕ → Foo α | ...
traverseConstructor `foo1 `Foo applInst f `α `β [`(x : List α), `(y : ℕ)]
synthesizes foo1 <$> traverse f x <*> pure y.
Equations
Instances For
mkFunCtor ctor [(true, (arg₁ : m type₁)), (false, (arg₂ : type₂)), (true, (arg₃ : m type₃)), (false, (arg₄ : type₄))] makes fun (x₁ : type₁) (x₃ : type₃) => ctor x₁ arg₂ x₃ arg₄.
Equations
Instances For
derive the traverse definition of a Traversable instance
Equations
Instances For
Simplify the goal m using functor_norm.
Equations
Instances For
Run the following tactic:
intros _ .. x
dsimp only [Traversable.traverse, Functor.map]
induction x <;> (the simp tactic corresponding to s) <;> (tac)
Equations
Instances For
Prove the traversable laws and derive LawfulTraversable.