src/ZF/Coind/Map.ML
changeset 3840 e0baea4d485a
parent 3735 bed0ba7bff2f
child 4091 771b1f6422a8
equal deleted inserted replaced
3839:56544d061e1d 3840:e0baea4d485a
    16 
    16 
    17 goal Map.thy "!!A. a~:A ==> Sigma(A,B)``{a} = 0";
    17 goal Map.thy "!!A. a~:A ==> Sigma(A,B)``{a} = 0";
    18 by (Fast_tac 1);
    18 by (Fast_tac 1);
    19 qed "qbeta_emp";
    19 qed "qbeta_emp";
    20 
    20 
    21 goal Map.thy "!!A.a ~: A ==> Sigma(A,B)``{a}=0";
    21 goal Map.thy "!!A. a ~: A ==> Sigma(A,B)``{a}=0";
    22 by (Fast_tac 1);
    22 by (Fast_tac 1);
    23 qed "image_Sigma1";
    23 qed "image_Sigma1";
    24 
    24 
    25 goal Map.thy "0``A = 0";
    25 goal Map.thy "0``A = 0";
    26 by (Fast_tac 1);
    26 by (Fast_tac 1);
    42 qed "MapQU_lemma";
    42 qed "MapQU_lemma";
    43 
    43 
    44 (* Theorems *)
    44 (* Theorems *)
    45 
    45 
    46 val prems = goalw Map.thy [PMap_def,TMap_def]
    46 val prems = goalw Map.thy [PMap_def,TMap_def]
    47   "[| m:PMap(A,quniv(B)); !!x.x:A ==> x:univ(B) |] ==> m:quniv(B)";
    47   "[| m:PMap(A,quniv(B)); !!x. x:A ==> x:univ(B) |] ==> m:quniv(B)";
    48 by (cut_facts_tac prems 1);
    48 by (cut_facts_tac prems 1);
    49 by (rtac (MapQU_lemma RS subsetD) 1);
    49 by (rtac (MapQU_lemma RS subsetD) 1);
    50 by (rtac subsetI 1);
    50 by (rtac subsetI 1);
    51 by (eresolve_tac prems 1);
    51 by (eresolve_tac prems 1);
    52 by (Fast_tac 1);
    52 by (Fast_tac 1);
    54 
    54 
    55 (* ############################################################ *)
    55 (* ############################################################ *)
    56 (* Monotonicity                                                 *)
    56 (* Monotonicity                                                 *)
    57 (* ############################################################ *)
    57 (* ############################################################ *)
    58 
    58 
    59 goalw Map.thy [PMap_def,TMap_def] "!!A.B<=C ==> PMap(A,B)<=PMap(A,C)";
    59 goalw Map.thy [PMap_def,TMap_def] "!!A. B<=C ==> PMap(A,B)<=PMap(A,C)";
    60 by (Fast_tac 1);
    60 by (Fast_tac 1);
    61 qed "map_mono";
    61 qed "map_mono";
    62 
    62 
    63 (* Rename to pmap_mono *)
    63 (* Rename to pmap_mono *)
    64 
    64 
   137 
   137 
   138 (** Domain **)
   138 (** Domain **)
   139 
   139 
   140 (* Lemmas *)
   140 (* Lemmas *)
   141 
   141 
   142 goal Map.thy  "domain(UN x:A.B(x)) = (UN x:A.domain(B(x)))";
   142 goal Map.thy  "domain(UN x:A. B(x)) = (UN x:A. domain(B(x)))";
   143 by (Fast_tac 1);
   143 by (Fast_tac 1);
   144 qed "domain_UN";
   144 qed "domain_UN";
   145 
   145 
   146 goal Map.thy  "domain(Sigma(A,B)) = {x:A.EX y.y:B(x)}";
   146 goal Map.thy  "domain(Sigma(A,B)) = {x:A. EX y. y:B(x)}";
   147 by (simp_tac (!simpset addsimps [domain_UN,domain_0,domain_cons]) 1);
   147 by (simp_tac (!simpset addsimps [domain_UN,domain_0,domain_cons]) 1);
   148 by (Fast_tac 1);
   148 by (Fast_tac 1);
   149 qed "domain_Sigma";
   149 qed "domain_Sigma";
   150 
   150 
   151 (* Theorems *)
   151 (* Theorems *)
   153 goalw Map.thy [map_emp_def] "domain(map_emp) = 0";
   153 goalw Map.thy [map_emp_def] "domain(map_emp) = 0";
   154 by (Fast_tac 1);
   154 by (Fast_tac 1);
   155 qed "map_domain_emp";
   155 qed "map_domain_emp";
   156 
   156 
   157 goalw Map.thy [map_owr_def] 
   157 goalw Map.thy [map_owr_def] 
   158   "!!a.b ~= 0 ==> domain(map_owr(f,a,b)) = {a} Un domain(f)";
   158   "!!a. b ~= 0 ==> domain(map_owr(f,a,b)) = {a} Un domain(f)";
   159 by (simp_tac (!simpset addsimps [domain_Sigma]) 1);
   159 by (simp_tac (!simpset addsimps [domain_Sigma]) 1);
   160 by (rtac equalityI 1);
   160 by (rtac equalityI 1);
   161 by (Fast_tac 1);
   161 by (Fast_tac 1);
   162 by (rtac subsetI 1);
   162 by (rtac subsetI 1);
   163 by (rtac CollectI 1);
   163 by (rtac CollectI 1);
   177 by (Fast_tac 1);
   177 by (Fast_tac 1);
   178 by (Simp_tac 1);
   178 by (Simp_tac 1);
   179 qed "map_app_owr1";
   179 qed "map_app_owr1";
   180 
   180 
   181 goalw Map.thy [map_app_def,map_owr_def] 
   181 goalw Map.thy [map_app_def,map_owr_def] 
   182   "!!a.c ~= a ==> map_app(map_owr(f,a,b),c)= map_app(f,c)";
   182   "!!a. c ~= a ==> map_app(map_owr(f,a,b),c)= map_app(f,c)";
   183 by (rtac (excluded_middle RS disjE) 1);
   183 by (rtac (excluded_middle RS disjE) 1);
   184 by (stac qbeta_emp 1);
   184 by (stac qbeta_emp 1);
   185 by (assume_tac 1);
   185 by (assume_tac 1);
   186 by (Fast_tac 1);
   186 by (Fast_tac 1);
   187 by (etac (qbeta RS ssubst) 1);
   187 by (etac (qbeta RS ssubst) 1);