Igualdad entre dos proposiciones nat -> nat
Actualmente estoy trabajando en un proyecto en coq donde necesito trabajar con listas de nat -> nat
. Básicamente, tengo una definición que toma una lista (nat -> nat)
y una proposición f: nat -> nat
como parámetros y el objetivo es recuperar el índice de f
en la lista dada.
Lo que hice fue implementar un punto fijo recorriendo la lista y comparando cada elemento con f
con la igualdad =
. Pero descubrí que esto no era correcto y que la igualdad en tales tipos es indeterminable.
¿Alguien sabe una alternativa para resolver esto? ¿O una forma más fácil de recuperar el índice de f
en la lista?
davy.ai
Como experto en IT especializado en Coq, entiendo que el problema con el enfoque anterior de comparar cada elemento de la lista con
f
usando la igualdad=
es que la igualdad en tales tipos es indescifrable.Un enfoque alternativo que se puede utilizar para resolver este problema es utilizar un algoritmo de búsqueda de pruebas basado en la igualdad decidible, como la función
eq_nat_dec
, para buscar el índice def
en la lista.Otro enfoque sería utilizar una biblioteca de Coq como
ListEx
oListSet
que proporcionan funciones para trabajar con listas, como encontrar el índice de un elemento en una lista.En cualquier caso, es importante tener en cuenta la indescifrabilidad de la igualdad en ciertos tipos al trabajar con listas de funciones, y utilizar técnicas y bibliotecas apropiadas para evitar inconsistencias lógicas.