Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Find a way to implement strict composition #238

Open
ecavallo opened this issue Aug 16, 2018 · 5 comments · Fixed by #230
Open

Find a way to implement strict composition #238

ecavallo opened this issue Aug 16, 2018 · 5 comments · Fixed by #230

Comments

@ecavallo
Copy link
Collaborator

import path
import J

data vacu where
| more (x : vacu)

let Code (m : vacu) (n : vacu) : type =
  elim n [ more n' => Path vacu m n' ]

let test (m : vacu) (p : Path vacu (more m) (more m)) : Path vacu m m =
  J vacu (more m) (lam n _ -> Code m n) (lam _ -> m) (more m) p

raises Failure("rigid_hcom_strict_data: peel_arg"). The bug disappears if I make vacu nonrecursive.

@ecavallo ecavallo added the bug Something isn't working label Aug 16, 2018
@jonsterling
Copy link
Collaborator

@ecavallo Heh, I bet I forgot to deal with neutrals? Let me think about it.

@jonsterling
Copy link
Collaborator

Resolved by #230

@jonsterling
Copy link
Collaborator

Ahh, my fix didn't quite work. I'm disabling strict composition for now. I want to discuss it with the crew more to see if it can be recovered, but let me say two things:

  1. It is very expensive to even find out if we can do a strict composition
  2. Even if we can find a way to make that efficient, I am not sure it even makes sense. This thing, where you have to check that all the faces of the system are constructors seems very iffy to me in the open term setting; to really do it properly, you need a way to invert a constructor (like succ) on a neutral, and while we can define this for specific types, such as nat, I don't know if it makes any sense in general.

jonsterling added a commit that referenced this issue Aug 17, 2018
* not sure if needed

* fix another potentially subtle bug

* first pass at deleting box modality

* add files that I forgot to check in (Kind.mli, Lvl.mli)

* remove locks, tick constant, etc.

* delete bad idea, push_restriction

* adding explicit support for definitions, don't use "singleton types" for this

* dead code

* fancy typechecking algorithm with judgmental restriction

* start keeping track of which of Evan's brutal examples work

* add evan's brutal stuff to the makefile :)

* do not try to support subtyping between a restriction type & non-restriction type

* Revert "do not try to support subtyping between a restriction type & non-restriction type"

This reverts commit f4df7db.

* start adding more info to tactic input (just adding record for now)

* minor code cleanup

* code simplification

* potential switcharoo ???

* trying to get less owned by things being backwards ??

* pretty printing for debugging

* more partial fixing of resolution bugs

* more debuggable clause lookup

* debugging

* turn off unused-variable error (MAKES DEBUGGING IMPOSSIBLE)

* some reasonable changes

* temporary stop checking boundaries of elim clauses until I rectify

* think I may have fixed typechecking of elim

* minor fix

* first attempt to refine elim clause boundaries again

* tentative fix to evan's other example

* remove comment

* fix another bug found by @ecavallo (keep 'em coming!)

* reformat some code to use Jon Sterling Thought

* progress toward super advanced restriction-oriented elaborator

* explain Evan's other example

* rename utility function

* don't let the user type in a restriction type

* tentative fancy printing of goals with restriction

* fix generation of tactics for missing cases in elim

* comment

* smart constructor to decrease some term annotation clutter

* minor cleanup

* better version of typechecking algorithm

* NO MORE MANUAL ETA EXPANSION!!!!

* cleanup examples

* adding a basic auto tactic

* oops, remove quit statement

* one more

* exercise eta and auto a little more

* Close #212; close #237

* cleanup refiner interface a little

* factor sigma-intro out of elaborator and into refiner

* automatically do sigma-intro in auto

* formatting

* Elaborator: don't invoke normalizer to apply frames to terms

* add more stuff to torus example, note bug #240

* Resolve #240

* add "normalize" command (/cc @mortberg)

* finish up proof of torus ~ s1 × s1

* add links to other versions of the proof

* resolve #238

* removing bad.red from source control

* Oops, my fix didn't work. Just disable strict composition for now.

* add a clarifying comment

* remove bad.red from makefile
@favonia
Copy link
Collaborator

favonia commented Aug 17, 2018

This is not really closed yet.

@favonia favonia reopened this Aug 17, 2018
@jonsterling
Copy link
Collaborator

Well, if we will re-open it, let me at least rename it.

@jonsterling jonsterling changed the title hcom in strict type finding non-intro Find a way to implement strict composition Aug 17, 2018
@jonsterling jonsterling removed the bug Something isn't working label Oct 7, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants