Combinators of enriched directed trees

module trees.combinator-enriched-directed-trees where
Imports
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.functions
open import foundation.homotopies
open import foundation.identity-types
open import foundation.maybe
open import foundation.universe-levels

open import graph-theory.directed-graphs

open import trees.combinator-directed-trees
open import trees.directed-trees
open import trees.enriched-directed-trees
open import trees.equivalences-directed-trees
open import trees.equivalences-enriched-directed-trees
open import trees.fibers-enriched-directed-trees
open import trees.morphisms-directed-trees

Idea

The combinator operation on enriched directed trees combines, for any element a : A, a family of enriched directed trees T : B(a) → Enriched-Directed-Tree A B indexed by B a into a single tree enriched directed tree with a new root.

Definition

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A}
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  where

  directed-tree-combinator-Enriched-Directed-Tree :
    Directed-Tree (l2  l3) (l2  l3  l4)
  directed-tree-combinator-Enriched-Directed-Tree =
    combinator-Directed-Tree (directed-tree-Enriched-Directed-Tree A B  T)

  node-combinator-Enriched-Directed-Tree : UU (l2  l3)
  node-combinator-Enriched-Directed-Tree =
    node-combinator-Directed-Tree (directed-tree-Enriched-Directed-Tree A B  T)

  node-inclusion-combinator-Enriched-Directed-Tree :
    (b : B a)  node-Enriched-Directed-Tree A B (T b) 
    node-combinator-Enriched-Directed-Tree
  node-inclusion-combinator-Enriched-Directed-Tree =
    node-inclusion-combinator-Directed-Tree

  root-combinator-Enriched-Directed-Tree :
    node-combinator-Enriched-Directed-Tree
  root-combinator-Enriched-Directed-Tree = root-combinator-Directed-Tree

  edge-combinator-Enriched-Directed-Tree :
    (x y : node-combinator-Enriched-Directed-Tree)  UU (l2  l3  l4)
  edge-combinator-Enriched-Directed-Tree =
    edge-combinator-Directed-Tree (directed-tree-Enriched-Directed-Tree A B  T)

  graph-combinator-Enriched-Directed-Tree :
    Directed-Graph (l2  l3) (l2  l3  l4)
  graph-combinator-Enriched-Directed-Tree =
    graph-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  directed-tree-inclusion-combinator-Enriched-Directed-Tree :
    (b : B a) 
    hom-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B (T b))
      ( directed-tree-combinator-Enriched-Directed-Tree)
  directed-tree-inclusion-combinator-Enriched-Directed-Tree =
    inclusion-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  walk-combinator-Enriched-Directed-Tree :
    (x y : node-combinator-Enriched-Directed-Tree)  UU (l2  l3  l4)
  walk-combinator-Enriched-Directed-Tree =
    walk-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  walk-inclusion-combinator-Enriched-Directed-Tree :
    (b : B a) (x y : node-Enriched-Directed-Tree A B (T b)) 
    walk-Enriched-Directed-Tree A B (T b) x y 
    walk-combinator-Enriched-Directed-Tree
      ( node-inclusion-combinator-Enriched-Directed-Tree b x)
      ( node-inclusion-combinator-Enriched-Directed-Tree b y)
  walk-inclusion-combinator-Enriched-Directed-Tree =
    walk-inclusion-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  walk-to-root-combinator-Enriched-Directed-Tree :
    (x : node-combinator-Enriched-Directed-Tree) 
    walk-combinator-Enriched-Directed-Tree x
      root-combinator-Enriched-Directed-Tree
  walk-to-root-combinator-Enriched-Directed-Tree =
    walk-to-root-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-root-combinator-Enriched-Directed-Tree :
    node-combinator-Enriched-Directed-Tree  UU (l2  l3)
  is-root-combinator-Enriched-Directed-Tree =
    is-root-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  unique-direct-successor-combinator-Enriched-Directed-Tree :
    unique-direct-successor-Directed-Graph
      ( graph-combinator-Enriched-Directed-Tree)
      ( root-combinator-Enriched-Directed-Tree)
  unique-direct-successor-combinator-Enriched-Directed-Tree =
    unique-direct-successor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-tree-combinator-Enriched-Directed-Tree :
    is-tree-Directed-Graph graph-combinator-Enriched-Directed-Tree
  is-tree-combinator-Enriched-Directed-Tree =
    is-tree-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  base-combinator-Enriched-Directed-Tree : UU (l2  l3  l4)
  base-combinator-Enriched-Directed-Tree =
    base-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-proper-node-combinator-Enriched-Directed-Tree :
    node-combinator-Enriched-Directed-Tree  UU (l2  l3)
  is-proper-node-combinator-Enriched-Directed-Tree =
    is-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  proper-node-combinator-Enriched-Directed-Tree : UU (l2  l3)
  proper-node-combinator-Enriched-Directed-Tree =
    proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-proper-node-inclusion-combinator-Enriched-Directed-Tree :
    {b : B a} {x : node-Enriched-Directed-Tree A B (T b)} 
    is-proper-node-combinator-Enriched-Directed-Tree
      ( node-inclusion-combinator-Enriched-Directed-Tree b x)
  is-proper-node-inclusion-combinator-Enriched-Directed-Tree =
    is-proper-node-inclusion-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  shape-combinator-Enriched-Directed-Tree :
    node-combinator-Enriched-Directed-Tree  A
  shape-combinator-Enriched-Directed-Tree root-combinator-Directed-Tree = a
  shape-combinator-Enriched-Directed-Tree
    ( node-inclusion-combinator-Directed-Tree b x) =
    shape-Enriched-Directed-Tree A B (T b) x

  map-root-enrichment-combinator-Enriched-Directed-Tree :
    B a 
    Σ ( node-combinator-Enriched-Directed-Tree)
      ( λ y 
        edge-combinator-Enriched-Directed-Tree y root-combinator-Directed-Tree)
  pr1 (map-root-enrichment-combinator-Enriched-Directed-Tree b) =
    node-inclusion-combinator-Directed-Tree b
      ( root-Enriched-Directed-Tree A B (T b))
  pr2 (map-root-enrichment-combinator-Enriched-Directed-Tree b) =
    edge-to-root-combinator-Directed-Tree b

  map-inv-root-enrichment-combinator-Enriched-Directed-Tree :
    Σ ( node-combinator-Enriched-Directed-Tree)
      ( λ y 
        edge-combinator-Enriched-Directed-Tree y
          root-combinator-Directed-Tree) 
    B a
  map-inv-root-enrichment-combinator-Enriched-Directed-Tree
    (._ , edge-to-root-combinator-Directed-Tree b) = b

  issec-map-inv-root-enrichment-combinator-Enriched-Directed-Tree :
    ( map-root-enrichment-combinator-Enriched-Directed-Tree 
      map-inv-root-enrichment-combinator-Enriched-Directed-Tree) ~ id
  issec-map-inv-root-enrichment-combinator-Enriched-Directed-Tree
    ( ._ , edge-to-root-combinator-Directed-Tree b) = refl

  isretr-map-inv-root-enrichment-combinator-Enriched-Directed-Tree :
    ( map-inv-root-enrichment-combinator-Enriched-Directed-Tree 
      map-root-enrichment-combinator-Enriched-Directed-Tree) ~ id
  isretr-map-inv-root-enrichment-combinator-Enriched-Directed-Tree b = refl

  is-equiv-map-root-enrichment-combinator-Enriched-Directed-Tree :
    is-equiv map-root-enrichment-combinator-Enriched-Directed-Tree
  is-equiv-map-root-enrichment-combinator-Enriched-Directed-Tree =
    is-equiv-has-inverse
      map-inv-root-enrichment-combinator-Enriched-Directed-Tree
      issec-map-inv-root-enrichment-combinator-Enriched-Directed-Tree
      isretr-map-inv-root-enrichment-combinator-Enriched-Directed-Tree

  root-enrichment-combinator-Enriched-Directed-Tree :
    B a 
    Σ ( node-combinator-Enriched-Directed-Tree)
      ( λ y 
        edge-combinator-Enriched-Directed-Tree y root-combinator-Directed-Tree)
  pr1 root-enrichment-combinator-Enriched-Directed-Tree =
    map-root-enrichment-combinator-Enriched-Directed-Tree
  pr2 root-enrichment-combinator-Enriched-Directed-Tree =
    is-equiv-map-root-enrichment-combinator-Enriched-Directed-Tree

  enrichment-combinator-Enriched-Directed-Tree :
    (x : node-combinator-Enriched-Directed-Tree) 
    B (shape-combinator-Enriched-Directed-Tree x) 
    Σ ( node-combinator-Enriched-Directed-Tree)
      ( λ y  edge-combinator-Enriched-Directed-Tree y x)
  enrichment-combinator-Enriched-Directed-Tree root-combinator-Directed-Tree =
    root-enrichment-combinator-Enriched-Directed-Tree
  enrichment-combinator-Enriched-Directed-Tree
    ( node-inclusion-combinator-Directed-Tree b x) =
    ( compute-direct-predecessor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T) b x) ∘e
    ( enrichment-Enriched-Directed-Tree A B (T b) x)

  combinator-Enriched-Directed-Tree :
    Enriched-Directed-Tree (l2  l3) (l2  l3  l4) A B
  pr1 combinator-Enriched-Directed-Tree =
    directed-tree-combinator-Enriched-Directed-Tree
  pr1 (pr2 combinator-Enriched-Directed-Tree) =
    shape-combinator-Enriched-Directed-Tree
  pr2 (pr2 combinator-Enriched-Directed-Tree) =
    enrichment-combinator-Enriched-Directed-Tree

