src/HOL/Tools/BNF/bnf_gfp.ML
changeset 60801 7664e0916eec
parent 60784 4f590c08fd5d
child 61101 7b915ca69af1
equal deleted inserted replaced
60799:57dd0b45fc21 60801:7664e0916eec
  1973                   HOLogic.mk_conj (HOLogic.mk_mem (y, jset $ Jz), phi $ y $ Jz))))))
  1973                   HOLogic.mk_conj (HOLogic.mk_mem (y, jset $ Jz), phi $ y $ Jz))))))
  1974               phis jsets Jzs Jzs';
  1974               phis jsets Jzs Jzs';
  1975           in
  1975           in
  1976             @{map 6} (fn set_minimal => fn set_set_inclss => fn jsets => fn y => fn y' => fn phis =>
  1976             @{map 6} (fn set_minimal => fn set_set_inclss => fn jsets => fn y => fn y' => fn phis =>
  1977               ((set_minimal
  1977               ((set_minimal
  1978                 |> Drule.instantiate' cTs (mk_induct_tinst phis jsets y y')
  1978                 |> Thm.instantiate' cTs (mk_induct_tinst phis jsets y y')
  1979                 |> unfold_thms lthy incls) OF
  1979                 |> unfold_thms lthy incls) OF
  1980                 (replicate n ballI @
  1980                 (replicate n ballI @
  1981                   maps (map (fn thm => thm RS @{thm subset_CollectI})) set_set_inclss))
  1981                   maps (map (fn thm => thm RS @{thm subset_CollectI})) set_set_inclss))
  1982               |> singleton (Proof_Context.export names_lthy lthy)
  1982               |> singleton (Proof_Context.export names_lthy lthy)
  1983               |> rule_by_tactic lthy (ALLGOALS (TRY o etac lthy asm_rl)))
  1983               |> rule_by_tactic lthy (ALLGOALS (TRY o etac lthy asm_rl)))
  2105               |> Thm.cterm_of lthy;
  2105               |> Thm.cterm_of lthy;
  2106 
  2106 
  2107             val cphis = @{map 9} mk_cphi
  2107             val cphis = @{map 9} mk_cphi
  2108               Jsetss_by_bnf Jzs' Jzs fs_Jmaps fs_copy_Jmaps Jys' Jys Jys'_copy Jys_copy;
  2108               Jsetss_by_bnf Jzs' Jzs fs_Jmaps fs_copy_Jmaps Jys' Jys Jys'_copy Jys_copy;
  2109 
  2109 
  2110             val coinduct = Drule.instantiate' cTs (map SOME cphis) dtor_coinduct_thm;
  2110             val coinduct = Thm.instantiate' cTs (map SOME cphis) dtor_coinduct_thm;
  2111 
  2111 
  2112             val goal =
  2112             val goal =
  2113               HOLogic.mk_Trueprop (Library.foldr1 HOLogic.mk_conj
  2113               HOLogic.mk_Trueprop (Library.foldr1 HOLogic.mk_conj
  2114                 (@{map 4} mk_map_cong0 Jsetss_by_bnf Jzs fs_Jmaps fs_copy_Jmaps));
  2114                 (@{map 4} mk_map_cong0 Jsetss_by_bnf Jzs fs_Jmaps fs_copy_Jmaps));
  2115 
  2115