Investigation: Free Form Notebooks

These are two Wolfram Cloud modules I like to port into Observable.

Free Form vs. API interface

The fundamental tech used is called Programmable Linguistic Interface (PLI):

And in part we do use some of the linguistics Free Form interface of Wolfram Alpha in specific the parser that interprets math expressions. BTW you have the very talented Prof. McClure who worked closely with the Wolfram Alpha team for number of years.


  1. We seek an extension to the concept of software API that involves accessing parts of a dynamical system e.g. inclined surface or refraction of lenses as opposed to 100s of little functions to deal with some graphics or computation not so obviously being a part of the dynamical system

  2. We want a concept of an Example Operator e.g.

For refraction system
example n1=2 and Theta2=20.25 and n1=2 and n2=3.14714”

For inclined system
example initially at rest moving up on the inclined”
example no external force at rest on the inclined ramp”

  1. We want Free Form solvers for each dynamical system

solve inclined initially at rest moving downward on the inclined ramp given Theta=23 and mu=0.4”
solve refraction experiment i={20,30,40,50,60,70} and r={14,20,26,31,35,38} and n1=1”

NOTE: the solvers output step-wise full interim solutions of the dynamical systems equations.

We want Example Operator to be custom programmable, we want it to be live and reside in a Cloud with Free Form interface not with the hard software APIs as we all use.

Proposed Investigation:

i. Build an Observable notebook for a dynamical system which has an input box where the programmer/user could simple type Free Form natural language expressions to access a dynamical system

ii. Observable code calls the Wolfram Cloud Object to access dynamical system and instead of specifying function names and variables and all that, simply concatenates the Free Form input form the user and the dynamical system in the cloud does the computations and return the results

Needed help:

A. Subscript/superscript symbols support

B. Parser to parse simple but general math expressions including known functions e.g. Exp or Sqrt and etc. so the Javascript could recompute locally in the notebook

C. 2D and 3D geometry output in json or obj or whatever

D. Animation support