Qu'est-ce que cela signifie si nous désactivons K-Rule dans Agda?
-
05-11-2019 - |
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