equal
deleted
inserted
replaced
357 val conjuncts = if is_eqn thm then thm |> get_rhs |> HOLogic.dest_conj else [] |
357 val conjuncts = if is_eqn thm then thm |> get_rhs |> HOLogic.dest_conj else [] |
358 val kill_top = Local_Defs.unfold lthy [kill_top2] #> Local_Defs.unfold lthy [kill_top1] |
358 val kill_top = Local_Defs.unfold lthy [kill_top2] #> Local_Defs.unfold lthy [kill_top1] |
359 val kill_True = Local_Defs.unfold lthy [@{thm HOL.simp_thms(21)}] |
359 val kill_True = Local_Defs.unfold lthy [@{thm HOL.simp_thms(21)}] |
360 in |
360 in |
361 thm |
361 thm |
362 |> Drule.instantiate' cTs cts |
362 |> Thm.instantiate' cTs cts |
363 |> Conv.fconv_rule (HOLogic.Trueprop_conv (Conv.arg_conv |
363 |> Conv.fconv_rule (HOLogic.Trueprop_conv (Conv.arg_conv |
364 (Raw_Simplifier.rewrite lthy false @{thms eq_onp_top_eq_eq[symmetric, THEN eq_reflection]}))) |
364 (Raw_Simplifier.rewrite lthy false @{thms eq_onp_top_eq_eq[symmetric, THEN eq_reflection]}))) |
365 |> Local_Defs.unfold lthy eq_onps |
365 |> Local_Defs.unfold lthy eq_onps |
366 |> (fn thm => if conjuncts <> [] then @{thm box_equals} |
366 |> (fn thm => if conjuncts <> [] then @{thm box_equals} |
367 OF [thm, @{thm eq_onp_same_args}, pred_eq_onp_conj conjuncts |> kill_True] |
367 OF [thm, @{thm eq_onp_same_args}, pred_eq_onp_conj conjuncts |> kill_True] |