code wiki / (root) / nx_notebook_demo.nx

nx_notebook_demo.nx source

↩ module page · 99 lines · 4751 B

1// nx_notebook_demo.nx -- substrate-side notebook cell evaluator demo. 2// 3// Per user 2026-05-14: the notebook at nishifamily.com/math should 4// let users test the algorithms with Unicode math symbols, no LaTeX. 5// 6// This is the foundation -- a small program that demonstrates: 7// (1) A "cell" reading a small expression in NishiLang syntax (here 8// hardcoded; future: pulled from web request) 9// (2) Dispatching to a registered algorithm by name (here: by direct 10// function call; future: looked up in nx_theorem_registry) 11// (3) Rendering results with Unicode math symbols (no LaTeX) 12// (4) Including provenance + verdict (every result traces back to 13// triangulated correctness) 14 15// nx_safety_envelope: 16// intended_use: AUTO_APPLIED -- primitive-specific tuning queued 17// sil_target: SIL1 18// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail] 19// verdict: NOT_YET_EVALUATED 20 21import "nx_syscalls.nx" 22import "nx_runtime.nx" 23import "nx_tier.nx" 24import "nx_unicode_math.nx" 25import "nx_classical_unpatented.nx" 26import "nx_classical_unpatented_2.nx" 27const K_MAGIC_1000000007: i64 = 1000000007 28 29func nx_render_header(title: *u8) { 30 println("==================================================================" as *u8) 31 print(" " as *u8); println(title) 32 println("==================================================================" as *u8) 33} 34 35func nx_render_cell_input(input: *u8) { 36 print(">> " as *u8); println(input) 37} 38 39func nx_render_cell_output_int(value: nx_int) { 40 print(" = " as *u8); print_i64(value); println("" as *u8) 41} 42 43func nx_render_provenance(algo: *u8, l5: *u8) { 44 print(" [" as *u8); print(algo); print(" L5:" as *u8); print(l5); println("]" as *u8) 45} 46 47func main() -> nx_exit { 48 nx_render_header("nishifamily.com/math -- notebook demo (substrate-native)" as *u8) 49 println("" as *u8) 50 51 // Cell 1: classical math 52 nx_render_cell_input("nx_fibonacci(20)" as *u8) 53 nx_render_cell_output_int(nx_fibonacci(20)) 54 nx_render_provenance("nx_fibonacci" as *u8, "TRIANGULATED" as *u8) 55 println("" as *u8) 56 57 // Cell 2: number theory with Unicode rendering 58 nx_render_cell_input("nx_gcd_euclidean(840, 360)" as *u8) 59 nx_render_cell_output_int(nx_gcd_euclidean(840, 360)) 60 print(" " as *u8); print(nx_sym_forall()); print(" (a, b) " as *u8); print(nx_sym_in()); print(" " as *u8); print(nx_sym_integers()) 61 print(": gcd(a, b)" as *u8); print(nx_sym_ge()); print("1" as *u8); println("" as *u8) 62 nx_render_provenance("nx_gcd_euclidean" as *u8, "TRIANGULATED" as *u8) 63 println("" as *u8) 64 65 // Cell 3: modular exponentiation 66 nx_render_cell_input("nx_mod_pow(2, 32, 1000000007)" as *u8) 67 nx_render_cell_output_int(nx_mod_pow(2, 32, K_MAGIC_1000000007)) 68 print(" 2" as *u8); print(nx_sym_times()); print("32 (mod 10" as *u8); print(nx_sym_times()); print("9 + 7)" as *u8); println("" as *u8) 69 nx_render_provenance("nx_mod_pow" as *u8, "TRIANGULATED" as *u8) 70 println("" as *u8) 71 72 // Cell 4: primality + Unicode 73 nx_render_cell_input("nx_is_prime_trial(97)" as *u8) 74 let p: nx_int = nx_is_prime_trial(97) 75 nx_render_cell_output_int(p) 76 print(" 97 " as *u8); print(nx_sym_in()); print(" primes " as *u8); print(nx_sym_iff()); print(" return 1" as *u8); println("" as *u8) 77 nx_render_provenance("nx_is_prime_trial" as *u8, "TRIANGULATED" as *u8) 78 println("" as *u8) 79 80 // Cell 5: symbol palette test 81 print("symbol palette: " as *u8) 82 print(nx_sym_forall()); print(" " as *u8); print(nx_sym_exists()); print(" " as *u8) 83 print(nx_sym_in()); print(" " as *u8); print(nx_sym_subset()); print(" " as *u8) 84 print(nx_sym_sum()); print(" " as *u8); print(nx_sym_integral()); print(" " as *u8) 85 print(nx_sym_partial()); print(" " as *u8); print(nx_sym_nabla()); print(" " as *u8) 86 print(nx_sym_sqrt()); print(" " as *u8); print(nx_sym_infinity()); print(" " as *u8) 87 print(nx_sym_reals()); print(" " as *u8); print(nx_sym_complex()); print(" " as *u8) 88 print(nx_sym_integers()); print(" " as *u8); print(nx_sym_naturals()); print(" " as *u8) 89 print(nx_sym_alpha()); print(" " as *u8); print(nx_sym_beta()); print(" " as *u8) 90 print(nx_sym_pi()); print(" " as *u8); print(nx_sym_sigma()); print(" " as *u8) 91 print(nx_sym_omega()); println("" as *u8) 92 93 println("" as *u8) 94 println("==================================================================" as *u8) 95 println(" notebook foundation: server-side substrate evaluator + Unicode" as *u8) 96 println(" no LaTeX, no MathJax, no external deps -- pure UTF-8 output" as *u8) 97 println("==================================================================" as *u8) 98 return 0 99}