src/HOL/Tools/BNF/bnf_def.ML
changeset 57567 d554b0097ad4
parent 57534 d2617d923aa1
child 57631 959caab43a3d
equal deleted inserted replaced
57566:0fb191472e4a 57567:d554b0097ad4
   979         fold_rev Logic.all (fs @ gs) (mk_Trueprop_eq (bnf_map_app_comp, comp_bnf_map_app))
   979         fold_rev Logic.all (fs @ gs) (mk_Trueprop_eq (bnf_map_app_comp, comp_bnf_map_app))
   980       end;
   980       end;
   981 
   981 
   982     fun mk_map_cong_prem x z set f f_copy =
   982     fun mk_map_cong_prem x z set f f_copy =
   983       Logic.all z (Logic.mk_implies
   983       Logic.all z (Logic.mk_implies
   984         (HOLogic.mk_Trueprop (HOLogic.mk_mem (z, set $ x)),
   984         (mk_Trueprop_mem (z, set $ x), mk_Trueprop_eq (f $ z, f_copy $ z)));
   985         mk_Trueprop_eq (f $ z, f_copy $ z)));
       
   986 
   985 
   987     val map_cong0_goal =
   986     val map_cong0_goal =
   988       let
   987       let
   989         val prems = map4 (mk_map_cong_prem x) zs bnf_sets_As fs fs_copy;
   988         val prems = map4 (mk_map_cong_prem x) zs bnf_sets_As fs fs_copy;
   990         val eq = mk_Trueprop_eq (Term.list_comb (bnf_map_AsBs, fs) $ x,
   989         val eq = mk_Trueprop_eq (Term.list_comb (bnf_map_AsBs, fs) $ x,
  1042             val concl = HOLogic.mk_Trueprop
  1041             val concl = HOLogic.mk_Trueprop
  1043               (if member (op =) I i then HOLogic.mk_eq (z, nth bs i)
  1042               (if member (op =) I i then HOLogic.mk_eq (z, nth bs i)
  1044               else @{term False});
  1043               else @{term False});
  1045           in
  1044           in
  1046             fold_rev Logic.all (z :: xs)
  1045             fold_rev Logic.all (z :: xs)
  1047               (Logic.mk_implies (HOLogic.mk_Trueprop (HOLogic.mk_mem (z, set_wit)), concl))
  1046               (Logic.mk_implies (mk_Trueprop_mem (z, set_wit), concl))
  1048           end;
  1047           end;
  1049       in
  1048       in
  1050         map wit_goal (0 upto live - 1)
  1049         map wit_goal (0 upto live - 1)
  1051       end;
  1050       end;
  1052 
  1051