如何比較兩個 LaTeX 表示的數學表示式在語義上等價?

時間 2021-05-06 19:36:47

1樓:藥罐子千里冰封

假設你沒有使用一些自然語言特性,而是使用類似型別論的那種所有符號都有計算的定義的基本元素寫出來的。

然後這不是個 TeX 問題,而是符號計算的問題。如果你的表示式裡用到的運算組合出來是 Strongly normalize 的,那麼你只需要 normalize 你的表示式然後判斷 syntactic equality 就好了,比較簡單的例子有各種有全序關係的環,題目中的表示式中前者屬於這個範疇,後者應該不行。比如單變數的、僅有交換環上的運算構成的多項式,所有括號全部拆開後變成由加法連起來的 kx^n 形式的 term,按降冪排列就是 normal form,那些加不出來的常數排個序,只要表示式結構相等就一定相等。

很遺憾這個世界上有太多運算不 Normalize 了,更何況有很多數學概念的定義是感性的 (比如集合),相等的判斷更是無從談起。所以你的需求是不現實的 (雖然它有乙個現實的子需求)。

P.S. 可以考慮支援乙個 weakly normalize 的體系,引入乙個 tactic language 來指導 rewriting 從而手動證明相等。

然後你就發明了乙個類似 Isabelle 的東西。

2樓:stone-zeng

你需要 Mathematica:

isEqualTeXExpression

[texs__]:=

Module

[,exprs

=ToExpression[#

,TeXForm

,Inactivate]&

/@;Echo

@Dataset

@MapThread

[<|"TeX expressions"

->#1,

"Mathematica expressions"

->#2|>&,

,exprs

}];Equal

@@Activate

[exprs]]

測試如下:

isEqualTeXExpression

["\\frac"

,"\\frac"

]isEqualTeXExpression["(1+e)\\cdot 4^"

,"(\\frac)^"

]isEqualTeXExpression["\\sum_^\infty 1/k!"

,"\\lim_ \\left( 1+\\frac \\right)^x"

,"E"

]isEqualTeXExpression["\\sin(I \\pi/2)"

,"I \\sinh(\\pi/2)"

]一些說明:

反斜槓需要轉義成\\

Mathematica 裡面E和I分別自然對數的底和虛數單位,和e、i 不同

\cdot會被解析為CenterDot,是無內在意義的符號,因此沒有進一步計算

並不是所有的符號都能被正確解析

此時可以換用Interpreter開啟新世界的大門 (

SPSS詳細操作 兩個樣本均數比較的t檢驗

芊芊惠C 採用配方奶餵養和混合餵養的寶媽們每天都給寶寶們衝奶粉,那麼有沒有發現奶粉勺有什麼奇妙之處呢?其實,每款奶粉配的奶粉勺都不盡相同,有的手柄長 有的手柄短,有的有氣孔,有的沒氣孔 這些,你都知道嗎?1 手柄長度很多媽媽在選購奶粉的時候都會忽略奶粉勺的長度,可就是這個不起眼的小細節影響著媽媽們抓...

兩個骰子如何刻數能保證結果機率相等?

zzyzzy 這題是典型的OGF的應用。因為6 6 36,所以出現連續的結果個數必須是36的約數,i.e.1,2,3,4,6,36。樓上有乙個答案給了36的乙個可能,1的情形是trivial的。我來給乙個6的情形的做法,剩下題主可以考慮自己解決。1.如果剩下兩個都不和6一邊,那麼得出的一對骰子是和如...

學而思兩個職位的比較?

我也是千里馬專案剛接到的offer,是學科產品運營,純職能不講課,之前是純網際網路偏電商方向的運營和產品方向的實習經歷和專案經歷,定的薪資基本上對於應屆生的我來說比較滿意了。為什麼不去純網際網路公司,有一方面是沒拿到心儀的offer,像位元組那邊調劑崗位的運營內容我不是很想做,畢業時間被卡導致電商系...