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]
(** * Classes *)(** ** Injective Functions *)ClassIsInjective {AB : Type} (f : A -> B)
:= injective : forallxy, f x = f y -> x = y.Arguments injective {A B} f {_} _ _.
A, B: Type f: A -> B IsInjective0: IsInjective f
forallxy : A, x <> y -> f x <> f y
A, B: Type f: A -> B IsInjective0: IsInjective f
forallxy : A, x <> y -> f x <> f y
A, B: Type f: A -> B IsInjective0: IsInjective f x, y: A np: x <> y q: f x = f y
Empty
A, B: Type f: A -> B IsInjective0: IsInjective f x, y: A np: x <> y q: f x = f y
f x = f y
exact q.Defined.Instanceisinj_idmapA : @IsInjective A A idmap
:= funxy => idmap.#[export] Hint Unfold IsInjective : typeclass_instances.
A, B, C: Type f: A -> B g: B -> C H: IsInjective g H0: IsInjective f
IsInjective (g o f)
A, B, C: Type f: A -> B g: B -> C H: IsInjective g H0: IsInjective f
IsInjective (g o f)
A, B, C: Type f: A -> B g: B -> C H: IsInjective g H0: IsInjective f x, y: A p: g (f x) = g (f y)
x = y
byapply (injective f), (injective g).Defined.#[export] Hint Immediate isinj_compose : typeclass_instances.
A, B, C: Type f: A -> B g: B -> C IsInjective0: IsInjective (g o f)
IsInjective f
A, B, C: Type f: A -> B g: B -> C IsInjective0: IsInjective (g o f)
IsInjective f
A, B, C: Type f: A -> B g: B -> C IsInjective0: IsInjective (g o f) x, y: A p: f x = f y
x = y
A, B, C: Type f: A -> B g: B -> C IsInjective0: IsInjective (g o f) x, y: A p: f x = f y
g (f x) = g (f y)
exact (ap g p).Defined.(** ** Antisymmetric Relations *)ClassAntiSymmetric {A : Type} (R : A -> A -> Type) : Type
:= antisymmetry : forallxy, R x y -> R y x -> x = y.Arguments antisymmetry {A} R {AntiSymmetric} x y _ _.