src/HOL/Tools/Quickcheck/narrowing_generators.ML
changeset 57996 ca917ea6969c
parent 56920 d651b944c67e
child 58112 8081087096ad
equal deleted inserted replaced
57995:08aa1e2cbec0 57996:ca917ea6969c
   173     eqs
   173     eqs
   174   end
   174   end
   175     
   175     
   176 fun contains_recursive_type_under_function_types xs =
   176 fun contains_recursive_type_under_function_types xs =
   177   exists (fn (_, (_, _, cs)) => cs |> exists (snd #> exists (fn dT =>
   177   exists (fn (_, (_, _, cs)) => cs |> exists (snd #> exists (fn dT =>
   178     (case Datatype_Aux.strip_dtyp dT of (_ :: _, Datatype.DtRec _) => true | _ => false)))) xs
   178     (case Datatype_Aux.strip_dtyp dT of (_ :: _, Datatype_Aux.DtRec _) => true | _ => false)))) xs
   179 
   179 
   180 fun instantiate_narrowing_datatype config descr vs tycos prfx (names, auxnames) (Ts, Us) thy =
   180 fun instantiate_narrowing_datatype config descr vs tycos prfx (names, auxnames) (Ts, Us) thy =
   181   let
   181   let
   182     val _ = Datatype_Aux.message config "Creating narrowing generators ...";
   182     val _ = Datatype_Aux.message config "Creating narrowing generators ...";
   183     val narrowingsN = map (prefix (narrowingN ^ "_")) (names @ auxnames);
   183     val narrowingsN = map (prefix (narrowingN ^ "_")) (names @ auxnames);