Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

University of Nottingham, United Kingdomthorsten.altenkirch@nottingham.ac.uk University of Nottingham, United Kingdomjacob.neumann@nottingham.ac.ukhttps://orcid.org/0009-0003-5858-466X \CopyrightThorsten Altenkirch and Jacob Neumann {CCSXML} <ccs2012> <concept> <concept_id>10003752.10003790.10011740</concept_id> <concept_desc>Theory of computation Type theory</concept_desc> <concept_significance>500</concept_significance> </concept> </ccs2012> \ccsdesc[500]Theory of computation Type theory \hideLIPIcs \EventEditorsJohn Q. Open and Joan R. Access \EventNoEds2 \EventLongTitle42nd Conference on Very Important Topics (CVIT 2016) \EventShortTitleCVIT 2016 \EventAcronymCVIT \EventYear2016 \EventDateDecember 24–27, 2016 \EventLocationLittle Whinging, United Kingdom \EventLogo \SeriesVolume42 \ArticleNo23

Synthetic 1-Categories in Directed Type Theory

Thorsten Altenkirch    Jacob Neumann
Abstract

The field of directed type theory seeks to design type theories capable of reasoning synthetically about (higher) categories, by generalizing the symmetric identity types of Martin-Löf Type Theory to asymmetric hom-types. We articulate the directed type theory of the category model, with appropriate modalities for keeping track of variances and a powerful directed-J rule capable of proving results about arbitrary terms of hom-types; we put this rule to use in making several constructions in synthetic 1-category theory. Because this theory is expressed entirely in terms of generalized algebraic theories, we know automatically that this directed type theory admits a syntax model and is the first step towards directed higher observational type theory.

keywords:
semantics, directed type theory, homotopy type theory, category theory,generalized algebraic theories
keywords:
Categories with Families (CwFs)
keywords:
polarized category with families (PCwF)
keywords:
sub-PCwF
keywords:
neutral-polarized category with families (NPCwF)
keywords:
directed CwF (DCwF)
keywords:
(1,1)11(1,1)( 1 , 1 )-truncated DCwF
keywords:
polarized ΠΠ\Piroman_Π-types

1 Introduction

One exciting aspect of the emergent field of homotopy type theory (HoTT) [28] is the observation that types are \infty-groupoids [29]. Homotopy type theory can be understood as a synthetic theory of \infty-groupoids: all the higher structure is generated by the simple rules for manipulating identity types in Martin-Löf Type Theory [21, 22], permitting efficient reasoning with these complex structures.

Not long after homotopy type theory was established, the search for directed homotopy type theory—a synthetic theory of (higher) categories—began. In a directed type theory, the identity types of ordinary Martin-Löf Type Theory (which are provably symmetric in the theory, i.e. a witness p:𝖨𝖽(t,t):𝑝𝖨𝖽𝑡superscript𝑡p\colon\mathsf{Id}(t,t^{\prime})italic_p : sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) can be turned into p1:𝖨𝖽(t,t):superscript𝑝1𝖨𝖽superscript𝑡𝑡p^{-1}\colon\mathsf{Id}(t^{\prime},t)italic_p start_POSTSUPERSCRIPT - 1 end_POSTSUPERSCRIPT : sansserif_Id ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_t )) are replaced by asymmetric hom-types. However, building a type theory to effectively work with these hom-types is beset by difficulties, in particular the need to carefully track the variances of terms. A common feature of many approaches to directed type theory (e.g. [20, 24, 23]) is to track these variances by adopting some kind of modal typing discipline. However, no consensus ever emerged for exactly how to do this. More recent approaches to directed type theory (such as the work of Riehl and Shulman [25]) avoid these issues by adopting a more indirect approach inspired by simplicial spaces, at the cost of a more elaborate, multi-layered theory.

A possible new approach to directed type theory seems to be on the horizon, drawing from the recent development of higher observational type theory [5, 4]. Higher observational type theory, or H.O.T.T., seeks to strike a balance between the properties of “Book HoTT” (as originally articulated in [28]) and cubical type theory [10], particularly with regards to the central axiom of HoTT, Voevodsky’s univalence axiom. In Book HoTT, identity types are defined inductively, which results in the univalence axiom being impossible to compute with—complicating a key attribute of HoTT, its amenability to computer formalization. Cubical type theory rectifies this situation by instead defining identity types in terms of a special interval type, and adding enough machinery to make univalence computable as a theorem rather than an axiom (though at the expense of Book HoTT’s intuitive simplicity). Higher observational type theory seeks to build homotopy type theory around observational identities, in particular turning univalence into a definition, preserving both the computational and intuitive character of homotopy type theory. H.O.T.T.’s definitional univalence suggests a clear directed analogue, making directed higher observational type theory an appealing prospect. Though H.O.T.T. remains to be fully worked out, it’s clear that second-order generalized algebraic theories (SOGATs) [27, 26, 7, 17] provide the appropriate setting for formulating this theory, as the language of SOGATs provide a higher-order abstract syntax ideal for handling formal languages with variable binders.

Ordinary (first-order) generalized algebraic theories (GATs) [8] have played a prominent role in the semantics of type theory: Dybjer’s categories with families (CwFs) [11] are a GAT articulating the basic mechanics of type theory, and provide a highly flexible and modular approach to interpreting type theories. Articulating the semantics of type theory as a GAT comes with numerous advantages: the universal algebraic features of GATs—such as homomorphisms, displayed models, products and coproducts of models, free and cofree models—are well-understood [18]. In particular, every GAT has an initial model, the syntax model, which can be constructed as a quotient inductive-inductive type [16]. Finally, GATs have the advantage of being (relatively) straightforward to formalize, as they make all the relevant operations and equations explicit. Anticipating SOGAT and higher observational treatments of directed type theory, we begin by articulating directed type theory as a generalized algebraic theory.

1.1 Related Work

The present work draws most closely from Hofmann and Streicher’s work on the groupoid model [15]; in particular, we develop a directed analogue of the groupoid model—the category model—and adapt the groupoid models main constructs (dependent types and identity types) to the directed setting. We also closely follow the kind of metatheoretic arguments made there, and develop a directed analogue of their universe extensionality, an early articulation of univalence. We also draw from the closely-related setoid model of [13, 2].

Among directed type theories, the present work draws some constructs from the theory of Licata and Harper [20], particularly their treatment of the opposite category construction as a modality on contexts and context extension, as well as their treatment of ΠΠ\Piroman_Π-types in the directed setting. Our directed J-rule for eliminating hom-types is similar to one of the eliminators given by North [23], though with the critical difference mentioned below. Our theory, like North’s, is “1-dimensional” in the sense of Licata-Harper in that we maintain judgmental equality as a symmetric notion, as opposed to “2-dimensional” theories [20, 24, 1] which introduce a theory of directed reductions. All these theories adopt a modal typing discipline for handling variances, as do we, unlike the theories of [25, 19, 31] and [30], which adopt approaches akin to simplicial and cubical type theories, respectively.

The commonality between the setoid, groupoid, preorder, and category model described in Section 2 is made much more general [18, 16], where it is shown that any GAT gives rise to a CwF of algebras, algebra morphisms, displayed algebras, and sections. The modal features of the present work are most likely instances of the modal type theory of [12].

1.2 Contribution and Organization

We articulate a directed type theory satisfying the following constraints.

  1. (1)

    It is presented as a generalized algebraic theory.

  2. (2)

    It is 1-dimensional in the sense of Licata-Harper: there are no ‘directed reductions’ introduced judgmentally.

  3. (3)

    It is deeply-polarized: there is a modal typing discipline to keep track of variances, which operates not just on types but on contexts, substitutions, and context extension.

  4. (4)

    The directed J-rule (directed path induction) permits reasoning about arbitrary terms of hom-types.

  5. (5)

    Hom-types can be iterated,111In contrast to e.g. [20], where homs-between-homs and homs-between-homs-between-homs is not possible to express. expressing synthetic higher categorical structure (though in the present work we only consider 1-category theoretic structure).

To our knowledge, there is no existing type theory satisfying all these criteria.

Starting with Section 2, we adopt a semantics-driven approach by investigating a particular model, the category model and abstracting its key features into a series of abstract notions of model (Section 3). These notions are all GATs (indeed, CwFs with additional structure), and therefore each give rise to a syntax model. Our main notion is that of a Directed CwF (DCwF), a generalized algebraic theory of directed types with adequate polarity structure to properly track variances.

Achieving (4) while maintaining a modal typing discipline requires a novel approach. In the typing rules of existing directed type theories (including ours), the endpoint terms t𝑡titalic_t and tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT of a hom-type 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) are assigned opposite variances: t𝑡titalic_t negative and tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT positive. However, this poses a difficulty for typing the identity morphism 𝗋𝖾𝖿𝗅t:𝖧𝗈𝗆(t,t):subscript𝗋𝖾𝖿𝗅𝑡𝖧𝗈𝗆𝑡𝑡\mathsf{refl}_{t}\colon\mathsf{Hom}(t,t)sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT : sansserif_Hom ( italic_t , italic_t ) since t𝑡titalic_t must assume both variances. North [23] solves this by restricting t𝑡titalic_t to be a term of a core type (interpreted semantically by groupoids), but the consequent J-rule only operates on hom-terms with a core endpoint, not arbitrary ones. Our solution instead uses groupoid contexts rather than groupoid types.

In Section 4, we show that this is a viable framework for conducting synthetic category theory. In this section, we adopt an informal style reminiscent of [28], showing how this theory can be operated and how the groupoid context can be carefully maintained by a simple syntactic rule. We use our directed J-rule to give several basic constructions in synthetic (1-)category theory.

Finally, we consider the directed universe of sets in the category model, which serves as the category of sets. The existence of a directed universe allows us to make the metatheoretic argument that the syntax of DCwFs cannot prove the symmetry of hom-types (i.e. this is a genuinely directed type theory) or the uniqueness of homs (analogous to Hofmann and Streicher’s proof that the groupoid model refutes the uniqueness of identity proofs). We conclude by sketching several possible routes for further study.

1.3 Metatheory and Notation

Throughout, we work in an informal type-theoretic metatheory, using pseudo-Agda notation to specify GATs, make category-theoretic constructions, and define terms in the syntax of Directed CwFs. We use the notations

(x:X)P(x)and(x:X)×P(x)(x\colon X)\to P(x)\qquad\text{and}\qquad(x\colon X)\times P(x)( italic_x : italic_X ) → italic_P ( italic_x ) and ( italic_x : italic_X ) × italic_P ( italic_x )

for the dependent function and dependent sum types, respectively. When defining dependent functions, we’ll enclose arguments in curly brackets to indicate that they’re implicit. Any variables appearing free are also assumed to be implicitly universally quantified. We sometimes use underscores to indicate where the arguments to a function are written. When defining an instance T𝑇Titalic_T of a construct given as a record type, we’ll often omit the names of specific components, referring to all of them as just T𝑇Titalic_T (matching the category-theoretic convention of referring to both the object- and morphism-parts of a functor F𝐹Fitalic_F by just F𝐹Fitalic_F).

We use === to mean definitional or judgmental equality in our metatheory, whereas \equiv means propositional equality (though there’s no reason they couldn’t coincide, i.e. in an extensional metatheory). We tacitly make use of appropriate extensionality principles (particularly function extensionality) for both notions of equality, and the uniqueness of identity proofs for \equiv. We write 𝖯𝗋𝗈𝗉𝖯𝗋𝗈𝗉\mathsf{Prop}sansserif_Prop for the type of h-propositions in our metatheory, i.e. those P𝑃Pitalic_P such that pp𝑝superscript𝑝p\equiv p^{\prime}italic_p ≡ italic_p start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT for all p,p:P:𝑝superscript𝑝𝑃p,p^{\prime}\colon Pitalic_p , italic_p start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_P.

We assume basic familiarity with category theory. The set of objects of a category ΓΓ\Gammaroman_Γ is denoted |Γ|Γ\left|\Gamma\right|| roman_Γ |, the set of ΓΓ\Gammaroman_Γ-morphisms from γ0subscript𝛾0\gamma_{0}italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT to γ1subscript𝛾1\gamma_{1}italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT is denoted Γ[γ0,γ1]Γsubscript𝛾0subscript𝛾1\Gamma\>[\gamma_{0},\gamma_{1}]roman_Γ [ italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ], and identities are written as 𝗂𝖽𝗂𝖽\mathsf{id}sansserif_id. The discrete groupoid/category on a set X𝑋Xitalic_X is the category whose objects are elements of X𝑋Xitalic_X and whose morphisms from x0subscript𝑥0x_{0}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT to x1subscript𝑥1x_{1}italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT are inhabitants of the identity type x0x1subscript𝑥0subscript𝑥1x_{0}\equiv x_{1}italic_x start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ≡ italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT. The opposite category construction is understood to be definitionally involutive, i.e. |Γop|superscriptΓop\left|\Gamma^{\mathrm{op}}\right|| roman_Γ start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT | is defined to be |Γ|Γ\left|\Gamma\right|| roman_Γ | and Γop[γ0,γ1]superscriptΓopsubscript𝛾0subscript𝛾1\Gamma^{\mathrm{op}}\>[\gamma_{0},\gamma_{1}]roman_Γ start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT [ italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ] is defined to be Γ[γ1,γ0]Γsubscript𝛾1subscript𝛾0\Gamma\>[\gamma_{1},\gamma_{0}]roman_Γ [ italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ], and thus

(Γop)op=Γ.superscriptsuperscriptΓopopΓ(\Gamma^{\mathrm{op}})^{\mathrm{op}}=\Gamma.( roman_Γ start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT = roman_Γ .

2 The Category Interpretation of Type Theory

As mentioned, generalized algebraic theories (GATs) are a desirable formalism for expressing models of type theory, particularly when modelling numerous extensions to a ‘basic’ type theory. When a theory is given as a GAT, all operations and equations are made clear and explicit, making it easier to compare and contrast similar theories. The theory of (originally defined by Dybjer [11]) present the fundamental operations of type theory—contexts, variables, terms, types, and substitutions—encoded as a GAT; upon this basic framework, an endless variety of different type theories can be studied.

record CwF : Set where
field
-- Category of contexts
Con : Set
Sub : Con → Con → Set
id : Sub Γ Γ
____\_\!\__ _____\_\!\__ _∘__ : Sub Δ Γ → Sub Θ Δ → Sub Θ Γ
-- The empty context (terminal object)
• : Con
! : (Γ : Con) → Sub Γ •
-- Presheaf of types
Ty : Con → Set
____\_\!\__ _____\_\!\__ _[____\_\!\__ _____\_\!\__ _] : Ty Γ → Sub Δ Γ → Ty Δ
-- Presheaf of terms
Tm : (Γ : Con) → Ty Γ → Set
____\_\!\__ _____\_\!\__ _[____\_\!\__ _____\_\!\__ _] : Tm(Γ,A) → (σ : Sub Δ Γ) → Tm(Δ, A[σ])
-- Context extension
____\_\!\__ _____\_\!\__ _▹__ : (Γ : Con) → Ty Γ → Con
⟨__,____\_\!\__ _____\_\!\__ _⟩ : (σ : Sub Δ Γ) × Tm(Δ, A[σ]) ≅ Sub Δ (Γ▹A) : (p∘__, v[____\_\!\__ _____\_\!\__ _])
Figure 1: Main components of a CwF

The main components of a CwF are given in Fig. 1: a category 𝖢𝗈𝗇𝖢𝗈𝗇\mathsf{Con}sansserif_Con of contexts, whose morphisms are called substitutions; a presheaf 𝖳𝗒𝖳𝗒\mathsf{Ty}sansserif_Ty on 𝖢𝗈𝗇𝖢𝗈𝗇\mathsf{Con}sansserif_Con and a dependent presheaf 𝖳𝗆𝖳𝗆\mathsf{Tm}sansserif_Tm over 𝖳𝗒𝖳𝗒\mathsf{Ty}sansserif_Ty; and a context extension operation guaranteeing that 𝖳𝗆𝖳𝗆\mathsf{Tm}sansserif_Tm is locally representable (in the sense of [7]). The last line says that there is an isomorphism (natural in ΔΔ\Deltaroman_Δ) between the type of pairs (σ,t)𝜎𝑡(\sigma,t)( italic_σ , italic_t ) with σ:𝖲𝗎𝖻ΔΓ:𝜎𝖲𝗎𝖻ΔΓ\sigma\colon\mathsf{Sub}\;\Delta\;\Gammaitalic_σ : sansserif_Sub roman_Δ roman_Γ and t:𝖳𝗆(Δ,A[σ]):𝑡𝖳𝗆Δ𝐴delimited-[]𝜎t\colon\mathsf{Tm}(\Delta,A[\sigma])italic_t : sansserif_Tm ( roman_Δ , italic_A [ italic_σ ] ) and the type of substitutions from ΔΔ\Deltaroman_Δ to ΓAΓ𝐴\Gamma\triangleright Aroman_Γ ▷ italic_A. The left-to-right direction of this isomorphism is denoted __,______\langle\_\!\_,\_\!\_\rangle⟨ _ _ , _ _ ⟩ and the opposite direction as 𝗉__,𝗏[__]𝗉__𝗏delimited-[]__\mathsf{p}\circ\_\!\_,\mathsf{v}[\_\!\_]sansserif_p ∘ _ _ , sansserif_v [ _ _ ], so

τ𝗉τ,𝗏[τ]andσ𝗉σ,tandt𝗏[σ,t]formulae-sequence𝜏𝗉𝜏𝗏delimited-[]𝜏andformulae-sequence𝜎𝗉𝜎𝑡and𝑡𝗏delimited-[]𝜎𝑡\tau\equiv\langle\mathsf{p}\circ\tau,\mathsf{v}[\tau]\rangle\qquad\text{and}% \qquad\sigma\equiv\mathsf{p}\circ\langle\sigma,t\rangle\qquad\text{and}\qquad t% \equiv\mathsf{v}[\langle\sigma,t\rangle]italic_τ ≡ ⟨ sansserif_p ∘ italic_τ , sansserif_v [ italic_τ ] ⟩ and italic_σ ≡ sansserif_p ∘ ⟨ italic_σ , italic_t ⟩ and italic_t ≡ sansserif_v [ ⟨ italic_σ , italic_t ⟩ ]

for any σ,t𝜎𝑡\sigma,titalic_σ , italic_t as above and τ:𝖲𝗎𝖻Δ(ΓA):𝜏𝖲𝗎𝖻ΔΓ𝐴\tau\colon\mathsf{Sub}\;\Delta\;(\Gamma\triangleright A)italic_τ : sansserif_Sub roman_Δ ( roman_Γ ▷ italic_A ).

Two paradigm examples of CwFs are the setoid model of [13, 2] and the groupoid model of [15]. In the former, the contexts are setoids (i.e. sets equipped with equivalence relations), the types are families of setoids (functorially) indexed over their context setoid, and terms are given by the appropriate notion of section of their type (see the Coq formalization of [3] for a precise definition). The groupoid model is quite similar: contexts are groupoids, types are families of groupoids functorially indexed over their context groupoid, and terms are the appropriate notion of section. Indeed, we can view the groupoid model as generalizing the setoid model: a setoid can be viewed as a groupoid whose hom-sets are subsingletons (or propositions, in the terminology of [28]), sets with at most one element. In other words, the groupoid model is what results when the assumption of proof-irrelevance is dropped from the setoid model.

Both these models provide interpretations for numerous type formers, in particular the dependent types, identity types, and universes characteristic of Martin-Löf Type Theory [21, 22]. The difference in these models is reflected in the type theories they interpret: while both models permit arbitrary iteration of the identity type former (expressing identities between identities, and identities between identities between identities, and so on), these iterated identity types become trivial more quickly in the setoid model. More precisely, the setoid model validates the uniqueness of identity proofs principle, meaning that any two terms of an identity type, p,q:𝖳𝗆(Γ,𝖨𝖽(x,y)):𝑝𝑞𝖳𝗆Γ𝖨𝖽𝑥𝑦p,q\colon\mathsf{Tm}(\Gamma,\mathsf{Id}(x,y))italic_p , italic_q : sansserif_Tm ( roman_Γ , sansserif_Id ( italic_x , italic_y ) ) are themselves identical, 𝖴𝖨𝖯(p,q):𝖳𝗆(Γ,𝖨𝖽(p,q)):𝖴𝖨𝖯𝑝𝑞𝖳𝗆Γ𝖨𝖽𝑝𝑞\mathsf{UIP}(p,q)\colon\mathsf{Tm}(\Gamma,\mathsf{Id}(p,q))sansserif_UIP ( italic_p , italic_q ) : sansserif_Tm ( roman_Γ , sansserif_Id ( italic_p , italic_q ) ). The groupoid model famously violates this principle: in the type theory of the groupoid model, there are types (in particular, the universe of sets) which are not h-sets, i.e. they possess terms which are proved identical by multiple, distinct identity proofs.

This provides a roadmap for how we might develop a model of directed type theory. Since directed type theory can be described as “dependent type theory, but with asymmetric identity types”, this leads us to suspect that models of directed type theory will result if we simply drop the assumption of symmetry from the setoid and groupoid models. A setoid without symmetry is a preorder, and a groupoid without symmetry is a category. A close inspection of the definition of the groupoid model reveals that nothing in its interpretation of just the CwF structure requires symmetry (i.e. that morphisms are invertible), and thus we can define the preorder model of type theory and the category model of type theory. The category model is given by Fig. 2, minus the definition of context extension (which will be discussed more below). This is just a generalization of the groupoid model, obtained by dropping symmetry: contexts are categories (and substitutions are functors), types are families of categories, and terms are sections. We wont focus on the preorder model here, but leave it to future work to develop the directed analogue of setoid-model-specific considerations. Instead, we’ll highlight those features of the category model which are relevant for modelling directed type theory, before abstracting those features into the notion of a directed CwF in the next section.

Con = Cat
Sub Γ Δ = Cat\:[ Γ, Δ ]
• : Cat
• = 𝟙 -- the singleton category, with one object, *, and only the identity morphism
-- A : Ty Γ means A : Γ → Cat
record Ty (Γ : Con) : Set where
field
obj : |Γ| → Cat
map : Γ\:[ γ₀, γ₁ ] → Cat\:[ obj γ₀, obj γ₁ ]
fid : map (idγ) ≡ idobj(γ)obj𝛾{}_{\textsf{obj}(\gamma)}start_FLOATSUBSCRIPT obj ( italic_γ ) end_FLOATSUBSCRIPT
fcomp : map (γ₁₂ ∘ γ₀₁) ≡ (map γ₁₂) ∘ (map γ₀₁)
record Tm (Γ : Con) (A : Ty Γ) : Set where
field
obj : (γ : |Γ|) → |A(γ)|
map : (γ₀₁ : Γ\:[ γ₀, γ₁ ]) → (A γ₁)\:[A γ₀₁ (obj γ₀), obj(γ₁)]
fid : map (idγ) ≡ idobj(γ)obj𝛾{}_{\textsf{obj}(\gamma)}start_FLOATSUBSCRIPT obj ( italic_γ ) end_FLOATSUBSCRIPT
fcomp : map (γ₁₂ ∘ γ₀₁) ≡ (map γ₁₂) ∘ (A γ₁₂ (map γ₀₁))
Figure 2: The CwF structure of the category model, excluding context extension.

While the basic CwF structure of the groupoid model doesn’t require symmetry (i.e. that all morphisms are invertible), its interpretations of further type formers certainly do. After all, our hope is that by passing from the groupoid model to the category model, the symmetric identity types of the former will become asymmetric hom-types in the latter. Consider the semantics of the identity type former in the groupoid model. Here, and henceforth, we define a type (in this case 𝖨𝖽(t,t)𝖨𝖽𝑡superscript𝑡\mathsf{Id}(t,t^{\prime})sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT )) by giving its object- and morphism-parts, which are denoted obj and map in Fig. 2, but here are both written as just 𝖨𝖽(t,t)𝖨𝖽𝑡superscript𝑡\mathsf{Id}(t,t^{\prime})sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ).

-- Taken from [15, Section 4.10]
Id : Tm(Γ, A) → Tm(Γ, A) → Ty Γ
(Id(t,t’)) γ = (A γ)\:[t γ, t γ] -- Discrete groupoid
(Id(t,t’)) (γ₀₁ : Γ[ γ₀ , γ₁ ]) : (A γ₀)\:[t γ₀, t γ₀] → (A γ₁)\:[t γ₁, t γ₁]
(Id(t,t’)) γ₀₁ x₀ = (t γ₀₁) ∘ (A γ₀₁ x₀) ∘ (t γ₀₁)⁻¹