Properties

The type of direct-predecessor of x : T b is equivalent to the type of direct-predecessor of the inclusion of x in combinator T

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A} (b : B a)
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  (x : node-Enriched-Directed-Tree A B (T b))
  where

  direct-predecessor-combinator-Enriched-Directed-Tree : UU (l2  l3  l4)
  direct-predecessor-combinator-Enriched-Directed-Tree =
    direct-predecessor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)
      ( b)
      ( x)

  map-compute-direct-predecessor-combinator-Enriched-Directed-Tree :
    direct-predecessor-Enriched-Directed-Tree A B (T b) x 
    direct-predecessor-combinator-Enriched-Directed-Tree
  map-compute-direct-predecessor-combinator-Enriched-Directed-Tree =
    map-compute-direct-predecessor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)
      ( b)
      ( x)

  is-equiv-map-compute-direct-predecessor-combinator-Enriched-Directed-Tree :
    is-equiv map-compute-direct-predecessor-combinator-Enriched-Directed-Tree
  is-equiv-map-compute-direct-predecessor-combinator-Enriched-Directed-Tree =
    is-equiv-map-compute-direct-predecessor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)
      ( b)
      ( x)

  compute-direct-predecessor-combinator-Enriched-Directed-Tree :
    direct-predecessor-Enriched-Directed-Tree A B (T b) x 
    direct-predecessor-combinator-Enriched-Directed-Tree
  compute-direct-predecessor-combinator-Enriched-Directed-Tree =
    compute-direct-predecessor-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)
      ( b)
      ( x)

