Expreduce
Expreduce es un nuevo proyecto con licencia MIT que tiene una implementación bastante completa de la semántica del lenguaje. Además, tiene una buena colección de definiciones que proporcionan la funcionalidad CAS, junto con la documentación para que coincida. También hay un gran conjunto de pruebas para la verificación. Su objetivo es tener un núcleo pequeño con la mayor parte de la funcionalidad implementada en el propio lenguaje utilizando el paradigma de la regla de reescritura. El núcleo está escrito en Go.
Estos son algunos ejemplos de lo que se puede calcular:
- ¿Existe una solución analítica para log (t) - At = B?
- Si pudiera saber, comprender y ser capaz de enseñar a otros la solución a un problema matemático, ¿cuál sería?
- ¿Cuál será la cobertura canónica de F = {A-> BC, B-> AC, C-> AB}?
- ¿Cuál es la diferencia entre un logaritmo y un algoritmo?
- ¿Cuál es la diferencia entre prueba de trabajo y prueba de participación? ¿Hay algún proyecto relacionado con las criptomonedas que use únicamente el método de prueba de participación?
En [1]: = D [Cos [Log [Sin [x]] + x] + x, x] Out [1] = (1 + (-1 * (1 + Cot [x]) * Sin [(x + Log [Sin [x]])])) En [2]: = Integrar [5 * E ^ (3 * x), {x, 2, a}] // Expandir Fuera [2] = ((-5/3 * E ^ 6) + (5/3 * E ^ (3 * a)))
La funcionalidad CAS utiliza una colección de reglas de reescritura. Por ejemplo, la regla del producto para derivados se implementa usando solo una línea:
D [a_ * b_, x_]: = D [a, x] * b + a * D [b, x]
La implementación carece actualmente de visualizaciones y la funcionalidad de Solve, entre otras cosas. En este momento es solo una terminal, pero tal vez habrá una interfaz de computadora portátil Jupyter para ella en el futuro. Prácticamente no tiene dependencias y debería ejecutarse en muchas plataformas. El binario es solo 10MB. Como no llama a otro CAS de código abierto, hay muchas operaciones que no puede hacer. Afortunadamente, el paradigma de la regla permite el desarrollo rápido de nuevas características. También podría beneficiarse al obtener el algoritmo de Risch para la integración. En este momento, las integraciones se resuelven principalmente mediante heurísticas simples. Si prefiere cálculos más complicados, considere usar Mathics, que está respaldado por Sympy.
mmaclone
También hay una implementación interesante de Haskell del motor de coincidencia de patrones de Yonghao Jin en jyh1 / mmaclone.