src/HOL/UNITY/Comp.ML
changeset 9403 aad13b59b8d9
parent 8251 9be357df93d4
child 10064 1a77667b21ef
equal deleted inserted replaced
9402:480a1b40fdd6 9403:aad13b59b8d9
    98 Goalw [preserves_def, stable_def, constrains_def]
    98 Goalw [preserves_def, stable_def, constrains_def]
    99      "[| F : preserves v;  act : Acts F;  (s,s') : act |] ==> v s = v s'";
    99      "[| F : preserves v;  act : Acts F;  (s,s') : act |] ==> v s = v s'";
   100 by (Force_tac 1);
   100 by (Force_tac 1);
   101 qed "preserves_imp_eq";
   101 qed "preserves_imp_eq";
   102 
   102 
   103 Goal "(F Join G : preserves v) = (F : preserves v & G : preserves v)";
   103 Goalw [preserves_def]
   104 by (simp_tac (simpset() addsimps [Join_stable, preserves_def]) 1);
   104      "(F Join G : preserves v) = (F : preserves v & G : preserves v)";
   105 by (Blast_tac 1);
   105 by Auto_tac;
   106 qed "Join_preserves";
   106 qed "Join_preserves";
   107 
   107 
   108 Goal "(JOIN I F : preserves v) = (ALL i:I. F i : preserves v)";
   108 Goal "(JOIN I F : preserves v) = (ALL i:I. F i : preserves v)";
   109 by (simp_tac (simpset() addsimps [JN_stable, preserves_def]) 1);
   109 by (simp_tac (simpset() addsimps [JN_stable, preserves_def]) 1);
   110 by (Blast_tac 1);
   110 by (Blast_tac 1);
   171 (** Some lemmas used only in Client.ML **)
   171 (** Some lemmas used only in Client.ML **)
   172 
   172 
   173 Goal "[| F : stable {s. P (v s) (w s)};   \
   173 Goal "[| F : stable {s. P (v s) (w s)};   \
   174 \        G : preserves v;  G : preserves w |]               \
   174 \        G : preserves v;  G : preserves w |]               \
   175 \     ==> F Join G : stable {s. P (v s) (w s)}";
   175 \     ==> F Join G : stable {s. P (v s) (w s)}";
   176 by (asm_simp_tac (simpset() addsimps [Join_stable]) 1);
   176 by (Asm_simp_tac 1);
   177 by (subgoal_tac "G: preserves (funPair v w)" 1);
   177 by (subgoal_tac "G: preserves (funPair v w)" 1);
   178 by (Asm_simp_tac 2);
   178 by (Asm_simp_tac 2);
   179 by (dres_inst_tac [("P1", "split ?Q")]  
   179 by (dres_inst_tac [("P1", "split ?Q")]  
   180     (impOfSubs preserves_subset_stable) 1);
   180     (impOfSubs preserves_subset_stable) 1);
   181 by Auto_tac;
   181 by Auto_tac;
   184 Goal "[| F : stable {s. v s <= w s};  G : preserves v;       \
   184 Goal "[| F : stable {s. v s <= w s};  G : preserves v;       \
   185 \        F Join G : Increasing w |]               \
   185 \        F Join G : Increasing w |]               \
   186 \     ==> F Join G : Stable {s. v s <= w s}";
   186 \     ==> F Join G : Stable {s. v s <= w s}";
   187 by (auto_tac (claset(), 
   187 by (auto_tac (claset(), 
   188 	      simpset() addsimps [stable_def, Stable_def, Increasing_def, 
   188 	      simpset() addsimps [stable_def, Stable_def, Increasing_def, 
   189 		    Constrains_def, Join_constrains, all_conj_distrib]));
   189 				  Constrains_def, all_conj_distrib]));
   190 by (blast_tac (claset() addIs [constrains_weaken]) 1);
   190 by (blast_tac (claset() addIs [constrains_weaken]) 1);
   191 (*The G case remains*)
   191 (*The G case remains*)
   192 by (auto_tac (claset(), 
   192 by (auto_tac (claset(), 
   193               simpset() addsimps [preserves_def, stable_def, constrains_def]));
   193               simpset() addsimps [preserves_def, stable_def, constrains_def]));
   194 by (case_tac "act: Acts F" 1);
   194 by (case_tac "act: Acts F" 1);