If e is an edge from node-inclusion i x to node-inclusion j y, then i = j

eq-index-edge-combinator-Enriched-Directed-Tree :
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) (a : A)
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  {b : B a} (x : node-Enriched-Directed-Tree A B (T b))
  {c : B a} (y : node-Enriched-Directed-Tree A B (T c)) 
  edge-combinator-Enriched-Directed-Tree A B T
    ( node-inclusion-combinator-Directed-Tree b x)
    ( node-inclusion-combinator-Directed-Tree c y) 
  b  c
eq-index-edge-combinator-Enriched-Directed-Tree A B a T =
  eq-index-edge-combinator-Directed-Tree
    ( directed-tree-Enriched-Directed-Tree A B  T)

The base of the combinator tree of a family T of enriched directed tree indexed by B a is equivalent to B a

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A}
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  where

  node-base-index-combinator-Enriched-Directed-Tree :
    B a  node-combinator-Enriched-Directed-Tree A B T
  node-base-index-combinator-Enriched-Directed-Tree =
    node-base-index-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  edge-base-index-combinator-Enriched-Directed-Tree :
    (b : B a) 
    edge-combinator-Enriched-Directed-Tree A B T
      ( node-base-index-combinator-Enriched-Directed-Tree b)
      ( root-combinator-Enriched-Directed-Tree A B T)
  edge-base-index-combinator-Enriched-Directed-Tree =
    edge-base-index-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  base-index-combinator-Enriched-Directed-Tree :
    B a  base-combinator-Enriched-Directed-Tree A B T
  base-index-combinator-Enriched-Directed-Tree =
    base-index-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  index-base-combinator-Enriched-Directed-Tree :
    base-combinator-Enriched-Directed-Tree A B T  B a
  index-base-combinator-Enriched-Directed-Tree =
    index-base-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  issec-index-base-combinator-Enriched-Directed-Tree :
    ( base-index-combinator-Enriched-Directed-Tree 
      index-base-combinator-Enriched-Directed-Tree) ~ id
  issec-index-base-combinator-Enriched-Directed-Tree =
    issec-index-base-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  isretr-index-base-combinator-Enriched-Directed-Tree :
    ( index-base-combinator-Enriched-Directed-Tree 
      base-index-combinator-Enriched-Directed-Tree) ~ id
  isretr-index-base-combinator-Enriched-Directed-Tree =
    isretr-index-base-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-equiv-base-index-combinator-Enriched-Directed-Tree :
    is-equiv base-index-combinator-Enriched-Directed-Tree
  is-equiv-base-index-combinator-Enriched-Directed-Tree =
    is-equiv-base-index-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  equiv-base-index-combinator-Enriched-Directed-Tree :
    B a  base-combinator-Enriched-Directed-Tree A B T
  equiv-base-index-combinator-Enriched-Directed-Tree =
    equiv-base-index-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

