lean4-htt/tests/lean/2273.lean

30 lines
694 B
Text

import Lean
class P (n : Nat)
theorem foo (n : Nat) [P n] : True := trivial
-- This should fail, as by default `apply` does not allow synthesis failures.
example : True := by
apply foo 37
open Lean Meta Elab Tactic Term
/--
In mathlib4 we add the syntax:
`apply (config := cfg) e` is like `apply e` but allows you to provide a configuration
`cfg : ApplyConfig` to pass to the underlying apply operation.
For this test we just hard code the `allowSynthFailures` option into `apply'`.
-/
elab "apply'" e:term : tactic => do
evalApplyLikeTactic (·.apply · { allowSynthFailures := true }) e
def instP (n : Nat) : P n := {}
example : True := by
apply' foo
apply instP
exact 37