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

admit seems to affect code before it #149

Open
mtzguido opened this issue Jan 11, 2024 · 1 comment
Open

admit seems to affect code before it #149

mtzguido opened this issue Jan 11, 2024 · 1 comment

Comments

@mtzguido
Copy link
Member

This snippet works, even if it seems to be introducing an exists* (x:unit). Pure False.

```pulse
fn
test_intro (_:unit)
  requires emp
  ensures emp
{
  intro_exists (fun () -> pure False) ();
  admit()
}
```

Removing the admit makes it fail as it should.

```pulse
fn
test_intro (_:unit)
  requires emp
  ensures emp
{
  intro_exists (fun () -> pure False) ()
}
```

Puzzlingly, if I try to print the state before the admit, it seems as if intro_exists was not applied since it is bound at type stt_ghost.

```pulse
fn
test_intro (_:unit)
  requires emp
  ensures emp
{
  intro_exists (fun () -> pure False) ();
  show_proof_state;
  admit()
}
```
  - Tactic logged issue:
  - Current context:
      emp ** 
      emp
  - In typing environment:
      [_#2 : stt_ghost unit emp_inames (pure l_False) (fun _ -> exists* (_: unit). pure l_False),
      uu___85#1 : unit]
@nikswamy
Copy link
Collaborator

I think the problem is because the type of intro_exists is not interpreted properly in Pulse, since it uses a kind of points-free style of specification, which Pulse doesn't expect.

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

No branches or pull requests

2 participants