{-# OPTIONS --without-K --exact-split --safe #-}

open import Fragment.Equational.Theory

module Fragment.Equational.FreeExtension.Base (Θ : Theory) where

open import Fragment.Equational.Model Θ
open import Fragment.Equational.Coproduct Θ

open import Level using (Level; Setω; _⊔_)
open import Data.Nat using ()

private
  variable
    a  : Level

Extension : Setω
Extension =  {a} {}  Model {a} {}    Model {a} {a  }

IsFreeExtension : Extension  Setω
IsFreeExtension _[_] =
   {a } (A : Model {a} {}) (n : )  IsCoproduct A (J n) (A [ n ])

record FreeExtension : Setω where
  field
    _[_]        : Extension
    _[_]-isFrex : IsFreeExtension _[_]