Normalization of 2-morphisms in bicategories #
This file provides a function that normalizes 2-morphisms in bicategories. The function also
used to normalize morphisms in monoidal categories. This is used in the string diagram widget given
in Mathlib.Tactic.StringDiagram
, as well as monoidal
and bicategory
tactics.
We say that the 2-morphism η
in a bicategory is in normal form if
η
is of the formα₀ ≫ η₀ ≫ α₁ ≫ η₁ ≫ ... αₘ ≫ ηₘ ≫ αₘ₊₁
where eachαᵢ
is a structural 2-morphism (consisting of associators and unitors),- each
ηᵢ
is a non-structural 2-morphism of the formf₁ ◁ ... ◁ fₙ ◁ θ
, and θ
is of the formι₁ ◫ ... ◫ ιₗ
, and- each
ιᵢ
is of the formκ ▷ g₁ ▷ ... ▷ gₖ
.
Note that the horizontal composition ◫
is not currently defined for bicategories. In the monoidal
category setting, the horizontal composition is defined as the tensorHom
, denoted by ⊗
.
Note that the structural morphisms αᵢ
are not necessarily normalized, as the main purpose
is to get a list of the non-structural morphisms out.
Currently, the primary application of the normalization tactic in mind is drawing string diagrams, which are graphical representations of morphisms in monoidal categories, in the infoview. When drawing string diagrams, we often ignore associators and unitors (i.e., drawing morphisms in strict monoidal categories). On the other hand, in Lean, it is considered difficult to formalize the concept of strict monoidal categories due to the feature of dependent type theory. The normalization tactic can remove associators and unitors from the expression, extracting the necessary data for drawing string diagrams.
The string diagrams widget is to use Penrose (https://github.com/penrose) via ProofWidget. However, it should be noted that the normalization procedure in this file does not rely on specific settings, allowing for broader application. Future plans include the following. At least I (Yuma) would like to work on these in the future, but it might not be immediate. If anyone is interested, I would be happy to discuss.
Currently, the string diagrams widget only do drawing. It would be better they also generate proofs. That is, by manipulating the string diagrams displayed in the infoview with a mouse to generate proofs. In https://github.com/leanprover-community/mathlib4/pull/10581, the string diagram widget only uses the morphisms generated by the normalization tactic and does not use proof terms ensuring that the original morphism and the normalized morphism are equal. Proof terms will be necessary for proof generation.
There is also the possibility of using homotopy.io (https://github.com/homotopy-io), a graphical proof assistant for category theory, from Lean. At this point, I have very few ideas regarding this approach.
Main definitions #
Tactic.BicategoryLike.eval
: Given a Lean expressione
that represents a morphism in a monoidal category, this function returns a pair of⟨e', pf⟩
wheree'
is the normalized expression ofe
andpf
is a proof thate = e'
.
Expressions of the form η ▷ f₁ ▷ ... ▷ fₙ
.
- of: Mathlib.Tactic.BicategoryLike.Atom → Mathlib.Tactic.BicategoryLike.WhiskerRight
Construct the expression for an atomic 2-morphism.
- whisker: Mathlib.Tactic.BicategoryLike.Mor₂ →
Mathlib.Tactic.BicategoryLike.WhiskerRight →
Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerRight
Construct the expression for
η ▷ f
.
Instances For
The underlying Mor₂
term of a WhiskerRight
term.
Equations
Instances For
Expressions of the form η₁ ⊗ ... ⊗ ηₙ
.
- of: Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp
- cons: Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.HorizontalComp
Instances For
The underlying Mor₂
term of a HorizontalComp
term.
Equations
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.of η).e = η.e
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.cons e η ηs).e = e
Instances For
Expressions of the form f₁ ◁ ... ◁ fₙ ◁ η
.
- of: Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.WhiskerLeft
Construct the expression for a right-whiskered 2-morphism.
- whisker: Mathlib.Tactic.BicategoryLike.Mor₂ →
Mathlib.Tactic.BicategoryLike.Atom₁ →
Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.WhiskerLeft
Construct the expression for
f ◁ η
.
Instances For
The underlying Mor₂
term of a WhiskerLeft
term.
Equations
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.of η).e = η.e
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.whisker e f η).e = e
Instances For
Whether a given 2-isomorphism is structural or not.
Equations
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.structuralAtom α_2).isStructural = true
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.comp e f g h η θ).isStructural = (η.isStructural && θ.isStructural)
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.whiskerLeft e f g h η).isStructural = η.isStructural
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.whiskerRight e f g η h).isStructural = η.isStructural
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.horizontalComp e f₁ g₁ f₂ g₂ η θ).isStructural = (η.isStructural && θ.isStructural)
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.inv e f g η).isStructural = η.isStructural
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.coherenceComp e f g h i α_2 η θ).isStructural = (η.isStructural && θ.isStructural)
- (Mathlib.Tactic.BicategoryLike.Mor₂Iso.of η).isStructural = false
Instances For
Expressions for structural isomorphisms. We do not impose the condition isStructural
since
it is not needed to write the tactic.
Instances For
Normalized expressions for 2-morphisms.
- nil: Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.NormalExpr
Construct the expression for a structural 2-morphism.
- cons: Mathlib.Tactic.BicategoryLike.Mor₂ →
Mathlib.Tactic.BicategoryLike.Structural →
Mathlib.Tactic.BicategoryLike.WhiskerLeft →
Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr
Construct the normalized expression of a 2-morphism
α ≫ η ≫ ηs
recursively.
Instances For
Equations
- Mathlib.Tactic.BicategoryLike.instInhabitedNormalExpr = { default := Mathlib.Tactic.BicategoryLike.NormalExpr.nil default default }
The underlying Mor₂
term of a NormalExpr
term.
Equations
- (Mathlib.Tactic.BicategoryLike.NormalExpr.nil e α).e = e
- (Mathlib.Tactic.BicategoryLike.NormalExpr.cons e α η ηs).e = e
Instances For
A monad equipped with the ability to construct WhiskerRight
terms.
- whiskerRightM : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.Atom₁ → m Mathlib.Tactic.BicategoryLike.WhiskerRight
The expression for the right whiskering
η ▷ f
.
Instances
A monad equipped with the ability to construct HorizontalComp
terms.
- hConsM : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → m Mathlib.Tactic.BicategoryLike.HorizontalComp
The expression for the horizontal composition
η ◫ ηs
.
Instances
A monad equipped with the ability to construct WhiskerLeft
terms.
- whiskerLeftM : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerLeft → m Mathlib.Tactic.BicategoryLike.WhiskerLeft
The expression for the left whiskering
f ▷ η
.
Instances
A monad equipped with the ability to construct NormalExpr
terms.
The expression for the structural 2-morphism
α
.- consM : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → m Mathlib.Tactic.BicategoryLike.NormalExpr
The expression for the normalized 2-morphism
α ≫ η ≫ ηs
.
Instances
The domain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.WhiskerRight.of η).srcM = pure η.src
- (Mathlib.Tactic.BicategoryLike.WhiskerRight.whisker e η f).srcM = do let __do_lift ← η.srcM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M __do_lift (Mathlib.Tactic.BicategoryLike.Mor₁.of f)
Instances For
The codomain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.WhiskerRight.of η).tgtM = pure η.tgt
- (Mathlib.Tactic.BicategoryLike.WhiskerRight.whisker e η f).tgtM = do let __do_lift ← η.tgtM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M __do_lift (Mathlib.Tactic.BicategoryLike.Mor₁.of f)
Instances For
The domain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.of η).srcM = η.srcM
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.cons e η ηs).srcM = do let __do_lift ← η.srcM let __do_lift_1 ← ηs.srcM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M __do_lift __do_lift_1
Instances For
The codomain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.of η).tgtM = η.tgtM
- (Mathlib.Tactic.BicategoryLike.HorizontalComp.cons e η ηs).tgtM = do let __do_lift ← η.tgtM let __do_lift_1 ← ηs.tgtM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M __do_lift __do_lift_1
Instances For
The domain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.of η).srcM = η.srcM
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.whisker e f η).srcM = do let __do_lift ← η.srcM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M (Mathlib.Tactic.BicategoryLike.Mor₁.of f) __do_lift
Instances For
The codomain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.of η).tgtM = η.tgtM
- (Mathlib.Tactic.BicategoryLike.WhiskerLeft.whisker e f η).tgtM = do let __do_lift ← η.tgtM Mathlib.Tactic.BicategoryLike.MonadMor₁.comp₁M (Mathlib.Tactic.BicategoryLike.Mor₁.of f) __do_lift
Instances For
The domain of a 2-morphism.
Equations
Instances For
The codomain of a 2-morphism.
Equations
- (Mathlib.Tactic.BicategoryLike.NormalExpr.nil e α).tgtM = Mathlib.Tactic.BicategoryLike.Mor₂Iso.tgtM α
- (Mathlib.Tactic.BicategoryLike.NormalExpr.cons e α η ηs).tgtM = ηs.tgtM
Instances For
The identity 2-morphism as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The associator as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse of the associator as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The left unitor as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse of the left unitor as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The right unitor as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The inverse of the right unitor as a term of normalExpr
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a NormalExpr
expression from a WhiskerLeft
expression.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a NormalExpr
expression from a Lean expression for an atomic 2-morphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Convert a NormalExpr
expression into a list of WhiskerLeft
expressions.
Equations
- (Mathlib.Tactic.BicategoryLike.NormalExpr.nil e α).toList = []
- (Mathlib.Tactic.BicategoryLike.NormalExpr.cons e α η ηs).toList = η :: ηs.toList
Instances For
The result of evaluating an expression into normal form.
The normalized expression of the 2-morphism.
- proof : Lean.Expr
The proof that the normalized expression is equal to the original expression.
Instances For
Equations
- Mathlib.Tactic.BicategoryLike.Eval.instInhabitedResult = { default := { expr := default, proof := default } }
Evaluate the expression α ≫ β
.
- mkEvalCompNilNil : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → m Lean.Expr
Evaluate
α ≫ β
- mkEvalCompNilCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → m Lean.Expr
Evaluate
α ≫ (β ≫ η ≫ ηs)
- mkEvalCompCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → m Lean.Expr
Evaluate
(α ≫ η ≫ ηs) ≫ θ
Instances
Evaluatte the expression f ◁ η
.
- mkEvalWhiskerLeftNil : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Structural → m Lean.Expr
Evaluatte
f ◁ α
- mkEvalWhiskerLeftOfCons : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → m Lean.Expr
Evaluate
f ◁ (α ≫ η ≫ ηs)
. - mkEvalWhiskerLeftComp : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(f ≫ g) ◁ η
- mkEvalWhiskerLeftId : Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
𝟙 _ ◁ η
Instances
Evaluate the expression η ▷ f
.
- mkEvalWhiskerRightAuxOf : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.Atom₁ → m Lean.Expr
Evaluate
η ▷ f
- mkEvalWhiskerRightAuxCons : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(η ◫ ηs) ▷ f
- mkEvalWhiskerRightNil : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Mor₁ → m Lean.Expr
Evaluate
α ▷ f
- mkEvalWhiskerRightConsOfOf : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(α ≫ η ≫ ηs) ▷ j
- mkEvalWhiskerRightConsWhisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(α ≫ (f ◁ η) ≫ ηs) ▷ g
- mkEvalWhiskerRightComp : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
η ▷ (g ⊗ h)
- mkEvalWhiskerRightId : Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
η ▷ 𝟙 _
Instances
Evaluate the expression η ◫ θ
.
- mkEvalHorizontalCompAuxOf : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → m Lean.Expr
Evaluate
η ◫ θ
- mkEvalHorizontalCompAuxCons : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(η ◫ ηs) ◫ θ
- mkEvalHorizontalCompAux'Whisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(f ◁ η) ◫ θ
- mkEvalHorizontalCompAux'OfWhisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
η ◫ (f ◁ θ)
- mkEvalHorizontalCompNilNil : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → m Lean.Expr
Evaluate
α ◫ β
- mkEvalHorizontalCompNilCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
α ◫ (β ≫ η ≫ ηs)
- mkEvalHorizontalCompConsNil : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(α ≫ η ≫ ηs) ◫ β
- mkEvalHorizontalCompConsCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate
(α ≫ η ≫ ηs) ◫ (β ≫ θ ≫ θs)
Instances
Evaluate the expression of a 2-morphism into a normalized form.
- mkEvalWhiskerLeftComp : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalWhiskerRightAuxCons : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalWhiskerRightConsOfOf : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalWhiskerRightConsWhisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalWhiskerRightComp : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompAuxCons : Mathlib.Tactic.BicategoryLike.WhiskerRight → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompAux'Whisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompAux'OfWhisker : Mathlib.Tactic.BicategoryLike.Atom₁ → Mathlib.Tactic.BicategoryLike.HorizontalComp → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompNilCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompConsNil : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalHorizontalCompConsCons : Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.WhiskerLeft → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
- mkEvalComp : Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate the expression
η ≫ θ
into a normalized form. - mkEvalWhiskerLeft : Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate the expression
f ◁ η
into a normalized form. - mkEvalWhiskerRight : Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Mor₁ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate the expression
η ▷ f
into a normalized form. - mkEvalHorizontalComp : Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate the expression
η ◫ θ
into a normalized form. - mkEvalOf : Mathlib.Tactic.BicategoryLike.Atom → m Lean.Expr
Evaluate the atomic 2-morphism
η
into a normalized form. - mkEvalMonoidalComp : Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Mor₂ → Mathlib.Tactic.BicategoryLike.Structural → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Mathlib.Tactic.BicategoryLike.NormalExpr → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr → m Lean.Expr
Evaluate the expression
η ⊗≫ θ := η ≫ α ≫ θ
into a normalized form.
Instances
Evaluate the expression α ≫ η
into a normalized form.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluate the expression η ≫ θ
into a normalized form.
Equations
- One or more equations did not get rendered due to their size.
- Mathlib.Tactic.BicategoryLike.evalComp (Mathlib.Tactic.BicategoryLike.NormalExpr.nil e α) x = Mathlib.Tactic.BicategoryLike.evalCompNil α x
Instances For
Evaluate the expression f ◁ η
into a normalized form.
Instances For
Evaluate the expression η ▷ f
into a normalized form.
Evaluate the expression η ▷ f
into a normalized form.
Evaluate the expression η ⊗ θ
into a normalized form.
Evaluate the expression η ⊗ θ
into a normalized form.
Evaluate the expression η ⊗ θ
into a normalized form.
Trace the proof of the normalization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Evaluate the expression of a 2-morphism into a normalized form.