module A201602.RemovedProps where
{-
-- --------------------------------------------------------------------------
--
-- Weakening
data _≲_ : ∀{m m′} → Cx m → Cx m′ → Set where
base : ∅ ≲ ∅
drop : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≲ Γ′
→ Γ ≲ (Γ′ , A)
keep : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≲ Γ′
→ (Γ , A) ≲ (Γ′ , A)
∅≲Γ : ∀{m} {Γ : Cx m} → ∅ ≲ Γ
∅≲Γ {Γ = ∅} = base
∅≲Γ {Γ = Γ , A} = drop ∅≲Γ
Γ≲Γ : ∀{m} {Γ : Cx m} → Γ ≲ Γ
Γ≲Γ {Γ = ∅} = base
Γ≲Γ {Γ = Γ , A} = keep Γ≲Γ
wk∈ : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≲ Γ′ → A ∈ Γ
→ A ∈ Γ′
wk∈ base ()
wk∈ (keep P) Z = Z
wk∈ (keep P) (S i) = S (wk∈ P i)
wk∈ (drop P) i = S (wk∈ P i)
pwk∈ : ∀{A m m′ k} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≲ Γ′ → A ∈[ k ] Γ
→ A ∈[ k ] Γ′
pwk∈ base ()
pwk∈ (drop P) Z = {!Z !}
pwk∈ (drop P) (S i) = {!!}
pwk∈ (keep P) i = {!!}
wk⊢ : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≲ Γ′ → Γ ⊢ A
→ Γ′ ⊢ A
wk⊢ P (M𝑣 d) = M𝑣 (pwk∈ P d)
wk⊢ P (M𝜆ⁿ {𝐭 = 𝐭} D) = M𝜆ⁿ {𝐭 = 𝐭} (wk⊢ (keep P) D)
wk⊢ P (M∘ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M∘ⁿ {𝐭 = 𝐭} {𝐬} (wk⊢ P Dₜ) (wk⊢ P Dₛ)
wk⊢ P (M𝑝ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M𝑝ⁿ {𝐭 = 𝐭} {𝐬} (wk⊢ P Dₜ) (wk⊢ P Dₛ)
wk⊢ P (M𝜋₀ⁿ {𝐭 = 𝐭} D) = M𝜋₀ⁿ {𝐭 = 𝐭} (wk⊢ P D)
wk⊢ P (M𝜋₁ⁿ {𝐭 = 𝐭} D) = M𝜋₁ⁿ {𝐭 = 𝐭} (wk⊢ P D)
wk⊢ P (M⇑ⁿ {𝐭 = 𝐭} D) = M⇑ⁿ {𝐭 = 𝐭} (wk⊢ P D)
wk⊢ P (M⇓ⁿ {𝐭 = 𝐭} D) = M⇓ⁿ {𝐭 = 𝐭} (wk⊢ P D)
-- --------------------------------------------------------------------------
--
-- Contraction
data _≳_ : ∀{m m′} → Cx m → Cx m′ → Set where
base : ∅ ≳ ∅
once : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≳ Γ′
→ (Γ , A) ≳ (Γ′ , A)
more : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≳ Γ′
→ (Γ , A , A) ≳ (Γ′ , A)
{-
cn∈ : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≳ Γ′ → A ∈ Γ
→ A ∈ Γ′
cn∈ base ()
cn∈ (once P) Z = Z
cn∈ (once P) (S i) = S (cn∈ P i)
cn∈ (more P) Z = Z
cn∈ (more P) (S i) = cn∈ (once P) i
postulate
pcn∈ : ∀{n A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≳ Γ′ → (i : ⟨ n , A ⟩ ∈ Γ)
→ Γ′ ⊢ 𝑣[ n ] (toℕ i) ∷ A
-}
cn⊢ : ∀{A m m′} {Γ : Cx m} {Γ′ : Cx m′}
→ Γ ≳ Γ′ → Γ ⊢ A
→ Γ′ ⊢ A
cn⊢ P (M𝑣 i) = {!!}
cn⊢ P (M𝜆ⁿ {𝐭 = 𝐭} D) = M𝜆ⁿ {𝐭 = 𝐭} (cn⊢ (once P) D)
cn⊢ P (M∘ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M∘ⁿ {𝐭 = 𝐭} {𝐬} (cn⊢ P Dₜ) (cn⊢ P Dₛ)
cn⊢ P (M𝑝ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M𝑝ⁿ {𝐭 = 𝐭} {𝐬} (cn⊢ P Dₜ) (cn⊢ P Dₛ)
cn⊢ P (M𝜋₀ⁿ {𝐭 = 𝐭} D) = M𝜋₀ⁿ {𝐭 = 𝐭} (cn⊢ P D)
cn⊢ P (M𝜋₁ⁿ {𝐭 = 𝐭} D) = M𝜋₁ⁿ {𝐭 = 𝐭} (cn⊢ P D)
cn⊢ P (M⇑ⁿ {𝐭 = 𝐭} D) = M⇑ⁿ {𝐭 = 𝐭} (cn⊢ P D)
cn⊢ P (M⇓ⁿ {𝐭 = 𝐭} D) = M⇓ⁿ {𝐭 = 𝐭} (cn⊢ P D)
-- --------------------------------------------------------------------------
--
-- Exchange
data _≈_ : ∀{m} → Cx m → Cx m → Set where
base : ∅ ≈ ∅
just : ∀{A m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′
→ (Γ , A) ≈ (Γ′ , A)
same : ∀{A B m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′
→ (Γ , A , B) ≈ (Γ′ , A , B)
diff : ∀{A B m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′
→ (Γ , B , A) ≈ (Γ′ , A , B)
{-
ex∈ : ∀{A m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′ → A ∈ Γ
→ A ∈ Γ′
ex∈ base ()
ex∈ (just P) Z = Z
ex∈ (just P) (S i) = S (ex∈ P i)
ex∈ (same P) Z = Z
ex∈ (same P) (S Z) = S Z
ex∈ (same P) (S (S i)) = S (S (ex∈ P i))
ex∈ (diff P) Z = S Z
ex∈ (diff P) (S Z) = Z
ex∈ (diff P) (S (S i)) = S (S (ex∈ P i))
postulate
pex∈ : ∀{n A m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′ → (i : ⟨ n , A ⟩ ∈ Γ)
→ Γ′ ⊢ 𝑣[ n ] (toℕ i) ∷ A
-}
ex⊢ : ∀{A m} {Γ Γ′ : Cx m}
→ Γ ≈ Γ′ → Γ ⊢ A
→ Γ′ ⊢ A
ex⊢ P (M𝑣 i) = {!!}
ex⊢ P (M𝜆ⁿ {𝐭 = 𝐭} D) = M𝜆ⁿ {𝐭 = 𝐭} (ex⊢ (just P) D)
ex⊢ P (M∘ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M∘ⁿ {𝐭 = 𝐭} {𝐬} (ex⊢ P Dₜ) (ex⊢ P Dₛ)
ex⊢ P (M𝑝ⁿ {𝐭 = 𝐭} {𝐬} Dₜ Dₛ) = M𝑝ⁿ {𝐭 = 𝐭} {𝐬} (ex⊢ P Dₜ) (ex⊢ P Dₛ)
ex⊢ P (M𝜋₀ⁿ {𝐭 = 𝐭} D) = M𝜋₀ⁿ {𝐭 = 𝐭} (ex⊢ P D)
ex⊢ P (M𝜋₁ⁿ {𝐭 = 𝐭} D) = M𝜋₁ⁿ {𝐭 = 𝐭} (ex⊢ P D)
ex⊢ P (M⇑ⁿ {𝐭 = 𝐭} D) = M⇑ⁿ {𝐭 = 𝐭} (ex⊢ P D)
ex⊢ P (M⇓ⁿ {𝐭 = 𝐭} D) = M⇓ⁿ {𝐭 = 𝐭} (ex⊢ P D)
-}