แก้ไข: นี่คือ SymPy
$ isympy
In [1]: A = MatrixSymbol('A', n, n)
In [2]: B = MatrixSymbol('B', n, n)
In [3]: context = Q.symmetric(A) & Q.positive_definite(A) & Q.orthogonal(B)
In [4]: ask(Q.symmetric(B*A*B.T) & Q.positive_definite(B*A*B.T), context)
Out[4]: True
คำตอบเก่ากว่าที่แสดงงานอื่น ๆ
ดังนั้นหลังจากที่ตรวจสอบเรื่องนี้สักพักนี่คือสิ่งที่ฉันได้พบ
คำตอบปัจจุบันสำหรับคำถามเฉพาะของฉันคือ "ไม่ไม่มีระบบปัจจุบันที่สามารถตอบคำถามนี้ได้" อย่างไรก็ตามมีบางสิ่งที่ดูเหมือนว่าจะเข้ามาใกล้
ครั้งแรกที่แมตต์ Knepley และ Lagerbaer ทั้งชี้ไปที่การทำงานของดีเอโก้ Fabregat และเปาโล Bientinesi งานนี้แสดงให้เห็นถึงความสำคัญที่อาจเกิดขึ้นและความเป็นไปได้ของปัญหานี้ มันเป็นการอ่านที่ดี น่าเสียดายที่ฉันไม่แน่ใจว่าระบบของเขาทำงานอย่างไรหรือมีความสามารถ (ถ้าใครรู้เรื่องข้อมูลสาธารณะอื่น ๆ ในหัวข้อนี้จะแจ้งให้ฉันทราบ)
ประการที่สองมีห้องสมุดพีชคณิตเทนเซอร์ที่เขียนขึ้นสำหรับ Mathematica ที่เรียกว่าxActซึ่งจัดการกับสมมาตรและสัญลักษณ์ดังกล่าว มันทำบางสิ่งได้ดีมาก แต่ไม่ได้ปรับให้เหมาะกับกรณีพิเศษของพีชคณิตเชิงเส้น
ประการที่สามกฎเหล่านี้ถูกเขียนอย่างเป็นทางการในห้องสมุดสองแห่งสำหรับCoqซึ่งเป็นผู้ช่วยพิสูจน์ทฤษฎีบทอัตโนมัติ (Google ค้นหาพีชคณิตเชิงเส้น / เมทริกซ์ coq เพื่อค้นหาบางประการ) นี่เป็นระบบที่ทรงพลังซึ่งน่าเสียดายที่มนุษย์ต้องมีปฏิสัมพันธ์
หลังจากพูดคุยกับบางคนที่รู้จักทฤษฎีบทพวกเขาแนะนำให้มองการเขียนโปรแกรมแบบลอจิก (เช่น Prolog ซึ่ง Lagerbaer แนะนำด้วย) สำหรับเรื่องแบบนี้ สำหรับความรู้ของฉันนี้ยังไม่ได้ทำ - ฉันอาจเล่นกับมันในอนาคต
ปรับปรุง: ฉันได้ดำเนินการนี้โดยใช้ระบบม้อด รหัสของฉันถูกโฮสต์บน Github