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