File size: 2,642 Bytes
2e4432d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | """Deterministic, audited ICL code emitter. Syntax is supplied here, not learned.
No oracle/ground-truth label is imported. Model actions alone select operations.
"""
from __future__ import annotations
import json
from .common import ACTIONS,ERRORS,validate_step
HEADER='''module native_plan;
type Pair = Record{delta:Int64,value:Int64};
fn record_sum(p:Pair)->Int64 {return p.value+p.delta;}
fn main(initial:Int64, initial_memory:Int64)->Result[Int64] {
var x = initial; var memo = initial_memory;
'''
def emit(plan:dict,actions:list[str])->str:
if len(actions)!=len(plan['steps']) or not 1<=len(actions)<=32:raise ValueError('ACTION_LENGTH')
parts=[HEADER]
for j,(s,action) in enumerate(zip(plan['steps'],actions)):
validate_step(s)
if action not in ACTIONS:raise ValueError('ACTION_UNKNOWN')
a=s['arg'];lit=str(a);f=s['flags']
if action in ERRORS:
parts.append('return err_int('+json.dumps(action)+');');break
if action=='ADD':code=f'x=x+({lit});'
elif action=='SUB':code=f'x=x-({lit});'
elif action=='MUL':code=f'x=x*({lit});'
elif action=='MAX':code=f'x=max(x,({lit}));'
elif action=='MIN':code=f'x=min(x,({lit}));'
elif action=='ABS':code='x=abs(x);'
elif action=='NEGATE':code='x=-x;'
elif action=='REPEAT':code=f'var k{j}=0; while k{j}<3 limit 3 {{x=x+({lit}); k{j}=k{j}+1;}}'
elif action=='STORE':code='memo=x;'
elif action=='RECALL':code='x=memo;'
elif action=='JOURNAL':code=f'let permitted{j}=request_effect("journal","step_{j}");'
elif action=='RECORD_ADD':code=f'x=record_sum({{delta:({lit}),value:x}});'
elif action=='LIST_ADD':code=f'let items{j}=[x,({lit})]; x=items{j}[0]+items{j}[1];'
elif action=='TRANSLATE':
ob='main' if f['observer_match'] else 'other';fr='scalar' if f['frame_match'] else 'other';un='unit' if f['unit_match'] else 'other'
code=f'let left{j}=represent(x,"main","scalar","unit"); let right{j}=represent(({lit}),"{ob}","{fr}","{un}"); x=repr_value(repr_add(left{j},right{j}));'
elif action=='RESTORE':
# Synthetic known-state roundtrip: witness is made from x, not recovered from unknown data.
# The wrapper checks supplied boolean scenario conditions, NOT an external witness signature.
code=f'let r{j}=observe_mod(x,{s["modulus"]},"main"); let w{j}=make_witness(x,{s["modulus"]}); x=exact_value(recover(r{j},w{j}));'
else:raise ValueError('UNSUPPORTED_ACTION')
parts.append(code)
parts.append('return ok(x); }')
return '\n'.join(parts)+'\n'
|