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

coqc infinite loop in type class resolution

Aperta
#17 8 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

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

Direzione di ricerca

Inizia compilando con coqc il programma minimo presente nell’issue e conferma che la risoluzione delle type class non termina. Analizza il percorso di risoluzione delle type class coinvolto nelle istanze Equivalence e Op; il lavoro è completato quando il riproduttore termina invece di entrare in un ciclo indefinito.

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

Descrizione

Description of the problem

Compiling this program makes coqc go into an infinite loop.

Note that there is a "bug" in the program because I commented out `(Equivalence F).

This will make coqc search forever for which Equivalence instance it should
use in foo.

Require Import Setoid.
Require Import RelationClasses. (* for Equivalence  *)

Definition equ {T} {e} `(Equivalence T e) := e.
Notation "f == g" := (equ _ f g)  (at level 80).

Class Op (A:Type) := op : A -> A -> A.

Class C F  `(Op F) (* `(Equivalence F) *) :=
{
    foo : forall a b , op a b == op a b;
}.

Coq Version

I installed v8.15.1 with nix.

[nix-shell]$ coqc --version
The Coq Proof Assistant, version 8.15.1
compiled with OCaml 4.12.1

I also tried 8.14.1 and 8.13.1 with the same result.
And I just (July 16, 2022) tried it with master, i.e. 8.17+alpha 672b1443441df4e4777c4d2f7f6fb953bd97544a , and it still has the same problem.

Lingua principale
Rocq Prover
Stelle
42
Fork
40
Merge medio
20h 23m
PR unite (30g)
2

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 Compilers

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.