module A202401.FOR-Kit2-GAN where

open import A202401.FOR-Kit2 public
open import A202401.FOR-GAN public


----------------------------------------------------------------------------------------------------

module RenSubKit1-GAN ( : RenSubKit1Params) where
  open RenSubKit1Params 
  open RenSubKit1 

  module _ ( : FunExt) where
    ϖren : Ty  Presheaf ⟪⊒⟫ lzero
    ϖren A = record
               { ƒObj = _⊢ A
               ; ƒ    = ren
               ; idƒ  =  lidren
               ; _∘ƒ_ = λ ϱ′ ϱ   (compren ϱ′ ϱ)
               }

    ϖren§ : Ctx  Presheaf ⟪⊒⟫ lzero
    ϖren§ Δ = record
                { ƒObj = _⊢§ Δ
                ; ƒ    = ren§
                ; idƒ  =  lidren§
                ; _∘ƒ_ = λ ϱ′ ϱ   (compren§ ϱ′ ϱ)
                }

    ϖget§ : Ctx  Presheaf ⟪⊑⟫ lzero
    ϖget§ Γ = record
                { ƒObj = Γ ⊢§_
                ; ƒ    = get§
                ; idƒ  =  lidget§
                ; _∘ƒ_ = λ e e′   (compget§ e e′)
                }


----------------------------------------------------------------------------------------------------

module RenSubKit2-GAN ( : RenSubKit2Params) where
  open RenSubKit2Params 
  open RenSubKit2 

  -- TODO: more GAN


----------------------------------------------------------------------------------------------------

module RenSubKit3-GAN ( : RenSubKit3Params) where
  open RenSubKit3Params 
  open RenSubKit3 


----------------------------------------------------------------------------------------------------

module RenSubKit4-GAN ( : RenSubKit4Params) where
  open RenSubKit4Params 
  open RenSubKit4 

  ⟪§⊣⟫ : Category lzero lzero
  ⟪§⊣⟫ = record
            { Obj  = Ctx
            ; _▻_  = flip _⊢§_
            ; id   = id§
            ; _∘_  = sub§
            ; lid▻ = lidsub§
            ; rid▻ = ridsub§
            ; ass▻ = asssub§
            ; ◅ssa = λ τ σ σ′  asssub§ σ′ σ τ ⁻¹
            }

  ⟪⊢§⟫ : Category lzero lzero
  ⟪⊢§⟫ = ⟪§⊣⟫ ᵒᵖ

  module _ ( : FunExt) where
    ⟪sub⟫ : Ty  Presheaf ⟪⊢§⟫ lzero
    ⟪sub⟫ A = record
                { ƒObj = _⊢ A
                ; ƒ    = sub
                ; idƒ  =  lidsub
                ; _∘ƒ_ = λ σ′ σ   (compsub σ′ σ)
                }


----------------------------------------------------------------------------------------------------