The type of nodes of the combinator tree of T is equivalent to the dependent sum of the types of nodes of each T b, plus a root

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A}
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  where

  map-compute-node-combinator-Enriched-Directed-Tree :
    Maybe (Σ (B a) (node-Enriched-Directed-Tree A B  T)) 
    node-combinator-Enriched-Directed-Tree A B T
  map-compute-node-combinator-Enriched-Directed-Tree =
    map-compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  map-inv-compute-node-combinator-Enriched-Directed-Tree :
    node-combinator-Enriched-Directed-Tree A B T 
    Maybe (Σ (B a) (node-Enriched-Directed-Tree A B  T))
  map-inv-compute-node-combinator-Enriched-Directed-Tree =
    map-inv-compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  issec-map-inv-compute-node-combinator-Enriched-Directed-Tree :
    ( map-compute-node-combinator-Enriched-Directed-Tree 
      map-inv-compute-node-combinator-Enriched-Directed-Tree) ~ id
  issec-map-inv-compute-node-combinator-Enriched-Directed-Tree =
    issec-map-inv-compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  isretr-map-inv-compute-node-combinator-Enriched-Directed-Tree :
    ( map-inv-compute-node-combinator-Enriched-Directed-Tree 
      map-compute-node-combinator-Enriched-Directed-Tree) ~ id
  isretr-map-inv-compute-node-combinator-Enriched-Directed-Tree =
    isretr-map-inv-compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-equiv-map-compute-node-combinator-Enriched-Directed-Tree :
    is-equiv map-compute-node-combinator-Enriched-Directed-Tree
  is-equiv-map-compute-node-combinator-Enriched-Directed-Tree =
    is-equiv-map-compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  compute-node-combinator-Enriched-Directed-Tree :
    Maybe (Σ (B a) (node-Enriched-Directed-Tree A B  T)) 
    node-combinator-Enriched-Directed-Tree A B T
  compute-node-combinator-Enriched-Directed-Tree =
    compute-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

The type of proper nodes of the combinator tree of T is equivalent to the dependent sum of the types of nodes of each T b

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A}
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  where

  map-compute-proper-node-combinator-Enriched-Directed-Tree :
    Σ (B a) (node-Enriched-Directed-Tree A B  T) 
    proper-node-combinator-Enriched-Directed-Tree A B T
  map-compute-proper-node-combinator-Enriched-Directed-Tree =
    map-compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  map-inv-compute-proper-node-combinator-Enriched-Directed-Tree :
    proper-node-combinator-Enriched-Directed-Tree A B T 
    Σ (B a) (node-Enriched-Directed-Tree A B  T)
  map-inv-compute-proper-node-combinator-Enriched-Directed-Tree =
    map-inv-compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  issec-map-inv-compute-proper-node-combinator-Enriched-Directed-Tree :
    ( map-compute-proper-node-combinator-Enriched-Directed-Tree 
      map-inv-compute-proper-node-combinator-Enriched-Directed-Tree) ~ id
  issec-map-inv-compute-proper-node-combinator-Enriched-Directed-Tree =
    issec-map-inv-compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  isretr-map-inv-compute-proper-node-combinator-Enriched-Directed-Tree :
    ( map-inv-compute-proper-node-combinator-Enriched-Directed-Tree 
      map-compute-proper-node-combinator-Enriched-Directed-Tree) ~ id
  isretr-map-inv-compute-proper-node-combinator-Enriched-Directed-Tree =
    isretr-map-inv-compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  is-equiv-map-compute-proper-node-combinator-Enriched-Directed-Tree :
    is-equiv map-compute-proper-node-combinator-Enriched-Directed-Tree
  is-equiv-map-compute-proper-node-combinator-Enriched-Directed-Tree =
    is-equiv-map-compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  compute-proper-node-combinator-Enriched-Directed-Tree :
    Σ (B a) (node-Enriched-Directed-Tree A B  T) 
    proper-node-combinator-Enriched-Directed-Tree A B T
  compute-proper-node-combinator-Enriched-Directed-Tree =
    compute-proper-node-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

The fibers at a base element b : B a of the comibinator of a family T of trees is equivalent to T b

