nLab dependent pushout type

Context

Type theory

natural deduction metalanguage, practical foundations

  1. type formation rule
  2. term introduction rule
  3. term elimination rule
  4. computation rule

type theory (dependent, intensional, observational type theory, homotopy type theory)

syntax object language

computational trinitarianism =
propositions as types +programs as proofs +relation type theory/category theory

logicset theory (internal logic of)category theorytype theory
propositionsetobjecttype
predicatefamily of setsdisplay morphismdependent type
proofelementgeneralized elementterm/program
cut rulecomposition of classifying morphisms / pullback of display mapssubstitution
introduction rule for implicationcounit for hom-tensor adjunctionlambda
elimination rule for implicationunit for hom-tensor adjunctionapplication
cut elimination for implicationone of the zigzag identities for hom-tensor adjunctionbeta reduction
identity elimination for implicationthe other zigzag identity for hom-tensor adjunctioneta conversion
truesingletonterminal object/(-2)-truncated objecth-level 0-type/unit type
falseempty setinitial objectempty type
proposition, truth valuesubsingletonsubterminal object/(-1)-truncated objecth-proposition, mere proposition
logical conjunctioncartesian productproductproduct type
disjunctiondisjoint union (support of)coproduct ((-1)-truncation of)sum type (bracket type of)
implicationfunction set (into subsingleton)internal hom (into subterminal object)function type (into h-proposition)
negationfunction set into empty setinternal hom into initial objectfunction type into empty type
universal quantificationindexed cartesian product (of family of subsingletons)dependent product (of family of subterminal objects)dependent product type (of family of h-propositions)
existential quantificationindexed disjoint union (support of)dependent sum ((-1)-truncation of)dependent sum type (bracket type of)
logical equivalencebijection setobject of isomorphismsequivalence type
support setsupport object/(-1)-truncationpropositional truncation/bracket type
n-image of morphism into terminal object/n-truncationn-truncation modality
equalitydiagonal function/diagonal subset/diagonal relationpath space objectidentity type/path type
completely presented setsetdiscrete object/0-truncated objecth-level 2-type/set/h-set
setset with equivalence relationinternal 0-groupoidBishop set/setoid with its pseudo-equivalence relation an actual equivalence relation
equivalence class/quotient setquotientquotient type
inductioncolimitinductive type, W-type, M-type
higher inductionhigher colimithigher inductive type
-0-truncated higher colimitquotient inductive type
coinductionlimitcoinductive type
presettype without identity types
set of truth valuessubobject classifiertype of propositions
domain of discourseuniverseobject classifiertype universe
modalityclosure operator, (idempotent) monadmodal type theory, monad (in computer science)
linear logic(symmetric, closed) monoidal categorylinear type theory/quantum computation
proof netstring diagramquantum circuit
(absence of) contraction rule(absence of) diagonalno-cloning theorem
synthetic mathematicsdomain specific embedded programming language

homotopy levels

semantics

Homotopy theory

homotopy theory, (∞,1)-category theory, homotopy type theory

flavors: stable, equivariant, rational, p-adic, proper, geometric, cohesive, directed

models: topological, simplicial, localic, …

see also algebraic topology

Introductions

Definitions

Paths and cylinders

Homotopy groups

Basic facts

Theorems

Contents

Idea

In dependent type theory, the binary pushout type of functions f:ABf:A \to B and g:ACg:A \to C is the higher inductive type B A f,gCB \sqcup_{A}^{f, g} C generated by functions

in B:BB A f,gC\mathrm{in}_B:B \to B \sqcup_{A}^{f, g} C
in C:CB A f,gC\mathrm{in}_C:C \to B \sqcup_{A}^{f, g} C
glue: x:Ain(f(x))=in(g(x))\mathrm{glue}:\prod_{x:A} \mathrm{in}(f(x)) = \mathrm{in}(g(x))

However, by using large elimination for the boolean domain bool\mathrm{bool} on the codomain of the functions and by using the induction principle for the boolean domain on the functions themselves, one has a family of functions

ind bool(f,g): b:boolArec bool(B,C,b)\mathrm{ind}_\mathrm{bool}(f, g):\prod_{b:\mathrm{bool}} A \to \mathrm{rec}_\mathrm{bool}(B, C, b)

and the resulting binary pushout is the type

