compute-engine icon indicating copy to clipboard operation
compute-engine copied to clipboard

Enabling Summation Subscript Equations

Open emily0622 opened this issue 1 year ago • 4 comments

The summation is unable to parse a group containing more than a single argument in the subscript.

Error Examples 1) latex: \sum_{n,m} k_{n,m} ["Sum",["Subscript","k",["Delimiter",["Sequence","n","m"],"','"]],["Error",["ErrorCode","'incompatible-domain'","Symbols","Undefined"],["Delimiter",["Sequence","n","m"],"','"]]]

latex: \sum_{n \in N}K_n ["Sum","K_n",["Error",["ErrorCode","'incompatible-domain'","Symbols","Undefined"],["Element","n","N"]]]

Would like the parser to insert the mathjson of the equation in place of the subscript/superscript.

Proposed Solution to Examples Above 1) ["Sum",["Subscript","k",["Delimiter",["Sequence","n","m"],"','"]],["Hold",["Delimiter",["Sequence","n","m"],"','"]]] 2) ["Sum","K_n",["Hold",["Element","n","N"]]]

emily0622 avatar Dec 06 '23 18:12 emily0622

Hi, can I implement it?

emily0622 avatar Dec 06 '23 18:12 emily0622

Sure! That would be great. You'll want to extend the canonicalIndexingSet function in src/compute-engine/library/utils.ts and then the evalSummation and evalMultiplication function to make use of the extended indexing set.

The correct output should be ["Sum", ..., "n", "m"] for \sum_{n, m} or ["Sum", ..., ["Pair", "n", 1], ["Pair", "m", 1]] for \sum_{n=1, m=1}...

arnog avatar Dec 06 '23 19:12 arnog

Hi @arnog , some follow-up questions:

  1. Why would \sum_{n,m} -> ["Sum",...,"n","m"] instead of ["Sum",...,["Hold","n"],["Hold","m"]]?
  2. would \sum_{n,m}^{j,k} x -> ["Sum", "x", ["Triple","n",1,"j"], ["Triple","m",1,"k"]]
  3. and would \sum_{d \in D;d \ne 5}{} d -> ["Sum", "d", ["Element","d","D"], ["NotEqual","d","5"]]

emily0622 avatar Dec 09 '23 00:12 emily0622

  1. The Hold is not actually necessary since the Sum is already 'hold: "all"` (I know it's generated right now, but it could be removed).
  2. yes, presumably
  3. yes

arnog avatar Dec 09 '23 00:12 arnog