code wiki / (root) / nx_pagerank_gate.nx

nx_pagerank_gate.nx source

↩ module page · 56 lines · 3607 B

1// nx_pagerank_gate.nx -- proves nx_pagerank on synthetic graphs with KNOWN ranks (deterministic KAT; no network, no 2// petabytes -- the build-now half, runs at NAS scale later). T1 symmetry, T2 authority order, T3 conservation, T4 3// dangling-node mass conservation. license_tier: ORIGINAL 4import "nx_pagerank.nx" 5import "nx_gate.nx" 6 7func gwf(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} if fd>=0 { sys_write(fd,s,n) } return 0 } 8 9func main() -> i64 { 10 gw("=== nx_pagerank_gate: PageRank on synthetic graphs with known ranks ===\n" as *u8) 11 var pass: i64 = 0; var tot: i64 = 0 12 var i: i64 = 0 13 14 // T1 -- 3-cycle 0->1->2->0: by symmetry every rank = SCALE/3. 15 let ef: *i64 = sys_mmap(8*3) as *i64; let et: *i64 = sys_mmap(8*3) as *i64 16 ef[0]=0; ef[1]=1; ef[2]=2; et[0]=1; et[1]=2; et[2]=0 17 let r: *i64 = sys_mmap(8*3) as *i64 18 pr_compute(3, 3, ef, et, r, 100) 19 let third: i64 = PR_SCALE / 3 20 var eq: i64 = 1 21 i = 0 22 while i < 3 { var d: i64 = r[i] - third; if d < 0 { d = 0 - d } if d > PR_SCALE/100 { eq = 0 } i = i + 1 } 23 tot=tot+1; if eq==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 24 gw("T1 3-cycle -> all ranks equal ~SCALE/3 (r0=" as *u8); gn(r[0]); gw(" r1=" as *u8); gn(r[1]); gw(" r2=" as *u8); gn(r[2]); gw(")\n" as *u8) 25 26 // T3 -- conservation on the same run: sum ~ SCALE. 27 let s1: i64 = pr_sum(r, 3) 28 tot=tot+1; var cons: i64 = 0; if s1 > (PR_SCALE*98)/100 { if s1 < (PR_SCALE*102)/100 { cons = 1 } } 29 if cons==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 30 gw("T3 conservation sum~SCALE (sum=" as *u8); gn(s1); gw(")\n" as *u8) 31 32 // T2 -- asymmetric A->B, A->C, B->C, C->A (A=0,B=1,C=2): C is linked by A and B => highest authority. 33 let ef2: *i64 = sys_mmap(8*4) as *i64; let et2: *i64 = sys_mmap(8*4) as *i64 34 ef2[0]=0; ef2[1]=0; ef2[2]=1; ef2[3]=2; et2[0]=1; et2[1]=2; et2[2]=2; et2[3]=0 35 let r2: *i64 = sys_mmap(8*3) as *i64 36 pr_compute(3, 4, ef2, et2, r2, 100) 37 let mi: i64 = pr_argmax(r2, 3) 38 tot=tot+1; if mi==2 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 39 gw("T2 asymmetric -> highest-authority node = C(2) (rA=" as *u8); gn(r2[0]); gw(" rB=" as *u8); gn(r2[1]); gw(" rC=" as *u8); gn(r2[2]); gw(")\n" as *u8) 40 41 // T4 -- dangling node: 0->1->2, node 2 has no out-links; mass must NOT leak (sum stays ~SCALE). 42 let ef3: *i64 = sys_mmap(8*2) as *i64; let et3: *i64 = sys_mmap(8*2) as *i64 43 ef3[0]=0; ef3[1]=1; et3[0]=1; et3[1]=2 44 let r3: *i64 = sys_mmap(8*3) as *i64 45 pr_compute(3, 2, ef3, et3, r3, 100) 46 let s3: i64 = pr_sum(r3, 3) 47 tot=tot+1; var cons3: i64 = 0; if s3 > (PR_SCALE*90)/100 { if s3 < (PR_SCALE*110)/100 { cons3 = 1 } } 48 if cons3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 49 gw("T4 dangling node -> mass conserved (sum=" as *u8); gn(s3); gw(", node2 dangling rank=" as *u8); gn(r3[2]); gw(")\n" as *u8) 50 51 gw("\n=== nx_pagerank_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 52 let lfd: i64 = sys_openat_append("knowledge/status/pagerank_gate.log" as *u8, 420) 53 if pass==tot { gwf(lfd, "PAGERANK-GATE verdict=GREEN capability=built-gated scale=deferred-to-NAS\n" as *u8); if lfd>=0 { sys_close(lfd) } gw("PAGERANK GREEN -- authority signal from the web graph; built now, runs at NAS scale over the CC 13.4B-edge graph\n" as *u8); sys_exit(0); return 0 } 54 gwf(lfd, "PAGERANK-GATE verdict=RED\n" as *u8); if lfd>=0 { sys_close(lfd) } 55 gw("PAGERANK RED\n" as *u8); sys_exit(1); return 1 56}