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

Surprising definitional equality between empty matches from irrelevant to relevant at different indices #19041

Closed
SkySkimmer opened this issue May 17, 2024 · 1 comment · Fixed by #19064
Labels
kind: bug An error, flaw, fault or unintended behaviour. part: kernel part: SProp Proof irrelevance and strict propositions.
Milestone

Comments

@SkySkimmer
Copy link
Contributor

Inductive T : bool -> SProp := .

Goal forall (x:T true) (y:T false), match x return bool with end = match y return bool with end.
Proof.
  intros.
  reflexivity.
Qed.

I don't know if there's a way to break consistency or subject reduction or some other deisrable property from this, but it's not implied by the proof irrelevance rule "if x and y are at the same SProp type then they're convertible" so it's a bug.

@SkySkimmer SkySkimmer added part: kernel kind: bug An error, flaw, fault or unintended behaviour. part: SProp Proof irrelevance and strict propositions. labels May 17, 2024
@SkySkimmer
Copy link
Contributor Author

SkySkimmer commented May 17, 2024

NB: a presentation using eliminators instead of matches would not encounter this issue as the terms to compare are T_rec _ true x and T_rec _ false x, ie the indices are present.

ppedrot added a commit to ppedrot/coq that referenced this issue May 21, 2024
…vert.

Fixes coq#19041: Surprising definitional equality between empty matches.
@coqbot-app coqbot-app bot added this to the 8.20+rc1 milestone May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind: bug An error, flaw, fault or unintended behaviour. part: kernel part: SProp Proof irrelevance and strict propositions.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant