21 lines
812 B
Text
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
|