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

Remove FStar.Ghost.Pull #3636

Merged
merged 3 commits into from
Jan 7, 2025
Merged

Remove FStar.Ghost.Pull #3636

merged 3 commits into from
Jan 7, 2025

Conversation

gebner
Copy link
Contributor

@gebner gebner commented Dec 17, 2024

This PR removes the pull axiom. The pull axiom is incompatible with other axioms that we might consider adding in the future. Removing it now leaves the door open for these future changes.

Without pull, the total and ghost function spaces no longer coincide. One way to think of this is as follows:

  • a -> Tot b is the space of the computable functions
  • a -> GTot b is the space of all (mathematical) functions

@TWal
Copy link
Contributor

TWal commented Dec 17, 2024

I am curious why this axiom is removed? Is it because it introduces an unsoundness?

@gebner
Copy link
Contributor Author

gebner commented Dec 17, 2024

Hi Theophile. There are no concrete plans to pull pull. That's why this PR is marked as draft.

However, pull is one of the few axioms that we include in F* and I have been trying to figure out how much code relies on it. So far I couldn't find anything that makes essential use of pull (see also FStarLang/pulse#291 and project-everest/everparse#160). If you use pull, I'd be curious to learn more.

Is it because it introduces an unsoundness?

I believe that pull is sound. But the negation of pull piqued my interest.

@TWal
Copy link
Contributor

TWal commented Dec 18, 2024

If you use pull, I'd be curious to learn more.

No, I am not using the pull axiom.

I see, if I understand correctly this axiom is convenient, but in practice it can be replaced by something else, so this PR asks the question why we should keep it?

@gebner
Copy link
Contributor Author

gebner commented Dec 18, 2024

I see, if I understand correctly this axiom is convenient, but in practice it can be replaced by something else, so this PR asks the question why we should keep it?

Apparently, my comment was too opaque then. 😄 I want to add a parametricity axiom to F* that conflicts with pull. If pull was actually used, then that would be a big price to pay. But as this PR shows, we can easily remove pull and make room for this other axiom.

@TWal
Copy link
Contributor

TWal commented Dec 19, 2024

Ah ok, thanks for the explanations!

@gebner gebner force-pushed the gebner_rm_ghost_pull branch from f738d5c to 77f5528 Compare December 21, 2024 00:49
@gebner gebner marked this pull request as ready for review January 7, 2025 19:48
@gebner gebner enabled auto-merge January 7, 2025 19:48
@gebner gebner merged commit 81e6d7d into master Jan 7, 2025
4 checks passed
@gebner gebner deleted the gebner_rm_ghost_pull branch January 7, 2025 20:24
@nikswamy
Copy link
Collaborator

nikswamy commented Jan 8, 2025

We discussed this the other day and decided that if we can rework proofs without relying on the Pull axiom, then let's remove the axiom altogether.

One todo: The PoP in F* book mentions pull here, and this should be revised
https://github.com/FStarLang/PoP-in-FStar/blob/main/book/part4/part4_ghost.rst#fstarghostpullpull

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 this pull request may close these issues.

3 participants