# Complements of isolated elements of finite types
```agda
module univalent-combinatorics.complements-isolated-elements where
```
<details><summary>Imports</summary>
```agda
open import elementary-number-theory.natural-numbers
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.equivalences-maybe
open import foundation.identity-types
open import foundation.isolated-elements
open import foundation.maybe
open import foundation.propositional-truncations
open import foundation.universe-levels
open import univalent-combinatorics.equality-finite-types
open import univalent-combinatorics.finite-types
```
</details>
## Idea
For any element `x` in a [finite type](univalent-combinatorics.finite-types.md)
`X` of [cardinality](set-theory.cardinalities.md) `n+1`, we can construct its
**complement**, which is a type of cardinality `n`.
## Definition
### The complement of a element in a `k`-element type of arbitrary universe level
```agda
isolated-element-UU-Fin :
{l : Level} (k : ℕ) (X : UU-Fin l (succ-ℕ k)) →
type-UU-Fin (succ-ℕ k) X →
isolated-element (type-UU-Fin (succ-ℕ k) X)
pr1 (isolated-element-UU-Fin k X x) = x
pr2 (isolated-element-UU-Fin k X x) =
has-decidable-equality-has-cardinality
( succ-ℕ k)
( has-cardinality-type-UU-Fin (succ-ℕ k) X)
( x)
type-complement-element-UU-Fin :
{l1 : Level} (k : ℕ) →
Σ (UU-Fin l1 (succ-ℕ k)) (type-UU-Fin (succ-ℕ k)) → UU l1
type-complement-element-UU-Fin k (X , x) =
complement-isolated-element
( type-UU-Fin (succ-ℕ k) X)
( isolated-element-UU-Fin k X x)
equiv-maybe-structure-element-UU-Fin :
{l : Level} (k : ℕ) (X : UU-Fin l (succ-ℕ k)) →
(x : type-UU-Fin (succ-ℕ k) X) →
Maybe (type-complement-element-UU-Fin k (pair X x)) ≃
type-UU-Fin (succ-ℕ k) X
equiv-maybe-structure-element-UU-Fin k X x =
equiv-maybe-structure-isolated-element
( type-UU-Fin (succ-ℕ k) X)
( isolated-element-UU-Fin k X x)
has-cardinality-type-complement-element-UU-Fin :
{l1 : Level} (k : ℕ)
(X : Σ (UU-Fin l1 (succ-ℕ k)) (type-UU-Fin (succ-ℕ k))) →
has-cardinality k (type-complement-element-UU-Fin k X)
has-cardinality-type-complement-element-UU-Fin k (pair (pair X H) x) =
apply-universal-property-trunc-Prop H
( has-cardinality-Prop k
( type-complement-element-UU-Fin k (pair (pair X H) x)))
( λ e →
unit-trunc-Prop
( equiv-equiv-Maybe
( ( inv-equiv
( equiv-maybe-structure-element-UU-Fin k (pair X H) x)) ∘e
( e))))
complement-element-UU-Fin :
{l1 : Level} (k : ℕ) →
Σ (UU-Fin l1 (succ-ℕ k)) (type-UU-Fin (succ-ℕ k)) →
UU-Fin l1 k
pr1 (complement-element-UU-Fin k T) =
type-complement-element-UU-Fin k T
pr2 (complement-element-UU-Fin k T) =
has-cardinality-type-complement-element-UU-Fin k T
inclusion-complement-element-UU-Fin :
{l1 : Level} (k : ℕ)
(X : Σ (UU-Fin l1 (succ-ℕ k)) (type-UU-Fin (succ-ℕ k))) →
type-complement-element-UU-Fin k X → type-UU-Fin (succ-ℕ k) (pr1 X)
inclusion-complement-element-UU-Fin k X x = pr1 x
```
### The action of equivalences on complements of isolated points
```agda
equiv-complement-element-UU-Fin :
{l1 : Level} (k : ℕ)
(X Y : Σ (UU-Fin l1 (succ-ℕ k)) (type-UU-Fin (succ-ℕ k))) →
(e : equiv-UU-Fin (succ-ℕ k) (pr1 X) (pr1 Y))
(p : Id (map-equiv e (pr2 X)) (pr2 Y)) →
equiv-UU-Fin k
( complement-element-UU-Fin k X)
( complement-element-UU-Fin k Y)
equiv-complement-element-UU-Fin
k S T e p =
equiv-complement-isolated-element e
( pair x (λ x' → has-decidable-equality-has-cardinality (succ-ℕ k) H x x'))
( pair y (λ y' → has-decidable-equality-has-cardinality (succ-ℕ k) K y y'))
( p)
where
H = pr2 (pr1 S)
x = pr2 S
K = pr2 (pr1 T)
y = pr2 T
```
## Properties
### The map from a pointed `k+1`-element type to the complement of the element is an equivalence
This remains to be shown.
[#744](https://github.com/UniMath/agda-unimath/issues/744)