Perché non può abbinare $ bool equiv bool $ con $ riflesso $ mentre $ 1 equiv 1 $ can?

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

  •  05-11-2019
  •  | 
  •  

Domanda

Questo codice dipende da 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

So k-role significa che non posso abbinare $ forall aa equiv a $ insieme a $ Reflit $, ma se $ a $ è un valore concreto, può (cioè $ 1 equiv 1 $ può essere abbinato a $ Reflit $). Ma perché non posso abbinare $ Bool equiv bool $ insieme a $ Reflit $? Perché il tipo e il valore sono trattati in modo diverso in un linguaggio di programmazione a livello dipendente?

(Forse correlato: Cosa significa se disabilitiamo K-Rule in AGDA?)

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top