Question

TL; DR: Puis-je dire: "K-Rule à Agda permet aux gens de correspondre $ forall aa équiv a $ avec $ reflé"?

Dans https://agda.readthedocs.io/en/v2.5.4.1/language/without-k.html#without-k, K-Rule est introduit comme une règle implicite et elle est activée par défaut. Si je le comprends correctement, cela signifie le paramètre de type $ forall aa équiv a $ peut être jumelé avec $ reflé. Si nous désactivons K-Rule, que se passera-t-il? Quel genre de codes cela va-t-il m'empêcher d'écrire? Parce que nous pouvons toujours construire $ forall a. a équiv a $, même sans k, nous pouvons toujours obtenir une instance de $ T $ en passant $ reflé à toutes les fonctions avec type $ forall aa équiv a rightarrow t $.

Le doc d'Agda m'a donné un exemple qui montre en effet une circonstance qui ne peut fonctionner qu'avec K:

K : {A : Set} {x : A} (P : x ≡ x → Set) →
    P refl → (x≡x : x ≡ x) → P x≡x
K P p refl = p

Dans ce code, si nous pouvons faire correspondre le modèle x≡x avec refl, P refl peut être trivialement équivalent à P x≡x (Mais sans K, nous ne pouvons pas).

Cela signifie-t-il: "k permet aux gens de correspondre $ forall aa équiv a $ avec $ reflé"? Je n'ai pas trouvé la réponse sur l'Agda Doc.

Si nous désactivons K, le type sémantique du type d'égalité d'Agda changera-t-il?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top