summaryrefslogtreecommitdiff
path: root/src/CBPV/Family.agda
blob: 94fee5cc4d82f7e8172e90f923435c5fe72e26c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{-# OPTIONS --safe #-}

module CBPV.Family where

open import Data.List using (List; _++_)
open import Data.List.Membership.Propositional using (_∈_)
open import Data.Product using (_,_) renaming (_×_ to _×′_)
open import Level using (Level; suc; _⊔_)

open import CBPV.Type

private
  variable
    ℓ ℓ′ : Level

Context : Set
Context = List ValType

ValFamily : (ℓ : Level) → Set (suc ℓ)
ValFamily ℓ = Context → ValType → Set ℓ

CompFamily : (ℓ : Level) → Set (suc ℓ)
CompFamily ℓ = Context → CompType → Set ℓ

δᵛ : Context → ValFamily ℓ → ValFamily ℓ
δᵛ Δ V Γ A = V (Γ ++ Δ) A

δᶜ : Context → CompFamily ℓ → CompFamily ℓ
δᶜ Δ C Γ B = C (Γ ++ Δ) B

infix 0 _⇒ᵛ_ _⇒ᶜ_ _~[_]↝ᵛ_ _~[_]↝ᶜ_

_⇒ᵛ_ : ValFamily ℓ → ValFamily ℓ′ → Set (ℓ ⊔ ℓ′)
V ⇒ᵛ V′ = ∀ {Γ A} → V Γ A → V′ Γ A

_⇒ᶜ_ : CompFamily ℓ → CompFamily ℓ′ → Set (ℓ ⊔ ℓ′)
C ⇒ᶜ C′ = ∀ {Γ B} → C Γ B → C′ Γ B

_~[_]↝ᵛ_ : List ValType → ValFamily ℓ → Context → Set ℓ
As ~[ V ]↝ᵛ Γ = ∀ {A} → A ∈ As → V Γ A

_~[_]↝ᶜ_ : List CompType → CompFamily ℓ → Context → Set ℓ
Bs ~[ C ]↝ᶜ Γ = ∀ {B} → B ∈ Bs → C Γ B

I : ValFamily _
I Γ A = A ∈ Γ

⌞_⌟ᵛ : List (Context ×′ ValType) → ValFamily _
⌞ Vs ⌟ᵛ Γ A = (Γ , A) ∈ Vs

⌞_⌟ᶜ : List (Context ×′ CompType) → CompFamily _
⌞ Cs ⌟ᶜ Γ B = (Γ , B) ∈ Cs