TheoremDB

Problem packetResearch packetR13

R13Executable evidence

Exact differential-uniformity verifier and power-permutation scan

View replayOpen source ↗
Link to a section

Authored summary

Standard-library Python checks every derivative row and confirms that the 128 power permutations on F_256 have minimum differential uniformity four.

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

Recorded status: available

Recorded scope: all 128 power permutations x^d on F_256, together with x^3 on F_128 and the nonpermuting APN map x^3 on F_256

Complete recorded scope and conditions
{
  "kind": "bounded",
  "statement": "all 128 power permutations x^d on F_256, together with x^3 on F_128 and the nonpermuting APN map x^3 on F_256",
  "bounds": {
    "dimension": {
      "min": 7,
      "max": 8
    },
    "f256_power_permutation_exponents": {
      "min": 128,
      "max": 128
    },
    "derivative_directions_per_f256_function": {
      "min": 255,
      "max": 255
    },
    "inputs_per_f256_derivative": {
      "min": 256,
      "max": 256
    }
  },
  "exhaustive": true
}

Originating problem: An APN permutation of the 256-element field

Recorded relationships: Classification and computational-search audit

Authored record and scope
Authored title
Exact differential-uniformity verifier and power-permutation scan
Record type
artifact
Stored status
available
Evidence grade
executable
Recorded scope data
{ "kind": "bounded", "statement": "all 128 power permutations x^d on F_256, together with x^3 on F_128 and the nonpermuting APN map x^3 on F_256", "bounds": { "dimension": { "min": 7, "max": 8 }, "f256_power_permutation_exponents": { "min": 128, "max": 128 }, "derivative_directions_per_f256_function": { "min": 255, "max": 255 }, "inputs_per_f256_derivative": { "min": 256, "max": 256 } }, "exhaustive": true }
Linked research record IDs
R14

2Authored explanation

The program represents \(\mathbb F_{2^8}\) with the AES polynomial \[ x^8+x^4+x^3+x+1 \] and computes every derivative value directly. It checks all 128 exponents \(d\) with \(\gcd(d,255)=1\), exactly the exponents for which \(x^d\) permutes \(\mathbb F_{256}\). The minimum differential uniformity is four. It is attained for \[ d\in\{127,191,223,239,247,251,253,254\}. \] This exhausts the monomial-permutation family and does not address general lookup tables.

Two controls expose the even-dimension obstruction. Over \(\mathbb F_{2^7}\), \(x^3\) is both a permutation and APN. Over \(\mathbb F_{2^8}\), the same Gold map remains APN but takes each nonzero cube value three times. The inverse permutation \(x^{254}\) on \(\mathbb F_{256}\) has differential uniformity four. The canonical report has SHA-256 digest `7a35e41b9243f97ac244c69402b8bbf0a8ad747db186329e0d509ab923d4c9a8`.

