54 lines
1.1 KiB
Coq
54 lines
1.1 KiB
Coq
|
From Coq Require Import Lists.List.
|
|||
|
Require Import Atom.
|
|||
|
Require Import Environment.
|
|||
|
Require Import Metatheory.
|
|||
|
Require Import debruijn.
|
|||
|
Require Import subtype.
|
|||
|
Require Import env.
|
|||
|
Require Import morph.
|
|||
|
Require Import subst_lemmas.
|
|||
|
Require Import typing.
|
|||
|
|
|||
|
|
|||
|
Lemma typing_inv_tabs : forall Γ t τ,
|
|||
|
(Γ |- [{ Λ t }] \is [< ∀ τ >]) ->
|
|||
|
forall L x, x `notin` L ->
|
|||
|
(Γ |- (expr_open_type (ty_fvar x) t) \is τ)
|
|||
|
.
|
|||
|
Proof.
|
|||
|
Admitted.
|
|||
|
|
|||
|
|
|||
|
Lemma typing_inv_abs : forall Γ σ t τ,
|
|||
|
(Γ |- [{ λ σ ↦ t }] \is [< σ -> τ >]) ->
|
|||
|
forall L x, x `notin` L ->
|
|||
|
((x,σ)::Γ |- (expr_open (ex_fvar x) t) \is τ)
|
|||
|
.
|
|||
|
Proof.
|
|||
|
Admitted.
|
|||
|
|
|||
|
|
|||
|
Lemma typing_inv_morph : forall Γ σ t τ,
|
|||
|
(Γ |- [{ λ σ ↦morph t }] \is [< σ ->morph τ >]) ->
|
|||
|
forall L x, x `notin` L ->
|
|||
|
((x,σ)::Γ |- (expr_open (ex_fvar x) t) \is τ)
|
|||
|
.
|
|||
|
Proof.
|
|||
|
intros.
|
|||
|
|
|||
|
inversion H.
|
|||
|
subst.
|
|||
|
|
|||
|
Admitted.
|
|||
|
|
|||
|
|
|||
|
Lemma typing_inv_let : forall Γ s σ t τ,
|
|||
|
(Γ |- s \is σ) ->
|
|||
|
(Γ |- [{ let s in t }] \is [< τ >]) ->
|
|||
|
forall L x, x `notin` L ->
|
|||
|
((x,σ)::Γ |- (expr_open (ex_fvar x) t) \is τ)
|
|||
|
.
|
|||
|
Proof.
|
|||
|
Admitted.
|
|||
|
|