Existe alguma tática em Coq que pode transformar uma expressão bool em Prop?
Sep 30 2020
Por exemplo, tenho esta hipótese no meu contexto:
Heq: (a =? b) &&
(c =? d) &&
(e =? f) = true
que eu gostaria de transformar para isso:
Heq: (a = b) /\
(c = d) /\
(e = f)
Eu vi essa tática pós- coq para substituir bools por Prop, mas não foi muito fácil para mim usar essas táticas porque não há nenhuma Is_trueexpressão em meu contexto.
Editar:
Heqé modificado adicionando = trueuma vez que cometi um erro ao lê-lo no contexto pela primeira vez.
Respostas
1 DanJohnson Oct 02 2020 at 04:59
Eu resolvi isso:
apply Bool.andb_true_iff in Heq.
que adiciona = trueàs duas últimas expressões booleanas e substitui a segunda &&por /\.
Em seguida, divido a Heqexpressão em duas subexpressões por:
destruct Heq as (HeqA & HeqB).
e fez a mesma coisa na subexpressão bool esquerda restante:
apply Bool.andb_true_iff in HeqA.
destruct HeqA as (HeqA & HeqC).
Finalmente, converti a igualdade bool em igualdade Prop por:
apply beq_nat_true in HeqA.
apply beq_nat_true in HeqB.
apply beq_nat_true in HeqC.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?