Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.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]
(** Equalizers *)DefinitionEqualizer {AB} (fg : A -> B)
:= {x : A & f x = g x}.
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B -> B' k: A -> A' p: h o f == f' o k q: h o g == g' o k
Equalizer f g -> Equalizer f' g'
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B -> B' k: A -> A' p: h o f == f' o k q: h o g == g' o k
Equalizer f g -> Equalizer f' g'
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B -> B' k: A -> A' p: h o f == f' o k q: h o g == g' o k x: A r: f x = g x
Equalizer f' g'
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B -> B' k: A -> A' p: h o f == f' o k q: h o g == g' o k x: A r: f x = g x
f' (k x) = g' (k x)
exact ((p x)^ @ (ap h r) @ (q x)).Defined.
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k
Equalizer f g <~> Equalizer f' g'
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k
Equalizer f g <~> Equalizer f' g'
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k
{x : A & f x = g x} <~> {x : A' & f' x = g' x}
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k
foralla : A,
(funx : A => f x = g x) a <~>
(funx : A' => f' x = g' x) (k a)
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k
foralla : A,
(funx : A => f x = g x) a <~>
(funx : A' => f' x = g' x) (k a)
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k a: A
f a = g a <~> f' (k a) = g' (k a)
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k a: A
?Goal <~> f' (k a) = g' (k a)
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k a: A
f a = g a <~> ?Goal
A, B, A', B': Type f, g: A -> B f', g': A' -> B' h: B <~> B' k: A <~> A' p: h o f == f' o k q: h o g == g' o k a: A
h (f a) = h (g a) <~> f' (k a) = g' (k a)
exact (equiv_concat_r (q a) _ oE equiv_concat_l (p a)^ _).Defined.