Simplified type-soundness proof, based on an idea by Maya Sankar last year

This commit is contained in:
Adam Chlipala 2021-03-27 17:15:22 -04:00
parent 5cdd4d1322
commit 008c45351a

View file

@ -186,17 +186,18 @@ Module Stlc.
Local Hint Resolve preservation0 : core. Local Hint Resolve preservation0 : core.
Lemma generalize_plug : forall e1 C e1', Lemma preservation' : forall C e1 e1',
plug C e1 e1' plug C e1 e1'
-> forall e2 e2', plug C e2 e2' -> forall e2 e2' t, plug C e2 e2'
-> (forall t, hasty $0 e1 t -> hasty $0 e2 t) -> step0 e1 e2
-> (forall t, hasty $0 e1' t -> hasty $0 e2' t). -> hasty $0 e1' t
-> hasty $0 e2' t.
Proof. Proof.
induct 1; t. induct 1; t.
Qed. Qed.
Local Hint Resolve generalize_plug : core. Local Hint Resolve preservation' : core.
Lemma preservation : forall e1 e2, Lemma preservation : forall e1 e2,
step e1 e2 step e1 e2
-> forall t, hasty $0 e1 t -> forall t, hasty $0 e1 t