equal
deleted
inserted
replaced
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 |