equal
deleted
inserted
replaced
88 (*Every subset of a finite set is finite.*) |
88 (*Every subset of a finite set is finite.*) |
89 lemma Fin_subset_lemma [rule_format]: "b: Fin(A) ==> \<forall>z. z<=b --> z: Fin(A)" |
89 lemma Fin_subset_lemma [rule_format]: "b: Fin(A) ==> \<forall>z. z<=b --> z: Fin(A)" |
90 apply (erule Fin_induct) |
90 apply (erule Fin_induct) |
91 apply (simp add: subset_empty_iff) |
91 apply (simp add: subset_empty_iff) |
92 apply (simp add: subset_cons_iff distrib_simps, safe) |
92 apply (simp add: subset_cons_iff distrib_simps, safe) |
93 apply (erule_tac b = "z" in cons_Diff [THEN subst], simp) |
93 apply (erule_tac b = z in cons_Diff [THEN subst], simp) |
94 done |
94 done |
95 |
95 |
96 lemma Fin_subset: "[| c<=b; b: Fin(A) |] ==> c: Fin(A)" |
96 lemma Fin_subset: "[| c<=b; b: Fin(A) |] ==> c: Fin(A)" |
97 by (blast intro: Fin_subset_lemma) |
97 by (blast intro: Fin_subset_lemma) |
98 |
98 |
156 lemma FiniteFun_subset_lemma [rule_format]: |
156 lemma FiniteFun_subset_lemma [rule_format]: |
157 "b: A-||>B ==> ALL z. z<=b --> z: A-||>B" |
157 "b: A-||>B ==> ALL z. z<=b --> z: A-||>B" |
158 apply (erule FiniteFun.induct) |
158 apply (erule FiniteFun.induct) |
159 apply (simp add: subset_empty_iff FiniteFun.intros) |
159 apply (simp add: subset_empty_iff FiniteFun.intros) |
160 apply (simp add: subset_cons_iff distrib_simps, safe) |
160 apply (simp add: subset_cons_iff distrib_simps, safe) |
161 apply (erule_tac b = "z" in cons_Diff [THEN subst]) |
161 apply (erule_tac b = z in cons_Diff [THEN subst]) |
162 apply (drule spec [THEN mp], assumption) |
162 apply (drule spec [THEN mp], assumption) |
163 apply (fast intro!: FiniteFun.intros) |
163 apply (fast intro!: FiniteFun.intros) |
164 done |
164 done |
165 |
165 |
166 lemma FiniteFun_subset: "[| c<=b; b: A-||>B |] ==> c: A-||>B" |
166 lemma FiniteFun_subset: "[| c<=b; b: A-||>B |] ==> c: A-||>B" |