src/HOL/Codatatype/Tools/bnf_gfp.ML
changeset 49330 276ff43ee0b1
parent 49327 541d818d2ff3
child 49337 538687a77075
equal deleted inserted replaced
49329:82452dc63ed5 49330:276ff43ee0b1
  1871       ||>> mk_Frees "x" prodFTs
  1871       ||>> mk_Frees "x" prodFTs
  1872       ||>> mk_Frees "R" (map (mk_relT o `I) Ts)
  1872       ||>> mk_Frees "R" (map (mk_relT o `I) Ts)
  1873       ||>> mk_Frees "f" coiter_fTs
  1873       ||>> mk_Frees "f" coiter_fTs
  1874       ||>> mk_Frees "g" coiter_fTs
  1874       ||>> mk_Frees "g" coiter_fTs
  1875       ||>> mk_Frees "s" corec_sTs
  1875       ||>> mk_Frees "s" corec_sTs
  1876       ||>> mk_Frees "phi" (map (fn T => T --> T --> HOLogic.boolT) Ts);
  1876       ||>> mk_Frees "phi" (map (fn T => T --> mk_predT T) Ts);
  1877 
  1877 
  1878     fun unf_bind i = Binding.suffix_name ("_" ^ unfN) (nth bs (i - 1));
  1878     fun unf_bind i = Binding.suffix_name ("_" ^ unfN) (nth bs (i - 1));
  1879     val unf_name = Binding.name_of o unf_bind;
  1879     val unf_name = Binding.name_of o unf_bind;
  1880     val unf_def_bind = rpair [] o Thm.def_binding o unf_bind;
  1880     val unf_def_bind = rpair [] o Thm.def_binding o unf_bind;
  1881 
  1881 
  2289         val p1Ts = map2 (curry op -->) passiveXs passiveAs;
  2289         val p1Ts = map2 (curry op -->) passiveXs passiveAs;
  2290         val p2Ts = map2 (curry op -->) passiveXs passiveBs;
  2290         val p2Ts = map2 (curry op -->) passiveXs passiveBs;
  2291         val pTs = map2 (curry op -->) passiveXs passiveCs;
  2291         val pTs = map2 (curry op -->) passiveXs passiveCs;
  2292         val uTs = map2 (curry op -->) Ts Ts';
  2292         val uTs = map2 (curry op -->) Ts Ts';
  2293         val JRTs = map2 (curry mk_relT) passiveAs passiveBs;
  2293         val JRTs = map2 (curry mk_relT) passiveAs passiveBs;
  2294         val JphiTs = map2 (fn T => fn U => T --> U --> HOLogic.boolT) passiveAs passiveBs;
  2294         val JphiTs = map2 (fn T => fn U => T --> mk_predT U) passiveAs passiveBs;
  2295         val prodTs = map2 (curry HOLogic.mk_prodT) Ts Ts';
  2295         val prodTs = map2 (curry HOLogic.mk_prodT) Ts Ts';
  2296         val B1Ts = map HOLogic.mk_setT passiveAs;
  2296         val B1Ts = map HOLogic.mk_setT passiveAs;
  2297         val B2Ts = map HOLogic.mk_setT passiveBs;
  2297         val B2Ts = map HOLogic.mk_setT passiveBs;
  2298         val AXTs = map HOLogic.mk_setT passiveXs;
  2298         val AXTs = map HOLogic.mk_setT passiveXs;
  2299         val XTs = mk_Ts passiveXs;
  2299         val XTs = mk_Ts passiveXs;
  2307           ||>> mk_Frees "f" fTs
  2307           ||>> mk_Frees "f" fTs
  2308           ||>> mk_Frees "g" gTs
  2308           ||>> mk_Frees "g" gTs
  2309           ||>> mk_Frees "u" uTs
  2309           ||>> mk_Frees "u" uTs
  2310           ||>> mk_Frees' "b" Ts'
  2310           ||>> mk_Frees' "b" Ts'
  2311           ||>> mk_Frees' "b" Ts'
  2311           ||>> mk_Frees' "b" Ts'
  2312           ||>> mk_Freess "phi" (map (fn T => map (fn U => T --> U --> HOLogic.boolT) Ts) passiveAs)
  2312           ||>> mk_Freess "phi" (map (fn T => map (fn U => T --> mk_predT U) Ts) passiveAs)
  2313           ||>> mk_Frees "R" JRTs
  2313           ||>> mk_Frees "R" JRTs
  2314           ||>> mk_Frees "phi" JphiTs
  2314           ||>> mk_Frees "phi" JphiTs
  2315           ||>> mk_Frees "B1" B1Ts
  2315           ||>> mk_Frees "B1" B1Ts
  2316           ||>> mk_Frees "B2" B2Ts
  2316           ||>> mk_Frees "B2" B2Ts
  2317           ||>> mk_Frees "A" AXTs
  2317           ||>> mk_Frees "A" AXTs