src/HOL/Word/WordBitwise.thy
changeset 59621 291934bac95e
parent 59582 0fbed69ff081
child 59643 f3be9235503d
equal deleted inserted replaced
59620:92d7d8e4f1bf 59621:291934bac95e
   558       else (n, 0);
   558       else (n, 0);
   559     val arg' = List.foldr (op $) (HOLogic.mk_number @{typ nat} j)
   559     val arg' = List.foldr (op $) (HOLogic.mk_number @{typ nat} j)
   560         (replicate i @{term Suc});
   560         (replicate i @{term Suc});
   561     val _ = if arg = arg' then raise TERM ("", []) else ();
   561     val _ = if arg = arg' then raise TERM ("", []) else ();
   562     fun propfn g = HOLogic.mk_eq (g arg, g arg')
   562     fun propfn g = HOLogic.mk_eq (g arg, g arg')
   563       |> HOLogic.mk_Trueprop |> Thm.cterm_of thy;
   563       |> HOLogic.mk_Trueprop |> Thm.global_cterm_of thy;
   564     val eq1 = Goal.prove_internal ctxt [] (propfn I)
   564     val eq1 = Goal.prove_internal ctxt [] (propfn I)
   565       (K (simp_tac (put_simpset word_ss ctxt) 1));
   565       (K (simp_tac (put_simpset word_ss ctxt) 1));
   566   in Goal.prove_internal ctxt [] (propfn (curry (op $) f))
   566   in Goal.prove_internal ctxt [] (propfn (curry (op $) f))
   567       (K (simp_tac (put_simpset HOL_ss ctxt addsimps [eq1]) 1))
   567       (K (simp_tac (put_simpset HOL_ss ctxt addsimps [eq1]) 1))
   568        |> mk_meta_eq |> SOME end
   568        |> mk_meta_eq |> SOME end