1 (* Title: Relation.ML |
1 (* Title: Relation.ML |
2 ID: $Id$ |
2 ID: $Id$ |
3 Authors: Riccardo Mattolini, Dip. Sistemi e Informatica |
3 Authors: Riccardo Mattolini, Dip. Sistemi e Informatica |
4 Lawrence C Paulson, Cambridge University Computer Laboratory |
4 Lawrence C Paulson, Cambridge University Computer Laboratory |
5 Copyright 1994 Universita' di Firenze |
5 Copyright 1994 Universita' di Firenze |
6 Copyright 1993 University of Cambridge |
6 Copyright 1993 University of Cambridge |
7 *) |
7 *) |
8 |
8 |
9 val RSLIST = curry (op MRS); |
9 val RSLIST = curry (op MRS); |
98 [ (rtac (major RS CollectE) 1), |
98 [ (rtac (major RS CollectE) 1), |
99 (REPEAT (eresolve_tac [splitE, bexE,exE, conjE, minor] 1)), |
99 (REPEAT (eresolve_tac [splitE, bexE,exE, conjE, minor] 1)), |
100 (assume_tac 1) ]); |
100 (assume_tac 1) ]); |
101 |
101 |
102 val converse_cs = comp_cs addSIs [converseI] |
102 val converse_cs = comp_cs addSIs [converseI] |
103 addSEs [converseD,converseE]; |
103 addSEs [converseD,converseE]; |
104 |
104 |
105 (** Domain **) |
105 (** Domain **) |
106 |
106 |
107 qed_goalw "Domain_iff" Relation.thy [Domain_def] |
107 qed_goalw "Domain_iff" Relation.thy [Domain_def] |
108 "a: Domain(r) = (EX y. (a,y): r)" |
108 "a: Domain(r) = (EX y. (a,y): r)" |
136 (fn _ => [ fast_tac (comp_cs addIs [RangeI]) 1 ]); |
136 (fn _ => [ fast_tac (comp_cs addIs [RangeI]) 1 ]); |
137 |
137 |
138 qed_goal "Image_singleton_iff" Relation.thy |
138 qed_goal "Image_singleton_iff" Relation.thy |
139 "(b : r^^{a}) = ((a,b):r)" |
139 "(b : r^^{a}) = ((a,b):r)" |
140 (fn _ => [ rtac (Image_iff RS trans) 1, |
140 (fn _ => [ rtac (Image_iff RS trans) 1, |
141 fast_tac comp_cs 1 ]); |
141 fast_tac comp_cs 1 ]); |
142 |
142 |
143 qed_goalw "ImageI" Relation.thy [Image_def] |
143 qed_goalw "ImageI" Relation.thy [Image_def] |
144 "!!a b r. [| (a,b): r; a:A |] ==> b : r^^A" |
144 "!!a b r. [| (a,b): r; a:A |] ==> b : r^^A" |
145 (fn _ => [ (REPEAT (ares_tac [CollectI,RangeI,bexI] 1)), |
145 (fn _ => [ (REPEAT (ares_tac [CollectI,RangeI,bexI] 1)), |
146 (resolve_tac [conjI ] 1), |
146 (resolve_tac [conjI ] 1), |
147 (resolve_tac [RangeI] 1), |
147 (rtac RangeI 1), |
148 (REPEAT (fast_tac set_cs 1))]); |
148 (REPEAT (fast_tac set_cs 1))]); |
149 |
149 |
150 qed_goalw "ImageE" Relation.thy [Image_def] |
150 qed_goalw "ImageE" Relation.thy [Image_def] |
151 "[| b: r^^A; !!x.[| (x,b): r; x:A |] ==> P |] ==> P" |
151 "[| b: r^^A; !!x.[| (x,b): r; x:A |] ==> P |] ==> P" |
152 (fn major::prems=> |
152 (fn major::prems=> |