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}