18.7. Properties of morphisms
We have already seen two properties of morphisms in the previous section. Mathlib knows many
properties of morphisms. Browsing the AlgebraicGeometry/Morphisms folder
gives an overview. The properties are defined as type classes, so many basic proofs
are automatic by inferInstance:
example (f : X ⟶ Z) (g : Y ⟶ Z) [IsProper f] :
IsSeparated (pullback.snd f g) :=
inferInstance
To unify the handling of the meta properties of these properties of morphisms,
we rely on MorphismProperty. Any of the properties we have seen before
can be viewed as a MorphismProperty by prepending @:
example : MorphismProperty Scheme :=
@IsClosedImmersion
There exist meta properties for morphism properties, for example being stable under composition, base change, etc.
#check MorphismProperty.IsStableUnderComposition
#check MorphismProperty.IsStableUnderBaseChange
#check MorphismProperty.RespectsIso
and also some more technical ones:
#check MorphismProperty.HasOfPostcompProperty
Besides properties of properties, we also use abstract constructions of properties.
#check MorphismProperty.universally
#check MorphismProperty.diagonal
#check topologically