napkin solutions > HoTT

Back to Chapter Selection

Table of Contents

  1. 1.2
  2. 1.6
  3. 1.8
  4. 1.10
  5. 1.12
  6. 1.13
  7. 1.15
  8. 2.2
  9. 2.3
  10. 2.6
  11. 2.8
  12. 2.9
  13. 2.14

1.2 #

HoTT-1.2. Derive the recursion principle for products rec𝐴×𝐵 using only the projections, and verify that the definitional equalities are valid. Do the same for Σ-types.Solution by RanolPThe exercise makes us define the recursor based on the projection of (maybe dependent) product types.1.rec𝐴×𝐵We have projectionspr1:𝐴×𝐵𝐴pr2:𝐴×𝐵𝐵with the following defining equationspr1((𝑎,𝑏)):𝑎pr2((𝑎,𝑏)):𝑏Here, our goal is to definerec𝐴×𝐵:Π𝐶:𝒰︀(𝐴𝐵𝐶)𝐴×𝐵𝐶and the definition isrec𝐴×𝐵(𝐶,𝑔,(𝑎,𝑏)):𝑔(pr1((𝑎,𝑏)))(pr2((𝑎,𝑏)))We can verify that the recursor above has the desired property by doing 𝛽-reduction on pr1 and pr2.After the reduction, we get 𝑔(𝑎)(𝑏), correctly Church-encoding the product.2.recΣ𝑥:𝐴𝐵(𝑥)We have projectionspr1:(Σ𝑥:𝐴𝐵(𝑥))𝐴pr2:Π𝑝:Σ(𝑥:𝐴)𝐵(𝑥)𝐵(pr1(𝑝))with the following defining equationspr1((𝑎,𝑏)):𝑎pr2((𝑎,𝑏)):𝑏Here, our goal is to definerecΣ𝑥:𝐴𝐵(𝑥):Π(𝐶:𝒰︀)(Π(𝑥:𝐴)𝐵(𝑥)𝐶)(Σ(𝑥:𝐴)𝐵(𝑥))𝐶and its definition isrecΣ𝑥:𝐴𝐵(𝑥)(𝐶,𝑔,(𝑎,𝑏)):𝑔(pr1((𝑎,𝑏)))(pr2((𝑎,𝑏)))Let’s verify that the definition concludes with the property we desired once more:By 𝛽-reducing on pr1 and pr2, we get recΣ𝑥:𝐴𝐵(𝑥)(𝐶,𝑔,(𝑎,𝑏)):𝑔(𝑎)(𝑏),and it correctly Church-encodes the dependent product.As shown above, the recursor can be defined with the projection functions of (maybe dependent) products.

1.6 #

