# HG changeset patch # User wenzelm # Date 1723374491 -7200 # Node ID a56a32ed48a4ff2fa49a65bc3f8f072fe6eeadc8 # Parent 434cf7a5bf932a1e5d8441e943b96784e0b6d6cd more robust (amending 8f53fa93d5f0): R could be anything and Thm.instantiate' involves some type-checks, e.g. relevant for lemma fset_simps in theory Quotient_Examples.Quotient_FSet; diff -r 434cf7a5bf93 -r a56a32ed48a4 src/HOL/Tools/Quotient/quotient_tacs.ML --- a/src/HOL/Tools/Quotient/quotient_tacs.ML Sun Aug 11 11:32:20 2024 +0200 +++ b/src/HOL/Tools/Quotient/quotient_tacs.ML Sun Aug 11 13:08:11 2024 +0200 @@ -255,11 +255,8 @@ SOME ct => let val T = Thm.ctyp_of_cterm ct - val A = Thm.dest_ctyp0 T - val try_inst = - \<^try>\ - Thm.instantiate (TVars.make1 ((("'a", 0), \<^sort>\type\), A), - Vars.make1 ((("R", 0), Thm.typ_of T), ct)) @{thm equals_rsp}\ + val A = try Thm.dest_ctyp0 T + val try_inst = \<^try>\Thm.instantiate' [SOME (the A)] [SOME ct] @{thm equals_rsp}\ in case try_inst of SOME thm => resolve_tac ctxt [thm] THEN' quotient_tac ctxt