# Complements of subtypes ```agda module foundation.complements-subtypes where ``` <details><summary>Imports</summary> ```agda open import foundation.decidable-propositions open import foundation.decidable-subtypes open import foundation.full-subtypes open import foundation.negation open import foundation.propositional-truncations open import foundation.unions-subtypes open import foundation.universe-levels open import foundation-core.function-types open import foundation-core.subtypes ``` </details> ## Idea The **complement** of a [subtype](foundation-core.subtypes.md) `P` of `A` consists of the elements that are not in `P`. ## Definition ### Complements of subtypes ```agda complement-subtype : {l1 l2 : Level} {A : UU l1} → subtype l2 A → subtype l2 A complement-subtype P x = neg-Prop (P x) ``` ### Complements of decidable subtypes ```agda complement-decidable-subtype : {l1 l2 : Level} {A : UU l1} → decidable-subtype l2 A → decidable-subtype l2 A complement-decidable-subtype P x = neg-Decidable-Prop (P x) ``` ## Properties ### The union of a subtype `P` with its complement is the full subtype if and only if `P` is a decidable subtype ```agda module _ {l1 l2 : Level} {A : UU l1} where is-full-union-subtype-complement-subtype : (P : subtype l2 A) → is-decidable-subtype P → is-full-subtype (union-subtype P (complement-subtype P)) is-full-union-subtype-complement-subtype P d x = unit-trunc-Prop (d x) is-decidable-subtype-is-full-union-subtype-complement-subtype : (P : subtype l2 A) → is-full-subtype (union-subtype P (complement-subtype P)) → is-decidable-subtype P is-decidable-subtype-is-full-union-subtype-complement-subtype P H x = apply-universal-property-trunc-Prop ( H x) ( is-decidable-Prop (P x)) ( id) is-full-union-subtype-complement-decidable-subtype : (P : decidable-subtype l2 A) → is-full-decidable-subtype ( union-decidable-subtype P (complement-decidable-subtype P)) is-full-union-subtype-complement-decidable-subtype P = is-full-union-subtype-complement-subtype ( subtype-decidable-subtype P) ( is-decidable-decidable-subtype P) ```