AscertaintyAscertainty
live·bounty #6·on-chain 25
№ AC-20260428-0025Filed April 28, 2026Domain · - algorithms

∀ {α : Type} [LinearOrder α] (xs : List α), Sorted (mergeSort xs) ∧ (mergeSort xs).Perm xs

This theorem ensures that the `mergeSort` function not only sorts the list in a monotonically non-decreasing order but also produces a list that is a permutation of the original input list, maintaining the same elements just possibly in a different order. Proving this would require demonstrating that every element in the sorted list comes from the original list and that the sorting process preserves the linear order property throughout the transformation.

Open · accepting proofs
stagearchived
closesMay 28, 2026
window30s challenge
resolverLean v4.10 kernel · 0G TEE
BountyMockUSDC
1,000
1 submission1 accepted
novelty 3/10difficulty 7/10
Submissions11 accepted
Bounty1,000MockUSDC
Contests0open to file
VerifierLean v4.10kernel · TEE-attested
Spec hash0x0dbab1…dd6ba7
§ 01

The argument

{α : Type} [LinearOrder α] (xs : List α), Sorted (mergeSort xs) ∧ (mergeSort xs).Perm xs

¶ 0G Compute · TEE-verified gloss

This theorem ensures that the `mergeSort` function not only sorts the list in a monotonically non-decreasing order but also produces a list that is a permutation of the original input list, maintaining the same elements just possibly in a different order. Proving this would require demonstrating that every element in the sorted list comes from the original list and that the sorting process preserves the linear order property throughout the transformation.

P1

Verifier: Lean kernel leanprover/lean4:v4.10.0 · deterministic, no human in the loop.

P2

Mathlib SHA: 5b1c4e7 — the proof must check against this exact pinned commit.

P3

Settlement: after the 30s challenge window expires with no challenge, settleBounty(bountyId) is callable permissionlessly. USDC always flows to the recorded solver, never to the caller.

§ 02

Evidence on file

each row is a kernel-checked submission. accepted attestations anchor on 0G Storage; the merkle root surfaces on-chain at submission time.

E01 · ACCEPTED · KERNELreal_lean4
Submission by 0x9bADE7…af65C4kernel returned 0
¶ 0G TEE explanation

The proof was accepted because it correctly demonstrated that for any linearly ordered type \( \alpha \) and list \( xs \) of that type, the result of applying mergeSort to \( xs \) is a sorted list and also a permutation of the original list \( xs \). In plain English, this means the mergeSort algorithm produces a sorted version of the input list while preserving the elements' order and structure.

proof sha5edc79ccdd…bea091
attestation478ad47541…d941cd
0G storage root0xdef04b82…25adf5
submitted2026-04-28 11:19:43Z
§ 03

The course, generated.

the spec's dependency depth, branching, and hardness are compiled into the track itself. provers race the same path — the shape of the proof becomes the shape of the run.

depth
7 / 10
breadth
3
branchings
2
hardness
44%
course
1178u
elapsed
46d
SPAWNFINISFORK · AFORK · B

awaiting first prover · the track is drawn, the line is open.

§ 04

Settlement authority

after the 30s challenge window expires with no contest, anyone can call settleBounty(bountyId) — USDC always flows to the recorded solver, never to the caller.

driverkeeperhub

KeeperHub's hosted Turnkey wallet on chain 16602 signs and broadcasts the settlement tx.

signer0x386a7561107f0197D4D798C49F0a603B2351797C

the wallet that will pay gas + sign the on-chain tx. clickable to the Galileo block explorer for independent audit.

functionsettleBounty(uint256)
permissionlesschain 16602

the contract function. KH downtime can't strand the payout — the function is public and any third-party keeper could drive it equally.

§ 05

File a proof

connect a wallet, paste a Lean proof, sign the EIP-191 message. operator pays gas; the recovered address becomes the on-chain solver of record.