Предположим, что мне нужно, чтобы доказать что-то вроде следующего:Простой способ упростить выражение в анонимной функции?
x: nat
(fun _ : nat => 0) = (fun y : nat => if beq_nat x y then 0 else 0)
Поскольку y
не в окружающей среде, это выглядит как я не могу уничтожить на beq_nat x y
упростить правую часть. Есть ли простой способ упростить выражения в анонимной функции?
Помимо возможности массировать две функции, чтобы выглядеть одинаково, существует ли способ вывести, что две функции одинаковы, показывая, что они производят одинаковое значение на всех входах?
EDIT: Я понимаю, что я могу просить о невозможности, поскольку эти функции не совпадают, просто при применении к аргументу они дают одинаковое значение. Я не уверен, как именно это интерпретирует Coq.
Да, это похоже на то, что происходит. Предполагая, что в моем случае аксиома не является проблемой, так как нет других вспомогательных аксиом. –