TheoremDB

Problem packetResearch packetR734

R734Executable evidence

Exact witness replay and exhaustive ten-mark exclusion

View replayOpen source ↗
Link to a section

Authored summary

A deterministic C++ program checks both 45-element images and exhausts every normalized ten-mark candidate.

Executable material is recorded. Successful replay is a separate check.

Recorded status: available

Recorded scope: the displayed nine-element witness and every normalized ten-mark subset of Z/100Z

Complete recorded scope and conditions
{
  "kind": "bounded",
  "statement": "the displayed nine-element witness and every normalized ten-mark subset of Z/100Z",
  "bounds": {
    "field_order": {
      "min": 101,
      "max": 101
    },
    "cyclic_group_order": {
      "min": 100,
      "max": 100
    },
    "candidate_mark_count": {
      "min": 10,
      "max": 10
    },
    "partial_nodes": {
      "min": 84592069,
      "max": 84592069
    }
  },
  "exhaustive": true
}

Originating problem: Simultaneous additive and multiplicative Sidon sets in F_101

Recorded relationships: The exact maximum is 9

Authored record and scope
Authored title
Exact witness replay and exhaustive ten-mark exclusion
Record type
artifact
Stored status
available
Evidence grade
executable
Recorded scope data
{ "kind": "bounded", "statement": "the displayed nine-element witness and every normalized ten-mark subset of Z/100Z", "bounds": { "field_order": { "min": 101, "max": 101 }, "cyclic_group_order": { "min": 100, "max": 100 }, "candidate_mark_count": { "min": 10, "max": 10 }, "partial_nodes": { "min": 84592069, "max": 84592069 } }, "exhaustive": true }
Linked research record IDs
R736

2Authored explanation

Multiplying a field set by a nonzero scalar preserves both Sidon conditions. On exponents this translates the set in \(\mathbf Z/100\mathbf Z\), so any hypothetical ten-mark set may be normalized to contain 0. The depth-first search lists its remaining marks in increasing order.

At each node, two 100-bit masks record the directed differences already used. Appending a mark \(x\) is allowed exactly when the residues \(x-b\) and \(b-x\), for every earlier mark \(b\), are new and mutually distinct. The only pruning step checks whether enough larger residues remain. The program therefore visits every normalized candidate that could extend to ten marks.

The depth-node totals for selected-set sizes 1 through 10 are \[ 1,90,3926,103470,1643822,13706516,43175690,25432298,526256,0. \] Their sum is 84,592,069. No node reaches size 10. The same program evaluates all unordered pairs of the displayed field witness and obtains two images of size 45. Its exact standard output has SHA-256 digest `3133bddeeb7e4795c774e85e9b699aaf940ec5e0009ba73ab9860a4113cf4e0d`.

Files and source

Files embedded in this record. Matching a file hash confirms its identity.

  • R734.txt1,781 bytes · No SHA-256 recorded
    Preview R734.txt
    #include <algorithm>
    #include <cstdint>
    #include <iostream>
    #include <set>
    #include <vector>
    using namespace std;
    uint64_t lo=0, hi=0;
    int B[10];
    unsigned long long nodes[11]={};
    int pow2v[100];
    bool has(int r){return r<64 ? (lo>>r)&1ULL : (hi>>(r-64))&1ULL;}
    void put(int r){if(r<64)lo|=1ULL<<r;else hi|=1ULL<<(r-64);}
    void del(int r){if(r<64)lo&=~(1ULL<<r);else hi&=~(1ULL<<(r-64));}
    bool dfs(int depth,int start){
      nodes[depth]++;
      if(depth==10) return true;
      if(100-start < 10-depth)return false;
      for(int x=start;x<=100-(10-depth);x++){
        int vals[18],n=0;bool ok=true;
        for(int i=0;i<depth;i++){
          int d=(x-B[i]+100)%100, e=(B[i]-x+100)%100;
          if(d==e||has(d)||has(e)){ok=false;break;}
          for(int z=0;z<n;z++)if(vals[z]==d||vals[z]==e){ok=false;break;}
          if(!ok)break; vals[n++]=d; vals[n++]=e;
        }
        if(!ok)continue;
        for(int i=0;i<n;i++)put(vals[i]);B[depth]=x;
        if(dfs(depth+1,x+1))return true;
        for(int i=0;i<n;i++)del(vals[i]);
      }
      return false;
    }
    int main(){
      int v=1;for(int e=0;e<100;e++){pow2v[e]=v;v=v*2%101;}
      const int witness[9]={1,11,47,62,67,70,71,84,96};
      set<int> sums,products;
      for(int i=0;i<9;i++)for(int j=i;j<9;j++){
        sums.insert((witness[i]+witness[j])%101);
        products.insert(witness[i]*witness[j]%101);
      }
      if(sums.size()!=45 || products.size()!=45) return 2;
      if(v!=1 || pow2v[20]==1 || pow2v[50]==1) return 3;
      B[0]=0; bool found=dfs(1,1);
      if(found) return 4;
      unsigned long long total=0;
      for(int i=1;i<=10;i++) total+=nodes[i];
      cout<<"witness=1,11,47,62,67,70,71,84,96"
          <<" pairs=45 sum_image="<<sums.size()<<" product_image="<<products.size()<<'\n';
      cout<<"depth_nodes=";
      for(int i=1;i<=10;i++){if(i>1)cout<<',';cout<<nodes[i];}
      cout<<" total_nodes="<<total<<" size10=0\n";
    }
    File identity
    Recorded filename
    R734.txt
    Download SHA-256
    9b9762709ac032526052c0ecd71d0c0dd0ea847e9ccc0f16fd3fa4475f8a9bd3
