add new built-in $x for accessing x value at each row
- Vorherrschende Sprache
- Rust
- Sterne
- 96
- Forks
- 39
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
In order do define some constraints, we may want to be able to define lagrange polynomials directly. In such cases, the domain value that is used for interpolation is needed, so we need a shortcut for referring to this x-value at each row.
We can do this by adding a new built-in value $x that represents x at any given row.
Here's an example from @dlubarov at Polygon Zero of how this could give more flexibility in defining constraints:
```
// Boundary constraint.
a * l_0(x) = 0
// Every other row.
a * odd_row(x) = 0
def odd_row(x) = (x^(n/2) - 1)
def l_0(x) = (x^n - 1) / (x - 1)
```
Required changes:
- [ ] parser
- [ ] IR
- [ ] codegen
This adds flexibility to AirScript, but Miden VM does not need this at the moment, so we could keep updates to the miden codegen very minimal (i.e. just throw an error if this is used)
Beitragsleitfaden
Rechercherichtung
Das Issue erfordert Änderungen am Parser, der Zwischendarstellung und der Codegenerierung. Beginnen Sie mit der Untersuchung des Parser-Quellcodes, um zu verstehen, wie Built-ins wie $x derzeit behandelt werden. Sehen Sie sich die IR an, um zu verstehen, wie Werte dargestellt und weitergegeben werden. Für die Codegenerierung sollte das Miden VM-Backend einen Fehler ausgeben, wenn $x verwendet wird, während andere Backends es unterstützen müssen. Überprüfen Sie vorhandene Tests für Built-ins, um das Muster für das Hinzufügen eines neuen zu erkennen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- rust
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 45/100