Se due valori in Agda o qualche altra lingua tipizzata in modo dipendente, è possibile dimostrare che v₁
non è uguale a v₂
, è possibile provare v₁
uguale a v₂
?Se due cose non sono uguali, sono uguali?
Come, c'è una funzione del tipo ((v₁ ≡ v₂ → ⊥) → ⊥) → v₁ ≡ v₂
?
Questo sembra qualcosa che è sicuro aggiungere come assioma se non può essere provato, dal momento che può esserci al massimo un valore di v₁ ≡ v₂
.
Un motivo interessante è che la doppia negazione ((a → ⊥) → ⊥
) costituisce un monad. Di solito non puoi estrarre i valori da esso, ma puoi usare certi valori, come ⊥
(se si ottiene una contraddizione nella monade della logica classica, si ha una contraddizione). Mi stavo chiedendo se l'uguaglianza fosse una cosa che poteva essere estratta.
Penso che sia dimostrabile nella teoria del tipo osservazionale, ma anche se non lo è, puoi postulare qualsiasi cosa sia collegata all'uguaglianza senza rompere le proprietà computazionali del sistema. – user3237465