blob: 4e56bf3e13a6a13269da653b6410e44d55e45669 [file] [edit]
example : Bool := by
fail_if_success have := ∀ p, decide p -- no classical in scope
classical
have := ∀ p, decide p -- uses the classical instance
guard_expr decide (0 < 1) = @decide (0 < 1) (Nat.decLt 0 1)
exact decide (0 < 1) -- will use the decidable instance
-- double check no leakage
example : Bool := by
fail_if_success have := ∀ p, decide p -- no classical in scope
exact decide (0 < 1) -- uses the decidable instance
-- check that classical respects tactic blocks
example : Bool := by
fail_if_success have := ∀ p, decide p -- no classical in scope
( -- start a scope
classical
have := ∀ p, decide p -- uses the classical instance
)
fail_if_success have := ∀ p, decide p -- no classical in scope again
exact decide (0 < 1) -- will use the decidable instance