module _
  {l1 l2 l3 l4 : Level} (A : UU l1) (B : A  UU l2) {a : A}
  (T : B a  Enriched-Directed-Tree l3 l4 A B)
  where

  node-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    node-Enriched-Directed-Tree A B (T b) 
    node-fiber-Enriched-Directed-Tree A B
      ( combinator-Enriched-Directed-Tree A B T)
      ( node-base-index-combinator-Enriched-Directed-Tree A B T b)
  node-compute-fiber-combinator-Enriched-Directed-Tree =
    node-fiber-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  edge-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) (x y : node-Enriched-Directed-Tree A B (T b)) 
    edge-Enriched-Directed-Tree A B (T b) x y 
    edge-fiber-Enriched-Directed-Tree A B
      ( combinator-Enriched-Directed-Tree A B T)
      ( node-base-index-combinator-Enriched-Directed-Tree A B T b)
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b x)
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b y)
  edge-compute-fiber-combinator-Enriched-Directed-Tree =
    edge-fiber-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    hom-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B (T b))
      ( directed-tree-fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b))
  directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree =
    hom-fiber-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  direct-predecessor-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) (x : node-Enriched-Directed-Tree A B (T b)) 
    direct-predecessor-Enriched-Directed-Tree A B (T b) x 
    direct-predecessor-fiber-Enriched-Directed-Tree A B
      ( combinator-Enriched-Directed-Tree A B T)
      ( node-base-index-combinator-Enriched-Directed-Tree A B T b)
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b x)
  direct-predecessor-compute-fiber-combinator-Enriched-Directed-Tree b =
    direct-predecessor-hom-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B (T b))
      ( directed-tree-fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b))
      ( directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree b)

  is-equiv-directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    is-equiv-hom-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B (T b))
      ( directed-tree-fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b))
      ( directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree b)
  is-equiv-directed-tree-hom-compute-fiber-combinator-Enriched-Directed-Tree =
    is-equiv-hom-fiber-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  equiv-directed-tree-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    equiv-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B (T b))
      ( directed-tree-fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b))
  equiv-directed-tree-compute-fiber-combinator-Enriched-Directed-Tree =
    fiber-combinator-Directed-Tree
      ( directed-tree-Enriched-Directed-Tree A B  T)

  shape-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    ( shape-Enriched-Directed-Tree A B (T b)) ~
    ( ( shape-fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b)) 
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b))
  shape-compute-fiber-combinator-Enriched-Directed-Tree b x = refl

  enrichment-compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) (x : node-Enriched-Directed-Tree A B (T b)) 
    ( ( direct-predecessor-compute-fiber-combinator-Enriched-Directed-Tree
        ( b)
        ( x)) 
      ( map-enrichment-Enriched-Directed-Tree A B (T b) x)) ~
    ( map-enrichment-fiber-base-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( b)
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b x))
  enrichment-compute-fiber-combinator-Enriched-Directed-Tree b x y =
    eq-map-enrichment-fiber-Enriched-Directed-Tree A B
      ( combinator-Enriched-Directed-Tree A B T)
      ( node-base-index-combinator-Enriched-Directed-Tree A B T b)
      ( node-compute-fiber-combinator-Enriched-Directed-Tree b x)
      ( y)
      ( pr2
        ( pr1
          ( direct-predecessor-compute-fiber-combinator-Enriched-Directed-Tree
            ( b)
            ( x)
            ( map-enrichment-Enriched-Directed-Tree A B (T b) x y))))
      ( pr2
        ( pr2
          ( direct-predecessor-compute-fiber-combinator-Enriched-Directed-Tree
            ( b)
            ( x)
            ( map-enrichment-Enriched-Directed-Tree A B (T b) x y))))

  compute-fiber-combinator-Enriched-Directed-Tree :
    (b : B a) 
    equiv-Enriched-Directed-Tree A B
      ( T b)
      ( fiber-Enriched-Directed-Tree A B
        ( combinator-Enriched-Directed-Tree A B T)
        ( node-base-index-combinator-Enriched-Directed-Tree A B T b))
  pr1 (compute-fiber-combinator-Enriched-Directed-Tree b) =
    equiv-directed-tree-compute-fiber-combinator-Enriched-Directed-Tree b
  pr1 (pr2 (compute-fiber-combinator-Enriched-Directed-Tree b)) =
    shape-compute-fiber-combinator-Enriched-Directed-Tree b
  pr2 (pr2 (compute-fiber-combinator-Enriched-Directed-Tree b)) =
    enrichment-compute-fiber-combinator-Enriched-Directed-Tree b