Standard Nock reference evaluator #
Fuel-indexed Nat-level evalN for OP₀–OP₁₁ (main.tex:1054–1076; OP₁₁ extension).
? (Algorithm:Noun_Operators, main.tex:1519–1523).
type(n)=cell ↦ 0, else ↦ 1.
Equations
- (a.cell a_1).wut = Nock.Noun.atom 0
- (Nock.Noun.atom a).wut = Nock.Noun.atom 1
Instances For
+ (Algorithm:Noun_Operators, main.tex:1531–1535).
atom ↦ (1+n) (paper mod p; Lean Nat successor); else ⊥.
Equations
- (Nock.Noun.atom n).lus = some (Nock.Noun.atom (n + 1))
- (a.cell a_1).lus = none
Instances For
= (Algorithm:Noun_Operators, main.tex:1525–1529).
n₁=n₂ ↦ 0, else ↦ 1.
Equations
- a.tis b = if a = b then Nock.Noun.atom 0 else Nock.Noun.atom 1
Instances For
@[irreducible]
/ (Algorithm:Noun_Operators, main.tex:1537–1557).
axis=0 ↦ ⊥; =1 ↦ n; =2 ↦ head(n); =3 ↦ tail(n);
else b←axis mod 2, return /(2+b, /((axis−b)/2, n)).
Equations
Instances For
@[irreducible]
# (Algorithm:Noun_Operators, main.tex:1587–1607).
axis=0 ↦ ⊥; =1 ↦ new; else b←axis mod 2, a←(axis−b)/2,
edit head/tail of parent at a, recurse #(a, parent, old).
Equations
- One or more equations did not get rendered due to their size.
- Nock.Noun.edit 0 x✝¹ x✝ = none
- Nock.Noun.edit 1 x✝¹ x✝ = some x✝¹
Instances For
*[subject formula], fuel-indexed. evalN 0 _ _ = none.
Equations
- One or more equations did not get rendered due to their size.
- Nock.evalN 0 x✝¹ x✝ = none
- Nock.evalN n.succ x✝ (Nock.Noun.atom a) = none
- Nock.evalN fuel.succ x✝ ((b.cell c).cell d) = match Nock.evalN fuel x✝ (b.cell c), Nock.evalN fuel x✝ d with | some l, some r => some (l.cell r) | x, x_1 => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 0).cell (Nock.Noun.atom ax)) = Nock.Noun.slot ax x✝
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 0).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 1).cell tail) = some tail
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 2).cell (b.cell c)) = match Nock.evalN fuel x✝ b, Nock.evalN fuel x✝ c with | some sb, some sc => Nock.evalN fuel sb sc | x, x_1 => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 2).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 3).cell tail) = Option.map Nock.Noun.wut (Nock.evalN fuel x✝ tail)
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 4).cell tail) = (Nock.evalN fuel x✝ tail).bind Nock.Noun.lus
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 5).cell (b.cell c)) = match Nock.evalN fuel x✝ b, Nock.evalN fuel x✝ c with | some sb, some sc => some (sb.tis sc) | x, x_1 => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 5).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 6).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 7).cell (b.cell c)) = match Nock.evalN fuel x✝ b with | some sb => Nock.evalN fuel sb c | none => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 7).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 8).cell (b.cell c)) = match Nock.evalN fuel x✝ b with | some sb => Nock.evalN fuel (sb.cell x✝) c | none => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 8).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 9).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 10).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 11).cell ((a.cell clue).cell body)) = match Nock.evalN fuel x✝ clue with | some val => Nock.evalN fuel x✝ body | none => none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 11).cell ((Nock.Noun.atom a).cell body)) = Nock.evalN fuel x✝ body
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom 11).cell tail) = none
- Nock.evalN fuel.succ x✝ ((Nock.Noun.atom op).cell tail) = none