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.
(** * The category ω of (ℕ, ≤), and the chain categories [[n]] *)
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Import Category.Sigma.Univalent.Require Import Category.Morphisms Category.Univalent Category.Strict.Require Import HoTT.Basics HoTT.Types HoTT.Spaces.Nat.Core.Set Universe Polymorphism.Set Implicit Arguments.Generalizable All Variables.Set Asymmetric Patterns.LocalOpen Scope nat_scope.(** ** Definitions *)(** Quoting Wikipedia (http://en.wikipedia.org/wiki/Total_order##Chains): While chain is sometimes merely a synonym for totally ordered set, it can also refer to a totally ordered subset of some partially ordered set. The latter definition has a crucial role in Zorn's lemma. *)(** We take the convention that a "chain" is a totally ordered or linearly ordered set; the corresponding category on that set has, as morphisms, the order relation. *)(* N.B. The notation here (including that [[n]] have as objects the set [{0, 1, ..., n}]) was originally suggested by David Spivak. It's possible that we should pick a different or more common terminology. *)ModuleExport Core.(** *** [[ω]], the linear order on ℕ *)Definitionomega : PreCategory
:= @Build_PreCategory
nat
leq
leq_refl
(funxyzpq => leq_trans q p)
(fun_______ => path_ishprop _ _)
(fun___ => path_ishprop _ _)
(fun___ => path_ishprop _ _)
_.(** *** [[n]], a linear order on a finite set with [n + 1] elements *)(** Using [n + 1] elements allows us to agree with the common definition of an [n]-simplex, where a 0-simplex is a point, and a 1-simplex has two end-points, etc. *)Definitionchain (n : nat) : PreCategory
:= { m : omega | m <= n }%category.(** TODO: Possibly generalize this to arbitrary sets with arbitrary (total?) orders on them? *)ModuleExport ChainCategoryCoreNotations.Notation"[ n ]" := (chain n) : category_scope.EndChainCategoryCoreNotations.EndCore.ModuleExport Notations.Include ChainCategoryCoreNotations.EndNotations.ModuleUtf8.Export Notations.Notation"[ ∞ ]" := omega : category_scope.Notation"[ 'ω' ]" := omega : category_scope.EndUtf8.ModuleExport Strict.