Утверждение, которое вы пытаетесь доказать, - это (по сути) функциональная расширяемость, которая, как известно, не известна как , которую невозможно доказать в Coq без дополнительных аксиом.По сути, идея заключается в том, что f
и g
могут преднамеренно сильно отличаться (их определения могут выглядеть по-разному), но при этом принимать одинаковые значения.Равенство функций (fun x => f x) = (fun x => g x)
будет (без каких-либо дополнительных аксиом) означать, что две функции синтаксически одинаковы.
Например, взять f(n) = 0
и g(n) = 1 if x^(3 + n) + y^(3 + n) = z^(3 + n) has a non-trivial solution in integers, otherwise 0
(обе функции от натуральных чисел до натуральных чисел),Тогда f
и g
намеренно различаются - одно синтаксически не сводится к другому.Однако, благодаря Эндрю Уайлсу, мы знаем, что f
и g
в значительной степени одинаковы, так как g(n) = 0
для всех n
.
Вы можете свободно добавлять свою лемму (или различные усиления) в видеАксиома к Coq, не беспокоясь о несостоятельности.