src/HOL/Isar_examples/W_correct.thy
changeset 8281 188e2924433e
parent 8109 aca11f954993
child 8297 f5fdb69ad4d2
equal deleted inserted replaced
8280:259073d16f84 8281:188e2924433e
    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);