Pourquoi ne peut pas correspondre à $ bool equiv bool $ avec $ reflète tandis que 1 $ équiv 1 $ peut?
-
05-11-2019 - |
Question
Ce code dépend d'Agda-stdlib:
{-# OPTIONS --without-K #-}
open import Data.Nat
open import Data.Bool
open import Relation.Binary.PropositionalEquality
-- this code doesn't check, cannot match e with refl
why : (e : Bool ≡ Bool) -> ℕ
why refl = zero
but-why : (e : 1 ≡ 1) -> ℕ
but-why refl = zero
Je sais que K-Rule signifie que je ne peux pas correspondre $ forall aa équiv a $ avec $ reflé, mais si $ a $ est une valeur concrète, elle peut (c'est-à-dire 1 $ équiv 1 $ peut être jumelé avec $ reflé). Mais pourquoi je ne peux pas correspondre $ Bool equiv bool $ avec $ reflé? Pourquoi le type et la valeur sont-ils traités différemment dans un langage de programmation de type dépendance?
(Peut-être lié: Qu'est-ce que cela signifie si nous désactivons K-Rule dans Agda?)
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange