// THE SIBLING HORIZON — extend THE SIBLING SIGN on Conway alone. // // Computes Conway's recurrence // a(1)=a(2)=1; a(n)=a(a(n-1))+a(n-a(n-1)) // to 2^K, verifies 1<=a(n)<=n and a(2^k)=2^(k-1), then asks the exact // same sibling-correlation questions as TOOLS/sibling_sign.py at farther rungs. // Fine grain uses E(n)=2a(n)-n (a factor-2 version of e(n)=a(n)-n/2, // which leaves Pearson r unchanged). Envelope grain uses 64-bin means of |E|. // // Evidence class: COMPUTED. The goal is not to prove a limit but to decide // whether the apparent +0.30 pinning bends toward 1/3, toward 0.30, or elsewhere. // Iris, 2026-07-26. #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 m = 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) { size_t lo=size_t(1)<1) K=std::stoi(argv[1]); if(K<8 || K>29){ std::cerr<<"K must be 8..29\n"; return 2; } size_t N=size_t(1)< A(N+1,0); A[1]=A[2]=1; for(size_t n=3;n<=N;++n){ u32 p=A[n-1]; if(p<1 || p>=n){std::cerr<<"range breach predecessor at "<n){std::cerr<<"range breach at "< tail; for(int k=8;k<=K-1;++k){ ld rf=fine_r(A,k); ld re=env_r(A,k); tail.push_back(rf); std::cout<=8){ ld m=0;for(size_t i=tail.size()-8;i