lean4-htt/tests/lean/run/decEq.lean
Sebastian Ullrich e74e9694fe
feat: revamp and unify visibility/exposure handling in deriving handlers (#10148)
Visibility is now handled implicitly for all deriving handlers by
adjusting section visibility according to the presence of private types
while removing exposition on presence of private constructors can be
opted in on a per-handler level via the new combinator
`withoutExposeFromCtors`.

Fixes #10062 #10063 #10064 #10065
2025-08-27 09:10:24 +00:00

47 lines
1.1 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

module
inductive Vec (α : Type u) : Nat → Type u
| nil : Vec α 0
| cons : α → {n : Nat} → Vec α n → Vec α (n+1)
deriving DecidableEq
inductive Test (α : Type)
| mk₀
| mk₁ : (n : Nat) → (α × α) → List α → Vec α n → Test α
| mk₂ : Test αα → Test α
deriving DecidableEq
def t1 [DecidableEq α] : DecidableEq (Vec α n) :=
inferInstance
def t2 [DecidableEq α] : DecidableEq (Test α) :=
inferInstance
/-! Public structures should yield public instances independent of `public section`. -/
public inductive PubEnum where
| a | b
deriving DecidableEq
/-- info: decide (PubEnum.b = PubEnum.b) : Bool -/
#guard_msgs in
#with_exporting
#check decide (PubEnum.b = PubEnum.b)
public inductive PubInd where
| a (n : Nat) | b
deriving DecidableEq
/-- info: Decidable.rec (fun h => false) (fun h => true) (decEqPubInd✝ PubInd.b PubInd.b) -/
#guard_msgs in
#with_exporting
#reduce decide (PubInd.b = PubInd.b)
public inductive PubExpInd where
| a (n : Nat) | b
deriving @[expose] DecidableEq
/-- info: true -/
#guard_msgs in
#with_exporting
#reduce decide (PubExpInd.b = PubExpInd.b)