Commit da65fbab authored by Adam Chlipala's avatar Adam Chlipala

Automated ccExp_correct

parent 87acdbf5
...@@ -995,49 +995,41 @@ Theorem ccExp_correct : forall t G ...@@ -995,49 +995,41 @@ Theorem ccExp_correct : forall t G
Hint Rewrite spliceFuncs_correct unpackExp_correct : cpdt. Hint Rewrite spliceFuncs_correct unpackExp_correct : cpdt.
Hint Resolve packExp_correct lookup_type_inner. Hint Resolve packExp_correct lookup_type_inner.
induction 1; crush. induction 1; crush;
match goal with
match goal with | [ IH : _, Hlr : lr ?T ?X1 ?X2, ENV : list Source.type, F2 : natvar _ -> _ |- _ ] =>
| [ IH : _, Hlr : lr ?T ?X1 ?X2, ENV : list Source.type, F2 : natvar _ -> _ |- _ ] => apply (IH X1 (length ENV) (T :: ENV) (true, snd (fvsExp (F2 (length ENV)) (T :: ENV))))
apply (IH X1 (length ENV) (T :: ENV) (true, snd (fvsExp (F2 (length ENV)) (T :: ENV)))) end; crush;
end. match goal with
| [ Hlt : forall t v1 v2, _ -> _ < _, Hin : In _ _ |- _ ] =>
crush. solve [ generalize (Hlt _ _ _ Hin); crush ]
match goal with | [ |- context[match ?pf with refl_equal => _ end] ] => generalize pf
| [ Hlt : forall t v1 v2, _ -> _ < _, Hin : In _ _ |- _ ] => end; simpl;
generalize (Hlt _ _ _ Hin); crush match goal with
end. | [ |- context[if ?E then _ else _] ] => destruct E
end; intuition; subst;
crush; match goal with
match goal with | [ |- context[match ?pf with refl_equal => _ end] ] => rewrite (UIP_refl _ _ pf); assumption
| [ |- context[match ?pf with refl_equal => _ end] ] => generalize pf | [ Hlt : forall t v1 v2, _ -> _ < _, Hin : In (existT _ _ (_, length _)) _ |- _ ] =>
end; simpl; generalize (Hlt _ _ _ Hin); crush
match goal with | [ HG : _, Hin : In _ _, wf : wfExp _ _, pf : _ = Some _,
| [ |- context[if ?E then _ else _] ] => destruct E fvs : isfree _, env : envOf _ _ |- _ ] =>
end; intuition; subst; generalize (HG _ _ _ Hin (lookup_type_inner wf pf)); clear_all;
try match goal with repeat match goal with
| [ |- context[match ?pf with refl_equal => _ end] ] => rewrite (UIP_refl _ _ pf); assumption | [ |- context[match ?pf with refl_equal => _ end] ] => generalize pf
| [ Hlt : forall t v1 v2, _ -> _ < _, Hin : In (existT _ _ (_, length _)) _ |- _ ] => end; simpl;
generalize (Hlt _ _ _ Hin); crush generalize (packExp_correct _ fvs (inclusion wf) env pf); simpl;
end. match goal with
| [ |- ?X == ?Y -> _ ] =>
generalize (H2 _ _ _ H5 (lookup_type_inner wf pf)); clear_all. generalize X Y
repeat match goal with end;
| [ |- context[match ?pf with refl_equal => _ end] ] => generalize pf rewrite pf; rewrite (lookup_type_inner wf pf);
end; simpl. intros lhs rhs Heq; intros;
generalize (packExp_correct _ fvs (inclusion wf) env pf); simpl. repeat match goal with
match goal with | [ H : _ = _ |- _ ] => rewrite (UIP_refl _ _ H) in *
| [ |- ?X == ?Y -> _ ] => end;
generalize X Y rewrite <- Heq; assumption
end. end.
rewrite pf.
rewrite (lookup_type_inner wf pf).
crush.
repeat match goal with
| [ H : _ = _ |- _ ] => rewrite (UIP_refl _ _ H) in *
end.
rewrite <- H.
assumption.
Qed. Qed.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment