This is an archived version pinned as of the submission of my master's thesis. An up-to-date version may be found online.
Lawvere's fixed point theorem
module foundation.lawveres-fixed-point-theorem where
Imports
open import foundation.dependent-pair-types open import foundation.existential-quantification open import foundation.function-extensionality open import foundation.propositional-truncations open import foundation.surjective-maps open import foundation.universe-levels open import foundation-core.identity-types
Idea
Lawvere's fixed point theorem¶
asserts that if there is a surjective map
A → (A → B)
, then any map B → B
must have a fixed point.
Theorem
module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} {f : A → A → B} where abstract fixed-point-theorem-Lawvere : is-surjective f → (h : B → B) → exists-structure B (λ b → h b = b) fixed-point-theorem-Lawvere H h = apply-universal-property-trunc-Prop ( H g) ( exists-structure-Prop B (λ b → h b = b)) ( λ (x , p) → intro-exists (f x x) (inv (htpy-eq p x))) where g : A → B g a = h (f a a)