// THE THREE-HALVES ECHO — a farther, parity-aware probe of THE SIBLING HORIZON. // // Computes Conway's recurrence // a(1)=a(2)=1; a(n)=a(a(n-1))+a(n-a(n-1)) // to 2^K (K<=29 in this instrument), verifies 1<=a(n)<=n and the exact // clock a(2^k)=2^(k-1), then reproduces the fine- and envelope-grain sibling // correlations of THE SIBLING HORIZON. // // The new object is the parity pair. For odd k and the following even k+1, // define // center_k = (r_k + r_{k+1})/2, // amp_k = (r_k - r_{k+1})/2 (>0 in the observed tail), // m_k = k + 1/2. // We report amp*m, amp*m^(3/2), and amp*m^2, and a log-log least-squares // exponent over the last five complete pairs. This is descriptive finite // weather, not an asymptotic proof. // // Law-9 gates: // * range and clock are asserted; // * the five published fine-grain values k=22..26 from THE SIBLING HORIZON // must reproduce within 5e-9; // * envelope counterparts k=22..26 must reproduce within 5e-9; // * the parity sign must hold on every complete pair k=17..K-2 used here. // // Evidence class: COMPUTED. // 2026-07-27 — walker at the open door. #include #include #include #include #include #include #include #include #include using u32 = uint32_t; using i64 = int64_t; using ld = long double; static ld fine_r(const std::vector& A, int k) { const size_t half = size_t(1) << (k - 1); const size_t x0 = size_t(1) << k; const size_t y0 = half; ld sx=0, sy=0, sxx=0, syy=0, sxy=0; for (size_t j=0;j env_profile(const std::vector& A, size_t lo, size_t hi, int bins=64) { const size_t len = hi-lo; const size_t width = len / bins; std::vector p(bins,0); for (int b=0;b0?sd:1); return p; } static ld env_r(const std::vector& A, int k) { const size_t lo=size_t(1)< tol) { std::cerr << "audit mismatch " << label << ": got " << std::setprecision(12) << double(got) << " want " << double(want) << "\n"; std::exit(6); } } struct PairMetric { ld m, center, amp; }; static ld loglog_exponent_last5(const std::vector& P) { if (P.size() < 5) return std::numeric_limits::quiet_NaN(); const size_t start=P.size()-5; ld sx=0, sy=0, sxx=0, sxy=0; const ld n=5; for(size_t i=start;i& P, ld p) { if (P.size() < 5) return std::numeric_limits::quiet_NaN(); const size_t start=P.size()-5; std::vector v; for(size_t i=start;i1) K=std::stoi(argv[1]); if(K<27 || K>29){ std::cerr<<"K must be 27..29\n"; return 2; } const size_t N=size_t(1)< A(N+1,0); A[1]=A[2]=1; for(size_t n=3;n<=N;++n){ const u32 p=A[n-1]; if(p<1 || p>=n){std::cerr<<"range breach predecessor at "<n){std::cerr<<"range breach at "< fine(K,0), env(K,0); for(int k=8;k<=K-1;++k){ fine[k]=fine_r(A,k); env[k]=env_r(A,k); } const ld oldFine[5] = {0.29829476L,0.30163436L,0.29847668L,0.30148720L,0.29871683L}; const ld oldEnv [5] = {0.29812658L,0.30145064L,0.29832370L,0.30130651L,0.29857029L}; for(int i=0;i<5;++i){ assert_close(fine[22+i],oldFine[i],5e-9L,"fine k="+std::to_string(22+i)); assert_close(env [22+i],oldEnv [i],5e-9L,"env k="+std::to_string(22+i)); } std::vector Pf, Pe; for(int k=17;k+1<=K-1;k+=2){ if(!(fine[k]>.3L && fine[k+1]<.3L)){ std::cerr<<"fine parity sign gate failed at pair "<.3L || k<19) || !(env[k+1]<.3L)) { // envelope odd k=17 is above .3; this looser form simply keeps the audit explicit. if(!(env[k]>.3L && env[k+1]<.3L)){ std::cerr<<"env parity sign gate failed at pair "<