src/HOL/UNITY/PPROD.ML
changeset 6867 7cb9d3250db7
parent 6842 56e08e264961
child 7188 2bc63a44721b
equal deleted inserted replaced
6866:f795b63139ec 6867:7cb9d3250db7
    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";