import Syntax.Simple.Signature as S

module Syntax.Typed.Raw.Ordering.Functor (SD : S.SigD) where

open import Prelude

open import Syntax.Simple            SD
open import Syntax.Typed.Signature SD
import      Syntax.Typed.Raw.Functor SD as R

Fam : (ℓ′ : Level)  (X : R.Fam )  Set (  lsuc ℓ′)
Fam ℓ′ X = {n : }  X n  X n  Set ℓ′

Fam₀ : (X : R.Fam )  Set (  lsuc 0ℓ)
Fam₀ X = Fam 0ℓ X

private variable
  Ξ : 

⟦_⟧ᵃˢ : (Ds : ArgsD Ξ) (X : R.Fam ) (Y : Fam ℓ′ X)  Fam ℓ′ (R.⟦ Ds ⟧ᵃˢ X)
 []     ⟧ᵃˢ _ _ _        _          = 
 _  Ds ⟧ᵃˢ X Y (x , xs) (x' , xs') = Y x x' ×  Ds ⟧ᵃˢ X Y xs xs'

⟦_,_⟧ᶜ : (D D′ : OpD) (X : R.Fam ) (Y : Fam ℓ′ X)
        D  D′  {n : }  R.⟦ D ⟧ᶜ X n  R.⟦ D′ ⟧ᶜ X n  Set ℓ′
 ι _ Ds , ._ ⟧ᶜ X Y refl xs xs' =  Ds ⟧ᵃˢ X Y xs xs'

⟦_⟧ : (D : SigD) (X : R.Fam ) (Y : Fam ℓ′ X)  Fam ℓ′ (R.⟦ D  X)
 D  X Y (i , xs) (i' , xs') =
  Σ[ ieq  i  i' ]  D .ar i , D .ar i' ⟧ᶜ X Y (cong (ar D) ieq) xs xs'