Here, the fact that A(γ1)𝐴subscript𝛾1A(\gamma_{1})italic_A ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) is a groupoid is used in an essential way (we must take the inverse of t(γ01)superscript𝑡subscript𝛾01t^{\prime}(\gamma_{01})italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT )), and hence this definition doesn’t work in the category model. But notice the following: the term t𝑡titalic_t is in the “negative” position (the domain) and the term tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT is in the “positive” position. Fittingly, we only use the inverse of t(γ01)𝑡subscript𝛾01t(\gamma_{01})italic_t ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT )—never t(γ01)𝑡subscript𝛾01t(\gamma_{01})italic_t ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) itself—and only use t(γ01)superscript𝑡subscript𝛾01t^{\prime}(\gamma_{01})italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) but not its inverse. This observation will provide the key to adapting this definition for the category model.

What is needed is for t𝑡titalic_t to be a contravariant term of type A𝐴Aitalic_A, while keeping tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT as covariant. This difference can be articulated in the category model, using a fundamental construct from category theory: opposite categories. A type A:𝖳𝗒Γ:𝐴𝖳𝗒ΓA\colon\mathsf{Ty}\;\Gammaitalic_A : sansserif_Ty roman_Γ in the category model consists of a family of categories A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ) for each object γ:|Γ|:𝛾Γ\gamma\colon\left|\Gamma\right|italic_γ : | roman_Γ | and a functor A(γ01):𝖢𝖺𝗍[A(γ0),A(γ1)]:𝐴subscript𝛾01𝖢𝖺𝗍𝐴subscript𝛾0𝐴subscript𝛾1A(\gamma_{01})\colon\mathsf{Cat}\>[A(\gamma_{0}),A(\gamma_{1})]italic_A ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) : sansserif_Cat [ italic_A ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_A ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ] for each morphism γ01:Γ[γ0,γ1]:subscript𝛾01Γsubscript𝛾0subscript𝛾1\gamma_{01}\colon\Gamma[\gamma_{0},\gamma_{1}]italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT : roman_Γ [ italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ]. Given such a family of categories A𝐴Aitalic_A, we can form a new family Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, where A(γ)superscript𝐴𝛾A^{-}(\gamma)italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ( italic_γ ) is defined as the opposite category of A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ). This extends to the morphism part as well, because any functor f:𝖢𝖺𝗍[C,D]:𝑓𝖢𝖺𝗍𝐶𝐷f\colon\mathsf{Cat}\>[C,D]italic_f : sansserif_Cat [ italic_C , italic_D ] can be viewed as a functor on their opposites, f:𝖢𝖺𝗍[Cop,Dop]:𝑓𝖢𝖺𝗍superscript𝐶opsuperscript𝐷opf\colon\mathsf{Cat}\>[C^{\mathrm{op}},D^{\mathrm{op}}]italic_f : sansserif_Cat [ italic_C start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT , italic_D start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT ]. Alternatively, we could view A𝐴Aitalic_A as a functor Γ𝖢𝖺𝗍Γ𝖢𝖺𝗍\Gamma\to\mathsf{Cat}roman_Γ → sansserif_Cat, and define Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT to be the composition of A𝐴Aitalic_A with the endofunctor (__)op:𝖢𝖺𝗍𝖢𝖺𝗍:superscript__op𝖢𝖺𝗍𝖢𝖺𝗍(\_\!\_)^{\mathrm{op}}\colon\mathsf{Cat}\to\mathsf{Cat}( _ _ ) start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT : sansserif_Cat → sansserif_Cat. We can state generally that the category model validates the following rule:

A:𝖳𝗒ΓA:𝖳𝗒Γ.A^{-}\colon\mathsf{Ty}\;\Gamma.A\colon\mathsf{Ty}\;\Gammastart_ROW start_CELL italic_A : sansserif_Ty roman_Γ end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Ty roman_Γ . end_ARG end_CELL end_ROW

If t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γsuperscript𝐴t\colon\mathsf{Tm}(\Gamma,A^{-})italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ), this means that the object part of t𝑡titalic_t will still send objects γ:|Γ|:𝛾Γ\gamma\colon\left|\Gamma\right|italic_γ : | roman_Γ | to objects of A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ), since A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ) and A(γ)superscript𝐴𝛾A^{-}(\gamma)italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ( italic_γ ) have the same objects. But observe the type of its morphism part:

t:(γ01:Γ[γ0,γ1])(Aγ1)[tγ1,Aγ01(tγ0)].t\colon(\gamma_{01}\colon\Gamma\>[\gamma_{0},\gamma_{1}])\to(A\;\gamma_{1})\>[% t\;\gamma_{1},A\;\gamma_{01}\;(t\;\gamma_{0})].italic_t : ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT : roman_Γ [ italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ] ) → ( italic_A italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) [ italic_t italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ( italic_t italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) ] .

This is precisely what we need to articulate the definition of hom-types in the category model: see Fig. 3. This definition is almost exactly the same as the semantics of 𝖨𝖽𝖨𝖽\mathsf{Id}sansserif_Id in the groupoid model, but with t𝑡titalic_t changed to be a term of Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, thus eliminating the need for the categories A(γi)𝐴subscript𝛾𝑖A(\gamma_{i})italic_A ( italic_γ start_POSTSUBSCRIPT italic_i end_POSTSUBSCRIPT ) to be groupoids. Here’s the hom-type formation, expressed as a rule:

t:𝖳𝗆(Γ,A)t:𝖳𝗆(Γ,A)𝖧𝗈𝗆(t,t):𝖳𝗒Γ.\mathsf{Hom}(t,t^{\prime})\colon\mathsf{Ty}\;\Gamma.\lx@proof@logical@and t% \colon\mathsf{Tm}(\Gamma,A^{-})t^{\prime}\colon\mathsf{Tm}(\Gamma,A)start_ROW start_CELL italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : sansserif_Tm ( roman_Γ , italic_A ) end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) : sansserif_Ty roman_Γ . end_ARG end_CELL end_ROW

The type annotation of t𝑡titalic_t as a “negative” term and the implicit annotation of tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT as “positive” serve as a kind of modal typing discipline for keeping track of the variances of terms.

Hom : Tm(Γ, A⁻) → Tm(Γ, A) → Ty Γ
(Hom(t,t’)) γ = (A γ)\:[t γ, t γ] -- Discrete category
(Hom(t,t’)) (γ₀₁ : Γ[ γ₀ , γ₁ ]) : (A γ₀)\:[t γ₀, t γ₀] → (A γ₁)\:[t γ₁, t γ₁]
(Hom(t,t’)) γ₀₁ x₀ = (t γ₀₁) ∘ (A γ₀₁ x₀) ∘ (t γ₀₁)
Figure 3: Semantics of the 𝖧𝗈𝗆𝖧𝗈𝗆\mathsf{Hom}sansserif_Hom-type former in the category model

For now, we just state the formation rule for hom-types; introducing and eliminating terms of hom-types will require more machinery. To see what kind of machinery, let’s instead consider dependent function types. Like with the formation of hom-types, ΠΠ\Piroman_Π-types involve positive and negative “variance”: a function is contravariant in its argument and covariant in its result. Therefore, as we might expect, the interpretation of ΠΠ\Piroman_Π-types in the groupoid model ([15, Section 4.6]) makes essential use of the invertability of morphisms in a groupoid. Again, it only comes into play when defining the morphism part of the interpretation: the object part (reproduced in Fig. 5) defines for each γ:|Γ|:𝛾Γ\gamma\colon\left|\Gamma\right|italic_γ : | roman_Γ | an auxiliary type Bγsubscript𝐵𝛾B_{\gamma}italic_B start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT in context A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ), and then specifies the category Π(A,B)γΠ𝐴𝐵𝛾\Pi(A,B)\;\gammaroman_Π ( italic_A , italic_B ) italic_γ with terms θ:𝖳𝗆(A(γ),Bγ):𝜃𝖳𝗆𝐴𝛾subscript𝐵𝛾\theta\colon\mathsf{Tm}(A(\gamma),B_{\gamma})italic_θ : sansserif_Tm ( italic_A ( italic_γ ) , italic_B start_POSTSUBSCRIPT italic_γ end_POSTSUBSCRIPT ) as objects. This works fine in the category model. However, defining the morphism part of Π(A,B)Π𝐴𝐵\Pi(A,B)roman_Π ( italic_A , italic_B ) requires a kind of negative variance deeper than the shallow contravariance of Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT: in the type 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) it was a term that occurred negatively (t𝑡titalic_t), in the type Π(A,B)Π𝐴𝐵\Pi(A,B)roman_Π ( italic_A , italic_B ) it’s a type that occurs negatively.

To make sense of this, we must consider the opposite category operation, not just as acting on each A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ) in a family of categories over a context ΓΓ\Gammaroman_Γ, but as acting on the contexts themselves. In the category model, we have the following rules.

Γ:𝖢𝗈𝗇Γ:𝖢𝗈𝗇σ:𝖲𝗎𝖻ΔΓσ:𝖲𝗎𝖻ΔΓinfer:superscriptΓ𝖢𝗈𝗇:Γ𝖢𝗈𝗇infer:superscript𝜎𝖲𝗎𝖻superscriptΔsuperscriptΓ:𝜎𝖲𝗎𝖻ΔΓ\Gamma^{-}\colon\mathsf{Con}\Gamma\colon\mathsf{Con}\qquad\sigma^{-}\colon% \mathsf{Sub}\;\Delta^{-}\;\Gamma^{-}\sigma\colon\mathsf{Sub}\;\Delta\;\Gammastart_ROW start_CELL roman_Γ : sansserif_Con end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Con end_ARG end_CELL end_ROW start_ROW start_CELL italic_σ : sansserif_Sub roman_Δ roman_Γ end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Sub roman_Δ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT end_ARG end_CELL end_ROW

That is, we can negate contexts and substitutions as well as types: ΓsuperscriptΓ\Gamma^{-}roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT is interpreted as ΓopsuperscriptΓop\Gamma^{\mathrm{op}}roman_Γ start_POSTSUPERSCRIPT roman_op end_POSTSUPERSCRIPT, and this operation is (covariantly) lifted onto functors as before. Now consider the difference in the morphism parts of terms with these different kinds of variance.

-- t : Tm(Γ, A) where A : Ty Γ
t γ₀₁ : (A γ₁)\:[ A γ₀₁ (t γ₀), t γ₁ ]
-- t : Tm(Γ, A⁻) where A : Ty Γ
t γ₀₁ : (A γ₁)\:[ t γ₁, A γ₀₁ (t γ₀) ]
-- t : Tm(Γ⁻, A) where A : Ty Γ⁻
t γ₀₁ : (A γ₀)\:[ t γ₀, A γ₀₁ (t γ₁) ]

This is why we referred to this as “shallow” and “deep” negation: the difference between the first two is that we’ve flipped around each A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ), whereas in the third term, the dependence of A𝐴Aitalic_A on ΓΓ\Gammaroman_Γ has itself been flipped around (A𝐴Aitalic_A is now contravariant, so Aγ01𝐴subscript𝛾01A\;\gamma_{01}italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT takes objects of A(γ1)𝐴subscript𝛾1A(\gamma_{1})italic_A ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) to objects of A(γ0)𝐴subscript𝛾0A(\gamma_{0})italic_A ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT )). It is this latter kind of contravariance that describes A𝐴Aitalic_A’s position in Π(A,B)Π𝐴𝐵\Pi(A,B)roman_Π ( italic_A , italic_B ).

We need another ingredient to state the ΠΠ\Piroman_Π-type formation rule: negative context extension. In the type Π(A,B)Π𝐴𝐵\Pi(A,B)roman_Π ( italic_A , italic_B ), A𝐴Aitalic_A appears negatively, i.e. we want A𝐴Aitalic_A to depend negatively on ΓΓ\Gammaroman_Γ, i.e. A:𝖳𝗒(Γ):𝐴𝖳𝗒superscriptΓA\colon\mathsf{Ty}(\Gamma^{-})italic_A : sansserif_Ty ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ); but B𝐵Bitalic_B appears positively—we want B𝐵Bitalic_B to depend covariantly on ΓΓ\Gammaroman_Γ, plus a variable of type A𝐴Aitalic_A. In the theory of CwFs, a type “depending on a variable” of another type is encoded by context extension. In the category model, we in fact have two context extension operations (see Fig. 4), corresponding to the two ways a type can depend on a context. The positive context extension operator, +superscript\triangleright^{+}▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT, obeys the usual isomorphism discussed above. For the negative extension, the isomorphism becomes:

(σ:𝖲𝗎𝖻ΔΓ)×(𝖳𝗆(Δ,A[σ]))𝖲𝗎𝖻Δ(ΓA)(\sigma\colon\mathsf{Sub}\;\Delta\;\Gamma)\times(\mathsf{Tm}(\Delta^{-},A[% \sigma^{-}]^{-}))\cong\mathsf{Sub}\;\Delta\;(\Gamma\triangleright^{-}A)( italic_σ : sansserif_Sub roman_Δ roman_Γ ) × ( sansserif_Tm ( roman_Δ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A [ italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) ) ≅ sansserif_Sub roman_Δ ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A ) (1)

for any A:𝖳𝗒Γ:𝐴𝖳𝗒superscriptΓA\colon\mathsf{Ty}\;\Gamma^{-}italic_A : sansserif_Ty roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT. We’ll write __,__\left\langle\_\!\_,_{-}\_\!\_\right\rangle⟨ _ _ , start_POSTSUBSCRIPT - end_POSTSUBSCRIPT _ _ ⟩ for the left-to-right direction of this isomorphism, and write 𝗉,A:𝖲𝗎𝖻(ΓA)Γ:subscript𝗉𝐴𝖲𝗎𝖻superscriptΓ𝐴Γ\mathsf{p}_{-,A}\colon\mathsf{Sub}\;(\Gamma\triangleright^{-}A)\;\Gammasansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT : sansserif_Sub ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A ) roman_Γ and 𝗏,A:𝖳𝗆((ΓA),A[𝗉,A]):subscript𝗏𝐴𝖳𝗆superscriptsuperscriptΓ𝐴𝐴superscriptdelimited-[]superscriptsubscript𝗉𝐴\mathsf{v}_{-,A}\colon\mathsf{Tm}((\Gamma\triangleright^{-}A)^{-},A[\mathsf{p}% _{-,A}^{-}]^{-})sansserif_v start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT : sansserif_Tm ( ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A [ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) for the data obtained from applying the right-to-left direction to the identity morphism on ΓAsuperscriptΓ𝐴\Gamma\triangleright^{-}Aroman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A. With this, we have everything needed to give the semantics of the ΠΠ\Piroman_Π-type former; this is done in Fig. 5. As expected for ΠΠ\Piroman_Π-types, we have an isomorphism between 𝖳𝗆(Γ,Π+(A,B))𝖳𝗆ΓsuperscriptΠ𝐴𝐵\mathsf{Tm}(\Gamma,\Pi^{+}(A,B))sansserif_Tm ( roman_Γ , roman_Π start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT ( italic_A , italic_B ) ) and 𝖳𝗆(ΓA,B)𝖳𝗆superscriptΓ𝐴𝐵\mathsf{Tm}(\Gamma\triangleright^{-}A,B)sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A , italic_B ), the application and lambda-abstraction rules. This is omitted here for reasons of space, but included in the appendix with accompanying calculations; see Fig. 13.

____\_\!\__ _____\_\!\__ _▹⁺__ : (Γ : Con) → Ty Γ → Con
∣Γ ▹⁺ A∣ = (γ : ∣Γ∣) × ∣A γ∣
(Γ ▹⁺ A)\:[ (γ₀, a₀) , (γ₁, a₁) ] = (γ₀₁ : Γ\:[ γ₀, γ₁ ]) × (A γ₁)\:[ A γ₀₁ a₀, a₁ ]
____\_\!\__ _____\_\!\__ _▹⁻__ : (Γ : Con) → Ty Γ⁻ → Con
∣Γ ▹⁻ A∣ = (γ : ∣Γ∣) × ∣A γ∣
(Γ ▹⁻ A)\:[ (γ₀, a₀) , (γ₁, a₁) ] = (γ₀₁ : Γ\:[ γ₀, γ₁ ]) × (A γ₁)\:[ a₀ , A γ₀₁ a₁ ]
Figure 4: Semantics of context extension in the category model
Π : (A : Ty Γ⁻) → Ty(Γ ▹⁻ A) → Ty Γ
|Π(A,B) γ| = Tm(A(γ), Bγ)
where
Bγ : Ty(A γ)
Bγ a = B(γ,a)
Bγ (x : (A γ)[ a , a ]) = B(idγ,x)
record (Π(A,B) γ)[____\_\!\__ _,____\_\!\__ _] : (θ θ : Tm(A(γ), Bγ)) → Set where
component : (a : |A γ|) → (B(γ,a))\:[ θ a , θ a ]
naturality : (x : (A γ)\:[ a , a ]) → (θ x) ∘ B(γ,x)(component a) ≡ (component a’) ∘ (θ x)
Π(A,B) γ₀₁ : Tm(A(γ₀), Bγ0subscript𝛾0{}_{\gamma_{0}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT) → Tm(A(γ₁), Bγ1subscript𝛾1{}_{\gamma_{1}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT)
(Π(A,B) γ₀₁ θ₀) (a₁ : |A γ₁|) = B(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01subscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT) (θ₀(A γ₀₁ a₁))
(Π(A,B) γ₀₁ θ₀) (x₁ : A γ₁\:[a₁ , a₁’]) = B(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01superscriptsubscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}^{\prime}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_FLOATSUBSCRIPT) (θ₀(A γ₀₁ x₁))
Figure 5: Semantics of the ΠΠ\Piroman_Π-type former in the category model

Let’s now return to the key feature of directed type theory, hom-types. Above, we gave just the formation rule for hom-types, but said nothing of how to introduce or eliminate terms of this type. Stating the introduction rule, the term refl inhabiting 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡𝑡\mathsf{Hom}(t,t)sansserif_Hom ( italic_t , italic_t ) for each term t𝑡titalic_t proves rather subtle. The difficulty stems from the mixed-variance problem mentioned in the introduction: since our formation rule demands the domain term t𝑡titalic_t be of type Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and the codomain term tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT to be of type A𝐴Aitalic_A, it’s not immediately clear how to make 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡𝑡\mathsf{Hom}(t,t)sansserif_Hom ( italic_t , italic_t ) well-formed. There is, in general, no way to coerce terms of type A𝐴Aitalic_A into terms of type Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT or vice versa, and we have no rule permitting us to use a term in both variances.

As mentioned in the introduction, the solution to this problem presented in [23] is to use core types. This solution consists of asserting a new type A0superscript𝐴0A^{0}italic_A start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT for each A𝐴Aitalic_A, equipped with coercions 𝖳𝗆(Γ,A0)𝖳𝗆(Γ,A)𝖳𝗆Γsuperscript𝐴0𝖳𝗆Γ𝐴\mathsf{Tm}(\Gamma,A^{0})\to\mathsf{Tm}(\Gamma,A)sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT ) → sansserif_Tm ( roman_Γ , italic_A ) and 𝖳𝗆(Γ,A0)𝖳𝗆(Γ,A)𝖳𝗆Γsuperscript𝐴0𝖳𝗆Γsuperscript𝐴\mathsf{Tm}(\Gamma,A^{0})\to\mathsf{Tm}(\Gamma,A^{-})sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT ) → sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ). Then, for a term t:𝖳𝗆(Γ,A0):𝑡𝖳𝗆Γsuperscript𝐴0t\colon\mathsf{Tm}(\Gamma,A^{0})italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT ), it makes sense to write 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡𝑡\mathsf{Hom}(t,t)sansserif_Hom ( italic_t , italic_t ), as t𝑡titalic_t can be coerced to both the positive and negative modality, in order to fit the 𝖧𝗈𝗆𝖧𝗈𝗆\mathsf{Hom}sansserif_Hom formation rule. From there, a directed J-rule can be stated for eliminating hom terms. The issue with this solution is that it forces homs to have core endpoints: the directed J-rule can only be used to prove claims about homs anchored at a core term, and it’s not clear that proofs about arbitrary homs can be made. For the synthetic category-theoretic claims we study below, this will prove to be an unacceptable restriction.

A solution which avoids this shortcoming is revealed by considering hom-types in the empty context. In the empty context, a type A𝐴Aitalic_A is the same thing as a category, and a term of type A𝐴Aitalic_A is the same thing as an object of type A𝐴Aitalic_A (we silently coerce between 𝟙X1𝑋\mathbbm{1}\to Xblackboard_1 → italic_X and X𝑋Xitalic_X). So then there’s no difference between terms of type A𝐴Aitalic_A and terms of type Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, since a category and its opposite have the same objects. Therefore, in the empty context, there is no mixed-variance problem, and we can state the introduction rule for 𝗋𝖾𝖿𝗅tsubscript𝗋𝖾𝖿𝗅𝑡\mathsf{refl}_{t}sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT simply by coercing t𝑡titalic_t to be positive and negative as needed.

This doesn’t extend to arbitrary contexts: as we saw above, terms t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γsuperscript𝐴t\colon\mathsf{Tm}(\Gamma,A^{-})italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and t:𝖳𝗆(Γ,A):superscript𝑡𝖳𝗆Γ𝐴t^{\prime}\colon\mathsf{Tm}(\Gamma,A)italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : sansserif_Tm ( roman_Γ , italic_A ) have different morphism parts. But here’s the key observation: if ΓΓ\Gammaroman_Γ is a groupoid, then we can still coerce between A𝐴Aitalic_A and Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT: given t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γsuperscript𝐴t\colon\mathsf{Tm}(\Gamma,A^{-})italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ), we can obtain t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γ𝐴-t\colon\mathsf{Tm}(\Gamma,A)- italic_t : sansserif_Tm ( roman_Γ , italic_A ), and vice-versa. The definition is given in Fig. 6; there (and henceforth), we use Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon to indicate that ΓΓ\Gammaroman_Γ is a groupoid, and therefore can invert ΓΓ\Gammaroman_Γ-morphisms as needed. So, rather than introduce a new type A0superscript𝐴0A^{0}italic_A start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT whose terms can be either positive or negative, we have instead have identified those contexts—neutral contexts—where terms of the familiar types A𝐴Aitalic_A and Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT can be inter-converted. Given this, we can introduce refl:

Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇A:𝖳𝗒Γt:𝖳𝗆(Γ,A)𝗋𝖾𝖿𝗅t:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)).\mathsf{refl}_{t}\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,-t)).% \lx@proof@logical@and\Gamma\colon\mathsf{NeutCon}A\colon\mathsf{Ty}\;\Gamma t% \colon\mathsf{Tm}(\Gamma,A^{-})start_ROW start_CELL roman_Γ : sansserif_NeutCon italic_A : sansserif_Ty roman_Γ italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , - italic_t ) ) . end_ARG end_CELL end_ROW

We only need to assert 𝗋𝖾𝖿𝗅tsubscript𝗋𝖾𝖿𝗅𝑡\mathsf{refl}_{t}sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT for t𝑡titalic_t of type Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, because the analogous rule for tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT of type A𝐴Aitalic_A can be derived: given t:𝖳𝗆(Γ,A):superscript𝑡𝖳𝗆Γ𝐴t^{\prime}\colon\mathsf{Tm}(\Gamma,A)italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : sansserif_Tm ( roman_Γ , italic_A ), we observe that t=(t)superscript𝑡superscript𝑡t^{\prime}=-(-t^{\prime})italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT = - ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ), so 𝗋𝖾𝖿𝗅t:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)):subscript𝗋𝖾𝖿𝗅superscript𝑡𝖳𝗆Γ𝖧𝗈𝗆superscript𝑡superscript𝑡\mathsf{refl}_{-t^{\prime}}\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(-t^{\prime},t% ^{\prime}))sansserif_refl start_POSTSUBSCRIPT - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_POSTSUBSCRIPT : sansserif_Tm ( roman_Γ , sansserif_Hom ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) ).

- : {Γ : NeutCon}{A : Ty Γ} → Tm(Γ,A) → Tm(Γ,A⁻)
-t γ = t γ
-t γ₀₁ = A γ₀₁ (t’(γ₀₁⁻¹))
- : {Γ : NeutCon}{A : Ty Γ} → Tm(Γ,A⁻) → Tm(Γ,A)
-t γ = t γ
-t γ₀₁ = A γ₀₁ (t(γ₀₁⁻¹))
Figure 6: Semantics of neutral-context coercion in the category model

