A New Perspective on Chess Complexity

Discussion of chess software programming and technical issues.

Moderator: Ras

rblasingame
Posts: 9
Joined: Sun Jul 05, 2026 7:16 pm
Full name: Ryan Blasingame

Re: A New Perspective on Chess Complexity

Post by rblasingame »

@syzygy, you clearly didn't read a single Axiom from section 1....the model is entirely outcome-agnostic, the display model intentionally treats Knights and Bishops as a unified isomorphic class called "Minor Pieces", the Full Model decouples them, and the slack variable based Diophantine equation (those terms mean very specific things in the context of that equation by the way): m + r + q = 8 - k DOES account for pawns captured before they promote. You clearly haven't actually read the paper, you're just being intentionally hostile.
rblasingame
Posts: 9
Joined: Sun Jul 05, 2026 7:16 pm
Full name: Ryan Blasingame

Re: A New Perspective on Chess Complexity

Post by rblasingame »

@OttoLau, that is actually a good catch and a good point, thank you for the helpful critique, I will fix that reference to the 8-piece tablebases.
syzygy
Posts: 6044
Joined: Tue Feb 28, 2012 11:56 pm

Re: A New Perspective on Chess Complexity

Post by syzygy »

rblasingame wrote: Fri Jul 10, 2026 10:16 pm @syzygy, you clearly didn't read a single Axiom from section 1....the model is entirely outcome-agnostic, the display model intentionally treats Knights and Bishops as a unified isomorphic class called "Minor Pieces", the Full Model decouples them, and the slack variable based Diophantine equation (those terms mean very specific things in the context of that equation by the way): m + r + q = 8 - k DOES account for pawns captured before they promote. You clearly haven't actually read the paper, you're just being intentionally hostile.
I have already summarized your 37-page paper. You counted something and you counted it wrong.
rblasingame
Posts: 9
Joined: Sun Jul 05, 2026 7:16 pm
Full name: Ryan Blasingame

Re: A New Perspective on Chess Complexity

Post by rblasingame »

@syzygy, k represents the number of unpromoted pawns, whether or not those pawns are on the board or in the graveyard. It is an objective count of the number of pawns that have not promoted per player. All the math you posted from ChatGPT doesn't account for spatially possible or impossible pawn promotions, those are the baseline combinations, my model does account for this. Go read the section 1 Axioms and Notes, it will literally answer all of the criticisms you have offered. Then go read section 3 vs section 6, the display and full models. Then go read section 8.4 to see the relevance of the full model.
syzygy
Posts: 6044
Joined: Tue Feb 28, 2012 11:56 pm

Re: A New Perspective on Chess Complexity

Post by syzygy »

Code: Select all

def calculate_discrete_chess_macro_space():
total_player_states = 0
# Iterate through all four independent promotion pathways
for mn in range(9): # Knight promotions: 0 to 8
  for mb in range(9): # Bishop promotions: 0 to 8
    for r in range(9): # Rook promotions: 0 to 8
      for q in range(9): # Queen promotions: 0 to 8
        # Enforce the updated four-variable Pawn material constraint
        if mn + mb + r + q <= 8:
          # Compute discrete choices per isolated asset class (T + 1 rule)
            pawns = 8 - mn - mb - r - q + 1
            knights = 3 + mn
            bishops = 3 + mb
            rooks = 3 + r
            queens = 2 + q
          # Accumulate combinations for this specific promotion profile
          total_player_states += pawns * knights * bishops * rooks * queens
You are doing a lot of double counting here.

For example, (q,r,b,n,p) = (1,2,2,2,7) is counted for (mn,mb,r,q)=(3,2,2,1) but also for (mn,mb,r,q)=(2,3,2,1), (2,2,3,1) and (2,2,2,2).

I think what you are counting is indeed the number of material combinations where a captured pawn that never promoted is different from a captured pawn that promoted to a kinght before it got captured, and different from a captured pawn that promoted to a bishop, etc.

I hope you will at least agree that making this distinction is not useful for the human experience.
rblasingame
Posts: 9
Joined: Sun Jul 05, 2026 7:16 pm
Full name: Ryan Blasingame

Re: A New Perspective on Chess Complexity

Post by rblasingame »

syzygy wrote: Fri Jul 10, 2026 10:53 pm For example, (q,r,b,n,p) = (1,2,2,2,7) is counted for (mn,mb,r,q)=(3,2,2,1) but also for (mn,mb,r,q)=(2,3,2,1), (2,2,3,1) and (2,2,2,2).

I think what you are counting is indeed the number of material combinations where a captured pawn that never promoted is different from a captured pawn that promoted to a kinght before it got captured, and different from a captured pawn that promoted to a bishop, etc.

