exercise 65.1.
Use identity induction with motive 𝐵 ↦𝐴 =𝐵 →𝐴 ≃𝐵 and reflexive branch the identity map together with its contractible-fiber witness. Call the result 𝑗. To compare 𝑗(𝑝) with 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝑝), path-induct on 𝑝. Both underlying functions then compute to id𝐴, and the type 𝗂𝗌𝖤𝗊𝗎𝗂𝗏(id𝐴) is a proposition, so the witnesses agree. The Σ-path theorem gives 𝑗(𝑝) =𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝑝).
exercise 65.2.
For 𝑐 :𝐶, let 𝐸𝑐 =Σ(𝑏,𝑞):𝖿𝗂𝖻𝑔(𝑐)𝖿𝗂𝖻𝑓(𝑏). It is contractible: the base 𝖿𝗂𝖻𝑔(𝑐) is contractible and each fiber 𝖿𝗂𝖻𝑓(𝑏) is contractible. Map 𝐸𝑐 to 𝖿𝗂𝖻𝑔𝑓(𝑐) by ((𝑏,𝑞),(𝑎,𝑝)) ↦(𝑎,𝖺𝗉𝑔(𝑝) ⋅𝑞). Choosing the intermediate point 𝑓𝑎 defines a section, and path induction gives a retraction. A retract of a contractible type is contractible, so every fiber of 𝑔𝑓 is contractible.
exercise 65.4.
Equivalence induction defines 𝗎𝖺′(𝑋,𝑒) :𝐴 =𝑋 with 𝗎𝖺′(𝐴,id) =𝗋𝖾𝖿𝗅𝐴. The equality 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗎𝖺′(𝑒)) =𝑒 follows by the same induction; the other composite 𝗎𝖺′(𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝑝)) =𝑝 follows by identity induction on 𝑝. Hence for fixed 𝐴, the total types Σ𝑋(𝐴 ≃𝑋) and Σ𝑋(𝐴 =𝑋) are retracts of one another. The latter is a singleton and therefore contractible, so the former is contractible. The total-space criterion for the fibers of 𝗂𝖽𝗍𝗈𝖾𝗊𝗏 now proves univalence.
exercise 65.3.
For 𝑝 =𝗋𝖾𝖿𝗅𝐴, the section law of the univalence inverse gives 𝜂𝗋𝖾𝖿𝗅𝐴 :𝗎𝖺(𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗋𝖾𝖿𝗅𝐴)) =𝗋𝖾𝖿𝗅𝐴. The underlying map of 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗋𝖾𝖿𝗅𝐴) computes to id𝐴, and its equivalence witness equals the chosen identity witness because 𝗂𝗌𝖤𝗊𝗎𝗂𝗏(id𝐴) is a proposition. Congruence of 𝗎𝖺 along that equality, followed by 𝜂−1𝗋𝖾𝖿𝗅𝐴, yields 𝗋𝖾𝖿𝗅𝐴 =𝗎𝖺(id𝐴).
exercise 65.5.
The assumed computation path identifies the underlying function of 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗎(𝑒)) with that of 𝑒. Since 𝗂𝗌𝖤𝗊𝗎𝗂𝗏(𝑓) is a proposition, it upgrades uniquely to an equality 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗎(𝑒)) =𝑒. Thus 𝗎 is a right inverse of 𝗂𝖽𝗍𝗈𝖾𝗊𝗏. The induced map on total spaces retracts Σ𝑋(𝐴 ≃𝑋) onto the singleton Σ𝑋(𝐴 =𝑋) exactly as in the retract proof of univalence; its fibers are consequently contractible. Therefore 𝗂𝖽𝗍𝗈𝖾𝗊𝗏 is an equivalence.
exercise 65.6.
Function extensionality states that 𝗁𝖺𝗉𝗉𝗅𝗒 :(𝑓 =𝑔) →(𝑓 ∼𝑔) is an equivalence; define 𝖿𝗎𝗇𝖾𝗑𝗍 by its inverse. The two displayed laws are the inverse and section homotopies of that equivalence. For the final law, 𝗁𝖺𝗉𝗉𝗅𝗒(𝗋𝖾𝖿𝗅𝑓) computes to 𝜆𝑥.𝗋𝖾𝖿𝗅𝑓𝑥, so applying the second inverse law at 𝗋𝖾𝖿𝗅𝑓 gives 𝖿𝗎𝗇𝖾𝗑𝗍(𝜆𝑥.𝗋𝖾𝖿𝗅𝑓𝑥) =𝗋𝖾𝖿𝗅𝑓.
exercise 65.7.
For 𝑏 :𝐵, let (𝑔𝑏,𝜖𝑏) be the center of the contractible fiber 𝖿𝗂𝖻𝑒(𝑏). Then 𝜖 :𝑒(𝑔𝑏) =𝑏 is the right-inverse homotopy. At 𝑒(𝑎), both (𝑔(𝑒𝑎),𝜖𝑒𝑎) and (𝑎,𝗋𝖾𝖿𝗅) lie in the same contractible fiber; projecting their unique path gives 𝑔(𝑒𝑎) =𝑎, the left-inverse homotopy. These homotopies make 𝑔 an equivalence, so 𝑒−1 =(𝑔,𝗂𝗌𝖤𝗊𝗎𝗂𝗏(𝑔)) has the required two laws.
exercise 65.8.
Functoriality gives 𝗎𝖺(𝑒) ⋅𝗎𝖺(𝑒−1) =𝗎𝖺(𝑒−1𝑒) =𝗎𝖺(id) =𝗋𝖾𝖿𝗅. Thus 𝗎𝖺(𝑒−1) is a right inverse of 𝗎𝖺(𝑒). Inverses of a path are unique, so 𝗎𝖺(𝑒−1) =𝗎𝖺(𝑒)−1. Equivalently, applying 𝗂𝖽𝗍𝗈𝖾𝗊𝗏 identifies both sides with 𝑒−1; univalence makes 𝗂𝖽𝗍𝗈𝖾𝗊𝗏 injective.
exercise 65.9.
Double Boolean induction on 𝑏,𝑏′ reduces the code to 𝟏 in the equal cases and 𝟎 in the mixed cases. In an equal case, 𝑢 :𝟏 equals ⋆, so encode after decode is reflexivity; a mixed case has no 𝑢. Together with the previously proved decode-after-encode identity, these homotopies exhibit encode and decode as inverse equivalences (𝑏 =𝑏′) ≃𝖼𝗈𝖽𝖾(𝑏,𝑏′).
exercise 65.10.
Assume 𝑞 :𝗎𝖺(𝑒𝗇𝗈𝗍) =𝗋𝖾𝖿𝗅𝟐. Apply congruence to the function 𝑝 ↦𝗍𝗋𝑋↦𝑋𝑝(𝗍𝗍). The left side is 𝑒𝗇𝗈𝗍(𝗍𝗍) =𝖿𝖿 by the univalence transport law; the right side is 𝗍𝗍. Boolean encode–decode sends the resulting path 𝖿𝖿 =𝗍𝗍 to an element of 𝟎.
exercise 65.11.
Evaluate an automorphism at 𝗍𝗍. If the value is 𝗍𝗍, injectivity forces the other value to be 𝖿𝖿, and function extensionality identifies the map with identity. If it is 𝖿𝖿, the other value must be 𝗍𝗍, and the map is Boolean negation. These cases define an inverse to 𝑒 ↦𝑒(𝗍𝗍), proving (𝟐 ≃𝟐) ≃𝟐. Compose this equivalence with univalence (𝟐 =𝟐) ≃(𝟐 ≃𝟐).
exercise 65.12.
When 𝐴 and 𝐵 are propositions, each function type 𝐴 →𝐵 and 𝐵 →𝐴 is a proposition by function extensionality; hence their product 𝐴 ↔𝐵 is a proposition. For any pair of implications, the round trips are pointwise equal to the identities because the codomains are propositions. Thus it determines an equivalence. Forgetting the equivalence witness and adding these forced homotopies are inverse maps; 𝗂𝗌𝖤𝗊𝗎𝗂𝗏 is a proposition, so the inverse law on equivalences is automatic.
exercise 65.13.
Let (𝐴,ℎ𝐴),(𝐵,ℎ𝐵) :Uprop𝑖 and suppose maps both ways. Propositional univalence gives 𝑝 :𝐴 =𝐵. By the Σ-path theorem it remains to compare the transported witness ℎ𝐴 with ℎ𝐵. The type 𝗂𝗌𝖯𝗋𝗈𝗉(𝐵) is itself a proposition, so those two witnesses are equal. The pair (𝑝, −) is therefore a path in the subuniverse, not merely a path between its first projections.
exercise 65.14.
By definition 𝜔 =𝗍𝗋𝑋↦𝑋𝗎𝖺(𝑒𝗇𝗈𝗍)(𝗍𝗍). The section supplied by construction 65.8 identifies 𝗂𝖽𝗍𝗈𝖾𝗊𝗏(𝗎𝖺(𝑒𝗇𝗈𝗍)) with 𝑒𝗇𝗈𝗍. Theorem 65.9(i) projects that equality to 𝜔 =𝑒𝗇𝗈𝗍(𝗍𝗍). Boolean computation reduces the latter to 𝖿𝖿, and concatenating the two paths gives the required closed term.
exercise 65.15.
Functoriality sends an 𝑛-fold concatenation of 𝗎𝖺(𝑒𝗇𝗈𝗍) to 𝗎𝖺(𝑒𝑛𝗇𝗈𝗍). Transport along it is therefore the underlying function 𝑒𝑛𝗇𝗈𝗍. Induction on 𝑛 alternates the two Boolean constructors: the zero iterate is identity and each successor applies negation. Hence the value at 𝗍𝗍 is 𝗍𝗍 for even 𝑛 and 𝖿𝖿 for odd 𝑛.
exercise 193.16.
Let 𝑠 :𝟐 ≃𝟐 exchange the constructors and put 𝑝:=𝗎𝖺(𝑠) :𝟐 =𝟐. The univalence transport law gives 𝗍𝗋𝑋↦𝑋𝑝(𝗍𝗍) =𝖿𝖿 and 𝗍𝗋𝑋↦𝑋𝑝(𝖿𝖿) =𝗍𝗍. If UIP held in the universe, then 𝑝 =𝗋𝖾𝖿𝗅𝟐. Applying transport to this equality would identify the swap action with identity transport, hence 𝖿𝖿 =𝗍𝗍, contradicting Boolean separation.