lean4-htt/tests/lean/run/decEq.lean
Joachim Breitner 316ff35afd
feat: deriving instances: use accessible names (#10271)
This PR changes the naming of the internal functions in deriving
instances like BEq to use accessible names. This is necessary to
reasonably easily prove things about these functions. For example after
`deriving BEq` for a type `T`, the implementation of `instBEqT` is in
`instBEqT.beq`.
2025-09-06 18:12:20 +00:00

49 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) (instDecidableEqPubInd.decEq 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)