src/HOL/Tools/SMT/z3_proof_methods.ML
changeset 46497 89ccf66aa73d
parent 45392 828e08541cee
child 51717 9e7d1c139569
equal deleted inserted replaced
46496:b8920f3fd259 46497:89ccf66aa73d
   107   let
   107   let
   108     val (ct, ctxt') =
   108     val (ct, ctxt') =
   109       SMT_Utils.dest_all_cbinders (SMT_Utils.dest_cprop rhs) ctxt
   109       SMT_Utils.dest_all_cbinders (SMT_Utils.dest_cprop rhs) ctxt
   110     val (cl, cv) = Thm.dest_binop ct
   110     val (cl, cv) = Thm.dest_binop ct
   111     val (cg, (cargs, cf)) = Drule.strip_comb cl ||> split_last
   111     val (cg, (cargs, cf)) = Drule.strip_comb cl ||> split_last
   112     val cu = fold_rev Thm.cabs cargs (mk_inv_of ctxt' (Thm.cabs cv cf))
   112     val cu = fold_rev Thm.lambda cargs (mk_inv_of ctxt' (Thm.lambda cv cf))
   113   in Thm.assume (SMT_Utils.mk_cequals cg cu) end
   113   in Thm.assume (SMT_Utils.mk_cequals cg cu) end
   114 
   114 
   115 fun prove_inj_eq ctxt ct =
   115 fun prove_inj_eq ctxt ct =
   116   let
   116   let
   117     val (lhs, rhs) =
   117     val (lhs, rhs) =