title: 如何编写一个函数判断两个函数是否相等？
desc: 函数狭指计算机编程意义上的函数，拥有0个或以上的输入值和1个输出值。<br><br>对于两个函数而言，f与g相等等价于如下条件：<br><b> 对于所有可能的输入，f和g都会得到相同的输出。<b><br><br><br>两个函数相等的可能性包括<b>但不限于<b>：<br>1，它们具有相同的表达式代码。<br>2，某一函数连续使用了原函数和反函数。<br><br>已知某一函数的代码可以被其他函数所读取，问：<br>如何编写一个可以在有限步骤内执行的函数，输入两个函数f和g，判断f和g是否相等，然后输出一个布尔值？<br>如果不能，如何证明？<br><br>追问：在一些在线数学作业和题目中比如webassign，有些题目在解答框中需要输入一个表达式往往带有变量x，n等，而只要输入的表达式同答案等价，一般都能作为正确答案通过，那么此类程序是如何判断表达式相等的呢？
topic: 数学
content: 程序等价性不可判定。另外“等价”也有不同定义，语法语义等价，内涵外延等价等等。。但是有很多情况还是可以的，比如某种lambda演算的contextual equivalence什么的。。举个用SMT solver 命令式语言的例子。。判断以下2个函数的等价性（ 函数的“”in-out关系“”等价） int power3int in int i， outa outa in for i 0 i < 2 i outa outa in return outaint power3newint in
answerer_tags: 再见