src/HOL/Tools/quickcheck_generators.ML
changeset 31647 76d8c30a92c5
parent 31641 feea4d3d743d
parent 31645 98a3fd346270
child 31673 6cc4c63cc990
equal deleted inserted replaced
31644:f4723b1ae5a1 31647:76d8c30a92c5
   210           ((Binding.name name, NoSyn), (Attrib.empty_binding, rhs))) vs proj_eqs;
   210           ((Binding.name name, NoSyn), (Attrib.empty_binding, rhs))) vs proj_eqs;
   211         val aux_eq' = Pattern.rewrite_term thy proj_eqs [] aux_eq;
   211         val aux_eq' = Pattern.rewrite_term thy proj_eqs [] aux_eq;
   212         fun prove_eqs aux_simp proj_defs lthy = 
   212         fun prove_eqs aux_simp proj_defs lthy = 
   213           let
   213           let
   214             val proj_simps = map (snd o snd) proj_defs;
   214             val proj_simps = map (snd o snd) proj_defs;
   215             fun tac { context = ctxt, ... } =
   215             fun tac { context = ctxt, prems = _ } =
   216               ALLGOALS (simp_tac (HOL_ss addsimps proj_simps))
   216               ALLGOALS (simp_tac (HOL_ss addsimps proj_simps))
   217               THEN ALLGOALS (EqSubst.eqsubst_tac ctxt [0] [aux_simp])
   217               THEN ALLGOALS (EqSubst.eqsubst_tac ctxt [0] [aux_simp])
   218               THEN ALLGOALS (simp_tac (HOL_ss addsimps [fst_conv, snd_conv]));
   218               THEN ALLGOALS (simp_tac (HOL_ss addsimps [fst_conv, snd_conv]));
   219           in (map (fn prop => SkipProof.prove lthy [v] [] prop tac) eqs, lthy) end;
   219           in (map (fn prop => SkipProof.prove lthy [v] [] prop tac) eqs, lthy) end;
   220       in
   220       in