When quick_and_dirty mode is enabled, some regular proofs get replaced with skip proofs (i.e. sorry oracles). For example, the following will throw an Exception when you build it (curiously, the interactive session works just fine):
fun ex :: "'a ⇒ nat" where
"ex _ = 0"
theorem ex_const: "ex 5 = ex 7"
by auto
ML ‹
exception E;
if (Thm_Deps.has_skip_proof [@{thm ex_const}]) then raise E
else ()
›
Is there a reason for that? Or an option to disable this behavior?
Apparently quick_and_dirty also axiomatizes some datatype/function constructions (so that they are faster), which is the reason the above fails. Except for locally disabling quick_and_dirty, there does not seem to be an option to turn that off.
Fabian Huch has marked this topic as resolved.
Last updated: Nov 07 2025 at 16:23 UTC