rec bool(B,C,0) A ind bool(f,g,0),ind bool(f,g,1)rec bool(B,C,1)\mathrm{rec}_\mathrm{bool}(B, C, 0) \sqcup_{A}^{\mathrm{ind}_\mathrm{bool}(f, g, 0), \mathrm{ind}_\mathrm{bool}(f, g, 1)} \mathrm{rec}_\mathrm{bool}(B, C, 1)

generated by functions

in: b:Brec bool(B,C,b)(rec bool(B,C,0) A ind bool(f,g,0),ind bool(f,g,1)rec bool(B,C,1))\mathrm{in}:\prod_{b:B} \mathrm{rec}_\mathrm{bool}(B, C, b) \to (\mathrm{rec}_\mathrm{bool}(B, C, 0) \sqcup_{A}^{\mathrm{ind}_\mathrm{bool}(f, g, 0), \mathrm{ind}_\mathrm{bool}(f, g, 1)} \mathrm{rec}_\mathrm{bool}(B, C, 1))
glue: x:Ain(ind bool(f,g,0,x))=in(ind bool(f,g,1,x))\mathrm{glue}:\prod_{x:A} \mathrm{in}(\mathrm{ind}_\mathrm{bool}(f, g, 0, x)) = \mathrm{in}(\mathrm{ind}_\mathrm{bool}(f, g, 1, x))

Thus, it suffices to define the binary pushout of a boolean-indexed family of functions f: x:boolAB(x)f:\prod_{x:\mathrm{bool}} A \to B(x), which is the higher inductive type generated by the constructors

in: b:boolB(b)(B(0) A f(0),f(1)B(1))\mathrm{in}:\prod_{b:\mathrm{bool}} B(b) \to (B(0) \sqcup_A^{f(0), f(1)} B(1))
glue: x:Ain(0,f(0,x))=in(1,f(1,x))\mathrm{glue}:\prod_{x:A} \mathrm{in}(0, f(0, x)) = \mathrm{in}(1, f(1, x))

For any elements x:Ax:A and y:Ay:A, the identity type x=yx = y is equivalent to the dependent sum type z:A(x=z)×(y=z)\sum_{z:A} (x = z) \times (y = z), and so the glue constructor can equivalently be expressed as

glue: x:A z:B(0) A f(0),f(1)B(1)(in(0,f(0,x))=z)×(in(1,f(1,x)=z))\mathrm{glue}:\prod_{x:A} \sum_{z:B(0) \sqcup_A^{f(0), f(1)} B(1)} (\mathrm{in}(0, f(0, x)) = z) \times (\mathrm{in}(1, f(1, x) = z))

By induction on the booleans, this is equivalently

glue: x:A z:B(0) A f(0),f(1)B(1) b:boolin(b,f(b,x))=z\mathrm{glue}:\prod_{x:A} \sum_{z:B(0) \sqcup_A^{f(0), f(1)} B(1)} \prod_{b:\mathrm{bool}} \mathrm{in}(b, f(b, x)) = z

which by the type theoretic axiom of choice is equivalently

glue: C:A(B(0) A f(0),f(1)B(1)) x:A b:boolin(b,f(b,x))=C(x)\mathrm{glue}:\sum_{C:A \to (B(0) \sqcup_A^{f(0), f(1)} B(1))} \prod_{x:A} \prod_{b:\mathrm{bool}} \mathrm{in}(b, f(b, x)) = C(x)

Unwrapping the dependent sum type, there are now three constructors for the binary pushout of a boolean-indexed family of functions f: x:boolAB(x)f:\prod_{x:\mathrm{bool}} A \to B(x):

in: b:boolB(b)(B(0) A f(0),f(1)B(1))\mathrm{in}:\prod_{b:\mathrm{bool}} B(b) \to (B(0) \sqcup_A^{f(0), f(1)} B(1))
gluehubs:A(B(0) A f(0),f(1)B(1))\mathrm{gluehubs}:A \to (B(0) \sqcup_A^{f(0), f(1)} B(1))
gluespokes: x:A b:boolin(b,f(b,x))=gluehubs(x)\mathrm{gluespokes}:\prod_{x:A} \prod_{b:\mathrm{bool}} \mathrm{in}(b, f(b, x)) = \mathrm{gluehubs}(x)

By generalizing this definition of binary pushouts from the boolean domain to any arbitrary type, one gets general dependent pushouts of an arbitrary family of functions with domain AA, which are also known as wide pushouts in category theory.

Definition

As a higher inductive type

Given a type AA, an index type II, a family of codomains B(i)B(i) indexed by i:Ii:I, and a family of functions f: i:IAB(i)f:\prod_{i:I} A \to B(i), the dependent pushout type or wide pushout type of (A,I,B,f)(A, I, B, f) is the higher inductive type x:I A,fB(x)\bigsqcup_{x:I}^{A, f} B(x) generated by the constructors

in: i:IB(i) x:I A,fB(x)\mathrm{in}:\prod_{i:I} B(i) \to \bigsqcup_{x:I}^{A, f} B(x)
gluehubs:A x:I A,fB(x)\mathrm{gluehubs}:A \to \bigsqcup_{x:I}^{A, f} B(x)
gluespokes: x:A i:Iin(i,f(i,x))=gluehubs(x)\mathrm{gluespokes}:\prod_{x:A} \prod_{i:I} \mathrm{in}(i, f(i, x)) = \mathrm{gluehubs}(x)

This is an example of the hubs-and-spokes construction of higher inductive types discussed in the HoTT book, and is an non-recursive higher inductive type.

Inference rules

Explicitly, this means that the inference rules for dependent pushout types are as follows:

type formation rule:

ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x)Γpushout(A,I,x.B,xz.f)type\frac{\Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x)}{\Gamma \vdash \mathrm{pushout}(A, I, x.B, x z.f) \; \mathrm{type}}

term introduction rules:

ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x)Γ,x:I,y:B(x)in(x,y):pushout(A,I,x.B,xz.f)type\frac{\Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x)}{\Gamma, x:I, y:B(x) \vdash \mathrm{in}(x, y):\mathrm{pushout}(A, I, x.B, x z.f) \; \mathrm{type}}
ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x)Γ,z:Agluehubs(z):pushout(A,I,x.B,xz.f)type\frac{\Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x)}{\Gamma, z:A \vdash \mathrm{gluehubs}(z):\mathrm{pushout}(A, I, x.B, x z.f) \; \mathrm{type}}
ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x)Γ,z:A,x:Igluespokes(z,x):in(x,f(x,z))= pushout(A,I,x.B,xz.f)gluehubs(z)type\frac{\Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x)}{\Gamma, z:A, x:I \vdash \mathrm{gluespokes}(z, x):\mathrm{in}(x, f(x, z)) =_{\mathrm{pushout}(A, I, x.B, x z.f)} \mathrm{gluehubs}(z) \; \mathrm{type}}

term elimination rule:

ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x) Γ,w:pushout(A,I,x.B,xz.f)C(w)type Γ,x:I,y:B(x)g(x,y):C(in(x,y))Γ,z:Ah(z):C(gluehubs(z)) Γ,z:A,x:Is(z,x):g(x,f(x,z))= C gluespokes(z,x)h(z)Γ,w:pushout(A,I,x.B,xz.f)ind (A,I,x.B,xz.f) w.C(xy.g,z.h,zx.s,w):C(w)\frac{ \begin{array}{c} \Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x) \\ \Gamma, w:\mathrm{pushout}(A, I, x.B, x z.f) \vdash C(w) \; \mathrm{type} \\ \Gamma, x:I, y:B(x) \vdash g(x, y):C(\mathrm{in}(x, y)) \quad \Gamma, z:A \vdash h(z):C(\mathrm{gluehubs}(z)) \\ \Gamma, z:A, x:I \vdash s(z, x):g(x, f(x, z)) =_{C}^{\mathrm{gluespokes}(z, x)} h(z) \end{array} }{\Gamma, w:\mathrm{pushout}(A, I, x.B, x z.f) \vdash \mathrm{ind}_{(A, I, x.B, x z.f)}^{w.C}(x y.g, z.h, z x.s, w):C(w)}