HoTT 1.6. Show that if we define 𝐴×𝐵:𝑥:𝟐𝗋𝖾𝖼𝟐(𝒰︀,𝐴,𝐵,𝑥), then we can give a definition of 𝗂𝗇𝖽𝐴×𝐵 for which the definitional equalities stated in §1.5 hold propositionally (i.e. using equality types). (This requires the function extensionality axiom, which is introduced in §2.9.)𝗂𝗇𝖽𝐴×𝐵:𝐶:𝐴×𝐵𝒰︀((𝑥:𝐴)(𝑦:𝐵)𝐶((𝑥,𝑦)))𝑥:𝐴×𝐵𝐶(𝑥)𝗂𝗇𝖽𝐴×𝐵(𝐶,𝑔,(𝑎,𝑏)):𝑔(𝑎)(𝑏)(§1.5)𝖿𝗎𝗇𝖾𝗑𝗍:(𝑥:𝐴(𝑓(𝑥)=𝑔(𝑥)))(𝑓=𝑔)(§2.9)Solution by kiwiyouFrom definition of 𝐴×𝐵:𝑥:𝟐𝗋𝖾𝖼𝟐(𝒰︀,𝐴,𝐵,𝑥), we can natrally try defining our 𝗂𝗇𝖽𝐴×𝐵:𝗂𝗇𝖽𝐴×𝐵(𝐶,𝑔,𝑥):𝑔(𝑥(0𝟐))(𝑥(1𝟐))Sadly, 𝗂𝗇𝖽𝐴×𝐵 has a different type from 𝗂𝗇𝖽𝐴×𝐵 in §1.5:𝗂𝗇𝖽𝐴×𝐵:𝐶:𝐴×𝐵𝒰︀((𝑥:𝐴)(𝑦:𝐵)𝐶((𝑥,𝑦)))𝑥:𝐴×𝐵𝐶((𝑥(0𝟐),𝑥(1𝟐)))How can we get value of type 𝑥:𝐴×𝐵𝐶(𝑥) from that of type 𝑥:𝐴×𝐵𝐶((𝑥(0𝟐),𝑥(1𝟐)))?See this lemma, hidden in §2.3:Lemma 2.3.1 (Transport). Suppose that 𝑃 is a type family over 𝐴 and that 𝑝:𝑥=𝐴𝑦. Then there is a function 𝑝:𝑃(𝑥)𝑃(𝑦).So if we have 𝑝:(𝑥(0𝟐),𝑥(1𝟐))=𝑥, we can transport 𝐶((𝑥(0𝟐),𝑥(1𝟐))) into 𝐶(𝑥). Let’s call this 𝑝 as 𝗎𝗇𝗂𝗊𝐴×𝐵.𝗎𝗇𝗂𝗊𝐴×𝐵:𝑥:𝐴×𝐵((𝑥(0𝟐),𝑥(1𝟐))=𝑥)Since we don’t have judgemental equality, it’s time for the function extensionality axiom.𝗎𝗇𝗂𝗊𝐴×𝐵(𝑥):𝖿𝗎𝗇𝖾𝗑𝗍(𝗂𝗇𝖽𝟐(𝜆𝑦.((𝑥(0𝟐),𝑥(1𝟐))(𝑦)=𝑥(𝑦)),𝗋𝖾𝖿𝗅𝑥(0𝟐),𝗋𝖾𝖿𝗅𝑥(1𝟐)))Verify the type by case analysis:(𝜆𝑦.((𝑥(0𝟐),𝑥(1𝟐))(𝑦)=𝑥(𝑦))(0𝟐)((𝑥(0𝟐),𝑥(1𝟐))(0𝟐)=𝑥(0𝟐))((𝗂𝗇𝖽𝟐(𝗋𝖾𝖼𝟐(𝒰︀,𝐴,𝐵),𝑥(0𝟐),𝑥(1𝟐)))(0𝟐)=𝑥(0𝟐))(𝑥(0𝟐)=𝑥(0𝟐))𝗋𝖾𝖿𝗅𝑥(0𝟐):(𝜆𝑦.((𝑥(0𝟐),𝑥(1𝟐))(𝑦)=𝑥(𝑦))(0𝟐)(𝜆𝑦.((𝑥(0𝟐),𝑥(1𝟐))(𝑦)=𝑥(𝑦))(1𝟐)((𝑥(0𝟐),𝑥(1𝟐))(1𝟐)=𝑥(1𝟐))((𝗂𝗇𝖽𝟐(𝗋𝖾𝖼𝟐(𝒰︀,𝐴,𝐵),𝑥(0𝟐),𝑥(1𝟐)))(1𝟐)=𝑥(1𝟐))(𝑥(1𝟐)=𝑥(1𝟐))𝗋𝖾𝖿𝗅𝑥(1𝟐):(𝜆𝑦.((𝑥(0𝟐),𝑥(1𝟐))(𝑦)=𝑥(𝑦))(1𝟐)Finally, we have 𝗎𝗇𝗂𝗊𝐴×𝐵(𝑥):𝐶((𝑥(0𝟐),𝑥(1𝟐)))𝐶(𝑥) to complete 𝗂𝗇𝖽𝐴×𝐵. This is a new definition:𝗂𝗇𝖽𝐴×𝐵:𝐶:𝐴×𝐵𝒰︀((𝑥:𝐴)(𝑦:𝐵)𝐶((𝑥,𝑦)))𝑥:𝐴×𝐵𝐶(𝑥)𝗂𝗇𝖽𝐴×𝐵(𝐶,𝑔,𝑥):𝗎𝗇𝗂𝗊𝐴×𝐵(𝑥)(𝑔(𝑥(0𝟐))(𝑥(1𝟐)))Remaining question: 𝗂𝗇𝖽𝐴×𝐵=𝗂𝗇𝖽𝐴×𝐵 holds?

1.8 #

HoTT-1.8. Define multiplication and exponentiation using rec. Verify that (,+,0,×,1) is a semiring using only ind. You will probably also need to use symmetry and transitivity of equality, Lemmas 2.1.1 and 2.1.2.Solution by finalchildDefinition of multiplication and exponentiationDefine multiplication and exponentiation as follows. This is just like how we defined add. Note that exponen­tiate has an extra step that reverses the order of parameters.multiply:rec(,𝜆𝑛.0,𝜆𝑚.𝜆𝑔.𝜆𝑛.𝑛+𝑔(𝑛))exponentiate:𝜆𝑚.𝜆𝑛.rec(,𝜆𝑚.1,𝜆𝑛.𝜆𝑔.𝜆𝑚.𝑚×𝑔(𝑚))(𝑛,𝑚)(,+,0,×,1) is a semiringNow we verify that (,+,0,×,1) is a semiring. Note that summon(𝑇) is a notation for summoning a known proof that becomes type 𝑇 with appropriate arguments.(,+,0) is a commutative monoidProve 𝑖+𝑗+𝑘=𝑖+(𝑗+𝑘) with induction.assoc+:𝑖,𝑗,𝑘:𝑖+𝑗+𝑘=𝑖+(𝑗+𝑘)assoc+:ind(𝜆(𝑖:).𝑗,𝑘:𝑖+𝑗+𝑘=𝑖+(𝑗+𝑘),assoc+,0,assoc+,s)assoc+,0:𝑗,𝑘:0+𝑗+𝑘=0+(𝑗+𝑘)assoc+,0(𝑗,𝑘):refl𝑗+𝑘assoc+,s:𝑖:(𝑗,𝑘:𝑖+𝑗+𝑘=𝑖+(𝑗+𝑘))succ(𝑖)+𝑗+𝑘=succ(𝑖)+(𝑗+𝑘)assoc+,s(,𝑖,𝑗,𝑘):apsucc((𝑗,𝑘))Prove that 0 is the identity of (,+).𝜆𝑖.refl𝑖:𝑖:0+𝑖=𝑖ind(𝜆(𝑖:). 𝑖+0=𝑖,refl0,𝜆𝑖.𝜆.apsucc()):𝑖:𝑖+0=𝑖Prove 𝑖+𝑗=𝑗+𝑖 with double induction.commut+:𝑖,𝑗:𝑖+𝑗=𝑗+𝑖commut+:ind(𝜆(𝑖:).𝑗:𝑖+𝑗=𝑗+𝑖,commut+,0,commut+,s)commut+,0:𝑗:0+𝑗=𝑗+0commut+,0(𝑗):summon(𝑗+0=𝑗))1commut+,s:𝑖:(𝑗:𝑖+𝑗=𝑗+𝑖)𝑗:succ(𝑖)+𝑗=𝑗+succ(𝑖)commut+,s(𝑖,1):ind(𝜆(𝑗:).succ(𝑖)+𝑗=𝑗+succ(𝑖),summon(succ(𝑖)+0=succ(𝑖)),commut_inner(𝑖,1))commut_inner:𝑖:(𝑗:𝑖+𝑗=𝑗+𝑖)𝑗:(succ(𝑖)+𝑗=𝑗+succ(𝑖))succ(𝑖)+succ(𝑗)=succ(𝑗)+succ(𝑖)Prove commut_inner(𝑖,1,𝑗,2) with the composition of three equalities:succ(𝑖+succ(𝑗))=succ2(𝑗+𝑖)(by1)=succ2(𝑖+𝑗)(by1)=succ(𝑗+succ(𝑖))(by2)commut_inner(𝑖,1,𝑗,2):apsucc(1(succ(𝑗)))apsucc2(1(𝑗))1apsucc(2)Axioms on ×Prove that 1 is the identity of (,×).𝜆𝑖.summon(𝑖+0=𝑖):𝑖:1×𝑖=𝑖ind(𝜆(𝑖:). 𝑖×1=𝑖,refl0,𝜆𝑖.𝜆.apsucc()):𝑖:𝑖×1=𝑖Prove 0 annihilates multiplication.𝜆𝑖.refl0:𝑖:0×𝑖=0ind(𝜆(𝑖:). 𝑖×0=0,refl0,𝜆𝑖.𝜆.):𝑖:𝑖×0=0Prove distribution.distrbl:𝑖,𝑗,𝑘:𝑖×(𝑗+𝑘)=𝑖×𝑗+𝑖×𝑘distrbl:ind(𝜆(𝑖:).𝑗,𝑘:𝑖×(𝑗+𝑘)=𝑖×𝑗+𝑖×𝑘,distrbl0,distrbls)distrbl0:𝑗,𝑘:0×(𝑗+𝑘)=0×𝑗+0×𝑘distrbl0(𝑗,𝑘):refl0distrbls:𝑖:(𝑗,𝑘:𝑖×(𝑗+𝑘)=𝑖×𝑗+𝑖×𝑘)𝑗,𝑘:succ(𝑖)×(𝑗+𝑘)=succ(𝑖)×𝑗+succ(𝑖)×𝑘Prove distrbl𝑠(𝑖,,𝑗,𝑘) by the composition of equalities:𝑗+𝑘+𝑖×(𝑗+𝑘)=𝑗+𝑘+(𝑖×𝑗+𝑖×𝑘)(by)=𝑗+(𝑘+𝑖×𝑗+𝑖×𝑘)(byassoc+)=𝑗+(𝑖×𝑗+𝑘+𝑖×𝑘)(bycommut+)=𝑗+(𝑖×𝑗+(𝑘+𝑖×𝑘))(byassoc+)=𝑗+𝑖×𝑗+(𝑘+𝑖×𝑘)(byassoc+)I omit the explicit term for this composition. The components are just , commut+ and assoc+ wrapped with ap.distribr:𝑖,𝑗,𝑘:(𝑖+𝑗)×𝑘=𝑖×𝑘+𝑗×𝑘distribr:ind(𝜆(𝑖:).𝑗,𝑘:(𝑖+𝑗)×𝑘=𝑖×𝑘+𝑗×𝑘,distribr0,distribrs)distribr0:𝑗,𝑘:(0+𝑗)×𝑘=0×𝑘+𝑗×𝑘distribr0(𝑗,𝑘):refl𝑗×𝑘distribrs:𝑖:(𝑗,𝑘:(𝑖+𝑗)×𝑘=𝑖×𝑘+𝑗×𝑘)𝑗,𝑘:(succ(𝑖)+𝑗)×𝑘=succ(𝑖)×𝑘+𝑗×𝑘Prove distribr𝑠(𝑖,,𝑗,𝑘) by the composition of equalities:𝑘+(𝑖+𝑗)×𝑘=𝑘+(𝑖×𝑘+𝑗×𝑘)(by)=𝑘+𝑖×𝑘+𝑗×𝑘(byassoc+)Prove 𝑖×𝑗×𝑘=𝑖×(𝑗×𝑘) with induction.assoc×:𝑖,𝑗,𝑘:𝑖×𝑗×𝑘=𝑖×(𝑗×𝑘)assoc×:ind(𝜆(𝑖:).𝑗,𝑘:𝑖×𝑗×𝑘=𝑖×(𝑗×𝑘),assoc×,0,assoc×,s)assoc×,0:𝑗,𝑘:0×𝑗×𝑘=0×(𝑗×𝑘)assoc×,0(𝑗,𝑘):refl0assoc×,s:𝑖:(𝑗,𝑘:𝑖×𝑗×𝑘=𝑖×(𝑗×𝑘))succ(𝑖)×𝑗×𝑘=succ(𝑖)×(𝑗×𝑘)Prove assoc×,s(𝑖,) by the composition of equalities:(𝑗+𝑖×𝑗)×𝑘=𝑗×𝑘+𝑖×𝑗×𝑘(bydistribr)=𝑗×𝑘+𝑖×(𝑗×𝑘)(by)Therefore, (,+,0,×,1) is a semiring.

1.10 #

HoTT-1.10. Show that the Ackermann function ack: is definable using only rec satisfying the following equations:ack(0,𝑛)succ(𝑛)ack(succ(𝑚),0)ack(𝑚,1)ack(succ(𝑚),succ(𝑛))ack(𝑚,ack(succ(𝑚),𝑛))Solution by finalchildack:rec(,succ,𝜆(𝑚:). 𝜆(𝑓:). rec(,𝑓(1),𝜆(𝑛:). 𝜆(𝑐:). 𝑓(𝑐)))Verify the equations:ack(0)succack(succ(𝑚))rec(,ack(𝑚,1),𝜆(𝑛:). 𝜆(𝑐:). ack(𝑚,𝑐))Thusack(0,𝑛)succ(𝑛)ack(succ(𝑚),0)ack(𝑚,1)ack(succ(𝑚),succ(𝑛))(𝜆(𝑛:). 𝜆(𝑐:). ack(𝑚,𝑐))(𝑛,ack(succ(𝑚),𝑛))ack(𝑚,ack(succ(𝑚),𝑛))Note that we folded some instances of recursive calls implicitly.

1.12 #

HoTT-1.12. Using the propositions as types interpretation, derive the following tautologies.(i) If 𝐴, then (if 𝐵 then 𝐴).(ii) If 𝐴, then not (not 𝐴).(iii) If (not 𝐴 or not 𝐵), then not (𝐴 and 𝐵).Solution by Jineon Baek (백진언) (xtalclr)𝖨:𝐴(𝐵𝐴)𝖨:≡𝜆(𝑎:𝐴).(𝜆(𝑏:𝐵).𝑎)In words: Assume evidence 𝑎 of 𝐴. Then assuming the evidence 𝑏 of 𝐵, the statement 𝐴 is true because 𝑎 is an evidence of 𝐴.𝖨𝖨:𝐴((𝐴𝟎)𝟎)𝖨𝖨:≡𝜆(𝑎:𝐴).(𝜆(𝑛:(𝐴𝟎)).𝑛(𝑎))In words: Assume evidence 𝑎 of 𝐴. Assuming the evidence 𝑛 of not 𝐴, we get contradiction by evidence 𝑎 of 𝐴 and 𝑛 of not 𝐴. So it is impossible that not 𝐴.𝖨𝖨𝖨:((𝐴𝟎)+(𝐵𝟎))(𝐴×𝐵)𝟎𝖨𝖨𝖨:≡𝜆𝑥.𝗋𝖾𝖼(𝐴𝟎)+(𝐵𝟎)((𝐴×𝐵)𝟎,𝖼𝖺𝗌𝖾𝑎,𝖼𝖺𝗌𝖾𝑏,𝑥) where𝖼𝖺𝗌𝖾𝑎:(𝐴𝟎)(𝐴×𝐵)𝟎𝖼𝖺𝗌𝖾𝑎:≡𝜆(𝑐:𝐴𝟎).𝜆(𝑝:𝐴×𝐵).𝑐(𝗉𝗋1(𝑝))𝖼𝖺𝗌𝖾𝑏:(𝐵𝟎)(𝐴×𝐵)𝟎𝖼𝖺𝗌𝖾𝑏:≡𝜆(𝑐:𝐵𝟎).𝜆(𝑝:𝐴×𝐵).𝑐(𝗉𝗋2(𝑝))In words: Assume we are given either a evidence of not 𝐴 or a evidence of not 𝐵.First assume the evidence 𝑐 of not 𝐴. Then that both 𝐴 and 𝐵 are true is impossible: since the evidence 𝑝 of both 𝐴 and 𝐵 gives the evidence 𝗉𝗋1(𝑝) of 𝐴, we get contradiction by evidence 𝗉𝗋1(𝑝) of 𝐴 and 𝑐 of not 𝐴.Now assume the evidence 𝑐 of not 𝐵. Then that both 𝐴 and 𝐵 are true is impossible: since the evidence 𝑝 of both 𝐴 and 𝐵 gives the evidence 𝗉𝗋2(𝑝) of 𝐵, we get contradiction by evidence 𝗉𝗋2(𝑝) of 𝐵 and 𝑐 of not 𝐵.So in either case, that both 𝐴 and 𝐵 are true is impossible. So it is not that both 𝐴 and 𝐵 holds.Solution by Jihyeon Kim (김지현) (simnalamburt)𝖨𝖨𝖨2:((𝐴𝟎)+(𝐵𝟎))(𝐴×𝐵)𝟎𝖨𝖨𝖨2(𝗂𝗇𝗅(𝗇𝖺)):≡𝜆𝑝.𝗇𝖺(𝗉𝗋1(𝑝))𝖨𝖨𝖨2(𝗂𝗇𝗋(𝗇𝖻)):≡𝜆𝑝.𝗇𝖻(𝗉𝗋2(𝑝))In words: Assume we are given evidence 𝑥:(¬𝐴+¬𝐵) that either ¬𝐴 holds or ¬𝐵 holds.To show ¬(𝐴×𝐵), let 𝑝:𝐴×𝐵 be evidence that both 𝐴 and 𝐵 hold. We proceed by cases on 𝑥.If 𝑥 is 𝗂𝗇𝗅(𝗇𝖺) with 𝗇𝖺:¬𝐴, then from 𝑝:𝐴×𝐵 we get 𝗉𝗋1(𝑝):𝐴. Applying 𝗇𝖺 to 𝗉𝗋1(𝑝) yields 0.If 𝑥 is 𝗂𝗇𝗋(𝗇𝖻) with 𝗇𝖻:¬𝐵, then from 𝑝:𝐴×𝐵 we get 𝗉𝗋2(𝑝):𝐵. Applying 𝗇𝖻 to 𝗉𝗋2(𝑝) yields 0.In either case, assuming 𝐴×𝐵 leads to a 0. Therefore, from (¬𝐴+¬𝐵) we conclude ¬(𝐴×𝐵).

1.13 #

HoTT 1.13. Using propositions-as-types, derive the double negation of the principle of excluded middle, i.e. prove not (not (P or not P)).Solution by kiwiyouWe need to find a witness of the type not (not (P or not P)).¬¬𝖫𝖤𝖬:𝑃:𝒰︀((𝑃+(𝑃𝟎))𝟎)𝟎¬¬𝖫𝖤𝖬:𝜆𝑃. (:((𝑃+(𝑃𝟎))𝟎)𝟎)Our first hole must get a function of type (𝑃+(𝑃𝟎))𝟎 and derive a contradiction.¬¬𝖫𝖤𝖬:𝜆𝑃. 𝜆𝑓. (:𝟎)We must use 𝑓 to derive a contradiction as we cannot prove a contradiction directly. Note that 𝑓 derives a contradiction from a witness of either 𝑃 or 𝑃𝟎. 𝑃 is not inhabited yet, so we can try constructing a function of type 𝑃𝟎.¬¬𝖫𝖤𝖬:𝜆𝑃. 𝜆𝑓. 𝑓(𝗂𝗇𝗋(:𝑃𝟎))Our hole now must receive a witness of 𝑃 and derive a contradiction. This time 𝑓 can receive a witness of 𝑃.¬¬𝖫𝖤𝖬:𝜆𝑃. 𝜆𝑓. 𝑓(𝗂𝗇𝗋(𝜆𝑝. 𝑓(𝗂𝗇𝗅(𝑝))))

1.15 #

HoTT-1.15. Show that the indiscernibility of identicals follows from path induction.Path induction:ind=𝐴:𝐶:Π(𝑥,𝑦:𝐴)(𝑥=𝐴𝑦)𝒰︀(Π(𝑥:𝐴)𝐶(𝑥,𝑥,refl𝑥))(𝑥,𝑦:𝐴)(𝑝:𝑥=𝐴𝑦)𝐶(𝑥,𝑦,𝑝)with equalityind=𝐴(𝐶,𝑐,𝑥,𝑥,refl𝑥):𝑐(𝑥)Indiscernibility of identicals: for every family𝐶:𝐴𝒰︀there is a function𝑓:(𝑥,𝑦:𝐴)(𝑝:𝑥=𝐴𝑦)𝐶(𝑥)𝐶(𝑦)such that𝑓(𝑥,𝑥,refl𝑥):id𝐶(𝑥)Solution by RanolPHole Notation (:𝜏). To show the reasoning step, we’ll present a hole notation, which displays the current goal(s) typed 𝜏. The hole may be untyped if it’s too obvious or annoying to write explicitly. On the reasoning step, we’ll replace hole(s) and may introduce new hole(s).The goal is to construct such 𝑓. Let’s solve step-by-step.Given type family 𝐶:𝐴𝒰︀,𝑓::(𝑥,𝑦:𝐴)(𝑝:𝑥=𝐴𝑦)𝐶(𝑥)𝐶(𝑦)ind=𝐴()():(𝑥,𝑦:𝐴)(𝑝:𝑥=𝐴𝑦)𝐶(𝑥)𝐶(𝑦)ind=𝐴(𝜆𝑥.𝜆𝑦.𝜆𝑝.𝐶(𝑥)𝐶(𝑦))(:Π(𝑥:𝐴)𝐶(𝑥)𝐶(𝑥))ind=𝐴(𝜆𝑥.𝜆𝑦.𝜆𝑝.𝐶(𝑥)𝐶(𝑦))(𝜆𝑥.(:𝐶(𝑥)𝐶(𝑥)))ind=𝐴(𝜆𝑥.𝜆𝑦.𝜆𝑝.𝐶(𝑥)𝐶(𝑦))(𝜆𝑥.id𝐶(𝑥))Let’s verify 𝑓(𝑥,𝑥,refl𝑥)id𝐶(𝑥).𝑓(𝑥,𝑥,refl𝑥)ind=𝐴(𝜆𝑥.𝜆𝑦.𝜆𝑝.𝐶(𝑥)𝐶(𝑦))(𝜆𝑥.id𝐶(𝑥))(𝑥,𝑥,refl𝑥)(𝜆𝑥.id𝐶(𝑥))(𝑥)id𝐶(𝑥)So, the indicernibility of identicals can be derived from the path induction.

2.2 #

HoTT-2.2. Show that the three equalities of proofs constructed in the previous exercise form a commutative triangle. In other words, if the three definitions of concatenation are denoted by (𝑝 1 𝑞), (𝑝 2 𝑞), and (𝑝 3 𝑞), then the concatenated equality(𝑝 1 𝑞)=(𝑝 2 𝑞)=(𝑝 3 𝑞)is equal to the equality (𝑝 1 𝑞)=(𝑝 3 𝑞).Solution by finalchild𝑒12 𝑥 𝑦 𝑝 𝑧 𝑞:(𝑝 1 𝑞)=(𝑝 2 𝑞)𝑒23 𝑥 𝑦 𝑝 𝑧 𝑞:(𝑝 2 𝑞)=(𝑝 3 𝑞)𝑒13 𝑥 𝑦 𝑝 𝑧 𝑞:(𝑝 1 𝑞)=(𝑝 3 𝑞)Goal: for all 𝑥, 𝑦, 𝑝, 𝑧, 𝑞,(𝑒12 𝑥 𝑦 𝑝 𝑧 𝑞) (𝑒23 𝑥 𝑦 𝑝 𝑧 𝑞)=𝑒13 𝑥 𝑦 𝑝 𝑧 𝑞By induction on 𝑝 and 𝑞, the goal becomes(𝑒12 𝑥 𝑥 refl𝑥 𝑥 refl𝑥) (𝑒23 𝑥 𝑥 refl𝑥 𝑥 refl𝑥)=𝑒13 𝑥 𝑥 refl𝑥 𝑥 refl𝑥which isreflrefl𝑥 reflrefl𝑥=reflrefl𝑥which is true, judgementally.

2.3 #

HoTT-2.3. Give a fourth, different, proof of Lemma 2.1.2, and prove that it is equal to the others.Lemma 2.1.2. For every type 𝐴 and every 𝑥,𝑦,𝑧:𝐴, there is a function(𝑥=𝑦)(𝑦=𝑧)(𝑥=𝑧)Solution by Jihyeon Kim (김지현) (simnalamburt)𝑥,𝑦,𝑧:𝐴 이고 𝑝:𝑥=𝑦, 𝑞:𝑦=𝑧 하자. Type family 𝑃:𝐴𝒰︀ 𝑃(𝑤)(𝑥=𝑤) 정의하면, 𝑝:𝑃(𝑦) 된다. 이제 transport 이용한 번째 경로 연결(concatenation) 다음과 같이 정의하자.𝑝4𝑞:𝑥=𝑧𝑝4𝑞:transport𝑃(𝑞,𝑝)이제 정의가 기존의 경로 연결 𝑝𝑞 같음을 보여야 한다. , 다음을 증명해야 한다.𝑝4𝑞=𝑝𝑞𝑞 대한 경로 귀납(path induction) 사용하자. 𝑧 𝑦 , 𝑞 refl𝑦 가정하면 충분하다.1.좌변: transport 정의에 의해, 경로가 refl transport 함수는 항등 함수(identity function) 정의상 같다(definitionally equal).𝑝4refl𝑦transport𝑃(refl𝑦,𝑝)𝑝2.우변: 기존 경로 연결의 우측 단위 법칙(right unit law) 의해 다음이 성립한다.𝑝refl𝑦=𝑝따라서 𝑞refl𝑦 𝑝=𝑝 되어 등식이 성립하므로, path induction 의해 모든 𝑞 대해 𝑝4𝑞=𝑝𝑞 이다.

2.6 #

HoTT-2.6. Prove that if 𝑝:𝑥=𝑦, then the function (𝑝 ):(𝑦=𝑧)(𝑥=𝑧) is an equivalence.Solution by finalchildWe have a quasi-inverse given by (𝑟:𝑥=𝑧)𝑝1 𝑟.We prove the properties needed:((𝑟:𝑥=𝑧)𝑝1 𝑟)((𝑞:𝑦=𝑧)𝑝 𝑞)((𝑞:𝑦=𝑧)𝑝1 (𝑝 𝑞))id𝑦=𝑧((𝑞:𝑦=𝑧)𝑝 𝑞)((𝑟:𝑥=𝑧)𝑝1 𝑟)((𝑟:𝑥=𝑧)𝑝 (𝑝1 𝑟))id𝑥=𝑧

2.8 #

HoTT-2.8. State and prove an analogue of Theorem 2.6.5 for coproductsQuotation of §2.6pair=:(pr1(𝑥)=pr1(𝑦))×(pr2(𝑥)=pr2(𝑦))(𝑥=𝑦)Finally, we consider the functoriality of ap under cartesian products. Suppose given types 𝐴,𝐵,𝐴,𝐵 and functions 𝑔:𝐴𝐴 and :𝐵𝐵; then we can define a function 𝑓:𝐴×𝐵𝐴×𝐵 by 𝑓(𝑥):(𝑔(pr1𝑥),(pr2𝑥)).Theorem 2.6.5. In the above situation, given 𝑥,𝑦:𝐴×𝐵 and 𝑝:pr1𝑥=pr1𝑦 and 𝑞:pr2𝑥=pr2𝑦, we have𝑓(pair=(𝑝,𝑞))=𝑓(𝑥)=𝑓(𝑦)pair=(𝑔(𝑝),(𝑞)))Solution by RanolPThe core property of the theorem above is followings are same:apply(𝐴𝐴and𝐵𝐵) then compose(𝐴and𝐵𝐴×𝐵)compose(𝐴and𝐵𝐴×𝐵) then apply(𝐴×𝐵𝐴×𝐵).Thus, the analogue for coproducts is followings are same:apply(𝐴𝐴or𝐵𝐵) then compose(𝐴or𝐵𝐴+𝐵)compose(𝐴or𝐵𝐴+𝐵) then apply(𝐴+𝐵𝐴+𝐵).Suppose given types 𝐴,𝐵,𝐴,𝐵 and functions 𝑔:𝐴𝐴 and :𝐵𝐵 then we can define a function 𝑓:𝐴+𝐵𝐴+𝐵 by case analysis:𝑓(inl(𝑎)):inl(𝑔(𝑎))𝑓(inr(𝑏)):inr((𝑏))In above situation1.Given 𝑎,𝑎:𝐴 and 𝑝:𝑎=𝑎, we haveap𝑓(apinl(𝑝))=apinl(ap𝑔(𝑝))Proof. by path induction on 𝑝,ap𝑓(apinl(refl𝑎))=apinl(ap𝑔(refl𝑎))ap𝑓(reflinl(𝑎))=apinl(refl𝑔(𝑎))reflinl(𝑔(𝑎))=reflinl(𝑔(𝑎))2.Given 𝑏,𝑏:𝐵 and 𝑝:𝑏=𝑏, we haveap𝑓(apinr(𝑝))=apinr(ap(𝑝))Proof. by path induction on 𝑝,ap𝑓(apinr(refl𝑏))=apinr(ap(refl𝑏))ap𝑓(reflinr(𝑏))=apinr(refl(𝑏))reflinr((𝑏))=reflinr((𝑏))

2.9 #

HoTT-2.9. Prove that coproducts have the expected universal property,(𝐴+𝐵𝑋)(𝐴𝑋)×(𝐵𝑋).Can you generalize this to an equivalence involving dependent functions?Solution by Jihyeon Kim (김지현) (simnalamburt)먼저 비의존 함수(non-dependent function) 버전을 증명하자. 함수 split (forward, ) join (backward, ) 다음과 같이 정의한다.split:(𝐴+𝐵𝑋)(𝐴𝑋)×(𝐵𝑋)split():(inl,inr)join:(𝐴𝑋)×(𝐵𝑋)(𝐴+𝐵𝑋)join((𝑔,)):rec𝐴+𝐵(𝑋,𝑔,)이제 함수가 서로 역함수(inverse)임을 보이자.1.splitjoinid: 임의의 𝑥 대하여, by induction on 𝑥, (𝑔,)𝑥split(join((𝑔,)))(join((𝑔,))inl,join((𝑔,))inr)(𝜆𝑎.𝑔(𝑎),𝜆𝑏.(𝑏))(𝑔,)(by η-conversion)So, split(join((𝑔,)))=(𝑔,).2.joinsplitid: 임의의 𝑓:𝐴+𝐵𝑋 대하여, 모든 𝑥:𝐴+𝐵 에서 join(split(𝑓))(𝑥)=𝑓(𝑥) 임을 𝑥 대한 귀납법으로 보인다.𝑥inl(𝑎) : join(split(𝑓))(inl(𝑎))(𝑓inl)(𝑎)𝑓(inl(𝑎))𝑥inr(𝑏) : join(split(𝑓))(inr(𝑏))(𝑓inr)(𝑏)𝑓(inr(𝑏))점별로(pointwise) 같으므로, 함수 외연성(function extensionality) 의해 join(split(𝑓))=𝑓 이다.다음으로, 이를 의존 함수(dependent function) 버전으로 일반화하자.임의의 Type family 𝑃:𝐴+𝐵𝒰︀ 대하여 다음이 성립한다.(Π𝑥:𝐴+𝐵𝑃(𝑥))(Π𝑎:𝐴𝑃(inl(𝑎)))×(Π𝑏:𝐵𝑃(inr(𝑏)))증명 구조는 위와 완전히 동일하다.splitΠ():(𝜆𝑎.(inl(𝑎)),𝜆𝑏.(inr(𝑏)))joinΠ(𝑔,):ind𝐴+𝐵(𝜆𝑥.𝑋,𝑔,)1.splitΠ(joinΠ(𝑔,)) 정의에 따라 (𝑔,) 계산된다(definitionally equal).2.joinΠ(splitΠ(𝑓)) 𝑥 inl(𝑎) 때와 inr(𝑏) 모두 𝑓(𝑥) 같으므로, 함수 외연성에 의해 𝑓 같다.

2.14 #

HoTT 2.14. Suppose we add to type theory the equality reflection rule which says that if there is an element 𝑝:𝑥=𝑦, then in fact 𝑥𝑦. Prove that for any 𝑝:𝑥=𝑥, we have 𝑝𝗋𝖾𝖿𝗅𝑥. (This implies that every type is a set in the sense to be introduced in §3.1; see §7.2.)Solution by kiwiyouWe can have this strange claim under equality reflection rule:𝗌𝗍𝗋𝖺𝗇𝗀𝖾:𝑥,𝑦:𝐴𝑞:𝑥=𝑦𝑞=𝑥=𝑦𝗋𝖾𝖿𝗅𝑥Then we can prove this with path induction. We can inhabit 𝗌𝗍𝗋𝖺𝗇𝗀𝖾:𝗌𝗍𝗋𝖺𝗇𝗀𝖾(𝑥,𝑥,𝗋𝖾𝖿𝗅𝑥)𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑥𝗌𝗍𝗋𝖺𝗇𝗀𝖾:𝗂𝗇𝖽=𝐴(𝜆𝑥,𝑦:𝐴. 𝜆𝑞:𝑥=𝑦. 𝑞=𝑥=𝑦𝗋𝖾𝖿𝗅𝑥,𝜆𝑥:𝐴. 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑥)So finally, given 𝑝:𝑥=𝑥, we have 𝗌𝗍𝗋𝖺𝗇𝗀𝖾(𝑥,𝑥,𝑝):𝑝=𝗋𝖾𝖿𝗅𝑥, which is also, by equality reflection rule:𝑝𝗋𝖾𝖿𝗅𝑥