comparison src/Subset.v @ 475:1fd4109f7b31

Batch of changes based on proofreader feedback
author Adam Chlipala <adam@chlipala.net>
date Mon, 22 Oct 2012 14:23:52 -0400
parents d9e1fb184672
children b7419a10e52e
comparison
equal deleted inserted replaced
474:d9e1fb184672 475:1fd4109f7b31
871 871
872 (* end thide *) 872 (* end thide *)
873 Definition typeCheck' : forall e : exp, {t : type | hasType e t} + {forall t, ~ hasType e t}. 873 Definition typeCheck' : forall e : exp, {t : type | hasType e t} + {forall t, ~ hasType e t}.
874 (* begin thide *) 874 (* begin thide *)
875 Hint Constructors hasType. 875 Hint Constructors hasType.
876
876 (** We register all of the typing rules as hints. *) 877 (** We register all of the typing rules as hints. *)
877 878
878 Hint Resolve hasType_det. 879 Hint Resolve hasType_det.
880
879 (** The lemma [hasType_det] will also be useful for proving proof obligations with contradictory contexts. Since its statement includes [forall]-bound variables that do not appear in its conclusion, only [eauto] will apply this hint. *) 881 (** The lemma [hasType_det] will also be useful for proving proof obligations with contradictory contexts. Since its statement includes [forall]-bound variables that do not appear in its conclusion, only [eauto] will apply this hint. *)
880 882
881 (** Finally, the implementation of [typeCheck] can be transcribed literally, simply switching notations as needed. *) 883 (** Finally, the implementation of [typeCheck] can be transcribed literally, simply switching notations as needed. *)
882 884
883 refine (fix F (e : exp) : {t : type | hasType e t} + {forall t, ~ hasType e t} := 885 refine (fix F (e : exp) : {t : type | hasType e t} + {forall t, ~ hasType e t} :=