191 apply blast |
191 apply blast |
192 done |
192 done |
193 |
193 |
194 |
194 |
195 lemma extend_lub: |
195 lemma extend_lub: |
196 "[| univalent r; is_lub (r^* ) x y u; (x',x) : r |] |
196 "[| single_valued r; is_lub (r^* ) x y u; (x',x) : r |] |
197 ==> EX v. is_lub (r^* ) x' y v" |
197 ==> EX v. is_lub (r^* ) x' y v" |
198 apply (unfold is_lub_def is_ub_def) |
198 apply (unfold is_lub_def is_ub_def) |
199 apply (case_tac "(y,x) : r^*") |
199 apply (case_tac "(y,x) : r^*") |
200 apply (case_tac "(y,x') : r^*") |
200 apply (case_tac "(y,x') : r^*") |
201 apply blast |
201 apply blast |
202 apply (blast intro: r_into_rtrancl elim: converse_rtranclE |
202 apply (blast intro: r_into_rtrancl elim: converse_rtranclE |
203 dest: univalentD) |
203 dest: single_valuedD) |
204 apply (rule exI) |
204 apply (rule exI) |
205 apply (rule conjI) |
205 apply (rule conjI) |
206 apply (blast intro: rtrancl_into_rtrancl2 dest: univalentD) |
206 apply (blast intro: rtrancl_into_rtrancl2 dest: single_valuedD) |
207 apply (blast intro: rtrancl_into_rtrancl rtrancl_into_rtrancl2 |
207 apply (blast intro: rtrancl_into_rtrancl rtrancl_into_rtrancl2 |
208 elim: converse_rtranclE dest: univalentD) |
208 elim: converse_rtranclE dest: single_valuedD) |
209 done |
209 done |
210 |
210 |
211 lemma univalent_has_lubs [rule_format]: |
211 lemma single_valued_has_lubs [rule_format]: |
212 "[| univalent r; (x,u) : r^* |] ==> (!y. (y,u) : r^* --> |
212 "[| single_valued r; (x,u) : r^* |] ==> (!y. (y,u) : r^* --> |
213 (EX z. is_lub (r^* ) x y z))" |
213 (EX z. is_lub (r^* ) x y z))" |
214 apply (erule converse_rtrancl_induct) |
214 apply (erule converse_rtrancl_induct) |
215 apply clarify |
215 apply clarify |
216 apply (erule converse_rtrancl_induct) |
216 apply (erule converse_rtrancl_induct) |
217 apply blast |
217 apply blast |
226 apply assumption |
226 apply assumption |
227 apply (blast intro: antisymD dest!: acyclic_impl_antisym_rtrancl) |
227 apply (blast intro: antisymD dest!: acyclic_impl_antisym_rtrancl) |
228 done |
228 done |
229 |
229 |
230 lemma is_lub_some_lub: |
230 lemma is_lub_some_lub: |
231 "[| univalent r; acyclic r; (x,u):r^*; (y,u):r^* |] |
231 "[| single_valued r; acyclic r; (x,u):r^*; (y,u):r^* |] |
232 ==> is_lub (r^* ) x y (some_lub (r^* ) x y)"; |
232 ==> is_lub (r^* ) x y (some_lub (r^* ) x y)"; |
233 by (fastsimp dest: univalent_has_lubs simp add: some_lub_conv) |
233 by (fastsimp dest: single_valued_has_lubs simp add: some_lub_conv) |
234 |
234 |
235 end |
235 end |