open import NomPa.Record
open import NomPa.Record.LogicalRelation
import NomPa.Examples.LC.DataTypes
open import Level as L
open import Data.Empty using ()
module NomPa.Examples.LC.DataTypes.Logical {dataKit : DataKit}
                                           (⟦dataKit⟧ : ⟦DataKit⟧ L.zero dataKit dataKit) where

open NomPa.Examples.LC.DataTypes dataKit 
open DataKit dataKit
open ⟦DataKit⟧ ⟦dataKit⟧

data ⟦Tm⟧ {α₁ α₂} (αᵣ : ⟦World⟧ α₁ α₂) : Tm α₁  Tm α₂  Set where
  ⟦V⟧    :  {x₁ x₂} (xᵣ : ⟦Name⟧ αᵣ x₁ x₂)  ⟦Tm⟧ αᵣ (V x₁) (V x₂)
  _⟦·⟧_  :  {t₁ t₂ u₁ u₂} (tᵣ : ⟦Tm⟧ αᵣ t₁ t₂)
             (uᵣ : ⟦Tm⟧ αᵣ u₁ u₂)  ⟦Tm⟧ αᵣ (t₁ · u₁) (t₂ · u₂)
  ⟦ƛ⟧    :  {b₁ b₂ t₁ t₂}
             (bᵣ : ⟦Binder⟧ b₁ b₂)
             (tᵣ : ⟦Tm⟧ (bᵣ ⟦◅⟧ αᵣ) t₁ t₂)
            ⟦Tm⟧ αᵣ (ƛ b₁ t₁) (ƛ b₂ t₂)
  ⟦Let⟧  :  {b₁ b₂ t₁ t₂ u₁ u₂}
             (bᵣ : ⟦Binder⟧ b₁ b₂)
             (tᵣ : ⟦Tm⟧ αᵣ t₁ t₂)
             (uᵣ : ⟦Tm⟧ (bᵣ ⟦◅⟧ αᵣ) u₁ u₂)
            ⟦Tm⟧ αᵣ (Let b₁ t₁ u₁) (Let b₂ t₂ u₂)