Files and source

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

  • R13.txt2,097 bytes · No SHA-256 recorded
    Preview R13.txt
    from collections import Counter
    from hashlib import sha256
    from json import dumps
    from math import gcd
    
    def mul(a,b,n,poly):
        mask=(1<<n)-1
        z=0
        while b:
            if b&1: z ^= a
            b >>= 1
            carry=a&(1<<(n-1))
            a=(a<<1)&mask
            if carry: a ^= poly&mask
        return z
    
    def power(a,e,n,poly):
        z=1
        while e:
            if e&1: z=mul(z,a,n,poly)
            a=mul(a,a,n,poly)
            e>>=1
        return z
    
    def table_power(n,poly,d):
        return [0 if x==0 else power(x,d,n,poly) for x in range(1<<n)]
    
    def du(table):
        N=len(table)
        return max(max(Counter(table[x]^table[x^a] for x in range(N)).values()) for a in range(1,N))
    
    def audit(n,poly,d):
        table=table_power(n,poly,d)
        return {'n':n,'polynomial_hex':hex(poly),'exponent':d,'permutation':len(set(table))==len(table),'differential_uniformity':du(table)}
    
    seven=audit(7,0x83,3)
    eight_gold=audit(8,0x11b,3)
    eight_inverse=audit(8,0x11b,254)
    permutation_exponents=[d for d in range(1,255) if gcd(d,255)==1]
    power_uniformities={d:du(table_power(8,0x11b,d)) for d in permutation_exponents}
    minimum=min(power_uniformities.values())
    minimizers=[d for d,u in power_uniformities.items() if u==minimum]
    report={'known_odd_dimension_example':seven,'even_dimension_gold_obstruction':eight_gold,'f256_inverse':eight_inverse,'f256_power_permutation_scan':{'exponents_checked':len(permutation_exponents),'minimum_differential_uniformity':minimum,'minimizing_exponents':minimizers}}
    assert seven=={'n':7,'polynomial_hex':'0x83','exponent':3,'permutation':True,'differential_uniformity':2}
    assert eight_gold=={'n':8,'polynomial_hex':'0x11b','exponent':3,'permutation':False,'differential_uniformity':2}
    assert eight_inverse['permutation'] and eight_inverse['differential_uniformity']==4
    assert len(permutation_exponents)==128
    assert minimum==4 and minimizers==[127,191,223,239,247,251,253,254]
    payload=dumps(report,sort_keys=True,separators=(',',':'))
    digest=sha256(payload.encode()).hexdigest()
    assert digest=='7a35e41b9243f97ac244c69402b8bbf0a8ad747db186329e0d509ab923d4c9a8'
    print(payload)
    print('report_sha256='+digest)
    File identity
    Recorded filename
    R13.txt
    Download SHA-256
    a34d3eaa485137bc00d6de5c7b578f09327658c86a0561a2e8b674f983ef01fb
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: arxiv.org ↗, Self-contained Python standard-library computation executed by TheoremDB entry research on 2026-07-25

Missing for a complete replay: command, expected output.

Recorded artifact fields