Let’s conclude this section by giving an eliminator for our hom-type, known as the directed J-rule or directed path induction. Following [15, Section 4.10], we study directed path induction in the empty context first, which can then be extended to an arbitrary neutral context. Given A:𝖳𝗒A\colon\mathsf{Ty}\bulletitalic_A : sansserif_Ty ∙ and t:𝖳𝗆(,A):𝑡𝖳𝗆superscript𝐴t\colon\mathsf{Tm}(\bullet,A^{-})italic_t : sansserif_Tm ( ∙ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and some M:𝖳𝗒(+A+𝖧𝗈𝗆(t,𝗏))M\colon\mathsf{Ty}(\bullet\triangleright^{+}A\triangleright^{+}\mathsf{Hom}(t,% \mathsf{v}))italic_M : sansserif_Ty ( ∙ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT sansserif_Hom ( italic_t , sansserif_v ) ), our goal is to be able to prove M[t,p]𝑀superscript𝑡𝑝M[t^{\prime},p]italic_M [ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ] for arbitrary tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT and p𝑝pitalic_p, just by supplying a term m𝑚mitalic_m of M[t,𝗋𝖾𝖿𝗅t]𝑀𝑡subscript𝗋𝖾𝖿𝗅𝑡M[-t,\mathsf{refl}_{t}]italic_M [ - italic_t , sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ]. Translated into the category model semantics: A𝐴Aitalic_A is a category, t𝑡titalic_t and tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT are objects of A𝐴Aitalic_A, M𝑀Mitalic_M is a functor from the coslice category t/A𝑡𝐴t/Aitalic_t / italic_A into 𝖢𝖺𝗍𝖢𝖺𝗍\mathsf{Cat}sansserif_Cat, p𝑝pitalic_p is an A𝐴Aitalic_A-morphism from t𝑡titalic_t to tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT, and m𝑚mitalic_m is an object of the category M(t,𝗂𝖽t)𝑀𝑡subscript𝗂𝖽𝑡M(t,\mathsf{id}_{t})italic_M ( italic_t , sansserif_id start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ). The key observation is that p𝑝pitalic_p is then also a morphism in the coslice category from (t,𝗂𝖽)𝑡𝗂𝖽(t,\mathsf{id})( italic_t , sansserif_id ) to (t,p)superscript𝑡𝑝(t^{\prime},p)( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ).

t𝑡{t}italic_tt𝑡{t}italic_tt.superscript𝑡{t^{\prime}.}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT .𝗂𝖽tsubscript𝗂𝖽𝑡\scriptstyle{\mathsf{id}_{t}}sansserif_id start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPTp𝑝\scriptstyle{p}italic_pp𝑝\scriptstyle{p}italic_p

Therefore,

M(p):𝖢𝖺𝗍[M(t,𝗂𝖽t),M(t,p)]:𝑀𝑝𝖢𝖺𝗍𝑀𝑡subscript𝗂𝖽𝑡𝑀superscript𝑡𝑝M(p)\colon\mathsf{Cat}\>[M(t,\mathsf{id}_{t}),M(t^{\prime},p)]italic_M ( italic_p ) : sansserif_Cat [ italic_M ( italic_t , sansserif_id start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) , italic_M ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ) ]

and so the object part of this functor turns objects of M(t,𝗂𝖽t)𝑀𝑡subscript𝗂𝖽𝑡M(t,\mathsf{id}_{t})italic_M ( italic_t , sansserif_id start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) into objects of M(t,p)𝑀superscript𝑡𝑝M(t^{\prime},p)italic_M ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ), that is, it turns terms m:𝖳𝗆(,M[t,𝗋𝖾𝖿𝗅]):𝑚𝖳𝗆𝑀𝑡𝗋𝖾𝖿𝗅m\colon\mathsf{Tm}(\bullet,M[-t,\mathsf{refl}])italic_m : sansserif_Tm ( ∙ , italic_M [ - italic_t , sansserif_refl ] ) into terms

(𝖩t,Mm)[t,p]:𝖳𝗆(,M[t,p]).:subscript𝖩𝑡𝑀𝑚superscript𝑡𝑝𝖳𝗆𝑀superscript𝑡𝑝(\mathsf{J}_{t,M}\;m)\>[t^{\prime},p]\colon\mathsf{Tm}(\bullet,M[t^{\prime},p]).( sansserif_J start_POSTSUBSCRIPT italic_t , italic_M end_POSTSUBSCRIPT italic_m ) [ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ] : sansserif_Tm ( ∙ , italic_M [ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ] ) .

And, since M(𝗂𝖽)𝑀𝗂𝖽M(\mathsf{id})italic_M ( sansserif_id ) is the identity functor, we have the β𝛽\betaitalic_β law, saying that 𝖩t,Mm[t,𝗋𝖾𝖿𝗅t]msubscript𝖩𝑡𝑀𝑚𝑡subscript𝗋𝖾𝖿𝗅𝑡𝑚\mathsf{J}_{t,M}\;m\>[-t,\mathsf{refl}_{t}]\equiv msansserif_J start_POSTSUBSCRIPT italic_t , italic_M end_POSTSUBSCRIPT italic_m [ - italic_t , sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ] ≡ italic_m. The general law replaces \bullet with an arbitrary neutral context:

Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇t:𝖳𝗆(Γ,A)m:𝖳𝗆(Γ,M[t,𝗋𝖾𝖿𝗅t])A:𝖳𝗒ΓM:𝖳𝗒(Γ+A+𝖧𝗈𝗆(t[𝗉A],𝗏))𝖩t,Mm:𝖳𝗆(Γ+A+𝖧𝗈𝗆(t[𝗉A],𝗏),M)infer:subscript𝖩𝑡𝑀𝑚𝖳𝗆superscriptsuperscriptΓ𝐴𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝐴𝗏𝑀matrix:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇:𝑡𝖳𝗆Γsuperscript𝐴:𝑚𝖳𝗆Γ𝑀𝑡subscript𝗋𝖾𝖿𝗅𝑡matrix:𝐴𝖳𝗒Γ:𝑀𝖳𝗒superscriptsuperscriptΓ𝐴𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝐴𝗏\mathsf{J}_{t,M}\;m\;\colon\mathsf{Tm}(\Gamma\triangleright^{+}A\triangleright% ^{+}\mathsf{Hom}(t[\mathsf{p}_{A}],\mathsf{v}),M)\lx@proof@logical@and\begin{% matrix}\Gamma\colon\mathsf{NeutCon}\\ t\colon\mathsf{Tm}(\Gamma,A^{-})\\ m\colon\mathsf{Tm}(\Gamma,M[-t,\mathsf{refl}_{t}])\end{matrix}\begin{matrix}A% \colon\mathsf{Ty}\;\Gamma\\ M\colon\mathsf{Ty}(\Gamma\triangleright^{+}A\triangleright^{+}\mathsf{Hom}(t[% \mathsf{p}_{A}],\mathsf{v}))\\ \ \end{matrix}start_ROW start_CELL start_ARG start_ROW start_CELL roman_Γ : sansserif_NeutCon end_CELL end_ROW start_ROW start_CELL italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) end_CELL end_ROW start_ROW start_CELL italic_m : sansserif_Tm ( roman_Γ , italic_M [ - italic_t , sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ] ) end_CELL end_ROW end_ARG start_ARG start_ROW start_CELL italic_A : sansserif_Ty roman_Γ end_CELL end_ROW start_ROW start_CELL italic_M : sansserif_Ty ( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] , sansserif_v ) ) end_CELL end_ROW end_ARG end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG sansserif_J start_POSTSUBSCRIPT italic_t , italic_M end_POSTSUBSCRIPT italic_m : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] , sansserif_v ) , italic_M ) end_ARG end_CELL end_ROW (2)

but the category model interpretation—see Fig. 7—essentially follows this same idea. If M𝑀Mitalic_M doesn’t need to depend on the term of type 𝖧𝗈𝗆(t,𝗏)𝖧𝗈𝗆𝑡𝗏\mathsf{Hom}(t,\mathsf{v})sansserif_Hom ( italic_t , sansserif_v ), then we can instead use the simpler rule

Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇t:𝖳𝗆(Γ,A)A:𝖳𝗒ΓM:𝖳𝗒(Γ+A)m:𝖳𝗆(Γ,M[t])𝖩t,Mm:𝖳𝗆(Γ+A+𝖧𝗈𝗆(t[𝗉A],𝗏),M[𝗉𝖧𝗈𝗆(t[𝗉A],𝗏)])infer:subscript𝖩𝑡𝑀𝑚𝖳𝗆superscriptsuperscriptΓ𝐴𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝐴𝗏𝑀delimited-[]subscript𝗉𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝐴𝗏matrix:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇:𝑡𝖳𝗆Γsuperscript𝐴matrix:𝐴𝖳𝗒Γ:𝑀𝖳𝗒superscriptΓ𝐴matrixmissing-subexpression:𝑚𝖳𝗆Γ𝑀delimited-[]𝑡\mathsf{J}_{t,M}\;m\;\colon\mathsf{Tm}(\Gamma\triangleright^{+}A\triangleright% ^{+}\mathsf{Hom}(t[\mathsf{p}_{A}],\mathsf{v}),M[\mathsf{p}_{\mathsf{Hom}(t[% \mathsf{p}_{A}],\mathsf{v})}])\lx@proof@logical@and\begin{matrix}\Gamma\colon% \mathsf{NeutCon}\\ t\colon\mathsf{Tm}(\Gamma,A^{-})\end{matrix}\begin{matrix}A\colon\mathsf{Ty}\;% \Gamma\\ M\colon\mathsf{Ty}(\Gamma\triangleright^{+}A)\end{matrix}\begin{matrix}\\ m\colon\mathsf{Tm}(\Gamma,M[-t])\end{matrix}start_ROW start_CELL start_ARG start_ROW start_CELL roman_Γ : sansserif_NeutCon end_CELL end_ROW start_ROW start_CELL italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) end_CELL end_ROW end_ARG start_ARG start_ROW start_CELL italic_A : sansserif_Ty roman_Γ end_CELL end_ROW start_ROW start_CELL italic_M : sansserif_Ty ( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ) end_CELL end_ROW end_ARG start_ARG start_ROW start_CELL end_CELL end_ROW start_ROW start_CELL italic_m : sansserif_Tm ( roman_Γ , italic_M [ - italic_t ] ) end_CELL end_ROW end_ARG end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG sansserif_J start_POSTSUBSCRIPT italic_t , italic_M end_POSTSUBSCRIPT italic_m : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] , sansserif_v ) , italic_M [ sansserif_p start_POSTSUBSCRIPT sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] , sansserif_v ) end_POSTSUBSCRIPT ] ) end_ARG end_CELL end_ROW (3)

Note that the dependence on 𝖧𝗈𝗆(t[𝗉A],𝗏)𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝐴𝗏\mathsf{Hom}(t[\mathsf{p}_{A}],\mathsf{v})sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] , sansserif_v ) is preserved in the conclusion, even if M𝑀Mitalic_M ignores it. In Section 4 we put this rule to use in synthetic category theory constructions and proofs.

