slim_check

slim_check は,証明しようとしているゴールが間違っていないかチェックし,反例を見つけるとエラーで警告するタクティクです.

import Mathlib.Tactic.SlimCheck

variable (a b : ℕ)

example (h : 2 ≤ a + b) : 1 ≤ a := by
  /-
  ===================
  Found problems!
  a := 0
  b := 12
  guard: 2 ≤ 12
  issue: 1 ≤ 0 does not hold
  (0 shrinks)
  -------------------
  -/
  fail_if_success slim_check

  sorry

反例が見つからない時

100 個のテストケースでテストしてOKならエラーにならないのですが,途中でギブアップした場合はエラーになります.

-- Gave up ** times と表示される
example (h : a = 1) : a ≤ 1 := by
  slim_check