# Noncoherent wild higher precategories

```agda
{-# OPTIONS --guardedness #-}

module wild-category-theory.noncoherent-wild-higher-precategories where
```

<details><summary>Imports</summary>

```agda
open import category-theory.precategories

open import foundation.action-on-identifications-binary-functions
open import foundation.cartesian-product-types
open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.sets
open import foundation.strictly-involutive-identity-types
open import foundation.universe-levels

open import structured-types.globular-types
open import structured-types.reflexive-globular-types
open import structured-types.transitive-globular-types
```

</details>

## Idea

It is an important open problem known as the _coherence problem_ to define a
fully coherent notion of $∞$-category in univalent type theory. The subject of
_wild category theory_ attempts to recover some of the benefits of $∞$-category
theory without tackling this problem. We introduce, as one of our basic building
blocks in this subject, the notion of a _noncoherent wild higher precategory_.

A _noncoherent wild higher precategory_ `𝒞` is a structure that attempts at
capturing the structure of a higher precategory to the $0$'th order. It consists
of in some sense all of the operations and none of the coherence of a higher
precategory. Thus, it is defined as a
[globular type](structured-types.globular-types.md) with families of
$n$-morphisms labeled as "identities"

```text
  id-hom : (x : 𝑛-Cell 𝒞) → (𝑛+1)-Cell 𝒞 x x
```

and a composition operation at every dimension

```text
  comp-hom :
    {x y z : 𝑛-Cell 𝒞} → (𝑛+1)-Cell 𝒞 y z → (𝑛+1)-Cell 𝒞 x y → (𝑛+1)-Cell 𝒞 x z.
```