I hope you will at least agree that making this distinction is not useful for the human experience.
A game ending with a Knight in the graveyard is a fundamentally different human-experience than ending with a Bishop in the graveyard...that is literally the point of separating the display and full models. And yes, that is exactly what is being tracked by the algorithm. The model doesn't care what order the pieces ended up in the graveyard, it only distinguishes between the board-graveyard ledgers as discrete lists of items. This is a combinatoric model, not a permutative model, that's where the complexity reduction of 109-110 orders of magnitude stems from. Please, go read the Axioms in section 1.
syzygy
Posts: 6044
Joined: Tue Feb 28, 2012 11:56 pm

Re: A New Perspective on Chess Complexity

Post by syzygy »

Correct calculation:

Code: Select all

def calculate_distinct_white_material_combinations():
    total = 0

    for pawns in range(9):
        promotions_available = 8 - pawns

        for knights in range(11):
            for bishops in range(11):
                for rooks in range(11):
                    for queens in range(10):
                        promotions_required = (
                            max(knights - 2, 0)
                            + max(bishops - 2, 0)
                            + max(rooks - 2, 0)
                            + max(queens - 1, 0)
                        )

                        if promotions_required <= promotions_available:
                            total += 1

    return total


player_total = calculate_distinct_white_material_combinations()
global_total = player_total**2

print(f"Distinct white material combinations: {player_total:,}")
print(f"Cartesian square: {global_total:,}")

Code: Select all

$ python ./count.py
Distinct white material combinations: 8,694
Cartesian square: 75,585,636
syzygy
Posts: 6044
Joined: Tue Feb 28, 2012 11:56 pm

Re: A New Perspective on Chess Complexity

Post by syzygy »

rblasingame wrote: Fri Jul 10, 2026 11:02 pm
syzygy wrote: Fri Jul 10, 2026 10:53 pm For example, (q,r,b,n,p) = (1,2,2,2,7) is counted for (mn,mb,r,q)=(3,2,2,1) but also for (mn,mb,r,q)=(2,3,2,1), (2,2,3,1) and (2,2,2,2).

I think what you are counting is indeed the number of material combinations where a captured pawn that never promoted is different from a captured pawn that promoted to a kinght before it got captured, and different from a captured pawn that promoted to a bishop, etc.

I hope you will at least agree that making this distinction is not useful for the human experience.
A game ending with a Knight in the graveyard is a fundamentally different human-experience than ending with a Bishop in the graveyard...that is literally the point of separating the display and full models. And yes, that is exactly what is being tracked by the algorithm. The model doesn't care what order the pieces ended up in the graveyard, it only distinguishes between the board-graveyard ledgers as discrete lists of items. This is a combinatoric model, not a permutative model, that's where the complexity reduction of 109-110 orders of magnitude stems from. Please, go read the Axioms in section 1.
So you never played chess?
You only introduced complexity for no good reason. There are just 8,694 material combinations for each side, not 300,000. The order in which captured pieces were captured is indeed irrelevant. Whether captured pawns were captured before or after promotion is equally irrelevant. Your "axioms" apparently disagreeing with this elementary fact about chess does not change this. (I guess it may explain how your LLM ended up counting the wrong thing.)

And obviously material balance has been used since forever in the most primitive evaluation functions.
rblasingame
Posts: 9
Joined: Sun Jul 05, 2026 7:16 pm
Full name: Ryan Blasingame

Re: A New Perspective on Chess Complexity

Post by rblasingame »

@syzygy, Pawns cannot be "captured" after they promote, Axiom 4: Pawn Promotion is strictly treated as a substitution event where the pawn is removed from the board to the graveyard and substituted with another piece class (Q,R,N,B). This means that a graveyard can have a maximum of 23 pieces per player if all 16 pawns promote and then all pieces are captured. This is a spatial impossibility because pawns can't hop over each other to reach the last rank, but it is specifically handled by the model to keep the tracking algorithm linear. Please....go read the Axioms of section 1. They specifically deal with all the criticisms you have offered thus far.
syzygy
Posts: 6044
Joined: Tue Feb 28, 2012 11:56 pm

Re: A New Perspective on Chess Complexity

Post by syzygy »

rblasingame wrote: Fri Jul 10, 2026 11:30 pm @syzygy, Pawns cannot be "captured" after they promote, Axiom 4: Pawn Promotion is strictly treated as a substitution event where the pawn is removed from the board to the graveyard and substituted with another piece class (Q,R,N,B). This means that a graveyard can have a maximum of 23 pieces per player if all 16 pawns promote and then all pieces are captured. This is a spatial impossibility because pawns can't hop over each other to reach the last rank, but it is specifically handled by the model to keep the tracking algorithm linear. Please....go read the Axioms of section 1. They specifically deal with all the criticisms you have offered thus far.
Can you spot the difference between this posiiton:
[d]rr4k1/6pp/2Q5/3KN3/8/q7/8/8 w - - 0 1
and this position:
[d]rr4k1/6pp/2Q5/3KN3/8/q7/8/8 w - - 0 1