这是关于实现数学定理的一般设计问题。我正在尝试用编程语言从微分几何中实现一些数学定理(无论哪种都无所谓;为简单起见,我使用python语言,但这不应该影响一般思想。)。我可以用一个例子更好地描述这个问题。
定理: r>= 2 类曲面上的任何直线都是渐近曲线。
如何实现这样的定理。显然,该函数需要一条线作为参数,而曲面作为参数。
def theorem (line, surface): pass
函数应该只返回真、假还是不可判定?或者该函数是否应该返回“渐近”。如果我们将函数命名为“is-asymptotic”,那么它应该返回 true、false 或 undecidable。
函数应该检查的第一件事是线是否是直的。让我们不要深入细节。然后,它应该计算表面的类别
def theorem (line, surface):
if not straight(line, surface):
return "undecidable"
else:
if class-of(surface) >= 2:
???
上述方法促使我返回真/假。另一方面,如果我将它实现为一个名为 line 的类的方法,它要求给定 line 的所有属性,那么它应该返回一个属性列表,包括“渐近”。
最后,我在上面所做的是要求给定行的属性,即我们的论点。该函数没有说明所有其他直线。
您将如何解决定理的整个实现设计?
先感谢您。
PS。为了进一步阐明编程语言内容中的问题,将上述问题改写如下。假设我有一个对象“Line”的实例“line”。我是否询问实例是否是渐近的,如
is_asymptotic(line) # returns true/false/undecidable
还是我要询问它的属性并获取包含渐近属性的属性列表,如
line_properties(line) # returns [..., "asymptotic", ...]
或者在创建实例时,在检查它是否是直的之后,我将属性设置为渐近线,如
line = Line(surface) # sets line.asymptotic = True