5What it produced

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": "R13",
  "content_hash": null,
  "slug": "apn256-artifact-differential-audit",
  "type": "artifact",
  "title": "Exact differential-uniformity verifier and power-permutation scan",
  "summary": "Standard-library Python checks every derivative row and confirms that the 128 power permutations on F_256 have minimum differential uniformity four.",
  "relevance": "For An APN permutation of the 256-element field, record apn256-artifact-differential-audit (“Exact differential-uniformity verifier and power-permutation scan”) supplies evidence or a replay used to check the packet. The record states: Standard-library Python checks every derivative row and confirms that the 128 power permutations on F_256 have minimum differential uniformity four.",
  "relevance_source": "recorded",
  "body": "The program represents \\(\\mathbb F_{2^8}\\) with the AES polynomial\n\\[\nx^8+x^4+x^3+x+1\n\\]\nand computes every derivative value directly. It checks all 128 exponents \\(d\\) with \\(\\gcd(d,255)=1\\), exactly the exponents for which \\(x^d\\) permutes \\(\\mathbb F_{256}\\). The minimum differential uniformity is four. It is attained for\n\\[\nd\\in\\{127,191,223,239,247,251,253,254\\}.\n\\]\nThis exhausts the monomial-permutation family and does not address general lookup tables.\n\nTwo controls expose the even-dimension obstruction. Over \\(\\mathbb F_{2^7}\\), \\(x^3\\) is both a permutation and APN. Over \\(\\mathbb F_{2^8}\\), the same Gold map remains APN but takes each nonzero cube value three times. The inverse permutation \\(x^{254}\\) on \\(\\mathbb F_{256}\\) has differential uniformity four. The canonical report has SHA-256 digest `7a35e41b9243f97ac244c69402b8bbf0a8ad747db186329e0d509ab923d4c9a8`.",
  "status": "available",
  "evidence_grade": "executable",
  "scope": {
    "kind": "bounded",
    "statement": "all 128 power permutations x^d on F_256, together with x^3 on F_128 and the nonpermuting APN map x^3 on F_256",
    "bounds": {
      "dimension": {
        "min": 7,
        "max": 8
      },
      "f256_power_permutation_exponents": {
        "min": 128,
        "max": 128
      },
      "derivative_directions_per_f256_function": {
        "min": 255,
        "max": 255
      },
      "inputs_per_f256_derivative": {
        "min": 256,
        "max": 256
      }
    },
    "exhaustive": true
  },
  "reproduction": {
    "schema": "theoremdb-reproduction-v1",
    "readiness": "partial",
    "kind": "inline_python_computation",
    "entrypoint": "join source_lines with newline and run with python3",
    "runtime": "CPython 3, standard library only",
    "citation": {
      "url": "https://arxiv.org/abs/2606.11967",
      "locator": "Self-contained Python standard-library computation executed by TheoremDB entry research on 2026-07-25"
    },
    "inline_source": [
      "from collections import Counter",
      "from hashlib import sha256",
      "from json import dumps",
      "from math import gcd",
      "",
      "def mul(a,b,n,poly):",
      "    mask=(1<<n)-1",
      "    z=0",
      "    while b:",
      "        if b&1: z ^= a",
      "        b >>= 1",
      "        carry=a&(1<<(n-1))",
      "        a=(a<<1)&mask",
      "        if carry: a ^= poly&mask",
      "    return z",
      "",
      "def power(a,e,n,poly):",
      "    z=1",
      "    while e:",
      "        if e&1: z=mul(z,a,n,poly)",
      "        a=mul(a,a,n,poly)",
      "        e>>=1",
      "    return z",
      "",
      "def table_power(n,poly,d):",
      "    return [0 if x==0 else power(x,d,n,poly) for x in range(1<<n)]",
      "",
      "def du(table):",
      "    N=len(table)",
      "    return max(max(Counter(table[x]^table[x^a] for x in range(N)).values()) for a in range(1,N))",
      "",
      "def audit(n,poly,d):",
      "    table=table_power(n,poly,d)",
      "    return {'n':n,'polynomial_hex':hex(poly),'exponent':d,'permutation':len(set(table))==len(table),'differential_uniformity':du(table)}",
      "",
      "seven=audit(7,0x83,3)",
      "eight_gold=audit(8,0x11b,3)",
      "eight_inverse=audit(8,0x11b,254)",
      "permutation_exponents=[d for d in range(1,255) if gcd(d,255)==1]",
      "power_uniformities={d:du(table_power(8,0x11b,d)) for d in permutation_exponents}",
      "minimum=min(power_uniformities.values())",
      "minimizers=[d for d,u in power_uniformities.items() if u==minimum]",
      "report={'known_odd_dimension_example':seven,'even_dimension_gold_obstruction':eight_gold,'f256_inverse':eight_inverse,'f256_power_permutation_scan':{'exponents_checked':len(permutation_exponents),'minimum_differential_uniformity':minimum,'minimizing_exponents':minimizers}}",
      "assert seven=={'n':7,'polynomial_hex':'0x83','exponent':3,'permutation':True,'differential_uniformity':2}",
      "assert eight_gold=={'n':8,'polynomial_hex':'0x11b','exponent':3,'permutation':False,'differential_uniformity':2}",
      "assert eight_inverse['permutation'] and eight_inverse['differential_uniformity']==4",
      "assert len(permutation_exponents)==128",
      "assert minimum==4 and minimizers==[127,191,223,239,247,251,253,254]",
      "payload=dumps(report,sort_keys=True,separators=(',',':'))",
      "digest=sha256(payload.encode()).hexdigest()",
      "assert digest=='7a35e41b9243f97ac244c69402b8bbf0a8ad747db186329e0d509ab923d4c9a8'",
      "print(payload)",
      "print('report_sha256='+digest)"
    ],
    "missing": [
      "command",
      "expected_output"
    ]
  },
  "formal_statement": null,
  "source": {
    "url": "https://arxiv.org/abs/2606.11967",
    "locator": "Self-contained Python standard-library computation executed by TheoremDB entry research on 2026-07-25"
  },
  "models": [],
  "relations": [
    {
      "slug": "R16",
      "title": "Existence of an APN permutation on F_256 remains open",
      "object_type": "claim",
      "relation": "informs",
      "direction": "outgoing"
    },
    {
      "slug": "R14",
      "title": "Classification and computational-search audit",
      "object_type": "attempt",
      "relation": "verifies",
      "direction": "outgoing"
    },
    {
      "slug": "apn-permutation-f256",
      "title": "apn permutation f256",
      "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.