Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Local Open Scope path_scope. Section Functorish. Context `{Univalence}. (* We do not need composition to be preserved. *) Class Functorish (F : Type -> Type) := { fmap {A B} (f : A -> B) : F A -> F B ; fmap_idmap (A:Type) : fmap (idmap : A -> A) = idmap }. Global Arguments fmap F {FF} {A B} f _ : rename. Global Arguments fmap_idmap F {FF A} : rename. Context (F : Type -> Type). Context {FF : Functorish F}.
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

IsEquiv (fmap F f)
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

IsEquiv (fmap F f)
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

IsEquiv (fmap F 1%equiv)
refine (transport _ (fmap_idmap F)^ _); try apply isequiv_idmap. (* This line may not be needed in a new enough coq. *) Defined.
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

fmap F f = equiv_path (F A) (F B) (ap F (path_universe f))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

fmap F f = equiv_path (F A) (F B) (ap F (path_universe f))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

fmap F 1%equiv = equiv_path (F A) (F A) (ap F (path_universe 1%equiv))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

fmap F 1%equiv = (idmap : F A -> F A)
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f
(idmap : F A -> F A) = equiv_path (F A) (F A) (ap F (path_universe 1%equiv))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

fmap F 1%equiv = (idmap : F A -> F A)
apply fmap_idmap.
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

(idmap : F A -> F A) = equiv_path (F A) (F A) (ap F (path_universe 1%equiv))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

(idmap : F A -> F A) = equiv_path (F A) (F A) (ap F (path_universe (equiv_path A A 1)))
H: Univalence
F: Type -> Type
FF: Functorish F
A, B: Type
f: A -> B
H0: IsEquiv f

idmap = equiv_path (F A) (F A) (ap F 1)
exact 1. Defined. End Functorish.