Support for defining intermediary definitions in-between fields of an inductive constructor
Open
- Dominant language
- F*
- Stars
- 3.1k
- Forks
- 266
- Avg merge
- 21h 1m
- Merged PRs (30d)
- 54
Description
Following a discussion in the F* meeting, it would be nice to be able to do something like:
```
type klass =
| Klass:
length:nat -> (
let t = s:seq nat { S.length s = length } in
lemma: (t -> ...) ->
klass)
```
I think Santiago and Guido both expressed an interest in having this feature.
Contributor guide
Research direction
Start by reviewing the proposed inductive-constructor syntax and the referenced F* meeting discussion. Identify the parser, elaboration, and type-checking entry points for constructor fields; done means intermediary let and lemma definitions are accepted between fields while the example typechecks.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100