Lectures onType Theory
ch:higher-inductive-types: ch:higher-inductive-types
appendix sectionsolutions

ch:higher-inductive-types: ch:higher-inductive-types

exercise 68.1.

Induct on p:x=y. Transport in either direction then computes to the identity, so the first two types both reduce to u=v. The inductively generated path-over family over reflexivity also has the single constructor refl:u=u, hence is equivalent to ordinary identity by identity induction on its endpoint path. Transporting these equivalences along p proves all three presentations equivalent.

exercise 68.2.

Induct on p and q. In the reflexive case dependent paths are ordinary paths, so define hk by ordinary concatenation; the resulting base is reflrefl. For a dependent function f, double path induction on p,q reduces apdf(pq)=apdf(p)apdf(q) to the unit laws for reflexivity. This supplies the required dependent 2-path.

exercise 68.3.

Define apf2(r)=apapf(r), viewing apf as a function between path types. Identity induction on r gives apf2(reflp)reflapf(p). For dependent f, eliminate r with motive apdf(p)=rx.Papdf(q) and reflexive branch the reflexive dependent path. Its computation at r=refl is judgmental.

exercise 68.4.

Use circle induction with motive xf(x)=g(x) and base value p. The path-algebra transport formula says that the required dependent path over loop is exactly an equality apf(loop)p=papg(loop), which is the supplied coherence. The eliminator therefore yields H:Πxf(x)=g(x) with H(base)=p.

exercise 68.5.

Circle induction into xx=x takes base value loop. Transport of this value around loop is loop1looploop, which equals loop by inverse and unit laws, providing the loop datum. Call the resulting section H. If H=λx.reflx, evaluation at base gives loop=reflbase, contradicting loop nontriviality; hence the sections are distinct.

exercise 68.6.

First apdk(loop)=loopk by the circle recursor computation. Induct on m. The zero case uses preservation of reflexivity. For the successor, apdk(loopm+1)=apdk(loopm)apdk(loop) by functoriality; the induction hypothesis makes this loopkmloopk=loopk(m+1).

exercise 68.7.

Evaluation sends f to (f0,f1,apf(seg)). The interval recursor sends (x,y,p) back to the map with endpoint values x,y and segment image p. The recursor computations prove one composite. Interval induction, with its path coherence supplied by the segment computation, gives a homotopy from the other composite to f; function extensionality turns it into equality. Taking A=I identifies its function space data with the singleton Σy(0=y), so the interval is contractible.

exercise 68.8.

The interval construction defines s:(fg)(f=g). Its endpoint computation implies happly(sH)=H by function extensionality applied pointwise to the interval path. Thus s is a section of happly. For p:f=g, identity induction reduces s(happlyp)=p to the reflexive path; the interval recursor computes to the constant line there. Hence s is also a retraction and happly is an equivalence.

exercise 68.9.

For A=0 there are only the north and south point constructors and no meridians, exactly the coproduct 1+12. For A=1 there is one meridian from north to south, exactly the interval signature. Exchanging the two eliminators in each case gives inverse maps with constructorwise round trips. Since the interval is contractible, so is Susp1.

exercise 68.10.

Circle induction proves fgid. At the base, fg(base) computes to base. For the loop coherence, apg(loop)=merid(ff)merid(tt)1; applying f gives looprefl=loop because the two meridians are sent to loop and refl with the chosen orientation. This is precisely the datum required by circle induction. The other round trip is checked by suspension induction on north, south, and both meridians.

exercise 68.11.

Define Susph by sending north and south to themselves and merid(a) to merid(ha). Suspension induction proves Susp(id)id: both point components are reflexivity and the meridian coherence computes. The same induction proves Susp(kh)SuspkSusph, since both sides send each meridian to merid(k(ha)).

exercise 68.12.

With apex 0, the pushout has point constructors inl:AP and inr:BP and no glue paths. Its eliminator therefore asks exactly for an A-branch and a B-branch, with the two coproduct computation rules. The pushout and coproduct recursors define maps in both directions; induction on their two constructors proves the composites equal to the identities.

exercise 68.13.

Let the cone point be the image of :1. Pushout induction defines a path from it to every point: it is reflexivity on the unit summand and the glue path at a on the A summand. On the apex A, the required dependent coherence is the path-induction computation for glue. Thus this section contracts every point to the cone point, proving CA contractible.

exercise 68.14.

