# Strongly extensional maps

```agda
module foundation.strongly-extensional-maps where
```

<details><summary>Imports</summary>

```agda
open import foundation.apartness-relations
open import foundation.universe-levels
```

</details>

## Idea

Consider a function `f : A → B` between types equipped with apartness relations.
Then we say that `f` is **strongly extensional** if

```text
  f x # f y → x # y
```

## Definition

```agda
strongly-extensional :
  {l1 l2 l3 l4 : Level} (A : Type-With-Apartness l1 l2)
  (B : Type-With-Apartness l3 l4) 
  (type-Type-With-Apartness A  type-Type-With-Apartness B)  UU (l1  l2  l4)
strongly-extensional A B f =
  (x y : type-Type-With-Apartness A) 
  apart-Type-With-Apartness B (f x) (f y)  apart-Type-With-Apartness A x y
```

## Properties

```text
is-strongly-extensional :
  {l1 l2 l3 l4 : Level} (A : Type-With-Apartness l1 l2)
  (B : Type-With-Apartness l3 l4) →
  (f : type-Type-With-Apartness A → type-Type-With-Apartness B) →
  strongly-extensional A B f
is-strongly-extensional A B f x y H = {!!}
```