src/HOL/Codatatype/Tools/bnf_gfp.ML
changeset 49029 f0ecfa9575a9
parent 49018 b2884253b421
child 49074 d8af889dcbe3
equal deleted inserted replaced
49028:487427a02bee 49029:f0ecfa9575a9
  2037       map2 (fn thm1 => fn thm2 => @{thm o_bij} OF [thm1, thm2]) fld_o_unf_thms unf_o_fld_thms;
  2037       map2 (fn thm1 => fn thm2 => @{thm o_bij} OF [thm1, thm2]) fld_o_unf_thms unf_o_fld_thms;
  2038     val inj_unf_thms = map (fn thm => thm RS @{thm bij_is_inj}) bij_unf_thms;
  2038     val inj_unf_thms = map (fn thm => thm RS @{thm bij_is_inj}) bij_unf_thms;
  2039     val surj_unf_thms = map (fn thm => thm RS @{thm bij_is_surj}) bij_unf_thms;
  2039     val surj_unf_thms = map (fn thm => thm RS @{thm bij_is_surj}) bij_unf_thms;
  2040     val unf_nchotomy_thms = map (fn thm => thm RS @{thm surjD}) surj_unf_thms;
  2040     val unf_nchotomy_thms = map (fn thm => thm RS @{thm surjD}) surj_unf_thms;
  2041     val unf_inject_thms = map (fn thm => thm RS @{thm inj_eq}) inj_unf_thms;
  2041     val unf_inject_thms = map (fn thm => thm RS @{thm inj_eq}) inj_unf_thms;
  2042     val unf_exhaust_thms = map (fn thm => thm RS @{thm exE}) unf_nchotomy_thms;
  2042     val unf_exhaust_thms = map (fn thm => thm RS exE) unf_nchotomy_thms;
  2043 
  2043 
  2044     val bij_fld_thms =
  2044     val bij_fld_thms =
  2045       map2 (fn thm1 => fn thm2 => @{thm o_bij} OF [thm1, thm2]) unf_o_fld_thms fld_o_unf_thms;
  2045       map2 (fn thm1 => fn thm2 => @{thm o_bij} OF [thm1, thm2]) unf_o_fld_thms fld_o_unf_thms;
  2046     val inj_fld_thms = map (fn thm => thm RS @{thm bij_is_inj}) bij_fld_thms;
  2046     val inj_fld_thms = map (fn thm => thm RS @{thm bij_is_inj}) bij_fld_thms;
  2047     val surj_fld_thms = map (fn thm => thm RS @{thm bij_is_surj}) bij_fld_thms;
  2047     val surj_fld_thms = map (fn thm => thm RS @{thm bij_is_surj}) bij_fld_thms;
  2048     val fld_nchotomy_thms = map (fn thm => thm RS @{thm surjD}) surj_fld_thms;
  2048     val fld_nchotomy_thms = map (fn thm => thm RS @{thm surjD}) surj_fld_thms;
  2049     val fld_inject_thms = map (fn thm => thm RS @{thm inj_eq}) inj_fld_thms;
  2049     val fld_inject_thms = map (fn thm => thm RS @{thm inj_eq}) inj_fld_thms;
  2050     val fld_exhaust_thms = map (fn thm => thm RS @{thm exE}) fld_nchotomy_thms;
  2050     val fld_exhaust_thms = map (fn thm => thm RS exE) fld_nchotomy_thms;
  2051 
  2051 
  2052     val fld_coiter_thms = map3 (fn unf_inject => fn coiter => fn unf_fld =>
  2052     val fld_coiter_thms = map3 (fn unf_inject => fn coiter => fn unf_fld =>
  2053       iffD1 OF [unf_inject, trans  OF [coiter, unf_fld RS sym]])
  2053       iffD1 OF [unf_inject, trans  OF [coiter, unf_fld RS sym]])
  2054       unf_inject_thms coiter_thms unf_fld_thms;
  2054       unf_inject_thms coiter_thms unf_fld_thms;
  2055 
  2055