Entirely concretely, we define a
{{#concept "noncoherent wild higher precategory" Agda=Noncoherent-Wild-Higher-Precategory}}
to be a [reflexive](structured-types.reflexive-globular-types.md) and
[transitive](structured-types.transitive-globular-types.md) globular type. We
call the 0-cells the _objects_, the 1-cells the _morphisms_ and the higher cells
the _$n$-morphisms_. The reflexivities are called the _identity morphisms_, and
the transitivity operations are branded as _composition of morphisms_.

## Definitions

### Noncoherent wild higher precategories

```agda
Noncoherent-Wild-Higher-Precategory : (l1 l2 : Level)  UU (lsuc l1  lsuc l2)
Noncoherent-Wild-Higher-Precategory l1 l2 =
  Σ ( UU l1)
    ( λ obj-Noncoherent-Wild-Higher-Precategory 
      Σ ( globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory)
        ( λ hom-globular-structure-Noncoherent-Wild-Higher-Precategory 
          ( is-reflexive-globular-structure
            ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)) ×
          ( is-transitive-globular-structure
            ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory))))

make-Noncoherent-Wild-Higher-Precategory :
  {l1 l2 : Level} 
  (obj-Noncoherent-Wild-Higher-Precategory : UU l1)
  (hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
    globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory) 
  ( is-reflexive-globular-structure
    hom-globular-structure-Noncoherent-Wild-Higher-Precategory) 
  ( is-transitive-globular-structure
    hom-globular-structure-Noncoherent-Wild-Higher-Precategory) 
  Noncoherent-Wild-Higher-Precategory l1 l2
make-Noncoherent-Wild-Higher-Precategory obj hom id comp =
  ( obj , hom , id , comp)

{-# INLINE make-Noncoherent-Wild-Higher-Precategory #-}

module _
  {l1 l2 : Level} (𝒞 : Noncoherent-Wild-Higher-Precategory l1 l2)
  where

  obj-Noncoherent-Wild-Higher-Precategory : UU l1
  obj-Noncoherent-Wild-Higher-Precategory = pr1 𝒞

  hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
    globular-structure l2 obj-Noncoherent-Wild-Higher-Precategory
  hom-globular-structure-Noncoherent-Wild-Higher-Precategory = pr1 (pr2 𝒞)

  id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
    is-reflexive-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
  id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory =
    pr1 (pr2 (pr2 𝒞))

  comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory :
    is-transitive-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
  comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory =
    pr2 (pr2 (pr2 𝒞))

  globular-type-Noncoherent-Wild-Higher-Precategory : Globular-Type l1 l2
  pr1 globular-type-Noncoherent-Wild-Higher-Precategory =
    obj-Noncoherent-Wild-Higher-Precategory
  pr2 globular-type-Noncoherent-Wild-Higher-Precategory =
    hom-globular-structure-Noncoherent-Wild-Higher-Precategory
```

We record some common projections for noncoherent wild higher precategories.

```agda
  hom-Noncoherent-Wild-Higher-Precategory :
    obj-Noncoherent-Wild-Higher-Precategory 
    obj-Noncoherent-Wild-Higher-Precategory 
    UU l2
  hom-Noncoherent-Wild-Higher-Precategory =
    1-cell-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  id-hom-Noncoherent-Wild-Higher-Precategory :
    {x : obj-Noncoherent-Wild-Higher-Precategory} 
    hom-Noncoherent-Wild-Higher-Precategory x x
  id-hom-Noncoherent-Wild-Higher-Precategory =
    refl-1-cell-is-reflexive-globular-structure
      ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  comp-hom-Noncoherent-Wild-Higher-Precategory :
    {x y z : obj-Noncoherent-Wild-Higher-Precategory} 
    hom-Noncoherent-Wild-Higher-Precategory y z 
    hom-Noncoherent-Wild-Higher-Precategory x y 
    hom-Noncoherent-Wild-Higher-Precategory x z
  comp-hom-Noncoherent-Wild-Higher-Precategory =
    comp-1-cell-is-transitive-globular-structure
      ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  hom-globular-type-Noncoherent-Wild-Higher-Precategory :
    (x y : obj-Noncoherent-Wild-Higher-Precategory) 
    Globular-Type l2 l2
  pr1 (hom-globular-type-Noncoherent-Wild-Higher-Precategory x y) =
    hom-Noncoherent-Wild-Higher-Precategory x y
  pr2 (hom-globular-type-Noncoherent-Wild-Higher-Precategory x y) =
    globular-structure-1-cell-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
      ( x)
      ( y)

  hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory :
    (x y : obj-Noncoherent-Wild-Higher-Precategory) 
    Noncoherent-Wild-Higher-Precategory l2 l2
  hom-noncoherent-wild-higher-precategory-Noncoherent-Wild-Higher-Precategory
    x y =
    make-Noncoherent-Wild-Higher-Precategory
      ( hom-Noncoherent-Wild-Higher-Precategory x y)
      ( globular-structure-1-cell-globular-structure
        ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
        ( x)
        ( y))
      ( is-reflexive-globular-structure-1-cell-is-reflexive-globular-structure
        ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
        ( x)
        ( y))
      ( is-transitive-globular-structure-1-cell-is-transitive-globular-structure
        ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
        ( x)
        ( y))
```

```agda
  2-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory} 
    hom-Noncoherent-Wild-Higher-Precategory x y 
    hom-Noncoherent-Wild-Higher-Precategory x y 
    UU l2
  2-hom-Noncoherent-Wild-Higher-Precategory =
    2-cell-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  id-2-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory}
    {f : hom-Noncoherent-Wild-Higher-Precategory x y} 
    2-hom-Noncoherent-Wild-Higher-Precategory f f
  id-2-hom-Noncoherent-Wild-Higher-Precategory =
    refl-2-cell-is-reflexive-globular-structure
      ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  comp-2-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory}
    {f g h : hom-Noncoherent-Wild-Higher-Precategory x y} 
    2-hom-Noncoherent-Wild-Higher-Precategory g h 
    2-hom-Noncoherent-Wild-Higher-Precategory f g 
    2-hom-Noncoherent-Wild-Higher-Precategory f h
  comp-2-hom-Noncoherent-Wild-Higher-Precategory =
    comp-2-cell-is-transitive-globular-structure
      ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
```

```agda
  3-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory}
    {f g : hom-Noncoherent-Wild-Higher-Precategory x y} 
    2-hom-Noncoherent-Wild-Higher-Precategory f g 
    2-hom-Noncoherent-Wild-Higher-Precategory f g 
    UU l2
  3-hom-Noncoherent-Wild-Higher-Precategory =
    3-cell-globular-structure
      ( hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  id-3-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory}
    {f g : hom-Noncoherent-Wild-Higher-Precategory x y}
    {H : 2-hom-Noncoherent-Wild-Higher-Precategory f g} 
    3-hom-Noncoherent-Wild-Higher-Precategory H H
  id-3-hom-Noncoherent-Wild-Higher-Precategory =
    refl-3-cell-is-reflexive-globular-structure
      ( id-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)

  comp-3-hom-Noncoherent-Wild-Higher-Precategory :
    {x y : obj-Noncoherent-Wild-Higher-Precategory}
    {f g : hom-Noncoherent-Wild-Higher-Precategory x y}
    {H K L : 2-hom-Noncoherent-Wild-Higher-Precategory f g} 
    3-hom-Noncoherent-Wild-Higher-Precategory K L 
    3-hom-Noncoherent-Wild-Higher-Precategory H K 
    3-hom-Noncoherent-Wild-Higher-Precategory H L
  comp-3-hom-Noncoherent-Wild-Higher-Precategory =
    comp-3-cell-is-transitive-globular-structure
      ( comp-hom-globular-structure-Noncoherent-Wild-Higher-Precategory)
```