Que projeto sensacional! Só fiquei pensando porque não implementar a possibilidade de criar essas lógicas de maneira mais simples como ^ para AND, v para OR, ~ para NOT e por aí vai, mas no README está descrito:
// Not supported ❌
frege.evaluate('~(p ^ Q)', {p: false, Q: true});
Obs.: Parabéns pelo repositório no Github, está muito bem escrito!
Obs2.: Também cursei Ciência da Computação e este repositório é uma diversão imensa, parabéns mais uma vez pela escolha do tema de TCC e pela disposição por criar uma implementação para desbloquear a lógica!!!