src/HOL/UNITY/SubstAx.ML
changeset 5536 130f3d891fb2
parent 5479 5a5dfb0f0d7d
child 5544 96078cf5fd2c
equal deleted inserted replaced
5535:678999604ee9 5536:130f3d891fb2
   265 by (asm_full_simp_tac (simpset() addsimps Int_ac) 1);
   265 by (asm_full_simp_tac (simpset() addsimps Int_ac) 1);
   266 qed "PSP_stable";
   266 qed "PSP_stable";
   267 
   267 
   268 Goal "[| LeadsTo prg A A'; Stable prg B |] \
   268 Goal "[| LeadsTo prg A A'; Stable prg B |] \
   269 \     ==> LeadsTo prg (B Int A) (B Int A')";
   269 \     ==> LeadsTo prg (B Int A) (B Int A')";
   270 by (asm_simp_tac (simpset() addsimps (PSP_stable::Int_ac)) 1);
   270 by (asm_simp_tac (simpset() addsimps PSP_stable::Int_ac) 1);
   271 qed "PSP_stable2";
   271 qed "PSP_stable2";
   272 
   272 
   273 Goalw [LeadsTo_def, Constrains_def]
   273 Goalw [LeadsTo_def, Constrains_def]
   274      "[| LeadsTo prg A A'; Constrains prg B B'; id: Acts prg |] \
   274      "[| LeadsTo prg A A'; Constrains prg B B'; id: Acts prg |] \
   275 \     ==> LeadsTo prg (A Int B) ((A' Int B) Un (B' - B))";
   275 \     ==> LeadsTo prg (A Int B) ((A' Int B) Un (B' - B))";
   276 by (blast_tac (claset() addDs [psp] addIs [leadsTo_weaken]) 1);
   276 by (blast_tac (claset() addDs [psp] addIs [leadsTo_weaken]) 1);
   277 qed "PSP";
   277 qed "PSP";
   278 
   278 
   279 Goal "[| LeadsTo prg A A'; Constrains prg B B'; id: Acts prg |] \
   279 Goal "[| LeadsTo prg A A'; Constrains prg B B'; id: Acts prg |] \
   280 \     ==> LeadsTo prg (B Int A) ((B Int A') Un (B' - B))";
   280 \     ==> LeadsTo prg (B Int A) ((B Int A') Un (B' - B))";
   281 by (asm_simp_tac (simpset() addsimps (PSP::Int_ac)) 1);
   281 by (asm_simp_tac (simpset() addsimps PSP::Int_ac) 1);
   282 qed "PSP2";
   282 qed "PSP2";
   283 
   283 
   284 Goalw [Unless_def]
   284 Goalw [Unless_def]
   285      "[| LeadsTo prg A A'; Unless prg B B'; id: Acts prg |] \
   285      "[| LeadsTo prg A A'; Unless prg B B'; id: Acts prg |] \
   286 \     ==> LeadsTo prg (A Int B) ((A' Int B) Un B')";
   286 \     ==> LeadsTo prg (A Int B) ((A' Int B) Un B')";