J : (t : Tm(Γ, A⁻)) → (M : Ty (Γ ▹⁺ A ▹⁺ Hom(t[pA],v)))
→ Tm(Γ, M[-t,reflₜ]) → Tm(Γ ▹⁺ A ▹⁺ Hom(t[pA],v), M)
(Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) : (γ : |Γ|) → (a : |A γ|) → (x : (A γ)\:[t γ , a]) → | M(γ, a, x) |
(Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) γ a x = M (idγ, x, ρ) (m γ) -- ρ : x ∘ A idγ id ∘ t idγ ≡ x
(Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) : (γ₀₁ : Γ\:[γ₀,γ₁]) → (a₀₁ : Aγ₁\:[A γ₀₁ a₀, a₁]) → (φ₀₁ : a₀₁ ∘ (A γ₀₁ x₀) ∘ t(γ₀₁) ≡ x₁)
→ M(γ₁, a₁, x₁)[ M(γ₀₁,a₀₁,φ₀₁) ((Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) γ₀ a₀ x₀), ((Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) γ₁ a₁ x₁) ]
(Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPT m) γ₀₁ a₀₁ ρ₀₁ = M (idγ1subscript𝛾1{}_{\gamma_{1}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT, x₁, ρ₁) (m γ₀₁) -- ρ₁ : x₁ ∘ A idγ1subscript𝛾1{}_{\gamma_{1}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT id𝗍γ1𝗍subscript𝛾1{}_{\mathsf{t}\gamma_{1}}start_FLOATSUBSCRIPT sansserif_t italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT ∘ t idγ1subscript𝛾1{}_{\gamma_{1}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT ≡ x₁
Jβ : (Jt,Mt,M{}_{\textsf{t,M}}start_FLOATSUBSCRIPT t,M end_FLOATSUBSCRIPTm)\:[-t,reflₜ] ≡ m
Figure 7: Semantics of directed path induction in the category model

3 Directed Categories with Families

The aim of the present work is not just to establish the category model as a suitable interpretation of directed type theory, but to abstract the category model to a general, abstract notion of ‘model’ of directed type theory. Specifically, we wish to present this model notion as a generalized algebraic theory, that is, as a CwF with further structure. We do so in several stages, progressively capturing more of the structure described in the previous section. In addition to making the complex and multifaceted notion of ‘directed CwF’ more digestible, this approach will also give us several intermediate notions, each of which is worthy of further study in its own right. First, we encapsulate the ‘negation’ structure.

Definition 3.1 (Polarized CwF).

A consists of a CwF 𝒞=(𝖢𝗈𝗇,𝖳𝗒,𝖳𝗆,,)𝒞𝖢𝗈𝗇𝖳𝗒𝖳𝗆\mathcal{C}=(\mathsf{Con},\mathsf{Ty},\mathsf{Tm},\triangleright,\ldots)caligraphic_C = ( sansserif_Con , sansserif_Ty , sansserif_Tm , ▷ , … ) equipped with the following operations.

  • An endofunctor (__):𝖢𝗈𝗇𝖢𝗈𝗇:superscript__𝖢𝗈𝗇𝖢𝗈𝗇(\_\!\_)^{-}\colon\mathsf{Con}\to\mathsf{Con}( _ _ ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Con → sansserif_Con such that (Γ)ΓsuperscriptsuperscriptΓΓ(\Gamma^{-})^{-}\equiv\Gamma( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ≡ roman_Γ and (σ)σsuperscriptsuperscript𝜎𝜎(\sigma^{-})^{-}\equiv\sigma( italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ≡ italic_σ for all ΓΓ\Gammaroman_Γ and σ𝜎\sigmaitalic_σ

  • A natural transformation (__):𝖳𝗒𝖳𝗒:superscript__𝖳𝗒𝖳𝗒(\_\!\_)^{-}\colon\mathsf{Ty}\to\mathsf{Ty}( _ _ ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Ty → sansserif_Ty such that (A)Asuperscriptsuperscript𝐴𝐴(A^{-})^{-}\equiv A( italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ≡ italic_A for all A𝐴Aitalic_A.

So a PCwF is just a CwF equipped with context-, substitution-, and type-negation involutions. The fact that the type-negation operation is a natural transformation just says that it is stable under substitution, i.e. A[σ]A[σ]𝐴superscriptdelimited-[]𝜎𝐴delimited-[]superscript𝜎A[\sigma]^{-}\equiv A[\sigma^{-}]italic_A [ italic_σ ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ≡ italic_A [ italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ]. Now, notably absent from this definition is the negative context extension operation superscript\triangleright^{-}▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT; by this definition, a PCwF only has the positive one. This is because the negative operation is, in fact, definable: in the category model, the following equation holds for any ΓΓ\Gammaroman_Γ and any A:𝖳𝗒Γ:𝐴𝖳𝗒ΓA\colon\mathsf{Ty}\;\Gammaitalic_A : sansserif_Ty roman_Γ:

(Γ+A)=ΓA.superscriptsuperscriptΓ𝐴superscriptsuperscriptΓsuperscript𝐴(\Gamma\triangleright^{+}A)^{-}=\Gamma^{-}\triangleright^{-}A^{-}.( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT . (4)

Here we use the fact that (Γ)=ΓsuperscriptsuperscriptΓΓ(\Gamma^{-})^{-}=\Gamma( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT = roman_Γ,222In the category model, this holds as a definitional equality, though in Definition 3.1 we only asserted it propositionally, since we’re defining a GAT. and hence A:𝖳𝗒(Γ):𝐴𝖳𝗒superscriptsuperscriptΓA\colon\mathsf{Ty}\;(\Gamma^{-})^{-}italic_A : sansserif_Ty ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, making the right-hand side well-formed. Consequently, we can turn this equation around to define negative context extension: for A:𝖳𝗒(Γ):𝐴𝖳𝗒superscriptΓA\colon\mathsf{Ty}(\Gamma^{-})italic_A : sansserif_Ty ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ), let ΓAsuperscriptΓ𝐴\Gamma\triangleright^{-}Aroman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A be (Γ+A)superscriptsuperscriptsuperscriptΓsuperscript𝐴(\Gamma^{-}\triangleright^{+}A^{-})^{-}( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT. The isomorphism characterizing superscript\triangleright^{-}▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT (Equation 1) can then be proved as a consequence of the one for +superscript\triangleright^{+}▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT.

Also absent from Definition 3.1 is any mechanism connecting the context/substitution negation endofunctor to the type-negation operation. It’s unclear if this ought to be rectified, or if their connection is just a peculiarity of the category model. Not every CwF fits the same mold of “contexts are structures, types are families of structures”, so it’s not possible to require in general that the type-negation operation is just post-composition with the context-negation functor. There are suitably abstract ways of connecting the two—for instance, we can note that the category model is democratic in the sense of [9, Defn. 3] : there is an isomorphism K𝐾Kitalic_K between contexts ΓΓ\Gammaroman_Γ and closed types; this isomorphism is compatible with both negation operations, in that K(Γ)=K(Γ)𝐾superscriptΓ𝐾superscriptΓK(\Gamma^{-})=K(\Gamma)^{-}italic_K ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) = italic_K ( roman_Γ ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT. However, we don’t need need such strong assumptions for the results of Section 4, so we omit them from the general definition of PCwFs.

Of course, the category model and the preorder model are both examples of PCwFs, where the negation is the ‘opposite’ construction. But so are the groupoid and setoid models. Indeed, the groupoid model is a sub-PCwF of the category model: a groupoid ΓΓ\Gammaroman_Γ is a category, and so it makes perfect sense to take the opposite category of ΓΓ\Gammaroman_Γ, obtaining ΓsuperscriptΓ\Gamma^{-}roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, which is also a groupoid. What makes the groupoid model a peculiar instance of a PCwF is that ΓΓΓsuperscriptΓ\Gamma\cong\Gamma^{-}roman_Γ ≅ roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT for every ΓΓ\Gammaroman_Γ, and A(γ)A(γ)𝐴𝛾superscript𝐴𝛾A(\gamma)\cong A^{-}(\gamma)italic_A ( italic_γ ) ≅ italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ( italic_γ ) for every A𝐴Aitalic_A. It is what we’ll call a symmetric PCwF. The setoid model is also a symmetric PCwF, but strictly so: there, ΓΓΓsuperscriptΓ\Gamma\equiv\Gamma^{-}roman_Γ ≡ roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT. The situation exemplified by the groupoid/category and setoid/preorder models—a symmetric sub-PCwF of another PCwF—is what we capture in our next notion.

Definition 3.2 (Neutral-Polarized CwF).

A 𝒟𝒟\mathcal{D}caligraphic_D of a PCwF 𝒞𝒞\mathcal{C}caligraphic_C consists of predicates 𝖣𝖢𝗈𝗇:𝖢𝗈𝗇𝖯𝗋𝗈𝗉:subscript𝖣𝖢𝗈𝗇𝖢𝗈𝗇𝖯𝗋𝗈𝗉\mathsf{D}_{\mathsf{Con}}\colon\mathsf{Con}\to\mathsf{Prop}sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT : sansserif_Con → sansserif_Prop and 𝖣𝖳𝗒:{Γ:𝖢𝗈𝗇}𝖳𝗒Γ𝖯𝗋𝗈𝗉:subscript𝖣𝖳𝗒conditional-setΓ𝖢𝗈𝗇𝖳𝗒Γ𝖯𝗋𝗈𝗉\mathsf{D}_{\mathsf{Ty}}\colon\{\Gamma\colon\mathsf{Con}\}\to\mathsf{Ty}\;% \Gamma\to\mathsf{Prop}sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT : { roman_Γ : sansserif_Con } → sansserif_Ty roman_Γ → sansserif_Prop such that

  • 𝖣𝖢𝗈𝗇\mathsf{D}_{\mathsf{Con}}\;\bulletsansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT ∙;

  • if 𝖣𝖢𝗈𝗇(Γ)subscript𝖣𝖢𝗈𝗇Γ\mathsf{D}_{\mathsf{Con}}(\Gamma)sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT ( roman_Γ ), then 𝖣𝖢𝗈𝗇(Γ)subscript𝖣𝖢𝗈𝗇superscriptΓ\mathsf{D}_{\mathsf{Con}}(\Gamma^{-})sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT );

  • if 𝖣𝖳𝗒(A)subscript𝖣𝖳𝗒𝐴\mathsf{D}_{\mathsf{Ty}}(A)sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT ( italic_A ), then 𝖣𝖳𝗒(A)subscript𝖣𝖳𝗒superscript𝐴\mathsf{D}_{\mathsf{Ty}}(A^{-})sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT ( italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT );

  • if A:𝖳𝗒Γ:𝐴𝖳𝗒ΓA\colon\mathsf{Ty}\;\Gammaitalic_A : sansserif_Ty roman_Γ is such that 𝖣𝖳𝗒(A)subscript𝖣𝖳𝗒𝐴\mathsf{D}_{\mathsf{Ty}}(A)sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT ( italic_A ), then 𝖣𝖳𝗒(A[σ])subscript𝖣𝖳𝗒𝐴delimited-[]𝜎\mathsf{D}_{\mathsf{Ty}}(A[\sigma])sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT ( italic_A [ italic_σ ] ) for any σ:𝖲𝗎𝖻ΔΓ:𝜎𝖲𝗎𝖻ΔΓ\sigma\colon\mathsf{Sub}\;\Delta\;\Gammaitalic_σ : sansserif_Sub roman_Δ roman_Γ; and

  • if 𝖣𝖢𝗈𝗇(Γ)subscript𝖣𝖢𝗈𝗇Γ\mathsf{D}_{\mathsf{Con}}(\Gamma)sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT ( roman_Γ ) and 𝖣𝖳𝗒(A)subscript𝖣𝖳𝗒𝐴\mathsf{D}_{\mathsf{Ty}}(A)sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT ( italic_A ), then 𝖣𝖢𝗈𝗇(ΓA)subscript𝖣𝖢𝗈𝗇Γ𝐴\mathsf{D}_{\mathsf{Con}}(\Gamma\triangleright A)sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT ( roman_Γ ▷ italic_A ).

We indicate a sub-PCwF by 𝒟=(𝖣𝖢𝗈𝗇,𝖣𝖳𝗒)𝒟𝖣𝖢𝗈𝗇𝖣𝖳𝗒\mathcal{D}=(\mathsf{DCon},\mathsf{DTy})caligraphic_D = ( sansserif_DCon , sansserif_DTy ) to indicate that 𝖣𝖢𝗈𝗇𝖣𝖢𝗈𝗇\mathsf{DCon}sansserif_DCon is the subcategory of 𝖣𝖢𝗈𝗇subscript𝖣𝖢𝗈𝗇\mathsf{D}_{\mathsf{Con}}sansserif_D start_POSTSUBSCRIPT sansserif_Con end_POSTSUBSCRIPT-contexts, and 𝖣𝖳𝗒𝖣𝖳𝗒\mathsf{DTy}sansserif_DTy is the subpresheaf of 𝖣𝖳𝗒subscript𝖣𝖳𝗒\mathsf{D}_{\mathsf{Ty}}sansserif_D start_POSTSUBSCRIPT sansserif_Ty end_POSTSUBSCRIPT-types.

A consists of a PCwF 𝒞𝒞\mathcal{C}caligraphic_C and a sub-PCwF 𝒩=(𝖭𝖾𝗎𝗍𝖢𝗈𝗇,𝖭𝖾𝗎𝗍𝖳𝗒)𝒩𝖭𝖾𝗎𝗍𝖢𝗈𝗇𝖭𝖾𝗎𝗍𝖳𝗒\mathcal{N}=(\mathsf{NeutCon},\mathsf{NeutTy})caligraphic_N = ( sansserif_NeutCon , sansserif_NeutTy ) such that

  • 𝖭𝖾𝗎𝗍𝖢𝗈𝗇𝖭𝖾𝗎𝗍𝖢𝗈𝗇\mathsf{NeutCon}sansserif_NeutCon is symmetric: every Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon comes equipped with an e:𝖲𝗎𝖻ΓΓ:𝑒𝖲𝗎𝖻ΓsuperscriptΓe\colon\mathsf{Sub}\;\Gamma\;\Gamma^{-}italic_e : sansserif_Sub roman_Γ roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT such that e:𝖲𝗎𝖻ΓΓ:superscript𝑒𝖲𝗎𝖻superscriptΓΓe^{-}\colon\mathsf{Sub}\;\Gamma^{-}\;\Gammaitalic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT : sansserif_Sub roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT roman_Γ is an inverse of e𝑒eitalic_e; moreover, this isomorphism is natural in the sense that, for Δ,Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:ΔΓ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Delta,\Gamma\colon\mathsf{NeutCon}roman_Δ , roman_Γ : sansserif_NeutCon and σ:𝖲𝗎𝖻ΔΓ:𝜎𝖲𝗎𝖻ΔΓ\sigma\colon\mathsf{Sub}\;\Delta\;\Gammaitalic_σ : sansserif_Sub roman_Δ roman_Γ, we have σeΓσeΔ𝜎subscriptsuperscript𝑒Γsuperscript𝜎subscript𝑒Δ\sigma\equiv e^{-}_{\Gamma}\circ\sigma^{-}\circ e_{\Delta}italic_σ ≡ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT start_POSTSUBSCRIPT roman_Γ end_POSTSUBSCRIPT ∘ italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ∘ italic_e start_POSTSUBSCRIPT roman_Δ end_POSTSUBSCRIPT;

  • if either Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon and A:𝖳𝗒Γ:𝐴𝖳𝗒ΓA\colon\mathsf{Ty}\;\Gammaitalic_A : sansserif_Ty roman_Γ or Γ:𝖢𝗈𝗇:Γ𝖢𝗈𝗇\Gamma\colon\mathsf{Con}roman_Γ : sansserif_Con and A:𝖭𝖾𝗎𝗍𝖳𝗒Γ:𝐴𝖭𝖾𝗎𝗍𝖳𝗒ΓA\colon\mathsf{NeutTy}\;\Gammaitalic_A : sansserif_NeutTy roman_Γ, there are coercion operations :𝖳𝗆(Γ,A)𝖳𝗆(Γ,A)-\colon\mathsf{Tm}(\Gamma,A)\to\mathsf{Tm}(\Gamma,A^{-})- : sansserif_Tm ( roman_Γ , italic_A ) → sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and :𝖳𝗆(Γ,A)𝖳𝗆(Γ,A)-\colon\mathsf{Tm}(\Gamma,A^{-})\to\mathsf{Tm}(\Gamma,A)- : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → sansserif_Tm ( roman_Γ , italic_A ) such that (t)t𝑡𝑡-(-t)\equiv t- ( - italic_t ) ≡ italic_t for all t𝑡titalic_t;

  • for every Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon and A:𝖳𝗒Γ:𝐴𝖳𝗒superscriptΓA\colon\mathsf{Ty}\Gamma^{-}italic_A : sansserif_Ty roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, there is an isomorphism

    (eA):Γ+A[e]ΓA:𝑒𝐴superscriptΓ𝐴delimited-[]𝑒superscriptΓ𝐴(e\triangleright A)\colon\Gamma\triangleright^{+}A[e]\cong\Gamma\triangleright% ^{-}A( italic_e ▷ italic_A ) : roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A [ italic_e ] ≅ roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A

    such that

    • 𝗉,A(eA)𝗉A[e]subscript𝗉𝐴𝑒𝐴subscript𝗉𝐴delimited-[]𝑒\mathsf{p}_{-,A}\circ(e\triangleright A)\equiv\mathsf{p}_{A[e]}sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT ∘ ( italic_e ▷ italic_A ) ≡ sansserif_p start_POSTSUBSCRIPT italic_A [ italic_e ] end_POSTSUBSCRIPT

    • for every Δ,Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:ΔΓ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Delta,\Gamma\colon\mathsf{NeutCon}roman_Δ , roman_Γ : sansserif_NeutCon, σ:𝖲𝗎𝖻ΔΓ:𝜎𝖲𝗎𝖻ΔΓ\sigma\colon\mathsf{Sub}\;\Delta\;\Gammaitalic_σ : sansserif_Sub roman_Δ roman_Γ, A:𝖳𝗒(Γ):𝐴𝖳𝗒superscriptΓA\colon\mathsf{Ty}(\Gamma^{-})italic_A : sansserif_Ty ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and every a:𝖳𝗆(Δ,A[eσ]):𝑎𝖳𝗆Δ𝐴delimited-[]𝑒𝜎a\colon\mathsf{Tm}(\Delta,A[e\circ\sigma])italic_a : sansserif_Tm ( roman_Δ , italic_A [ italic_e ∘ italic_σ ] ),333 Note that eΓσσeΔsubscript𝑒Γ𝜎superscript𝜎subscript𝑒Δe_{\Gamma}\circ\sigma\equiv\sigma^{-}\circ e_{\Delta}italic_e start_POSTSUBSCRIPT roman_Γ end_POSTSUBSCRIPT ∘ italic_σ ≡ italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ∘ italic_e start_POSTSUBSCRIPT roman_Δ end_POSTSUBSCRIPT, so a:𝖳𝗆(Δ,A[σeΔ]):𝑎𝖳𝗆Δ𝐴delimited-[]superscript𝜎subscript𝑒Δa\colon\mathsf{Tm}(\Delta,A[\sigma^{-}\circ e_{\Delta}])italic_a : sansserif_Tm ( roman_Δ , italic_A [ italic_σ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ∘ italic_e start_POSTSUBSCRIPT roman_Δ end_POSTSUBSCRIPT ] ), hence why the right-hand side of the following equation is well-formed. The need for eΔsubscript𝑒Δe_{\Delta}italic_e start_POSTSUBSCRIPT roman_Δ end_POSTSUBSCRIPT and the need to negate a[e]𝑎delimited-[]superscript𝑒a[e^{-}]italic_a [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] is why ΔΔ\Deltaroman_Δ must be neutral here.

      (eA)σ,+aσ,a[e].(e\triangleright A)\circ\left\langle\sigma,_{+}a\right\rangle\equiv\left% \langle\sigma,_{-}-a[e^{-}]\right\rangle.( italic_e ▷ italic_A ) ∘ ⟨ italic_σ , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT italic_a ⟩ ≡ ⟨ italic_σ , start_POSTSUBSCRIPT - end_POSTSUBSCRIPT - italic_a [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] ⟩ .

In the third bullet point, note that A𝐴Aitalic_A is not assumed to be in 𝖭𝖾𝗎𝗍𝖳𝗒Γ𝖭𝖾𝗎𝗍𝖳𝗒superscriptΓ\mathsf{NeutTy}\;\Gamma^{-}sansserif_NeutTy roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT; if it were, then ΓA:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:superscriptΓ𝐴𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma^{-}\triangleright A\colon\mathsf{NeutCon}roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ▷ italic_A : sansserif_NeutCon and then we could use the isomorphism e𝑒eitalic_e for ΓAsuperscriptΓ𝐴\Gamma^{-}\triangleright Aroman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ▷ italic_A and the coercion operators to construct this. With A𝐴Aitalic_A being an arbitrary type, this is a genuine addition to the theory. The requirements of this point are somewhat ad-hoc: these were just the principles needed in Section 4 to be able to operate effectively with neutral contexts (and all are provable in the category model). Perhaps a more mature version of this theory will place more requirements on NPCwFs, but this is all the neutral-polar structure needed here.

Let us also note that a common feature in directed type theories (e.g. [24, 23]) is to include core types, i.e. an operation of the form (__)0:𝖳𝗒Γ𝖭𝖾𝗎𝗍𝖳𝗒Γ:superscript__0𝖳𝗒Γ𝖭𝖾𝗎𝗍𝖳𝗒Γ(\_\!\_)^{0}\colon\mathsf{Ty}\;\Gamma\to\mathsf{NeutTy}\;\Gamma( _ _ ) start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT : sansserif_Ty roman_Γ → sansserif_NeutTy roman_Γ. In the category model, this is interpreted as applying the core groupoid construction to each category A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ), producing a family of groupoids indexed over ΓΓ\Gammaroman_Γ. We might as well have a deep version too, operating on contexts (__)0:𝖢𝗈𝗇𝖭𝖾𝗎𝗍𝖢𝗈𝗇:superscript__0𝖢𝗈𝗇𝖭𝖾𝗎𝗍𝖢𝗈𝗇(\_\!\_)^{0}\colon\mathsf{Con}\to\mathsf{NeutCon}( _ _ ) start_POSTSUPERSCRIPT 0 end_POSTSUPERSCRIPT : sansserif_Con → sansserif_NeutCon. We won’t need these features for the present work (and therefore don’t endeavor to axiomatize them), but, once again, it’s quite possible that it would be fruitful to add them in the future.

Recall that CwFs are not a single notion of model for a single type theory, but rather that CwFs encode the basic structural operations of type theory, upon which innumerable different type theories can be specified by defining the desired term- and type-formers. We have arrived at the same point in our development of a semantics for directed type theory: the notion of NPCwF consists solely of structural components, but nothing that actually allows for the construction of interesting types and terms. So let’s rectify this by giving the directed analogue of the standard core of undirected type theory: identity types, dependent types, and universes.

We start with the directed analogue of identity types, hom-types.

Definition 3.3 (Directed CwF).

A is a NPCwF equipped with the following structure:

  • a type former

    𝖧𝗈𝗆:{Γ:𝖢𝗈𝗇}{A:𝖳𝗒Γ}𝖳𝗆(Γ,A)𝖳𝗆(Γ,A)𝖳𝗒Γ:𝖧𝗈𝗆conditional-setΓ𝖢𝗈𝗇conditional-set𝐴𝖳𝗒Γ𝖳𝗆Γsuperscript𝐴𝖳𝗆Γ𝐴𝖳𝗒Γ\mathsf{Hom}\colon\{\Gamma\colon\mathsf{Con}\}\{A\colon\mathsf{Ty}\;\Gamma\}% \to\mathsf{Tm}(\Gamma,A^{-})\to\mathsf{Tm}(\Gamma,A)\to\mathsf{Ty}\;\Gammasansserif_Hom : { roman_Γ : sansserif_Con } { italic_A : sansserif_Ty roman_Γ } → sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → sansserif_Tm ( roman_Γ , italic_A ) → sansserif_Ty roman_Γ

    which is stable under substitution:

    𝖧𝗈𝗆(t,t)[σ]𝖧𝗈𝗆(t[σ],t[σ]);𝖧𝗈𝗆𝑡superscript𝑡delimited-[]𝜎𝖧𝗈𝗆𝑡delimited-[]𝜎superscript𝑡delimited-[]𝜎\mathsf{Hom}(t,t^{\prime})[\sigma]\equiv\mathsf{Hom}(t[\sigma],t^{\prime}[% \sigma]);sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) [ italic_σ ] ≡ sansserif_Hom ( italic_t [ italic_σ ] , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT [ italic_σ ] ) ;
  • in any Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon, a term 𝗋𝖾𝖿𝗅t:𝖧𝗈𝗆(t,t):subscript𝗋𝖾𝖿𝗅𝑡𝖧𝗈𝗆𝑡𝑡\mathsf{refl}_{t}\colon\mathsf{Hom}(t,-t)sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT : sansserif_Hom ( italic_t , - italic_t ) for each term t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γsuperscript𝐴t\colon\mathsf{Tm}(\Gamma,A^{-})italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ), also stable under substitution by σ:𝖲𝗎𝖻ΔΓ:𝜎𝖲𝗎𝖻ΔΓ\sigma\colon\mathsf{Sub}\;\Delta\;\Gammaitalic_σ : sansserif_Sub roman_Δ roman_Γ for Δ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Δ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Delta\colon\mathsf{NeutCon}roman_Δ : sansserif_NeutCon; and

  • a term former 𝖩𝖩\mathsf{J}sansserif_J as given in Equation 2, also appropriately stable under substitution.

For any Γ:𝖢𝗈𝗇:Γ𝖢𝗈𝗇\Gamma\colon\mathsf{Con}roman_Γ : sansserif_Con and A:𝖭𝖾𝗎𝗍𝖳𝗒Γ:𝐴𝖭𝖾𝗎𝗍𝖳𝗒ΓA\colon\mathsf{NeutTy}\;\Gammaitalic_A : sansserif_NeutTy roman_Γ, write 𝖨𝖽(t,t)𝖨𝖽𝑡superscript𝑡\mathsf{Id}(t,t^{\prime})sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) for 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ).

The naming of 𝖧𝗈𝗆𝖧𝗈𝗆\mathsf{Hom}sansserif_Hom versus 𝖨𝖽𝖨𝖽\mathsf{Id}sansserif_Id is suggestive: the types in a DCwF are supposed to function like synthetic categories (with 𝖧𝗈𝗆𝖧𝗈𝗆\mathsf{Hom}sansserif_Hom encoding their morphisms), and the neutral types are synthetic groupoids, whose homs are symmetric like an identity type. This point is best illustrated by the following claim.

Proposition 3.4.

Every DCwF has an operation

𝗌𝗒𝗆𝗆𝗌𝗒𝗆𝗆\displaystyle\mathsf{symm}sansserif_symm :{Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇}{A:𝖭𝖾𝗎𝗍𝖳𝗒}{t:𝖳𝗆(Γ,A)}{t:𝖳𝗆(Γ,A)}:absentconditional-setΓ𝖭𝖾𝗎𝗍𝖢𝗈𝗇conditional-set𝐴𝖭𝖾𝗎𝗍𝖳𝗒conditional-set𝑡𝖳𝗆Γsuperscript𝐴conditional-setsuperscript𝑡𝖳𝗆Γ𝐴\displaystyle\colon\{\Gamma\colon\mathsf{NeutCon}\}\{A\colon\mathsf{NeutTy}\}% \{t\colon\mathsf{Tm}(\Gamma,A^{-})\}\{t^{\prime}\colon\mathsf{Tm}(\Gamma,A)\}: { roman_Γ : sansserif_NeutCon } { italic_A : sansserif_NeutTy } { italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) } { italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : sansserif_Tm ( roman_Γ , italic_A ) }
𝖳𝗆(Γ,𝖨𝖽(t,t))𝖳𝗆(Γ,𝖨𝖽(t,t))absent𝖳𝗆Γ𝖨𝖽𝑡superscript𝑡𝖳𝗆Γ𝖨𝖽superscript𝑡𝑡\displaystyle\to\mathsf{Tm}(\Gamma,\mathsf{Id}(t,t^{\prime}))\to\mathsf{Tm}(% \Gamma,\mathsf{Id}(-t^{\prime},-t))→ sansserif_Tm ( roman_Γ , sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) ) → sansserif_Tm ( roman_Γ , sansserif_Id ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , - italic_t ) )
Proof 3.5.

By the following construction in the DCwF syntax:

symm : {Γ : NeutCon}{A : NeutTy Γ}{t : Tm(Γ, A⁻)}{t : Tm(Γ, A)}
→ Tm(Γ, Id(t, t’)) → Tm(Γ, Id(-t’, -t))
symm p = (Jt,S reflₜ)[ t’, p ]
where
S : Ty (Γ ▹ A)
S = Id(-v , -t)

This proof relies on the neutrality of A𝐴Aitalic_A in a very subtle, but critical way: in the definition of the type family 𝖲𝖲\mathsf{S}sansserif_S, the variable term 𝗏:𝖳𝗆(ΓA,A[𝗉A]):𝗏𝖳𝗆Γ𝐴𝐴delimited-[]subscript𝗉𝐴\mathsf{v}\colon\mathsf{Tm}(\Gamma\triangleright A,A[\mathsf{p}_{A}])sansserif_v : sansserif_Tm ( roman_Γ ▷ italic_A , italic_A [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] ) is negated, so that it is of type A[𝗉A]𝐴superscriptdelimited-[]subscript𝗉𝐴A[\mathsf{p}_{A}]^{-}italic_A [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and therefore able to stand as the first argument to 𝖨𝖽𝖨𝖽\mathsf{Id}sansserif_Id. But this is only possible if ΓA:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝐴𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\triangleright A\colon\mathsf{NeutCon}roman_Γ ▷ italic_A : sansserif_NeutCon because term-negation is only defined in neutral contexts. This reasoning will prove important for the style of reasoning we employ in Section 4, so we isolate it as a principle.

Principle (Var Neg).

For Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon, the variable term

𝗏:𝖳𝗆(Γ+A,A[𝗉A]):𝗏𝖳𝗆superscriptΓ𝐴𝐴delimited-[]subscript𝗉𝐴\mathsf{v}\colon\mathsf{Tm}(\Gamma\triangleright^{+}A,A[\mathsf{p}_{A}])sansserif_v : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A , italic_A [ sansserif_p start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ] )

can only be negated (i.e. forming 𝗏𝗏-\mathsf{v}- sansserif_v) if A:𝖭𝖾𝗎𝗍𝖳𝗒Γ:𝐴𝖭𝖾𝗎𝗍𝖳𝗒ΓA\colon\mathsf{NeutTy}\;\Gammaitalic_A : sansserif_NeutTy roman_Γ (and likewise for superscript\triangleright^{-}▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT).

In Section 5, we’ll argue that there’s no way to construct this symmetry term (for arbitrary DCwFs444with some nontrivial amount of structure.) if A𝐴Aitalic_A is not assumed to be neutral.

Before proceeding, it’s worth explaining what is “the DCwF syntax” mentioned in the proof above. This is where it becomes relevant that DCwFs are presented as generalized algebraic theories: as mentioned in the introduction, [16] proves that any GAT has an initial syntax model. Therefore, any construction done in the syntax model (such as the construction of 𝗌𝗒𝗆𝗆𝗌𝗒𝗆𝗆\mathsf{symm}sansserif_symm above) can be interpreted into any DCwF. This is why a syntactic construction was adequate to prove a claim about all DCwFs in the foregoing proof. In the next section, our proofs will all be syntactic, and thereby apply to arbitrary DCwFs.

Let us make an important observation about the syntax of DCwFs. An important criterion for our theory is that hom-types can be iterated, that is, our syntax allows for the formation of homs between homs, and homs between homs between homs, and so on. The iteration of identity types is, after all, how homotopy type theory is able to serve as a synthetic language for higher groupoids; and since hom types are iterable in the DCwF syntax, it is a synthetic language for higher categories. However, a given model may be truncated, in that the higher structure may become trivial after a certain point. This is the case with the groupoid model: while its types do not all obey the uniqueness of identity proofs (UIP) principle and are therefore not mere h-sets, they do obey “UIP, one level up”: in the groupoid model, identity proofs of identity proofs are unique.

The same happens in the category model: in general, there may be terms p:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)):𝑝𝖳𝗆Γ𝖧𝗈𝗆superscript𝑡superscript𝑡p\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,t^{\prime})^{-})italic_p : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and q:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)):𝑞𝖳𝗆Γ𝖧𝗈𝗆𝑡superscript𝑡q\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,t^{\prime}))italic_q : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) ) but no term of type 𝖧𝗈𝗆(p,q)𝖧𝗈𝗆𝑝𝑞\mathsf{Hom}(p,q)sansserif_Hom ( italic_p , italic_q ). But if there is such a term, there is exactly one. So the (1-)category model, unsurprisingly, can only model 1-categories. But there’s another sense in which the category model structure trivializes “one level up”: all the hom-types are interpreted as discrete categories, which are necessarily groupoids. So, while 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) is still a synthetic category, it’s actually a synthetic setoid. This is appropriate for doing synthetic 1-category theory: it makes sense that the hom-types are trivial as categories: to do 1-category theoretic arguments, we wish to speak of identities between parallel morphisms, not further category-theoretic structure.

We encapsulate DCwFs like this into a definition for further study.

Definition 3.6.

A is a DCwF such that

  • 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) is a neutral type for any terms t,t𝑡superscript𝑡t,t^{\prime}italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT; and

  • UIP holds for identities of hom-terms:

    𝖴𝖨𝖯1:(α:𝖳𝗆(Γ,𝖨𝖽(p,q)))(β:𝖳𝗆(Γ,𝖨𝖽(p,q)))𝖳𝗆(Γ,𝖨𝖽(α,β))\mathsf{UIP}^{1}\colon(\alpha\colon\mathsf{Tm}(\Gamma,\mathsf{Id}(p,q)^{-}))% \to(\beta\colon\mathsf{Tm}(\Gamma,\mathsf{Id}(p,q)))\to\mathsf{Tm}(\Gamma,% \mathsf{Id}(\alpha,\beta))sansserif_UIP start_POSTSUPERSCRIPT 1 end_POSTSUPERSCRIPT : ( italic_α : sansserif_Tm ( roman_Γ , sansserif_Id ( italic_p , italic_q ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) ) → ( italic_β : sansserif_Tm ( roman_Γ , sansserif_Id ( italic_p , italic_q ) ) ) → sansserif_Tm ( roman_Γ , sansserif_Id ( italic_α , italic_β ) )

The numbering follows the well-known indexing of (n,m)𝑛𝑚(n,m)( italic_n , italic_m )-categories (see e.g. [6, Defn. 8]) to refer to \infty-categories where all parallel k𝑘kitalic_k-morphisms are equal when k>n𝑘𝑛k>nitalic_k > italic_n and all k𝑘kitalic_k-morphisms are invertible for k>m𝑘𝑚k>mitalic_k > italic_m. We could define (n,m)𝑛𝑚(n,m)( italic_n , italic_m )-truncated DCwFs for arbitrary n𝑛nitalic_n and m𝑚mitalic_m (for instance, the preorder model would be (0,1)01(0,1)( 0 , 1 )-truncated, the groupoid model (1,0)10(1,0)( 1 , 0 )-truncated, etc.), but that would take us too far afield. For the present work, we will work with (1,1)11(1,1)( 1 , 1 )-truncated DCwFs, and develop the theory of synthetic 1-category theory (i.e. synthetic (1,1)11(1,1)( 1 , 1 )-category theory) in that language. The practical consequence of working in the syntax of (1,1)11(1,1)( 1 , 1 )-truncated DCwFs is that we only have one “layer” of homs, and the type 𝖧𝗈𝗆(t,t)𝖧𝗈𝗆𝑡superscript𝑡\mathsf{Hom}(t,t^{\prime})sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) itself is neutral, i.e. its homs are symmetric identity types.

To conclude this section, we state the ΠΠ\Piroman_Π-type former in PCwFs. This is just the appropriately-polarized analogue of [14, Defn. 3.15], and is approximately the same rule for ΠΠ\Piroman_Π-types in [20].

Definition 3.7.

A PCwF supports if it comes equipped with a type former

Π:(A:𝖳𝗒Γ)𝖳𝗒(ΓA)𝖳𝗒Γ\Pi\colon(A\colon\mathsf{Ty}\;\Gamma^{-})\to\mathsf{Ty}(\Gamma\triangleright^{% -}A)\to\mathsf{Ty}\;\Gammaroman_Π : ( italic_A : sansserif_Ty roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → sansserif_Ty ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A ) → sansserif_Ty roman_Γ

which is stable under substitution, along with a natural isomorphism

lam:𝖳𝗆(ΓA,B)𝖳𝗆(Γ,Π(A,B)):app.:lam𝖳𝗆superscriptΓ𝐴𝐵𝖳𝗆ΓΠ𝐴𝐵:app{{{\sloppy\text{\leavevmode\lstinline{{\lst@@@set@language\lst@@@set@numbers% \lst@@@set@frame\lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{% \@listingGroup{ltx_lst_identifier}{lam}}}}}}}\colon\mathsf{Tm}(\Gamma% \triangleright^{-}A,B)\cong\mathsf{Tm}(\Gamma,\Pi(A,B))\colon{\sloppy\text{% \leavevmode\lstinline{{\lst@@@set@language\lst@@@set@numbers\lst@@@set@frame% \lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{\@listingGroup{% ltx_lst_identifier}{app}}}}}}}.lam : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A , italic_B ) ≅ sansserif_Tm ( roman_Γ , roman_Π ( italic_A , italic_B ) ) : app .

The β𝛽\betaitalic_β-law is that applam𝗂𝖽applam𝗂𝖽{{{\sloppy\text{\leavevmode\lstinline{{\lst@@@set@language\lst@@@set@numbers% \lst@@@set@frame\lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{% \@listingGroup{ltx_lst_identifier}{app}}}}}}}\circ{\sloppy\text{\leavevmode% \lstinline{{\lst@@@set@language\lst@@@set@numbers\lst@@@set@frame% \lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{\@listingGroup{% ltx_lst_identifier}{lam}}}}}}}\equiv\mathsf{id}app ∘ lam ≡ sansserif_id and the η𝜂\etaitalic_η-law the other way around. The differences between polarized ΠΠ\Piroman_Π-types and the familiar ΠΠ\Piroman_Π-types of undirected type theory are pretty minimal when operating in neutral contexts: for instance, when instantiating to non-dependent functions AB𝐴𝐵A\to Bitalic_A → italic_B, the application operator defined by f$t=(𝖺𝗉𝗉f)[𝗂𝖽,t]f\;\$\;t=(\mathsf{app}\;f)[\mathsf{id},_{-}t]italic_f $ italic_t = ( sansserif_app italic_f ) [ sansserif_id , start_POSTSUBSCRIPT - end_POSTSUBSCRIPT italic_t ] has type

