equal
deleted
inserted
replaced
43 |
43 |
44 lemma has_type_subst_closed: "a |- e :: t ==> $s a |- e :: $s t"; |
44 lemma has_type_subst_closed: "a |- e :: t ==> $s a |- e :: $s t"; |
45 proof -; |
45 proof -; |
46 assume "a |- e :: t"; |
46 assume "a |- e :: t"; |
47 thus ?thesis (is "?P a e t"); |
47 thus ?thesis (is "?P a e t"); |
48 proof (rule has_type.induct); (* FIXME induct method *) |
48 proof (induct a e t in set: has_type); |
49 fix a n; |
49 fix a n; |
50 assume "n < length (a::typ list)"; |
50 assume "n < length (a::typ list)"; |
51 hence "n < length (map ($ s) a)"; by simp; |
51 hence "n < length (map ($ s) a)"; by simp; |
52 hence "map ($ s) a |- Var n :: map ($ s) a ! n"; |
52 hence "map ($ s) a |- Var n :: map ($ s) a ! n"; |
53 by (rule has_type.VarI); |
53 by (rule has_type.VarI); |