ところが...

HOL Light には Prover9 という頼もしい友がいます.

# #use "Examples/prover9.ml" ;;
val prover9 : string = "prover9"
val prover9_debugging : bool ref = {contents = false}
val prover9_options : string ref =
  {contents =
    "clear(auto_inference).\nclear(auto_denials).\nclear(auto_limits).
\nset(neg_binary_resolution).\nset(binary_resolution).\nset(paramodula
tion).\n"}
val functions :
  term list ->
  term -> term list * term list * 'a -> term list * term list * 'a = <
fun>
...

# time PROVER9 (mk_imp(concl(CONJ(CONJ DIVIDES_LE_STRONG  DIVIDES_MOD)lem),`(mdivides 9 ==> m=1 \/ m=3 \/ m=9)`));;
-------- Proof 1 --------

THEOREM PROVED

------ process 7836 exit (max_proofs) ------
CPU time (user): 0.347
val it : thm =
  |- ((!m n. m divides n ==> 1 <= m /\ m <= n \/ n = 0) /\
      (!m n. ~(m = 0) ==> (m divides n <=> n MOD m = 0))) /\
     ~(9 = 0) /\
     ~(2 = 0) /\
     ~(4 = 0) /\
     ~(5 = 0) /\
     ~(6 = 0) /\
     ~(7 = 0) /\
     ~(8 = 0) /\
     (!m. 1 <= m /\ m <= 9
          ==> m = 1 \/
              m = 2 \/
              m = 3 \/
              m = 4 \/
              m = 5 \/
              m = 6 \/
              m = 7 \/
              m = 8 \/
              m = 9) /\
     ~(9 MOD 2 = 0) /\
     ~(9 MOD 4 = 0) /\
     ~(9 MOD 5 = 0) /\
     ~(9 MOD 6 = 0) /\
     ~(9 MOD 7 = 0) /\
     ~(9 MOD 8 = 0)
     ==> m divides 9
     ==> m = 1 \/ m = 3 \/ m = 9