Pourquoi ne peut pas correspondre à $ bool equiv bool $ avec $ reflète tandis que 1 $ équiv 1 $ peut?

cs.stackexchange https://cs.stackexchange.com/questions/98460

  •  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
scroll top