computation rules:

ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x) Γ,w:pushout(A,I,x.B,xz.f)C(w)type Γ,x:I,y:B(x)g(x,y):C(in(x,y))Γ,z:Ah(z):C(gluehubs(z)) Γ,z:A,x:Is(z,x):g(x,f(x,z))= C gluespokes(z,x)h(z)Γ,x:I,y:B(x)ind (A,I,x.B,xz.f) w.C(xy.g,z.h,zx.s,in(x,y))g(x,y):C(in(x,y))\frac{ \begin{array}{c} \Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x) \\ \Gamma, w:\mathrm{pushout}(A, I, x.B, x z.f) \vdash C(w) \; \mathrm{type} \\ \Gamma, x:I, y:B(x) \vdash g(x, y):C(\mathrm{in}(x, y)) \quad \Gamma, z:A \vdash h(z):C(\mathrm{gluehubs}(z)) \\ \Gamma, z:A, x:I \vdash s(z, x):g(x, f(x, z)) =_{C}^{\mathrm{gluespokes}(z, x)} h(z) \end{array} }{\Gamma, x:I, y:B(x) \vdash \mathrm{ind}_{(A, I, x.B, x z.f)}^{w.C}(x y.g, z.h, z x.s, \mathrm{in}(x, y)) \equiv g(x, y):C(\mathrm{in}(x, y))}
ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x) Γ,w:pushout(A,I,x.B,xz.f)C(w)type Γ,x:I,y:B(x)g(x,y):C(in(x,y))Γ,z:Ah(z):C(gluehubs(z)) Γ,z:A,x:Is(z,x):g(x,f(x,z))= C gluespokes(z,x)h(z)Γ,z:Aind (A,I,x.B,xz.f) w.C(xy.g,z.h,zx.s,gluehubs(z))h(z):C(gluehubs(z))\frac{ \begin{array}{c} \Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x) \\ \Gamma, w:\mathrm{pushout}(A, I, x.B, x z.f) \vdash C(w) \; \mathrm{type} \\ \Gamma, x:I, y:B(x) \vdash g(x, y):C(\mathrm{in}(x, y)) \quad \Gamma, z:A \vdash h(z):C(\mathrm{gluehubs}(z)) \\ \Gamma, z:A, x:I \vdash s(z, x):g(x, f(x, z)) =_{C}^{\mathrm{gluespokes}(z, x)} h(z) \end{array} }{\Gamma, z:A \vdash \mathrm{ind}_{(A, I, x.B, x z.f)}^{w.C}(x y.g, z.h, z x.s, \mathrm{gluehubs}(z)) \equiv h(z):C(\mathrm{gluehubs}(z))}
ΓAtypeΓItypeΓ,x:IB(x)typeΓ,x:I,z:Af(x,z):B(x) Γ,w:pushout(A,I,x.B,xz.f)C(w)type Γ,x:I,y:B(x)g(x,y):C(in(x,y))Γ,z:Ah(z):C(gluehubs(z)) Γ,z:A,x:Is(z,x):g(x,f(x,z))= C gluespokes(z,x)h(z)Γ,z:A,x:Iapd ind (A,I,x.B,xz.f) w.C(xy.g,z.h,zx.s)(gluespokes(z,x))s(z,x):g(x,f(x,z))= C gluespokes(z,x)h(z)\frac{ \begin{array}{c} \Gamma \vdash A \; \mathrm{type} \quad \Gamma \vdash I \; \mathrm{type} \quad \Gamma, x:I \vdash B(x) \; \mathrm{type} \quad \Gamma, x:I, z:A \vdash f(x, z):B(x) \\ \Gamma, w:\mathrm{pushout}(A, I, x.B, x z.f) \vdash C(w) \; \mathrm{type} \\ \Gamma, x:I, y:B(x) \vdash g(x, y):C(\mathrm{in}(x, y)) \quad \Gamma, z:A \vdash h(z):C(\mathrm{gluehubs}(z)) \\ \Gamma, z:A, x:I \vdash s(z, x):g(x, f(x, z)) =_{C}^{\mathrm{gluespokes}(z, x)} h(z) \end{array} }{\Gamma, z:A, x:I \vdash \mathrm{apd}_{\mathrm{ind}_{(A, I, x.B, x z.f)}^{w.C}(x y.g, z.h, z x.s)}(\mathrm{gluespokes}(z, x)) \equiv s(z, x):g(x, f(x, z)) =_{C}^{\mathrm{gluespokes}(z, x)} h(z)}

Here:

Examples

  • The positive dependent sum type of a family of types B(x)B(x) indexed by x:Ax:A is the dependent pushout type of the family of unique functions from the empty type to each B(x)B(x).

  • The union of a family of subtypes of a type AA is given by the dependent pushout of the dependent pullback of the embeddings into AA.

  • Binary pushout types are boolean-indexed dependent pushout types.

  • When the family of codomains B(x)B(x) indexed by x:Ix:I is a constant family of types, then the dependent pushout type are called dependent coequalizer types or wide coequalizer types.

Last revised on February 13, 2024 at 18:30:14. See the history of this page for a list of all contributions to it.