Pullbacks #
We define a category WalkingCospan
(resp. WalkingSpan
), which is the index category
for the given data for a pullback (resp. pushout) diagram. Convenience methods cospan f g
and span f g
construct functors from the walking (co)span, hitting the given morphisms.
We define pullback f g
and pushout f g
as limits and colimits of such functors.
References #
The type of objects for the diagram indexing a pullback, defined as a special case of
WidePullbackShape
.
The left point of the walking cospan.
The right point of the walking cospan.
The central point of the walking cospan.
Equations
The type of objects for the diagram indexing a pushout, defined as a special case of
WidePushoutShape
.
The left point of the walking span.
The right point of the walking span.
The central point of the walking span.
Equations
The type of arrows for the diagram indexing a pullback.
Equations
- CategoryTheory.Limits.WalkingCospan.Hom = CategoryTheory.Limits.WidePullbackShape.Hom
The left arrow of the walking cospan.
The right arrow of the walking cospan.
The identity arrows of the walking cospan.
The type of arrows for the diagram indexing a pushout.
Equations
- CategoryTheory.Limits.WalkingSpan.Hom = CategoryTheory.Limits.WidePushoutShape.Hom
The left arrow of the walking span.
The right arrow of the walking span.
The identity arrows of the walking span.
Equations
- ⋯ = ⋯
To construct an isomorphism of cones over the walking cospan,
it suffices to construct an isomorphism
of the cone points and check it commutes with the legs to left
and right
.
Equations
To construct an isomorphism of cocones over the walking span,
it suffices to construct an isomorphism
of the cocone points and check it commutes with the legs from left
and right
.
Equations
cospan f g
is the functor from the walking cospan hitting f
and g
.
Equations
- One or more equations did not get rendered due to their size.
span f g
is the functor from the walking span hitting f
and g
.
Equations
- One or more equations did not get rendered due to their size.
Every diagram indexing a pullback is naturally isomorphic (actually, equal) to a cospan
Equations
Every diagram indexing a pushout is naturally isomorphic (actually, equal) to a span
Equations
A functor applied to a cospan is a cospan.
Equations
- One or more equations did not get rendered due to their size.
A functor applied to a span is a span.
Equations
- One or more equations did not get rendered due to their size.
Construct an isomorphism of cospans from components.
Equations
- One or more equations did not get rendered due to their size.
Construct an isomorphism of spans from components.
Equations
- One or more equations did not get rendered due to their size.
A pullback cone is just a cone on the cospan formed by two morphisms f : X ⟶ Z
and
g : Y ⟶ Z
.
The first projection of a pullback cone.
Equations
The second projection of a pullback cone.
Equations
This is a slightly more convenient method to verify that a pullback cone is a limit cone. It only asks for a proof of facts that carry any mathematical content
Equations
- CategoryTheory.Limits.PullbackCone.isLimitAux t lift fac_left fac_right uniq = { lift := lift, fac := ⋯, uniq := uniq }
This is another convenient method to verify that a pullback cone is a limit cone. It
only asks for a proof of facts that carry any mathematical content, and allows access to the
same s
for all parts.
Equations
- CategoryTheory.Limits.PullbackCone.isLimitAux' t create = CategoryTheory.Limits.PullbackCone.isLimitAux t (fun (s : CategoryTheory.Limits.PullbackCone f g) => ↑(create s)) ⋯ ⋯ ⋯
A pullback cone on f
and g
is determined by morphisms fst : W ⟶ X
and snd : W ⟶ Y
such that fst ≫ f = snd ≫ g
.
Equations
- One or more equations did not get rendered due to their size.
To check whether a morphism is equalized by the maps of a pullback cone, it suffices to check
it for fst t
and snd t
To construct an isomorphism of pullback cones, it suffices to construct an isomorphism
of the cone points and check it commutes with fst
and snd
.
Equations
If t
is a limit pullback cone over f
and g
and h : W ⟶ X
and k : W ⟶ Y
are such that
h ≫ f = k ≫ g
, then we get l : W ⟶ t.pt
, which satisfies l ≫ fst t = h
and l ≫ snd t = k
, see IsLimit.lift_fst
and IsLimit.lift_snd
.
Equations
- CategoryTheory.Limits.PullbackCone.IsLimit.lift ht h k w = ht.lift (CategoryTheory.Limits.PullbackCone.mk h k w)
If t
is a limit pullback cone over f
and g
and h : W ⟶ X
and k : W ⟶ Y
are such that
h ≫ f = k ≫ g
, then we have l : W ⟶ t.pt
satisfying l ≫ fst t = h
and l ≫ snd t = k
.
Equations
- CategoryTheory.Limits.PullbackCone.IsLimit.lift' ht h k w = { val := CategoryTheory.Limits.PullbackCone.IsLimit.lift ht h k w, property := ⋯ }
This is a more convenient formulation to show that a PullbackCone
constructed using
PullbackCone.mk
is a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Flipping a pullback cone twice gives an isomorphic cone.
Equations
- One or more equations did not get rendered due to their size.
The flip of a pullback square is a pullback square.
Equations
- One or more equations did not get rendered due to their size.
A square is a pullback square if its flip is.
Equations
- One or more equations did not get rendered due to their size.
The pullback cone (𝟙 X, 𝟙 X)
for the pair (f, f)
is a limit if f
is a mono. The converse is
shown in mono_of_pullback_is_id
.
Equations
- One or more equations did not get rendered due to their size.
f
is a mono if the pullback cone (𝟙 X, 𝟙 X)
is a limit for the pair (f, f)
. The converse is
given in PullbackCone.is_id_of_mono
.
Suppose f
and g
are two morphisms with a common codomain and s
is a limit cone over the
diagram formed by f
and g
. Suppose f
and g
both factor through a monomorphism h
via
x
and y
, respectively. Then s
is also a limit cone over the diagram formed by x
and
y
.
Equations
- One or more equations did not get rendered due to their size.
If W
is the pullback of f, g
,
it is also the pullback of f ≫ i, g ≫ i
for any mono i
.
Equations
- One or more equations did not get rendered due to their size.
A pushout cocone is just a cocone on the span formed by two morphisms f : X ⟶ Y
and
g : X ⟶ Z
.
The first inclusion of a pushout cocone.
Equations
The second inclusion of a pushout cocone.
Equations
This is a slightly more convenient method to verify that a pushout cocone is a colimit cocone. It only asks for a proof of facts that carry any mathematical content
Equations
- CategoryTheory.Limits.PushoutCocone.isColimitAux t desc fac_left fac_right uniq = { desc := desc, fac := ⋯, uniq := uniq }
This is another convenient method to verify that a pushout cocone is a colimit cocone. It
only asks for a proof of facts that carry any mathematical content, and allows access to the
same s
for all parts.
Equations
- CategoryTheory.Limits.PushoutCocone.isColimitAux' t create = CategoryTheory.Limits.PushoutCocone.isColimitAux t (fun (s : CategoryTheory.Limits.PushoutCocone f g) => ↑(create s)) ⋯ ⋯ ⋯
A pushout cocone on f
and g
is determined by morphisms inl : Y ⟶ W
and inr : Z ⟶ W
such
that f ≫ inl = g ↠ inr
.
Equations
- One or more equations did not get rendered due to their size.
To check whether a morphism is coequalized by the maps of a pushout cocone, it suffices to check
it for inl t
and inr t
If t
is a colimit pushout cocone over f
and g
and h : Y ⟶ W
and k : Z ⟶ W
are
morphisms satisfying f ≫ h = g ≫ k
, then we have a factorization l : t.pt ⟶ W
such that
inl t ≫ l = h
and inr t ≫ l = k
, see IsColimit.inl_desc
and IsColimit.inr_desc
Equations
- CategoryTheory.Limits.PushoutCocone.IsColimit.desc ht h k w = ht.desc (CategoryTheory.Limits.PushoutCocone.mk h k w)
If t
is a colimit pushout cocone over f
and g
and h : Y ⟶ W
and k : Z ⟶ W
are
morphisms satisfying f ≫ h = g ≫ k
, then we have a factorization l : t.pt ⟶ W
such that
inl t ≫ l = h
and inr t ≫ l = k
.
Equations
- CategoryTheory.Limits.PushoutCocone.IsColimit.desc' ht h k w = { val := CategoryTheory.Limits.PushoutCocone.IsColimit.desc ht h k w, property := ⋯ }
To construct an isomorphism of pushout cocones, it suffices to construct an isomorphism
of the cocone points and check it commutes with inl
and inr
.
Equations
This is a more convenient formulation to show that a PushoutCocone
constructed using
PushoutCocone.mk
is a colimit cocone.
Equations
- One or more equations did not get rendered due to their size.
Flipping a pushout cocone twice gives an isomorphic cocone.
Equations
- One or more equations did not get rendered due to their size.
The flip of a pushout square is a pushout square.
Equations
- One or more equations did not get rendered due to their size.
A square is a pushout square if its flip is.
Equations
- One or more equations did not get rendered due to their size.
The pushout cocone (𝟙 X, 𝟙 X)
for the pair (f, f)
is a colimit if f
is an epi. The converse is
shown in epi_of_isColimit_mk_id_id
.
Equations
- One or more equations did not get rendered due to their size.
f
is an epi if the pushout cocone (𝟙 X, 𝟙 X)
is a colimit for the pair (f, f)
.
The converse is given in PushoutCocone.isColimitMkIdId
.
Suppose f
and g
are two morphisms with a common domain and s
is a colimit cocone over the
diagram formed by f
and g
. Suppose f
and g
both factor through an epimorphism h
via
x
and y
, respectively. Then s
is also a colimit cocone over the diagram formed by x
and
y
.
Equations
- One or more equations did not get rendered due to their size.
If W
is the pushout of f, g
,
it is also the pushout of h ≫ f, h ≫ g
for any epi h
.
Equations
- One or more equations did not get rendered due to their size.
This is a helper construction that can be useful when verifying that a category has all
pullbacks. Given F : WalkingCospan ⥤ C
, which is really the same as
cospan (F.map inl) (F.map inr)
, and a pullback cone on F.map inl
and F.map inr
, we
get a cone on F
.
If you're thinking about using this, have a look at hasPullbacks_of_hasLimit_cospan
,
which you may find to be an easier way of achieving your goal.
Equations
- CategoryTheory.Limits.Cone.ofPullbackCone t = { pt := t.pt, π := CategoryTheory.CategoryStruct.comp t.π (CategoryTheory.Limits.diagramIsoCospan F).inv }
This is a helper construction that can be useful when verifying that a category has all
pushout. Given F : WalkingSpan ⥤ C
, which is really the same as
span (F.map fst) (F.map snd)
, and a pushout cocone on F.map fst
and F.map snd
,
we get a cocone on F
.
If you're thinking about using this, have a look at hasPushouts_of_hasColimit_span
, which
you may find to be an easier way of achieving your goal.
Equations
- CategoryTheory.Limits.Cocone.ofPushoutCocone t = { pt := t.pt, ι := CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.diagramIsoSpan F).hom t.ι }
Given F : WalkingCospan ⥤ C
, which is really the same as cospan (F.map inl) (F.map inr)
,
and a cone on F
, we get a pullback cone on F.map inl
and F.map inr
.
Equations
- CategoryTheory.Limits.PullbackCone.ofCone t = { pt := t.pt, π := CategoryTheory.CategoryStruct.comp t.π (CategoryTheory.Limits.diagramIsoCospan F).hom }
A diagram WalkingCospan ⥤ C
is isomorphic to some PullbackCone.mk
after
composing with diagramIsoCospan
.
Equations
- One or more equations did not get rendered due to their size.
Given F : WalkingSpan ⥤ C
, which is really the same as span (F.map fst) (F.map snd)
,
and a cocone on F
, we get a pushout cocone on F.map fst
and F.map snd
.
Equations
- CategoryTheory.Limits.PushoutCocone.ofCocone t = { pt := t.pt, ι := CategoryTheory.CategoryStruct.comp (CategoryTheory.Limits.diagramIsoSpan F).inv t.ι }
A diagram WalkingSpan ⥤ C
is isomorphic to some PushoutCocone.mk
after composing with
diagramIsoSpan
.
Equations
- One or more equations did not get rendered due to their size.
HasPullback f g
represents a particular choice of limiting cone
for the pair of morphisms f : X ⟶ Z
and g : Y ⟶ Z
.
HasPushout f g
represents a particular choice of colimiting cocone
for the pair of morphisms f : X ⟶ Y
and g : X ⟶ Z
.
pullback f g
computes the pullback of a pair of morphisms with the same target.
Equations
pushout f g
computes the pushout of a pair of morphisms with the same source.
Equations
The first projection of the pullback of f
and g
.
Equations
- CategoryTheory.Limits.pullback.fst = CategoryTheory.Limits.limit.π (CategoryTheory.Limits.cospan f g) CategoryTheory.Limits.WalkingCospan.left
The second projection of the pullback of f
and g
.
Equations
- CategoryTheory.Limits.pullback.snd = CategoryTheory.Limits.limit.π (CategoryTheory.Limits.cospan f g) CategoryTheory.Limits.WalkingCospan.right
The first inclusion into the pushout of f
and g
.
Equations
- CategoryTheory.Limits.pushout.inl = CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.span f g) CategoryTheory.Limits.WalkingSpan.left
The second inclusion into the pushout of f
and g
.
Equations
- CategoryTheory.Limits.pushout.inr = CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.span f g) CategoryTheory.Limits.WalkingSpan.right
A pair of morphisms h : W ⟶ X
and k : W ⟶ Y
satisfying h ≫ f = k ≫ g
induces a morphism
pullback.lift : W ⟶ pullback f g
.
A pair of morphisms h : Y ⟶ W
and k : Z ⟶ W
satisfying f ≫ h = g ≫ k
induces a morphism
pushout.desc : pushout f g ⟶ W
.
A pair of morphisms h : W ⟶ X
and k : W ⟶ Y
satisfying h ≫ f = k ≫ g
induces a morphism
l : W ⟶ pullback f g
such that l ≫ pullback.fst = h
and l ≫ pullback.snd = k
.
Equations
- CategoryTheory.Limits.pullback.lift' h k w = { val := CategoryTheory.Limits.pullback.lift h k w, property := ⋯ }
A pair of morphisms h : Y ⟶ W
and k : Z ⟶ W
satisfying f ≫ h = g ≫ k
induces a morphism
l : pushout f g ⟶ W
such that pushout.inl ≫ l = h
and pushout.inr ≫ l = k
.
Equations
- CategoryTheory.Limits.pullback.desc' h k w = { val := CategoryTheory.Limits.pushout.desc h k w, property := ⋯ }
Given such a diagram, then there is a natural morphism W ×ₛ X ⟶ Y ×ₜ Z
.
W ⟶ Y ↘ ↘ S ⟶ T ↗ ↗ X ⟶ Z
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical map X ×ₛ Y ⟶ X ×ₜ Y
given S ⟶ T
.
Equations
- One or more equations did not get rendered due to their size.
Given such a diagram, then there is a natural morphism W ⨿ₛ X ⟶ Y ⨿ₜ Z
.
W ⟶ Y
↗ ↗ S ⟶ T ↘ ↘ X ⟶ Z
Equations
- One or more equations did not get rendered due to their size.
Instances For
The canonical map X ⨿ₛ Y ⟶ X ⨿ₜ Y
given S ⟶ T
.
Equations
- One or more equations did not get rendered due to their size.
Two morphisms into a pullback are equal if their compositions with the pullback morphisms are equal
The pullback cone built from the pullback projections is a pullback.
Equations
- One or more equations did not get rendered due to their size.
The pullback of a monomorphism is a monomorphism
Equations
- ⋯ = ⋯
The pullback of a monomorphism is a monomorphism
Equations
- ⋯ = ⋯
The map X ×[Z] Y ⟶ X × Y
is mono.
Equations
- ⋯ = ⋯
Two morphisms out of a pushout are equal if their compositions with the pushout morphisms are equal
The pushout cocone built from the pushout coprojections is a pushout.
Equations
- One or more equations did not get rendered due to their size.
The pushout of an epimorphism is an epimorphism
Equations
- ⋯ = ⋯
The pushout of an epimorphism is an epimorphism
Equations
- ⋯ = ⋯
The map X ⨿ Y ⟶ X ⨿[Z] Y
is epi.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If f₁ = f₂
and g₁ = g₂
, we may construct a canonical
isomorphism pullback f₁ g₁ ≅ pullback f₂ g₂
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
If f₁ = f₂
and g₁ = g₂
, we may construct a canonical
isomorphism pushout f₁ g₁ ≅ pullback f₂ g₂
Equations
- One or more equations did not get rendered due to their size.
The comparison morphism for the pullback of f,g
.
This is an isomorphism iff G
preserves the pullback of f,g
; see
Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean
Equations
- CategoryTheory.Limits.pullbackComparison G f g = CategoryTheory.Limits.pullback.lift (G.map CategoryTheory.Limits.pullback.fst) (G.map CategoryTheory.Limits.pullback.snd) ⋯
The comparison morphism for the pushout of f,g
.
This is an isomorphism iff G
preserves the pushout of f,g
; see
Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean
Equations
- CategoryTheory.Limits.pushoutComparison G f g = CategoryTheory.Limits.pushout.desc (G.map CategoryTheory.Limits.pushout.inl) (G.map CategoryTheory.Limits.pushout.inr) ⋯
Making this a global instance would make the typeclass search go in an infinite loop.
The isomorphism X ×[Z] Y ≅ Y ×[Z] X
.
Equations
- One or more equations did not get rendered due to their size.
Making this a global instance would make the typeclass search go in an infinite loop.
The isomorphism Y ⨿[X] Z ≅ Z ⨿[X] Y
.
Equations
- One or more equations did not get rendered due to their size.
The pullback of f, g
is also the pullback of f ≫ i, g ≫ i
for any mono i
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
If f : X ⟶ Z
is iso, then X ×[Z] Y ≅ Y
. This is the explicit limit cone.
Verify that the constructed limit cone is indeed a limit.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If g : Y ⟶ Z
is iso, then X ×[Z] Y ≅ X
. This is the explicit limit cone.
Verify that the constructed limit cone is indeed a limit.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The pushout of f, g
is also the pullback of h ≫ f, h ≫ g
for any epi h
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
If f : X ⟶ Y
is iso, then Y ⨿[X] Z ≅ Z
. This is the explicit colimit cocone.
Verify that the constructed cocone is indeed a colimit.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If f : X ⟶ Z
is iso, then Y ⨿[X] Z ≅ Y
. This is the explicit colimit cocone.
Verify that the constructed cocone is indeed a colimit.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Given
X₁ - f₁ -> X₂ - f₂ -> X₃ | | | i₁ i₂ i₃ ∨ ∨ ∨ Y₁ - g₁ -> Y₂ - g₂ -> Y₃
Then the big square is a pullback if both the small squares are.
Equations
- One or more equations did not get rendered due to their size.
Given
X₁ - f₁ -> X₂ - f₂ -> X₃ | | | i₁ i₂ i₃ ∨ ∨ ∨ Y₁ - g₁ -> Y₂ - g₂ -> Y₃
Then the big square is a pushout if both the small squares are.
Equations
- One or more equations did not get rendered due to their size.
Given
X₁ - f₁ -> X₂ - f₂ -> X₃ | | | i₁ i₂ i₃ ∨ ∨ ∨ Y₁ - g₁ -> Y₂ - g₂ -> Y₃
Then the left square is a pullback if the right square and the big square are.
Equations
- One or more equations did not get rendered due to their size.
Given
X₁ - f₁ -> X₂ - f₂ -> X₃ | | | i₁ i₂ i₃ ∨ ∨ ∨ Y₁ - g₁ -> Y₂ - g₂ -> Y₃
Then the right square is a pushout if the left square and the big square are.
Equations
- One or more equations did not get rendered due to their size.
The canonical isomorphism W ×[X] (X ×[Z] Y) ≅ W ×[Z] Y
Equations
- One or more equations did not get rendered due to their size.
The canonical isomorphism (Y ⨿[X] Z) ⨿[Z] W ≅ Y ×[X] W
Equations
- One or more equations did not get rendered due to their size.
(X₁ ×[Y₁] X₂) ×[Y₂] X₃
is the pullback (X₁ ×[Y₁] X₂) ×[X₂] (X₂ ×[Y₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
(X₁ ×[Y₁] X₂) ×[Y₂] X₃
is the pullback X₁ ×[Y₁] (X₂ ×[Y₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
X₁ ×[Y₁] (X₂ ×[Y₂] X₃)
is the pullback (X₁ ×[Y₁] X₂) ×[X₂] (X₂ ×[Y₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
X₁ ×[Y₁] (X₂ ×[Y₂] X₃)
is the pullback (X₁ ×[Y₁] X₂) ×[Y₂] X₃
.
Equations
- One or more equations did not get rendered due to their size.
The canonical isomorphism (X₁ ×[Y₁] X₂) ×[Y₂] X₃ ≅ X₁ ×[Y₁] (X₂ ×[Y₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
(X₁ ⨿[Z₁] X₂) ⨿[Z₂] X₃
is the pushout (X₁ ⨿[Z₁] X₂) ×[X₂] (X₂ ⨿[Z₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
(X₁ ⨿[Z₁] X₂) ⨿[Z₂] X₃
is the pushout X₁ ⨿[Z₁] (X₂ ⨿[Z₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
X₁ ⨿[Z₁] (X₂ ⨿[Z₂] X₃)
is the pushout (X₁ ⨿[Z₁] X₂) ×[X₂] (X₂ ⨿[Z₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
X₁ ⨿[Z₁] (X₂ ⨿[Z₂] X₃)
is the pushout (X₁ ⨿[Z₁] X₂) ⨿[Z₂] X₃
.
Equations
- One or more equations did not get rendered due to their size.
The canonical isomorphism (X₁ ⨿[Z₁] X₂) ⨿[Z₂] X₃ ≅ X₁ ⨿[Z₁] (X₂ ⨿[Z₂] X₃)
.
Equations
- One or more equations did not get rendered due to their size.
HasPushouts
represents a choice of pushout for every pair of morphisms
If C
has all limits of diagrams cospan f g
, then it has all pullbacks
If C
has all colimits of diagrams span f g
, then it has all pushouts
The duality equivalence WalkingSpanᵒᵖ ≌ WalkingCospan
The duality equivalence WalkingCospanᵒᵖ ≌ WalkingSpan
Having wide pullback at any universe level implies having binary pullbacks.
Equations
- ⋯ = ⋯
Having wide pushout at any universe level implies having binary pushouts.
Equations
- ⋯ = ⋯
Given a morphism f : X ⟶ Y
, we can take morphisms over Y
to morphisms over X
via
pullbacks. This is right adjoint to over.map
(TODO)
Equations
- One or more equations did not get rendered due to their size.