__$__:𝖳𝗆(Γ,AB)𝖳𝗆(Γ,A)𝖳𝗆(Γ,B).:__currency-dollar__𝖳𝗆Γ𝐴𝐵𝖳𝗆superscriptΓsuperscript𝐴𝖳𝗆Γ𝐵\_\!\_\$\_\!\_\colon\mathsf{Tm}(\Gamma,A\to B)\to\mathsf{Tm}(\Gamma^{-},A^{-})% \to\mathsf{Tm}(\Gamma,B)._ _ $ _ _ : sansserif_Tm ( roman_Γ , italic_A → italic_B ) → sansserif_Tm ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → sansserif_Tm ( roman_Γ , italic_B ) .

If Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇:Γ𝖭𝖾𝗎𝗍𝖢𝗈𝗇\Gamma\colon\mathsf{NeutCon}roman_Γ : sansserif_NeutCon, then we can take terms from 𝖳𝗆(Γ,A)𝖳𝗆superscriptΓ𝐴\mathsf{Tm}(\Gamma^{-},A)sansserif_Tm ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A ), 𝖳𝗆(Γ,A[e])𝖳𝗆Γ𝐴delimited-[]𝑒\mathsf{Tm}(\Gamma,A[e])sansserif_Tm ( roman_Γ , italic_A [ italic_e ] ) and 𝖳𝗆(Γ,A[e])𝖳𝗆Γ𝐴superscriptdelimited-[]𝑒\mathsf{Tm}(\Gamma,A[e]^{-})sansserif_Tm ( roman_Γ , italic_A [ italic_e ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and use the negation operator and the esuperscript𝑒e^{-}italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT substitution to get into 𝖳𝗆(Γ,A)𝖳𝗆superscriptΓsuperscript𝐴\mathsf{Tm}(\Gamma^{-},A^{-})sansserif_Tm ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) for the purposes of applying functions. In the next section, we push this bureaucracy into the background and proceed informally.

4 Synthetic Category Theory

In this section, we work in an arbitrary (1,1)11(1,1)( 1 , 1 )-truncated DCwF with polarized ΠΠ\Piroman_Π-types by only working in the syntax. In the main body of the text, we’ll adopt an informal type theoretic style (inspired by [28]). We assume that we’re working in some neutral context ΓΓ\Gammaroman_Γ, though we don’t explicitly reference ΓΓ\Gammaroman_Γ. We’ll write t:A:𝑡𝐴t\colon Aitalic_t : italic_A to indicate t:𝖳𝗆(Γ,A):𝑡𝖳𝗆Γ𝐴t\colon\mathsf{Tm}(\Gamma,A)italic_t : sansserif_Tm ( roman_Γ , italic_A ). In what follows, we’ll use the letters p,q,r,s,t,u,v,w,f,g𝑝𝑞𝑟𝑠𝑡𝑢𝑣𝑤𝑓𝑔p,q,r,s,t,u,v,w,f,gitalic_p , italic_q , italic_r , italic_s , italic_t , italic_u , italic_v , italic_w , italic_f , italic_g to name terms (of various types) in ΓΓ\Gammaroman_Γ, whereas the letters x,y,z𝑥𝑦𝑧x,y,zitalic_x , italic_y , italic_z will be the names of variables obtained by extending ΓΓ\Gammaroman_Γ. We’ll have to be careful to abide by the variable negation rule:

Principle (Var Neg).

An expression e𝑒eitalic_e can only be negated if all the variables occurring in it are of neutral types.

We suppress the distinction between ΓΓ\Gammaroman_Γ and ΓsuperscriptΓ\Gamma^{-}roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, since we can substitute back and forth with e𝑒eitalic_e behind the scenes, as needed. Negative context extension will just behave like positive extension by a negative type: recall that

𝗏,A:𝖳𝗆((ΓA),A[𝗉,A]):subscript𝗏𝐴𝖳𝗆superscriptsuperscriptΓ𝐴𝐴superscriptdelimited-[]superscriptsubscript𝗉𝐴\mathsf{v}_{-,A}\colon\mathsf{Tm}((\Gamma\triangleright^{-}A)^{-},A[\mathsf{p}% _{-,A}^{-}]^{-})sansserif_v start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT : sansserif_Tm ( ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A [ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT )

i.e.

𝗏,A:𝖳𝗆(Γ+A,A[𝗉A]):subscript𝗏𝐴𝖳𝗆superscriptsuperscriptΓsuperscript𝐴𝐴superscriptdelimited-[]subscript𝗉superscript𝐴\mathsf{v}_{-,A}\colon\mathsf{Tm}(\Gamma^{-}\triangleright^{+}A^{-},A[\mathsf{% p}_{A^{-}}]^{-})sansserif_v start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT : sansserif_Tm ( roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT , italic_A [ sansserif_p start_POSTSUBSCRIPT italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ] start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT )

so, if we’re suppressing the distinction between ΓΓ\Gammaroman_Γ and ΓsuperscriptΓ\Gamma^{-}roman_Γ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, then this is just a variable x𝑥xitalic_x of Asuperscript𝐴A^{-}italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT. Accordingly, we’ll apply functions like this:

f:(x:A)B(x)t:Af(t):B(t)infer:𝑓𝑡𝐵𝑡:𝑓subscriptproduct:𝑥superscript𝐴𝐵𝑥:𝑡superscript𝐴f(t)\colon B(t)\lx@proof@logical@and f\colon\prod_{(x\colon A^{-})}B(x)t\colon A% ^{-}start_ROW start_CELL italic_f : ∏ start_POSTSUBSCRIPT ( italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) end_POSTSUBSCRIPT italic_B ( italic_x ) italic_t : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG italic_f ( italic_t ) : italic_B ( italic_t ) end_ARG end_CELL end_ROW

and form them like this:

x:Ae:B(x)(λ(x:A)e):x:AB(x).(\lambda(x\colon A^{-})\to e)\colon\prod_{x\colon A^{-}}B(x).x\colon A^{-}% \vdash e\colon B(x)start_ROW start_CELL italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ⊢ italic_e : italic_B ( italic_x ) end_CELL end_ROW start_ROW start_CELL overitalic_‾ start_ARG ( italic_λ ( italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → italic_e ) : ∏ start_POSTSUBSCRIPT italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT end_POSTSUBSCRIPT italic_B ( italic_x ) . end_ARG end_CELL end_ROW

Finally, here’s our principle of directed path induction:

Principle (Directed Path Induction).

For every t:A:𝑡superscript𝐴t\colon A^{-}italic_t : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, if M(x,y)𝑀𝑥𝑦M(x,y)italic_M ( italic_x , italic_y ) is a type family depending on x:A:𝑥𝐴x\colon Aitalic_x : italic_A and y:𝖧𝗈𝗆(t,x):𝑦𝖧𝗈𝗆𝑡𝑥y\colon\mathsf{Hom}(t,x)italic_y : sansserif_Hom ( italic_t , italic_x ), then, for each

m:M(t,𝗋𝖾𝖿𝗅t),:𝑚𝑀𝑡subscript𝗋𝖾𝖿𝗅𝑡m\colon M(-t,\mathsf{refl}_{t}),italic_m : italic_M ( - italic_t , sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) ,

we get an

𝗂𝗇𝖽M(m,x,y):M(x,y):subscript𝗂𝗇𝖽𝑀𝑚𝑥𝑦𝑀𝑥𝑦\mathsf{ind}_{M}(m,x,y)\colon M(x,y)sansserif_ind start_POSTSUBSCRIPT italic_M end_POSTSUBSCRIPT ( italic_m , italic_x , italic_y ) : italic_M ( italic_x , italic_y )

for all x,y𝑥𝑦x,yitalic_x , italic_y.

So, for instance, the construction of symmetry above (the proof of Proposition 3.4) would be expressed informally as follows: given a neutral type A𝐴Aitalic_A and a term t:A:𝑡superscript𝐴t\colon A^{-}italic_t : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, define a type family over x:A,y:Id(t,x):𝑥𝐴𝑦:𝐼𝑑𝑡𝑥x\colon A,y\colon Id(t,x)italic_x : italic_A , italic_y : italic_I italic_d ( italic_t , italic_x ) by

S(x,y)=𝖨𝖽(x,t)𝑆𝑥𝑦𝖨𝖽𝑥𝑡S(x,y)=\mathsf{Id}(-x,-t)italic_S ( italic_x , italic_y ) = sansserif_Id ( - italic_x , - italic_t )

We have not violated ( (Var Neg).) because x:A:𝑥𝐴x\colon Aitalic_x : italic_A and A𝐴Aitalic_A is neutral. We have a term of type S(t,𝗋𝖾𝖿𝗅t)𝑆𝑡subscript𝗋𝖾𝖿𝗅𝑡S(-t,\mathsf{refl}_{t})italic_S ( - italic_t , sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ), i.e. 𝖨𝖽(t,t)𝖨𝖽𝑡𝑡\mathsf{Id}(t,-t)sansserif_Id ( italic_t , - italic_t ), namely 𝗋𝖾𝖿𝗅tsubscript𝗋𝖾𝖿𝗅𝑡\mathsf{refl}_{t}sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT. So therefore we get S(x,y)𝑆𝑥𝑦S(x,y)italic_S ( italic_x , italic_y ) for arbitrary x,y𝑥𝑦x,yitalic_x , italic_y. If we have a particular t:A:superscript𝑡𝐴t^{\prime}\colon Aitalic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_A and p:𝖨𝖽(t,t):𝑝𝖨𝖽𝑡superscript𝑡p\colon\mathsf{Id}(t,t^{\prime})italic_p : sansserif_Id ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ), we can put

𝗌𝗒𝗆𝗆p=𝗂𝗇𝖽S(𝗋𝖾𝖿𝗅t,t,p).𝗌𝗒𝗆𝗆𝑝subscript𝗂𝗇𝖽𝑆subscript𝗋𝖾𝖿𝗅𝑡superscript𝑡𝑝\mathsf{symm}\;p=\mathsf{ind}_{S}(\mathsf{refl}_{t},t^{\prime},p).sansserif_symm italic_p = sansserif_ind start_POSTSUBSCRIPT italic_S end_POSTSUBSCRIPT ( sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , italic_p ) .

Again, we emphasize that it is ( (Var Neg).) which prevents this argument from working for non-neutral types, as desired. Below, we are more casual with our application of directed path induction (e.g. not defining the type family explicitly) in cases where ( (Var Neg).) is not a concern.

With that, we can proceed to the informal constructions. Along the way, the explicit constructions in the DCwF syntax are carried out in the accompanying figures.

4.1 Composition of Homs

Formal development: Fig. 8

As mentioned, a type A𝐴Aitalic_A in directed type theory is supposed to be a synthetic category. The terms t:A:𝑡𝐴t:Aitalic_t : italic_A represent objects, and the terms p:𝖧𝗈𝗆(t,t):𝑝𝖧𝗈𝗆𝑡superscript𝑡p\colon\mathsf{Hom}(t,t^{\prime})italic_p : sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) represent morphisms. For this to truly be category theory, however, we must be able to compose morphisms. We’ll write composition in diagrammatic order: given t,u:A:𝑡𝑢superscript𝐴t,u\colon A^{-}italic_t , italic_u : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and v:A:superscript𝑣𝐴v^{\prime}\colon Aitalic_v start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_A, we should be able to compose p:𝖧𝗈𝗆(t,u):𝑝𝖧𝗈𝗆𝑡𝑢p\colon\mathsf{Hom}(t,-u)italic_p : sansserif_Hom ( italic_t , - italic_u ) with q:𝖧𝗈𝗆(u,v):𝑞𝖧𝗈𝗆𝑢superscript𝑣q\colon\mathsf{Hom}(u,v^{\prime})italic_q : sansserif_Hom ( italic_u , italic_v start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) to get pq:𝖧𝗈𝗆(t,v):𝑝𝑞𝖧𝗈𝗆𝑡superscript𝑣p\cdot q\colon\mathsf{Hom}(t,v^{\prime})italic_p ⋅ italic_q : sansserif_Hom ( italic_t , italic_v start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ). We do this by directed path induction on q𝑞qitalic_q, by putting

p𝗋𝖾𝖿𝗅u=p.𝑝subscript𝗋𝖾𝖿𝗅𝑢𝑝p\cdot\mathsf{refl}_{u}=p.italic_p ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT = italic_p .

The 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅\mathsf{refl}sansserif_refl terms serve as the identity morphisms of the category: by the above, we know that p𝗋𝖾𝖿𝗅up𝑝subscript𝗋𝖾𝖿𝗅𝑢𝑝p\cdot\mathsf{refl}_{u}\equiv pitalic_p ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ≡ italic_p, and thus 𝗋𝖾𝖿𝗅p:𝖨𝖽(p𝗋𝖾𝖿𝗅u,p):subscript𝗋𝖾𝖿𝗅𝑝𝖨𝖽𝑝subscript𝗋𝖾𝖿𝗅𝑢𝑝\mathsf{refl}_{p}\colon\mathsf{Id}(p\cdot\mathsf{refl}_{u},p)sansserif_refl start_POSTSUBSCRIPT italic_p end_POSTSUBSCRIPT : sansserif_Id ( italic_p ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT , italic_p ). As for the other unit law, we must again use directed path induction: since

𝗋𝖾𝖿𝗅u𝗋𝖾𝖿𝗅u𝗋𝖾𝖿𝗅u,subscript𝗋𝖾𝖿𝗅𝑢subscript𝗋𝖾𝖿𝗅𝑢subscript𝗋𝖾𝖿𝗅𝑢\mathsf{refl}_{u}\cdot\mathsf{refl}_{u}\equiv\mathsf{refl}_{u},sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ≡ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ,

we have that 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅u:𝖨𝖽(𝗋𝖾𝖿𝗅u𝗋𝖾𝖿𝗅u,𝗋𝖾𝖿𝗅u):subscript𝗋𝖾𝖿𝗅subscript𝗋𝖾𝖿𝗅𝑢𝖨𝖽subscript𝗋𝖾𝖿𝗅𝑢subscript𝗋𝖾𝖿𝗅𝑢subscript𝗋𝖾𝖿𝗅𝑢\mathsf{refl}_{\mathsf{refl}_{u}}\colon\mathsf{Id}(\mathsf{refl}_{u}\cdot% \mathsf{refl}_{u},\mathsf{refl}_{u})sansserif_refl start_POSTSUBSCRIPT sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT end_POSTSUBSCRIPT : sansserif_Id ( sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT , sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ), and, by induction we get a term

𝗋𝗎𝗇𝗂𝗍q=𝗂𝗇𝖽(𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅u,v,q):𝖨𝖽(𝗋𝖾𝖿𝗅uq,q):𝗋𝗎𝗇𝗂𝗍𝑞𝗂𝗇𝖽subscript𝗋𝖾𝖿𝗅subscript𝗋𝖾𝖿𝗅𝑢𝑣𝑞𝖨𝖽subscript𝗋𝖾𝖿𝗅𝑢𝑞𝑞\mathsf{r{-}unit}\;q=\mathsf{ind}(\mathsf{refl}_{\mathsf{refl}_{u}},v,q)\colon% \mathsf{Id}(\mathsf{refl}_{u}\cdot q,q)sansserif_r - sansserif_unit italic_q = sansserif_ind ( sansserif_refl start_POSTSUBSCRIPT sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_v , italic_q ) : sansserif_Id ( sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ⋅ italic_q , italic_q )

for each q:𝖧𝗈𝗆(u,v):𝑞𝖧𝗈𝗆𝑢superscript𝑣q\colon\mathsf{Hom}(u,v^{\prime})italic_q : sansserif_Hom ( italic_u , italic_v start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ).

Finally, we get that the composition operation is associative. Given t,u,v:A:𝑡𝑢𝑣superscript𝐴t,u,v\colon A^{-}italic_t , italic_u , italic_v : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and w:A:superscript𝑤𝐴w^{\prime}\colon Aitalic_w start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_A as well as p:𝖧𝗈𝗆(t,u):𝑝𝖧𝗈𝗆𝑡𝑢p\colon\mathsf{Hom}(t,-u)italic_p : sansserif_Hom ( italic_t , - italic_u ), q:𝖧𝗈𝗆(u,v):𝑞𝖧𝗈𝗆𝑢𝑣q\colon\mathsf{Hom}(u,-v)italic_q : sansserif_Hom ( italic_u , - italic_v ), and r:𝖧𝗈𝗆(v,w):𝑟𝖧𝗈𝗆𝑣superscript𝑤r\colon\mathsf{Hom}(v,w^{\prime})italic_r : sansserif_Hom ( italic_v , italic_w start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ), we construct

𝖺𝗌𝗌𝗈𝖼pqr:𝖨𝖽(p(qr),(pq)r):𝖺𝗌𝗌𝗈𝖼𝑝𝑞𝑟𝖨𝖽𝑝𝑞𝑟𝑝𝑞𝑟\mathsf{assoc}\;p\;q\;r\colon\mathsf{Id}(p\cdot(q\cdot r),(p\cdot q)\cdot r)sansserif_assoc italic_p italic_q italic_r : sansserif_Id ( italic_p ⋅ ( italic_q ⋅ italic_r ) , ( italic_p ⋅ italic_q ) ⋅ italic_r )

by directed path induction on r𝑟ritalic_r. If r=𝗋𝖾𝖿𝗅v𝑟subscript𝗋𝖾𝖿𝗅𝑣r=\mathsf{refl}_{v}italic_r = sansserif_refl start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT, then qrq𝑞𝑟𝑞q\cdot r\equiv qitalic_q ⋅ italic_r ≡ italic_q and (pq)rpq𝑝𝑞𝑟𝑝𝑞(p\cdot q)\cdot r\equiv p\cdot q( italic_p ⋅ italic_q ) ⋅ italic_r ≡ italic_p ⋅ italic_q. Thus, we have

𝗋𝖾𝖿𝗅pq:𝖨𝖽(p(q𝗋𝖾𝖿𝗅v),(pq)𝗋𝖾𝖿𝗅v):subscript𝗋𝖾𝖿𝗅𝑝𝑞𝖨𝖽𝑝𝑞subscript𝗋𝖾𝖿𝗅𝑣𝑝𝑞subscript𝗋𝖾𝖿𝗅𝑣\mathsf{refl}_{p\cdot q}\colon\mathsf{Id}(p\cdot(q\cdot\mathsf{refl}_{v}),(p% \cdot q)\cdot\mathsf{refl}_{v})sansserif_refl start_POSTSUBSCRIPT italic_p ⋅ italic_q end_POSTSUBSCRIPT : sansserif_Id ( italic_p ⋅ ( italic_q ⋅ sansserif_refl start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT ) , ( italic_p ⋅ italic_q ) ⋅ sansserif_refl start_POSTSUBSCRIPT italic_v end_POSTSUBSCRIPT )

and then the induction carries through, and we get 𝖺𝗌𝗌𝗈𝖼pqr𝖺𝗌𝗌𝗈𝖼𝑝𝑞𝑟\mathsf{assoc}\;p\;q\;rsansserif_assoc italic_p italic_q italic_r as desired.

C : {t : Tm(Γ, A⁻)} → Ty (Γ ▹⁺ A ▹⁺ Hom(t’[pA], v))
C = Hom(t[pA],vA)
____\_\!\__ _____\_\!\__ _·__ : {t t : Tm(Γ, A⁻)}{t : Tm(Γ, A)} → Tm(Γ, Hom(t,-t’)) → Tm(Γ, Hom(t’,t”))
→ Tm(Γ, Hom(t,t”))
p · q = (Jt’,Ct’,C{}_{\textsf{t',C}}start_FLOATSUBSCRIPT t’,C end_FLOATSUBSCRIPT p)\:[t”,q]
r-unit : (q : Tm(Γ, Hom(t’,t”))) → Tm(Γ, Id(refl𝗍superscript𝗍{}_{\mathsf{t}^{\prime}}start_FLOATSUBSCRIPT sansserif_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_FLOATSUBSCRIPT · q, q))
r-unit q = (Jt’,Rt’,R{}_{\textsf{t',R}}start_FLOATSUBSCRIPT t’,R end_FLOATSUBSCRIPT reflrefl)[t”,q]
where
R : Ty (Γ ▹⁺ A ▹⁺ Hom(t’[pA], vA))
R = Id((Jt’,Ct’,C{}_{\textsf{t',C}}start_FLOATSUBSCRIPT t’,C end_FLOATSUBSCRIPT refl𝗍superscript𝗍{}_{\mathsf{t^{\prime}}}start_FLOATSUBSCRIPT sansserif_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_FLOATSUBSCRIPT), v𝖧𝗈𝗆(t[𝗉𝖠],𝗏A)𝖧𝗈𝗆superscript𝑡delimited-[]subscript𝗉𝖠subscript𝗏𝐴{}_{\mathsf{Hom}(t^{\prime}[\mathsf{p}_{\mathsf{A}}],\mathsf{v}_{A})}start_FLOATSUBSCRIPT sansserif_Hom ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT [ sansserif_p start_POSTSUBSCRIPT sansserif_A end_POSTSUBSCRIPT ] , sansserif_v start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ) end_FLOATSUBSCRIPT)
l-unit : (p : Tm(Γ, Hom(t,-t’))) → Tm(Γ, Id(p · refl𝗍superscript𝗍{}_{\mathsf{t}^{\prime}}start_FLOATSUBSCRIPT sansserif_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_FLOATSUBSCRIPT, p))
l-unit p = reflp -- by Jβ, p Â\cdot refl ≡ p
assoc : (p : Tm(Γ, Hom(t,-t’))) → (q : Tm(Γ, Hom(t’,-t”))) → (r : Tm(Γ, Hom(t”,t”’)))
→ Tm(Γ, Id(p · (q · r), (p · q) · r))
assoc p q r = (Jt’,St’,S{}_{\textsf{t',S}}start_FLOATSUBSCRIPT t’,S end_FLOATSUBSCRIPT reflp⋅q)[t”’,r]
where
S : Ty (Γ ▹⁺ A ▹⁺ Hom(t[pA], vA))
S = Id((Jt,Ct,C{}_{\textsf{t,C}}start_FLOATSUBSCRIPT t,C end_FLOATSUBSCRIPT (p · q)), v𝖧𝗈𝗆(t[𝗉𝖠],𝗏A)𝖧𝗈𝗆𝑡delimited-[]subscript𝗉𝖠subscript𝗏𝐴{}_{\mathsf{Hom}(t[\mathsf{p}_{\mathsf{A}}],\mathsf{v}_{A})}start_FLOATSUBSCRIPT sansserif_Hom ( italic_t [ sansserif_p start_POSTSUBSCRIPT sansserif_A end_POSTSUBSCRIPT ] , sansserif_v start_POSTSUBSCRIPT italic_A end_POSTSUBSCRIPT ) end_FLOATSUBSCRIPT)
Figure 8: Composition of Homs

4.2 Synthetic Functors

Formal development: Fig. 9, Fig. 10, Fig. 11, Fig. 12

If types A,B𝐴𝐵A,Bitalic_A , italic_B are synthetic categories, it should come as no surprise that terms f:AB:𝑓𝐴𝐵f\colon A\to Bitalic_f : italic_A → italic_B are synthetic functors. The object part is given by the usual function application, but the variances are somewhat mixed: if t:A:𝑡superscript𝐴t\colon A^{-}italic_t : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, then we can say f(t):B:𝑓𝑡𝐵f(t)\colon Bitalic_f ( italic_t ) : italic_B. However, we can still apply f𝑓fitalic_f to a term t:A:superscript𝑡𝐴t^{\prime}\colon Aitalic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_A, we just have to put a minus on tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT, i.e. f(t)𝑓superscript𝑡f(-t^{\prime})italic_f ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ).

Unlike usual (“analytic”) category theory, we don’t have to explicitly define the morphism part of a functor; any term of type AB𝐴𝐵A\to Bitalic_A → italic_B we can write down will come with a morphism part for free. To obtain this morphism part, again we use directed path induction: given an f:AB:𝑓𝐴𝐵f\colon A\to Bitalic_f : italic_A → italic_B and some t:A:𝑡superscript𝐴t\colon A^{-}italic_t : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT, we can define a B𝐵Bitalic_B-morphism

𝗆𝖺𝗉fp:𝖧𝗈𝗆(f(t),f(t)):𝗆𝖺𝗉𝑓𝑝𝖧𝗈𝗆𝑓𝑡𝑓superscript𝑡\mathsf{map}\;f\;p\colon\mathsf{Hom}(-f(t),f(-t^{\prime}))sansserif_map italic_f italic_p : sansserif_Hom ( - italic_f ( italic_t ) , italic_f ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) )

for every t:A:superscript𝑡superscript𝐴t^{\prime}\colon A^{-}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and p:𝖧𝗈𝗆(t,t):𝑝𝖧𝗈𝗆𝑡superscript𝑡p\colon\mathsf{Hom}(t,t^{\prime})italic_p : sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) by putting

𝗆𝖺𝗉f𝗋𝖾𝖿𝗅t=𝗋𝖾𝖿𝗅f(t):𝖧𝗈𝗆(f(t),f(t)).\mathsf{map}\;f\;\mathsf{refl}_{t}=\mathsf{refl}_{-f(t)}\quad\colon\mathsf{Hom% }(-f(t),f(t)).sansserif_map italic_f sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT = sansserif_refl start_POSTSUBSCRIPT - italic_f ( italic_t ) end_POSTSUBSCRIPT : sansserif_Hom ( - italic_f ( italic_t ) , italic_f ( italic_t ) ) .

By definition, this operation preserves identities (sending 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅\mathsf{refl}sansserif_refl to 𝗋𝖾𝖿𝗅𝗋𝖾𝖿𝗅\mathsf{refl}sansserif_refl), and respects composition: if we have t,u:A:𝑡𝑢superscript𝐴t,u\colon A^{-}italic_t , italic_u : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT and p:𝖧𝗈𝗆(t,u):𝑝𝖧𝗈𝗆𝑡𝑢p\colon\mathsf{Hom}(t,-u)italic_p : sansserif_Hom ( italic_t , - italic_u ), then, since 𝗆𝖺𝗉f𝗋𝖾𝖿𝗅u𝗋𝖾𝖿𝗅f(u)𝗆𝖺𝗉𝑓subscript𝗋𝖾𝖿𝗅𝑢subscript𝗋𝖾𝖿𝗅𝑓𝑢\mathsf{map}\;f\;\mathsf{refl}_{u}\equiv\mathsf{refl}_{-f(u)}sansserif_map italic_f sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ≡ sansserif_refl start_POSTSUBSCRIPT - italic_f ( italic_u ) end_POSTSUBSCRIPT and p𝗋𝖾𝖿𝗅up𝑝subscript𝗋𝖾𝖿𝗅𝑢𝑝p\cdot\mathsf{refl}_{u}\equiv pitalic_p ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ≡ italic_p and (𝗆𝖺𝗉fp)𝗋𝖾𝖿𝗅f(u)𝗆𝖺𝗉fp𝗆𝖺𝗉𝑓𝑝subscript𝗋𝖾𝖿𝗅𝑓𝑢𝗆𝖺𝗉𝑓𝑝(\mathsf{map}\;f\;p)\cdot\mathsf{refl}_{-f(u)}\equiv\mathsf{map}\;f\;p( sansserif_map italic_f italic_p ) ⋅ sansserif_refl start_POSTSUBSCRIPT - italic_f ( italic_u ) end_POSTSUBSCRIPT ≡ sansserif_map italic_f italic_p, we have

𝗋𝖾𝖿𝗅(𝗆𝖺𝗉fp):𝖨𝖽(𝗆𝖺𝗉f(p𝗋𝖾𝖿𝗅u),(𝗆𝖺𝗉fp)(𝗆𝖺𝗉f𝗋𝖾𝖿𝗅t)).:subscript𝗋𝖾𝖿𝗅𝗆𝖺𝗉𝑓𝑝𝖨𝖽𝗆𝖺𝗉𝑓𝑝subscript𝗋𝖾𝖿𝗅𝑢𝗆𝖺𝗉𝑓𝑝𝗆𝖺𝗉𝑓subscript𝗋𝖾𝖿𝗅𝑡\mathsf{refl}_{(\mathsf{map}\;f\;p)}\colon\mathsf{Id}(\mathsf{map}\;f\;(p\cdot% \mathsf{refl}_{u}),(\mathsf{map}\;f\;p)\cdot(\mathsf{map}\;f\;\mathsf{refl}_{t% })).sansserif_refl start_POSTSUBSCRIPT ( sansserif_map italic_f italic_p ) end_POSTSUBSCRIPT : sansserif_Id ( sansserif_map italic_f ( italic_p ⋅ sansserif_refl start_POSTSUBSCRIPT italic_u end_POSTSUBSCRIPT ) , ( sansserif_map italic_f italic_p ) ⋅ ( sansserif_map italic_f sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ) ) .

By induction, we get an identity between 𝗆𝖺𝗉f(pq)𝗆𝖺𝗉𝑓𝑝𝑞\mathsf{map}\;f\;(p\cdot q)sansserif_map italic_f ( italic_p ⋅ italic_q ) and (𝗆𝖺𝗉fp)(𝗆𝖺𝗉fq)𝗆𝖺𝗉𝑓𝑝𝗆𝖺𝗉𝑓𝑞(\mathsf{map}\;f\;p)\cdot(\mathsf{map}\;f\;q)( sansserif_map italic_f italic_p ) ⋅ ( sansserif_map italic_f italic_q ) for arbitrary q𝑞qitalic_q.

Let us also note that functors are also composable: given f:AB:𝑓𝐴𝐵f\colon A\to Bitalic_f : italic_A → italic_B and g:BC:𝑔𝐵𝐶g\colon B\to Citalic_g : italic_B → italic_C, we get the usual

gf=λ(x:A)g(f(x)).g\circ f=\lambda(x:A^{-})\to g(-f(x)).italic_g ∘ italic_f = italic_λ ( italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) → italic_g ( - italic_f ( italic_x ) ) .

Of course, we can prove 𝗆𝖺𝗉(gf)p𝗆𝖺𝗉𝑔𝑓𝑝\mathsf{map}\;(g\circ f)\;psansserif_map ( italic_g ∘ italic_f ) italic_p equal to 𝗆𝖺𝗉g(𝗆𝖺𝗉fp)𝗆𝖺𝗉𝑔𝗆𝖺𝗉𝑓𝑝\mathsf{map}\;g\;(\mathsf{map}\;f\;p)sansserif_map italic_g ( sansserif_map italic_f italic_p ) by directed path induction, using the following observations:

𝗆𝖺𝗉f𝗋𝖾𝖿𝗅t𝗆𝖺𝗉𝑓subscript𝗋𝖾𝖿𝗅𝑡\displaystyle\mathsf{map}\;f\;\mathsf{refl}_{t}sansserif_map italic_f sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT 𝗋𝖾𝖿𝗅f(t)absentsubscript𝗋𝖾𝖿𝗅𝑓𝑡\displaystyle\equiv\mathsf{refl}_{-f(t)}≡ sansserif_refl start_POSTSUBSCRIPT - italic_f ( italic_t ) end_POSTSUBSCRIPT
𝗆𝖺𝗉g𝗋𝖾𝖿𝗅f(t)𝗆𝖺𝗉𝑔subscript𝗋𝖾𝖿𝗅𝑓𝑡\displaystyle\mathsf{map}\;g\;\mathsf{refl}_{-f(t)}sansserif_map italic_g sansserif_refl start_POSTSUBSCRIPT - italic_f ( italic_t ) end_POSTSUBSCRIPT 𝗋𝖾𝖿𝗅g(f(t))absentsubscript𝗋𝖾𝖿𝗅𝑔𝑓𝑡\displaystyle\equiv\mathsf{refl}_{-g(-f(t))}≡ sansserif_refl start_POSTSUBSCRIPT - italic_g ( - italic_f ( italic_t ) ) end_POSTSUBSCRIPT
𝗆𝖺𝗉(gf)𝗋𝖾𝖿𝗅t𝗆𝖺𝗉𝑔𝑓subscript𝗋𝖾𝖿𝗅𝑡\displaystyle\mathsf{map}\;(g\circ f)\;\mathsf{refl}_{t}sansserif_map ( italic_g ∘ italic_f ) sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT 𝗋𝖾𝖿𝗅(gf)(t).absentsubscript𝗋𝖾𝖿𝗅𝑔𝑓𝑡\displaystyle\equiv\mathsf{refl}_{-(g\circ f)(t)}.≡ sansserif_refl start_POSTSUBSCRIPT - ( italic_g ∘ italic_f ) ( italic_t ) end_POSTSUBSCRIPT .
____\_\!\__ _$_ : {Γ : NeutCon}{A : Ty Γ⁻}{B : Ty Γ}
→ (Tm(Γ, A → B)) → Tm(Γ⁻,A⁻) → Tm(Γ,A)
f $ t = (app f)[ id ,₋ t ]
map : {Γ : NeutCon}{A : Ty Γ⁻}{B : Ty Γ}(f : Tm(Γ, A → B)){t : Tm(Γ⁻,A⁻)}{t : Tm(Γ⁻,A)}
→ (Tm(Γ⁻, Hom(t,t’))) → Tm(Γ, Hom( -(f $ t) , f $ (-t’)))
map f p = (Jt[e],MAP𝑡delimited-[]𝑒MAP{}_{t[e],\textsf{MAP}}start_FLOATSUBSCRIPT italic_t [ italic_e ] , MAP end_FLOATSUBSCRIPT refl(𝖿$𝗍)𝖿currency-dollar𝗍{}_{-(\mathsf{f}\;\$\;\mathsf{t})}start_FLOATSUBSCRIPT - ( sansserif_f $ sansserif_t ) end_FLOATSUBSCRIPT)[t’[e]]
where
MAP : Ty (Γ ▹ A[e])
MAP = Hom( (-(f $ t))[pA[e]], (app f)[e ▹ A] )
Figure 9: Morphism part of Functors
𝖧𝗈𝗆((f$t),((f$t)))𝖧𝗈𝗆𝑓currency-dollar𝑡𝑓currency-dollar𝑡\displaystyle\mathsf{Hom}(-(f\;\$\;t),-(-(f\;\$\;t)))sansserif_Hom ( - ( italic_f $ italic_t ) , - ( - ( italic_f $ italic_t ) ) )
𝖧𝗈𝗆((f$t),f$t)absent𝖧𝗈𝗆𝑓currency-dollar𝑡𝑓currency-dollar𝑡\displaystyle\equiv\mathsf{Hom}(-(f\;\$\;t),f\;\$\;t)≡ sansserif_Hom ( - ( italic_f $ italic_t ) , italic_f $ italic_t )
=𝖧𝗈𝗆((f$t),(𝖺𝗉𝗉f)[𝗂𝖽,t])\displaystyle=\mathsf{Hom}(-(f\;\$\;t),(\mathsf{app}\;f)[\mathsf{id},_{-}t])= sansserif_Hom ( - ( italic_f $ italic_t ) , ( sansserif_app italic_f ) [ sansserif_id , start_POSTSUBSCRIPT - end_POSTSUBSCRIPT italic_t ] )
𝖧𝗈𝗆((f$t),(𝖺𝗉𝗉f)[(eA)𝗂𝖽,+t[e]])\displaystyle\equiv\mathsf{Hom}(-(f\;\$\;t),(\mathsf{app}\;f)[(e\triangleright A% )\circ\left\langle\mathsf{id},_{+}-t[e]\right\rangle])≡ sansserif_Hom ( - ( italic_f $ italic_t ) , ( sansserif_app italic_f ) [ ( italic_e ▷ italic_A ) ∘ ⟨ sansserif_id , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT - italic_t [ italic_e ] ⟩ ] ) (*)
𝖧𝗈𝗆((f$t),(𝖺𝗉𝗉f)[(eA)][𝗂𝖽,+t[e]])\displaystyle\equiv\mathsf{Hom}(-(f\;\$\;t),(\mathsf{app}\;f)[(e\triangleright A% )][\mathsf{id},_{+}-t[e]])≡ sansserif_Hom ( - ( italic_f $ italic_t ) , ( sansserif_app italic_f ) [ ( italic_e ▷ italic_A ) ] [ sansserif_id , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT - italic_t [ italic_e ] ] )
𝖧𝗈𝗆((f$t)[𝗉A[e],(𝖺𝗉𝗉f)[(eA)])[𝗂𝖽,+t[e]]\displaystyle\equiv\mathsf{Hom}(-(f\;\$\;t)[\mathsf{p}_{A[e]},(\mathsf{app}\;f% )[(e\triangleright A)])[\mathsf{id},_{+}-t[e]]≡ sansserif_Hom ( - ( italic_f $ italic_t ) [ sansserif_p start_POSTSUBSCRIPT italic_A [ italic_e ] end_POSTSUBSCRIPT , ( sansserif_app italic_f ) [ ( italic_e ▷ italic_A ) ] ) [ sansserif_id , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT - italic_t [ italic_e ] ]
=𝖬𝖠𝖯[𝗂𝖽,+t[e]]\displaystyle=\mathsf{MAP}[\mathsf{id},_{+}-t[e]]= sansserif_MAP [ sansserif_id , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT - italic_t [ italic_e ] ]

(*) 𝗂𝖽,t(eA)𝗂𝖽,+t[e]\left\langle\mathsf{id},_{-}t\right\rangle\equiv(e\triangleright A)\circ\left% \langle\mathsf{id},_{+}-t[e]\right\rangle⟨ sansserif_id , start_POSTSUBSCRIPT - end_POSTSUBSCRIPT italic_t ⟩ ≡ ( italic_e ▷ italic_A ) ∘ ⟨ sansserif_id , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT - italic_t [ italic_e ] ⟩ by Definition 3.2 since ΓΓ\Gammaroman_Γ neutral.

Figure 10: Calculation that 𝗋𝖾𝖿𝗅(f$t):𝖬𝖠𝖯[t[e]]:subscript𝗋𝖾𝖿𝗅𝑓currency-dollar𝑡𝖬𝖠𝖯delimited-[]𝑡delimited-[]𝑒\mathsf{refl}_{-(f\;\$\;t)}\colon\mathsf{MAP}[-t[e]]sansserif_refl start_POSTSUBSCRIPT - ( italic_f $ italic_t ) end_POSTSUBSCRIPT : sansserif_MAP [ - italic_t [ italic_e ] ] in Fig. 9
____\_\!\__ _∘_ : {Γ : NeutCon}{A : Ty Γ⁻}{B C : Ty Γ} →
Tm(Γ, A → B) → Tm(Γ, B[e⁻] → C) → Tm(Γ, A → C)
g ∘ f = lam( (app g)[ e ▹ B[e⁻] ][ p-,A ,+ app f ] )
Figure 11: Composition of Functions

The diagram

ΓAsuperscriptΓ𝐴{\Gamma\triangleright^{-}A}roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_AΓ+BsuperscriptΓ𝐵{\Gamma\triangleright^{+}B}roman_Γ ▷ start_POSTSUPERSCRIPT + end_POSTSUPERSCRIPT italic_BΓB[e]superscriptΓ𝐵delimited-[]superscript𝑒{\Gamma\triangleright^{-}B[e^{-}]}roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ]ΓΓ{\Gamma}roman_Γ𝗉,A,+𝖺𝗉𝗉f\scriptstyle{\left\langle\mathsf{p}_{-,A},_{+}\mathsf{app}\;f\right\rangle}⟨ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT sansserif_app italic_f ⟩𝗉,Asubscript𝗉𝐴\scriptstyle{\mathsf{p}_{-,A}}sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPTeB[e]𝑒𝐵delimited-[]superscript𝑒\scriptstyle{e\triangleright B[e^{-}]}italic_e ▷ italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ]𝗉Bsubscript𝗉𝐵\scriptstyle{\mathsf{p}_{B}}sansserif_p start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT𝗉,B[e]subscript𝗉𝐵delimited-[]superscript𝑒\scriptstyle{\mathsf{p}_{-,B[e^{-}]}}sansserif_p start_POSTSUBSCRIPT - , italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] end_POSTSUBSCRIPT

commutes, since p,B[e](eB[e])𝗉Bsubscript𝑝𝐵delimited-[]superscript𝑒𝑒𝐵delimited-[]superscript𝑒subscript𝗉𝐵p_{-,B[e^{-}]}\circ(e\triangleright B[e^{-}])\equiv\mathsf{p}_{B}italic_p start_POSTSUBSCRIPT - , italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] end_POSTSUBSCRIPT ∘ ( italic_e ▷ italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] ) ≡ sansserif_p start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT by Definition 3.2 and 𝗉B𝗉,A,+𝖺𝗉𝗉f𝗉,A\mathsf{p}_{B}\circ\left\langle\mathsf{p}_{-,A},_{+}\mathsf{app}\;f\right% \rangle\equiv\mathsf{p}_{-,A}sansserif_p start_POSTSUBSCRIPT italic_B end_POSTSUBSCRIPT ∘ ⟨ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT sansserif_app italic_f ⟩ ≡ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT by Fig. 1. Thus, since 𝖺𝗉𝗉g:𝖳𝗆(ΓB[e],C[𝗉,B[e]]):𝖺𝗉𝗉𝑔𝖳𝗆superscriptΓ𝐵delimited-[]superscript𝑒𝐶delimited-[]subscript𝗉𝐵delimited-[]superscript𝑒\mathsf{app}\;g\colon\mathsf{Tm}(\Gamma\triangleright^{-}B[e^{-}],C[\mathsf{p}% _{-,B[e^{-}]}])sansserif_app italic_g : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] , italic_C [ sansserif_p start_POSTSUBSCRIPT - , italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] end_POSTSUBSCRIPT ] ),

(𝖺𝗉𝗉g)[eB[e]][𝗉,A,+𝖺𝗉𝗉f]:𝖳𝗆(ΓA,C[𝗉,A]).(\mathsf{app}\;g)[e\triangleright B[e^{-}]][\mathsf{p}_{-,A},_{+}\mathsf{app}% \;f]\colon\mathsf{Tm}(\Gamma\triangleright^{-}A,C[\mathsf{p}_{-,A}]).( sansserif_app italic_g ) [ italic_e ▷ italic_B [ italic_e start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ] ] [ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT , start_POSTSUBSCRIPT + end_POSTSUBSCRIPT sansserif_app italic_f ] : sansserif_Tm ( roman_Γ ▷ start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT italic_A , italic_C [ sansserif_p start_POSTSUBSCRIPT - , italic_A end_POSTSUBSCRIPT ] ) .
Figure 12: Auxiliary calculations for Fig. 11

5 Further observations about the Category Model

As the previous section showed, the syntax of 1-truncated Directed CwFs provides a nice setting for some very basic constructions in synthetic category theory. However, further expansion of the DCwF syntax is needed to be able to capture the full range of constructions in category theory. In this section, we’ll observe some constructions that can be made (and some equivalences that hold) in the category model, which require further study to be internalized into the DCwF syntax.

Probably the most significant omission from the synthetic category theory of the previous section is natural transformations. There are some natural transformations expressible in the theory as written, because natural transformations are, as we might hope and expect, homs between functors. That is, the type AB𝐴𝐵A\to Bitalic_A → italic_B is a synthetic category: given f:𝖳𝗆(Γ,(AB)):𝑓𝖳𝗆Γsuperscript𝐴𝐵f\colon\mathsf{Tm}(\Gamma,(A\to B)^{-})italic_f : sansserif_Tm ( roman_Γ , ( italic_A → italic_B ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and g:𝖳𝗆(Γ,AB):𝑔𝖳𝗆Γ𝐴𝐵g\colon\mathsf{Tm}(\Gamma,A\to B)italic_g : sansserif_Tm ( roman_Γ , italic_A → italic_B ), we can form the type 𝖧𝗈𝗆(f,g)𝖧𝗈𝗆𝑓𝑔\mathsf{Hom}(f,g)sansserif_Hom ( italic_f , italic_g ). In the category model, these are interpreted as natural transformations from f𝑓fitalic_f to g𝑔gitalic_g, but all dependent over the context ΓΓ\Gammaroman_Γ. Both f𝑓fitalic_f and g𝑔gitalic_g sends objects γ:|Γ|:𝛾Γ\gamma\colon\left|\Gamma\right|italic_γ : | roman_Γ | to functors from A(γ)𝐴𝛾A(\gamma)italic_A ( italic_γ ) to B(γ)𝐵𝛾B(\gamma)italic_B ( italic_γ ); if α:𝖳𝗆(Γ,𝖧𝗈𝗆(f,g)):𝛼𝖳𝗆Γ𝖧𝗈𝗆𝑓𝑔\alpha\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(f,g))italic_α : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_f , italic_g ) ), then α𝛼\alphaitalic_α sends γ𝛾\gammaitalic_γ to a natural transformation f(γ)g(γ)𝑓𝛾𝑔𝛾f(\gamma)\to g(\gamma)italic_f ( italic_γ ) → italic_g ( italic_γ ). On morphisms γ01:Γ[γ0,γ1]:subscript𝛾01Γsubscript𝛾0subscript𝛾1\gamma_{01}\colon\Gamma\>[\gamma_{0},\gamma_{1}]italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT : roman_Γ [ italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ], α(γ01)𝛼subscript𝛾01\alpha(\gamma_{01})italic_α ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) is a witness to the fact that

A(γ1)A(γ0)B(γ0)Bγ1f(γ1)g(γ1)A(γ01)f(γ0)g(γ0)f(γ01)g(γ01)α(γ0)B(γ01)Aγ1Bγ1.f(γ1)g(γ1)α(γ1)𝐴subscript𝛾1𝐴subscript𝛾0𝐵subscript𝛾0𝐵subscript𝛾1𝑓subscript𝛾1𝑔subscript𝛾1𝐴subscript𝛾01𝑓subscript𝛾0𝑔subscript𝛾0𝑓subscript𝛾01𝑔subscript𝛾01𝛼subscript𝛾0𝐵subscript𝛾01𝐴subscript𝛾1𝐵subscript𝛾1𝑓subscript𝛾1𝑔subscript𝛾1𝛼subscript𝛾1\leavevmode\hbox to141.93pt{\vbox to183.37pt{\pgfpicture\makeatletter\hbox{% \hskip 71.2622pt\lower-91.68744pt\hbox to0.0pt{\pgfsys@beginscope% \pgfsys@invoke{ }\definecolor{pgfstrokecolor}{rgb}{0,0,0}% \pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill{0}{0}% {0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}\pgfsys@invoke{ }\nullfont\hbox to% 0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{}{}{{}}\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{\offinterlineskip{}{}{{{}}{{}}{{}}{{}}{{}}% }{{{}}}{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-16.2265pt}{-91.68744pt}\pgfsys@invoke{ }\hbox{\vbox{\halign{% \pgf@matrix@init@row\pgf@matrix@step@column{\pgf@matrix@startcell#% \pgf@matrix@endcell}&#\pgf@matrix@padding&&\pgf@matrix@step@column{% \pgf@matrix@startcell#\pgf@matrix@endcell}&#\pgf@matrix@padding\cr\hfil\hskip 1% 5.9331pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-11.62756pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{% rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${A(\gamma_{1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 15.9331pt\hfil\cr% \vskip 27.0pt\cr\hfil\hskip 15.9331pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-11.62756pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{% rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${A(\gamma_{0})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 15.9331pt\hfil\cr% \vskip 27.0pt\cr\hfil\hskip 4.30554pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{0.0pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{% 0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill% {0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 4.30554pt\hfil\cr% \vskip 27.0pt\cr\hfil\hskip 16.2265pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-11.92096pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{% rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${B(\gamma_{0})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 16.2265pt\hfil\cr% \vskip 27.0pt\cr\hfil\hskip 12.3376pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-8.03206pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb% }{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${B\gamma_{1}}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 12.3376pt\hfil\cr}% }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}{{{{}}}{{}}{{}}{{}}{{}}% {{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{}{}{}{{}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}}{{}}{{{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-20.9105pt}{68.5101pt}% \pgfsys@moveto{-20.9105pt}{68.5101pt}\pgfsys@curveto{-61.96706pt}{27.08606pt}{% -61.6682pt}{-39.99164pt}{-20.52823pt}{-80.76665pt}\pgfsys@stroke\pgfsys@invoke% { }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@transformcm{0.71025}{-0.70395}{0.70395}{0.71025}{-20.% 3862pt}{-80.90741pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-53.86029pt}{-6.40685pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-69.10944pt}{-8.15685pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{f(\gamma_{% 1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{}{}{}{{}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}}{{}}{{{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{20.9105pt}{68.5101pt}% \pgfsys@moveto{20.9105pt}{68.5101pt}\pgfsys@curveto{61.96706pt}{27.08606pt}{61% .6682pt}{-39.99164pt}{20.52823pt}{-80.76665pt}\pgfsys@stroke\pgfsys@invoke{ }{% {}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@transformcm{-0.71025}{-0.70395}{0.70395}{-0.71025}{20% .3862pt}{-80.90741pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{53.86029pt}{-6.40685pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{53.86029pt}{-8.15685pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{g(\gamma_{% 1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }{}{}{}{}{{}}{% }{}{{}}\pgfsys@moveto{0.0pt}{68.56387pt}\pgfsys@lineto{0.0pt}{42.36383pt}% \pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}% {\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0% .0pt}{42.16385pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{2.35277pt}{53.51387pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}% {rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{A(\gamma_{% 01})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope {}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-4.12892pt}{24.24445pt}% \pgfsys@curveto{-14.16908pt}{2.71338pt}{-14.16908pt}{-15.14392pt}{-4.29794pt}{% -36.3125pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}% }{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.42262}{-0% .90631}{0.90631}{0.42262}{-4.21344pt}{-36.49374pt}\pgfsys@invoke{ }% \pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }% \pgfsys@endscope}}{{}}}}\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }% {{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-14.0118pt}{-6.21527pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-29.26094pt}{-7.96527pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{f(\gamma_{% 0})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{4.12892pt}{24.24445pt}% \pgfsys@curveto{14.16908pt}{2.71338pt}{14.16908pt}{-15.14392pt}{4.29794pt}{-36% .3125pt}\pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{% {}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{-0.42262}{-0.9% 0631}{0.90631}{-0.42262}{4.21344pt}{-36.49374pt}\pgfsys@invoke{ }% \pgfsys@invoke{ \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }% \pgfsys@endscope}}{{}}}}\hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }% {{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{14.0118pt}{-6.21527pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}% {rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{14.0118pt}{-7.96527pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}% {rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{g(\gamma_{% 0})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{}{{{}{}}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}}{{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}} {}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }% \pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{2.33746pt}\pgfsys@invoke{ }{}{{ {\pgfsys@beginscope {{}} \pgfsys@setlinewidth{0.39998pt}\pgfsys@setdash{}{0.0pt}\pgfsys@roundcap% \pgfsys@roundjoin{} {}{}{} {}{}{} \pgfsys@moveto{-1.29811pt}{2.56715pt}\pgfsys@curveto{-0.66843pt}{1.21092pt}{1.% 02686pt}{0.04845pt}{1.99559pt}{0.0pt}\pgfsys@curveto{1.02686pt}{-0.04845pt}{-0% .66843pt}{-1.21092pt}{-1.29811pt}{-2.56715pt}\pgfsys@stroke\pgfsys@endscope}} }{}{}{{}}{}{}{{}}\pgfsys@moveto{-47.55559pt}{3.62349pt}\pgfsys@lineto{-16.6081% 2pt}{3.77234pt}\pgfsys@stroke\pgfsys@invoke{ }\pgfsys@beginscope\pgfsys@invoke% { }{\pgfsys@setlinewidth{1.5375pt}\pgfsys@invoke{ }\definecolor[named]{% pgfstrokecolor}{rgb}{1,1,1}\pgfsys@color@gray@stroke{1}\pgfsys@invoke{ }% \pgfsys@moveto{-47.55559pt}{3.62349pt}\pgfsys@lineto{-16.60812pt}{3.77234pt}% \pgfsys@stroke\pgfsys@invoke{ }}\pgfsys@invoke{\lxSVG@closescope }% \pgfsys@endscope{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{% \pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.99998}{0.0048}{-0.004% 8}{0.99998}{-16.60814pt}{3.77234pt}\pgfsys@invoke{ }\pgfsys@invoke{ % \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-42.60863pt}{7.79153pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{f(\gamma_{% 01})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{}{{{}{}}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}}{{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}} {}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope\pgfsys@invoke{ }% \pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{2.33746pt}\pgfsys@invoke{ }{}{}{}{}{{}}{% }{}{{}}\pgfsys@moveto{14.31659pt}{-16.21677pt}\pgfsys@lineto{45.26405pt}{-16.3% 6562pt}\pgfsys@stroke\pgfsys@invoke{ }\pgfsys@beginscope\pgfsys@invoke{ }{% \pgfsys@setlinewidth{1.5375pt}\pgfsys@invoke{ }\definecolor[named]{% pgfstrokecolor}{rgb}{1,1,1}\pgfsys@color@gray@stroke{1}\pgfsys@invoke{ }% \pgfsys@moveto{14.31659pt}{-16.21677pt}\pgfsys@lineto{45.26405pt}{-16.36562pt}% \pgfsys@stroke\pgfsys@invoke{ }}\pgfsys@invoke{\lxSVG@closescope }% \pgfsys@endscope{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{% \pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.99998}{-0.0048}{0.004% 8}{0.99998}{45.26404pt}{-16.36562pt}\pgfsys@invoke{ }\pgfsys@invoke{ % \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{25.55879pt}{-23.91365pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{g(\gamma_{% 01})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }% \pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{2.33746pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-9.65903pt}{-6.21527pt}% \pgfsys@lineto{7.46346pt}{-6.21527pt}\pgfsys@stroke\pgfsys@invoke{ }% \pgfsys@beginscope\pgfsys@invoke{ }{\pgfsys@setlinewidth{1.5375pt}% \pgfsys@invoke{ }\definecolor[named]{pgfstrokecolor}{rgb}{1,1,1}% \pgfsys@color@gray@stroke{1}\pgfsys@invoke{ }\pgfsys@moveto{-9.65903pt}{-6.215% 27pt}\pgfsys@lineto{7.46346pt}{-6.21527pt}\pgfsys@stroke\pgfsys@invoke{ }}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{{}}{}{}{{}}{{{}}}}{{}{{}% }{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0% }{0.0}{0.0}{1.0}{7.46346pt}{-6.21527pt}\pgfsys@invoke{ }\pgfsys@invoke{ % \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-7.77324pt}{-2.1125pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}% {rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{\alpha(% \gamma_{0})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }{}{}{}{}{{}}{% }{}{{}}\pgfsys@moveto{0.0pt}{-54.39441pt}\pgfsys@lineto{0.0pt}{-80.59445pt}% \pgfsys@stroke\pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}% {\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.0}{-1.0}{1.0}{0.0}{0% .0pt}{-80.79443pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{2.35277pt}{-69.44441pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{B(\gamma_{% 01})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}% \pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}% \lxSVG@closescope\endpgfpicture}}\qquad\equiv\qquad\leavevmode\hbox to112.16pt% {\vbox to111.51pt{\pgfpicture\makeatletter\hbox{\hskip 56.37746pt\lower-55.756% 97pt\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\pgfsys@setlinewidth{0.4pt}% \pgfsys@invoke{ }\nullfont\hbox to0.0pt{\pgfsys@beginscope\pgfsys@invoke{ }{}{% }{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{\offinterlineskip{}{}{% {{}}{{}}{{}}}{{{}}}{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-13.72649pt}{-55.75697pt}\pgfsys@invoke{ }\hbox{\vbox{\halign{% \pgf@matrix@init@row\pgf@matrix@step@column{\pgf@matrix@startcell#% \pgf@matrix@endcell}&#\pgf@matrix@padding&&\pgf@matrix@step@column{% \pgf@matrix@startcell#\pgf@matrix@endcell}&#\pgf@matrix@padding\cr\hfil\hskip 1% 2.0442pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}}\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-7.73866pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb% }{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${A\gamma_{1}}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 12.0442pt\hfil\cr% \vskip 18.00005pt\cr\hfil\hskip 4.30554pt\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{0.0pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb}{% 0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }\pgfsys@color@rgb@fill% {0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 4.30554pt\hfil\cr% \vskip 18.00005pt\cr\hfil\hskip 0.0pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 0.0pt\hfil\cr% \vskip 18.00005pt\cr\hfil\hskip 0.0pt\hbox{{\pgfsys@beginscope\pgfsys@invoke{ % }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 0.0pt\hfil\cr% \vskip 18.00005pt\cr\hfil\hskip 13.72649pt\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-9.42094pt}{0.0pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor}{rgb% }{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{${B\gamma_{1}.}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}&\hskip 13.72649pt\hfil\cr% }}}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}{{{{}}}{{}}{{}}{{}}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{}{}{}{{}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}}{{}}{{{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-20.35672pt}{33.83879pt}% \pgfsys@moveto{-20.35672pt}{33.83879pt}\pgfsys@curveto{-42.08832pt}{12.0461pt}% {-42.03833pt}{-23.34923pt}{-20.52884pt}{-44.79842pt}\pgfsys@stroke% \pgfsys@invoke{ }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{% \pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{0.7081}{-0.70612}{0.706% 12}{0.7081}{-20.38724pt}{-44.9396pt}\pgfsys@invoke{ }\pgfsys@invoke{ % \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}% \hbox{\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-38.97554pt}{-5.64392pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{{}{}}}{{}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-54.22469pt}{-7.39392pt}\pgfsys@invoke{ }\hbox{{\definecolor{% pgfstrokecolor}{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{f(\gamma_{% 1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{ {}{}{}}{}{ {}{}{}}{}{ {}{}{}}{ {}{}{}}{{{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{ {}{}}{}{}{{}{}}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{}{}{}{{}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{{}}{}{}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{{{}}}{{{}}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{{{}}{{}}}{}{{}}\hbox{\hbox{{\pgfsys@beginscope\pgfsys@invoke{ }{{}{{}}{}{% }} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} {{}}{}{{}}{}{{}}{{}}{{{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{{{}}{{}}{{}}{{}}{{}}}{{{{}}{}{}{}}} }{{}{}}{{}} {}{}{}{{{}}{{}}{{}}} {{{}}{{}}{{}}} {}{{}}{}{{}}{}{{}}{}{}{}{}{}{}{}{{}}{}{{}}{}{}{}{}{}{{}}{}{}{}{}{{}}{}{{}}{}{}% {}{}{}{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{20.35672pt}{33.83879pt}% \pgfsys@moveto{20.35672pt}{33.83879pt}\pgfsys@curveto{42.08832pt}{12.0461pt}{4% 2.03833pt}{-23.34923pt}{20.52884pt}{-44.79842pt}\pgfsys@stroke\pgfsys@invoke{ % }{{}{{}}{}{}{{}}{{{}}}}{{}{{}}{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@transformcm{-0.7081}{-0.70612}{0.70612}{-0.7081}{20.3% 8724pt}{-44.9396pt}\pgfsys@invoke{ }\pgfsys@invoke{ \lxSVG@closescope }% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}\hbox{\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{38.97554pt}{-5.64392pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}}\hbox{{\pgfsys@beginscope% \pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{38.97554pt}{-7.39392pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{g(\gamma_{% 1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{ {}{}{}}{}{ {}{}{}} {{{{{}}{ {}{}}{}{}{{}{}}}}}{}{{{{{}}{ {}{}}{}{}{{}{}}}}}{{}}{}{}{}{}{}{{{}{}}}{}{{}}{}{}{}{{{}{}}}\pgfsys@beginscope% \pgfsys@invoke{ }\pgfsys@setlinewidth{0.39998pt}\pgfsys@invoke{ }% \pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@setlinewidth{2.33746pt}% \pgfsys@invoke{ }{}{}{}{}{{}}{}{}{{}}\pgfsys@moveto{-34.62277pt}{-5.64392pt}% \pgfsys@lineto{32.4272pt}{-5.64392pt}\pgfsys@stroke\pgfsys@invoke{ }% \pgfsys@beginscope\pgfsys@invoke{ }{\pgfsys@setlinewidth{1.5375pt}% \pgfsys@invoke{ }\definecolor[named]{pgfstrokecolor}{rgb}{1,1,1}% \pgfsys@color@gray@stroke{1}\pgfsys@invoke{ }\pgfsys@moveto{-34.62277pt}{-5.64% 392pt}\pgfsys@lineto{32.4272pt}{-5.64392pt}\pgfsys@stroke\pgfsys@invoke{ }}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{{}{{}}{}{}{{}}{{{}}}}{{}{{}% }{}{}{{}}{{{}}{{{}}{\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0% }{0.0}{0.0}{1.0}{32.4272pt}{-5.64392pt}\pgfsys@invoke{ }\pgfsys@invoke{ % \lxSVG@closescope }\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}{{}}}}% \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hbox{\hbox{{% \pgfsys@beginscope\pgfsys@invoke{ }{{}{}{{ {}{}}}{ {}{}} {{}{{}}}{{}{}}{}{{}{}} { }{{{{}}\pgfsys@beginscope\pgfsys@invoke{ }\pgfsys@transformcm{1.0}{0.0}{0.0}{1% .0}{-7.77324pt}{-1.54115pt}\pgfsys@invoke{ }\hbox{{\definecolor{pgfstrokecolor% }{rgb}{0,0,0}\pgfsys@color@rgb@stroke{0}{0}{0}\pgfsys@invoke{ }% \pgfsys@color@rgb@fill{0}{0}{0}\pgfsys@invoke{ }\hbox{$\scriptstyle{\alpha(% \gamma_{1})}$} }}\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope}}} \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope \pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope{}{}{}\hss}% \pgfsys@discardpath\pgfsys@invoke{\lxSVG@closescope }\pgfsys@endscope\hss}}% \lxSVG@closescope\endpgfpicture}}italic_A ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_A ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_B ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_B italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_f ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_g ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_A ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) italic_f ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_g ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_f ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) italic_g ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) italic_α ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) ≡ italic_A italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_B italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT . italic_f ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_g ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) italic_α ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT )

Presently, the only such natural transformations expressible in the DCwF syntax are identities (e.g 𝗋𝖾𝖿𝗅f:𝖳𝗆(Γ,𝖧𝗈𝗆(f,f)):subscript𝗋𝖾𝖿𝗅𝑓𝖳𝗆Γ𝖧𝗈𝗆𝑓𝑓\mathsf{refl}_{f}\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(f,-f))sansserif_refl start_POSTSUBSCRIPT italic_f end_POSTSUBSCRIPT : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_f , - italic_f ) )). There is not a way to work with the actual components of a natural transformation, or to define a natural transformation by its components. What we would like to be able to do is write terms of type

x:A𝖧𝗈𝗆(f(x),g(x))subscriptproduct:𝑥superscript𝐴𝖧𝗈𝗆𝑓𝑥𝑔𝑥\prod_{x\colon A^{-}}\mathsf{Hom}(-f(x),g(x))∏ start_POSTSUBSCRIPT italic_x : italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT end_POSTSUBSCRIPT sansserif_Hom ( - italic_f ( italic_x ) , italic_g ( italic_x ) )

and then prove that they are automatically natural by directed path induction, since αt𝗆𝖺𝗉g𝗋𝖾𝖿𝗅t𝗆𝖺𝗉f𝗋𝖾𝖿𝗅tαtsubscript𝛼𝑡𝗆𝖺𝗉𝑔subscript𝗋𝖾𝖿𝗅𝑡𝗆𝖺𝗉𝑓subscript𝗋𝖾𝖿𝗅𝑡subscript𝛼𝑡\alpha_{t}\cdot\mathsf{map}\;g\;\mathsf{refl}_{t}\equiv\mathsf{map}\;f\;% \mathsf{refl}_{t}\cdot\alpha_{t}italic_α start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ⋅ sansserif_map italic_g sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ≡ sansserif_map italic_f sansserif_refl start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT ⋅ italic_α start_POSTSUBSCRIPT italic_t end_POSTSUBSCRIPT. The issue is that this type violates ( (Var Neg).): we’re not allowed to write f(x)𝑓𝑥-f(x)- italic_f ( italic_x ) for a variable x𝑥xitalic_x without knowing that A𝐴Aitalic_A is neutral. If A𝐴Aitalic_A is neutral, then we’re only capturing natural transformations between functors whose domain is a groupoid, which is a significant restriction. Thus, we have two important open questions: how to make natural transformations definable component-wise in the syntax (ideally using ΠΠ\Piroman_Π-types), and how to express in the syntax that the type of such transformations is equivalent to the hom-type between the two functors.

Another important feature we add are universes. The category model comes equipped with several type universes, most significantly the universe of sets. More precisely, we can regard the category 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set as a closed type in the category model. The operation 𝖤𝗅:𝖳𝗆(,𝖲𝖾𝗍)𝖳𝗒\mathsf{El}\colon\mathsf{Tm}(\bullet,\mathsf{Set})\to\mathsf{Ty}\;\bulletsansserif_El : sansserif_Tm ( ∙ , sansserif_Set ) → sansserif_Ty ∙ takes a set X𝑋Xitalic_X and views it as a discrete category. We can then define

Hom-to-func:{X:𝖳𝗆(,𝖲𝖾𝗍)}{Y:𝖳𝗆(,𝖲𝖾𝗍)}𝖳𝗆(,𝖧𝗈𝗆(X,Y))𝖳𝗆(,𝖤𝗅(X)𝖤𝗅(Y)):Hom-to-funcconditional-set𝑋𝖳𝗆superscript𝖲𝖾𝗍conditional-set𝑌𝖳𝗆𝖲𝖾𝗍𝖳𝗆𝖧𝗈𝗆𝑋𝑌𝖳𝗆𝖤𝗅𝑋𝖤𝗅𝑌{{\sloppy\text{\leavevmode\lstinline{{\lst@@@set@language\lst@@@set@numbers% \lst@@@set@frame\lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{% \@listingGroup{ltx_lst_identifier}{Hom}}-{\@listingGroup{ltx_lst_identifier}{t% o}}-{\@listingGroup{ltx_lst_identifier}{func}}}}}}}\colon\{X\colon\mathsf{Tm}(% \bullet,\mathsf{Set}^{-})\}\{Y\colon\mathsf{Tm}(\bullet,\mathsf{Set})\}\to% \mathsf{Tm}(\bullet,\mathsf{Hom}(X,Y))\to\mathsf{Tm}(\bullet,\mathsf{El}(X)\to% \mathsf{El}(Y))sansserif_Hom sansserif_-to-func : { italic_X : sansserif_Tm ( ∙ , sansserif_Set start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) } { italic_Y : sansserif_Tm ( ∙ , sansserif_Set ) } → sansserif_Tm ( ∙ , sansserif_Hom ( italic_X , italic_Y ) ) → sansserif_Tm ( ∙ , sansserif_El ( italic_X ) → sansserif_El ( italic_Y ) )

by directed path induction: Hom-to-func𝗋𝖾𝖿𝗅XHom-to-funcsubscript𝗋𝖾𝖿𝗅𝑋{{\sloppy\text{\leavevmode\lstinline{{\lst@@@set@language\lst@@@set@numbers% \lst@@@set@frame\lst@@@set@rulecolor\lst@@@set@language\lst@@@set@frame{% \@listingGroup{ltx_lst_identifier}{Hom}}-{\@listingGroup{ltx_lst_identifier}{t% o}}-{\@listingGroup{ltx_lst_identifier}{func}}}}}}}\;\mathsf{refl}_{X}sansserif_Hom sansserif_-to-func sansserif_refl start_POSTSUBSCRIPT italic_X end_POSTSUBSCRIPT should be the identity function 𝗅𝖺𝗆𝗏:𝖳𝗆(,𝖤𝗅(X)𝖤𝗅(X)):𝗅𝖺𝗆𝗏𝖳𝗆𝖤𝗅𝑋𝖤𝗅𝑋\mathsf{lam}\;\mathsf{v}\colon\mathsf{Tm}(\bullet,\mathsf{El}(X)\to\mathsf{El}% (X))sansserif_lam sansserif_v : sansserif_Tm ( ∙ , sansserif_El ( italic_X ) → sansserif_El ( italic_X ) ). We can use this to state the following principle.

Principle (External Directed Univalence).

Hom-to-func is a bijection.

Really, Hom-to-func is the identity function, since terms of hom-types in the empty context are just the morphisms of the category, the morphisms of 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set are functions, and a functor between discrete categories is just a function between their objects. Spelling out the category model semantics, we see that every function is sent to itself. Sufficiently internalized, this principle of Directed Univalence serves as the directed analogue of Hofmann and Streicher’s universe extensionality axiom [15, Section 5.4]. Further work is required to better develop the theory of isomorphisms in the synthetic category theory, and to compare this principle of directed univalence to existing ones (e.g. [19]).

Let us conclude by observing that the existence of a universe allows for metatheoretic reasoning as well, specifically negative proofs about what cannot be done in the syntax. We can view the directed universe 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set as a source of nontrivial directedness: if we affirm Section 5, then 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set cannot possibly be a neutral type. We show that, in DCwFs equipped with a directed univalent universe 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set, hom-types must be asymmetric in general. That is, we cannot construct a term 𝗌𝗒𝗆𝗆𝗌𝗒𝗆𝗆\mathsf{symm}sansserif_symm like in Proposition 3.4 for non-neutral types in the syntax DCwF+𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set (the initial model of the GAT of DCwFs with a universe 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set). We do so the same way Hofmann and Streicher [15] proved that ordinary Martin-Löf Type Theory couldn’t prove the Uniqueness of Identity Proofs: by countermodel. Hofmann and Streicher’s countermodel was the groupoid model, and, of course, ours is the category model.

Proposition 5.1.

There cannot be an operation

𝗌𝗒𝗆𝗆superscript𝗌𝗒𝗆𝗆\displaystyle\mathsf{symm^{\prime}}sansserif_symm start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT :{Γ:𝖭𝖾𝗎𝗍𝖢𝗈𝗇}{A:𝖳𝗒}{t:𝖳𝗆(Γ,A)}{t:𝖳𝗆(Γ,A)}:absentconditional-setΓ𝖭𝖾𝗎𝗍𝖢𝗈𝗇conditional-set𝐴𝖳𝗒conditional-set𝑡𝖳𝗆Γsuperscript𝐴conditional-setsuperscript𝑡𝖳𝗆Γ𝐴\displaystyle\colon\{\Gamma\colon\mathsf{NeutCon}\}\{A\colon\mathsf{Ty}\}\{t% \colon\mathsf{Tm}(\Gamma,A^{-})\}\{t^{\prime}\colon\mathsf{Tm}(\Gamma,A)\}: { roman_Γ : sansserif_NeutCon } { italic_A : sansserif_Ty } { italic_t : sansserif_Tm ( roman_Γ , italic_A start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) } { italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT : sansserif_Tm ( roman_Γ , italic_A ) }
𝖳𝗆(Γ,𝖧𝗈𝗆(t,t))𝖳𝗆(Γ,𝖧𝗈𝗆(t,t))absent𝖳𝗆Γ𝖧𝗈𝗆𝑡superscript𝑡𝖳𝗆Γ𝖧𝗈𝗆superscript𝑡𝑡\displaystyle\to\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,t^{\prime}))\to\mathsf{Tm}(% \Gamma,\mathsf{Hom}(-t^{\prime},-t))→ sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) ) → sansserif_Tm ( roman_Γ , sansserif_Hom ( - italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT , - italic_t ) )

definable in the syntax of DCwFs+𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set.

Proof 5.2.

If the syntax model of DCwF+𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set had such an operation 𝗌𝗒𝗆𝗆superscript𝗌𝗒𝗆𝗆\mathsf{symm^{\prime}}sansserif_symm start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT, then, by initiality, so too would every DCwF with 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set, in particular the category model. But then for any X:𝖳𝗆(,𝖲𝖾𝗍):𝑋𝖳𝗆superscript𝖲𝖾𝗍X\colon\mathsf{Tm}(\bullet,\mathsf{Set}^{-})italic_X : sansserif_Tm ( ∙ , sansserif_Set start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and Y:𝖳𝗆(,𝖲𝖾𝗍):𝑌𝖳𝗆𝖲𝖾𝗍Y\colon\mathsf{Tm}(\bullet,\mathsf{Set})italic_Y : sansserif_Tm ( ∙ , sansserif_Set ) and f:𝖳𝗆(,𝖧𝗈𝗆(X,Y)):𝑓𝖳𝗆𝖧𝗈𝗆𝑋𝑌f\colon\mathsf{Tm}(\bullet,\mathsf{Hom}(X,Y))italic_f : sansserif_Tm ( ∙ , sansserif_Hom ( italic_X , italic_Y ) ), we would obtain 𝗌𝗒𝗆𝗆f:𝖳𝗆(,𝖧𝗈𝗆(Y,X)):superscript𝗌𝗒𝗆𝗆𝑓𝖳𝗆𝖧𝗈𝗆𝑌𝑋\mathsf{symm^{\prime}}\;f\colon\mathsf{Tm}(\bullet,\mathsf{Hom}(Y,X))sansserif_symm start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT italic_f : sansserif_Tm ( ∙ , sansserif_Hom ( italic_Y , italic_X ) ). But this is absurd, because the function ?:𝟙:?1?\colon\emptyset\to\mathbbm{1}? : ∅ → blackboard_1 is a term of type 𝖤𝗅()𝖤𝗅(𝟙)𝖤𝗅𝖤𝗅1\mathsf{El}(\emptyset)\to\mathsf{El}(\mathbbm{1})sansserif_El ( ∅ ) → sansserif_El ( blackboard_1 ) in the category model, and, by Section 5, corresponds to a term of type 𝖧𝗈𝗆(,𝟙)𝖧𝗈𝗆1\mathsf{Hom}(\emptyset,\mathbbm{1})sansserif_Hom ( ∅ , blackboard_1 ), but there cannot be any terms of 𝖧𝗈𝗆(𝟙,)𝖧𝗈𝗆1\mathsf{Hom}(\mathbbm{1},\emptyset)sansserif_Hom ( blackboard_1 , ∅ ), because the set of terms of this type is in bijection with the set of functors 𝖤𝗅(𝟙)𝖤𝗅1\mathsf{El}(\mathbbm{1})sansserif_El ( blackboard_1 ) to 𝖤𝗅()𝖤𝗅\mathsf{El}(\emptyset)sansserif_El ( ∅ ), of which there are none.

Basically the same argument will show the uniqueness of homs principle—that for any hom terms p:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)):𝑝𝖳𝗆Γ𝖧𝗈𝗆superscript𝑡superscript𝑡p\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,t^{\prime})^{-})italic_p : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT ) and q:𝖳𝗆(Γ,𝖧𝗈𝗆(t,t)):𝑞𝖳𝗆Γ𝖧𝗈𝗆𝑡superscript𝑡q\colon\mathsf{Tm}(\Gamma,\mathsf{Hom}(t,t^{\prime}))italic_q : sansserif_Tm ( roman_Γ , sansserif_Hom ( italic_t , italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ) ), there is a witness of 𝖨𝖽(p,q)𝖨𝖽𝑝𝑞\mathsf{Id}(p,q)sansserif_Id ( italic_p , italic_q )—is violated in the category model (a counterexample being 𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set-homs from the two-element set to itself), and therefore not provable in the syntax of DCwFs+𝖲𝖾𝗍𝖲𝖾𝗍\mathsf{Set}sansserif_Set. So we can conclude that the difference between (1,1)11(1,1)( 1 , 1 )-truncated DCwFs, (1,0)10(1,0)( 1 , 0 )-truncated DCwFs, and (0,1)01(0,1)( 0 , 1 )-truncated CwFs is reflected internally in the syntax.

6 Conclusion and Future Work

We have laid the laid the foundation for a generalized algebraic theory of directed types, and began to conduct synthetic category theory in that setting. Our semantics-forward approach was to study the category model first, and extract its key features into a series of abstract definitions—the GATs of polarized CwFs, neutral-polar CwFs, directed CwFs, (1,1)11(1,1)( 1 , 1 )-truncated directed CwFs, and directed CwFs with features like polarized dependent types and a directed univalent set universe. Working within the directed type theory of these models, we found that it was possible to work informally with the powerful directed path induction principle to make basic constructions in category theory, with our careful discipline about variable negation preventing the directed type theory from collapsing into undirected type theory.

Much remains to be done. The category theory of Section 4 serves as a proof-of-concept, but needs to be fleshed out into a full theory. As mentioned, work is needed to articulate natural transformations in the theory; our current investigations concern possible generalization of ΠΠ\Piroman_Π-types to di-variant end types which address some of the above-mentioned variance issues with natural transformations. For reasons of space, we omitted dependent sum types from the theory. But with them added, much of basic category theory should be expressible in this language, such as isomorphisms, (co)slice categories, (co)limits, exponentials, and perhaps some basic topos theory. Better development of the category of sets should put representability and some properties of presheaf categories into reach, though internal statement and proof of the Yoneda Lemma will likely rely on the resolution of the above-mentioned dilemma regarding natural transformations. We also leave it to future work to study whether this theory can capture higher category theory by weakening or dropping the assumption of 1-truncation, and, if so, how it compares to existing synthetic higher category frameworks, such as [25].

There are further avenues for developing the type theory of DCwFs. Two important metatheoretic results about the syntax of DCwFs currently being pursued are canonicity and normalization. Moreover, we would like to verify the correctness of these results by formalizing them in a computer proof assistant. A further goal would be to implement the syntax of DCwFs as a computer proof language itself, hopefully with syntax nearly as convenient as the constructions of Section 4, and formalize larger swaths of category theory in it.

As mentioned in the introduction, a motivation for the present work’s focus on generalized algebraic theories is the possibility of expressing it in a second-order generalized algebraic theory, following [7, 27, 26, 4, 17]. Since our notions of PCwFs and NPCwFs include explicit operations on contexts (as seen in the substructural character of the ( (Var Neg).) rule), it’s clear that either an extension to the SOGAT signature language of [17], and/or a partial internalization of the first-order theory into the second-order theory—à la [4]—will be necessary. A related question is whether the (__)superscript__(\_\!\_)^{-}( _ _ ) start_POSTSUPERSCRIPT - end_POSTSUPERSCRIPT operation (or a neutralization operation interpreted in the category model by core groupoids) on types and contexts can be viewed as a modality in the sense of [12]. Also, as mentioned, this work is oriented towards higher observational type theory, and further study of the observational equivalences of this theory (e.g. a characterization of the 𝖧𝗈𝗆𝖧𝗈𝗆\mathsf{Hom}sansserif_Hom-types of ΠΠ\Piroman_Π-types) is needed.

Finally, the present framework provides a setting for studying directed higher-inductive types—inductively-defined types with both term constructors and hom constructors. Some simple examples would be the directed interval (as is studied in [30, 25]) and a directed analogue of the circle type [28, Section 6.2]. These examples are modelled by the category model, and can therefore be soundly added to the present theory. Higher examples (such as directed versions of higher tori and spheres) would require more careful metatheoretic work to justify, but could perhaps lead to a number of interesting considerations.

References

  • [1] Benedikt Ahrens, Paige Randall North, and Niels van der Weide. Bicategorical type theory: semantics and syntax. Mathematical Structures in Computer Science, 33(10), 2023.
  • [2] Thorsten Altenkirch. Extensional equality in intensional type theory. In Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158), pages 412–420. IEEE, 1999.
  • [3] Thorsten Altenkirch, Simon Boulier, Ambrus Kaposi, Christian Sattler, and Filippo Sestini. Constructing a universe for the setoid model. In FoSSaCS, pages 1–21, 2021.
  • [4] Thorsten Altenkirch, Yorgo Chamoun, Ambrus Kaposi, and Michael Shulman. Internal parametricity, without an interval. Proceedings of the ACM on Programming Languages, 8(POPL):2340–2369, 2024.
  • [5] Thorsten Altenkirch, Ambrus Kaposi, and Michael Shulman. Towards higher observational type theory, 2022. 28th International Conference on Types for Proofs and Programs (TYPES 2022).
  • [6] John C. Baez and Michael Shulman. Lectures on n-categories and cohomology, 2007. URL: https://arxiv.org/abs/math/0608420, arXiv:math/0608420.
  • [7] Rafaël Bocquet. External univalence for second-order generalized algebraic theories. arXiv:2211.07487, 2022.
  • [8] John Cartmell. Generalised algebraic theories and contextual categories. Annals of pure and applied logic, 32:209–243, 1986.
  • [9] Simon Castellan, Pierre Clairambault, and Peter Dybjer. Categories with families: Unityped, simply typed, and dependently typed. Joachim Lambek: The Interplay of Mathematics, Logic, and Linguistics, pages 135–180, 2021.
  • [10] Cyril Cohen, Thierry Coquand, Simon Huber, and Anders Mörtberg. Cubical type theory: A constructive interpretation of the univalence axiom. In 21st International Conference on Types for Proofs and Programs, 2018.
  • [11] Peter Dybjer. Internal type theory. In International Workshop on Types for Proofs and Programs, pages 120–134. Springer, 1995.
  • [12] Daniel Gratzer, GA Kavvos, Andreas Nuyts, and Lars Birkedal. Multimodal dependent type theory. In Proceedings of the 35th Annual ACM/IEEE Symposium on Logic in Computer Science, pages 492–506, 2020.
  • [13] Martin Hofmann. A simple model for quotient types. In International Conference on Typed Lambda Calculi and Applications, pages 216–234. Springer, 1995.
  • [14] Martin Hofmann. Syntax and semantics of dependent types. In Extensional Constructs in Intensional Type Theory, pages 13–54. Springer, 1997.
  • [15] Martin Hofmann and Thomas Streicher. The groupoid interpretation of type theory. Twenty-five years of constructive type theory (Venice, 1995), 36:83–111, 1995.
  • [16] Ambrus Kaposi, András Kovács, and Thorsten Altenkirch. Constructing quotient inductive-inductive types. Proc. ACM Program. Lang., 3(POPL), jan 2019. doi:10.1145/3290315.
  • [17] Ambrus Kaposi and Szumi Xie. Second-order generalised algebraic theories: Signatures and first-order semantics. In 9th International Conference on Formal Structures for Computation and Deduction (FSCD 2024). Schloss Dagstuhl–Leibniz-Zentrum für Informatik, 2024.
  • [18] András Kovács. Type-Theoretic Signatures for Algebraic Theories and Inductive Types. PhD thesis, Eötvös Loránd University, 2022.
  • [19] Nikolai Kudasov, Emily Riehl, and Jonathan Weinberger. Formalizing the \infty-categorical yoneda lemma, 2023. arXiv:2309.08340.
  • [20] Daniel R Licata and Robert Harper. 2-dimensional directed dependent type theory. 2011.
  • [21] Per Martin-Löf. An intuitionistic theory of types: Predicative part. In H.E. Rose and J.C. Shepherdson, editors, Logic Colloquium ’73, volume 80 of Studies in Logic and the Foundations of Mathematics, pages 73–118. Elsevier, 1975.
  • [22] Per Martin-Löf. Constructive mathematics and computer programming. In L. Jonathan Cohen, Jerzy Łoś, Helmut Pfeiffer, and Klaus-Peter Podewski, editors, Logic, Methodology and Philosophy of Science VI, volume 104 of Studies in Logic and the Foundations of Mathematics, pages 153–175. Elsevier, 1982.
  • [23] Paige Randall North. Towards a directed homotopy type theory. Electronic Notes in Theoretical Computer Science, 347:223–239, 2019.
  • [24] Andreas Nuyts. Towards a directed homotopy type theory based on 4 kinds of variance. Mém. de mast. Katholieke Universiteit Leuven, 2015.
  • [25] Emily Riehl and Michael Shulman. A type theory for synthetic \infty-categories. arXiv preprint arXiv:1705.07442, 2017.
  • [26] Taichi Uemura. Abstract and concrete type theories. PhD thesis, University of Amsterdam, 2021.
  • [27] Taichi Uemura. A general framework for the semantics of type theory. Mathematical Structures in Computer Science, 33(3), mar 2023. URL: http://dx.doi.org/10.1017/S0960129523000208, doi:10.1017/s0960129523000208.
  • [28] The Univalent Foundations Program. Homotopy Type Theory: Univalent Foundations of Mathematics. Institute for Advanced Study, 2013. URL: https://homotopytypetheory.org/book.
  • [29] Benno Van Den Berg and Richard Garner. Types are weak ω𝜔\omegaitalic_ω-groupoids. Proceedings of the london mathematical society, 102(2):370–394, 2011.
  • [30] Matthew Z. Weaver and Daniel R. Licata. A constructive model of directed univalence in bicubical sets. In Proceedings of the 35th Annual ACM/IEEE Symposium on Logic in Computer Science, LICS ’20, page 915–928, New York, NY, USA, 2020. Association for Computing Machinery. doi:10.1145/3373718.3394794.
  • [31] Jonathan Weinberger and Ulrik Buchholtz. Type-theoretic modalities for synthetic (,1)1(\infty,1)( ∞ , 1 )-categories, 2019. International Conference on Homotopy Type Theory (HoTT 2019).

Appendix A Additional Calculations

The definition of the ΠΠ\Piroman_Π-type former given in Fig. 5 is repeated in Fig. 13, plus the definitions for lambda abstraction and application.

These definitions rely on the following calculations.

  • A naturality calculation for the morphism part of lam t:

    t(γ1,x1)B(𝗂𝖽γ1,x1)(t(γ01,𝗂𝖽Aγ01a1))superscript𝑡subscript𝛾1subscript𝑥1𝐵subscript𝗂𝖽subscript𝛾1subscript𝑥1superscript𝑡subscript𝛾01subscript𝗂𝖽𝐴subscript𝛾01subscript𝑎1\displaystyle t^{\prime}(\gamma_{1},x_{1})\circ B(\mathsf{id}_{\gamma_{1}},x_{% 1})(t^{\prime}(\gamma_{01},\mathsf{id}_{A\;\gamma_{01}\;a_{1}}))italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ∘ italic_B ( sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id start_POSTSUBSCRIPT italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) ) (5)
    t(𝗂𝖽γ1γ01,(Aγ01x1)𝗂𝖽Aγ01a1)absentsuperscript𝑡subscript𝗂𝖽subscript𝛾1subscript𝛾01𝐴subscript𝛾01subscript𝑥1subscript𝗂𝖽𝐴subscript𝛾01subscript𝑎1\displaystyle\equiv t^{\prime}(\mathsf{id}_{\gamma_{1}}\circ\gamma_{01},(A\;% \gamma_{01}\;x_{1})\circ\mathsf{id}_{A\;\gamma_{01}\;a_{1}})≡ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT ∘ italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , ( italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ∘ sansserif_id start_POSTSUBSCRIPT italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_POSTSUBSCRIPT )
    t(γ01,Aγ01x1)absentsuperscript𝑡subscript𝛾01𝐴subscript𝛾01subscript𝑥1\displaystyle\equiv t^{\prime}(\gamma_{01},A\;\gamma_{01}\;x_{1})≡ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT )
    t(γ01𝗂𝖽γ0,(A𝗂𝖽γ0𝗂𝖽Aγ01a1)Aγ01x1)absentsuperscript𝑡subscript𝛾01subscript𝗂𝖽subscript𝛾0𝐴subscript𝗂𝖽subscript𝛾0subscript𝗂𝖽𝐴subscript𝛾01superscriptsubscript𝑎1𝐴subscript𝛾01subscript𝑥1\displaystyle\equiv t^{\prime}(\gamma_{01}\circ\mathsf{id}_{\gamma_{0}},(A\;% \mathsf{id}_{\gamma_{0}}\;\mathsf{id}_{A\;\gamma_{01}\;a_{1}^{\prime}})\circ A% \;\gamma_{01}\;x_{1})≡ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ∘ sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , ( italic_A sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT sansserif_id start_POSTSUBSCRIPT italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ) ∘ italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT )
    t(γ01,𝗂𝖽Aγ01a1)B(γ01,𝗂𝖽Aγ01a1)(t(𝗂𝖽γ0,Aγ01x1))absentsuperscript𝑡subscript𝛾01subscript𝗂𝖽𝐴subscript𝛾01superscriptsubscript𝑎1𝐵subscript𝛾01subscript𝗂𝖽𝐴subscript𝛾01superscriptsubscript𝑎1superscript𝑡subscript𝗂𝖽subscript𝛾0𝐴subscript𝛾01subscript𝑥1\displaystyle\equiv t^{\prime}(\gamma_{01},\mathsf{id}_{A\;\gamma_{01}\;a_{1}^% {\prime}})\circ B(\gamma_{01},\mathsf{id}_{A\;\gamma_{01}\;a_{1}^{\prime}})(t^% {\prime}(\mathsf{id}_{\gamma_{0}},A\;\gamma_{01}\;x_{1}))≡ italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id start_POSTSUBSCRIPT italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ) ∘ italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id start_POSTSUBSCRIPT italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_POSTSUBSCRIPT ) ( italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT ( sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_x start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) )

    The first and the last equations are the functoriality conditions of tsuperscript𝑡t^{\prime}italic_t start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT. The middle equations are the category laws for ΓΓ\Gammaroman_Γ, A(γ0)𝐴subscript𝛾0A(\gamma_{0})italic_A ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ), and A(γ1)𝐴subscript𝛾1A(\gamma_{1})italic_A ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ), as well as the functoriality of A𝐴Aitalic_A.

  • To see that the morphism part of app f is well-typed, observe that

    (fγ01):(Π(A,B)γ1)[Π(A,B)γ01(fγ0),f(γ1)],:𝑓subscript𝛾01Π𝐴𝐵subscript𝛾1Π𝐴𝐵subscript𝛾01𝑓subscript𝛾0𝑓subscript𝛾1\displaystyle(f\;\gamma_{01})\colon(\Pi(A,B)\;\gamma_{1})[\;\Pi(A,B)\;\gamma_{% 01}\;(f\;\gamma_{0}),\;f(\gamma_{1})\;],( italic_f italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) : ( roman_Π ( italic_A , italic_B ) italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) [ roman_Π ( italic_A , italic_B ) italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_f ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ] , (6)
    i.e.
    (fγ01):𝖳𝗋𝖺𝗇𝗌𝖿𝗈𝗋𝗆{γ=γ1}(B(γ01,𝗂𝖽)(fγ0),f(γ1)):𝑓subscript𝛾01𝖳𝗋𝖺𝗇𝗌𝖿𝗈𝗋𝗆𝛾subscript𝛾1𝐵subscript𝛾01𝗂𝖽𝑓subscript𝛾0𝑓subscript𝛾1\displaystyle(f\;\gamma_{01})\colon\mathsf{Transform}\;\{\gamma=\gamma_{1}\}\;% (B(\gamma_{01},\mathsf{id})\;(f\;\gamma_{0}),f(\gamma_{1}))( italic_f italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) : sansserif_Transform { italic_γ = italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT } ( italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_f ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) )
    and therefore,
    𝖼𝗈𝗆𝗉𝗈𝗇𝖾𝗇𝗍(fγ01)a1𝖼𝗈𝗆𝗉𝗈𝗇𝖾𝗇𝗍𝑓subscript𝛾01subscript𝑎1\displaystyle\mathsf{component}(f\;\gamma_{01})\;a_{1}sansserif_component ( italic_f italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT
    :B(γ1,a1)[B(γ01,𝗂𝖽)(fγ0(Aγ01a1)),fγ1a1];:absent𝐵subscript𝛾1subscript𝑎1𝐵subscript𝛾01𝗂𝖽𝑓subscript𝛾0𝐴subscript𝛾01subscript𝑎1𝑓subscript𝛾1subscript𝑎1\displaystyle\colon B(\gamma_{1},a_{1})[B(\gamma_{01},\mathsf{id})\;(f\;\gamma% _{0}\;(A\;\gamma_{01}\;a_{1})),f\;\gamma_{1}\;a_{1}];: italic_B ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) [ italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ) , italic_f italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ] ;

    and also that

    a01:(Aγ0)[a0,Aγ01a1],:subscript𝑎01𝐴subscript𝛾0subscript𝑎0𝐴subscript𝛾01subscript𝑎1\displaystyle a_{01}\colon(A\;\gamma_{0})[a_{0},A\;\gamma_{01}\;a_{1}],italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT : ( italic_A italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) [ italic_a start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ] , (7)
    and thus, since (fγ0):𝖳𝗆(A(γ0),Bγ0),:and thus, since 𝑓subscript𝛾0𝖳𝗆𝐴subscript𝛾0subscript𝐵subscript𝛾0\displaystyle\text{and thus, since }(f\;\gamma_{0})\colon\mathsf{Tm}(A(\gamma_% {0}),B_{\gamma_{0}}),and thus, since ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) : sansserif_Tm ( italic_A ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_B start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT ) ,
    fγ0a01𝑓subscript𝛾0subscript𝑎01\displaystyle f\;\gamma_{0}\;a_{01}italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT
    :B(γ0,Aγ01a1)[B(𝗂𝖽γ0,a01)(fγ0a0),fγ0(Aγ01a1)]:absent𝐵subscript𝛾0𝐴subscript𝛾01subscript𝑎1𝐵subscript𝗂𝖽subscript𝛾0subscript𝑎01𝑓subscript𝛾0subscript𝑎0𝑓subscript𝛾0𝐴subscript𝛾01subscript𝑎1\displaystyle\colon B(\gamma_{0},A\;\gamma_{01}\;a_{1})[B(\mathsf{id}_{\gamma_% {0}},a_{01})\;(f\;\gamma_{0}\;a_{0}),f\;\gamma_{0}\;(A\;\gamma_{01}\;a_{1})]: italic_B ( italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT , italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) [ italic_B ( sansserif_id start_POSTSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_POSTSUBSCRIPT , italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ]
    and therefore
    B(γ01,𝗂𝖽)(fγ0a01)𝐵subscript𝛾01𝗂𝖽𝑓subscript𝛾0subscript𝑎01\displaystyle B(\gamma_{01},\mathsf{id})\;(f\;\gamma_{0}\;a_{01})italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT )
    :B(γ1,a1)[B(γ01,a01)(fγ0a0),B(γ01,𝗂𝖽)(fγ0(Aγ01a1))].:absent𝐵subscript𝛾1subscript𝑎1𝐵subscript𝛾01subscript𝑎01𝑓subscript𝛾0subscript𝑎0𝐵subscript𝛾01𝗂𝖽𝑓subscript𝛾0𝐴subscript𝛾01subscript𝑎1\displaystyle\colon B(\gamma_{1},a_{1})[B(\gamma_{01},a_{01})\;(f\;\gamma_{0}% \;a_{0}),B(\gamma_{01},\mathsf{id})\;(f\;\gamma_{0}\;(A\;\gamma_{01}\;a_{1}))].: italic_B ( italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT , italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) [ italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ) , italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT ( italic_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT ) ) ] .

    and thus we can conclude that 𝖼𝗈𝗆𝗉𝗈𝗇𝖾𝗇𝗍(fγ01)a1𝖼𝗈𝗆𝗉𝗈𝗇𝖾𝗇𝗍𝑓subscript𝛾01subscript𝑎1\mathsf{component}(f\;\gamma_{01})\;a_{1}sansserif_component ( italic_f italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ) italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT can be composed with B(γ01,𝗂𝖽)(fγ0a01)𝐵subscript𝛾01𝗂𝖽𝑓subscript𝛾0subscript𝑎01B(\gamma_{01},\mathsf{id})\;(f\;\gamma_{0}\;a_{01})italic_B ( italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT , sansserif_id ) ( italic_f italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT ), giving a term of the appropriate type.

