Comments (5)
Yes.
from pikelet.
I've read the report and Conor's post more carefully. In my previous comments I thought that my lifting is the same, but it's not. My implementation was about elaborating cumulative surface syntax to non-cumulative core. The other kind of lifting is an alternative to universe polymorphism. The two operations are very different, and they actually seem to be orthogonal. In principle, one could use my lifting (which is roughly the same as the lifting in Jon's paper) to emulate cumulativity, and the other lifting to emulate (some part of) universe polymorphism. The complications in Rouhling's report seem clearly necessary to me, and I also get now how lifting closed definitions is simpler.
Currently I'm more in favor of just biting the bullet and going full Coq: core syntax with implicit cumulative subtyping + universe polymorphism + constraint solving. It's not simple, but:
- Non-cumulativity as in Agda is annoying, and elaborating cumulativity to lifts (as in my demo) adds significant cost and noise.
- As soon as we want cumulativity (whether "emulated" or not) together with general-purpose unification, we need constraint solving for level ordering anyway! If I can write a hole in the program, in inference mode I need a level meta for the type of the hole. But note that level solving does not have to be very sophisticated to be useful.
So I think Conor-style lifting is probably a good design point if we don't have unification; otherwise it makes sense to extend existing machinery to deal with universe polymorphism.
from pikelet.
One potential downside of univ-lifts
is that it seems to duplicate the evaluator to improve the elaboration output. See delift
. Still trying to get my head around it, but perhaps the Internship Report's approach gets around this somehow?
from pikelet.
Thanks for the clarification! Sorry if I was confused too!
from pikelet.
Jon's paper
Oh I think I actually missed this one, which is also why I've been confused. Was that "Algebraic Type Theory and Universe Hierarchies"?
from pikelet.
Related Issues (20)
- Move to an incremental/query driven architecture HOT 8
- Turn theory appendix in book into the Pikelet specification HOT 6
- Fix ambiguous dependent function syntax HOT 1
- Pattern match compilation
- Don't panic on mismatched number of record fields
- Get Pikelet to build on wasm HOT 14
- Terminology bikeshed: Universe shifting/lifting/embiggening HOT 5
- Rename signed integer types
- Allow fields to be shifted
- Add a list of keywords to the docs
- Remove `of` keyword from case expressions
- Pikelet driver/loader API HOT 12
- Package manager HOT 4
- Add a top-level integration test suite
- Move away from using Moniker for variable binding HOT 7
- Try using Logos for the lexer HOT 1
- Merge next branch into master
- Fix unfolding avoidance for local variables
- Workspace doesn't build on a headless linux system HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pikelet.