Ok. Something to consider is rendering to Mathematica output. (And then
doing the same thing for Sage.)

On Fri, Jul 10, 2020 at 1:37 PM Fredrik Johansson <
fredrik.johans...@gmail.com> wrote:

> I will just mention http://fungrim.org/grim/ which is somewhat related to
> the present discussion.
>
> This is an attempt to design a symbolic formula language that is easy to
> parse and has well-defined semantics. Key points:
>
> * Can be used within Python (and other languages) without special syntax
> * Expressly designed to describe mathematical objects and not for
> reflection (manipulation of symbolic expressions is meant to be done in the
> environment, e.g. Python, not from within the symbolic expression language)
> * Expressions are inert by default (there is no automatically-enforced
> pseudo-canonical form, and any form of evaluation or rewriting must be
> invoked explicitly by the user)
> * Evaluation and simplification is subject to a rigorous assumptions system
> * There is an explicit distinction between symbolic variables and
> polynomial indeterminates
> * Real numbers are mathematical real numbers
> * Functions are mathematical functions, with well-defined and consistent
> behavior at "exceptional points"
>
> The specification is still far from complete and the implementation still
> has a long way to go, but I'm working on it :-)
>
> I'm using it with some success to build http://fungrim.org/. Thanks to
> the strong semantics, it is possible to do automated randomized testing of
> the formulas and their assumptions. To illustrate:
>
> >>> formula = Equal(Gamma(x+1), x*Gamma(x))
> >>> formula.test(variables=[x], assumptions=Element(x, CC))
> {x: -3}    ...  True
> {x: 8}    ...  True
> {x: 0}    ...  False
> Traceback (most recent call last):
>   ...
> ValueError
>
> (Gamma(0+1) = 0*Gamma(0) is not a true identity.) With correct
> assumptions, excluding the poles:
>
> >>> formula.test(variables=[x], assumptions=Element(x, SetMinus(CC,
> ZZLessEqual(0))))
> {x: Sqrt(2)}    ...  Unknown
> {x: Mul(Mul(2, Pi), ConstI)}    ...  Unknown
> {x: Div(Mul(3, Pi), 2)}    ...  Unknown
> {x: Neg(Div(1, 2))}    ...  True
> {x: Div(1, 2)}    ...  True
> {x: Add(Sqrt(2), 1)}    ...  Unknown
> {x: Add(1, ConstI)}    ...  Unknown
> ...
> {x: Sub(Pi, ConstI)}    ...  Unknown
> {x: Sub(Sqrt(2), 1)}    ...  Unknown
> {x: 64}    ...  True
> {x: 255}    ...  Unknown
> {x: 7}    ...  True
> Passed 100 instances (25 True, 75 Unknown, 0 False)
> {'True': 25, 'Unknown': 75, 'False': 0, 'Total': 100}
>
> Fredrik
>
> On Friday, July 10, 2020 at 5:21:07 PM UTC+2 rocky.b...@gmail.com wrote:
>
>> Ok. This is on my back-burner list of things to get to.
>>
>> It is something I would like to do, and think I could do reasonably well,
>> but I never know if I'll have the free time.
>>
>> And if someone else wants to take the lead, I'll be happy to share what I
>> know on the compiler/transpiler end and contribute.
>>
>> Also, if there is funding for this effort, then it will most likely get
>> done.
>>
>>
>>
>> On Fri, Jul 10, 2020 at 10:52 AM kcrisman <kcri...@gmail.com> wrote:
>>
>>>
>>>
>>>
>>>   Clearly, adding the ability to parse some Mathematica code fits well
>>>> into that goal.  If nothing else, it could be a helpful step in converting
>>>> existing Mathematica user code so that it can work in Sage, and that's
>>>> part of being a viable alternative.
>>>>
>>>
>>> This is an important point that I am sorry we did not mention earlier;
>>> thanks, William.  I have definitely had many requests for such an automated
>>> tool in the past from colleagues with a lot of Mma stuff.
>>>
>>> --
>>>
>> You received this message because you are subscribed to a topic in the
>>> Google Groups "sage-devel" group.
>>> To unsubscribe from this topic, visit
>>> https://groups.google.com/d/topic/sage-devel/z3XBhQOCh9E/unsubscribe.
>>>
>> To unsubscribe from this group and all its topics, send an email to
>>> sage-devel+...@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/sage-devel/8dd1a617-6bcc-40e3-a1c7-89efb2927597o%40googlegroups.com
>>> <https://groups.google.com/d/msgid/sage-devel/8dd1a617-6bcc-40e3-a1c7-89efb2927597o%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
> You received this message because you are subscribed to a topic in the
> Google Groups "sage-devel" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/sage-devel/z3XBhQOCh9E/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> sage-devel+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sage-devel/050a44ed-e31b-4ddb-8687-fc9dcd53e3c1n%40googlegroups.com
> <https://groups.google.com/d/msgid/sage-devel/050a44ed-e31b-4ddb-8687-fc9dcd53e3c1n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/CANCp2gY2DC%3DH0U6jKvdD-pWbkDABYc3FktR2okRJhSsu8BunGA%40mail.gmail.com.

Reply via email to