Edit: Agora está no 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
Resposta mais antiga que mostra outro trabalho
Então, depois de analisar isso por um tempo, foi o que eu encontrei.
A resposta atual para minha pergunta específica é "Não, não existe um sistema atual que possa responder a essa pergunta". No entanto, existem algumas coisas que parecem se aproximar.
Primeiro, Matt Knepley e Lagerbaer apontaram para o trabalho de Diego Fabregat e Paolo Bientinesi . Este trabalho mostra a importância potencial e a viabilidade desse problema. É uma boa leitura. Infelizmente, não sei exatamente como o sistema dele funciona ou do que ele é capaz (se alguém souber de outro material público sobre esse assunto, me avise).
Segundo, há uma biblioteca de álgebra tensorial escrita para o Mathematica chamada xAct, que lida com simetrias e simbolicamente. Ele faz algumas coisas muito bem, mas não é adaptado ao caso especial da álgebra linear.
Terceiro, essas regras são formalmente escritas em algumas bibliotecas para o Coq , um assistente automatizado de prova de teoremas (o Google pesquisa a álgebra linear / matricial coq para encontrar algumas). Este é um sistema poderoso que infelizmente parece exigir interação humana.
Depois de conversar com algumas pessoas que provam o teorema, elas sugerem procurar na programação lógica (ou seja, Prolog, que Lagerbaer também sugeriu) esse tipo de coisa. Que eu saiba, isso ainda não foi feito - eu posso brincar com isso no futuro.
Atualização: eu implementei isso usando o sistema Maude . Meu código está hospedado no github