module A201602.Scratch-deduction where
{-
-- --------------------------------------------------------------------------
-- Deduction theorem
ded⊃ⁿ : ∀{A B n m} {𝐱 : Vars n} {𝐭 : Tms n} {Γ : Cx m}
→ Γ , 𝑣ⁿ 𝐱 ∶ A ⊢ *ⁿ 𝐭 ∶ B
→ Γ ⊢ 𝜆ⁿ 𝐱 · 𝐭 ∶ (A ⊃ B)
ded⊃ⁿ {𝐱 = 𝐱} {𝐭 = 𝐭} = M𝜆ⁿ {𝐱 = 𝐱} {𝐭 = 𝐭}
ded⊂⁰ : ∀{A B m} {Γ : Cx m}
→ Γ ⊢ A ⊃ B
→ Γ , A ⊢ B
ded⊂⁰ D = M∘⁰ (wk⊢ (drop Γ≲Γ) D) (M𝑣⁰ Z)
{-
foo¹ : ∀{A B x t m} {Γ : Cx m}
→ Γ ⊢ 𝜆 x · t ∶ (A ⊃ B)
→ Γ , 𝑣 x ∶ A ⊢ 𝜆 x · t ∶ (A ⊃ B)
foo¹ D = wk⊢ (drop Γ≲Γ) D
bar¹ : ∀{A x m} {Γ : Cx m}
→ Γ , 𝑣 x ∶ A ⊢ 𝑣 x ∶ A
bar¹ = M𝑣 Z
ded⊂¹ : ∀{A B x t m} {Γ : Cx m}
→ Γ ⊢ 𝜆 x · t ∶ (A ⊃ B)
→ Γ , 𝑣 x ∶ A ⊢ t ∶ B
ded⊂¹ D = M∘ (foo¹ D) bar¹
fooⁿ : ∀{A B n m} {𝐱 : Vars n} {𝐭 : Tms n} {Γ : Cx m}
→ Γ ⊢ 𝜆ⁿ 𝐱 · 𝐭 ∶ (A ⊃ B)
→ Γ , 𝑣ⁿ 𝐱 ∶ A ⊢ 𝜆ⁿ 𝐱 · 𝐭 ∶ (A ⊃ B)
fooⁿ {𝐭 = 𝐭} D = wk⊢ (drop Γ≲Γ) D
barⁿ : ∀{A n m} {𝐱 : Vars n} {Γ : Cx m}
→ Γ , 𝑣ⁿ 𝐱 ∶ A ⊢ 𝑣ⁿ 𝐱 ∶ A
barⁿ {𝐱 = 𝐱} = M𝑣ⁿ {𝐱 = 𝐱} Z
ded⊂ⁿ : ∀{A B n m} {𝐱 : Vars n} {𝐭 : Tms n} {Γ : Cx m}
→ Γ ⊢ 𝜆ⁿ 𝐱 · 𝐭 ∶ (A ⊃ B)
→ Γ , 𝑣ⁿ 𝐱 ∶ A ⊢ *ⁿ 𝐭 ∶ B
ded⊂ⁿ {𝐱 = 𝐱} {𝐭 = 𝐭} D = M∘ⁿ (fooⁿ {𝐱 = 𝐱} {𝐭 = 𝐭} D) (barⁿ {𝐱 = 𝐱}) -- XXX: Prove this!
-}
-}