lean4-htt/tests/lean/run/decEq.lean
Joachim Breitner 1718ca21cd
feat: deprecate .toCtorIdx for .ctorIdx (#10113)
This PR deprecates `.toCtorIdx` for the more naturally named `.ctorIdx`
(and updates the standard library).
2025-08-25 14:32:05 +00:00

56 lines
1.5 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`. -/
/--
trace: [Elab.Deriving.decEq] ⏎
public instance : DecidableEq✝ PubEnum✝ := fun x✝ y✝ =>
if h✝ : x.ctorIdx✝ = y.ctorIdx✝ then
isTrue✝
(by
first
| have aux✝ := congrArg✝ PubEnum.ofNat h✝; rw [PubEnum.ofNat_ctorIdx, PubEnum.ofNat_ctorIdx] at aux✝;
assumption
| rfl)
else isFalse✝ fun h✝ => by subst h✝; contradiction
-/
#guard_msgs in
set_option trace.Elab.Deriving.decEq true in
public inductive PubEnum where
| a | b
deriving DecidableEq
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)