201 |
201 |
202 |
202 |
203 |
203 |
204 (*** Increasing ***) |
204 (*** Increasing ***) |
205 |
205 |
|
206 Goalw [Increasing_def] |
|
207 "F : Increasing f ==> F : Stable {s. x <= f s}"; |
|
208 by (Blast_tac 1); |
|
209 qed "IncreasingD"; |
|
210 |
206 Goalw [Increasing_def, Stable_def, Constrains_def, stable_def, constrains_def] |
211 Goalw [Increasing_def, Stable_def, Constrains_def, stable_def, constrains_def] |
207 "mono g ==> Increasing f <= Increasing (g o f)"; |
212 "mono g ==> Increasing f <= Increasing (g o f)"; |
208 by Auto_tac; |
213 by Auto_tac; |
209 by (blast_tac (claset() addIs [monoD, order_trans]) 1); |
214 by (blast_tac (claset() addIs [monoD, order_trans]) 1); |
210 qed "mono_Increasing_o"; |
215 qed "mono_Increasing_o"; |
211 |
216 |
212 Goalw [Increasing_def] |
217 Goalw [Increasing_def] |
213 "Increasing f <= {F. ALL z::nat. F: Stable {s. z < f s}}"; |
218 "!!z::nat. F : Increasing f ==> F: Stable {s. z < f s}"; |
214 by (simp_tac (simpset() addsimps [Suc_le_eq RS sym]) 1); |
219 by (simp_tac (simpset() addsimps [Suc_le_eq RS sym]) 1); |
215 by (Blast_tac 1); |
220 by (Blast_tac 1); |
216 qed "Increasing_Stable_less"; |
221 qed "strict_IncreasingD"; |
217 |
222 |
218 Goalw [increasing_def, Increasing_def] |
223 Goalw [increasing_def, Increasing_def] |
219 "F : increasing f ==> F : Increasing f"; |
224 "F : increasing f ==> F : Increasing f"; |
220 by (blast_tac (claset() addIs [stable_imp_Stable]) 1); |
225 by (blast_tac (claset() addIs [stable_imp_Stable]) 1); |
221 qed "increasing_imp_Increasing"; |
226 qed "increasing_imp_Increasing"; |