Send north and south to the two unit injections and send merid(a) to the pushout glue at a. Conversely send the two injections to north and south and every glue to merid(a). The point and path computation rules make both maps well typed. Suspension induction and pushout induction prove the respective composites on all constructors, so the maps form an equivalence.

exercise 68.15.

The join AB is the pushout of the two projections AA×BB. With A=B=S02, split on the first Boolean: the two cones glue along two points, yielding two distinguished points with two parallel connecting paths. One path may be contracted to a chosen meridian, leaving their composite as a single loop. Equivalently the join elimination principle reduces to that of SuspS0, which is S1; exchanging eliminators gives the equivalence.

exercise 68.16.

If P and Q have the same propositional-truncation specification, eliminate the constructor AP into the proposition Q to obtain f:PQ, and symmetrically obtain g:QP. Both gf and idP agree on every generator and have propositional codomain, hence are equal by the uniqueness clause. The same holds for fg, so PQ.

exercise 68.17.

Because A is already a set, the set-truncation eliminator extends idA to r:A0A with r(|a|0)=a. Thus r||0=idA. Set-truncation induction into the set A0 proves ||0r=id on generators; its path constructors are discharged by sethood. Hence the constructor is an equivalence.

exercise 68.18.

The HIT has a,b:S and p,q:a=b. Map it to the circle by a,bbase, prefl, and qloop. Map the circle back with base a and loop pq1:a=a (or the inverse orientation matching the first map). HIT induction checks the two point and path constructors; circle induction checks base and loop. The groupoid laws reduce both composites to the identities, giving SS1.

exercise 68.19.

The inclusion RR¯ induces A/RA/R¯. In the other direction, quotient induction interprets reflexivity by reflexivity, symmetry by path inverse, transitivity by path concatenation, and truncation because A/R is a set. Thus every generator of R¯ is already an identity in A/R. Both maps fix the point constructor, and quotient induction plus sethood makes the two composites identities.

exercise 68.20.

For inputs 0,,7, the states are (0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1). The successor steps from inputs 2 and 5 satisfy suc(r)=3 and therefore take the equality branch; every other step takes the strict-inequality branch. Direct substitution gives a=3q+r and r<3 in every column. Bounded uniqueness gives rem3(1)=1 and rem3(5)=2, so the proposed equality is false; it also gives rem3(8)=2, hence rem3(2)=rem3(8).

exercise 68.21.

If aa and bb modulo n, their differences are multiples of n, so (a+b)(a+b); quotient recursion therefore defines addition. Associativity, commutativity, and the zero laws descend from N because the quotient is a set. The proposed representative monus(n,remn(a)) has sum with a congruent to zero (with the zero remainder case interpreted as zero), so it supplies inverses. Hence the quotient is an abelian group.

exercise 68.22.

The quotient constructor gives q:AA/R. Quotient recursion defines r:A/RA by r(qa)=a and sends the path constructor associated to p:a=b to p. Then rq=idA judgmentally. Quotient induction proves qr=id on point constructors, and the target is a set, so no higher coherence remains. Thus q is an equivalence.

exercise 68.23.

For a family P:T2U, induction asks for p0:P(b), dependent loops u:p0=uPp0 and v:p0=vPp0, and a dependent 2-path over w:uv=vu comparing uv with vu. For constant PX, dependent paths reduce to ordinary paths, so data (x0,u,v,w) produce a recursor T2X. Its point and two loop computations follow from the HIT rules; its square computation is the specified w after the dependent-to-ordinary identifications.

exercise 68.24.

Induction asks for b:P(b), h:P(h), and for every x:S1 a dependent path s(x):b=s(x)Ph; the constant map c contributes no additional varying endpoint data. Recursion is the constant-family case: choose two points and a path between them for each x:S1. This is exactly the suspension eliminator for SuspS1, with b,h as its two poles and s(x) as its meridian, so exchanging constructors gives the comparison equivalence.

exercise 198.25.

A circle-algebra morphism F:S1S1 consists of a point F(base) and a path witnessing preservation of loop. The constant morphism has point base and sends loop to refl; the identity morphism has point base and sends loop to loop. If two morphisms F,G have equal loop data, a path between them is a homotopy h:Πx.Fx=Gx whose base component hbase satisfies apF(loop)hbase=hbaseapG(loop). Homotopy-initiality makes the type of such pairs contractible, so the given equality of loop data, whiskered with hbase=refl, determines the unique path of algebra morphisms.

Search the book

Type to search the local edition.