0xMiden / 0xMiden/air-script

add new built-in $x for accessing x value at each row

Offen
#90 3 Kommentare 2 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
on hold
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

Beitragsleitfaden öffnen

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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.