# The pullback property of pushouts
```agda
module synthetic-homotopy-theory.pullback-property-pushouts where
```
<details><summary>Imports</summary>
```agda
open import foundation.commuting-squares-of-maps
open import foundation.cones-over-cospan-diagrams
open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.precomposition-functions
open import foundation.pullbacks
open import foundation.universe-levels
open import synthetic-homotopy-theory.cocones-under-spans
```
</details>
## Idea
The
[universal property of the pushout](synthetic-homotopy-theory.universal-property-pushouts.md)
of a span `S` can also be stated as a
[pullback property](foundation-core.universal-property-pullbacks.md): a cocone
`c ≐ (i , j , H)` with vertex `X` satisfies the universal property of the
pushout of `S` if and only if the square
```text
Y^X -----> Y^B
| ⌟ |
| |
∨ ∨
Y^A -----> Y^S
```
is a [pullback](foundation.pullbacks.md) square for every type `Y`. Below, we
first define the [cone](foundation.cones-over-cospan-diagrams.md) of this
[commuting square](foundation.commuting-squares-of-maps.md), and then we
introduce the type `pullback-property-pushout`, which states that the above
square is a [pullback](foundation-core.universal-property-pullbacks.md).
## Definition
### The pullback property of pushouts
```agda
cone-pullback-property-pushout :
{l1 l2 l3 l4 l : Level} {S : UU l1} {A : UU l2} {B : UU l3}
(f : S → A) (g : S → B) {X : UU l4} (c : cocone f g X) (Y : UU l) →
cone (_∘ f) (_∘ g) (X → Y)
pr1 (cone-pullback-property-pushout f g c Y) =
precomp (horizontal-map-cocone f g c) Y
pr1 (pr2 (cone-pullback-property-pushout f g c Y)) =
precomp (vertical-map-cocone f g c) Y
pr2 (pr2 (cone-pullback-property-pushout f g c Y)) =
precomp-coherence-square-maps
( g)
( f)
( vertical-map-cocone f g c)
( horizontal-map-cocone f g c)
( coherence-square-cocone f g c)
( Y)
pullback-property-pushout :
{l1 l2 l3 l4 : Level} {S : UU l1} {A : UU l2} {B : UU l3}
(f : S → A) (g : S → B) {X : UU l4} (c : cocone f g X) →
UUω
pullback-property-pushout f g c =
{l : Level} (Y : UU l) →
is-pullback
( precomp f Y)
( precomp g Y)
( cone-pullback-property-pushout f g c Y)
```