anonymous ctor notation fails on constructors of type families with explicit params
Nobody has claimed this yet.
- Dominant language
- Lean
- Stars
- 9.2k
- Forks
- 990
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 175
Description
Prerequisites
Please put an X between the brackets as you perform the following steps:
- Check that your issue is not already filed:
https://github.com/leanprover/lean4/issues - Reduce the issue to a minimal, self-contained, reproducible test case.
Avoid dependencies to Mathlib or Batteries. - Test your test case against the latest nightly release, for example on
https://live.lean-lang.org/#project=lean-nightly
(You can also use the settings there to switch to “Lean nightly”)
Description
The anonymous constructor notation ⟨...⟩ fails to pass parameters to the constructor when the constructor requires that parameters be passed explicitly.
Steps to Reproduce
inductive Pointed : Type → Type
| mk α : α → Pointed α
example : Pointed Bool := ⟨false⟩
example : Pointed (String × Nat) := ⟨"", 0⟩
Expected behavior: The code should succeed with no errors, as it does when α is an implicit parameter to mk.
Actual behavior: The code results in the following errors:
application type mismatch
Pointed.mk false
argument
false
has type
Bool : Type
but is expected to have type
Type : Type 1
invalid constructor ⟨...⟩, expected type must be an inductive type
Type
Versions
Lean 4.16.0-nightly-2025-01-06
Appears in Lean 4.0.0-m5, though I did not check before this.
Impact
Add 👍 to issues you consider important. If others are impacted by this issue, please ask them to add 👍 to it.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the minimal Pointed examples from the issue against the reported Lean nightly version and compare them with constructors whose parameters are implicit. Trace the anonymous constructor notation elaboration and ensure explicit constructor parameters are handled so both examples compile without errors.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100