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

Annotation-based forward slicing #81

Closed
6 tasks done
rolyp opened this issue Mar 7, 2019 · 1 comment
Closed
6 tasks done

Annotation-based forward slicing #81

rolyp opened this issue Mar 7, 2019 · 1 comment

Comments

@rolyp
Copy link
Collaborator

rolyp commented Mar 7, 2019

  • remove all existing Bot and null constructs
  • abstract (lattice) notion of annotation
  • annotations on expressions, values
  • forward slicing for closeDefs
  • forward slicing for lookup (requires annotated continuations)
  • forward slicing for eval (requires resolving issue with shared values)
@rolyp
Copy link
Collaborator Author

rolyp commented Mar 7, 2019

It seems there's an inconsistency between the idea that values can be "shared" (e.g. bound to a variable which is used non-linearly) and the idea that availability annotations are combined conjunctively. If I bind a particular instance of the number 5 to x, and then use x in two places with distinct availabilities, I cannot reflect those distinct availabilities at the uses, because they have to be intersected. There is a similar situation with all the non-terminal forms (application, let, etc), since they share values with a subcomputation.

It's worth noting that it is sharing within a computation which is problematic for slicing, whereas for "differential" execution we are actually only interested in sharing across computations. Perhaps we can somehow have the latter in a useful way while precluding the former?

Related thought: I haven't yet considered how this notion of (where?) provenance is related to the scheme for identifying nodes in the computation. If we identify nodes in such a way that (otherwise shared) nodes are always discriminated by their "usage" context (e.g. so that for example the identity of the value of an application depends on the identity of the application expression), then perhaps these notions start to become related: my identity is the set of nodes that need to be available for me to be available, and my availability is the conjunction of the availability of those nodes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

1 participant