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]
Require Import Diagrams.Graph.Require Import Diagrams.Diagram.LocalOpen Scope nat_scope.LocalOpen Scope path_scope.(** * Sequence *)(** A Sequence is a sequence of maps from [X(n)] to [X(n+1)]. *)
Graph
Graph
nat -> nat -> Type
intros n m; exact (S n = m).Defined.DefinitionSequence := Diagram sequence_graph.
X: nat -> Type f: foralln : nat, X n -> X n.+1
Sequence
X: nat -> Type f: foralln : nat, X n -> X n.+1
Sequence
X: nat -> Type f: foralln : nat, X n -> X n.+1
sequence_graph -> Type
X: nat -> Type f: foralln : nat, X n -> X n.+1
forallij : sequence_graph,
sequence_graph i j -> ?obj i -> ?obj j
X: nat -> Type f: foralln : nat, X n -> X n.+1
forallij : sequence_graph,
sequence_graph i j -> X i -> X j
X: nat -> Type f: foralln : nat, X n -> X n.+1 i, j: sequence_graph p: sequence_graph i j
X i -> X j
X: nat -> Type f: foralln : nat, X n -> X n.+1 i: sequence_graph
X i -> X i.+1
apply f.Defined.(** A useful lemma to show than two sequences are equivalent. *)
D1, D2: Sequence H0: D1 0 <~> D2 0 Hn: forall (n : sequence_graph) (e : D1 n <~> D2 n),
{e' : D1 n.+1 <~> D2 n.+1 &
D2 _f 1 o e == e' o D1 _f 1}
D1 ~d~ D2
D1, D2: Sequence H0: D1 0 <~> D2 0 Hn: forall (n : sequence_graph) (e : D1 n <~> D2 n),
{e' : D1 n.+1 <~> D2 n.+1 &
D2 _f 1 o e == e' o D1 _f 1}
D1 ~d~ D2
D1, D2: Sequence H0: D1 0 <~> D2 0 Hn: forall (n : sequence_graph) (e : D1 n <~> D2 n),
{e' : D1 n.+1 <~> D2 n.+1 &
D2 _f 1 o e == e' o D1 _f 1} n: sequence_graph
D1 n -> D2 n
D1, D2: Sequence H0: D1 0 <~> D2 0 Hn: forall (n : sequence_graph) (e : D1 n <~> D2 n),
{e' : D1 n.+1 <~> D2 n.+1 &
D2 _f 1 o e == e' o D1 _f 1} n: sequence_graph