src/HOL/Library/bnf_lfp_countable.ML
changeset 58170 d84bab7ed89e
parent 58168 6b6c41aa780b
child 58172 f04e24a24fb9
equal deleted inserted replaced
58169:68a2cf857df1 58170:d84bab7ed89e
   158       val inj_map_strongs' = map (Thm.permute_prems 0 ~1 o inj_map_strong_of_bnf) fp_nesting_bnfs;
   158       val inj_map_strongs' = map (Thm.permute_prems 0 ~1 o inj_map_strong_of_bnf) fp_nesting_bnfs;
   159 
   159 
   160       val (xs, names_ctxt) = ctxt |> mk_Frees "x" fpTs;
   160       val (xs, names_ctxt) = ctxt |> mk_Frees "x" fpTs;
   161 
   161 
   162       val conjuncts = map3 mk_conjunct fpTs xs (mk_encode_funs ctxt fpTs ns ctrss0 recs0);
   162       val conjuncts = map3 mk_conjunct fpTs xs (mk_encode_funs ctxt fpTs ns ctrss0 recs0);
   163       val goal = HOLogic.mk_Trueprop (Balanced_Tree.make HOLogic.mk_conj conjuncts);
   163       val goal = HOLogic.mk_Trueprop (Library.foldr1 HOLogic.mk_conj conjuncts);
   164     in
   164     in
   165       Goal.prove ctxt [] [] goal (fn {context = ctxt, prems = _} =>
   165       Goal.prove ctxt [] [] goal (fn {context = ctxt, prems = _} =>
   166         mk_encode_injectives_tac ctxt ns induct nchotomys injectss rec_thmss map_comps'
   166         mk_encode_injectives_tac ctxt ns induct nchotomys injectss rec_thmss map_comps'
   167           inj_map_strongs')
   167           inj_map_strongs')
   168       |> HOLogic.conj_elims
   168       |> HOLogic.conj_elims