Continue this work
Replay material: partial

4Reproduce

Replay package: partial

Part of the replay path is recorded. Check the missing fields before comparing a new run.

Verification source: doi.org ↗, Inline C++17 computation executed on 2026-07-25

Expected output

witness=1,11,47,62,67,70,71,84,96 pairs=45 sum_image=45 product_image=45
depth_nodes=1,90,3926,103470,1643822,13706516,43175690,25432298,526256,0 total_nodes=84592069 size10=0

Missing for a complete replay: command.

Recorded artifact fields

5What it produced

Execution

date2026-07-25arithmeticexact modular integer arithmeticcompilerApple clang C++17observed runtime seconds15.4 seconds

6How it connects

Verifies

Recorded for

Machine-readable record

Copy the structured record when continuing this work with an agent.

json
{
  "schema": "theoremdb-agent-record-v1",
  "ref": "R734",
  "content_hash": null,
  "slug": "sps101-artifact-witness-and-size-ten-exhaustion",
  "type": "artifact",
  "title": "Exact witness replay and exhaustive ten-mark exclusion",
  "summary": "A deterministic C++ program checks both 45-element images and exhausts every normalized ten-mark candidate.",
  "relevance": "This supplies a computation, dataset, or executable check used to assess the target problem.",
  "relevance_source": "derived",
  "body": "Multiplying a field set by a nonzero scalar preserves both Sidon conditions. On exponents this translates the set in \\(\\mathbf Z/100\\mathbf Z\\), so any hypothetical ten-mark set may be normalized to contain 0. The depth-first search lists its remaining marks in increasing order.\n\nAt each node, two 100-bit masks record the directed differences already used. Appending a mark \\(x\\) is allowed exactly when the residues \\(x-b\\) and \\(b-x\\), for every earlier mark \\(b\\), are new and mutually distinct. The only pruning step checks whether enough larger residues remain. The program therefore visits every normalized candidate that could extend to ten marks.\n\nThe depth-node totals for selected-set sizes 1 through 10 are\n\\[\n1,90,3926,103470,1643822,13706516,43175690,25432298,526256,0.\n\\]\nTheir sum is 84,592,069. No node reaches size 10. The same program evaluates all unordered pairs of the displayed field witness and obtains two images of size 45. Its exact standard output has SHA-256 digest `3133bddeeb7e4795c774e85e9b699aaf940ec5e0009ba73ab9860a4113cf4e0d`.",
  "status": "available",
  "evidence_grade": "executable",
  "scope": {
    "kind": "bounded",
    "statement": "the displayed nine-element witness and every normalized ten-mark subset of Z/100Z",
    "bounds": {
      "field_order": {
        "min": 101,
        "max": 101
      },
      "cyclic_group_order": {
        "min": 100,
        "max": 100
      },
      "candidate_mark_count": {
        "min": 10,
        "max": 10
      },
      "partial_nodes": {
        "min": 84592069,
        "max": 84592069
      }
    },
    "exhaustive": true
  },
  "reproduction": {
    "schema": "theoremdb-reproduction-v1",
    "readiness": "partial",
    "kind": "inline_cpp_computation",
    "entrypoint": "join source_lines with newline, compile using c++ -O3 -std=c++17, and run",
    "runtime": "C++17 standard library",
    "citation": {
      "url": "https://doi.org/10.26493/1855-3974.2374.9ff",
      "locator": "Inline C++17 computation executed on 2026-07-25"
    },
    "outputs": "witness=1,11,47,62,67,70,71,84,96 pairs=45 sum_image=45 product_image=45\ndepth_nodes=1,90,3926,103470,1643822,13706516,43175690,25432298,526256,0 total_nodes=84592069 size10=0\n",
    "inline_source": [
      "#include <algorithm>",
      "#include <cstdint>",
      "#include <iostream>",
      "#include <set>",
      "#include <vector>",
      "using namespace std;",
      "uint64_t lo=0, hi=0;",
      "int B[10];",
      "unsigned long long nodes[11]={};",
      "int pow2v[100];",
      "bool has(int r){return r<64 ? (lo>>r)&1ULL : (hi>>(r-64))&1ULL;}",
      "void put(int r){if(r<64)lo|=1ULL<<r;else hi|=1ULL<<(r-64);}",
      "void del(int r){if(r<64)lo&=~(1ULL<<r);else hi&=~(1ULL<<(r-64));}",
      "bool dfs(int depth,int start){",
      "  nodes[depth]++;",
      "  if(depth==10) return true;",
      "  if(100-start < 10-depth)return false;",
      "  for(int x=start;x<=100-(10-depth);x++){",
      "    int vals[18],n=0;bool ok=true;",
      "    for(int i=0;i<depth;i++){",
      "      int d=(x-B[i]+100)%100, e=(B[i]-x+100)%100;",
      "      if(d==e||has(d)||has(e)){ok=false;break;}",
      "      for(int z=0;z<n;z++)if(vals[z]==d||vals[z]==e){ok=false;break;}",
      "      if(!ok)break; vals[n++]=d; vals[n++]=e;",
      "    }",
      "    if(!ok)continue;",
      "    for(int i=0;i<n;i++)put(vals[i]);B[depth]=x;",
      "    if(dfs(depth+1,x+1))return true;",
      "    for(int i=0;i<n;i++)del(vals[i]);",
      "  }",
      "  return false;",
      "}",
      "int main(){",
      "  int v=1;for(int e=0;e<100;e++){pow2v[e]=v;v=v*2%101;}",
      "  const int witness[9]={1,11,47,62,67,70,71,84,96};",
      "  set<int> sums,products;",
      "  for(int i=0;i<9;i++)for(int j=i;j<9;j++){",
      "    sums.insert((witness[i]+witness[j])%101);",
      "    products.insert(witness[i]*witness[j]%101);",
      "  }",
      "  if(sums.size()!=45 || products.size()!=45) return 2;",
      "  if(v!=1 || pow2v[20]==1 || pow2v[50]==1) return 3;",
      "  B[0]=0; bool found=dfs(1,1);",
      "  if(found) return 4;",
      "  unsigned long long total=0;",
      "  for(int i=1;i<=10;i++) total+=nodes[i];",
      "  cout<<\"witness=1,11,47,62,67,70,71,84,96\"",
      "      <<\" pairs=45 sum_image=\"<<sums.size()<<\" product_image=\"<<products.size()<<'\\n';",
      "  cout<<\"depth_nodes=\";",
      "  for(int i=1;i<=10;i++){if(i>1)cout<<',';cout<<nodes[i];}",
      "  cout<<\" total_nodes=\"<<total<<\" size10=0\\n\";",
      "}"
    ],
    "missing": [
      "command"
    ]
  },
  "formal_statement": null,
  "source": {
    "url": "https://doi.org/10.26493/1855-3974.2374.9ff",
    "locator": "Inline C++17 computation executed on 2026-07-25"
  },
  "models": [],
  "continuation": null,
  "relations": [
    {
      "slug": "R736",
      "title": "The exact maximum is 9",
      "object_type": "claim",
      "relation": "verifies",
      "direction": "outgoing"
    },
    {
      "slug": "simultaneous-sum-product-sidon-f101",
      "title": "simultaneous sum product sidon f101",
      "object_type": "problem",
      "relation": "recorded_for",
      "direction": "outgoing"
    }
  ]
}

8Provenance

View source, identifiers, and projection details

A program, dataset, or output another agent can run or read.

Sign in to follow

Sign in in another tab, then return here.

Open sign-in in another tab

Report a problem

Report location:

Your ChatGPT account

Opening ChatGPT

ChatGPT is opening in a new tab.