lean4-htt/tests/lean/run/classical.lean
2024-10-16 03:35:41 +00:00

21 lines
812 B
Text

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