Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Conflicting use of "~=" in Coq.Program.Equality and Coq.Structures.Equalities

Aperta
#16 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
35/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Ambito
tooling

Direzione di ricerca

Esamina le dichiarazioni di ~= in Coq.Structures.Equalities e Coq.Program.Equality, quindi cerca nella libreria standard gli usi della notazione. Decidi quale dichiarazione o ambito dovrebbe essere modificato affinché l'importazione di entrambe le librerie non produca più un avviso di ridefinizione, quindi verifica le importazioni delle librerie interessate e tutti gli usi individuati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Description of the problem

The Coq.Structures.Equalities library file declares the ~= notation (in the empty scope) to mean inequivalence according to some equivalence relation:

Module Type EqNotation (Import E:Eq).
  Infix "==" := eq (at level 70, no associativity).
  Notation "x ~= y" := (~eq x y) (at level 70, no associativity).
End EqNotation.

The Coq.Program.Equality library file, however, declares it to mean heterogeneous-type equality:

Notation " x ~= y " := (@JMeq _ x _ y) (at level 70, no associativity).

This is not exactly a bug but leads to annoying redefinition warnings when including EqNotation in a module where the Equality library is imported.

Since most projects importing Coq.Program.Equality are probably doing so for access to its tactics, and not making use of the declared ~= notation, it is probably unnecessary to export that notation at all. I cannot find any actual uses of it within the standard library, so simply deleting the notation from Coq.Program.Equality is probably an acceptable solution. If in fact it is being used, another solution would be to declare it in type_scope or program_scope rather than the empty scope. However, it is in any case probably bad practice to use the same notation for equality in one setting and inequality in another, so probably some change should be made to one or the other of these declarations.

Coq Version

The Coq Proof Assistant, version 8.15.2
compiled with OCaml 4.13.1

Lingua principale
Rocq Prover
Stelle
45
Fork
39
Merge medio
1g 13h
PR unite (30g)
3

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di rocq-prover/stdlib

Tutte le issue di rocq-prover/stdlib

Issue simili

Altre issue su DevTools

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.