equal
deleted
inserted
replaced
29 |
29 |
30 (** lift_act and drop_act **) |
30 (** lift_act and drop_act **) |
31 |
31 |
32 Goalw [lift_act_def] "lift_act i Id = Id"; |
32 Goalw [lift_act_def] "lift_act i Id = Id"; |
33 by Auto_tac; |
33 by Auto_tac; |
34 be rev_mp 1; |
34 by (etac rev_mp 1); |
35 bd sym 1; |
35 by (dtac sym 1); |
36 by (asm_simp_tac (simpset() addsimps [fun_upd_idem_iff]) 1); |
36 by (asm_simp_tac (simpset() addsimps [fun_upd_idem_iff]) 1); |
37 qed "lift_act_Id"; |
37 qed "lift_act_Id"; |
38 Addsimps [lift_act_Id]; |
38 Addsimps [lift_act_Id]; |
39 |
39 |
40 Goalw [drop_act_def] "(s, s') : act ==> (s i, s' i) : drop_act i act"; |
40 Goalw [drop_act_def] "(s, s') : act ==> (s i, s' i) : drop_act i act"; |
135 by Auto_tac; |
135 by Auto_tac; |
136 by (res_inst_tac [("x", "f(i:=a)")] exI 1); |
136 by (res_inst_tac [("x", "f(i:=a)")] exI 1); |
137 by (Asm_simp_tac 1); |
137 by (Asm_simp_tac 1); |
138 by (res_inst_tac [("x", "f(i:=b)")] exI 1); |
138 by (res_inst_tac [("x", "f(i:=b)")] exI 1); |
139 by (Asm_simp_tac 1); |
139 by (Asm_simp_tac 1); |
140 br ext 1; |
140 by (rtac ext 1); |
141 by (Asm_simp_tac 1); |
141 by (Asm_simp_tac 1); |
142 qed "lift_act_inverse"; |
142 qed "lift_act_inverse"; |
143 Addsimps [lift_act_inverse]; |
143 Addsimps [lift_act_inverse]; |
144 |
144 |
145 Goal "inj (lift_act i)"; |
145 Goal "inj (lift_act i)"; |
170 |
170 |
171 (*For compatibility with the original definition and perhaps simpler proofs*) |
171 (*For compatibility with the original definition and perhaps simpler proofs*) |
172 Goalw [lift_act_def] |
172 Goalw [lift_act_def] |
173 "((f,f') : lift_act i act) = (EX s'. f' = f(i := s') & (f i, s') : act)"; |
173 "((f,f') : lift_act i act) = (EX s'. f' = f(i := s') & (f i, s') : act)"; |
174 by Auto_tac; |
174 by Auto_tac; |
175 br exI 1; |
175 by (rtac exI 1); |
176 by Auto_tac; |
176 by Auto_tac; |
177 qed "lift_act_eq"; |
177 qed "lift_act_eq"; |
178 AddIffs [lift_act_eq]; |
178 AddIffs [lift_act_eq]; |
179 |
179 |
180 |
180 |
367 simpset() addsimps [Acts_PLam])); |
367 simpset() addsimps [Acts_PLam])); |
368 qed "reachable_PLam"; |
368 qed "reachable_PLam"; |
369 |
369 |
370 (*Result to justify a re-organization of this file*) |
370 (*Result to justify a re-organization of this file*) |
371 Goal "{f. ALL i:I. f i : R i} = (INT i:I. lift_set i (R i))"; |
371 Goal "{f. ALL i:I. f i : R i} = (INT i:I. lift_set i (R i))"; |
372 auto(); |
372 by Auto_tac; |
373 result(); |
373 result(); |
374 |
374 |
375 Goal "reachable (PLam I F) <= (INT i:I. lift_set i (reachable (F i)))"; |
375 Goal "reachable (PLam I F) <= (INT i:I. lift_set i (reachable (F i)))"; |
376 by (force_tac (claset() addSDs [reachable_PLam], simpset()) 1); |
376 by (force_tac (claset() addSDs [reachable_PLam], simpset()) 1); |
377 qed "reachable_PLam_subset1"; |
377 qed "reachable_PLam_subset1"; |