module Intro
  (C : Set1)
  (HomC : C -> C -> Set)
  (idC : (c : C) -> HomC c c)
  (_∘C_ : {a b c : C} -> HomC b c -> HomC a b -> HomC a c)
  where

import Prelude
open Prelude C HomC idC _∘C_

import posIR
open posIR C HomC idC _∘C_

mutual

  {-# NO_POSITIVITY_CHECK #-}
  data U (c : IR+) : Set where
    intro : index (⟦ c ⟧IR+ (U c , T)) -> U c

  {-# TERMINATING #-}
  T : {c : IR+} -> U c -> C
  T {c} (intro x) = fam (⟦ c ⟧IR+ (U c , T)) x

introMorphism : {c : IR+} -> HomFamC (⟦ c ⟧IR+ (U c , T)) (U c , T)
introMorphism = intro , (λ x → idC _)