Π : (A : Ty Γ⁻) → Ty(Γ ▹⁻ A) → Ty Γ
|Π(A,B) γ| = Tm(A(γ), Bγ)
where
Bγ : Ty(A γ)
Bγ a = B(γ,a)
Bγ (x : (A γ)[ a , a ]) = B(idγ,x)
record (Π(A,B) γ)[____\_\!\__ _,____\_\!\__ _] : (θ θ : Tm(A(γ), Bγ)) → Set where
component : (a : |A γ|) → (B(γ,a))\:[ θ a , θ a ]
naturality : (x : (A γ)\:[ a , a ]) → (θ x) ∘ B(γ,x)(component a) ≡ (component a’) ∘ (θ x)
Π(A,B) γ₀₁ : Tm(A(γ₀), Bγ0subscript𝛾0{}_{\gamma_{0}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 0 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT) → Tm(A(γ₁), Bγ1subscript𝛾1{}_{\gamma_{1}}start_FLOATSUBSCRIPT italic_γ start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT)
(Π(A,B) γ₀₁ θ₀) (a₁ : |A γ₁|) = B(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01subscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT) (θ₀(A γ₀₁ a₁))
(Π(A,B) γ₀₁ θ₀) (x₁ : A γ₁\:[a₁ , a₁’]) = B(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01superscriptsubscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}^{\prime}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT start_POSTSUPERSCRIPT ′ end_POSTSUPERSCRIPT end_FLOATSUBSCRIPT) (θ₀(A γ₀₁ x₁))
lam : Tm(Γ ▹⁻ A, B) → Tm(Γ, Π(A,B))
lam t : (γ : |Γ|) → | (Π(A,B)) γ |
lam t γ : (a : |A γ|) → |B(γ,a)|
lam t γ a = t’(γ,a)
lam t γ : (x : (A γ)[ a , a ]) → B(γ,a’)[ B(idγ,x) (lam t γ a), lam t γ a ]
lam t γ x = t’(idγ,x)
lam t : (γ₀₁ : Γ[ γ₀ , γ₁ ]) → Transform {γ = γ₁} (Π(A,B) γ₀₁ (lam t γ₀), lam t γ₁)
component(lam t γ₀₁) : (a₁ : |A γ₁|)
→ B(γ₁,a₁)[ B(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01subscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT) (lam t γ₀ (A γ₀₁ a₁)) , lam t γ₁ a₁ ]
component(lam t γ₀₁) a₁ = t’(γ₀₁, id𝖠γ01a1𝖠subscript𝛾01subscript𝑎1{}_{\mathsf{A}\;\gamma_{01}\;a_{1}}start_FLOATSUBSCRIPT sansserif_A italic_γ start_POSTSUBSCRIPT 01 end_POSTSUBSCRIPT italic_a start_POSTSUBSCRIPT 1 end_POSTSUBSCRIPT end_FLOATSUBSCRIPT)
naturality(lam t γ₀₁) (x₁ : (A γ₁)[ a₁ , a₁ ]) = (Equation 5)
app : Tm(Γ, Π(A,B)) → Tm(Γ ▹⁻ A, B)
app f : (γ : |Γ|) → (a : |A γ|) → |B(γ,a)|
app f γ a = f γ a -- (f γ) : (a : |A γ|) → |Bγ a|
app f : (γ₀₁ : Γ[ γ₀ , γ₁ ]) → (a₀₁ : (Aγ₀)[ a₀ , A γ₀₁ a₁ ])
→ B(γ₁,a₁)[ B(γ₀₁,a₀₁) (app f γ₀ a₀), app f γ₁ a₁ ]
app f γ₀₁ a₀₁ = (component(f γ₀₁) a₁) ∘ B(γ₀₁, id) (f γ₀ a₀₁)
Figure 13: Complete semantics of ΠΠ\Piroman_Π-types in the category model