# Dependent identifications
```agda
module foundation-core.dependent-identifications where
```
<details><summary>Imports</summary>
```agda
open import foundation.universe-levels
open import foundation-core.identity-types
open import foundation-core.transport-along-identifications
```
</details>
## Idea
Consider a type family `B` over `A`, an
[identification](foundation-core.identity-types.md) `p : x = y` in `A`, and two
elements `u : B x` and `v : B y`. A **path over** `p` from `u` to `v` is an
identification
```text
tr B p u = v,
```
where `tr` is the
[transport](foundation-core.transport-along-identifications.md) function.
Dependent identifications also satisfy groupoid laws, which are formulated
appropriately as dependent identifications. The groupoid laws for dependent
identifications are proven in
[`foundation.dependent-identifications`](foundation.dependent-identifications.md).
## Definition
### Dependent identifications
```agda
dependent-identification :
{l1 l2 : Level} {A : UU l1} (B : A → UU l2) {x x' : A} (p : x = x') →
B x → B x' → UU l2
dependent-identification B p u v = (tr B p u = v)
refl-dependent-identification :
{l1 l2 : Level} {A : UU l1} (B : A → UU l2) {x : A} {y : B x} →
dependent-identification B refl y y
refl-dependent-identification B = refl
```
### Iterated dependent identifications
```agda
module _
{l1 l2 : Level} {A : UU l1} (B : A → UU l2)
where
dependent-identification² :
{x y : A} {p q : x = y} (α : p = q)
{x' : B x} {y' : B y}
(p' : dependent-identification B p x' y')
(q' : dependent-identification B q x' y') →
UU l2
dependent-identification² α {x'} {y'} p' q' =
dependent-identification (λ t → dependent-identification B t x' y') α p' q'
```