exercise 30.3.
Identity induction on 𝑞 gives 𝖩(𝑥.𝑦.𝑝.𝖨𝖽𝐵(𝗍𝗋𝑥.𝐵𝑝(𝑢),𝑢);𝑧.𝗋𝖾𝖿𝗅𝑢;𝑞):𝖨𝖽𝐵(𝗍𝗋𝑥.𝐵𝑞(𝑢),𝑢). The base clause has the asserted type because 𝗍𝗋𝑥.𝐵𝗋𝖾𝖿𝗅𝑧(𝑢) ≡𝑢. For a variable 𝑞, however, the eliminator is blocked: its computation rule applies only when the identification is displayed as 𝗋𝖾𝖿𝗅. Thus the constructed identification does not arise from the defining computation equation for a general 𝑞.
exercise 30.5.
For the identity function, use identity induction with motive 𝑥,𝑦:𝐴, 𝑝:𝖨𝖽𝐴(𝑥,𝑦) ⊢ 𝖨𝖽𝖨𝖽𝐴(𝑥,𝑦)(𝖺𝗉𝜆𝑧.𝑧(𝑝),𝑝) 𝗍𝗒𝗉𝖾; the reflexivity case is 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑥. For the constant function use the motive 𝑥,𝑦:𝐴, 𝑝:𝖨𝖽𝐴(𝑥,𝑦) ⊢ 𝖨𝖽𝖨𝖽𝐵(𝑏0,𝑏0)(𝖺𝗉𝜆𝑧.𝑏0(𝑝),𝗋𝖾𝖿𝗅𝑏0) 𝗍𝗒𝗉𝖾, with the same kind of reflexivity clause.
With the definition of 𝖺𝗉 in construction 30.17, neither equation is a defining computation on a general identification variable 𝑞: both eliminators are blocked on 𝑞. Both compute judgmentally when 𝑞 is 𝗋𝖾𝖿𝗅.
exercise 77.16.
For fixed 𝑎 :𝐴, based induction has motive 𝐶(𝑥,𝑝) in 𝑥 :𝐴,𝑝 :𝖨𝖽𝐴(𝑎,𝑥) and branch 𝑐 :𝐶(𝑎,𝗋𝖾𝖿𝗅𝑎); it is exactly 𝖩(𝐶,𝑐,𝑥,𝑝). Left unit uses 𝐶(𝑥,𝑝):=𝖨𝖽(𝗋𝖾𝖿𝗅𝑎 ⋅𝑝,𝑝); inverse uses 𝐶(𝑥,𝑝):=𝖨𝖽(𝑝−1 ⋅𝑝,𝗋𝖾𝖿𝗅𝑥); associativity fixes the other two paths and uses 𝐶(𝑥,𝑝):=𝖨𝖽((𝑟 ⋅𝑞) ⋅𝑝,𝑟 ⋅(𝑞 ⋅𝑝)). Each reflexive branch reduces by the path-composition definitions and is 𝗋𝖾𝖿𝗅. Inducting on the endpoint 𝑥 alone is ill typed: the motive also depends on the path 𝑝 :𝑎 =𝑥, which is not determined by 𝑥.
Exercise 30.1.
Start with the given premise ⋅ ⊢𝐴 𝗍𝗒𝗉𝖾. Its ambient empty context is formed by Ctx-Emp; extending it gives 𝑋⋅ 𝖼𝗍𝗑Ctx−Emp⋅⊢𝐴 𝗍𝗒𝗉𝖾𝑥:𝐴 𝖼𝗍𝗑Ctx−Ext. Writing out the context premise that is suppressed in the book’s compressed version of Var, the term derivation is ⋅⊢𝐴 𝗍𝗒𝗉𝖾𝑋⋅ 𝖼𝗍𝗑Ctx−Emp⋅⊢𝐴 𝗍𝗒𝗉𝖾𝑥:𝐴 𝖼𝗍𝗑Ctx−Ext𝑥:𝐴⊢𝑥:𝐴Var𝑥:𝐴⊢𝗋𝖾𝖿𝗅𝑥:𝖨𝖽𝐴(𝑥,𝑥)Id−intro. The final identity type is well formed by Id-form applied twice to the same variable judgment; this formation judgment is a presupposition of the conclusion of Id-intro. Thus every context and variable step has been made explicit rather than left to convention 26.14.
Exercise 30.2.
The based formation rule is Γ⊢𝑎:𝐴Γ,𝑦:𝐴⊢𝖨𝖽𝐴(𝑎,𝑦) 𝗍𝗒𝗉𝖾Id−form−based. It follows from ordinary Id-form. The premise presupposes Γ ⊢𝐴 𝗍𝗒𝗉𝖾. Weakening gives Γ,𝑦 :𝐴 ⊢𝑎 :𝐴, while Var gives Γ,𝑦 :𝐴 ⊢𝑦 :𝐴; hence Γ,𝑦:𝐴⊢𝑎:𝐴Γ,𝑦:𝐴⊢𝑦:𝐴Γ,𝑦:𝐴⊢𝖨𝖽𝐴(𝑎,𝑦) 𝗍𝗒𝗉𝖾Id−form.
Conversely, suppose the based rule is primitive and let 𝑎,𝑏 :𝐴 in Γ. Apply it to 𝑎 and then substitute 𝑏 for its final variable: Γ,𝑦:𝐴⊢𝖨𝖽𝐴(𝑎,𝑦) 𝗍𝗒𝗉𝖾⟹𝑆𝑢𝑏𝑠𝑡Γ⊢𝖨𝖽𝐴(𝑎,𝑏) 𝗍𝗒𝗉𝖾. This recovers binary Id-form.
Reflexivity already has only one meaningful based shape: Γ⊢𝑎:𝐴Γ⊢𝗋𝖾𝖿𝗅𝑎:𝖨𝖽𝐴(𝑎,𝑎). The constructor lives on the diagonal, so its two endpoints are necessarily the same term. Unlike formation, there is no free second endpoint to turn into a variable or later recover by substitution; hence there is no distinct “binary” introduction rule to compare.
Exercise 30.4.
Define concatenation by induction on its first argument, generalizing the third endpoint and second path: 𝑝⋅′𝑞:=(𝖩(𝑥.𝑦.𝑟.∏𝑧:𝐴𝖨𝖽𝐴(𝑦,𝑧)→𝖨𝖽𝐴(𝑥,𝑧);𝑤.𝜆𝑧.𝜆𝑠.𝑠;𝑝))(𝑐)(𝑞). The reflexivity computation is judgmental: 𝗋𝖾𝖿𝗅𝑎⋅′𝑞≡𝑞.
We now construct the comparison in the two stages requested. First, identity induction on 𝑝 gives 𝜂(𝑝):𝖨𝖽𝖨𝖽𝐴(𝑎,𝑏)(𝑝⋅′𝗋𝖾𝖿𝗅𝑏,𝑝). The motive is 𝑥,𝑦:𝐴,𝑟:𝖨𝖽𝐴(𝑥,𝑦) ⊢ 𝖨𝖽𝖨𝖽𝐴(𝑥,𝑦)(𝑟⋅′𝗋𝖾𝖿𝗅𝑦,𝑟) 𝗍𝗒𝗉𝖾, and at 𝑟 =𝗋𝖾𝖿𝗅𝑥 both endpoints compute to 𝗋𝖾𝖿𝗅𝑥, so the clause is 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑥.
Next induct on 𝑞 :𝖨𝖽𝐴(𝑏,𝑐), with 𝑝 generalized into the motive 𝑦,𝑧:𝐴,𝑠:𝖨𝖽𝐴(𝑦,𝑧) ⊢ ∏𝑟:𝖨𝖽𝐴(𝑎,𝑦)𝖨𝖽𝖨𝖽𝐴(𝑎,𝑧)(𝑟⋅𝑠,𝑟⋅′𝑠) 𝗍𝗒𝗉𝖾. At 𝑠 =𝗋𝖾𝖿𝗅𝑦, the original concatenation computes 𝑟 ⋅𝗋𝖾𝖿𝗅𝑦 ≡𝑟, whereas the target is 𝑟 ⋅′𝗋𝖾𝖿𝗅𝑦. The required clause is therefore 𝜆𝑟.𝜂(𝑟)−1:∏𝑟:𝖨𝖽𝐴(𝑎,𝑦)𝖨𝖽𝖨𝖽𝐴(𝑎,𝑦)(𝑟,𝑟⋅′𝗋𝖾𝖿𝗅𝑦). Applying the resulting dependent function to the original 𝑝 yields 𝖨𝖽𝖨𝖽𝐴(𝑎,𝑐)(𝑝⋅𝑞,𝑝⋅′𝑞). Thus the two asymmetric definitions agree propositionally, although they choose opposite unit laws as their judgmental computation.
Exercise 30.6.
For 𝑝 :𝖨𝖽𝐴(𝑎,𝑏), transport in an arbitrary small family gives Leibniz substitution: 𝜆𝑝.𝜆𝐵.𝜆𝑢.𝗍𝗋𝑥.𝐵(𝑥)𝑝(𝑢):𝖨𝖽𝐴(𝑎,𝑏)→𝐿(𝑎,𝑏). Indeed, for 𝐵 :𝐴 →U𝑖, rule U-El makes each 𝐵(𝑥) a type, so transport sends 𝑢 :𝐵(𝑎) to a term of 𝐵(𝑏).
Conversely, let ℓ :𝐿(𝑎,𝑏). The based identity family 𝐵0:=𝜆𝑤.𝖨𝖽𝐴(𝑎,𝑤):𝐴→U𝑖 is small by Id-form-U. Since 𝗋𝖾𝖿𝗅𝑎 :𝐵0(𝑎), instantiate ℓ at this family: 𝜆ℓ.ℓ(𝐵0)(𝗋𝖾𝖿𝗅𝑎):𝐿(𝑎,𝑏)→𝖨𝖽𝐴(𝑎,𝑏). Thus identity implies indiscernibility and, once all small predicates may be quantified over, indiscernibility implies identity. No assertion that the two maps are judgmental inverses is needed.
Exercise 30.7.
Work in the extension with equality reflection. In the generic context 𝑥:𝐴,𝑦:𝐴,𝑝:𝖨𝖽𝐴(𝑥,𝑦), reflection gives 𝑥 ≡𝑦 :𝐴. Hence 𝗋𝖾𝖿𝗅𝑥 :𝖨𝖽𝐴(𝑥,𝑥) converts to a term ―――𝗋𝖾𝖿𝗅𝑥:𝖨𝖽𝐴(𝑥,𝑦) with the same raw expression. This makes the following motive legitimate: 𝐶(𝑥,𝑦,𝑝):=𝖨𝖽𝖨𝖽𝐴(𝑥,𝑦)(𝑝,―――𝗋𝖾𝖿𝗅𝑥). On the reflexivity diagonal it reduces to 𝐶(𝑧,𝑧,𝗋𝖾𝖿𝗅𝑧)=𝖨𝖽𝖨𝖽𝐴(𝑧,𝑧)(𝗋𝖾𝖿𝗅𝑧,𝗋𝖾𝖿𝗅𝑧), inhabited by 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑧. Put 𝑑(𝑧):=𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅𝑧. Then 𝑘:=𝜆𝑥.𝜆𝑝.𝖩(𝑢.𝑣.𝑞.𝐶(𝑢,𝑣,𝑞);𝑧.𝑑(𝑧);𝑝). When the eliminand 𝑝 has endpoints 𝑥,𝑥, the result type is literally 𝖨𝖽𝖨𝖽𝐴(𝑥,𝑥)(𝑝,𝗋𝖾𝖿𝗅𝑥). Thus 𝑘:∏𝑥:𝐴∏𝑝:𝖨𝖽𝐴(𝑥,𝑥)𝖨𝖽𝖨𝖽𝐴(𝑥,𝑥)(𝑝,𝗋𝖾𝖿𝗅𝑥). The construction pinpoints why reflection collapses intensional identity: it permits the diagonal reflexivity constructor to be typed in every generic fiber, thereby making the otherwise invalid K-motive well formed.
Exercise 30.8.
Let ℓ(𝑟):𝖨𝖽𝖨𝖽𝐴(𝑢,𝑣)(𝗋𝖾𝖿𝗅𝑢⋅𝑟,𝑟) denote the left-unit identification of theorem 30.20(i), for 𝑟 :𝖨𝖽𝐴(𝑢,𝑣). Induct on 𝑞 :𝖨𝖽𝐴(𝑏,𝑐), generalizing both the earlier endpoint and the path 𝑝. Use the motive 𝑦,𝑧:𝐴,𝑠:𝖨𝖽𝐴(𝑦,𝑧) ⊢ ∏𝑥:𝐴∏𝑟:𝖨𝖽𝐴(𝑥,𝑦)𝖨𝖽𝖨𝖽𝐴(𝑧,𝑥)((𝑟⋅𝑠)−1,𝑠−1⋅𝑟−1) 𝗍𝗒𝗉𝖾. In the reflexivity instance 𝑠 =𝗋𝖾𝖿𝗅𝑦, the left endpoint computes as (𝑟⋅𝗋𝖾𝖿𝗅𝑦)−1≡𝑟−1, while the right endpoint computes to 𝗋𝖾𝖿𝗅𝑦 ⋅𝑟−1, since 𝗋𝖾𝖿𝗅−1𝑦 ≡𝗋𝖾𝖿𝗅𝑦. Hence the clause is 𝜆𝑥.𝜆𝑟.ℓ(𝑟−1)−1:∏𝑥:𝐴∏𝑟:𝖨𝖽𝐴(𝑥,𝑦)𝖨𝖽𝖨𝖽𝐴(𝑦,𝑥)(𝑟−1,𝗋𝖾𝖿𝗅𝑦⋅𝑟−1). Identity induction supplies the desired family for arbitrary 𝑞; applying it to 𝑎 and 𝑝 gives 𝖨𝖽𝖨𝖽𝐴(𝑐,𝑎)((𝑝⋅𝑞)−1,𝑞−1⋅𝑝−1). The inverse on the left-unit witness is forced by the orientation of the goal in the reflexivity case.
Exercise 30.9.
Use identity induction on 𝑝 with motive 𝑥,𝑦:𝐴,𝑟:𝖨𝖽𝐴(𝑥,𝑦) ⊢𝖨𝖽𝖨𝖽𝐵(𝑓′(𝑥),𝑓′(𝑦))((ℎ(𝑥)−1⋅𝖺𝗉𝑓(𝑟))⋅ℎ(𝑦),𝖺𝗉𝑓′(𝑟)) 𝗍𝗒𝗉𝖾. At 𝑟 =𝗋𝖾𝖿𝗅𝑥, functorial action computes to reflexivity for both functions. The left endpoint therefore reduces judgmentally to (ℎ(𝑥)−1⋅𝗋𝖾𝖿𝗅𝑓(𝑥))⋅ℎ(𝑥)≡ℎ(𝑥)−1⋅ℎ(𝑥), because the first concatenation uses its judgmental right-unit law. The right endpoint reduces to 𝗋𝖾𝖿𝗅𝑓′(𝑥). Apply the second inverse law of theorem 30.20(ii) to ℎ(𝑥) :𝑓(𝑥) =𝑓′(𝑥). It supplies the term 𝖨𝖽𝖨𝖽𝐵(𝑓′(𝑥),𝑓′(𝑥))(ℎ(𝑥)−1⋅ℎ(𝑥),𝗋𝖾𝖿𝗅𝑓′(𝑥)). This supplies the reflexivity clause, so path induction gives the required identification for every 𝑝.
If the boundary composite is bracketed as ℎ(𝑎)−1 ⋅(𝖺𝗉𝑓(𝑝) ⋅ℎ(𝑏)), first use the associativity witness of theorem 30.20(iv) to compare it with the left-associated composite above, then concatenate that comparison with the constructed naturality identification.
Exercise 30.10.
Generalize the transported argument into the motive 𝑥,𝑦:𝐴,𝑝:𝖨𝖽𝐴(𝑥,𝑦) ⊢ ∏𝑣:𝐵(𝑥)𝖨𝖽𝐶(𝑦)(𝗍𝗋𝐶𝑝(ℎ(𝑥)(𝑣)),ℎ(𝑦)(𝗍𝗋𝐵𝑝(𝑣))) 𝗍𝗒𝗉𝖾. At 𝑝 =𝗋𝖾𝖿𝗅𝑥, both transports compute judgmentally: 𝗍𝗋𝐶𝗋𝖾𝖿𝗅𝑥(ℎ(𝑥)(𝑣))≡ℎ(𝑥)(𝑣),ℎ(𝑥)(𝗍𝗋𝐵𝗋𝖾𝖿𝗅𝑥(𝑣))≡ℎ(𝑥)(𝑣). Hence the reflexivity clause is simply 𝜆𝑣.𝗋𝖾𝖿𝗅ℎ(𝑥)(𝑣). Identity elimination with this motive yields a dependent function in 𝑣 :𝐵(𝑎); applying it to 𝑢 produces 𝖨𝖽𝐶(𝑏)(𝗍𝗋𝐶𝑝(ℎ(𝑎)(𝑢)),ℎ(𝑏)(𝗍𝗋𝐵𝑝(𝑢))). The construction is the naturality of transport with respect to a fiberwise map ℎ.
Exercise 30.11.
For 𝑞 :𝖨𝖽𝐴(𝑎,𝑏), based induction at the fixed source 𝑎 reconstructs inverse as 𝑞−1:=𝖩′(𝑦.𝑝.𝖨𝖽𝐴(𝑦,𝑎);𝗋𝖾𝖿𝗅𝑎;𝑞):𝖨𝖽𝐴(𝑏,𝑎). Its computation is 𝗋𝖾𝖿𝗅−1𝑎 ≡𝗋𝖾𝖿𝗅𝑎 by Id-comp′.
For 𝑝 :𝖨𝖽𝐴(𝑎,𝑏) and 𝑞 :𝖨𝖽𝐴(𝑏,𝑐), apply based induction to 𝑞, whose fixed source is 𝑏: 𝑝⋆𝑞:=𝖩′(𝑧.𝑟.𝖨𝖽𝐴(𝑎,𝑧);𝑝;𝑞):𝖨𝖽𝐴(𝑎,𝑐). The based computation rule gives 𝑝⋆𝗋𝖾𝖿𝗅𝑏≡𝑝. Thus the right unit is judgmental. This is the same asymmetry and, up to notation, the same operation as the concatenation of construction 30.15, which transports 𝑝 along the second path. Defining concatenation instead by based induction on the first path would require the second path to be generalized and would select the left unit as the direct computation.
Exercise 30.12.
Let 𝑓 :∏𝑥:𝐴𝐵(𝑥) and 𝑞 :𝖨𝖽𝐴(𝑎,𝑏). For the ordinary 𝐽-motive used by dependent action, put 𝐶(𝑥,𝑦,𝑝):=𝖨𝖽𝐵(𝑦)(𝗍𝗋𝐵𝑝(𝑓(𝑥)),𝑓(𝑦)). Fixing the first endpoint at 𝑎, its uncurried family over the singleton 𝑢 :Sing𝐴(𝑎) is ̂𝐶𝑎(𝑢):=𝖨𝖽𝐵(𝗉𝗋1(𝑢))(𝗍𝗋𝐵𝗉𝗋2(𝑢)(𝑓(𝑎)),𝑓(𝗉𝗋1(𝑢))). The formula for 𝖩𝗍𝗋 in proposition 30.27 therefore gives the reconstruction 𝖺𝗉𝖽𝑓(𝑞):=𝗍𝗋𝑢.̂𝐶𝑎(𝑢)𝗎𝗇𝗂𝗊𝑎((𝑏,𝑞))(𝗋𝖾𝖿𝗅𝑓(𝑎)). At the center, the source fiber is ̂𝐶𝑎((𝑎,𝗋𝖾𝖿𝗅𝑎))≡𝖨𝖽𝐵(𝑎)(𝗍𝗋𝐵𝗋𝖾𝖿𝗅𝑎(𝑓(𝑎)),𝑓(𝑎))≡𝖨𝖽𝐵(𝑎)(𝑓(𝑎),𝑓(𝑎)), so the displayed 𝗋𝖾𝖿𝗅𝑓(𝑎) is well typed by conversion. At (𝑏,𝑞), the target fiber is exactly 𝖨𝖽𝐵(𝑏)(𝗍𝗋𝐵𝑞(𝑓(𝑎)),𝑓(𝑏)).
For 𝑞 =𝗋𝖾𝖿𝗅𝑎, singleton contraction computes first and transport computes second: 𝖺𝗉𝖽𝑓(𝗋𝖾𝖿𝗅𝑎)≡𝗍𝗋𝑢.̂𝐶𝑎(𝑢)𝗎𝗇𝗂𝗊𝑎((𝑎,𝗋𝖾𝖿𝗅𝑎))(𝗋𝖾𝖿𝗅𝑓(𝑎))≡𝗍𝗋𝑢.̂𝐶𝑎(𝑢)𝗋𝖾𝖿𝗅(𝑎,𝗋𝖾𝖿𝗅𝑎)(𝗋𝖾𝖿𝗅𝑓(𝑎))≡𝗋𝖾𝖿𝗅𝑓(𝑎). This verifies the required judgmental computation using only the primitive rules for 𝗍𝗋 and 𝗎𝗇𝗂𝗊, not primitive 𝖩.
Exercise 30.13.
Assume 𝑢 :𝖴𝖨𝖯𝐴, fix 𝑎,𝑏 :𝐴, and abbreviate 𝐼:=𝖨𝖽𝐴(𝑎,𝑏). We construct 𝖴𝖨𝖯𝐼. Fix first 𝑝 :𝐼, and for every 𝑞 :𝐼 define the canonical path 𝑐(𝑞):=𝑢(𝑎)(𝑏)(𝑝)(𝑞):𝖨𝖽𝐼(𝑝,𝑞). For 𝑞 :𝐼 put 𝑘(𝑞):=𝑐(𝑝)−1⋅𝑐(𝑞):𝖨𝖽𝐼(𝑝,𝑞). We first compare every path out of 𝑝 with this canonical one. Based path induction on 𝑟 :𝖨𝖽𝐼(𝑝,𝑞) gives 𝑑(𝑞,𝑟):𝖨𝖽𝖨𝖽𝐼(𝑝,𝑞)(𝑟,𝑘(𝑞)). The motive is 𝑞:𝐼,𝑟:𝖨𝖽𝐼(𝑝,𝑞) ⊢ 𝖨𝖽𝖨𝖽𝐼(𝑝,𝑞)(𝑟,𝑐(𝑝)−1⋅𝑐(𝑞)) 𝗍𝗒𝗉𝖾. At 𝑞 =𝑝,𝑟 =𝗋𝖾𝖿𝗅𝑝, the target is 𝑐(𝑝)−1 ⋅𝑐(𝑝). The inverse law supplies 𝜄(𝑐(𝑝)):𝖨𝖽𝖨𝖽𝐼(𝑝,𝑝)(𝑐(𝑝)−1⋅𝑐(𝑝),𝗋𝖾𝖿𝗅𝑝), so the required reflexivity clause, oriented from 𝗋𝖾𝖿𝗅𝑝 to the canonical composite, is 𝜄(𝑐(𝑝))−1.
Now let 𝑟,𝑠 :𝖨𝖽𝐼(𝑝,𝑞). Both are connected to the same canonical path, hence 𝑑(𝑞,𝑟)⋅𝑑(𝑞,𝑠)−1:𝖨𝖽𝖨𝖽𝐼(𝑝,𝑞)(𝑟,𝑠). Abstracting successively over 𝑝,𝑞,𝑟,𝑠 constructs ∏𝑝:𝐼∏𝑞:𝐼∏𝑟:𝖨𝖽𝐼(𝑝,𝑞)∏𝑠:𝖨𝖽𝐼(𝑝,𝑞)𝖨𝖽𝖨𝖽𝐼(𝑝,𝑞)(𝑟,𝑠), which is 𝖴𝖨𝖯𝐼. Thus UIP at 𝐴 propagates to every identity type of 𝐴.
Exercise 30.14.
Unfold 𝜒:∏𝑓:𝟐→𝟐∏𝑔:𝟐→𝟐𝖯𝗍(𝑓,𝑔)→𝖨𝖽𝟐→𝟐(𝑓,𝑔). The function 𝑔:=𝜆𝑥.𝗂𝗇𝖽𝟐(𝑦.𝟐;𝗍𝗍,𝖿𝖿;𝑥) has type 𝟐 →𝟐: in context 𝑥 :𝟐, the constant motive is 𝟐, both branches have that type, and the scrutinee is 𝑥. Its closed-constructor computations are 𝑔(𝗍𝗍)≡𝗍𝗍,𝑔(𝖿𝖿)≡𝖿𝖿. For a variable 𝑥, however, the Boolean eliminator in its body is neutral.
For ℎ:=𝜆𝑥.𝗂𝗇𝖽𝟐(𝑦.𝖨𝖽𝟐(𝑦,𝑔(𝑦));𝗋𝖾𝖿𝗅𝗍𝗍,𝗋𝖾𝖿𝗅𝖿𝖿;𝑥), the motive is a type because 𝑦 :𝟐 and 𝑔(𝑦) :𝟐. In the true branch, 𝑔(𝗍𝗍) ≡𝗍𝗍, so 𝗋𝖾𝖿𝗅𝗍𝗍 converts to 𝖨𝖽𝟐(𝗍𝗍,𝑔(𝗍𝗍)); the false branch is identical. Hence ℎ:∏𝑥:𝟐𝖨𝖽𝟐(𝑥,𝑔(𝑥))=𝖯𝗍(𝜆𝑥.𝑥,𝑔). The applications of 𝜒 therefore derive 𝑒:=𝜒(𝜆𝑥.𝑥)(𝑔)(ℎ):𝖨𝖽𝟐→𝟐(𝜆𝑥.𝑥,𝑔). Now take the constant 𝐽-motive 𝑢,𝑣 :𝟐 →𝟐,𝑝 :𝖨𝖽𝟐→𝟐(𝑢,𝑣) ⊢𝟐 and the clause 𝑧.𝗍𝗍. Rule Id-elim gives 𝑏:=𝖩(𝑢.𝑣.𝑝.𝟐;𝑧.𝗍𝗍;𝑒):𝟐.
The reductions available inside this construction are:
function beta exposes the bodies of 𝑔(𝑡) and ℎ(𝑡);
Boolean computation reduces 𝑔(𝗍𝗍),𝑔(𝖿𝖿) and, after beta, reduces ℎ(𝗍𝗍),ℎ(𝖿𝖿) to the corresponding reflexivity terms;
the identity function satisfies (𝜆𝑥. 𝑥)(𝑡) ≡𝑡;
substitutions into the constant outer motive and constant clause are literal.
The blocked neutral subterms are:
𝗂𝗇𝖽𝟐(𝑦.𝟐;𝗍𝗍,𝖿𝖿;𝑥) when 𝑥 is a variable;
the analogous Boolean eliminator defining ℎ(𝑥) when its scrutinee is a variable;
the application 𝑒 =𝜒(𝜆𝑥. 𝑥)(𝑔)(ℎ), whose head is the variable 𝜒;
consequently the outer 𝐽-term, whose eliminand is the neutral term 𝑒, not a displayed 𝗋𝖾𝖿𝗅.
Rule Id-comp therefore does not apply to 𝑏. Function extensionality has supplied an identification, but no computation rule for that variable-provided identification.
Exercise 30.15.
Let 𝐹:=∏𝑥:𝐴𝐵. Unfolding the definition gives 𝑠:∏𝑓′:𝐹∏𝑔′:𝐹𝖯𝗍(𝑓′,𝑔′)→𝖨𝖽𝐹(𝑓′,𝑔′). One Pi-elimination at 𝑓 :𝐹 yields 𝑠(𝑓):∏𝑔′:𝐹𝖯𝗍(𝑓,𝑔′)→𝖨𝖽𝐹(𝑓,𝑔′), and a second at 𝑔 :𝐹 yields 𝑠(𝑓)(𝑔):𝖯𝗍(𝑓,𝑔)⟶𝖨𝖽𝐹(𝑓,𝑔). The pointwise-action construction supplies the opposite map 𝗁𝖺𝗉𝗉𝗅𝗒𝑓,𝑔:𝖨𝖽𝐹(𝑓,𝑔)⟶𝖯𝗍(𝑓,𝑔). Thus the two displayed maps are 𝖯𝗍(𝑓,𝑔)𝑠(𝑓)(𝑔)⟶𝖨𝖽𝐹(𝑓,𝑔)𝗁𝖺𝗉𝗉𝗅𝗒𝑓,𝑔⟶𝖯𝗍(𝑓,𝑔). The type of 𝑠 asserts only existence of the first map. It contains no fields or equations saying either composite is an identity, so no inverse law follows merely by unfolding the binders.