Canonical Chess Problem Theme Encyclopedia

Thema Standard Themes Specification Catalog

Formal registry of 659 standard chess problem themes defined in the pure-primitive Thema (.thm) pattern specification language. Every definition is compiled from the single source of truth in mate2::pattern_dsl::SPECS and ready for automated verification, test execution, and workbench exploration.

659 Total Themes Defined
14 Logical Chapters
100% Pure Thema (.thm) DSL
Multi-Phase Set Play · Tries · Keys

Logical Chapter Directory

Chapter Section · 112 Themes

01. Interferences, Obstructions & Line Clearances

Mutual interferences (Grimshaw, Novotny, Plachutta), linear obstructions, line clearances (Bristol), bivalve, valve, and critical maneuvers.

# Grimshaw

mate2::types::NamedTheme::Grimshaw Alias: Mutual Interference

Mutual interference between two Black pieces with different line movements (typically Rook and Bishop) on the same intersection square.

Thema Pattern Specification (.thm)
key [A B]
where {a.role, b.role} == {'R', 'B'}, !a.capture,
  mutual_obstruction(a, b, A, B)
with -match_mate_count
subsumes SelfInterference
story "Grimshaw: Key 1.{K}!{threat_clause} causes mutual
  interference on {a.to}: 1...{a} allows 2.{A}# vs 1...{b}
  allows 2.{B}#"
---
set [A B]
where {a.role, b.role} == {'R', 'B'}, !a.capture,
  mutual_obstruction(a, b, A, B)
with -match_mate_count
subsumes SelfInterference
story "Set Grimshaw: Mutual interference on intersection
  square {a.to} in set play: 1...{a} allows 2.{A}#
  vs 1...{b} allows 2.{B}#"

# Novotny

mate2::types::NamedTheme::Novotny Alias: Novotny Interference

White key sacrifices on the intersection square of two Black linear pieces (R and B); each capture interferes with the other defending piece.

Thema Pattern Specification (.thm)
def [a:x@K b:x@K]
key K [A B]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B)
with -match_mate_count
subsumes ActiveSacrifice
story "Novotny: Key 1.{K}!{threat_clause} cuts lines
  of communication on {K.to}: 1...{a} allows 2.{A}#
  vs 1...{b} allows 2.{B}#"

# Plachutta

mate2::types::NamedTheme::Plachutta

Two similar Black line pieces (both Rook-like or both Bishop-like) defend to the same square with mutual interference.

Thema Pattern Specification (.thm)
any [A* B*]
where same_square(a, b), like_sliders(a, b),
  a.from != b.from, (!a.capture || !b.capture),
  (a.mutually_blocks(b, A, B)
    || collinear(a.from, b.from, a.to))
with -match_mate_count
subsumes DefencesOnSameSquare, Holzhausen, Laitinen
story "Plachutta on {a.to}: Key 1.{K}!{threat_clause}
  Mutual interference between like-moving Black pieces
  on {a.to}: 1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#"

# Würzburg-Plachutta

mate2::types::NamedTheme::WuerzburgPlachutta Alias: Wuerzburg Plachutta

Two similar Black line pieces defend to the same square by capturing with mutual interference.

Thema Pattern Specification (.thm)
def [a:x b:x]
key [A B]
where same_square(a, b), a.from != b.from,
  like_sliders(a, b),
  (!collinear(a.from, b.from, a.to)
    || (between(a.to, a.from, b.from)
    && (collinear(a.from, a.to, A.to)
    || collinear(b.from, b.to, B.to))))
subsumes DefencesOnSameSquare, Holzhausen, Laitinen
story "Würzburg-Plachutta on {a.to}:
  Key 1.{K}!{threat_clause} Mutual interference
  between like-moving Black pieces capturing on {a.to}:
  1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#"

# White Grimshaw

mate2::types::NamedTheme::WhiteGrimshaw

Mutual interference between two White pieces (Rook and Bishop) on the same square across tries, try and key, or mating moves.

Thema Pattern Specification (.thm)
try Tr1
try Tr2
where same_square(Tr1, Tr2), unlike_sliders(Tr1, Tr2),
  Tr1.from != Tr2.from
with -single_refutation -sparse_mates -few_replies
  -match_threat_count
story "White Grimshaw: White Rook and Bishop mutually
  interfere on {Tr1.to} across tries 1.{Tr1}?
  and 1.{Tr2}?"
---
try Tr
key K
where same_square(Tr, K), unlike_sliders(Tr, K),
  Tr.from != K.from
with -single_refutation -sparse_mates -few_replies
  -match_threat_count
story "White Grimshaw: White Rook and Bishop mutually
  interfere on {Tr.to} across try 1.{Tr}? and key 1.{K}!"
---
key [A B]
where same_square(A, B), unlike_sliders(A, B),
  A.from != B.from
story "White Grimshaw: Key 1.{K}!{threat_clause} leads
  to mutual interference between the White Rook and
  Bishop on {A.to} delivering checkmate (1...{a} 2.{A}#
  vs 1...{b} 2.{B}#)."

# Anti-Bristol

mate2::types::NamedTheme::AntiBristol Alias: Black Anti-Bristol

A piece moves along a line toward another friendly piece, closing its line of action.

Thema Pattern Specification (.thm)
key K
where K.anti_bristol
story "Anti-Bristol: Key 1.{K}!{threat_clause} moves
  along the line toward a friendly piece, closing its line
  of action."
---
key [A B]
where same_square(a, b), a.from != b.from, !a.capture,
  (a, b).slider, collinear(a.from, a.to, b.from),
  between(a.to, a.from, b.from),
  a.mutually_blocks(b, A, B)
story "Anti-Bristol: Key 1.{K}!{threat_clause} induces
  Black sliders to move toward each other onto {a.to},
  closing each other's line: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Bristol Clearance

mate2::types::NamedTheme::BristolClearance Alias: Bristol

A line-moving piece moves along a line away from another friendly piece to clear the line.

Thema Pattern Specification (.thm)
key K [A]
where K.clears_line_for(A)
story "Bristol line clearance: Key 1.{K}!{threat_clause}
  glides along the line away from the friendly
  {A.role_name}, clearing the way for 2.{A}#."
---
key K (A)
where K.clears_line_for(A)
story "Bristol line clearance: Key 1.{K}! glides
  along the line away from the friendly {A.role_name},
  clearing the way for threat 2.{A}#."

# Goethart

mate2::types::NamedTheme::Goethart Alias: Goethart unpin

Black defense indirectly unpins a White piece by closing the pin line, or White battery mate unpins a Black piece after a Black interference/unpin.

Thema Pattern Specification (.thm)
key [A]
where a.unpins(A),
  (between(a.to, A.from, WK) || a.closes_line(WK)
    || a.closes_line()),
  !collinear(a.from, A.from, WK)
story "Goethart unpinning: Key 1.{K}!{threat_clause}.
  Defense 1...{a} indirectly unpins White while closing
  a line, allowing 2.{A}#."
---
key [A]
where A.unpins(BK),
  (a.closes_line() || a.unpins(A) || (!A.fires_battery
    && a.self_block))
subsumes Mari
story "Goethart unpinning: Key 1.{K}!{threat_clause}.
  Defense 1...{a} obstructs a pinned Black piece,
  allowing 2.{A}# to unpin it and deliver mate."

# Organ pipes

mate2::types::NamedTheme::OrganPipes

Mutual interference among four line pieces (two Rooks and two Bishops) on adjacent files or ranks.

Thema Pattern Specification (.thm)
def [a:R b:B c:R d:B]
any [A B C D]
where distinct(a.from, b.from, c.from, d.from),
  (same(a.from.rank, b.from.rank, c.from.rank,
    d.from.rank) || same(a.from.file, b.from.file,
    c.from.file, d.from.file)),
  a.mutually_blocks(b, A, B), c.mutually_blocks(d, C, D)
story "Organ Pipes: Key 1.{K}!{threat_clause}. Fourfold
  mutual interference between two Rooks and two Bishops:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#,
  1...{d} 2.{D}#."

# Bivalve

mate2::types::NamedTheme::Bivalve

A move opens one line and closes another line of the same color.

Thema Pattern Specification (.thm)
key [A]
where a.bivalve(A)
with -match_mate_count
subsumes Valve
story "Bivalve: Key 1.{K}!{threat_clause}.
  Defense 1...{a} opens one line while closing another,
  enabling checkmate 2.{A}#."
---
key [A B]
where same_piece(a, b), a.to != b.to, A != B, a.valve(A),
  b.valve(B)
with -match_mate_count
subsumes Valve
story "Bivalve: Key 1.{K}!{threat_clause}. Defenses
  1...{a} and 1...{b} by the same piece open a line while
  closing two different lines, enabling checkmates 2.{A}#
  and 2.{B}#."

# Valve

mate2::types::NamedTheme::Valve

A Black move opens a line while closing another line.

Thema Pattern Specification (.thm)
key K [A]
where a.valve(A) || a.bivalve(A)
with -match_mate_count
story "Valve: Defense 1...{a} opens one line while closing
  another, enabling checkmate 2.{A}#."
---
set [A]
where a.valve(A) || a.bivalve(A)
with -match_mate_count
story "Valve: Defense 1...{a} opens one line while closing
  another, enabling checkmate 2.{A}#."

# Critical move

mate2::types::NamedTheme::CriticalMove

A piece moves across a critical square so that another piece can subsequently occupy or cross that square.

Thema Pattern Specification (.thm)
key K [A]
where K.slider,
  (K.crosses(a) && a.closes_line() && !(A.from == K.to
    && A.recaptures(a)) && !between(a.from, K.to, A.to))
    || (K.crosses(A) && A.from != K.to
    && (collinear(K.from, K.to, A.from)
    || (collinear(K.from, K.to, BK)
    && between(A.to, K.to, BK) && A.slider)))
story "Critical move: Key 1.{K}!{threat_clause} crosses
  a critical square, enabling 2.{A}# against 1...{a}."
---
key [A B]
where same_piece(a, b), a.slider, a.crosses(A),
  b.crosses(B)
story "Critical move: Key 1.{K}!{threat_clause} compels
  Black's {a.piece} to cross critical squares ({A.to},
  {B.to}), enabling 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
any [A]
where a.slider, a.crosses(A)
story "Critical move: Black's {a.piece} move 1...{a}
  crosses the critical square {A.to}, enabling 2.{A}#."

# Clearance

mate2::types::NamedTheme::Clearance Alias: Line clearance

A piece vacates a line of action (or moves along a line) so that another friendly piece can traverse that cleared line to deliver checkmate.

Thema Pattern Specification (.thm)
key K [A]
where A.from != K.to, K.from != A.to,
  (A.crosses(K.from) || K.clears_line_for(A))
story "Line clearance: Key 1.{K}!{threat_clause} vacates
  {K.from}, clearing the line of action for 2.{A}#
  against 1...{a}."
---
key K (A)
where A.from != K.to, K.from != A.to,
  (A.crosses(K.from) || K.clears_line_for(A))
with -match_threat_count
story "Line clearance: Key 1.{K}! vacates {K.from},
  clearing the line of action for threat 2.{A}#."
---
key K [A@K.from]
where A.from != K.to
story "Square clearance: Key 1.{K}!{threat_clause}
  vacates {K.from}, allowing 2.{A}# to occupy {K.from}
  against 1...{a}."
---
key K (A@K.from)
where A.from != K.to
with -match_threat_count
story "Square clearance: Key 1.{K}! vacates {K.from},
  allowing threat 2.{A}# to occupy {K.from}."

# Gate opening

mate2::types::NamedTheme::GateOpening

A piece moves off a line to open access (open the gate) for a line-piece behind it.

Thema Pattern Specification (.thm)
key K [A]
where A.from != K.to, K.from != A.to, A.crosses(K.from)
story "Gate opening: Key 1.{K}!{threat_clause} opens
  a gate through White's lines, enabling checkmate 2.{A}#
  against 1...{a}."

# White interference

mate2::types::NamedTheme::WhiteInterference

White tries fail because the try piece interferes with the line of another friendly White piece needed for the mate, which the key avoids.

Thema Pattern Specification (.thm)
try Tr1 [! _]
try Tr2 [_ !]
key K [A B]
where between(Tr1.to, A.from, A.to),
  between(Tr2.to, B.from, B.to)
with -match_threat_count -match_mate_count
  -capture_try_piece -refutation_is_check
  -single_refutation
story "White interference: Tries 1.{Tr1}? (refuted
  by 1...{a}!) and 1.{Tr2}? (refuted by 1...{b}!) fail
  by interfering with White's own lines for 2.{A}# and
  2.{B}#, whereas Key 1.{K}!{threat_clause} keeps those
  lines clear."
---
try Tr1 [!]
try Tr2 [_]
key K [A]
where Tr1.to == Tr2.to, Tr1.from != Tr2.from,
  A.from == Tr2.from, between(Tr1.to, A.from, A.to)
with -match_threat_count -match_mate_count
  -capture_try_piece -refutation_is_check
  -single_refutation -sparse_mates -few_replies
story "White interference: Tries 1.{Tr1}? and 1.{Tr2}?
  intersect on {Tr1.to}, interfering with 2.{A}# against
  1...{a}; Key 1.{K}!{threat_clause} keeps the line open."

# Anti-critical

mate2::types::NamedTheme::AntiCritical

A move that deliberately avoids or crosses a critical square to prevent an interference.

Thema Pattern Specification (.thm)
key K [A]
where K.slider,
  !(A.from == K.to && A.recaptures(a)
    && !A.fires_battery),
  !between(a.from, K.to, A.to),
  ((collinear(K.from, K.to, A.to)
    && between(a.to, K.from, A.to)
    && !between(a.to, K.to, A.to) && a.to != K.to
    && a.closes_line()) || (!K.capture
    && between(a.to, K.from, K.to) && a.role != 'K'
    && ((A.to == a.to && (distance(K.to, a.to) >= 2
    || A.fires_battery)) || a.closes_line()))
    || (!K.capture && between(A.to, K.from, K.to)
    && A.from != K.to && a.to == K.to))
story "Anti-critical move: Key 1.{K}!{threat_clause}
  crosses the critical square {a.to}, enabling 2.{A}#
  against 1...{a}."
---
key K (A*) [A]
where K.slider,
  !(A.from == K.to && A.recaptures(a)
    && !A.fires_battery),
  !between(a.from, K.to, A.to),
  ((collinear(K.from, K.to, A.to)
    && between(a.to, K.from, A.to)
    && !between(a.to, K.to, A.to) && a.to != K.to
    && a.closes_line()) || (!K.capture
    && between(a.to, K.from, K.to) && a.role != 'K'
    && ((A.to == a.to && (distance(K.to, a.to) >= 2
    || A.fires_battery)) || a.closes_line()))
    || (!K.capture && between(A.to, K.from, K.to)
    && A.from != K.to && a.to == K.to))
with -match_threat_count
story "Anti-critical move: Key 1.{K}!{threat_clause}
  crosses the critical square {a.to}, enabling 2.{A}#
  against 1...{a}."

# Line closure

mate2::types::NamedTheme::LineClosure

A move closes a line of action of an opponent or friendly piece.

Thema Pattern Specification (.thm)
key K [A]
where a.closes_line() || a.closes_line(WK)
    || a.obstructs(A)
story "Line closure: Key 1.{K}!{threat_clause}. Defense
  1...{a} closes a guard line, enabling checkmate 2.{A}#."

# Levman

mate2::types::NamedTheme::Levman Alias: Levman theme

Two Black pieces move to the same square to parry the threat (closing a White threat line), each introducing a distinct fatal weakness (unpinning, self-pinning, interference, or unguard) exploited by distinct mates.

Thema Pattern Specification (.thm)
key K (X) [A B]
where !a.capture, same_square(a, b), a.from != b.from,
  a.role != b.role, A != B,
  (!A.recaptures(a) || !B.recaptures(b)),
  (a.unpins(A) || b.unpins(B) || a.self_pins_for(A)
    || b.self_pins_for(B) || (a.role == 'N'
    && a.unguards(A)) || (b.role == 'N' && b.unguards(B))
    || ((a.interferes_for(A) || b.interferes_for(B)
    || a.closes_line() || b.closes_line())
    && (a.opens_line(WK) || b.opens_line(WK)
    || a.opens_line() || b.opens_line() || (a.slider
    && b.slider))))
with -match_threat_count -match_mate_count
story "Levman theme: Key 1.{K}! (threat 2.{X}#).
  Defenses 1...{a} and 1...{b} on {a.to} parry the threat
  and allow distinct mates 2.{A}# and 2.{B}#."

# Turton

mate2::types::NamedTheme::Turton Alias: Turton doubling

A line piece moves along a line past an intersection square, followed by another line piece onto that line in the opposite direction.

Thema Pattern Specification (.thm)
key K [A*]
where K.slider, A.slider, K.along(A), K.crosses(A),
  A.from != K.to
with -match_mate_count
subsumes CriticalMove
story "Turton doubling: Key 1.{K}!{threat_clause} clears
  the line past the critical square, allowing 2.{A}#
  to follow."
---
key K (A*)
where K.slider, A.slider, K.along(A), K.crosses(A),
  A.from != K.to
with -match_threat_count
subsumes CriticalMove
story "Turton doubling: Key 1.{K}! clears the line past
  the critical square to threaten 2.{A}#."

# Indian

mate2::types::NamedTheme::Indian Alias: Indian theme

A White piece crosses a critical square and is then intercepted by a friendly piece to prevent stalemate, later discovering mate.

Thema Pattern Specification (.thm)
key K [A]
where A.from == K.to, A.fires_battery
subsumes BatteryCreation, BatteryPlay
story "Indian theme: Key 1.{K}!{threat_clause} crosses
  the critical square to mask the line, averting stalemate
  and preparing 2.{A}#."

# Pickabish

mate2::types::NamedTheme::Pickabish Alias: Pickabish theme

Mutual interference between a Pawn and a Bishop on the same square.

Thema Pattern Specification (.thm)
def [a:P b:B]
key [A B]
where same_square(a, b), !a.is_promotion, !(a, b).capture
subsumes DefencesOnSameSquare, Laitinen
story "Pickabish: Key 1.{K}!{threat_clause} induces mutual
  interference between a Pawn and a Bishop on {a.to}:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Interference

mate2::types::NamedTheme::Interference

A piece moves onto a line of action of another piece, cutting off its guard or power.

Thema Pattern Specification (.thm)
key [A]
where a.interferes_for(A)
story "Interference: Key 1.{K}!{threat_clause} provokes
  defense 1...{a} which interrupts a vital defensive line,
  conceding checkmate 2.{A}#."

# Line opening

mate2::types::NamedTheme::LineOpening

A piece moves off a line, opening it for an attacking piece.

Thema Pattern Specification (.thm)
key [A:Q|R|B]
where a.role != 'K', !collinear(A.from, a.from, a.to),
  (between(a.from, A.from, BK)
    || between(a.from, A.from, A.to)
    || between(a.from, A.to, BK))
with -match_mate_count
story "Line opening: Defense 1...{a} opens an attack line
  for White checkmate 2.{A}#."
---
key K [A]
where a.opens_line(WK) || (K.opens_line()
    && (between(K.from, A.from, A.to)
    || between(K.from, A.from, BK) || A.fires_battery))
with -match_mate_count
story "Line opening: Move 1.{K} features line-opening play
  (1...{a} 2.{A}#)."

# Self-interference

mate2::types::NamedTheme::SelfInterference

A Black defending move obstructs the line of another Black defending piece.

Thema Pattern Specification (.thm)
key K [A]
where a.interferes_for(A) || (a.closes_line()
    && !(a.to == A.to && !a.capture)
    && (K.threat_count > 0 || (A.mate_count == 1
    && a.closes_line(A.to)
    && !collinear(a.from, a.to, A.to))
    || a.closes_line(WK))) || (K.threat_count > 0
    && A.mate_count == 1 && a.obstructs(A))
with -match_mate_count
story "Self-interference: Defense 1...{a} interferes with
  a friendly defensive line, conceding 2.{A}#."
---
set [A]
where a.closes_line(A.to) && distance(A.from, A.to) >= 2
    && a.to != A.to && !collinear(a.from, a.to, A.to)
with -match_mate_count
story "Self-interference: Defense 1...{a} interferes with
  a friendly defensive line, conceding 2.{A}#."

# Ovchinnikov

mate2::types::NamedTheme::Ovchinnikov

Defenses simultaneously open a White line and close a Black line.

Thema Pattern Specification (.thm)
key K [A]
where a.role != 'K', !a.capture, !A.recaptures(a),
  A.from != K.to, a.opens_line(WK), a.closes_line(),
  (K.threat_count > 0 || a.closes_line(A.to))
subsumes LineClosure, SelfInterference
story "Ovchinnikov: Key 1.{K}!{threat_clause} forces
  defense 1...{a} which opens a White line and closes
  a Black line, met by checkmate 2.{A}#."

# Square clearance

mate2::types::NamedTheme::SquareClearance

A piece moves away from a square so that another piece of the same color can occupy it to mate.

Thema Pattern Specification (.thm)
key K [A@K.from]
where A.from != K.to
subsumes Clearance
story "Square clearance: Key 1.{K}!{threat_clause}
  vacates a vital square, allowing 2.{A}# to deliver mate
  against 1...{a}."
---
key K (A@K.from)
where A.from != K.to
subsumes Clearance
story "Square clearance: Key 1.{K}! vacates {K.from},
  allowing threat 2.{A}# to occupy that square."

# Anti-Levman

mate2::types::NamedTheme::AntiLevman

The mating move simultaneously unmasks a White line toward BK and closes another White line toward BK.

Thema Pattern Specification (.thm)
key [A]
where a.anti_levman(A)
story "Anti-Levman: Key 1.{K}!{threat_clause} answers
  1...{a} with 2.{A}#, unmasking one White line while
  closing another."

# Anti-Novotny

mate2::types::NamedTheme::AntiNovotny

A defense that prevents or parries a Novotny interference sacrifice.

Thema Pattern Specification (.thm)
def [a@K.from b@K.from]
key K [A B]
where a.role in {'R', 'Q'}, b.role in {'B', 'Q'}
subsumes BlackUmnov, DefencesOnSameSquare, Laitinen
story "Anti-Novotny: Key 1.{K}!{threat_clause}
  answers defenses preventing Novotny interference:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Pericritical

mate2::types::NamedTheme::Pericritical

A piece takes an indirect two-step detour (K.from -> K.to -> A.to) around a critical line/square after a try along the alternate route (K.from -> T.to toward A.to) fails.

Thema Pattern Specification (.thm)
try T (X?)
key K (Y?) [A]
where same_piece(T, K), K.to == A.from, T.to != K.to,
  (T.threat_count == 0 || X != A),
  (T.threat_count != 1 || K.threat_count != 1 || X == Y),
  !collinear(K.from, K.to, T.to),
  !collinear(K.from, T.to, A.to),
  !collinear(K.from, K.to, A.to),
  !collinear(T.to, K.to, A.to), collinear(T.to, A.to),
  T.threat_count <= 1, K.threat_count > 0,
  (distance(K.from, K.to) > 1 || distance(K.to, A.to) > 1
    || distance(T.to, A.to) > 1)
story "Pericritical move: After try 1.{T}? fails,
  Key 1.{K}!{threat_clause} takes a pericritical detour
  to deliver 1...{a} 2.{A}#."

# Anti-Grimshaw

mate2::types::NamedTheme::AntiGrimshaw

A defense that parries or prevents a Grimshaw mutual interference.

Thema Pattern Specification (.thm)
try [! _]
try [_ !]
key K
where same_square(a, b), {a.role, b.role} == {'R', 'B'}
story "Anti-Grimshaw: Key 1.{K}!{threat_clause} resolves
  play where defenses deliberately prevent a Grimshaw
  mutual interference."

# Isaev

mate2::types::NamedTheme::Isaev

Different Black pieces arrive on the same square with line openings, line closures, self-blocks, or self-pins producing distinct mates.

Thema Pattern Specification (.thm)
def [a:!K b:!K]
key K [A B]
where same_square(a, b), a.role != b.role,
  a.from != b.from, K.threat_count > 0,
  (!a.capture || (a.self_pins_for(A)
    && b.self_pins_for(B))),
  (a.unpins(A) || b.unpins(B) || a.self_pins_for(A)
    || b.self_pins_for(B) || (a.cuts_enemy_line()
    && (a.opens_line(WK) || b.opens_line(WK)
    || a.interferes_for(A) || b.interferes_for(B)
    || a.unguards(A) || b.unguards(B))))
story "Isaev: Key 1.{K}!{threat_clause} meets different
  Black pieces defending on {a.to} with checkmates
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Finnish Novotny

mate2::types::NamedTheme::FinnishNovotny

A Novotny interference where the sacrificing piece is captured by both Rook and Bishop.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where a.mutually_blocks(b, A, B)
with -match_mate_count
subsumes DoubleSacrificeKey
story "Finnish Novotny: Key 1.{K}!{threat_clause}
  sacrifices on the intersection; capture defenses 1...{a}
  and 1...{b} allow 2.{A}# and 2.{B}#."

# Perfect Novotny

mate2::types::NamedTheme::PerfectNovotny

Novotny interference with at least 3 capturing defenses on the intersection square, or a single threat with two distinct checkmates.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K c:x@K]
key K [A* B* C*]
where distinct(a.from, b.from, c.from),
  a.mutually_blocks(b, A, B)
with -match_mate_count
story "Perfect Novotny: Key 1.{K}!{threat_clause}
  sacrifices on the intersection, met by three
  capturing defenses: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."
---
def [a:R:x@K b:B:x@K]
key K (T) [A* B*]
where distinct(T, A, B), a.mutually_blocks(b, A, B)
with -match_mate_count
subsumes FinnishNovotny
story "Perfect Novotny: Key 1.{K}! (threat 2.{T}#)
  sacrifices on {K.to}; captures 1...{a} and 1...{b} allow
  distinct mates 2.{A}# and 2.{B}#."

# Anticipatory interference

mate2::types::NamedTheme::AnticipatoryInterference

A line is closed in advance behind an obstacle before the defending piece moves along it.

Thema Pattern Specification (.thm)
key K [A]
where !K.capture, A.from != K.to, a.slider, a.capture,
  between(a.to, a.from, K.to)
story "Anticipatory interference:
  Key 1.{K}!{threat_clause} closes a line in advance,
  enabling 2.{A}# against 1...{a}."

# Romanian Novotny

mate2::types::NamedTheme::RomanianNovotny

Novotny sacrifice on intersection captured by Black King and other pieces.

Thema Pattern Specification (.thm)
def [a:x@K b:x@K c:K:x@K]
key K [A B C]
where a.ortho_slider, b.diag_slider, a.ortho, b.diag,
  distinct(a.from, b.from, c.from),
  a.mutually_blocks(b, A, B)
story "Romanian Novotny: Key 1.{K}!{threat_clause}
  sacrifices on the intersection, captured by the Black
  King and pieces: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."
---
def [a:R:x@K b:B:x@K]
any K (T) [A B]
where a.mutually_blocks(b, A, B)
story "Romanian Novotny: 1.{K}! (threat 2.{T}#) sacrifices
  on the intersection; captures 1...{a} and 1...{b} allow
  2.{A}# and 2.{B}#."
---
def [a:R b:B]
any K (XY) [A B]
where same_square(a, b), a.from != b.from, a.capture,
  b.capture,
  (a.mutually_blocks(b, A, B) || (a.closes_line()
    && b.closes_line()))
with -match_threat_count -single_refutation
  -capture_try_piece
subsumes Novotny
story "Romanian Novotny: 1.{K}! (threats 2.{X}#,
  2.{Y}#) sacrifices on the intersection; captures
  1...{a} and 1...{b} defeat both threats and allow 2.{A}#
  and 2.{B}#."

# Holzhausen

mate2::types::NamedTheme::Holzhausen

Mutual interference between two pieces of the same motion type on the same line.

Thema Pattern Specification (.thm)
key [A B]
where a.role == b.role, (a.role in {'R', 'B'}),
  collinear(a.from, b.from, a.to),
  between(a.to, a.from, b.from),
  (a.interferes_for(A) || b.interferes_for(B)
    || a.mutually_blocks(b, A, B))
story "Holzhausen: Key 1.{K}!{threat_clause} induces
  mutual interference between two pieces of the same
  motion type: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."
---
key [A B]
where same_piece(a, b), a.role == 'Q',
  (a.interferes_with('R') || a.interferes_with('B')),
  (b.interferes_with('R') || b.interferes_with('B'))
story "Holzhausen: Key 1.{K}!{threat_clause} induces
  the Black Queen to interfere with Rook/Bishop lines:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Barulin (A)

mate2::types::NamedTheme::BarulinA

Barulin theme type A: multiple Black pieces defend on the same square(s) with mutual interference, multi-piece convergence, or multi-phase separation.

Thema Pattern Specification (.thm)
vir [A B]
key K [C D]
where same_square(a, b), a.from != b.from,
  {a.role, b.role} == {'R', 'B'}, K.threat_count > 0
with -match_threat_count
story "Barulin A: Mutual interference between 1...{a} and
  1...{b} on {a.to} recurs across phases, answered after
  Key 1.{K}!{threat_clause} by 2.{C}# and 2.{D}#."
---
key K [A B]
where {a.role, b.role} == {'R', 'B'}, !a.capture,
  K.threat_count > 0, mutual_obstruction(a, b, A, B)
story "Barulin A: Key 1.{K}!{threat_clause} causes mutual
  interference on {a.to}: 1...{a} allows 2.{A}# vs 1...{b}
  allows 2.{B}#."
---
key K [A B C D]
where K.threat_count > 0, same_square(a, b),
  a.from != b.from, {a.role, b.role} == {'R', 'B'},
  same_square(c, d), c.from != d.from,
  {c.role, d.role} == {'R', 'B'}, a.to != c.to
story "Barulin A: Doubled same-square defenses after
  Key 1.{K}!{threat_clause}: 1...{a}/1...{b} on {a.to}
  (2.{A}#, 2.{B}#) and 1...{c}/1...{d} on {c.to}
  (2.{C}#, 2.{D}#)."
---
key K [A B C]
where K.threat_count > 0, same_square(a, b, c),
  distinct(a.from, b.from, c.from), (a, b, c).role != 'K',
  {a.role, b.role} == {'R', 'B'}
story "Barulin A: Three Black pieces converge on {a.to}
  after Key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Latvian Novotny

mate2::types::NamedTheme::LatvianNovotny

Mutual capture on Novotny intersection square adjacent to the Black King or in virtual play.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where K.flight_block, a.mutually_blocks(b, A, B)
story "Latvian Novotny: Key 1.{K}!{threat_clause}
  sacrifices on the intersection adjacent to the Black
  King: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."
---
vir [A B]
key K
where same_square(a, b), a.from != b.from,
  {a.role, b.role} == {'R', 'B'}, a.closes_line(),
  b.closes_line()
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "Latvian Novotny: Rook and Bishop interference
  on {a.to} in virtual play (1...{a} 2.{A}#
  vs 1...{b} 2.{B}#) before Key 1.{K}!{threat_clause}."
---
vir [A* _]
+any K [B C]
where same_square(a, b), a.from != b.from, a.capture,
  b.capture, a.to != K.to, {a.role, b.role} == {'R', 'B'}
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "Latvian Novotny: Captures 1...{a} and
  1...{b} on {a.to} allow 2.{B}# and 2.{C}# after
  1.{K}!{threat_clause}."

# Masked interference

mate2::types::NamedTheme::MaskedInterference

An interference occurring behind an existing obstruction on a line of action.

Thema Pattern Specification (.thm)
key K [A]
where (a.closes_line(A.to) || (a.closes_line(A.from)
    && between(A.from, a.to, A.to))),
  a.role != 'K',
  (between(A.from, a.to, A.to)
    || collinear(K.from, a.to, A.to) || (!a.capture
    && !A.capture && A.from == K.to))
subsumes LineClosure
story "Masked interference: Key 1.{K}!{threat_clause}
  provokes defense 1...{a} which interferes with a masked
  line behind an obstacle, allowing 2.{A}#."

# Clearance sacrifice

mate2::types::NamedTheme::ClearanceSacrifice

A piece is sacrificed specifically to vacate a square or open a line for another piece.

Thema Pattern Specification (.thm)
def [a@K]
key K [A@K]
where collinear(A.from, K.from, K.to), A.from != K.from
subsumes ActiveSacrifice, Kozhakin
story "Clearance sacrifice: Key 1.{K}!{threat_clause}
  sacrifices the key piece to clear the square for
  mate 2.{A}#."

# Brede clearance

mate2::types::NamedTheme::BredeClearance

A line clearance where the cleared piece delivers mate from another direction.

Thema Pattern Specification (.thm)
key K:Q [A:N@K.from]
with -match_mate_count
subsumes Clearance
story "Brede clearance: Key 1.{K}!{threat_clause}
  vacates {K.from}, enabling Knight checkmate 2.{A}#
  against 1...{a}."
---
key K:Q (Thr:N@K.from)
with -match_threat_count
subsumes Clearance
story "Brede clearance: Key 1.{K}! vacates {K.from}
  to prepare Knight checkmate threat 2.{Thr}#."

# Grimshaw in Try

mate2::types::NamedTheme::GrimshawTry

A Grimshaw mutual interference occurs within the variations or refutations of a try phase.

Thema Pattern Specification (.thm)
def [a b]
try (_) [A B]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B)
with -single_refutation -capture_try_piece
  -refutation_is_check -no_threats_sparse_mates
  -no_threats_few_replies -match_mate_count
  -match_threat_count
story "Grimshaw in Try: Grimshaw mutual interference
  occurs in Try 1.{Tr}? play: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."
---
try (_) [! _]
try (_) [_ !]
key [A B]
where same_square(a, b), {a.role, b.role} == {'R', 'B'},
  a.from != b.from
with -single_refutation -capture_try_piece
  -refutation_is_check -no_threats_sparse_mates
  -no_threats_few_replies -match_mate_count
  -match_threat_count
story "Grimshaw in Try: Grimshaw mutual interference
  on {a.to} across try refutations 1...{a}! (to
  1.{Tr1}?) and 1...{b}! (to 1.{Tr2}?), resolved
  by Key 1.{K}!{threat_clause}."

# Grimshaw in set play

mate2::types::NamedTheme::GrimshawSetPlay

A Grimshaw mutual interference is present in the set play of the problem.

Thema Pattern Specification (.thm)
set [A B]
where same_square(a, b), {a.role, b.role} == {'R', 'B'},
  a.from != b.from, mutual_obstruction(a, b, A, B)
with -match_mate_count
story "Grimshaw in set play: Grimshaw mutual
  interference on {a.to} in set play: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Novotny in Try

mate2::types::NamedTheme::NovotnyTry

A Novotny interference key sacrifice is executed as a try, refuted by Black.

Thema Pattern Specification (.thm)
try Tr
where Tr.cuts_enemy_line('R'), Tr.cuts_enemy_line('B')
with -capture_try_piece
story "Novotny in Try: Novotny sacrificial interference
  occurs as a try 1.{Tr}?."

# Boros

mate2::types::NamedTheme::Boros Alias: Boros pin-mate

Mutual interference between two Black defenses on the same square answered by pin-mates, or Black defense self-blocking while indirectly unpinning.

Thema Pattern Specification (.thm)
key [A B]
where same_square(a, b), a.from != b.from, (A, B).pin_mate
story "Boros: Key 1.{K}!{threat_clause} induces mutual
  interference on {a.to}, answered by dual pin-mates:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:!K]
any [A]
where a.unpins(BK), a.self_block
subsumes PinMate
story "Boros: Defense 1...{a} indirectly unpins a Black
  piece while self-blocking, conceding checkmate 2.{A}#."

# Bi-coloured Bristol

mate2::types::NamedTheme::BicoloredBristol Alias: Bicolor Bristol

Line clearance between pieces of opposite colors: a White slider key clears a line for a Black slider defense to traverse its origin square, or a Black slider defense clears a line for a White slider mate.

Thema Pattern Specification (.thm)
def [a:Q|R|B]
key K:Q|R|B [A]
where K.clears_line_for(a)
story "Bi-coloured Bristol: White {K.role_name} key
  1.{K}! clears the line across {K.from} for Black's
  {a.role_name} defense 1...{a}, met by 2.{A}#."
---
def [a:Q|R|B]
key [A:Q|R|B]
where a.clears_line_for(A)
story "Bi-coloured Bristol: Black {a.role_name}
  move 1...{a} clears the line across {a.from} for
  White's {A.role_name} to traverse it and deliver
  checkmate 2.{A}#."

# Azerbaijani Novotny

mate2::types::NamedTheme::AzerbaijaniNovotny

White key sacrifices on the intersection square of a Black Rook and Bishop with a double threat (XY); captures by the Rook and Bishop mutually interfere to allow two other checkmates A and B.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K (XY) [A B]
where a.from != b.from, a.mutually_blocks(b, A, B)
subsumes DoubleThreat, Novotny
story "Azerbaijani Novotny: Key 1.{K}! (threats 2.{XY}#)
  sacrifices on {K.to}; captures by Rook (1...{a}
  2.{A}#) and Bishop (1...{b} 2.{B}#) yield two further
  checkmates."

# English Grimshaw

mate2::types::NamedTheme::EnglishGrimshaw

Mutual interference between a Black Queen and a Black Rook or Bishop arriving on the same non-capturing intersection square.

Thema Pattern Specification (.thm)
def [a:Q:!x b:R|B:!x]
key [A B]
where a.ortho != b.ortho, a.mutually_blocks(b, A, B)
subsumes DefencesOnSameSquare, Laitinen
story "English Grimshaw: Key 1.{K}!{threat_clause} induces
  mutual interference on {a.to} between Black Queen
  (1...{a} 2.{A}#) and {b.role_name} (1...{b} 2.{B}#)."

# English Novotny

mate2::types::NamedTheme::EnglishNovotny

White key sacrifices on an intersection square where captures by the Black Queen and a Black Rook or Bishop mutually interfere with each other.

Thema Pattern Specification (.thm)
def [a:Q:x@K b:R|B:x@K]
key K [A B]
where a.from != b.from, a.ortho != b.ortho
story "English Novotny: Key 1.{K}!{threat_clause}
  sacrifices on {K.to}, provoking mutual interference
  between capturing Queen (1...{a} 2.{A}#) and
  {b.role_name} (1...{b} 2.{B}#)."
---
key K (AB)
where K.cuts_enemy_line('Q'),
  K.cuts_enemy_line('R') || K.cuts_enemy_line('B')
subsumes ActiveSacrifice, DoubleThreat
story "English Novotny: Key 1.{K}! cuts the lines
  of the Black Queen and Rook/Bishop on {K.to},
  creating double threat 2.{AB}#."

# Double bind Grimshaw

mate2::types::NamedTheme::DoubleBindGrimshaw

Four distinct Black line pieces (Rooks, Bishops, or Queen) move to the same non-capturing intersection square, each allowing a distinct checkmate.

Thema Pattern Specification (.thm)
def [a:!x b:!x c:!x d:!x]
key [A B C D]
where same_square(a, b, c, d),
  distinct(a.from, b.from, c.from, d.from),
  (a, b, c, d).slider
subsumes CederInterference, EnglishGrimshaw, Grimshaw,
  Pickabish, Stocchi
story "Double bind Grimshaw: Key 1.{K}!{threat_clause}
  compels four Black sliders to converge on {a.to}
  with four distinct checkmates: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#, 1...{d} 2.{D}#."

# Brojt

mate2::types::NamedTheme::Brojt Alias: Double-Decker Novotny

Synthesis of Novotny sacrifice on the key's arrival square and Grimshaw mutual interference between a Black Rook and Bishop on a second square.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K c:R:!x d:B:!x]
key K [A B C D]
where c.mutually_blocks(d, C, D), c.to != K.to
subsumes DoubleSacrificeKey, Grimshaw, Novotny,
  RookSacrifice
story "Brojt (Double-Decker Novotny):
  Key 1.{K}!{threat_clause} combines a Novotny sacrifice
  on {K.to} (1...{a} 2.{A}#, 1...{b} 2.{B}#) with
  a Grimshaw interference on {c.to} (1...{c} 2.{C}#,
  1...{d} 2.{D}#)."

# Loyd-Turton

mate2::types::NamedTheme::LoydTurton Alias: Loyd Turton

Stronger White line-piece (Queen) crosses the intersection square along a line so a weaker White line-piece (Rook or Bishop) moves onto that line in front of it to deliver checkmate.

Thema Pattern Specification (.thm)
key K:Q [A:R|B]
where K.from != A.from, collinear(K.from, K.to, A.to),
  between(A.to, K.to, BK), K.dir != A.dir
story "Loyd-Turton: White Queen key 1.{K}!{threat_clause}
  withdraws along the line so the {A.role_name} can step
  in front and deliver checkmate 2.{A}# after 1...{a}."

# Brunner-Turton

mate2::types::NamedTheme::BrunnerTurton Alias: Brunner Turton

Two White line-pieces of equal value (two Rooks or two Bishops) execute a Turton doubling along a line.

Thema Pattern Specification (.thm)
key K:R|B [A:R|B]
where K.role == A.role, K.from != A.from,
  collinear(K.from, K.to, A.to), between(A.to, K.to, BK),
  K.dir != A.dir
story "Brunner-Turton: White {K.role_name} key
  1.{K}!{threat_clause} crosses the intersection square
  to double with the second {A.role_name}, which delivers
  2.{A}# after 1...{a}."

# Zepler doubling

mate2::types::NamedTheme::ZeplerDoubling Alias: Zepler

Forward White line-piece moves along the line toward the target first, allowing a trailing White line-piece already behind it on that line to advance along the same line to deliver mate.

Thema Pattern Specification (.thm)
key K:Q|R|B [A:Q|R|B]
where K.from != A.from, collinear(A.from, K.from, K.to),
  between(K.from, A.from, K.to), K.dir == A.dir
subsumes BristolClearance
story "Zepler doubling: Forward {K.role_name}
  1.{K}!{threat_clause} advances along the line, allowing
  the trailing {A.role_name} on {A.from} to follow along
  the same line with 2.{A}# after 1...{a}."

# Kockelkorn clearance

mate2::types::NamedTheme::Kockelkorn Alias: Kockelkorn

White key piece vacates its square off-line so that another White piece lands directly on that exact vacated square to deliver checkmate.

Thema Pattern Specification (.thm)
key K [A@K.from]
where K.from != A.from, !collinear(K.from, K.to, A.from)
story "Kockelkorn clearance: Key 1.{K}!{threat_clause}
  vacates {K.from}, allowing White's {A.role_name}
  to occupy {K.from} and deliver 2.{A}# after 1...{a}."

# Loyd line clearance

mate2::types::NamedTheme::LoydClearance Alias: Loyd clearance

White line-piece moves along a line past a square so that a second White piece can move along that same line onto that vacated intermediate square to deliver checkmate.

Thema Pattern Specification (.thm)
key K:Q|R|B [A]
where K.from != A.from, collinear(K.from, K.to, A.to),
  between(A.to, K.from, K.to),
  collinear(A.from, K.from, K.to),
  between(K.from, A.from, K.to)
subsumes CriticalMove
story "Loyd line clearance: White {K.role_name} key
  1.{K}!{threat_clause} sweeps past {A.to}, clearing
  the line and square for 2.{A}# after 1...{a}."

# Double Bristol

mate2::types::NamedTheme::DoubleBristol

Two distinct Bristol line-clearances occur across two defensive variations.

Thema Pattern Specification (.thm)
key K:Q|R|B [A:Q|R|B B:Q|R|B]
where K.clears_line_for(A), K.clears_line_for(B)
story "Double Bristol: Key 1.{K}!{threat_clause}
  clears the line for two distinct Bristol mates:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:Q|R|B b:Q|R|B]
key [A:Q|R|B B:Q|R|B]
where a.clears_line_for(A), b.clears_line_for(B)
story "Double Bristol: Two Black slider defenses clear
  lines for White slider mates: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Black Bristol

mate2::types::NamedTheme::BlackBristol

Two collinear Black line-pieces move in the same direction along their shared line of action across variations.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
key [A B]
where diff_piece(a, b), a.to != b.to,
  collinear(a.from, b.from, a.to), a.dir == b.dir,
  between(a.from, b.from, b.to)
story "Black Bristol: After Key 1.{K}!{threat_clause},
  Black {a.role_name} move 1...{a} (2.{A}#) and
  {b.role_name} move 1...{b} (2.{B}#) exhibit Black
  Bristol line play."

# Würzburg clearance

mate2::types::NamedTheme::WurzburgClearance Alias: Wurzburg clearance

The key piece vacates a critical square that is subsequently traversed orthogonally in one variation mate and diagonally in another variation mate.

Thema Pattern Specification (.thm)
key K [A:Q|R B:Q|B]
where A.ortho, B.diag, between(K.from, A.from, A.to),
  between(K.from, B.from, B.to)
subsumes GateOpening, LineOpening
story "Würzburg clearance: Key 1.{K}!{threat_clause}
  vacates {K.from}, which is traversed orthogonally
  in 1...{a} 2.{A}# and diagonally in 1...{b} 2.{B}#."

# Hungarian Novotny

mate2::types::NamedTheme::HungarianNovotny

White sacrifices on the intersection square of a Black Rook and Bishop, where at least one of the capturing defenses also self-blocks the Black King.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where a.mutually_blocks(b, A, B),
  (a.self_block || b.self_block)
subsumes Decoy, FinnishNovotny, SelfBlock
story "Hungarian Novotny: Key 1.{K}!{threat_clause}
  sacrifices on {K.to}, combining Novotny mutual
  interference with a self-block: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Czech Novotny

mate2::types::NamedTheme::CzechNovotny

Novotny sacrifice on the intersection square of a Black Rook and Bishop where both resulting checkmates are pure mates.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where a.mutually_blocks(b, A, B), (A, B).pure_mate
subsumes DoublePureMate, FinnishNovotny
story "Czech Novotny: Key 1.{K}!{threat_clause} sacrifices
  on {K.to}, producing pure checkmates after Rook and
  Bishop captures: 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:R:x b:B:x]
key K [A B]
where a.to == b.to, a.mutually_blocks(b, A, B),
  (A, B).pure_mate
subsumes DoublePureMate, LatvianNovotny
story "Czech Novotny: Key 1.{K}!{threat_clause} sets up
  a Novotny sacrifice on {a.to}, producing pure checkmates
  after 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Polish Novotny

mate2::types::NamedTheme::PolishNovotny

Novotny sacrifice on the intersection of a Black Rook and Bishop where the same White piece delivers two distinct checkmates after the captures.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where a.mutually_blocks(b, A, B), same_piece(A, B),
  A.to != B.to
subsumes FinnishNovotny
story "Polish Novotny: Key 1.{K}!{threat_clause}
  sacrifices on {K.to}, and the same White {A.role_name}
  delivers both mates: 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Dutch Novotny

mate2::types::NamedTheme::DutchNovotny

Novotny sacrifice on the intersection of a Black Rook and Bishop where at least one capture simultaneously opens a White line of attack.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K [A B]
where a.mutually_blocks(b, A, B),
  (a.opens_line(A) || b.opens_line(B))
subsumes FinnishNovotny
story "Dutch Novotny: Key 1.{K}!{threat_clause} sacrifices
  on {K.to}, combining Novotny interference with line
  opening: 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Russian Novotny

mate2::types::NamedTheme::RussianNovotny

Two Novotny tries on distinct intersection squares.

Thema Pattern Specification (.thm)
def [a:R:x@Tr1 b:B:x@Tr1 c:R:x@Tr2 d:B:x@Tr2]
try Tr1 [A B _ _]
try Tr2 [_ _ C D]
where Tr1.to != Tr2.to, a.mutually_blocks(b, A, B),
  c.mutually_blocks(d, C, D)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, TransferredMates
story "Russian Novotny: Twin Novotny tries 1.{Tr1}?
  on {Tr1.to} (1...{a} 2.{A}#, 1...{b} 2.{B}#) and
  1.{Tr2}? on {Tr2.to} (1...{c} 2.{C}#, 1...{d} 2.{D}#)."

# Double Novotny

mate2::types::NamedTheme::DoubleNovotny

Two distinct Novotny sacrifices occur across a try phase and the key phase on different intersection squares.

Thema Pattern Specification (.thm)
def [a:R:x@Tr b:B:x@Tr c:R:x@K d:B:x@K]
try Tr [A B _ _]
key K [_ _ C D]
where Tr.to != K.to, a.mutually_blocks(b, A, B),
  c.mutually_blocks(d, C, D)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate, FinnishNovotny, LatvianNovotny,
  TransferredMates
story "Double Novotny: Novotny in Try 1.{Tr}? on {Tr.to}
  (1...{a} 2.{A}#, 1...{b} 2.{B}#) followed by Novotny in
  Key 1.{K}! on {K.to} (1...{c} 2.{C}#, 1...{d} 2.{D}#)."

# Double Grimshaw

mate2::types::NamedTheme::DoubleGrimshaw

Two Grimshaw mutual interferences between Black Rooks and Bishops on two distinct intersection squares in the same phase.

Thema Pattern Specification (.thm)
def [a:R:!x b:B:!x c:R:!x d:B:!x]
key [A B C D]
where a.to != c.to, a.mutually_blocks(b, A, B),
  c.mutually_blocks(d, C, D)
subsumes DefencesOnSameSquare, Grimshaw, Laitinen,
  LineClosure
story "Double Grimshaw: Key 1.{K}!{threat_clause} forces
  two Grimshaw mutual interferences on {a.to} (1...{a}
  2.{A}#, 1...{b} 2.{B}#) and {c.to} (1...{c} 2.{C}#,
  1...{d} 2.{D}#)."

# Pawn Grimshaw

mate2::types::NamedTheme::PawnGrimshaw

Mutual interference between a Black Pawn and a Black Rook or Bishop arriving on the same non-capturing square.

Thema Pattern Specification (.thm)
def [a:P:!x b:R|B:!x]
key [A B]
where a.to == b.to, a.from != b.from,
  b.blocks_line(a, B) || a.blocks_line(b, A)
subsumes DefencesOnSameSquare, Laitinen
story "Pawn Grimshaw: Key 1.{K}!{threat_clause} induces
  interference on {a.to} between Black Pawn (1...{a}
  2.{A}#) and {b.role_name} (1...{b} 2.{B}#)."

# Pawn Novotny

mate2::types::NamedTheme::PawnNovotny

White key piece sacrifices on a square where captures by a Black Pawn and a Black Rook or Bishop interfere with each other.

Thema Pattern Specification (.thm)
def [a:P:x@K b:R|B:x@K]
key K [A B]
where a.from != b.from, a.blocks_line(b, A)
subsumes DoubleSacrificeKey
story "Pawn Novotny: Key 1.{K}!{threat_clause} sacrifices
  on {K.to}, where captures by Black Pawn (1...{a} 2.{A}#)
  and {b.role_name} (1...{b} 2.{B}#) interfere."

# Plachutta in Try

mate2::types::NamedTheme::PlachuttaTry

Plachutta interference between two orthogonally or diagonally like-moving Black sliders in a try phase.

Thema Pattern Specification (.thm)
def [a:R|B:x@Tr b:R|B:x@Tr]
try Tr [A B]
where a.role == b.role, a.from != b.from,
  a.mutually_blocks(b, A, B)
story "Plachutta in Try: Try 1.{Tr}? sacrifices on
  {Tr.to}, inducing mutual interference between two Black
  {a.role_name}s: 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Interference cross-check

mate2::types::NamedTheme::InterferenceCrossCheck

Two Black checking defenses arrive on the same square (interfering with each other) and are met by distinct non-capturing cross-check mates.

Thema Pattern Specification (.thm)
def [a:+ b:+]
key [A!@a B!@b]
where a.to == b.to, a.from != b.from
subsumes DefencesOnSameSquare, DoubleCrossCheck, Laitinen
story "Interference cross-check:
  After Key 1.{K}!{threat_clause}, Black checks 1...{a}
  and 1...{b} on {a.to} are met by distinct cross-checks
  2.{A}# and 2.{B}#."

# Anti-Roman

mate2::types::NamedTheme::AntiRoman Alias: Anti-Roman defence

A Black piece defends on one square to allow mate A in a try while its move to a second square refutes the try; after the key, both moves by that Black piece allow distinct mates A and B.

Thema Pattern Specification (.thm)
def [a:!K b:!K]
try (X) [A !]
key (X) [A B]
where same_piece(a, b), a.to != b.to,
  (a.interferes_for(A) || b.interferes_for(B)
    || a.self_block || b.self_block || a.self_pins_for(A)
    || b.self_pins_for(B))
story "Anti-Roman: Black's {a.role_name} on {a.from}
  refutes Try 1.{Tr}? with 1...{b}! (while 1...{a}
  allowed 2.{A}#); after Key 1.{K}!{threat_clause},
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Feldmann 1

mate2::types::NamedTheme::Feldmann1

A square-vacating key threatens mate while Black slider defenses open and close lines, separating mates by the key piece and other White pieces.

Thema Pattern Specification (.thm)
key K [A B]
where a.slider, b.slider, a.from != b.from,
  A.from == K.to, B.from != K.to,
  (a.opens_line() || a.closes_line() || b.opens_line()
    || b.closes_line())
story "Feldmann 1: Key 1.{K}!{threat_clause} vacates
  {K.from}; slider defenses 1...{a} and 1...{b} separate
  2.{A}# (by the key piece) and 2.{B}#."

# Feldmann 2

mate2::types::NamedTheme::Feldmann2 Alias: Tagilskaya

A try and the key by the same White slider produce changed mates against Black Knight correction defenses.

Thema Pattern Specification (.thm)
def [a:N b:N]
try Tr [A B]
key K [C D]
where same_piece(Tr, K), Tr.slider, same_piece(a, b),
  a.to != b.to
subsumes ChangedPlay
story "Feldmann 2 (Tagilskaya): Slider try 1.{Tr}? and
  Key 1.{K}! produce changed mates against Knight defenses
  1...{a} and 1...{b}: 2.{A}#/2.{B}# to 2.{C}#/2.{D}#."

# Chicco

mate2::types::NamedTheme::Chicco Alias: Chicco theme

A sacrificial key sets up a Grimshaw on an adjacent square while capturing the key piece with one of the Grimshaw sliders produces a third distinct mate.

Thema Pattern Specification (.thm)
def [a:!x b:!x c:R|B:x@K]
key K [A B C]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B),
  same_piece(a, c) || same_piece(b, c)
subsumes ActiveSacrifice, DefencesOnSameSquare, Grimshaw,
  Laitinen
story "Chicco: Sacrificial Key 1.{K}!{threat_clause} sets
  up Grimshaw on {a.to} (1...{a} 2.{A}#, 1...{b} 2.{B}#)
  plus capture variation 1...{c} 2.{C}#."

# Baku Novotny

mate2::types::NamedTheme::BakuNovotny

Captures by a Black Rook and Bishop on the same square produce one pair of mates in set/try play and a completely changed pair of mates after the key.

Thema Pattern Specification (.thm)
def [a:R:x b:B:x]
vir [A B]
key [C D]
where a.mutually_blocks(b, C, D)
subsumes Novotny, OneLineHerpai
story "Baku Novotny: Captures 1...{a} and 1...{b}
  on {a.to} change mates from 2.{A}#/2.{B}# in virtual
  play to 2.{C}#/2.{D}# after Key 1.{K}!."

# Norwegian Novotny

mate2::types::NamedTheme::NorwegianNovotny

A try sacrifices on a Rook-Bishop intersection (Latvian Novotny) with mates A and B; the key plays elsewhere and captures on that square produce changed mates C and D.

Thema Pattern Specification (.thm)
def [a:R:x b:B:x c]
try Tr [A B !]
key K [C D _]
where a.mutually_blocks(b, A, B), a.to == b.to,
  K.to != Tr.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes BakuNovotny, Novotny
story "Norwegian Novotny: Try 1.{Tr}? induces Rook/Bishop
  captures 1...{a} 2.{A}# and 1...{b} 2.{B}# (refuted
  by 1...{c}!), changed after Key 1.{K}! to 2.{C}#
  and 2.{D}#."

# Pickabish-Novotny

mate2::types::NamedTheme::PickabishNovotny

White key sacrifices on a square where a Black Pawn and a Black Bishop both capture it, mutually interfering with each other.

Thema Pattern Specification (.thm)
def [a:P:x@K b:B:x@K]
key K [A B]
where a.from != b.from, a.blocks_line(b, A)
subsumes DoubleSacrificeKey, PawnNovotny
story "Pickabish-Novotny: Key 1.{K}!{threat_clause}
  sacrifices on {K.to}; captures 1...{a} (Pawn) and
  1...{b} (Bishop) mutually interfere, allowing 2.{A}#
  and 2.{B}#."

# Greek Novotny

mate2::types::NamedTheme::GreekNovotny Alias: Berger theme

Two tries each provoke one half of a Rook-Bishop Grimshaw allowing mate A while being refuted by the other piece; the key plays A as first move.

Thema Pattern Specification (.thm)
def [a:!x b:!x]
try Tr1 [A !]
try Tr2 [! A]
key A [C D]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, C, D)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiGrimshaw, Arnhem, Caprice,
  DefencesOnSameSquare, Grimshaw, Laitinen
story "Greek Novotny (Berger): Tries 1.{Tr1}? (1...{a}
  2.{A}#; 1...{b}!) and 1.{Tr2}? (1...{b} 2.{A}#;
  1...{a}!) lead to Key 1.{A}!, answering 1...{a} 2.{C}#
  and 1...{b} 2.{D}#."
---
def [a:!x b:!x]
try C [A !]
try D [! A]
key A [C D]
where {a.role, b.role} == {'R', 'B'}, a.to == b.to,
  a.from != b.from
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiGrimshaw, Arnhem, Caprice,
  DefencesOnSameSquare, Grimshaw, Laitinen
story "Greek Novotny (Berger): Tries 1.{C}? (1...{a}
  2.{A}#; 1...{b}!) and 1.{D}? (1...{b} 2.{A}#;
  1...{a}!) lead to Key 1.{A}!, answering 1...{a} 2.{C}#
  and 1...{b} 2.{D}#."

# Remote Novotny

mate2::types::NamedTheme::RemoteNovotny

Virtual play has a Grimshaw of defenses a and b on K.to allowing mates A and B; Key K sacrifices on K.to, threatening AB and answering captures a and b with mates A and B.

Thema Pattern Specification (.thm)
def [a:R b:B]
vir [A B]
key K (AB) [A B]
where a.mutually_blocks(b, A, B), a.to == K.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Novotny, Rudenko
story "Remote Novotny: Set Grimshaw on {K.to} (1...{a}
  2.{A}#, 1...{b} 2.{B}#) becomes sacrificial Key 1.{K}!
  threatening 2.{A}# and 2.{B}#."

# Schiffmann Novotny

mate2::types::NamedTheme::SchiffmannNovotny

White key sacrifices on an intersection square where two Black sliders capture (at least one giving check) and self-pin, allowing battery/cross-check mates.

Thema Pattern Specification (.thm)
def [a:x@K:+ b:x@K]
key K [A B]
where a.slider, b.slider, a.from != b.from,
  (a.self_pins || b.self_pins || A.fires_battery
    || B.fires_battery)
subsumes DoubleSacrificeKey, ProvokedCheck
story "Schiffmann Novotny: Sacrificial
  Key 1.{K}!{threat_clause} on {K.to} provokes checking
  capture 1...{a} (2.{A}#) and 1...{b} (2.{B}#)."

# Boros Novotny

mate2::types::NamedTheme::BorosNovotny

White key sacrifices on a Black King flight square, so captures by Black Rook, Bishop, and King produce three distinct checkmates.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K c:K:x@K]
key K [A B C]
where a.mutually_blocks(b, A, B)
subsumes DoubleSacrificeKey, RoyalSacrificeKey
story "Boros Novotny: Key 1.{K}!{threat_clause} sacrifices
  on flight square {K.to}; captures 1...{a}, 1...{b},
  and 1...{c} allow 2.{A}#, 2.{B}#, and 2.{C}#."

# Boros Grimshaw

mate2::types::NamedTheme::BorosGrimshaw

A non-capturing Grimshaw between Black Rook and Bishop takes place on a flight square adjacent to the Black King, where each move simultaneously creates a self-block.

Thema Pattern Specification (.thm)
def [a:!x b:!x]
key [A B]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B), (a, b).self_block
subsumes DefencesOnSameSquare, Grimshaw, Laitinen,
  LineClosure, SelfInterference
story "Boros Grimshaw: Key 1.{K}!{threat_clause}.
  Black Rook 1...{a} and Bishop 1...{b} mutually interfere
  and self-block on flight square {a.to}, allowing 2.{A}#
  and 2.{B}#."

# Latvian Plachutta

mate2::types::NamedTheme::LatvianPlachutta

A White try sacrifices on the intersection square of two like-moving Black sliders (Plachutta in try play), refuted by a third Black defense.

Thema Pattern Specification (.thm)
def [a:x@Tr b:x@Tr c]
try Tr [A B !]
where like_sliders(a, b), a.mutually_blocks(b, A, B)
story "Latvian Plachutta: Try 1.{Tr}? sacrifices
  on {Tr.to} for Plachutta captures 1...{a} 2.{A}# and
  1...{b} 2.{B}#, refuted by 1...{c}!."

# Boros Plachutta

mate2::types::NamedTheme::BorosPlachutta

Two like-moving Black sliders capture or move onto a square adjacent to the Black King, mutually interfering and self-blocking.

Thema Pattern Specification (.thm)
key [A B]
where like_sliders(a, b),
  !collinear(a.from, b.from, a.to),
  a.mutually_blocks(b, A, B), a.flight_block
subsumes DefencesOnSameSquare, Laitinen, Plachutta
story "Boros Plachutta: Key 1.{K}!{threat_clause}.
  Like-moving sliders 1...{a} and 1...{b} converge
  on flight square {a.to}, allowing 2.{A}# and 2.{B}#."

# Kubbel-Grimshaw

mate2::types::NamedTheme::KubbelGrimshaw

Two White tries are refuted by Black defenses a and b; after the key, those same two defenses interfere and allow the try moves or distinct mates.

Thema Pattern Specification (.thm)
try Tr1 [! _]
try Tr2 [_ !]
key K [A B]
where (a.closes_line() || b.closes_line()
    || same_square(a, b)),
  (A.to == Tr1.to || B.to == Tr2.to)
story "Kubbel-Grimshaw: Tries 1.{Tr1}? (1...{a}!)
  and 1.{Tr2}? (1...{b}!) are united by Key 1.{K}!,
  where 1...{a} and 1...{b} allow 2.{A}# and 2.{B}#."

# White Novotny

mate2::types::NamedTheme::WhiteNovotny

Two different White pieces try moving to the same intersection square with a double threat, each refuted by a different Black defense.

Thema Pattern Specification (.thm)
try Tr1 (XY) [! _]
try Tr2 (XY) [_ !]
where Tr1.from != Tr2.from, Tr1.to == Tr2.to
with -match_threat_count
story "White Novotny: Two White pieces try occupying
  {Tr1.to}—1.{Tr1}? (refuted by 1...{a}!) and 1.{Tr2}?
  (refuted by 1...{b}!)—with double threat 2.{X}#/2.{Y}#."

# Royal Grimshaw

mate2::types::NamedTheme::RoyalGrimshaw

The White King makes a flight-giving key that sets up a Royal battery, and a Black slider's moves interfere or unguard to allow Royal/battery mates.

Thema Pattern Specification (.thm)
key K:K [A B]
where K.flights_given >= 1, a.slider, b.slider,
  (A.fires_battery || B.fires_battery || a.closes_line()
    || b.closes_line())
subsumes FlightGivingKey
story "Royal Grimshaw: White King Key 1.{K}! grants
  a flight and sets up Royal battery play after
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Ceder interference

mate2::types::NamedTheme::CederInterference Alias: Ceder

At least three distinct Black pieces move without capturing to the same intersection square, each interfering with Black lines (without unguarding the mating square from departure) to allow distinct mates.

Thema Pattern Specification (.thm)
def [a:!x b:!x c:!x]
key [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from),
  a.mutually_blocks(b, A, B), c.closes_line(C.to),
  !c.unguards(C.to), !attacks(c.from, C.to)
subsumes DefencesOnSameSquare, Grimshaw
story "Ceder interference: Key 1.{K}!{threat_clause}.
  Three Black pieces converge on {a.to} without capturing
  (1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#)."

# Schneider interference

mate2::types::NamedTheme::SchneiderInterference

Two tries and the key by the same White pawn (captures and pushes) create distinct line openings and interferences.

Thema Pattern Specification (.thm)
try Tr1:P [! _]
try Tr2:P [_ !]
key K:P [A B]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to)
subsumes WhiteCorrection
story "Schneider interference: White pawn tries 1.{Tr1}?
  (1...{a}!) and 1.{Tr2}? (1...{b}!) lead to pawn
  Key 1.{K}!, answering with 2.{A}# and 2.{B}#."

# Harmonium Pipes

mate2::types::NamedTheme::HarmoniumPipes

Three Black sliders (two Bishops and one Rook, or two Rooks and one Bishop) mutually interfere across two intersection squares (a 3-slider subset of Organ Pipes).

Thema Pattern Specification (.thm)
def [a:R|B:!x b:R|B:!x c:R|B:!x d:R|B:!x]
key [A B C D]
where same_piece(a, b), a.to != b.to, same_square(a, c),
  same_square(b, d), distinct(a.from, c.from, d.from)
subsumes DefencesOnSameSquare, Laitinen, LineClosure,
  SelfInterference
story "Harmonium Pipes: Key 1.{K}!{threat_clause}.
  Three Black sliders mutually interfere on {a.to} and
  {b.to}: 1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#,
  1...{d} 2.{D}#."

# Avanta

mate2::types::NamedTheme::Avanta Alias: Avanta theme

Combination of set/try Grimshaw or Organ-pipes interferences with a key that introduces Novotny or double-threat interference play.

Thema Pattern Specification (.thm)
vir [A B _ _]
key (XY) [_ _ C D]
where a.slider, b.slider, c.slider, d.slider
with -match_threat_count
subsumes KarlstromFleck
story "Avanta: Virtual slider interferences (1...{a}
  2.{A}#, 1...{b} 2.{B}#) are followed by double-threat
  Key 1.{K}! (2.{X}#/2.{Y}#) with 1...{c} 2.{C}# and
  1...{d} 2.{D}#."

# Theme Elmgren

mate2::types::NamedTheme::Elmgren Alias: Elmgren

Try Tr by a White piece fails to Black slider defense a; Key K moves that same White piece to another square, clearing a line so defenses a and b form a Grimshaw on a.to allowing mates A and B.

Thema Pattern Specification (.thm)
def [a:!x b:!x]
try Tr [! _]
key K [A B]
where same_piece(Tr, K), Tr.to != K.to, K.opens_line(WK),
  {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B)
with -single_refutation -match_threat_count
subsumes DefencesOnSameSquare, Grimshaw, Laitinen
story "Theme Elmgren: Try 1.{Tr}? fails to 1...{a}!;
  Key 1.{K}! clears a line so 1...{a} (2.{A}#) and 1...{b}
  (2.{B}#) form a Grimshaw on {a.to}."
---
def [a:!x b:!x]
try Tr (XY) [! _]
key K (XY) [A B]
where same_piece(Tr, K), Tr.to != K.to, K.opens_line(WK),
  {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B)
with -single_refutation -match_threat_count
subsumes DefencesOnSameSquare, Grimshaw, Laitinen
story "Theme Elmgren: Try 1.{Tr}? fails to 1...{a}!;
  Key 1.{K}! clears a line so 1...{a} (2.{A}#) and 1...{b}
  (2.{B}#) form a Grimshaw on {a.to}."

# Nanning theme

mate2::types::NamedTheme::NanningTheme

Key K vacates square K.from, and Black Rook and Bishop defenses a and b both move to K.from (Grimshaw on the vacated key square), allowing mates A and B.

Thema Pattern Specification (.thm)
def [a:!x b:!x]
key K [A B]
where {a.role, b.role} == {'R', 'B'}, a.to == K.from,
  a.mutually_blocks(b, A, B)
subsumes AntiNovotny, Grimshaw
story "Nanning theme: Key 1.{K}!{threat_clause} vacates
  {K.from}, inducing a Rook-Bishop Grimshaw on {K.from}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Bicolor bi-valve

mate2::types::NamedTheme::BicolorBivalve Alias: Bicolor bi-valve theme

Two Black defenses on the same square simultaneously open White attack lines and close Black guard lines (combining Valve and Bivalve).

Thema Pattern Specification (.thm)
key [A B]
where same_square(a, b), a.from != b.from,
  (a.valve(A) || a.bivalve(A)),
  (b.valve(B) || b.bivalve(B))
subsumes DefencesOnSameSquare, Laitinen, Valve
story "Bicolor bi-valve: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} on {a.to} open and close
  both White and Black lines for 2.{A}# and 2.{B}#."

# Seilberger theme

mate2::types::NamedTheme::Seilberger Alias: Seilberger

Moves of a Black Rook or slider along a line indirectly pin a Black piece while opening and closing Black lines (Bivalve + Black correction).

Thema Pattern Specification (.thm)
def [a:R|B|Q b:R|B|Q]
key [A B]
where same_piece(a, b), a.to != b.to,
  (a.bivalve(A) || b.bivalve(B)),
  (a.indirect_pins(BK) || b.indirect_pins(BK)
    || A.pin_mate || B.pin_mate)
subsumes Bivalve
story "Seilberger theme: Key 1.{K}!{threat_clause}.
  Slider moves 1...{a} (2.{A}#) and 1...{b} (2.{B}#)
  combine Bivalve line play with indirect pinning."

# Hume theme

mate2::types::NamedTheme::Hume Alias: Hume

Two Black pieces belonging to a half-pin (or pin line) converge on the same square in a Grimshaw interference, allowing pin-mates.

Thema Pattern Specification (.thm)
key [A B]
where a.mutually_blocks(b, A, B),
  (a.self_pins_for(A) || b.self_pins_for(B)),
  (A.pin_mate || B.pin_mate)
subsumes DefencesOnSameSquare, Laitinen, PinMate, SelfPin
story "Hume theme: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} interfere and self-pin
  on {a.to}, allowing pin-mates 2.{A}# and 2.{B}#."

# Ojanen

mate2::types::NamedTheme::Ojanen Alias: Ojanen theme

Two White sliders try moving to the same square (White Grimshaw) and are refuted by moves of the same Black Knight, which become Black correction variations after the key.

Thema Pattern Specification (.thm)
def [a:N b:N]
try Tr1 [! _]
try Tr2 [_ !]
key K [A B]
where Tr1.from != Tr2.from, Tr1.to == Tr2.to, Tr1.slider,
  Tr2.slider, same_piece(a, b), a.to != b.to
story "Ojanen: White Grimshaw tries 1.{Tr1}? and 1.{Tr2}?
  on {Tr1.to} are refuted by Knight moves 1...{a}!
  and 1...{b}!, which allow 2.{A}# and 2.{B}# after
  Key 1.{K}!."

# Paros

mate2::types::NamedTheme::Paros Alias: Paros theme

Two Black Knights execute random and correction moves that open and close lines (Bivalve) while pinning or unguarding.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N]
key [A B C D]
where same_piece(a, b), same_piece(c, d), a.from != c.from
story "Paros: Key 1.{K}!{threat_clause}.
  Correction pairs by two Black Knights (1...{a}/1...{b}
  and 1...{c}/1...{d}) produce 2.{A}#, 2.{B}#, 2.{C}#,
  and 2.{D}#."

# American Indian

mate2::types::NamedTheme::AmericanIndian

A White slider withdraws along a line behind another piece (or clears a line) while granting a capture flight or sacrificing a piece.

Thema Pattern Specification (.thm)
def [a:K:x b]
key K:Q|R|B [A B]
where (A.fires_battery || B.fires_battery
    || K.clears_line_for(A))
subsumes FlightCapture
story "American Indian: Slider Key 1.{K}!{threat_clause}
  withdraws along a line, granting capture flight
  1...{a} 2.{A}# and answering 1...{b} with 2.{B}#."

# Target Bristol

mate2::types::NamedTheme::TargetBristol

A White slider sacrifices itself on a square along a line, and when Black captures it, a second White slider traverses that same line to recapture on the exact same square.

Thema Pattern Specification (.thm)
def [a:x@K]
key K:Q|R|B [A:Q|R|B:x@K]
where K.clears_line_for(A)
subsumes Kozhakin, SacrificeBristol, ZeplerDoubling
story "Target Bristol: Slider Key 1.{K}! sacrifices
  on {K.to}; after 1...{a}, White's {A.role} traverses
  the cleared line to recapture on {K.to} with 2.{A}#."

# Sacrifice Bristol

mate2::types::NamedTheme::SacrificeBristol

A White slider executes a Bristol line clearance while sacrificing itself on its arrival square.

Thema Pattern Specification (.thm)
key K:Q|R|B [A:Q|R|B]
where K.sacrifice, K.clears_line_for(A)
subsumes ActiveSacrifice, BristolClearance
story "Sacrifice Bristol: Sacrificial
  Key 1.{K}!{threat_clause} clears the line for 2.{A}#
  after 1...{a}."

# Schnoebelen

mate2::types::NamedTheme::Schnoebelen Alias: Schnoebelen theme

After tries with changed mates (Zagoruiko), the key sacrifices a White slider on an edge/corner square to clear a line (Bristol/Annihilation) for the White Queen.

Thema Pattern Specification (.thm)
try [A B]
key K:R|B [C:Q D:Q]
where K.clears_line_for(C)
subsumes BristolClearance, ChangedPlay
story "Schnoebelen: After Try 1.{Tr}? (2.{A}#, 2.{B}#),
  Key 1.{K}! clears the line for Queen mates 2.{C}#
  and 2.{D}#."

# Hess theme

mate2::types::NamedTheme::Hess Alias: Hess

Two half-pinned Black Knights move to two shared destination squares, producing four distinct mates via self-pinning, self-interference, and bivalve play.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N]
key [A B C D]
where same_piece(a, c), same_piece(b, d),
  a.from != b.from, same_square(a, b), same_square(c, d),
  a.to != c.to
subsumes BlackCorrection, DefencesOnSameSquare, Laitinen,
  Paros
story "Hess theme: Key 1.{K}!{threat_clause}. Two Black
  Knights converge on {a.to} (1...{a} 2.{A}#, 1...{b}
  2.{B}#) and {c.to} (1...{c} 2.{C}#, 1...{d} 2.{D}#)."

# Melnikov theme

mate2::types::NamedTheme::Melnikov Alias: Melnikov

The key creates a half-pin, and a Grimshaw between a Black Rook and Bishop on that line indirectly self-unpins Black while allowing two distinct mates.

Thema Pattern Specification (.thm)
def [a:!x b:!x]
key K [A B]
where {a.role, b.role} == {'R', 'B'},
  a.mutually_blocks(b, A, B), K.half_pin,
  (a.unpins(BK) || b.unpins(BK))
subsumes DefencesOnSameSquare, Grimshaw, Laitinen
story "Melnikov theme: Key 1.{K}!{threat_clause} combines
  half-pin play with a Rook-Bishop Grimshaw on {a.to}
  (1...{a} 2.{A}#, 1...{b} 2.{B}#)."

# Support mate

mate2::types::NamedTheme::SupportMate

The key piece moves to guard a square directly adjacent to the Black King, and after a Black self-block or interference, a different White piece delivers a contact checkmate on that square.

Thema Pattern Specification (.thm)
key K [A B]
where A.from != K.to, distance(A.to, BK) == 1,
  K.guards(A.to), a.self_block
subsumes SelfBlock
story "Support mate: Key 1.{K}!{threat_clause} guards
  {A.to} so that after self-block 1...{a}, White delivers
  supported contact mate 2.{A}#."

# Leibovici

mate2::types::NamedTheme::Leibovici Alias: Leibovici theme

A White Queen key moves along a pin line (Pelle move), and an English Grimshaw between the Black Queen and a Black Bishop/Rook on the same square allows distinct battery mates.

Thema Pattern Specification (.thm)
def [a:Q:!x b:B|R:!x]
key K:Q [A B]
where a.mutually_blocks(b, A, B),
  (A.fires_battery || B.fires_battery)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes BatteryMate, BatteryPlay, EnglishGrimshaw,
  Plachutta
story "Leibovici: Queen Key 1.{K}!{threat_clause}
  induces an English Grimshaw on {a.to} (1...{a} 2.{A}#,
  1...{b} 2.{B}#)."

# Peris theme

mate2::types::NamedTheme::Peris Alias: Peris

A square-clearing key threatens mate on the vacated square while two Black slider checks combine Goethart unpinning and Levman interference.

Thema Pattern Specification (.thm)
def [a:B|R|Q:+ b:B|R|Q:+]
key K (T@K.from) [A B]
where a.from != b.from
subsumes ProvokedCheck
story "Peris theme: Key 1.{K}! clears {K.from} for threat
  2.{T}# and answers slider checks 1...{a} (2.{A}#) and
  1...{b} (2.{B}#)."

# Hochberger theme

mate2::types::NamedTheme::Hochberger Alias: Hochberger

A White slider key moves along a line (Anti-Bristol / unpinning key) so that a Black Rook capturing the key piece with check is answered by a pawn recapture mate while other defenses allow the key piece to mate.

Thema Pattern Specification (.thm)
def [a:R:x@K:+ b]
key K:R|B|Q [A:P:x@K B]
where B.from == K.to
subsumes ActiveSacrifice, Kozhakin, ProvokedCheck
story "Hochberger theme: Slider Key 1.{K}!{threat_clause}
  answers checking capture 1...{a} with pawn recapture
  2.{A}# and 1...{b} with 2.{B}#."

# White Gamage

mate2::types::NamedTheme::WhiteGamage

Four tries by two White Rooks and two White Bishops to two intersection squares (doubled White Grimshaw) fail to Black captures/interferences before the key solves.

Thema Pattern Specification (.thm)
try Tr1:R [! _ _ _]
try Tr2:B [_ ! _ _]
try Tr3:R [_ _ ! _]
try Tr4:B [_ _ _ !]
where Tr1.to == Tr2.to, Tr3.to == Tr4.to, Tr1.to != Tr3.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes WhiteGrimshaw
story "White Gamage: Doubled White Grimshaw tries
  on {Tr1.to} (1.{Tr1}?, 1.{Tr2}?) and {Tr3.to} (1.{Tr3}?,
  1.{Tr4}?)."
---
try Tr1:R [! _]
try Tr2:B [_ !]
try Tr3:R [_ !]
try Tr4:B [_ !]
where Tr1.to == Tr2.to, Tr3.to == Tr4.to, Tr1.to != Tr3.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes WhiteGrimshaw
story "White Gamage: Doubled White Grimshaw tries
  on {Tr1.to} (1.{Tr1}?, 1.{Tr2}?) and {Tr3.to} (1.{Tr3}?,
  1.{Tr4}?)."

# Area clearkeeping

mate2::types::NamedTheme::AreaClearkeeping Alias: Area clearing

Multiple waiting tries by the White King fail because the White King obstructs a White slider's mating line; the key moves the White King to the unique square that keeps all mating lines open.

Thema Pattern Specification (.thm)
try Tr1:K () [! _]
try Tr2:K () [_ !]
key K:K () [A:Q|R|B B:Q|R|B]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  (A.crosses(Tr1.to) || B.crosses(Tr1.to)
    || A.crosses(Tr2.to) || B.crosses(Tr2.to))
subsumes WhiteCorrection
story "Area clearkeeping: White King tries 1.{Tr1}? and
  1.{Tr2}? obstruct White's sliders; Key 1.{K}! keeps
  the lines clear for 2.{A}# and 2.{B}#."

# White Organ pipes

mate2::types::NamedTheme::WhiteOrganPipes

Two White Rooks and two White Bishops standing on the same rank or file execute four mutual line-opening/interference tries or mates.

Thema Pattern Specification (.thm)
any [A:R B:B C:R D:B]
where distinct(A.from, B.from, C.from, D.from),
  (same(A.from.rank, B.from.rank, C.from.rank,
    D.from.rank) || same(A.from.file, B.from.file,
    C.from.file, D.from.file))
story "White Organ pipes: Two White Rooks and two White
  Bishops aligned on a rank/file deliver 2.{A}#, 2.{B}#,
  2.{C}#, and 2.{D}#."
---
try Tr1:R [! _ _ _]
try Tr2:B [_ ! _ _]
try Tr3:R [_ _ ! _]
try Tr4:B [_ _ _ !]
where distinct(Tr1.from, Tr2.from, Tr3.from, Tr4.from),
  (same(Tr1.from.rank, Tr2.from.rank, Tr3.from.rank,
    Tr4.from.rank) || same(Tr1.from.file, Tr2.from.file,
    Tr3.from.file, Tr4.from.file))
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "White Organ pipes: Two White Rooks and two White
  Bishops aligned on a rank/file execute tries 1.{Tr1}?,
  1.{Tr2}?, 1.{Tr3}?, and 1.{Tr4}?."
---
try Tr1:B [! _]
try Tr2:R [_ !]
try Tr3:R [_ !]
try Tr4:B [_ !]
where distinct(Tr1.from, Tr2.from, Tr3.from, Tr4.from),
  (same(Tr1.from.rank, Tr2.from.rank, Tr3.from.rank,
    Tr4.from.rank) || same(Tr1.from.file, Tr2.from.file,
    Tr3.from.file, Tr4.from.file))
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "White Organ pipes: Two White Rooks and two White
  Bishops aligned on a rank/file execute tries 1.{Tr1}?,
  1.{Tr2}?, 1.{Tr3}?, and 1.{Tr4}?."

# Latvian Boros Plachutta

mate2::types::NamedTheme::BorosPlachuttaLatvian

Two like-moving Black sliders capture on two adjacent squares (one a flight square, reciprocal Boros Plachutta), producing four distinct mates.

Thema Pattern Specification (.thm)
def [a:R:x b:R:x c:R:x d:R:x]
key [A B C D]
where same_piece(a, c), same_piece(b, d),
  a.mutually_blocks(b, A, B), c.to == d.to, a.to != c.to,
  (a.flight_block || c.flight_block)
subsumes BorosPlachutta
story "Latvian Boros Plachutta: Key 1.{K}!{threat_clause}.
  Two Black Rooks capture on two squares {a.to} (1...{a}
  2.{A}#, 1...{b} 2.{B}#) and {c.to} (1...{c} 2.{C}#,
  1...{d} 2.{D}#)."
Chapter Section · 100 Themes

02. Pinning, Half-Pins & Unpinning Dynamics

Pinning and unpinning mechanics, half-pins, third-pins, Goethart unpins, Schiffmann defenses, and self-pinning variations.

# Schiffmann

mate2::types::NamedTheme::Schiffmann Alias: Schiffmann Defense

A Black defense self-pins to the Black King or interposes on a pin line such that White's threat would unpin it; White checkmates by exploiting the pin.

Thema Pattern Specification (.thm)
key K (X) [A!@a]
where a.role != 'K', !is_pinned(a.from, before(a)),
  a.pinned_to(BK), a.self_pins_for(A),
  !is_pinned(a.to, after(X))
with -single_refutation -match_threat_count
  -capture_try_piece -match_mate_count
subsumes KingsSchiffmann
story "Schiffmann defense: Key 1.{K}! (threat 2.{X}#)
  The defense 1...{a} self-pins to defeat the threat,
  exploited by the checkmate 2.{A}#"
---
def [a:K]
key K (X) [A]
where a.self_pins_for(A), (A.fires_battery || A.pin_mate),
  (X.fires_battery || X.unpins(BK) || same_piece(X, A))
with -single_refutation -match_threat_count
  -capture_try_piece -match_mate_count
subsumes KingsSchiffmann
story "King's Schiffmann defense: Key 1.{K}!
  (threat 2.{X}#). The Black King 1...{a} pins a friendly
  piece to defeat the threat, exploited by 2.{A}#."

# Half-Pin

mate2::types::NamedTheme::HalfPin

Two Black pieces stand on a line to the Black King; when either moves off the line, the other becomes pinned.

Thema Pattern Specification (.thm)
any [A B]
where a.half_pin, collinear(a.from, b.from, BK),
  a.from != b.from, (a, b).pins(BK)
with -match_mate_count -capture_try_piece
  -single_refutation
story "Half-pin: Key 1.{K}!{threat_clause} exploits the
  half-pin of the Black pieces on {a.from} and {b.from}:
  moving one leaves the other pinned (1...{a} 2.{A}#
  vs 1...{b} 2.{B}#)."
---
any [A]
where a.half_pin, a.pins(BK), A.pin_mate
with -match_mate_count -capture_try_piece
  -single_refutation
story "Half-pin: Defense 1...{a} leaves its companion
  pinned to the Black King, exploited by pin-mate 2.{A}#."

# White Half-Pin

mate2::types::NamedTheme::WhiteHalfPin

Two White pieces stand on a line to the White King; moving one leaves the other pinned.

Thema Pattern Specification (.thm)
any K
where K.white_half_pin
with -capture_try_piece -single_refutation
story "White half-pin: Move 1.{K} moves one of two White
  half-pinned pieces, leaving the other pinned while
  unleashing checkmate."
---
any [A]
where A.white_half_pin
with -match_mate_count -capture_try_piece
  -single_refutation
story "White half-pin: Mate 2.{A}# after 1...{a}
  moves one of two White half-pinned pieces, leaving
  the other pinned."

# Pin Mate

mate2::types::NamedTheme::PinMate

Checkmate where a Black defending piece is pinned to the Black King.

Thema Pattern Specification (.thm)
any [A]
where A.pin_mate
story "Pin-mate: Key 1.{K}!{threat_clause}.
  Defense 1...{a} is met by checkmate 2.{A}# exploiting
  an absolute pin against Black."
---
key (T)
where T.pin_mate
story "Pin-mate: Key 1.{K}! threatens checkmate 2.{T}#
  exploiting an absolute pin against Black."

# Gamage

mate2::types::NamedTheme::Gamage Alias: Gamage theme

Black self-blocks on a square that self-pins another Black piece or interferes with White.

Thema Pattern Specification (.thm)
key [A]
where a.unpins(A),
  (a.pins(a.to) || (collinear(a.from, A.from, WK)
    && (a.self_block || a.capture)))
story "Gamage theme: Key 1.{K}!{threat_clause}.
  Defense 1...{a} self-pins, enabling White to exploit
  the pin with checkmate 2.{A}#."
---
key [A]
where A.unpins(BK), A.slider,
  (a.closes_line() || a.self_block)
story "Gamage theme: Key 1.{K}!{threat_clause}.
  Defense 1...{a} obstructs a pinned Black piece, allowing
  the pinning {A.role_name} to deliver checkmate 2.{A}#."

# Mansfield

mate2::types::NamedTheme::Mansfield Alias: Mansfield theme

Black defense pins a White piece, but White uses a battery to mate while unpinning.

Thema Pattern Specification (.thm)
key [A]
where A.from.pinned_to(WK)
story "Mansfield: Key 1.{K}!{threat_clause}.
  Black defense 1...{a} pins a White piece, but White uses
  a battery to mate while unpinning: 2.{A}#."
---
def [a:x b:x]
key [A B]
where same_square(a, b), a.from != b.from,
  A.fires_battery, B.fires_battery, a.self_pins_for(A),
  b.self_pins_for(B)
story "Mansfield: Key 1.{K}!{threat_clause}.
  Two Black pieces capture on {a.to} and self-pin,
  answered by distinct battery mates: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Barulin

mate2::types::NamedTheme::Barulin Alias: Barulin theme

Defense self-pins and White mates by self-unpinning or battery.

Thema Pattern Specification (.thm)
key [A B]
where same_square(A, B), A.from != B.from
subsumes MatesOnSameSquare
story "Barulin: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} unpin White pieces,
  allowing checkmates 2.{A}# and 2.{B}#."

# Pelle move

mate2::types::NamedTheme::Pelle Alias: Pelle

A pinned White piece moves along its pin line without capturing the pinning Black piece.

Thema Pattern Specification (.thm)
key [A]
where A.pinned_before, A.pinned_after, A.along(WK)
story "Pelle move: Key 1.{K}!{threat_clause}.
  Pinned {A.role_name} on {A.from} moves along the pin
  line to deliver checkmate 2.{A}# after 1...{a}."
---
key (A)
where A.pinned_before, A.pinned_after, A.along(WK)
with -match_threat_count
story "Pelle move: Key 1.{K}! threatens checkmate 2.{A}#
  by the pinned {A.role_name} on {A.from} moving along
  the pin line."
---
key K
where K.pinned_before, K.pinned_after, K.along(WK)
story "Pelle move: Key 1.{K}!{threat_clause} moves the
  pinned {K.role_name} on {K.from} along the pin line."

# Self-unpinning

mate2::types::NamedTheme::SelfUnpinning

A defending piece unpins a friendly piece by moving off the pin line.

Thema Pattern Specification (.thm)
key [A]
where a.unpins(BK)
story "Self-unpinning: Key 1.{K}!{threat_clause}.
  Black defense 1...{a} unpins a friendly piece,
  met by checkmate 2.{A}#."

# Half-pin creation

mate2::types::NamedTheme::HalfPinCreation

White key creates or unmasks a half-pin arrangement of two Black pieces.

Thema Pattern Specification (.thm)
key K
where K.creates_half_pin
story "Half-pin creation: Key 1.{K}!{threat_clause}
  creates a half-pin on the line to the Black King."

# Direct unpinning

mate2::types::NamedTheme::DirectUnpinning

White or Black directly moves off the pin line to relieve a pinned piece.

Thema Pattern Specification (.thm)
key K [A]
where (a.unpins(A) && !collinear(a.to, A.from, WK))
    || K.unpins_piece(A.from)
story "Direct unpinning: Key 1.{K}!{threat_clause} unpins
  a piece to enable checkmate 2.{A}# against 1...{a}."
---
key K [A B]
where same_piece(a, b), K.unpins_piece(a.from)
with -match_mate_count
story "Direct unpinning: Key 1.{K}!{threat_clause}
  directly unpins Black's {a.role_name} on {a.from},
  whose defenses 1...{a} and 1...{b} are met by 2.{A}#
  and 2.{B}#."

# Indirect unpinning

mate2::types::NamedTheme::IndirectUnpinning

Unpinning achieved by interposing on the pin line or moving the King.

Thema Pattern Specification (.thm)
key [A]
where a.unpins(A), collinear(a.to, A.from, WK),
  !collinear(a.from, A.from, WK)
story "Indirect unpinning: Key 1.{K}!{threat_clause}.
  Defense 1...{a} interposes on a pin line, unpinning
  the White piece to deliver mate 2.{A}#."
---
any K [A]
where K.unpins(WK) || (K.unpins(BK) && (!K.slider
    || K.closes_line(BK))) || (a.role != 'K'
    && a.unpins(BK))
story "Indirect unpinning: Play features indirect
  unpinning by interposition on the pin line
  (1...{a} 2.{A}#)."

# Self-pin

mate2::types::NamedTheme::SelfPin

A defending or attacking piece moves so as to pin a friendly piece.

Thema Pattern Specification (.thm)
key K [A]
where K.pins(WK) || a.self_pins_for(A)
story "Self-pin: Key 1.{K}!{threat_clause} features
  self-pinning play (1...{a} 2.{A}#)."

# Pin

mate2::types::NamedTheme::Pin

A piece is pinned along a line of action to its King.

Thema Pattern Specification (.thm)
key K
where false
story "Pinning key: Key 1.{K}! establishes a pin against
  a Black piece."

# Unpin

mate2::types::NamedTheme::Unpin

A piece is released from a pin by moving off the line or interposing.

Thema Pattern Specification (.thm)
key [A]
where a.unpins(A)
subsumes DirectUnpinning
story "Unpinning mate: Key 1.{K}!{threat_clause} answers
  defense 1...{a} with checkmate 2.{A}# by exploiting
  an unpinned piece."

# Selfpinning

mate2::types::NamedTheme::Selfpinning

Black moves in such a way as to expose its own piece to a pin.

Thema Pattern Specification (.thm)
key [A]
where a.self_pins_for(A)
subsumes SelfPin
story "Self-pinning defense: Key 1.{K}!{threat_clause}
  induces defense 1...{a} which self-pins a Black piece,
  allowing checkmate 2.{A}#."

# Indirect selfpinning

mate2::types::NamedTheme::IndirectSelfpinning

Black King moves or another piece vacates a square, leaving a friendly piece pinned.

Thema Pattern Specification (.thm)
key K [A]
where (a.indirect_pins(BK) && a.self_pins_for(A))
    || K.indirect_pins(WK) || (K.from == a.to
    && a.pinned_to(BK) && a.self_pins_for(A))
story "Indirect self-pinning: Key 1.{K}!{threat_clause}
  induces defense 1...{a} which indirectly self-pins,
  enabling checkmate 2.{A}#."

# Third-pin

mate2::types::NamedTheme::ThirdPin

A third pin is created or exploited in the solution.

Thema Pattern Specification (.thm)
^key [A* B* C*]
where distinct(a.from, b.from, c.from), a.to < b.to,
  b.to < c.to, (a.pinned_to(BK) || a.pins(BK)),
  (b.pinned_to(BK) || b.pins(BK)),
  (c.pinned_to(BK) || c.pins(BK))
with -match_mate_count
subsumes SelfPin
story "Third-pin: Key 1.{K}!{threat_clause} exploits three
  Black units pinned across variations: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Pinning key

mate2::types::NamedTheme::PinningKey

White key directly pins a Black defending piece.

Thema Pattern Specification (.thm)
key K
where K.pins(BK)
story "Pinning key: Key 1.{K}!{threat_clause} pins
  an enemy unit to paralyze its defense."

# Nietvelt

mate2::types::NamedTheme::Nietvelt Alias: Nietvelt defense

Black defense self-pins to the King such that White threat would unpin; White mates by exploiting the pin.

Thema Pattern Specification (.thm)
key K [A!@a]
where K.threat_count > 0, a.role != 'K', a.pinned_to(BK),
  a.self_pins_for(A)
with -match_mate_count -capture_try_piece
  -single_refutation
story "Nietvelt: Defense 1...{a} self-pins, answered
  by checkmate 2.{A}# exploiting the pinned unit."

# Unpinning key

mate2::types::NamedTheme::UnpinningKey

White key unpins a Black defending piece or a White piece.

Thema Pattern Specification (.thm)
key K
where K.unpins(WK) || K.unpins(BK)
story "Unpinning key: Key 1.{K}!{threat_clause} directly
  unpins a piece."
---
key K [A B]
where same_piece(a, b), K.unpins_piece(a.from)
with -match_mate_count
story "Unpinning key: Key 1.{K}!{threat_clause} directly
  unpins Black's {a.role_name} on {a.from}."
---
key K [A]
where K.unpins_piece(a.from)
with -match_mate_count
story "Unpinning key: Key 1.{K}!{threat_clause}
  directly unpins Black's {a.role_name} on {a.from}
  (1...{a} 2.{A}#)."

# Double pin

mate2::types::NamedTheme::DoublePin

Two pieces are simultaneously pinned, or a single piece is pinned along two intersecting lines.

Thema Pattern Specification (.thm)
key K [A]
where K.double_pin || a.double_pin
story "Double pin: Key 1.{K}!{threat_clause} meets
  defense 1...{a} with checkmate 2.{A}# exploiting two
  simultaneously pinned units."

# Self-pinning key

mate2::types::NamedTheme::SelfPinningKey

White key pins one of White's own pieces to the White King.

Thema Pattern Specification (.thm)
key K
where K.pins(WK)
story "Self-pinning key: Key 1.{K}!{threat_clause}
  self-pins a White piece to craft an airtight
  mating net."

# Pin-unpin

mate2::types::NamedTheme::PinUnpin

A move simultaneously pins one piece while unpinning another.

Thema Pattern Specification (.thm)
set [A B]
key [C D]
where (a.unpins(WK) || a.pins(WK)),
  (b.unpins(WK) || b.pins(WK))
subsumes FreeChange
story "Pin-unpin: Changed play with pinning and
  unpinning of pieces relative to the White King:
  1...{a} set 2.{A}# / key 2.{C}#, 1...{b} set 2.{B}# /
  key 2.{D}# (Key 1.{K}!{threat_clause})."

# Hage

mate2::types::NamedTheme::Hage Alias: Hage theme

Key move creates a battery while simultaneously pinning a Black piece, or delivers a double pin-mate.

Thema Pattern Specification (.thm)
key K [A]
where K.pins(BK), A.pins(BK)
subsumes PinningKey
story "Hage: Key 1.{K}!{threat_clause} creates a battery
  while pinning a Black piece; 1...{a} 2.{A}#."
---
key [A*]
where A.double_pin
with -match_mate_count
story "Hage: Key 1.{K}!{threat_clause} leads to double
  pin-mate: 1...{a} 2.{A}#."

# Indirect pinning

mate2::types::NamedTheme::IndirectPinning

A pin established not directly against the King, but revealed after another piece moves.

Thema Pattern Specification (.thm)
^key K [A* B*]
where (K.indirect_pins(BK) && (A.pin_mate || B.pin_mate))
    || (a.indirect_pins(BK) && a.self_pins_for(A))
    || a.indirect_pins(WK)
with -match_mate_count
subsumes IndirectSelfpinning
story "Indirect pinning: Key 1.{K}!{threat_clause}
  unmasks a pin across defenses: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Anti-Goethart

mate2::types::NamedTheme::AntiGoethart

Inversion of Goethart: Black defense opens a line to refute a Goethart unpinning threat, or battery play interacts with pin/unpin lines.

Thema Pattern Specification (.thm)
def [a:!K b:!K]
key K [A B]
where (A, B).fires_battery, same_piece(A, B),
  (a.unpins(A) || b.unpins(B) || a.unpins(BK)
    || b.unpins(BK) || A.unpins(BK) || B.unpins(BK)
    || a.from.pinned_to(BK) || b.from.pinned_to(BK)
    || A.closes_line(BK) || B.closes_line(BK)
    || a.closes_line() || b.closes_line()
    || a.closes_line(WK) || b.closes_line(WK)
    || (K.threat_count > 0 && (A.closes_line(WK)
    || B.closes_line(WK))))
story "Anti-Goethart: Key 1.{K}!{threat_clause} fires
  the {A.role_name} battery across pin/interposition
  lines: 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:!K b:!K]
key (X) [A B]
where X.unpins(BK),
  (a.opens_line() || b.opens_line() || a.unpins(BK)
    || b.unpins(BK))
with -match_threat_count -match_mate_count
story "Anti-Goethart: Key 1.{K}! threatens
  Goethart mate 2.{X}# (unpinning a Black piece);
  1...{a} and 1...{b} open lines against the threat,
  allowing 2.{A}# and 2.{B}#."

# Somov (B2)

mate2::types::NamedTheme::SomovB2

Somov theme form B2: Black correction defense allows mate through unpinning of White piece.

Thema Pattern Specification (.thm)
key (T) [T B]
where same_piece(a, b), a.to != b.to, b.unpins(B)
subsumes ThreatKey, Unpin
story "Somov B2: Key 1.{K}! threatens 2.{T}# following
  general defense 1...{a}; corrected defense 1...{b}
  unpins a White piece to allow checkmate 2.{B}#."
---
key [A A B]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  c.unpins(B)
subsumes Unpin
story "Somov B2: Key 1.{K}!{threat_clause} meets
  general defenses 1...{a} and 1...{b} with 2.{A}#;
  corrected defense 1...{c} unpins a White piece to allow
  checkmate 2.{B}#."

# Mansfield battery

mate2::types::NamedTheme::MansfieldBattery

A White battery fires distinct checkmates against two Black pieces defending on the same square (Mansfield couplet), across two batteries, or with pin/self-pin play.

Thema Pattern Specification (.thm)
key [A B]
where (A, B).fires_battery,
  ((!same_piece(a, b) && (same_square(a, b)
    || A.battery_rear != B.battery_rear
    || A.from != B.from || a.self_pins || b.self_pins
    || a.pins(BK) || b.pins(BK))) || ((a, b).role == 'K'
    && a != b && same_piece(A, B)))
with -match_threat_count -match_mate_count
subsumes BatteryPlay
story "Mansfield battery: Key 1.{K}!{threat_clause} fires
  battery checkmates 2.{A}# (against 1...{a}) and 2.{B}#
  (against 1...{b})."

# Rupp theme

mate2::types::NamedTheme::Rupp

Pin-status alteration of both White and Black pieces.

Thema Pattern Specification (.thm)
key [A]
where a.closes_line(WK), a.unpins(A),
  !collinear(a.from, A.from, WK), a.pins(BK)
story "Rupp theme: Key 1.{K}!{threat_clause} answers
  defense 1...{a} with checkmate 2.{A}# by exploiting
  the unpinned White piece."
---
key K [A]
where (K.pins(BK) || K.unpins(BK)),
  (K.pins(WK) || K.unpins(WK))
story "Rupp theme: Key 1.{K}!{threat_clause}
  simultaneously alters White and Black pin lines,
  leading to 2.{A}# against 1...{a}."

# Ajec theme

mate2::types::NamedTheme::Ajec

Two Black pieces (including the Black Queen) stand in a half-pin at distance >= 3 from the Black King; when either moves off the line, the other becomes pinned.

Thema Pattern Specification (.thm)
key [A B]
where a.half_pin, (a.role == 'Q' || b.role == 'Q'),
  collinear(a.from, b.from, BK), a.from != b.from,
  (distance(a.from, BK) >= 3
    || distance(b.from, BK) >= 3),
  (a, b).pins(BK)
subsumes HalfPin, IndirectSelfpinning, SelfPin
story "Ajec theme: Key 1.{K}!{threat_clause} provokes
  self-pinning defenses that allow checkmates:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Somov (B1)

mate2::types::NamedTheme::SomovB1

Black correction defense whose secondary flaw is direct unpinning of a White piece.

Thema Pattern Specification (.thm)
def [r a]
key (T) [T A]
where a.corrects(r), a.parries(T), a.unpins(A)
subsumes ThreatKey
story "Somov (B1): After Key 1.{K}! (threat 2.{T}#),
  random move 1...{r} allows 2.{T}#, while Black
  correction 1...{a} directly unpins a White piece
  for 2.{A}#."

# Somov (D)

mate2::types::NamedTheme::SomovD

Black correction defense whose secondary flaw is pinning a Black piece or self-pinning.

Thema Pattern Specification (.thm)
def [r a]
key (T) [T A]
where a.corrects(r), a.parries(T), a.self_pins_for(A)
subsumes CrossCheck, ProvokedCheck, SelfPin, ThreatKey
story "Somov (D): After Key 1.{K}! (threat 2.{T}#), random
  move 1...{r} allows 2.{T}#, while Black correction
  1...{a} creates a Black pin exploited by 2.{A}#."

# Correction with unpin

mate2::types::NamedTheme::CorrectionUnpin

White correction between a try and the key where the correcting key move simultaneously unpins a piece.

Thema Pattern Specification (.thm)
try Tr (X) [! _]
key K (Y) [A B]
where same_piece(Tr, K), (K.unpins(WK) || K.unpins(BK))
subsumes ChangedMate, DirectUnpinning, ThreatKey,
  UnpinningKey
story "Correction with unpin: White {K.role_name} try
  1.{Tr}? is corrected by Key 1.{K}! (threat 2.{Y}#),
  which unpins a piece for 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Anticipatory pinning

mate2::types::NamedTheme::AnticipatoryPinning

White key sets up a pin or indirect pin in advance, exploited by pin-mates when Black defends.

Thema Pattern Specification (.thm)
key K [A B]
where K.indirect_pins() && (A.pin_mate || B.pin_mate)
subsumes PinMate
story "Anticipatory pinning: Key 1.{K}!{threat_clause}
  prepares an anticipatory pin line exploited
  by 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
key K:Q|R|B [A]
where !collinear(K.from, a.to, BK),
  collinear(K.to, a.to, BK), a.self_pins_for(A),
  A.pin_mate
subsumes PinMate
story "Anticipatory pinning: Key 1.{K}!{threat_clause}
  moves onto the pin line through {BK}, so 1...{a}
  self-pins and allows pin-mate 2.{A}#."

# Anticipatory half-pin

mate2::types::NamedTheme::AnticipatoryHalfPin

White key creates a half-pin formation, and both Black half-pinned pieces move to allow pin-mates.

Thema Pattern Specification (.thm)
key K [A B]
where K.creates_half_pin, (a, b).pins(BK), (A, B).pin_mate
subsumes DoublePinMate, HalfPinCreation,
  IndirectSelfpinning, SelfPin
story "Anticipatory half-pin: Key 1.{K}!{threat_clause}
  establishes a half-pin line, yielding pin-mates after
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Masked half-pin

mate2::types::NamedTheme::MaskedHalfPin

The White key piece moves off a line containing two Black pieces and the Black King, unmasking a half-pin.

Thema Pattern Specification (.thm)
key K [A B]
where K.from != A.from, collinear(K.from, a.from, BK),
  collinear(K.from, b.from, BK),
  !collinear(K.to, a.from, BK), a.from != b.from,
  (a, b).pins(BK)
story "Masked half-pin: Key 1.{K}!{threat_clause} vacates
  {K.from} to unmask a half-pin on {a.from} and {b.from}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Double direct unpinning

mate2::types::NamedTheme::DoubleDirectUnpinning

Two distinct Black defenses directly unpin White piece(s) by moving the pinning piece or capturing.

Thema Pattern Specification (.thm)
key [A B]
where a.unpins_piece(A.from), b.unpins_piece(B.from),
  !between(a.to, WK, A.from), !between(b.to, WK, B.from)
subsumes Unpin
story "Double direct unpinning: After
  Key 1.{K}!{threat_clause}, Black defenses 1...{a} and
  1...{b} directly unpin White for 2.{A}# and 2.{B}#."

# Double indirect unpinning

mate2::types::NamedTheme::DoubleIndirectUnpinning

Two distinct Black defenses interpose along a pin-line to the White King, indirectly unpinning White for two different checkmates.

Thema Pattern Specification (.thm)
key [A B]
where a.unpins_piece(A.from), b.unpins_piece(B.from),
  between(a.to, WK, A.from), between(b.to, WK, B.from)
subsumes Unpin
story "Double indirect unpinning: After
  Key 1.{K}!{threat_clause}, Black defenses 1...{a} and
  1...{b} interpose to unpin White for 2.{A}# and 2.{B}#."

# Cross-pinning

mate2::types::NamedTheme::CrossPinning

A Black defense unpins a White piece while simultaneously pinning a Black piece, allowing a pin-mate by the unpinned White piece.

Thema Pattern Specification (.thm)
key [A]
where a.unpins_piece(A.from), a.pins(BK), A.pin_mate
subsumes PinMate, Unpin
story "Cross-pinning: After Key 1.{K}!{threat_clause},
  defense 1...{a} unpins White's {A.role_name} on {A.from}
  while pinning a Black unit, allowing pin-mate 2.{A}#."

# Reciprocal unpinning

mate2::types::NamedTheme::ReciprocalUnpinning

Two different White pieces are unpinned in two variations (defense a unpins piece A which mates; defense b unpins piece B which mates).

Thema Pattern Specification (.thm)
key [A B]
where diff_piece(A, B), a.unpins_piece(A.from),
  b.unpins_piece(B.from)
subsumes Unpin
story "Reciprocal unpinning: After
  Key 1.{K}!{threat_clause}, 1...{a} unpins {A.from} for
  2.{A}#, while 1...{b} unpins {B.from} for 2.{B}#."

# Royal half-pin

mate2::types::NamedTheme::RoyalHalfPin

White half-pin formation in which the White King participates in delivering one of the mates.

Thema Pattern Specification (.thm)
key [A B]
where K.white_half_pin, (A.role == 'K' || B.role == 'K')
story "Royal half-pin: Key 1.{K}!{threat_clause}
  features a White half-pin with Royal participation:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Unpinning cross-check

mate2::types::NamedTheme::UnpinCrossCheck

A Black checking defense simultaneously unpins a White piece, which delivers a non-capturing cross-check mate.

Thema Pattern Specification (.thm)
def [a:+]
key [A!@a]
where a.unpins_piece(A.from)
story "Unpinning cross-check:
  After Key 1.{K}!{threat_clause}, Black check
  1...{a} unpins White's {A.role_name} on {A.from} for
  cross-check 2.{A}#."

# Double pin-mate

mate2::types::NamedTheme::DoublePinMate

At least two distinct defensive variations end in pin-mates.

Thema Pattern Specification (.thm)
key [A B]
where (A, B).pin_mate, a.self_pins_for(A),
  b.self_pins_for(B), a.to != b.to
subsumes PinMate
story "Double pin-mate: Key 1.{K}!{threat_clause}
  produces two distinct pin-mates: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Triple pin-mate

mate2::types::NamedTheme::TriplePinMate

At least three distinct defensive variations end in pin-mates.

Thema Pattern Specification (.thm)
key [A B C]
where (A, B, C).pin_mate, a.self_pins_for(A),
  b.self_pins_for(B), c.self_pins_for(C),
  distinct(a.to, b.to, c.to)
subsumes DoublePinMate
story "Triple pin-mate: Key 1.{K}!{threat_clause}
  produces three distinct pin-mates: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# Theme C

mate2::types::NamedTheme::ThemeC Alias: Thema C

Two Black sliders move to two shared arrival squares, indirectly pinning one of two White pieces so the other delivers mate on the same square.

Thema Pattern Specification (.thm)
key [A B]
where a.slider, b.slider, a.from != b.from,
  A.from != B.from, A.to == B.to,
  (a.pins(WK) || b.pins(WK) || a.closes_line()
    || b.closes_line())
subsumes Barulin
story "Theme C: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} separate White's pieces
  on the same mating square {A.to}: 2.{A}# vs 2.{B}#."

# Theme D

mate2::types::NamedTheme::ThemeD Alias: Thema D

Two moves of the same Black slider pin one of two White pieces in turn, forcing the other unpinned White piece to deliver mate on the same square.

Thema Pattern Specification (.thm)
key [A B]
where same_piece(a, b), a.slider, a.to != b.to,
  A.from != B.from, A.to == B.to,
  (a.pins(WK) || b.pins(WK))
subsumes Barulin
story "Theme D: Key 1.{K}!{threat_clause}. Moves 1...{a}
  and 1...{b} by the same Black {a.role} force distinct
  White pieces to mate on {A.to}: 2.{A}# vs 2.{B}#."

# Roels

mate2::types::NamedTheme::Roels Alias: Roels theme

Black defenses open a White line or battery while unpinning/closing a Black guard, enabling the same White slider to deliver distinct mates along its line.

Thema Pattern Specification (.thm)
key [A B C]
where same_piece(A, B, C), A.slider,
  distinct(A.to, B.to, C.to), a.unpins(A), b.unpins(B),
  (a.opens_line() || a.closes_line() || a.ep)
story "Roels: Key 1.{K}!{threat_clause}. Defenses 1...{a},
  1...{b}, and 1...{c} allow the same White {A.role}
  to mate on {A.to}, {B.to}, and {C.to}."

# Weenink

mate2::types::NamedTheme::Weenink Alias: Weenink theme

Two Black sliders move to the same square, where one closes a White line (Java) while unpinning or unguarding to separate two White mates.

Thema Pattern Specification (.thm)
key [A B]
where same_square(a, b), a.from != b.from, a.slider,
  b.slider,
  (a.unpins(WK) || b.unpins(WK) || a.closes_line(WK)
    || b.closes_line(WK))
subsumes DefencesOnSameSquare, Laitinen
story "Weenink: Key 1.{K}!{threat_clause}.
  Slider defenses 1...{a} and 1...{b} on {a.to} separate
  2.{A}# and 2.{B}#."

# Cristoffanini

mate2::types::NamedTheme::Cristoffanini Alias: Cristoffanini theme

A Black defense leaves a line to indirectly pin another Black piece or interposes to self-pin while opening/closing a line, allowing mate exploiting the pin.

Thema Pattern Specification (.thm)
key [A B]
where same_piece(a, b), a.to != b.to, A != B,
  a.self_pins_for(A), b.self_pins_for(B), a.closes_line(),
  b.closes_line()
story "Cristoffanini: Key 1.{K}!{threat_clause}.
  Moves 1...{a} and 1...{b} self-pin or unmask an indirect
  pin on a Black piece while closing a line, allowing
  2.{A}# and 2.{B}#."
---
key [A B]
where a.from != b.from, A != B, a.self_pins_for(A),
  b.self_pins_for(B), same_square(a, b),
  (a.closes_line() || b.closes_line())
subsumes SelfPin
story "Cristoffanini: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} self-pin by interposing
  on {a.to}, allowing 2.{A}# and 2.{B}#."

# Costachel

mate2::types::NamedTheme::Costachel Alias: Costachel theme

Three Black pieces (including the Black King or two sliders) move to or capture on the same square, combining Cristoffanini indirect pinning with self-block.

Thema Pattern Specification (.thm)
key [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from),
  (a.indirect_pins(BK) || b.indirect_pins(BK)
    || c.indirect_pins(BK)),
  (a.self_block || b.self_block || c.self_block)
subsumes ArrivalCorrection
story "Costachel: Key 1.{K}!{threat_clause}.
  Three Black pieces converge on {a.to} (1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#) with indirect pinning
  and self-block."

# Möller theme

mate2::types::NamedTheme::Moeller Alias: Moeller theme

Moves of the Black Queen indirectly unpin a White piece or indirectly pin a Black piece while separating dual mates.

Thema Pattern Specification (.thm)
def [a:Q b:Q]
key [A B]
where same_piece(a, b), a.to != b.to,
  (a.indirect_pins(BK) || b.indirect_pins(BK)
    || a.unpins(WK) || b.unpins(WK))
story "Möller theme: Key 1.{K}!{threat_clause}.
  Black Queen moves 1...{a} and 1...{b} alter pin lines
  to separate 2.{A}# and 2.{B}#."

# Taale theme

mate2::types::NamedTheme::Taale

The key creates a masked battery and half-pin while provoking a Black check that is answered by the key piece firing the battery.

Thema Pattern Specification (.thm)
def [a:+ b]
key K [A B]
where A.from == K.to, A.fires_battery,
  (a.unpins(WK) || b.self_pins || B.fires_battery)
subsumes BatteryMate, BatteryPlay, CrossCheck,
  ProvokedCheck
story "Taale theme: Key 1.{K}!{threat_clause} creates
  a masked battery and provokes 1...{a}, answered
  by battery mate 2.{A}# (with 1...{b} 2.{B}#)."

# Schiffmann 2

mate2::types::NamedTheme::Schiffmann2 Alias: Schiffmann II

A Black piece captures a White piece without giving check, self-pinning on that square so White can abandon guard and mate by exploiting the self-pin.

Thema Pattern Specification (.thm)
def [a:x:!+]
key [A]
where a.role != 'K', a.pinned_to(BK), a.self_pins_for(A),
  A.to != a.to, A.pin_mate
subsumes PinMate, SelfPin
story "Schiffmann 2: Key 1.{K}!{threat_clause}.
  Non-checking capture 1...{a} self-pins on {a.to},
  enabling pin-mate 2.{A}#."

# King's Schiffmann

mate2::types::NamedTheme::KingsSchiffmann Alias: King Schiffmann

The Black King moves to a flight square (or captures), exposing a Black piece to a pin so that White's threat would unpin it, and White delivers a battery/pin mate.

Thema Pattern Specification (.thm)
def [a:K]
key K (X) [A]
where a.self_pins_for(A), (A.fires_battery || A.pin_mate),
  (X.fires_battery || X.unpins(BK) || same_piece(X, A))
subsumes KingFlight
story "King's Schiffmann: Key 1.{K}!{threat_clause}. Black
  King flight 1...{a} enables battery/pin-mate 2.{A}#."

# White Schiffmann

mate2::types::NamedTheme::WhiteSchiffmann

White correction tries by a piece that captures on a square where Black's recapture pins or unpins, resolved by a different piece capturing on that square in the key.

Thema Pattern Specification (.thm)
try Tr1 [! _]
try Tr2:x [A !]
key K:x [B C]
where same_piece(Tr1, Tr2), Tr2.to == K.to,
  Tr1.from != K.from
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes CaptureKey, ChangedPlay, Sushkov
story "White Schiffmann: Tries 1.{Tr1}? and 1.{Tr2}?
  on {K.to} are resolved by capture Key 1.{K}!,
  yielding 2.{B}# and 2.{C}#."

# Schór theme

mate2::types::NamedTheme::Schor Alias: Schor theme

White key captures a Black piece to directly unpin another Black piece while simultaneously creating a half-pin or indirect pin.

Thema Pattern Specification (.thm)
key K:x [A B]
where K.unpins(BK),
  (a.self_pins || b.self_pins || A.pin_mate || B.pin_mate)
subsumes CaptureKey, DirectUnpinning, UnpinningKey
story "Schór theme: Capture Key 1.{K}!{threat_clause}
  unpins a Black piece while setting up pin-play after
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Ianovcic

mate2::types::NamedTheme::Ianovcic Alias: Ianovcic theme

Key move alters the pin status of both White and Black pieces (Rupp) while creating a half-pin where Black defenses indirectly self-pin.

Thema Pattern Specification (.thm)
key K [A B]
where (K.pins(BK) || K.unpins(WK) || K.unpins(BK)),
  (a.self_pins_for(A) || b.self_pins_for(B))
subsumes SelfPin
story "Ianovcic: Key 1.{K}!{threat_clause} changes pin
  lines so 1...{a} and 1...{b} self-pin, allowing 2.{A}#
  and 2.{B}#."

# Castellari

mate2::types::NamedTheme::Castellari Alias: Castellari theme

The key move self-pins a White piece, and Black's defense unpins that White piece to allow checkmate.

Thema Pattern Specification (.thm)
key K [A]
where K.pins(WK), a.unpins(WK), A.from != K.to
story "Castellari: Self-pinning Key 1.{K}!{threat_clause}
  is followed by 1...{a} unpinning for 2.{A}#."

# Castellari-Mari theme

mate2::types::NamedTheme::CastellariMari

A White King key move unpins a Black piece (or self-unpins), whose checking defense is answered by a White cross-check mate.

Thema Pattern Specification (.thm)
def [a:+]
key K:K [A]
where K.unpins(BK) || K.unpins(WK) || a.self_pins
    || a.unpins(WK)
subsumes ProvokedCheck
story "Castellari-Mari theme: White King
  Key 1.{K}!{threat_clause} alters pin lines and answers
  check 1...{a} with 2.{A}#."

# Castellari-Schor theme

mate2::types::NamedTheme::CastellariSchor

The key move simultaneously unpins a Black piece and self-pins/unpins a White piece, producing distinct pin/unpin variations.

Thema Pattern Specification (.thm)
key K [A B]
where (K.unpins(BK) || K.pins(BK)),
  (K.pins(WK) || K.unpins(WK))
story "Castellari-Schor theme: Key 1.{K}!{threat_clause}
  simultaneously changes White and Black pin status,
  leading to 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Dobbs

mate2::types::NamedTheme::Dobbs Alias: Dobbs theme

Two Black checking captures indirectly unpin a White piece (or self-pin) to allow two distinct cross-check recaptures.

Thema Pattern Specification (.thm)
def [a:x:+ b:x:+]
key [A:x@a B:x@b]
where a.from != b.from,
  (a.unpins(WK) || b.unpins(WK) || a.self_pins
    || b.self_pins)
subsumes ProvokedCheck
story "Dobbs: Key 1.{K}!{threat_clause}.
  Checking captures 1...{a} and 1...{b} unpin/self-pin,
  answered by recaptures 2.{A}# and 2.{B}#."

# Tuxen theme

mate2::types::NamedTheme::Tuxen Alias: Tuxen

In set play a Black checking capture is answered by recapture; the key moves the White piece so that the same Black checking capture self-pins and is answered by a non-capturing cross-check pin-mate.

Thema Pattern Specification (.thm)
def [a:x:+]
vir [A:x@a]
key [B:!x]
where B.pin_mate || a.self_pins
subsumes ChangedCrossCheck, CrossCheck, ProvokedCheck
story "Tuxen theme: Set recapture 1...{a} 2.{A}# changes
  after Key 1.{K}! to non-capturing cross-check pin-mate
  1...{a} 2.{B}#."

# Anti-Hume

mate2::types::NamedTheme::AntiHume

Two half-pinned Black pieces move to the same square, each leaving the other pinned so two different White pieces can capture on that square without duals.

Thema Pattern Specification (.thm)
key [A:x@a B:x@b]
where same_square(a, b), a.from != b.from,
  A.from != B.from,
  (a.self_pins_for(A) || b.self_pins_for(B)),
  (A.pin_mate || B.pin_mate)
subsumes Barulin, Hume, IndirectSelfpinning
story "Anti-Hume: Key 1.{K}!{threat_clause}.
  Half-pin defenses 1...{a} and 1...{b} on {a.to} allow
  distinct White captures 2.{A}# and 2.{B}#."

# Anti-Gamage

mate2::types::NamedTheme::AntiGamage

Moves of a Black slider along or off a pin line combine Gamage unpinning with Black correction and self-block.

Thema Pattern Specification (.thm)
def [a:B|R|Q b:B|R|Q c:B|R|Q]
key [A B C]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  (a.unpins(WK) || b.unpins(WK) || c.unpins(WK)),
  (a.self_block || b.self_block || c.self_block)
story "Anti-Gamage: Key 1.{K}!{threat_clause}.
  Slider moves 1...{a} (2.{A}#), 1...{b} (2.{B}#),
  and 1...{c} (2.{C}#) combine unpinning and self-block."

# Anti-Rupp

mate2::types::NamedTheme::AntiRupp

The key move simultaneously unpins both a White piece and a Black piece, the inverse of the Rupp theme.

Thema Pattern Specification (.thm)
key K [A B]
where K.unpins(WK), K.unpins(BK)
subsumes CastellariSchor, DirectUnpinning,
  IndirectUnpinning, Rupp, UnpinningKey
story "Anti-Rupp: Key 1.{K}!{threat_clause} simultaneously
  unpins a White and a Black piece to allow 1...{a} 2.{A}#
  and 1...{b} 2.{B}#."

# Anti-Hassberg

mate2::types::NamedTheme::AntiHassberg

The key move self-pins a White piece, and moves of a Black piece unpin that White piece (or allow pin/unpin variations).

Thema Pattern Specification (.thm)
def [a:N b:N]
key K [A B]
where K.pins(WK), same_piece(a, b), a.to != b.to,
  (a.unpins(WK) || b.unpins(WK))
story "Anti-Hassberg: Self-pinning
  Key 1.{K}!{threat_clause} induces Black Knight unpinning
  defenses 1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Hassberg theme

mate2::types::NamedTheme::Hassberg Alias: Hassberg

Key K unpins a Black piece, whose capture defense a allows the key piece to deliver switchback mate A.

Thema Pattern Specification (.thm)
def [a:x]
key K [A]
where K.unpins(BK), A.switchback(K)
with -match_threat_count -match_mate_count
subsumes Switchback, Unpinning
story "Hassberg theme: Key 1.{K}!{threat_clause} unpins
  a Black piece, whose capture 1...{a} allows the key
  piece to switchback with 2.{A}#."

# Mikulcak theme

mate2::types::NamedTheme::Mikulcak Alias: Mikulcak

White correction tries by an unpinning piece change threats (threat correction) and transfer variation mates into the key.

Thema Pattern Specification (.thm)
try Tr1 (X) [A !]
try Tr2 (Y) [B _]
key K (Z) [_ A]
where same_piece(Tr1, Tr2, K)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, ThreatKey
story "Mikulcak theme: White correction tries 1.{Tr1}?
  (threat 2.{X}#; 1...{a} 2.{A}#) and 1.{Tr2}?
  (threat 2.{Y}#) transfer 2.{A}# into Key 1.{K}!
  (threat 2.{Z}#; 1...{b} 2.{A}#)."

# Mousetrap

mate2::types::NamedTheme::Mousetrap Alias: Mousetrap theme

A flight-giving or unpinning key by a front battery piece allows a Black slider to move along a line, whereupon the key piece switches back (or captures) to shut the trap with a battery mate.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
key K [A B]
where same_piece(a, b), A.from == K.to, B.from == K.to,
  (A.switchback(K) || B.switchback(K)),
  (A.fires_battery || B.fires_battery)
subsumes SwitchbackBatteryMate
story "Mousetrap: Key 1.{K}!{threat_clause} lures Black's
  {a.role} (1...{a}, 1...{b}) and springs the battery trap
  with 2.{A}# and 2.{B}#."

# Klasinc theme

mate2::types::NamedTheme::Klasinc Alias: Klasinc

An unpinning, flight-giving key exposes the White Queen to capture by a Black Bishop/slider, answered by the key piece switching back or capturing on the line (Mousetrap + passive Queen sacrifice).

Thema Pattern Specification (.thm)
def [a:x b]
key K [A~K B:x@b]
where same_piece(a, b), B.from == K.to,
  (A.fires_battery || B.fires_battery)
subsumes BatteryMate, BatteryPlay, Switchback
story "Klasinc theme: Key 1.{K}!{threat_clause} exposes
  a White piece to 1...{a} (answered by switchback 2.{A}#)
  and answers 1...{b} with 2.{B}#."

# Lahti theme

mate2::types::NamedTheme::Lahti Alias: Lahti

An unpinning key by a White Rook/slider along a line creates a masked battery, and two moves of the unpinned Black Queen/slider are answered by the key piece stepping along the line.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
key K:R|B|Q [A B]
where K.unpins(BK), same_piece(a, b), a.to != b.to,
  A.from == K.to, B.from == K.to, A.to != B.to
subsumes DirectUnpinning, UnpinningKey
story "Lahti theme: Unpinning slider
  Key 1.{K}!{threat_clause} answers moves of the unpinned
  Black {a.role} (1...{a}, 1...{b}) with 2.{A}#
  and 2.{B}#."

# Four-Pin-Way theme

mate2::types::NamedTheme::FourPinWay

Two Black pieces on two half-pin lines make four moves that self-pin and unpin, producing four distinct pin-mates.

Thema Pattern Specification (.thm)
key [A B C D]
where same_piece(a, b), same_piece(c, d),
  a.from != c.from,
  (a.self_pins_for(A) || b.self_pins_for(B)),
  (c.self_pins_for(C) || d.self_pins_for(D))
subsumes SelfPin
story "Four-Pin-Way theme: Key 1.{K}!{threat_clause}.
  Two half-pinned Black pieces (1...{a}/1...{b} and
  1...{c}/1...{d}) produce four pin-play variations:
  2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."

# Servais theme

mate2::types::NamedTheme::Servais Alias: Servais

A White Queen/slider key creates a half-pin by moving along a line, and defenses by the two half-pinned Black pieces on adjacent squares allow mates by the key piece and another piece.

Thema Pattern Specification (.thm)
key K:Q|R|B [A B]
where a.from != b.from, a.self_pins_for(A),
  b.self_pins_for(B), A.from == K.to, B.from != K.to
subsumes SelfPin
story "Servais theme: Slider Key 1.{K}!{threat_clause}
  creates a half-pin; defenses 1...{a} and 1...{b} allow
  2.{A}# (by the key piece) and 2.{B}#."

# Loyd half-pin

mate2::types::NamedTheme::LoydHalfPin

A waiting ambush key by a White slider sets up a masked half-pin of two Black Knights on the same line.

Thema Pattern Specification (.thm)
def [a:N b:N]
key K:Q|R|B () [A B]
where a.from != b.from,
  (a.self_pins_for(A) || b.self_pins_for(B))
subsumes SelfPin
story "Loyd half-pin: Waiting ambush Key 1.{K}! sets up
  a half-pin of two Black Knights (1...{a} 2.{A}# and
  1...{b} 2.{B}#)."

# Arguelles

mate2::types::NamedTheme::Arguelles Alias: Arguelles theme

A Black Knight in a half-pin executes random and correction moves that self-pin the companion piece while opening/closing lines, forcing three distinct White mates.

Thema Pattern Specification (.thm)
def [a:N b:N c:N]
key [A B C]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  (a.self_pins_for(A) || b.self_pins_for(B)
    || c.self_pins_for(C))
subsumes SelfPin
story "Arguelles: Key 1.{K}!{threat_clause}. A half-pinned
  Black Knight executes correction moves 1...{a} (2.{A}#),
  1...{b} (2.{B}#), and 1...{c} (2.{C}#)."

# Dawson

mate2::types::NamedTheme::Dawson Alias: Dawson theme

A square-clearing key vacates a square for a White mate while two half-pinned Black sliders self-interfere and self-pin.

Thema Pattern Specification (.thm)
key K [A B C]
where A.to == K.from, b.slider, c.slider,
  b.from != c.from, (b.self_pins || c.self_pins)
subsumes SelfPin
story "Dawson: Key 1.{K}!{threat_clause} clears {K.from}
  for 1...{a} 2.{A}# while half-pinned sliders 1...{b} and
  1...{c} allow 2.{B}# and 2.{C}#."

# Wigwag

mate2::types::NamedTheme::Wigwag Alias: Wigwag theme

A Black Bishop and a Black Knight in a half-pin both move to the same square, each self-blocking and leaving the other pinned to allow two distinct White mates.

Thema Pattern Specification (.thm)
def [a:B b:N]
key [A B]
where same_square(a, b), a.self_block,
  (a.self_pins_for(A) || b.self_pins_for(B))
subsumes DefencesOnSameSquare, Laitinen, SelfBlock,
  SelfPin
story "Wigwag: Key 1.{K}!{threat_clause}. Half-pinned
  Bishop 1...{a} and Knight 1...{b} self-block on {a.to},
  allowing 2.{A}# and 2.{B}#."

# Martin theme

mate2::types::NamedTheme::Martin Alias: Martin

One-step and two-step advances of a Black pawn close two different Black lines while unpinning or self-pinning, forcing two distinct White Knight/battery mates.

Thema Pattern Specification (.thm)
def [a:P b:P]
key [A B]
where same_piece(a, b), a.one_step, b.two_step,
  (a.closes_line() || b.closes_line()),
  (a.self_pins || b.self_pins || a.unpins(WK)
    || b.unpins(WK) || A.pin_mate || B.pin_mate)
subsumes LineClosure, SelfInterference
story "Martin theme: Key 1.{K}!{threat_clause}.
  Pawn one-step 1...{a} (2.{A}#) and two-step 1...{b}
  (2.{B}#) close lines and alter pin lines."

# Anti-Somov A2

mate2::types::NamedTheme::AntiSomovA2

Two Black Knights move to the same square, each indirectly unpinning a White piece while closing a Black line to separate two White mates.

Thema Pattern Specification (.thm)
def [a:N b:N]
key [A B]
where same_square(a, b), a.from != b.from, a.unpins(WK),
  b.unpins(WK), a.closes_line(), b.closes_line()
subsumes DefencesOnSameSquare, Laitinen
story "Anti-Somov A2: Key 1.{K}!{threat_clause}.
  Two Black Knights moving to {a.to} (1...{a} and 1...{b})
  unpin and close lines to force 2.{A}# and 2.{B}#."

# Hagemann theme

mate2::types::NamedTheme::Hagemann Alias: Hagemann

A White key creates a half-battery or half-pin configuration where two Black defenses self-pin on two lines, allowing double pin-mates.

Thema Pattern Specification (.thm)
key K [A B]
where a.from != b.from, a.self_pins_for(A),
  b.self_pins_for(B), A.pin_mate, B.pin_mate
subsumes DoublePinMate, SelfPin
story "Hagemann theme: Key 1.{K}!{threat_clause}
  induces self-pinning defenses 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Monitor theme

mate2::types::NamedTheme::Monitor Alias: Pin-unpin Restoration

The key pins a Black piece, and two Black slider defenses on the same square restore or transfer the pin while allowing paired mates.

Thema Pattern Specification (.thm)
key K [A B]
where K.pins(BK), same_square(a, b), a.from != b.from,
  a.slider, b.slider
subsumes DefencesOnSameSquare, Laitinen, PinningKey
story "Monitor theme: Pinning Key 1.{K}!{threat_clause}
  induces slider defenses 1...{a} and 1...{b} on {a.to},
  answered by 2.{A}# and 2.{B}#."

# Hirlap theme

mate2::types::NamedTheme::Hirlap Alias: Hirlap

A sacrificial key creates a half-pin, and moves of the half-pinned Black sliders transfer the set-play mates to new defenses.

Thema Pattern Specification (.thm)
vir [A B _ _]
key K [_ _ A B]
where K.sacrifice, c.slider, d.slider
subsumes ActiveSacrifice
story "Hirlap theme: Set mates 2.{A}# and 2.{B}# are
  transferred after sacrificial Key 1.{K}! to half-pin
  defenses 1...{c} 2.{A}# and 1...{d} 2.{B}#."

# Larceu theme

mate2::types::NamedTheme::Larceu Alias: Larceu

A White King key move changes the pin status (Rupp) and provokes a Black check that indirectly self-pins and is answered by an Umnov cross-check.

Thema Pattern Specification (.thm)
def [a:+ b]
key K:K [A@a.from B]
where (a.self_pins || b.self_pins || K.pins(BK)
    || K.unpins(WK))
subsumes PseudoUmnov1
story "Larceu theme: White King Key 1.{K}!{threat_clause}
  provokes check 1...{a} (self-pinning for Umnov
  cross-check 2.{A}#) and answers 1...{b} with 2.{B}#."

# Howard

mate2::types::NamedTheme::Howard Alias: Howard theme

A pinned White line-piece moves along the pin line to unpin a Black piece, which in turn moves onto the pin line to unpin the White piece for two distinct mates.

Thema Pattern Specification (.thm)
def [a b]
key K:Q|R|B [A B]
where collinear(WK, K.from, K.to), K.unpins(BK),
  a.unpins(WK), b.unpins(WK), a.to != b.to,
  A.from == K.to, B.from == K.to, A.to != B.to
subsumes DirectUnpinning, UnpinningKey
story "Howard: Pinned Key 1.{K}!{threat_clause} moves
  along the pin line to unpin Black, and defenses 1...{a}
  and 1...{b} unpin 1.{K} for mates 2.{A}# and 2.{B}#."

# Bograd

mate2::types::NamedTheme::Bograd Alias: Bograd theme

A White King key move unpins the White Queen, which then delivers at least four distinct pin-mates against Black defenses.

Thema Pattern Specification (.thm)
key K:K [A:Q B:Q]
where K.unpins(WK), same_piece(A, B), A.to != B.to,
  (A.pin_mate || B.pin_mate)
subsumes DirectUnpinning, IndirectUnpinning, PinMate,
  SelfPin, UnpinningKey
story "Bograd: White King Key 1.{K}!{threat_clause} unpins
  the White Queen, which delivers pin-mates 1...{a} 2.{A}#
  and 1...{b} 2.{B}#."

# Gavrilov Pickaninny

mate2::types::NamedTheme::GavrilovPickaninny

A Black pawn executes Pickaninny defenses (one-step, two-step, and captures) that self-interfere and allow White pin-mates.

Thema Pattern Specification (.thm)
def [a:P b:P c:P]
key [A B C]
where same_piece(a, b, c), a.one_step, b.two_step,
  (A.pin_mate || B.pin_mate || C.pin_mate)
story "Gavrilov Pickaninny: Key 1.{K}!{threat_clause}.
  Black's pawn on {a.from} makes Pickaninny defenses
  (1...{a}, 1...{b}, 1...{c}) allowing pin-mates 2.{A}#,
  2.{B}#, and 2.{C}#."

# Pawnee theme

mate2::types::NamedTheme::Pawnee Alias: Pawnee

A waiting pawn key unpins a Black Rook/slider, whose moves along its line allow a White pawn to deliver at least three Albino-style pawn mates.

Thema Pattern Specification (.thm)
def [a:R|B|Q b:R|B|Q c:R|B|Q]
key K:P () [A:P B:P C:P]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  same_piece(A, B, C), distinct(A.to, B.to, C.to)
subsumes Duel
story "Pawnee theme: Waiting pawn Key 1.{K}! unpins
  Black's {a.role} (1...{a}, 1...{b}, 1...{c}),
  answered by pawn mates 2.{A}#, 2.{B}#, and 2.{C}#."

# Barulin 1

mate2::types::NamedTheme::Barulin1

Two moves of the Black Queen pin one of two White Rooks in turn, forcing the other Rook to deliver checkmate on the exact same square.

Thema Pattern Specification (.thm)
def [a:Q b:Q]
key [A:R B:R]
where same_piece(a, b), a.to != b.to, A.from != B.from,
  A.to == B.to, (a.pins(WK) || b.pins(WK))
subsumes AntiDual, ThemeD
story "Barulin 1: Key 1.{K}!{threat_clause}.
  Black Queen moves 1...{a} and 1...{b} pin one White
  Rook in turn, forcing the other Rook to mate on {A.to}:
  2.{A}# vs 2.{B}#."

# Barulin 2

mate2::types::NamedTheme::Barulin2

A sacrificial square-clearing key provokes two checks by the same Black Rook along a line, answered by a White Knight interposing on two squares (including the square vacated by the key).

Thema Pattern Specification (.thm)
def [a:R:+ b:R:+]
key K [A:N B:N]
where same_piece(a, b), a.to != b.to, same_piece(A, B),
  A.to != B.to, (A.to == K.from || B.to == K.from)
subsumes CrossCheck, ProvokedCheck
story "Barulin 2: Key 1.{K}!{threat_clause} clears
  {K.from} and provokes Rook checks 1...{a} (2.{A}#) and
  1...{b} (2.{B}#)."

# Barulin (B2)

mate2::types::NamedTheme::BarulinB2 Alias: Barulin B2

Set play has mates A, B against two Black defenses; a flight-giving key changes those mates so two different defenses allow the same changed mate while the new flight allows a third mate.

Thema Pattern Specification (.thm)
def [a b c:K]
vir [A B _]
key K [B C D]
where K.flights_given >= 1
subsumes ChangedMate, FlightGivingKey, KingFlight,
  TransferredMates
story "Barulin (B2): Flight-giving Key
  1.{K}!{threat_clause} changes set play (1...{a} 2.{A}#,
  1...{b} 2.{B}#) to 1...{a} 2.{B}#, 1...{b} 2.{C}#,
  and flight 1...{c} 2.{D}#."

# Mackenzie

mate2::types::NamedTheme::Mackenzie Alias: Mackenzie theme

Two Black Knights capture the key piece on K.to, each self-pinning or unguarding so a White battery fires to capture the other Knight on its departure square.

Thema Pattern Specification (.thm)
def [a:N:x@K b:N:x@K]
key K [A B]
where a.from != b.from, A.to == b.from, B.to == a.from,
  (A.fires_battery || B.fires_battery)
subsumes BatteryMate, BatteryPlay, DoubleSacrificeKey
story "Mackenzie: Sacrificial Key 1.{K}!{threat_clause}
  on {K.to} is captured by Knights 1...{a} and 1...{b},
  answered by battery captures on each other's origin:
  2.{A}# and 2.{B}#."

# Ventura theme

mate2::types::NamedTheme::Ventura Alias: Ventura

A White Knight try fails to two Black pawn pushes; the key moves that Knight onto one of the pawns' squares (Rupp/self-block) so the other pawn push indirectly self-pins and allows mate.

Thema Pattern Specification (.thm)
def [a:P b:P]
try Tr:N [! !]
key K:N [A -]
where same_piece(Tr, K), K.to == b.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes SelfPin
story "Ventura theme: Knight try 1.{Tr}? fails to pawn
  moves 1...{a}! and 1...{b}!; Key 1.{K}! blocks {b.to} so
  1...{a} allows 2.{A}#."

# Jönsson cycle

mate2::types::NamedTheme::JonssonCycle Alias: Jonsson cycle

Three Black defenses create a cycle of indirect pins and indirect unpins, forcing three distinct White checkmates.

Thema Pattern Specification (.thm)
key [A B C]
where (a.indirect_pins(BK) || a.unpins(WK)),
  (b.indirect_pins(BK) || b.unpins(WK)),
  (c.indirect_pins(BK) || c.unpins(WK)),
  (a.indirect_pins(BK) || b.indirect_pins(BK)
    || c.indirect_pins(BK)),
  (a.unpins(WK) || b.unpins(WK) || c.unpins(WK))
story "Jönsson cycle: Key 1.{K}!{threat_clause}. Defenses
  1...{a} (2.{A}#), 1...{b} (2.{B}#), and 1...{c} (2.{C}#)
  combine indirect pinning and indirect unpinning."

# Buenos-Aires theme

mate2::types::NamedTheme::BuenosAires

A threat key creates a battery or half-pin configuration where Black defenses unpin or self-pin to allow distinct White battery mates.

Thema Pattern Specification (.thm)
key K (T) [A B]
where (a.unpins(A) || b.unpins(B) || a.self_pins_for(A)
    || b.self_pins_for(B)),
  A.fires_battery, B.fires_battery
subsumes BatteryPlay
story "Buenos-Aires theme: Key 1.{K}! (threat 2.{T}#)
  produces battery mates 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Onitiu theme

mate2::types::NamedTheme::Onitiu Alias: Onitiu

A Black King move (typically to a flight square granted by the key) self-pins Black pieces along lines radiating from the new King square, allowing a multiple pin-mate.

Thema Pattern Specification (.thm)
def [a:K]
key K [A]
where K.flights_given >= 1, a.self_pins_for(A), A.pin_mate
subsumes FlightGivingKey, PinMate, SelfPin
story "Onitiu theme: Flight-giving Key
  1.{K}!{threat_clause} allows Black King flight 1...{a},
  which self-pins Black's defenses for pin-mate 2.{A}#."
---
def [a:N b:N c:N]
key K:P:x [A:N B:N C:N]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  (A.pin_mate || B.pin_mate || C.pin_mate)
subsumes CaptureKey
story "Onitiu theme: Pawn capture
  Key 1.{K}!{threat_clause} induces Black Knight defenses
  1...{a}, 1...{b}, and 1...{c}, answered by Knight mates
  2.{A}#, 2.{B}#, and 2.{C}#."

# Monreal Peugeot theme

mate2::types::NamedTheme::MonrealPeugeot

After a flight-giving King key, two Black sliders capture on the same square and self-pin (Mansfield), allowing the same White Knight to capture each slider's departure square.

Thema Pattern Specification (.thm)
def [a:Q|R|B:x b:Q|R|B:x]
key K:K [A:N B:N]
where same_square(a, b), a.from != b.from,
  same_piece(A, B), A.to == b.from, B.to == a.from
subsumes DefencesOnSameSquare, Laitinen, Mansfield
story "Monreal Peugeot theme: King
  Key 1.{K}!{threat_clause}. Captures 1...{a} and 1...{b}
  on {a.to} self-pin, allowing White's Knight to mate
  on {b.from} (2.{A}#) and {a.from} (2.{B}#)."

# King's Nietvelt

mate2::types::NamedTheme::KingsNietvelt

In set play, a Black King flight allows mate A; the key grants a new King flight so the original flight allows changed mate B while the new flight transfers mate A.

Thema Pattern Specification (.thm)
def [a:K b:K]
vir [A -]
key K [B A]
where a.to != b.to
subsumes ChangedMate, KingFlight, TransferredMates
story "King's Nietvelt: Set flight 1...{a} 2.{A}# changes
  after Key 1.{K}! to 1...{a} 2.{B}#, while new flight
  1...{b} transfers 2.{A}#."

# Michel theme

mate2::types::NamedTheme::Michel Alias: Michel

Two tries and the key by the same White Knight create a masked half-pin and indirectly unpin a White piece.

Thema Pattern Specification (.thm)
try Tr1:N [A ! _]
try Tr2:N [! _ B]
key K:N [A C _]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  (a.unpins(WK) || b.unpins(WK) || a.self_pins
    || b.self_pins)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate, SelfPin
story "Michel theme: White Knight tries 1.{Tr1}? and
  1.{Tr2}? lead to Knight Key 1.{K}! (1...{a} 2.{A}#,
  1...{b} 2.{C}#)."
---
try Tr1:N (X) [A !]
try Tr2:N (Y) [_ B]
key K:N (Z) [C D]
where same_piece(Tr1, Tr2, K),
  (a.unpins(WK) || b.unpins(WK) || a.self_pins
    || b.self_pins)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate, SelfPin
story "Michel theme: White Knight tries 1.{Tr1}? (threat
  2.{X}#) and 1.{Tr2}? (threat 2.{Y}#) lead to Knight Key
  1.{K}! (threat 2.{Z}#; 1...{a} 2.{C}#, 1...{b} 2.{D}#)."

# Bouttier

mate2::types::NamedTheme::Bouttier Alias: Bouttier theme

A sacrificial key by a White Bishop/Rook pins a Black Knight; if the Black Queen captures the key piece she abandons guard of the back rank, while if the Knight moves (when unpinned) another Rook mates.

Thema Pattern Specification (.thm)
def [a:Q:x@K b:N]
key K:B|R [A:R B:R]
where A.from != B.from
subsumes ActiveSacrifice
story "Bouttier: Sacrificial Key 1.{K}!{threat_clause}
  on {K.to}; Queen capture 1...{a} allows 2.{A}# while
  Knight defense 1...{b} allows 2.{B}#."
Chapter Section · 40 Themes

03. Batteries & Discovered Checks

White battery formations, direct, indirect, masked, half-batteries, and king battery discovery mates.

# Half-battery

mate2::types::NamedTheme::HalfBattery

Two White pieces stand between a White line-piece and the Black King; either piece can move to fire the battery.

Thema Pattern Specification (.thm)
key K [A]
where A.fires_battery, A.from != K.to,
  between(K.from, A.battery_rear, BK),
  !collinear(A.battery_rear, BK, K.to)
story "Half-battery: Key 1.{K}!{threat_clause}.
  Either of two White pieces on the battery line can fire
  checkmate 2.{A}# against 1...{a}."
---
key K (A)
where A.fires_battery, A.from != K.to,
  between(K.from, A.battery_rear, BK),
  !collinear(A.battery_rear, BK, K.to)
with -match_threat_count
story "Half-battery: Key 1.{K}! unmasks the half-battery
  to threaten discovered checkmate 2.{A}#."

# Battery creation

mate2::types::NamedTheme::BatteryCreation

White key creates a direct or indirect battery.

Thema Pattern Specification (.thm)
key K [A]
where A.fires_battery,
  (K.to == A.from
    && !collinear(A.battery_rear, BK, K.from))
    || (K.to == A.battery_rear
    && !collinear(K.from, A.from, BK))
    || (between(K.from, A.battery_rear, BK)
    && !collinear(A.battery_rear, BK, K.to))
story "Battery creation: Key 1.{K}!{threat_clause} sets
  up a direct firing battery aimed at the Black King
  (1...{a} 2.{A}#)."
---
key K (A)
where A.fires_battery,
  (K.to == A.from
    && !collinear(A.battery_rear, BK, K.from))
    || (K.to == A.battery_rear
    && !collinear(K.from, A.from, BK))
    || (between(K.from, A.battery_rear, BK)
    && !collinear(A.battery_rear, BK, K.to))
with -match_threat_count
story "Battery creation: Key 1.{K}! sets up a direct
  firing battery threatening 2.{A}#."
---
try Tr [A]
key K
where same_piece(Tr, K), A.fires_battery,
  between(K.from, A.battery_rear, BK),
  !collinear(A.battery_rear, BK, K.to)
story "Battery creation: Key 1.{K}!{threat_clause} unmasks
  a direct firing battery aimed at the Black King."

# Royal battery

mate2::types::NamedTheme::RoyalBattery

A battery where the White King is the front (moving) piece delivering mate by discovery.

Thema Pattern Specification (.thm)
any [A:K]
where A.fires_battery
subsumes BatteryPlay, KingsBattery
story "Royal battery: Key 1.{K}!{threat_clause}.
  The White King itself steps aside to unmask discovered
  checkmate 2.{A}#."

# Battery mate

mate2::types::NamedTheme::BatteryMate

Checkmate is delivered by uncovered check from a battery.

Thema Pattern Specification (.thm)
any [A*]
where A.fires_battery
with -match_mate_count
story "Battery checkmate: Key 1.{K}!{threat_clause}.
  White fires the battery with 2.{A}# to deliver
  discovered checkmate."
---
any (A)
where A.fires_battery
with -match_threat_count
story "Battery checkmate: Key 1.{K}! threatens discovered
  battery checkmate 2.{A}#."

# Ellerman

mate2::types::NamedTheme::Ellerman

Key active sacrifice of a White piece sets up battery play, answered by multiple defenses met by battery mates.

Thema Pattern Specification (.thm)
key K:N|B|R|Q [A B]
where !K.capture, K.active_sacrifice, K.to != A.from,
  K.to != B.from, !between(K.from, A.battery_rear, BK),
  (A, B).fires_battery, A.battery_rear == B.battery_rear,
  A.battery_rear != K.to, a.from != b.from
with -match_mate_count
subsumes ActiveSacrifice, BatteryMate, BatteryPlay
story "Ellerman: Key 1.{K}!{threat_clause} creates
  a half-battery; defenses 1...{a} and 1...{b} fire
  checkmates 2.{A}# and 2.{B}#."
---
key K:N|B|R|Q (T) [A]
where !K.capture, K.active_sacrifice, K.to != T.from,
  K.to != A.from, !between(K.from, T.battery_rear, BK),
  (T, A).fires_battery, T.battery_rear == A.battery_rear,
  T.battery_rear != K.to
with -match_mate_count
subsumes ActiveSacrifice, BatteryMate, BatteryPlay
story "Ellerman: Key 1.{K}! (threat 2.{T}#) sacrifices
  on {K.to}; defense 1...{a} fires battery mate 2.{A}#."

# Siers battery

mate2::types::NamedTheme::SiersBattery

A battery where the front piece (a Knight) fires the battery on move 1 and mates on move 2, or mates after a King flight unmasks the rear battery piece.

Thema Pattern Specification (.thm)
key K:N [A:N]
where K.fires_battery, A.from == K.to, A.to != K.from
subsumes BatteryPlay
story "Siers battery: Knight 1.{K}+! fires the battery
  on move 1 and follows up with checkmate 2.{A}#
  against 1...{a}."
---
def [a:K]
key [A:N]
where !A.fires_battery, A.battery_rear >= 0,
  between(A.from, A.battery_rear, a.from)
subsumes IndirectBattery
story "Siers battery: After King flight 1...{a},
  front Knight 2.{A}# delivers checkmate while unmasking
  the rear battery piece on {a.from}."

# Battery play

mate2::types::NamedTheme::BatteryPlay

Checkmates delivered by battery fire across variations.

Thema Pattern Specification (.thm)
any [A]
where A.fires_battery
story "Battery play: Key 1.{K}!{threat_clause}
  leads to checkmate 2.{A}# by battery fire against
  defense 1...{a}."

# Battery

mate2::types::NamedTheme::Battery

A checkmate delivered by firing a battery (front piece moves, uncovering check from rear piece).

Thema Pattern Specification (.thm)
key K
where false
story "Battery: Checkmate delivered by firing a battery
  after Key 1.{K}!."

# Battery destruction

mate2::types::NamedTheme::BatteryDestruction

White key moves the rear piece or front piece off the battery line, dismantling it.

Thema Pattern Specification (.thm)
vir [A]
key K
where !K.check, A.fires_battery,
  (K.from == A.battery_rear
    && !collinear(A.from, BK, K.to)) || (K.from == A.from
    && !collinear(A.battery_rear, BK, K.to))
story "Battery destruction: Key 1.{K}!{threat_clause}
  disbands the {phase1} battery (1...{a} 2.{A}#)
  to construct a new mating net."
---
key K
where !K.check, K.destroys_battery
story "Battery destruction: Key 1.{K}!{threat_clause}
  disbands an existing battery to construct a new
  mating net."

# Half-battery creation

mate2::types::NamedTheme::HalfBatteryCreation

White key move sets up a half-battery configuration.

Thema Pattern Specification (.thm)
def [a:x]
key K [A]
where !collinear(K.from, a.to, BK),
  (A.fires_battery && ((between(a.to, A.battery_rear, BK)
    && K.to in {a.to, A.from, A.battery_rear})
    || (a.role == 'K' && a.to == K.to
    && between(A.from, A.battery_rear, a.to))))
    || (A.pins(a.to) && collinear(A.from, a.to, BK)
    && (K.to == a.to || K.to == A.from
    || between(a.to, K.to, BK)))
story "Half-battery creation: Key 1.{K}!{threat_clause}
  prepares a half-battery to deliver checkmate 2.{A}#
  against 1...{a}."

# Zabunov

mate2::types::NamedTheme::Zabunov Alias: Zabunov theme

White key creates a battery formation that fires checkmate against a King flight.

Thema Pattern Specification (.thm)
def [a:K]
key K [A]
where A.fires_battery,
  (K.to == A.from
    && !collinear(A.battery_rear, BK, K.from))
    || (K.to == A.battery_rear
    && !collinear(K.from, A.from, BK))
    || (between(K.from, A.battery_rear, BK)
    && !collinear(A.battery_rear, BK, K.to))
subsumes BatteryCreation, BatteryMate, BatteryPlay,
  KingFlight
story "Zabunov: Key 1.{K}!{threat_clause} sets up a direct
  battery that fires checkmate 2.{A}# against King
  flight 1...{a}."

# Battery transformation

mate2::types::NamedTheme::BatteryTransformation

White transforms one battery line into a new battery line.

Thema Pattern Specification (.thm)
vir [X]
key K [A]
where A != X, A.fires_battery,
  (X.fires_battery || K.from == X.from),
  (A.from != X.from || A.battery_rear != X.battery_rear)
subsumes BatteryMate, BatteryPlay
story "Battery transformation: Key 1.{K}!{threat_clause}
  transforms an existing battery into a new firing line
  for 2.{A}# against 1...{a}."
---
key K [A]
where A.fires_battery,
  (between(K.from, K.battery_rear, BK)
    && (A.from != K.from
    || A.battery_rear != K.battery_rear))
    || (between(K.battery_front, K.from, BK)
    && (A.from != K.battery_front
    || A.battery_rear != K.from))
subsumes BatteryMate, BatteryPlay
story "Battery transformation: Key 1.{K}!{threat_clause}
  transforms an existing battery into a new firing line
  for 2.{A}# against 1...{a}."

# Indirect battery

mate2::types::NamedTheme::IndirectBattery

A battery pointing not at the Black King directly, but at a flight square in the King's field.

Thema Pattern Specification (.thm)
key [A]
where A.battery_rear >= 0,
  (!A.fires_battery
    || !collinear(A.battery_rear, A.from, BK))
story "Indirect battery: Key 1.{K}!{threat_clause} leads
  to battery fire along an indirect axis to seal checkmate
  2.{A}# against 1...{a}."

# Anti-battery

mate2::types::NamedTheme::AntiBattery

Black defense attacks or steps onto the battery line, preventing its fire, and is met by a non-recapture mate.

Thema Pattern Specification (.thm)
def [b a]
key K [B A]
where B.fires_battery, !A.fires_battery, !A.recaptures(a),
  a.to != K.to,
  (a.to == B.from || a.to == B.battery_rear
    || between(a.to, B.battery_rear, BK))
story "Anti-battery: Key 1.{K}!{threat_clause} meets
  defense 1...{a} which disrupts the battery line,
  answered by checkmate 2.{A}#."
---
key K (B) [A]
where B.fires_battery, !A.fires_battery, !A.recaptures(a),
  a.to != K.to,
  (a.to == B.from || a.to == B.battery_rear
    || between(a.to, B.battery_rear, BK))
with -match_threat_count
story "Anti-battery: Key 1.{K}!{threat_clause} meets
  defense 1...{a} which disrupts the battery line,
  answered by checkmate 2.{A}#."

# King's battery

mate2::types::NamedTheme::KingsBattery

Discovery mate delivered or threatened by the White King stepping off a line.

Thema Pattern Specification (.thm)
any [A:K]
with -single_refutation -capture_try_piece
  -match_mate_count
story "King's battery: Key 1.{K}!{threat_clause} is
  followed by the White King personally unmasking
  discovered checkmate 2.{A}# against 1...{a}."
---
any (T:K)
with -single_refutation -capture_try_piece
  -match_threat_count
story "King's battery: 1.{K} threatens discovered
  checkmate 2.{T}# by the White King."

# Masked battery

mate2::types::NamedTheme::MaskedBattery

A White battery is initially masked by a Black piece; when that Black piece moves off the line, the White battery fires to deliver checkmate.

Thema Pattern Specification (.thm)
def [a]
key [A]
where a.opens_line(A), A.fires_battery
subsumes BatteryMate, BatteryPlay
story "Masked battery: After Key 1.{K}!{threat_clause},
  Black defense 1...{a} unmasks the White battery,
  which fires with 2.{A}#."

# Popandopulo batteries

mate2::types::NamedTheme::PopandopuloBatteries

Two distinct White battery front pieces fire across variations to deliver discovered checkmates.

Thema Pattern Specification (.thm)
key [A B]
where diff_piece(A, B), (A, B).fires_battery
subsumes BatteryMate, BatteryPlay
story "Popandopulo batteries: Two distinct White
  batteries fire after Key 1.{K}!{threat_clause}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Royal cross-check

mate2::types::NamedTheme::RoyalCrossCheck

A Black checking defense is answered by a discovered checkmate executed by the White King.

Thema Pattern Specification (.thm)
def [a:+]
key [A:K]
where A.fires_battery
subsumes CrossCheck, ProvokedCheck, RoyalBattery
story "Royal cross-check: After Key 1.{K}!{threat_clause},
  Black check 1...{a} is answered by a Royal battery
  discovery 2.{A}#."

# Cross-check by capture

mate2::types::NamedTheme::CaptureCrossCheck

Black checking defense is met by a White battery mate that captures a Black piece other than the checking piece.

Thema Pattern Specification (.thm)
def [a:+]
key [A:x:!@a]
where A.fires_battery
subsumes BatteryMate, BatteryPlay, CrossCheck,
  ProvokedCheck
story "Cross-check by capture:
  After Key 1.{K}!{threat_clause}, Black check 1...{a}
  is met by battery capture 2.{A}# (without capturing
  the checking unit)."

# Changed battery mates

mate2::types::NamedTheme::ChangedBatteryMates

Two Black defenses answered by battery checkmates in virtual play receive changed battery checkmates in actual play.

Thema Pattern Specification (.thm)
^vir [A B]
^key [C D]
where (A, B, C, D).fires_battery
subsumes BatteryMate, BatteryPlay
story "Changed battery mates: Battery mates against
  1...{a} and 1...{b} change from 2.{A}# and
  2.{B}# in {phase1} to 2.{C}# and 2.{D}# after
  Key 1.{K}!{threat_clause}."

# Pawn battery mate

mate2::types::NamedTheme::PawnBatteryMate

A White Pawn acts as the front piece of a battery, delivering discovered checkmate.

Thema Pattern Specification (.thm)
key [A:P]
where A.fires_battery
subsumes BatteryMate, BatteryPlay
story "Pawn battery mate: After Key 1.{K}!{threat_clause},
  White's Pawn fires a battery discovery with 2.{A}#
  after 1...{a}."

# Promotion battery mate

mate2::types::NamedTheme::PromotionBatteryMate

A White Pawn promotes while simultaneously firing a battery to deliver discovered checkmate.

Thema Pattern Specification (.thm)
key [A:P:=]
where A.fires_battery
subsumes PawnBatteryMate, PromotionKey
story "Promotion battery mate: After
  Key 1.{K}!{threat_clause}, White's Pawn promotes while
  firing a battery discovery with 2.{A}# after 1...{a}."

# Switchback battery mate

mate2::types::NamedTheme::SwitchbackBatteryMate

The White key piece returns to its departure square on move 2 while simultaneously firing a battery to deliver discovered checkmate.

Thema Pattern Specification (.thm)
key K [A~K]
where A.fires_battery
subsumes BatteryMate, BatteryPlay, Switchback
story "Switchback battery mate: Key 1.{K}!{threat_clause}
  returns to {K.from} to fire a battery discovery with
  2.{A}# after 1...{a}."

# Theme A

mate2::types::NamedTheme::ThemeA Alias: Thema A

Two Black defenses arriving on the same square close two different Black lines, separating a White battery/slider dual so each defense allows only one of two mates.

Thema Pattern Specification (.thm)
key [A B]
where same_square(a, b), a.from != b.from,
  a.closes_line(), b.closes_line(),
  ((A.fires_battery && B.fires_battery)
    || (same_piece(A, B) && A.slider))
subsumes DefencesOnSameSquare
story "Theme A: Key 1.{K}!{threat_clause}.
  Two Black defenses on {a.to} (1...{a} and 1...{b}) close
  distinct lines to separate 2.{A}# and 2.{B}#."

# Anti-Roels

mate2::types::NamedTheme::AntiRoels

Tries threaten Royal battery mates refuted by Black slider defenses; the key changes the threat and answers those sliders with distinct mates.

Thema Pattern Specification (.thm)
try (X:K) [! _]
key (Y) [A B]
where X.fires_battery, a.slider, b.slider
with -match_threat_count
subsumes KingsBattery
story "Anti-Roels: Try 1.{Tr}? threatens Royal
  battery mate 2.{X}# (refuted by 1...{a}!);
  Key 1.{K}!{threat_clause} answers 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Foschini

mate2::types::NamedTheme::Foschini Alias: Foschini theme

Two Black King flights step onto the lines of two different rear line-pieces sharing the same front battery piece, which fires discovered checkmates from each rear piece.

Thema Pattern Specification (.thm)
def [a:K b:K]
key [A B]
where a.to < b.to, same_piece(A, B), A.fires_battery,
  B.fires_battery, A.battery_rear != B.battery_rear
subsumes BatteryMate, BatteryPlay, KingFlight
story "Foschini: Key 1.{K}!{threat_clause}. Black King
  flights 1...{a} and 1...{b} step onto two battery
  lines sharing the front {A.role_name} on {A.from},
  which fires 2.{A}# and 2.{B}#."

# Szöghy 2

mate2::types::NamedTheme::Szoghy2

The key creates a half-battery, and at least two checking moves by the Black Queen/slider are answered by the front piece delivering discovered/double-check mates.

Thema Pattern Specification (.thm)
def [a:Q|R|B:+ b:Q|R|B:+]
key K [A B]
where same_piece(a, b), a.to != b.to, same_piece(A, B),
  A.to != B.to, A.fires_battery, B.fires_battery
subsumes BatteryMate, BatteryPlay, CrossCheck,
  ProvokedCheck
story "Szöghy 2: Key 1.{K}!{threat_clause} sets up
  battery cross-checks against Black {a.role} checks:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Führer theme

mate2::types::NamedTheme::Fuehrer Alias: Fuehrer theme

Random and correction moves of a Black slider along a line allow the same White front battery piece to deliver three distinct discovered mates along a line.

Thema Pattern Specification (.thm)
def [a:B|R|Q b:B|R|Q c:B|R|Q]
key [A B C]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  same_piece(A, B, C), distinct(A.to, B.to, C.to),
  A.fires_battery, B.fires_battery, C.fires_battery
subsumes BatteryMate, BatteryPlay, Duel
story "Führer theme: Key 1.{K}!{threat_clause}. Black
  {a.role} moves 1...{a}, 1...{b}, 1...{c} are answered by
  battery piece {A.role} on {A.to}, {B.to}, and {C.to}."

# Mlynka

mate2::types::NamedTheme::Mlynka Alias: Mlynka theme

Two tries with different threats share the same Royal battery variations against three Black defenses; the key changes those variations.

Thema Pattern Specification (.thm)
try (X) [A B:K !]
try (Y) [A B:K _]
key [C D E]
where B.fires_battery
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, RoyalBattery
story "Mlynka: Tries 1.{Tr1}? (threat 2.{X}#) and 1.{Tr2}?
  (threat 2.{Y}#) share Royal battery mates 2.{A}# and
  2.{B}#, changed by Key 1.{K}!."

# Oudot theme

mate2::types::NamedTheme::Oudot Alias: Oudot

A sacrificial key by a half-battery Knight creates a masked battery and provokes a Black checking capture answered by cross-check or double-check mate.

Thema Pattern Specification (.thm)
def [a:x:+ b:x@K]
key K:N [A B]
where (A.fires_battery || B.fires_battery
    || A.double_check)
subsumes BatteryMate, BatteryPlay, KnightSacrifice,
  ProvokedCheck
story "Oudot theme: Knight sacrifice
  Key 1.{K}!{threat_clause} creates a masked battery,
  answering checking capture 1...{a} with 2.{A}# and
  capture 1...{b} with 2.{B}#."

# Blikeng theme

mate2::types::NamedTheme::Blikeng Alias: Blikeng

The White King is the front piece of a Royal battery and moves on the key to a new square while preserving the Royal battery, then fires Royal battery mates in the variations.

Thema Pattern Specification (.thm)
key K:K [A:K B:K]
where A.fires_battery, B.fires_battery, A.to != B.to
subsumes RoyalBattery
story "Blikeng theme: White King Key 1.{K}!{threat_clause}
  shifts the Royal battery and fires Royal battery mates
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Küchler theme

mate2::types::NamedTheme::Kuchler Alias: Kuchler theme

The key abandons an existing White battery while granting a capture flight to the Black King and clearing a square for the key piece's recapture.

Thema Pattern Specification (.thm)
def [a:x b:K:x]
key K [A B]
where A.from == K.to,
  (between(K.battery_front, K.from, BK)
    || between(K.from, K.battery_rear, BK)
    || K.flights_given >= 1)
subsumes FlightCapture
story "Küchler theme: Key 1.{K}!{threat_clause} abandons
  a battery and grants capture flight 1...{b} (2.{B}#)
  while answering 1...{a} with 2.{A}#."

# Fleck-Burkhardt

mate2::types::NamedTheme::FleckBurkhardt Alias: Windmill theme

The key threatens at least three discovered mates by the same front battery piece, and Black defenses separate them into individual mates.

Thema Pattern Specification (.thm)
key (ABC) [A B C]
where same_piece(A, B, C), distinct(A.to, B.to, C.to),
  (A.fires_battery || B.fires_battery || C.fires_battery)
with -match_threat_count
subsumes BatteryMate, BatteryPlay, DoubleThreat, Fleck
story "Fleck-Burkhardt (Windmill): Key 1.{K}! threatens
  multiple battery discoveries (2.{A}#, 2.{B}#, 2.{C}#),
  separated by 1...{a}, 1...{b}, and 1...{c}."

# Barthelemy

mate2::types::NamedTheme::Barthelemy Alias: Barthelemy theme

Four moves by the same Black slider along its lines self-block or close lines, forcing two pairs of White battery/slider mates.

Thema Pattern Specification (.thm)
def [a:B|R|Q b:B|R|Q c:B|R|Q d:B|R|Q]
key [A B C D]
where same_piece(a, b, c, d),
  distinct(a.to, b.to, c.to, d.to), same_piece(A, B),
  same_piece(C, D), A.from != C.from
story "Barthelemy: Key 1.{K}!{threat_clause}. Four
  moves of Black's {a.role} (1...{a}, 1...{b}, 1...{c},
  1...{d}) force 2.{A}#, 2.{B}#, 2.{C}#, and 2.{D}#."

# Tema Argentino

mate2::types::NamedTheme::TemaArgentino

A White King key creates a half-battery and exposes the White King to a check, while three Black pieces (including the Black King) defend on the same square.

Thema Pattern Specification (.thm)
def [a:R|B|Q b:K c:Q|R|B]
key K:K [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from)
subsumes ArrivalCorrection, KingFlight
story "Tema Argentino: White King
  Key 1.{K}!{threat_clause} induces three Black pieces
  (including the Black King) to defend on {a.to}:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Octagon theme

mate2::types::NamedTheme::Octagon

A single White Knight delivers discovered battery checkmates on at least five distinct squares of its octagon wheel against moves of a Black slider.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B c:Q|R|B d:Q|R|B e:Q|R|B]
key [A:N B:N C:N D:N E:N]
where same_piece(a, b, c, d, e),
  same_piece(A, B, C, D, E),
  distinct(A.to, B.to, C.to, D.to, E.to), A.fires_battery
subsumes BatteryMate, BatteryPlay, Duel, WhiteKnightWheel
story "Octagon theme: Key 1.{K}!{threat_clause}. White's
  Knight on {A.from} fires battery mates on five octagon
  squares: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#, and 2.{E}#."

# Durbar

mate2::types::NamedTheme::Durbar Alias: Durbar task

The White King makes the key move and then delivers at least four distinct Royal battery checkmates in the variations.

Thema Pattern Specification (.thm)
key K:K [A:K B:K C:K D:K]
where same_piece(A, B, C, D),
  distinct(A.to, B.to, C.to, D.to), A.fires_battery
subsumes Blikeng
story "Durbar: White King Key 1.{K}!{threat_clause} is
  followed by four Royal battery mates by the White King:
  2.{A}#, 2.{B}#, 2.{C}#, and 2.{D}#."

# Torngren theme

mate2::types::NamedTheme::Torngren Alias: Torngren

A White pawn promotion key creates a battery or half-battery with a double threat on the same square.

Thema Pattern Specification (.thm)
key K:P:= (XY) [A B]
where X.to == Y.to, X.from != Y.from
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes KarlstromFleck, PromotionKey
story "Torngren theme: Promotion Key 1.{K}! threatens
  double capture on {X.to} (2.{X}#, 2.{Y}#), separated
  by 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Ekström theme

mate2::types::NamedTheme::Ekstrom Alias: Ekstroem theme

The key creates a battery, and four Black pieces (two Knights and two sliders) move without capturing to the same square, forcing four distinct checkmates.

Thema Pattern Specification (.thm)
def [a:N:!x b:N:!x c:B|R|Q:!x d:B|R|Q:!x]
key K [A B C D]
where same_square(a, b, c, d),
  distinct(a.from, b.from, c.from, d.from),
  (A.fires_battery || B.fires_battery || C.fires_battery
    || D.fires_battery)
subsumes CederInterference, SelfInterference, Stocchi
story "Ekström theme: Key 1.{K}!{threat_clause}.
  Two Black Knights (1...{a}, 1...{b}) and two sliders
  (1...{c}, 1...{d}) converge on {a.to}, forcing 2.{A}#,
  2.{B}#, 2.{C}#, and 2.{D}#."

# Volga

mate2::types::NamedTheme::Volga Alias: Volga theme

A key creates a masked battery and provokes two checking captures/moves by the same Black Rook, both answered by the key piece capturing the Rook to fire the battery.

Thema Pattern Specification (.thm)
def [a:R:+ b:R:+]
key K [A:x@a B:x@b]
where same_piece(a, b), a.to != b.to, A.from == K.to,
  B.from == K.to, A.fires_battery, B.fires_battery
subsumes BatteryMate, BatteryPlay, CrossCheck, Dentist
story "Volga: Key 1.{K}!{threat_clause} creates
  a masked battery and answers Rook checks 1...{a} and
  1...{b} by capturing the Rook with the key piece:
  2.{A}# and 2.{B}#."
Chapter Section · 84 Themes

04. Cyclic Systems & Grandmaster Complex Cycles

Modern cyclic systems exchanging threats, defenses, refutations, and mates (Dombrovskis, Hannelius, Le Grand, Shedey, Vladimirov, Rudenko).

# Banny

mate2::types::NamedTheme::Banny

Tries A and B are refuted by defenses b and a; in a subsequent phase, defenses a and b are answered by the respective try moves A and B.

Thema Pattern Specification (.thm)
try A [_ !]
try B [! _]
+any  [A B]
with -no_threats_few_replies -no_threats_sparse_mates
  -capture_try_piece -refutation_is_check
  -match_threat_count -match_mate_count -single_refutation
story "Banny: Tries 1.{A}? (refuted by 1...{b}!) and
  1.{B}? (refuted by 1...{a}!) are answered reciprocally
  in subsequent play: 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
try A [! _]
try B [_ !]
+any  [B A]
story "Banny: Tries 1.{A}? (refuted by 1...{a}!) and
  1.{B}? (refuted by 1...{b}!) are answered reciprocally
  in subsequent play: 1...{a} 2.{B}# and 1...{b} 2.{A}#."
---
vir   [A B]
try A [_ !]
try B [! _]
with -no_threats_few_replies -no_threats_sparse_mates
  -capture_try_piece -refutation_is_check
  -match_threat_count -match_mate_count -single_refutation
story "Banny: Virtual mates 1...{a} 2.{A}# and
  1...{b} 2.{B}# reappear as tries 1.{A}? (refuted
  by 1...{b}!) and 1.{B}? (refuted by 1...{a}!)."

# Cyclic Banny

mate2::types::NamedTheme::CyclicBanny

Cyclic Banny across 3 phases: Try 1 (move A) refuted by a; Try 2 (move B) refuted by b; Try 3 (move C) refuted by c; Key answers defenses with B, C, A.

Thema Pattern Specification (.thm)
try A [! _ _]
try B [_ ! _]
try C [_ _ !]
key   [B C A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Banny
story "Cyclic Banny: Tries 1.{A}?, 1.{B}?, and 1.{C}? are
  answered cyclically after key 1.{K}!{threat_clause}:
  1...{a} 2.{B}#, 1...{b} 2.{C}#, 1...{c} 2.{A}#."

# Hannelius

mate2::types::NamedTheme::Hannelius Alias: Set Hannelius

Reciprocal changed threat theme: Try 1 threatens X (refuted by a); Try 2 threatens Y (refuted by b); Key answers defense a with Y, and defense b with X.

Thema Pattern Specification (.thm)
try (X) [! _]
try (Y) [_ !]
+any    [Y X]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Hannelius: Tries 1.{Tr1}? (threat 2.{X}#, refuted
  by 1...{a}!) and 1.{Tr2}? (threat 2.{Y}#, refuted
  by 1...{b}!) have their threats reciprocally transferred
  to defenses in the key 1.{K}!{threat_clause}:
  1...{a} 2.{Y}# and 1...{b} 2.{X}#."
---
vir     [Y X]
try (X) [! _]
try (Y) [_ !]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Hannelius: Virtual mates 1...{a} 2.{Y}# and
  1...{b} 2.{X}# reappear reciprocally as threats in tries
  1.{Tr1}? (threat 2.{X}#, refuted by 1...{a}!) and
  1.{Tr2}? (threat 2.{Y}#, refuted by 1...{b}!)."

# Cyclic Hannelius

mate2::types::NamedTheme::CyclicHannelius

Cyclic changed threat theme across 3 phases: tries threaten X, Y, Z (refuted by a, b, c); Key answers a, b, c cyclically with Y, Z, X.

Thema Pattern Specification (.thm)
try (X) [! _ _]
try (Y) [_ ! _]
try (Z) [_ _ !]
key     [Y Z X]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Dad, Hannelius
story "Cyclic Hannelius: Three try threats 2.{X}#,
  2.{Y}#, 2.{Z}# are cyclically permuted in the key
  1.{K}!{threat_clause}: 1...{a} 2.{Y}#, 1...{b} 2.{Z}#,
  1...{c} 2.{X}#."

# Dombrovskis

mate2::types::NamedTheme::Dombrovskis Alias: Set Dombrovskis

Tries threaten A and B, refuted by defenses a and b; Key answers defense a with A, and defense b with B.

Thema Pattern Specification (.thm)
try (A) [! _]
try (B) [_ !]
+any    [A B]
with -match_mate_count -single_refutation
  -capture_try_piece
story "Dombrovskis: Try threats 2.{A}# (from 1.{Tr1}?,
  refuted by 1...{a}!) and 2.{B}# (from 1.{Tr2}?,
  refuted by 1...{b}!) return as post-key mates
  after 1.{K}!{threat_clause}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."
---
try (A) [! _]
+any (B) [A]
with -match_mate_count -capture_try_piece
story "Dombrovskis: Try threat 2.{A}# (from 1.{Tr}?,
  refuted by 1...{a}!) returns as post-key mate after
  1.{K}! (threat 2.{B}#): 1...{a} 2.{A}#."
---
try A (B) [! !]
+any [A B]
with -match_mate_count -capture_try_piece
story "Dombrovskis: Try 1.{A}? (threat 2.{B}#) is refuted
  by 1...{a}! and 1...{b}!, which are answered by 2.{A}#
  and 2.{B}# after Key 1.{K}!{threat_clause}."
---
vir     [A B]
try (A) [! _]
try (B) [_ !]
with -match_mate_count -single_refutation
  -capture_try_piece
story "Dombrovskis: Virtual mates 1...{a} 2.{A}# and
  1...{b} 2.{B}# reappear as try threats in 1.{Tr1}?
  (threat 2.{A}#, refuted by 1...{a}!) and 1.{Tr2}?
  (threat 2.{B}#, refuted by 1...{b}!)."
---
try (A) [! _ _ _]
try (B) [_ ! _ _]
+any    [_ _ A B]
with -match_mate_count -single_refutation
  -capture_try_piece
story "Dombrovskis: Try threats 2.{A}# and 2.{B}# return
  as defensive mates after Key 1.{K}!{threat_clause}:
  1...{c} 2.{A}# and 1...{d} 2.{B}#."

# Dombrovskis Paradox

mate2::types::NamedTheme::DombrovskisParadox

A try threatens X and is refuted by defense a; in the solution, defense a is answered by checkmate with X.

Thema Pattern Specification (.thm)
try (X) [!]
key     [X]
story "Dombrovskis paradox: Try threat 2.{X}# (from
  1.{Tr}?, refuted by 1...{a}!) returns as checkmate after
  key 1.{K}!{threat_clause}: 1...{a} 2.{X}#."

# Ideal Dombrovskis

mate2::types::NamedTheme::DombrovskisIdeal

Try 1 threatens X, refuted by a (mates b with A); Try 2 threatens Y, refuted by b (mates a with B); Key mates a with X and b with Y.

Thema Pattern Specification (.thm)
try (X) [! A]
try (Y) [B !]
key     [X Y]
subsumes DefBasedHannelius, Dombrovskis, Dombrovsky,
  Makrava
story "Ideal Dombrovskis: Try threats 2.{X}# (1.{Tr1}?)
  and 2.{Y}# (1.{Tr2}?) reappear as actual mates against
  the refutations after key 1.{K}!{threat_clause}:
  1...{a} 2.{X}# and 1...{b} 2.{Y}#."

# Dombrovskis Cross-Closed 1

mate2::types::NamedTheme::DombrovskisCrossClosed1

Dombrovskis cross-closed 1: Try 1 threatens A (refuted by a, mates B against b); Try 2 threatens B (mates A against a, refuted by b); solved by Key K.

Thema Pattern Specification (.thm)
try (A) [! B]
try (B) [A !]
key K
subsumes Dombrovskis, Dombrovsky, PseudoLeGrand,
  TransferredMates
story "Dombrovskis Cross-Closed 1:
  Try 1.{Tr1}? (threat 2.{A}#, refuted by 1...{a}!,
  allows 1...{b} 2.{B}#) and Try 1.{Tr2}? (threat 2.{B}#,
  allows 1...{a} 2.{A}#, refuted by 1...{b}!) cross-close,
  resolved by key 1.{K}!{threat_clause}."

# Vladimirov

mate2::types::NamedTheme::Vladimirov

A White try move X is refuted by defense a; in the Key, defense a is answered by mate move X.

Thema Pattern Specification (.thm)
try X [!]
any   [X]
with -capture_try_piece -match_threat_count
story "Vladimirov: White try move 1.{X}? (refuted
  by 1...{a}!) returns as checkmate after key
  1.{K}!{threat_clause}: 1...{a} 2.{X}#."
---
try A (B) [! !]
key [A B]
with -capture_try_piece -match_threat_count
story "Vladimirov: White try move 1.{A}? and threat
  2.{B}# (refuted by 1...{a}! and 1...{b}!) return
  as checkmates after key 1.{K}!{threat_clause}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Vladimirov Cross-Closed 1

mate2::types::NamedTheme::VladimirovCC1

Vladimirov cross-closed: Try A refuted by defense a (mates b with B); Try B answers defense a with A, refuted by b.

Thema Pattern Specification (.thm)
try A [! B]
try B [A !]
key K
with -capture_try_piece -match_threat_count
  -no_threats_sparse_mates -no_threats_few_replies
  -single_refutation -refutation_is_check
subsumes ChangedPlay, PseudoSalazar, Vladimirov
story "Vladimirov Cross-Closed 1: Try moves 1.{A}?
  (refuted by 1...{a}!) and 1.{B}? (refuted by 1...{b}!)
  cross-answer the refutations as checkmates, resolved
  by key 1.{K}!{threat_clause}."

# Le Grand

mate2::types::NamedTheme::Legrand

Try threatens A, with defense a answered by B; Key threatens B, with defense a answered by A.

Thema Pattern Specification (.thm)
try (A) [B]
+any (B) [A]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
subsumes ChangedMate
story "Le Grand: Try 1.{Tr}? threatens 2.{A}# (answered
  by 1...{a} 2.{B}#); Key 1.{K}! mirrors the play,
  threatening 2.{B}# with 1...{a} 2.{A}# against
  the defense."

# Pseudo-Le Grand

mate2::types::NamedTheme::PseudoLeGrand

Phase 1 threatens A (defense a answered by B); Phase 2 threatens B (defense b answered by A).

Thema Pattern Specification (.thm)
vir (A) [B _]
+any (B) [_ A]
with -refutation_is_check -capture_try_piece
  -match_threat_count -match_mate_count -single_refutation
subsumes ChangedMate
story "Pseudo-Le Grand: Try 1.{Tr}? threatens 2.{A}#
  (answered by 1...{a} 2.{B}#); Key 1.{K}! threatens
  2.{B}# (answered by 1...{b} 2.{A}#), producing
  a reciprocal threat-mate transference."

# Cyclic Le Grand

mate2::types::NamedTheme::CyclicLeGrand

Cyclic permutation of threats and mates against defense a across 3 phases: Try 1 threatens A (mates B); Try 2 threatens B (mates C); Key threatens C (mates A).

Thema Pattern Specification (.thm)
try (A) [B]
try (B) [C]
key (C) [A]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
subsumes ChangedPlay, PseudoCyclicLeGrand
story "Cyclic Le Grand: Three phases cyclically
  permute threats and defensive mates:
  Try 1.{Tr1}? (threat 2.{A}#, 1...{a} 2.{B}#),
  Try 1.{Tr2}? (threat 2.{B}#, 1...{a} 2.{C}#),
  and Key 1.{K}! (threat 2.{C}#, 1...{a} 2.{A}#)."

# Lacny

mate2::types::NamedTheme::Lacny Alias: Lacny Cycle

Cyclic change of mates across two phases against defenses a, b, c (A, B, C to B, C, A).

Thema Pattern Specification (.thm)
vir [A B C]
key [B C A]
subsumes ThreeChangedMates, TransferredMates
story "Lacny cycle: Cyclically permuted checkmates
  across phases (A -> B -> C -> A) against defenses
  1...{a}, 1...{b}, and 1...{c}, completed by key
  1.{K}!{threat_clause}."

# Complete Lacny

mate2::types::NamedTheme::LacnyComplete

Complete cyclic change of mates across 3 phases against defenses a, b, c (A, B, C / B, C, A / C, A, B).

Thema Pattern Specification (.thm)
vir [A B C]
try [B C A]
key [C A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiCarousel, CounterCarousel, RiceCycle,
  ZagoruikoCyclic
story "Complete Lacny: Flawless cyclic permutation
  of three defensive mates across three phases:
  {phase1} (2.{A}#, 2.{B}#, 2.{C}#), try 1.{Tr}? (2.{B}#,
  2.{C}#, 2.{A}#), and key 1.{K}!{threat_clause} (2.{C}#,
  2.{A}#, 2.{B}#)."

# Dombrovskis-Lacny

mate2::types::NamedTheme::DombroLacny

Combination of Dombrovskis and Lacny: Try threatens A (mates B, C against defenses a, b); Key threatens B (mates C, A against a, b).

Thema Pattern Specification (.thm)
try (A) [B C]
key (B) [C A]
subsumes Isaev, PseudoLeGrand, ThreatKey, TransferredMates
story "Dombrovskis-Lacny: Try 1.{Tr}? (threat 2.{A}#,
  defenses 1...{a} 2.{B}#, 1...{b} 2.{C}#) and Key 1.{K}!
  (threat 2.{B}#, defenses 1...{a} 2.{C}#, 1...{b} 2.{A}#)
  synthesize Dombrovskis threats and Lacny cyclic mates."

# Shedey Cycle

mate2::types::NamedTheme::ShedeyCycle Alias: Shedey theme

Cyclic change between threats, phase moves, and defensive mates across three phases (e.g., mate A in tries becomes threat A in the Key).

Thema Pattern Specification (.thm)
try [A C]
try [D A]
key (A) [E F]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
story "Shedey cycle: Key 1.{K}! threatens 2.{A}#
  (answering defenses with 2.{E}# and 2.{F}#), completing
  a cyclic permutation of threats and defensive mates
  across phases."
---
vir [A !A]
+try [!A A]
+key (A) [!A !A]
with -match_threat_count -match_mate_count
story "Shedey cycle: Mate 2.{A}# against 1...{a}
  in {phase1} transfers to 1...{b} in Try 1.{Tr}? and
  becomes the threat in {phase3}."
---
vir [A B]
try (A) [! _]
+any (B) [C D]
where A != C
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Shedey cycle: Defensive mates 2.{A}# and 2.{B}#
  from {phase1} reappear as threats across Try 1.{Tr}?
  and {phase3}."
---
any A [B _]
+any (B) [A _]
+any [A B]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Shedey cycle: Moves 2.{A}# and 2.{B}# cycle
  through phase move, threat, and defensive mates across
  three phases."

# Complete Kiss

mate2::types::NamedTheme::KissComplete

Complete Kiss cycle across 3 phases: Try A (mates B, C), Try B (mates C, A), and Key C (mates A, B) against defenses a and b.

Thema Pattern Specification (.thm)
try A [B C]
try B [C A]
key C [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiReversal, Brabec3, ComplexBanny, Kiss,
  RiceCycle, ZagoruikoCyclic
story "Complete Kiss: Full thematic matrix
  of changed checkmates across tries 1.{A}?, 1.{B}?,
  and key 1.{C}!{threat_clause} against defenses 1...{a}
  and 1...{b}."

# Rudenko

mate2::types::NamedTheme::Rudenko

Tries threaten A and B (refuted by defenses a and b) and Key answers a and b reciprocally with B and A; or double threat AB in one phase separates into variation mates A and B in another phase.

Thema Pattern Specification (.thm)
try (A) [! _]
try (B) [_ !]
key [B A]
story "Rudenko: Tries 1.{Tr1}? (threat 2.{A}#,
  refuted by 1...{a}!) and 1.{Tr2}? (threat 2.{B}#,
  refuted by 1...{b}!) have their threats reciprocally
  answered after key 1.{K}!{threat_clause}:
  1...{a} 2.{B}# and 1...{b} 2.{A}#."
---
try (AB)
+any [A B]
with -capture_try_piece -refutation_is_check
  -single_refutation
story "Rudenko: Double threat 2.{AB}# in try 1.{Tr}?
  is separated into defensive variation mates:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
vir [A B]
+any (AB)
with -capture_try_piece -refutation_is_check
  -single_refutation
story "Rudenko: Variation mates 1...{a} 2.{A}# and 1...{b}
  2.{B}# in {phase1} become the double threat 2.{AB}#."

# Rudenko (Reversal Form)

mate2::types::NamedTheme::RudenkoReversal

Double threat AB with defensive mates C, D in try, answered by mates A, B in key.

Thema Pattern Specification (.thm)
try (AB) [C D]
key [A B]
subsumes ChangedPlay, DoubleThreat, Rudenko
story "Rudenko (Reversal Form): Try 1.{Tr}? carries
  double threat 2.{AB}# (answered by 1...{a} 2.{C}# and
  1...{b} 2.{D}#); Key 1.{K}!{threat_clause} converts
  the threats into defensive mates: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Rice Cycle

mate2::types::NamedTheme::RiceCycle

Cyclic permutation of mates across three phases against defenses a and b (A, B / B, C / C, A).

Thema Pattern Specification (.thm)
vir [A B]
try [B C]
key [C A]
with -no_threats_sparse_mates -no_threats_few_replies
  -refutation_is_check -capture_try_piece
  -single_refutation -match_threat_count -match_mate_count
subsumes ChangedPlay, TransferredMates
story "Rice cycle: Cyclic permutation of defensive
  mates across tries 1.{Tr1}?, 1.{Tr2}?, and key
  1.{K}!{threat_clause}: 1...{a} 2.{A}#, 2.{B}#, 2.{C}#."

# Jurasevic

mate2::types::NamedTheme::Jurasevic Alias: Djurasevic

Cyclic relation between phase move, threat, and mate against defense a: Try A threatens B (mates C); Key B threatens C (mates A).

Thema Pattern Specification (.thm)
try A (B) [C]
key B (C) [A]
subsumes AntiReversal, Erokhin, ThreatAntiReversal
story "Djurasevic: Try 1.{A}? (threat 2.{B}#, defense
  1...{a} 2.{C}#) and key 1.{B}! (threat 2.{C}#, defense
  1...{a} 2.{A}#) exhibit cyclic permutation of key,
  threat, and mate (A -> B -> C -> A)."
---
try Tr (C) [!]
key K (A) [C]
where same_square(Tr, K), Tr.from != K.from
with -refutation_is_check -capture_try_piece
story "Djurasevic: Try 1.{Tr}? (threat 2.{C}#,
  refuted by 1...{a}!) and key 1.{K}! (threat 2.{A}#,
  1...{a} 2.{C}#) share destination {K.to} and transfer
  threat 2.{C}# into a variation mate."

# Cyclic Pseudo-Anti-Reversal

mate2::types::NamedTheme::CyclicPseudoAntiReversal

Cyclic pseudo anti-reversal across three phases: Try A (1...a 2.B#), Try B (1...b 2.C#), and Key C (1...c 2.A#).

Thema Pattern Specification (.thm)
try A [B _ _]
try B [_ C _]
key C [_ _ A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate
story "Cyclic pseudo-anti-reversal: Cyclic changed
  play across three phases (Try 1.{A}?, Try 1.{B}?, Key
  1.{C}!{threat_clause}) parrying reciprocal reversal."

# Pseudo-Cyclic Le Grand

mate2::types::NamedTheme::PseudoCyclicLeGrand

Cyclic permutation of threats and mates across three phases and three defenses: Try 1 threatens A (1...a 2.B#), Try 2 threatens B (1...b 2.C#), Key threatens C (1...c 2.A#).

Thema Pattern Specification (.thm)
try (A) [B _ _]
try (B) [_ C _]
key (C) [_ _ A]
subsumes ThreatKey, TransferredMates
story "Pseudo-Cyclic Le Grand: Cyclic transfer of threats
  and mates across Try 1.{Tr1}? (threat 2.{A}#),
  Try 1.{Tr2}? (threat 2.{B}#), and Key 1.{K}!
  (threat 2.{C}#)."

# Double Le Grand

mate2::types::NamedTheme::LegrandDouble

Double Le Grand: Try 1 threatens A (1...a 2.C#), Try 2 threatens B (1...b 2.C#), and Key threatens C (1...a 2.A#, 1...b 2.B#); or double threats AB and CD swap with mates C, D and A, B.

Thema Pattern Specification (.thm)
try (A) [C _]
try (B) [_ C]
key (C) [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Legrand, ThreatKey
story "Double Le Grand: Two distinct pairs of threats and
  variations reciprocally exchanged across tries 1.{Tr1}?,
  1.{Tr2}?, and key 1.{K}! (threat 2.{C}#, 1...{a} 2.{A}#,
  1...{b} 2.{B}#)."
---
try (AB) [C D _]
key (CD) [A B _]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Legrand, ThreatKey
story "Double Le Grand: Double threats (2.{A}#, 2.{B}#)
  and variation mates (2.{C}#, 2.{D}#) reciprocally
  exchange between Try 1.{Tr}? and Key 1.{K}!."

# Double Le Grand Condensed

mate2::types::NamedTheme::LegrandDoubleCondensed

Condensed double Le Grand: Try 1 threatens AB (refuted by a), Try 2 threatens A (1...a 2.B#), and Key threatens B (1...a 2.A#).

Thema Pattern Specification (.thm)
try (AB) [!]
try (A) [B]
key (B) [A]
subsumes Barnes, DoubleThreat, Legrand, ThreatKey
story "Double Le Grand Condensed: Compact reciprocal
  transfer between threats and mates across tries
  1.{Tr1}?, 1.{Tr2}?, and key 1.{K}! (threat 2.{B}#,
  1...{a} 2.{A}#)."

# Dombrovskis Cross-Closed 2

mate2::types::NamedTheme::DombrovskisCrossClosed2

Try threatens A (answers defense a with C and defense b with B); Key threatens B (answers defense a with A and defense b with D).

Thema Pattern Specification (.thm)
try (A) [C B]
key (B) [A D]
subsumes ChangedPlay, Isaev, PseudoLeGrand, ThreatKey
story "Dombrovskis Cross-Closed 2: Dual cross-closed
  reciprocal relations between try 1.{Tr}? (threat 2.{A}#,
  1...{a} 2.{C}#, 1...{b} 2.{B}#) and key 1.{K}!
  (threat 2.{B}#, 1...{a} 2.{A}#, 1...{b} 2.{D}#)."

# Dombrovskis Defense-Based

mate2::types::NamedTheme::DombrovskiDefenceBased

Defense-based Dombrovskis: Try 1 threatens A (1...a 2.C#), Try 2 threatens B (1...b 2.D#), and Key answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try (A) [C -]
try (B) [- D]
key [A B]
subsumes ChangedMate, TransferredMates
story "Dombrovskis Defense-Based: Try threats
  2.{A}# (1.{Tr1}?) and 2.{B}# (1.{Tr2}?) return as
  defensive mates after key 1.{K}!{threat_clause}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Ideal Hannelius

mate2::types::NamedTheme::IdealHannelius

Ideal Hannelius: Try 1 threatens A (refuted by a, 1...b 2.C#), Try 2 threatens B (1...a 2.D#, refuted by b), and Key answers defenses a and b with mates B and A.

Thema Pattern Specification (.thm)
try (A) [! C]
try (B) [D !]
key [B A]
subsumes DombrovskiDefenceBased, DombrovskisReciprocal,
  Makrava, Rudenko
story "Ideal Hannelius: Tries 1.{Tr1}? (threat 2.{A}#,
  refuted by 1...{a}!) and 1.{Tr2}? (threat 2.{B}#,
  refuted by 1...{b}!) have their threats reciprocated
  in the key 1.{K}!{threat_clause}: 1...{a} 2.{B}# and
  1...{b} 2.{A}#."

# Defense-Based Hannelius

mate2::types::NamedTheme::DefBasedHannelius

Defense-based Hannelius: Try 1 threatens A (1...a 2.C#), Try 2 threatens B (1...b 2.D#), and Key answers defenses a and b reciprocally with mates B and A.

Thema Pattern Specification (.thm)
try (A) [C _]
try (B) [_ D]
key [B A]
subsumes ChangedMate, TransferredMates
story "Defense-Based Hannelius: Reciprocated threat-mate
  transference across tries 1.{Tr1}?, 1.{Tr2}?,
  and key 1.{K}!{threat_clause}: 1...{a} 2.{B}# and
  1...{b} 2.{A}#."

# Zagoruiko Cyclic

mate2::types::NamedTheme::ZagoruikoCyclic

Cyclic change of mates across three phases against defenses a and b (A, B / B, C / C, A).

Thema Pattern Specification (.thm)
vir [A B]
try [B C]
key [C A]
subsumes ChangedPlay, TransferredMates
story "Zagoruiko Cyclic: Cyclic permutation of changed
  mates across three phases (tries 1.{Tr1}?, 1.{Tr2}?,
  and key 1.{K}!{threat_clause}) against defenses 1...{a}
  and 1...{b}."

# Lacny 2x4

mate2::types::NamedTheme::Lacny2x4

Cyclic shift of mates across four Black defenses a, b, c, d between two phases (A, B, C, D to B, C, D, A).

Thema Pattern Specification (.thm)
vir [A B C D]
key [B C D A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes FourChangedMates, Rukhlis, RukhlisCondensed
story "Lacny 2×4: Cyclic permutation of four checkmates
  across {phase1} and key 1.{K}!{threat_clause}:
  A -> B -> C -> D -> A against defenses 1...{a}, 1...{b},
  1...{c}, and 1...{d}."

# Dombrovskis-Lacny Complete

mate2::types::NamedTheme::DombroLacnyComplete

Complete 3-phase Dombrovskis-Lacny cycle: Try 1 threatens A (mates B, C), Try 2 threatens B (mates C, A), Key threatens C (mates A, B) against defenses a and b.

Thema Pattern Specification (.thm)
try (A) [B C]
try (B) [C A]
key (C) [A B]
subsumes Brabec3, CyclicLeGrand, DombroLacny, RiceCycle,
  ShedeyCycle, TwinThreatChange, Ukrainian,
  ZagoruikoCyclic
story "Dombrovskis-Lacny Complete: Full cyclic synthesis
  of Dombrovskis threats and Lacny mates across tries
  1.{Tr1}?, 1.{Tr2}?, and key 1.{K}! (threat 2.{C}#,
  defenses 1...{a} 2.{A}#, 1...{b} 2.{B}#)."

# Vladimirov Cross-Closed 2

mate2::types::NamedTheme::VladimirovCC2

Vladimirov cross-closed 2: Try A answers defense a with C and defense b with B; Key B answers defense a with A and defense b with D (or Try A mates B and Key B mates A).

Thema Pattern Specification (.thm)
try A [C B]
key B [A D]
story "Vladimirov Cross-Closed 2: Try 1.{A}? (1...{a}
  2.{C}#, 1...{b} 2.{B}#) and Key 1.{B}! (1...{a} 2.{A}#,
  1...{b} 2.{D}#) cross-answer the refutations."
---
try A [B]
key B [A]
subsumes ChangedMate
story "Vladimirov Cross-Closed 2: Try 1.{A}? (1...{a}
  2.{B}#) and Key 1.{B}! (1...{a} 2.{A}#) reciprocally
  exchange first and second moves."

# Vladimirov Ideal

mate2::types::NamedTheme::VladimirovIdeal

Ideal Vladimirov: Try A (refuted by a, 1...b 2.C#) and Try B (1...a 2.D#, refuted by b) reappear as variation mates A and B against defenses a and b in the Key.

Thema Pattern Specification (.thm)
try A [! C]
try B [D !]
key [A B]
subsumes ChangedMate, ReciprocalBanny
story "Vladimirov Ideal: White try moves 1.{A}?
  and 1.{B}? reappear as checkmates in the solution
  after key 1.{K}!{threat_clause}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Complex Banny

mate2::types::NamedTheme::ComplexBanny

Tries 1.A? and 1.B? feature a common variation mate X against two defenses, which the key answers reciprocally with 2.B# and 2.A#.

Thema Pattern Specification (.thm)
try A [X _]
try B [_ X]
key [B A]
subsumes ChangedMate
story "Complex Banny: Tries 1.{A}? and 1.{B}? feature
  common mate 2.{X}#; Key 1.{K}!{threat_clause} answers
  defenses 1...{a} with 2.{B}# and 1...{b} with 2.{A}#."

# Banny Ideal

mate2::types::NamedTheme::BannyIdeal

Ideal Banny: Try A (refuted by a, 1...b 2.C#) and Try B (1...a 2.D#, refuted by b) are answered reciprocally in the Key with 1...a 2.B# and 1...b 2.A#.

Thema Pattern Specification (.thm)
try A [! C]
try B [D !]
key [B A]
subsumes BannyInverted, ChangedMate
story "Banny Ideal: Tries 1.{A}? (refuted by 1...{a}!,
  allows 1...{b} 2.{C}#) and 1.{B}? (allows
  1...{a} 2.{D}#, refuted by 1...{b}!) are answered
  reciprocally after key 1.{K}!{threat_clause}:
  1...{a} 2.{B}# and 1...{b} 2.{A}#."

# Banny Inverted

mate2::types::NamedTheme::BannyInverted

Inverted Banny: Try A (refuted by defense a) and Try B (refuted by defense b) are answered reciprocally in a subsequent phase with 1...a 2.B# and 1...b 2.A#.

Thema Pattern Specification (.thm)
try A [! _]
try B [_ !]
+any [B A]
story "Banny Inverted: Tries 1.{A}? (refuted
  by 1...{a}!) and 1.{B}? (refuted by 1...{b}!) have
  inverted reciprocal replies in subsequent play:
  1...{a} 2.{B}# and 1...{b} 2.{A}#."

# Banny Inverted Cyclic

mate2::types::NamedTheme::BannyInvertedCyclic

Cyclic inverted Banny: Tries A, B, C (refuted by defenses a, b, c) are answered cyclically in the Key with mates B, C, A.

Thema Pattern Specification (.thm)
try A [! _ _]
try B [_ ! _]
try C [_ _ !]
key [B C A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Banny Inverted Cyclic: Three tries 1.{A}?,
  1.{B}?, 1.{C}? with individual refutations are
  answered cyclically after key 1.{K}!{threat_clause}:
  1...{a} 2.{B}#, 1...{b} 2.{C}#, 1...{c} 2.{A}#."

# Rukhlis Cyclic

mate2::types::NamedTheme::RukhlisCyclic

Cyclic Rukhlis transference across three phases and three defenses a, b, c: virtual play (A, B, _), Try (_, A, B), and Key (B, _, A).

Thema Pattern Specification (.thm)
vir [A B]
try [_ A B]
key [B _ A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec3, Rukhlis
story "Rukhlis Cyclic: Cyclic transference of mating
  replies across {phase1}, try 1.{Tr}?, and key
  1.{K}!{threat_clause}."

# Mäkihovi-Robert Cyclic

mate2::types::NamedTheme::MakihoviRobertCyclic

Cyclic Mäkihovi-Robert synthesis against defense a: Try 1 has triple mate ABC, Try 2 threatens A (mates B), Try 3 threatens B (mates C), Key threatens C (mates A).

Thema Pattern Specification (.thm)
try [ABC]
try (A) [B]
try (B) [C]
key (C) [A]
subsumes CyclicLeGrand, MakihoviRobert, Ukrainian
story "Mäkihovi-Robert Cyclic: Cyclic synthesis
  of Mäkihovi separation and Robert changed play across
  tries 1.{Tr1}?, 1.{Tr2}?, 1.{Tr3}?, and key 1.{K}!
  (threat 2.{C}#, defense 1...{a} 2.{A}#)."

# Cycle of Double Threats

mate2::types::NamedTheme::CycleDoubleThreats

Cyclic double threats across three phases: AB -> BC -> CA.

Thema Pattern Specification (.thm)
try (AB)
try (BC)
+any (CA)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DoubleThreat
story "Cycle of Double Threats: Three phases cyclically
  permute double threats: Try 1.{Tr1}? (2.{AB}#),
  Try 1.{Tr2}? (2.{BC}#), and 1.{K} (2.{CA}#)."

# Cycle of Multiple Threats

mate2::types::NamedTheme::CycleMultipleThreats

Cyclic multiple threats across three phases: ABC -> BCD -> CDA.

Thema Pattern Specification (.thm)
try (ABC)
try (BCD)
+any (CDA)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DoubleThreat
story "Cycle of Multiple Threats: Three phases cyclically
  permute triple threats: Try 1.{Tr1}? (2.{ABC}#),
  Try 1.{Tr2}? (2.{BCD}#), and 1.{K} (2.{CDA}#)."

# Odessa Cyclic

mate2::types::NamedTheme::OdessaCyclic

Cyclic Odessa across three phases: Try 1 threatens AB (mates C, D on a, b), Try 2 threatens CD (mates E, F on c, d), Key threatens EF (mates A, B on c, d).

Thema Pattern Specification (.thm)
try (AB) [C D _ _]
try (CD) [_ _ E F]
key (EF) [_ _ A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, KarlstromFleck, Rudenko
story "Odessa Cyclic: Cyclic transfer of threats
  to defensive mates across tries 1.{Tr1}?, 1.{Tr2}?,
  and key 1.{K}! (threat 2.{EF}#, 1...{c} 2.{A}#,
  1...{d} 2.{B}#)."
---
try (AB) [C D _ _ _ _]
try (CD) [_ _ E F _ _]
key (EF) [_ _ _ _ A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, KarlstromFleck, Rudenko
story "Odessa Cyclic: Cyclic transfer of threats
  to defensive mates across tries 1.{Tr1}?, 1.{Tr2}?,
  and key 1.{K}! (threat 2.{EF}#, 1...{e} 2.{A}#,
  1...{f} 2.{B}#)."

# Mai 2 Cyclic

mate2::types::NamedTheme::Mai2Cyclic

Cyclic Mai 2 across three phases: Try 1 threatens AB (dual mate CD on a), Try 2 threatens CD (dual mate EF on b), Key threatens EF (dual mate AB on b).

Thema Pattern Specification (.thm)
try (AB) [CD _]
try (CD) [_ EF]
key (EF) [_ AB]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Mai 2 Cyclic: Cyclic permutation of threats and
  mates across tries 1.{Tr1}?, 1.{Tr2}?, and key 1.{K}!
  (threat 2.{EF}#, defenses 2.{AB}#)."
---
try (AB) [CD _ _]
try (CD) [_ EF _]
key (EF) [_ _ AB]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Mai 2 Cyclic: Cyclic permutation of threats and
  mates across tries 1.{Tr1}?, 1.{Tr2}?, and key 1.{K}!
  (threat 2.{EF}#, defenses 2.{AB}#)."

# Reeves Cycle

mate2::types::NamedTheme::ReevessCycle

Cyclic permutation of threats and mates across three phases: Try 1 threatens A (1...a 2.B#), Try 2 threatens B (1...b 2.C#), Key threatens C (1...a 2.A#).

Thema Pattern Specification (.thm)
try (A) [B _]
try (B) [_ C]
key (C) [A _]
subsumes ChangedPlay, ThreatKey
story "Reeves cycle: Cyclic permutation of threats
  and mates across Try 1.{Tr1}? (2.{A}#), Try 1.{Tr2}?
  (2.{B}#), and Key 1.{K}! (2.{C}#)."

# Complete Djurasevic

mate2::types::NamedTheme::DurasevicComplete

Complete cyclic shift between phase moves, threats, and mates against defense a: Try A threatens B (mates C), Try B threatens C (mates A), Key C threatens A (mates B).

Thema Pattern Specification (.thm)
try A (B) [C]
try B (C) [A]
key C (A) [B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes CyclicLeGrand, Jurasevic, PseudoErokhin,
  Ukrainian, Urania, Volgograd, Zhuravlev
story "Complete Djurasevic: Full cycle of key, threat,
  and defensive mate across Try 1.{A}? (threat 2.{B}#),
  Try 1.{B}? (threat 2.{C}#), and Key 1.{C}!
  (threat 2.{A}#) against defense 1...{a}."

# Pseudo-Djurasevic

mate2::types::NamedTheme::PseudoDurasevic

Pseudo-Djurasevic shift across two phases: Try A threatens B (1...a 2.C#); subsequent phase plays B, threatens C (1...b 2.A#).

Thema Pattern Specification (.thm)
try A (B) [C _]
+any B (C) [_ A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ThreatAntiReversal, ThreatKey
story "Pseudo-Djurasevic: Transferred play across
  Try 1.{A}? (threat 2.{B}#, 1...{a} 2.{C}#) and 1.{B}
  (threat 2.{C}#, 1...{b} 2.{A}#)."

# Pseudo-Djurasevic Complete

mate2::types::NamedTheme::PseudoDurasevicComplete

Complete 3-phase pseudo-Djurasevic cycle: Try A threatens B (1...a 2.C#), Try B threatens C (1...b 2.A#), Key C threatens A (1...b 2.B#).

Thema Pattern Specification (.thm)
try A (B) [C _]
try B (C) [_ A]
key C (A) [_ B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Jurasevic, Urania, Zhuravlev
story "Pseudo-Djurasevic Complete: Complete cyclic
  transfer of mates across Try 1.{A}?, Try 1.{B}?,
  and Key 1.{C}! (threat 2.{A}#, 1...{b} 2.{B}#)."

# Erokhin Double

mate2::types::NamedTheme::ErokhinDouble

Double Erokhin reciprocal shift: Try A threatens B (answers defenses a, b with C, D); Key C threatens D (answers defenses a, b with B, A).

Thema Pattern Specification (.thm)
try A (B) [C D]
key C (D) [B A]
subsumes AntiReversal, ChangedPlay, Erokhin, Isaev,
  PseudoLeGrand, PseudoSalazar, ThreatKey, VladimirovCC2
story "Erokhin Double: Double reciprocal shift across
  Try 1.{A}? (threat 2.{B}#, defenses 1...{a} 2.{C}#,
  1...{b} 2.{D}#) and Key 1.{C}! (threat 2.{D}#,
  defenses 1...{a} 2.{B}#, 1...{b} 2.{A}#)."

# Erokhin

mate2::types::NamedTheme::Erokhin

Erokhin theme: Try B answers defense a with mate A; Key K threatens A and answers defense a with mate B (or Try threatens A and mates B, followed by phase move B mating A).

Thema Pattern Specification (.thm)
try B [A]
key K (A) [B]
with -refutation_is_check
story "Erokhin: Try 1.{B}? answers defense 1...{a} with
  2.{A}#; Key 1.{K}! threatens 2.{A}# and answers defense
  1...{a} with 2.{B}#."
---
try (A) [B]
+any B [A]
with -refutation_is_check -match_threat_count
  -capture_try_piece
story "Erokhin: Try 1.{Tr}? threatens 2.{A}# and answers
  1...{a} with 2.{B}#; subsequent phase plays 1.{B}! and
  answers 1...{a} with 2.{A}#."
---
try Tr (A) [B _]
key B [A Tr]
with -refutation_is_check -match_threat_count
  -capture_try_piece
subsumes ChangedMate
story "Erokhin: Try 1.{Tr}? (threat 2.{A}#,
  1...{a} 2.{B}#) leads to Key 1.{B}!, where 2.{A}# and
  2.{Tr}# appear as variation checkmates."

# Cyclic Refutations

mate2::types::NamedTheme::CyclicRefutations

Three tries are cyclically refuted by Black defenses a, b, c, all three of which are answered by mates A, B, C in the Key.

Thema Pattern Specification (.thm)
try [! _ _]
try [_ ! _]
try [_ _ !]
key [A* B* C*]
subsumes ChangedPlay, Makrava
story "Cyclic Refutations: Tries 1.{Tr1}?, 1.{Tr2}?,
  and 1.{Tr3}? are cyclically refuted by defenses
  1...{a}!, 1...{b}!, and 1...{c}!, resolved by key
  1.{K}!{threat_clause}: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."

# Cyclic Refutations Complete

mate2::types::NamedTheme::CyclicRefutationsComplete

Complete cyclic refutations across 3 tries—Try 1 (D, E, !), Try 2 (F, !, G), Try 3 (!, H, I)—resolved in the Key with mates A, B, C against defenses a, b, c.

Thema Pattern Specification (.thm)
try [D* E* !]
try [F* ! G*]
try [! H* I*]
key [A* B* C*]
subsumes ChangedPlay, CyclicRefutationsIncomplete, Makrava
story "Complete Cyclic Refutations: Tries 1.{Tr1}?,
  1.{Tr2}?, and 1.{Tr3}? with complete cyclic refutations
  across defenses 1...{a}!, 1...{b}!, and 1...{c}!,
  resolved by key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Cyclic Refutations Incomplete

mate2::types::NamedTheme::CyclicRefutationsIncomplete

Incomplete cyclic refutations across 3 tries—Try 1 (D, _, !), Try 2 (!, E, _), Try 3 (_, !, F)—resolved in the Key with mates A, B, C against defenses a, b, c.

Thema Pattern Specification (.thm)
try [D* _ !]
try [! E* _]
try [_ ! F*]
key [A* B* C*]
subsumes ChangedMate, CyclicRefutations
story "Incomplete Cyclic Refutations: Tries 1.{Tr1}?,
  1.{Tr2}?, and 1.{Tr3}? cyclically refuted across
  defenses 1...{a}!, 1...{b}!, and 1...{c}!,
  resolved by key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Dombrovsky

mate2::types::NamedTheme::Dombrovsky Alias: Dombrovskis

Spelling variant of Dombrovskis: tries threaten A and B (refuted by defenses a and b); Key answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try (A) [! _]
try (B) [_ !]
key [A B]
story "Dombrovsky: Changed play across defenses:
  1...{a} 2.{A}#, 1...{b} 2.{B}#"

# Zilahi

mate2::types::NamedTheme::Zilahi Alias: Zilahi theme

Cyclic sacrifice of White pieces in checkmating lines across phases.

Thema Pattern Specification (.thm)
def [a:x@B.from b:x@A.from]
key [A B]
where A.from != B.from, A != B
story "Zilahi: Key 1.{K}!{threat_clause} features
  reciprocal sacrifice and capture of the thematic mating
  pieces: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Caprice

mate2::types::NamedTheme::Caprice

Try threat X is refuted by defense a; Key neutralizes or deflects a's piece and realizes X as a variation mate.

Thema Pattern Specification (.thm)
try T (X) [! B?]
key K [A? X]
where (K.to == a.from || K.to == a.to || K.from == a.to
    || b.from == a.from)
story "Caprice: Try 1.{T}? (threat 2.{X}#) is refuted
  by 1...{a}!; Key 1.{K}!{threat_clause} neutralizes
  1...{a} and realizes 2.{X}# against 1...{b}."
---
try T (AB) [A B !]
key K (Z)
where same_piece(A, B),
  (same_piece(A, Z) || T.threat_count > 2)
with -match_threat_count -capture_try_piece
  -single_refutation
story "Caprice: Try 1.{T}? (threats 2.{A}#, 2.{B}#)
  separates its threats against 1...{a} and 1...{b},
  refuted by 1...{c}!."
---
try T (XY) [- -]
key K [X Y]
where T.threat_count == 2
with -match_threat_count -match_mate_count
story "Caprice: Try 1.{T}? (double threat 2.{X}#,
  2.{Y}#) realizes both threats as variation mates
  after Key 1.{K}!{threat_clause}: 1...{a} 2.{X}# and
  1...{b} 2.{Y}#."
---
try T (XY) [_ _]
key K [A B]
where T.threat_count == 2, a.to == X.to, b.to == Y.to
with -match_threat_count -match_mate_count
story "Caprice: Try 1.{T}? (double threat 2.{X}#, 2.{Y}#);
  after Key 1.{K}!{threat_clause}, defenses 1...{a} and
  1...{b} to the threat squares allow 2.{A}# and 2.{B}#."
---
try T [A B !]
key K [C D _]
where K.threat_count > 0
with -match_threat_count -match_mate_count
  -no_threats_few_replies -no_threats_sparse_mates
  -single_refutation
story "Caprice: Try 1.{T}? (1...{a} 2.{A}#,
  1...{b} 2.{B}#, refuted by 1...{c}!) is resolved
  with changed mates by Key 1.{K}!{threat_clause}:
  1...{a} 2.{C}# and 1...{b} 2.{D}#."
---
try Tr1 (X) [Y !]
try Tr2 (XY) [! _]
key K (Y) [X _]
where Tr1.threat_count == 1, Tr2.threat_count == 2
with -match_threat_count -match_mate_count
story "Caprice: Defense 1...{a} (answered by 2.{Y}#
  in Try 1.{Tr1}?) transfers to refute Try 1.{Tr2}?,
  and is met by 2.{X}# after Key 1.{K}! (threat 2.{Y}#)."
---
try Tr1 [A* !]
try Tr2 [! B*]
key K
where same_square(a, b), a.from != b.from,
  Tr1.threat_count > 0, Tr2.threat_count > 0
with -single_refutation -capture_try_piece
  -match_threat_count -match_mate_count
story "Caprice: Tries 1.{Tr1}? and 1.{Tr2}? are
  reciprocally answered and refuted by defenses 1...{a}
  and 1...{b} on {a.to}."

# Reciprocal Dombrovskis

mate2::types::NamedTheme::DombrovskisReciprocal

Two tries with threats A and B refuted by a and b; Try 1 answers b with mate B and Try 2 answers a with mate A.

Thema Pattern Specification (.thm)
try (A) [! B]
try (B) [A !]
key K
story "Reciprocal Dombrovskis: Tries 1.{Tr1}?
  (threat 2.{A}#, refuted by 1...{a}!, 1...{b} 2.{B}#)
  and 1.{Tr2}? (threat 2.{B}#, 1...{a} 2.{A}#,
  refuted by 1...{b}!) reciprocally answer each other's
  refutations before Key 1.{K}!{threat_clause}."

# Secondary Dombrovskis

mate2::types::NamedTheme::SecondaryDombrovskis

Secondary (defense-level) Dombrovskis: a Black piece's random move a allows general mate A in virtual play while correction move b avoids A; in a subsequent phase, correction move b is answered by mate A while random move a receives changed mate C.

Thema Pattern Specification (.thm)
vir [A _]
+any [C A]
where same_piece(a, b)
subsumes ChangedMate, TransferredMates
story "Secondary Dombrovskis: Random move 1...{a} allowed
  general mate 2.{A}# in {phase1} (while correction
  1...{b} avoided it); in {phase2}, correction 1...{b}
  is met by 2.{A}# while 1...{a} receives changed
  mate 2.{C}#."

# King's Le Grand

mate2::types::NamedTheme::KingsLeGrand

Le Grand or Pseudo-Le Grand reciprocal threat-mate transference where the thematic Black defense is a move of the Black King.

Thema Pattern Specification (.thm)
def [a:K]
try (A) [B]
key (B) [A]
subsumes KingFlight, Legrand, ThreatKey, TransferredMates
story "King's Le Grand: Reciprocal exchange of threats
  and mates against Black King flight 1...{a} across
  Try 1.{Tr}? (threat 2.{A}#, 1...{a} 2.{B}#) and
  Key 1.{K}! (threat 2.{B}#, 1...{a} 2.{A}#)."

# Soviet-French theme

mate2::types::NamedTheme::SovietFrench

Flight-giving key combined with Dombrovskis threat-refutation transference across two tries and the key.

Thema Pattern Specification (.thm)
try (A) [! _]
try (B) [_ !]
key K [A B]
where K.flights_given > 0
subsumes Dombrovskis, Dombrovsky, FlightGivingKey,
  TransferredMates
story "Soviet-French theme: Flight-giving
  Key 1.{K}!{threat_clause} resolves Dombrovskis tries
  1.{Tr1}? (threat 2.{A}#, refuted by 1...{a}!) and
  1.{Tr2}? (threat 2.{B}#, refuted by 1...{b}!) with
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Ukrainian

mate2::types::NamedTheme::Ukrainian Alias: Ukrainian theme

Three-phase cyclic shift between threats and mates against the same Black defense (Try 1 threatens A, mates B; Try 2 threatens B, mates C; Key threatens C, mates A).

Thema Pattern Specification (.thm)
try (A) [B]
try (B) [C]
key (C) [A]
subsumes ChangedPlay, ThreatKey, TransferredMates
story "Ukrainian theme: Three-phase cyclic
  exchange of threats and mates against 1...{a}:
  Try 1.{Tr1}? (threat 2.{A}#, 1...{a} 2.{B}#),
  Try 1.{Tr2}? (threat 2.{B}#, 1...{a} 2.{C}#),
  and Key 1.{K}! (threat 2.{C}#, 1...{a} 2.{A}#)."

# Cyclic Pseudo-Le Grand

mate2::types::NamedTheme::CyclicPseudoLeGrand

Tries threaten A (1...b 2.B#) and B (1...a 2.A#) individually and AB combined, while the Key threatens C and answers Black defenses a and b with A and B.

Thema Pattern Specification (.thm)
try (A) [- -]
try (B) [- -]
try (AB) [- -]
key (C) [A B]
subsumes Barnes, DoubleThreat, PseudoLeGrand, Rudenko,
  ThreatKey, TransferredMates
story "Cyclic Pseudo-Le Grand: Tries threatening 2.{A}#
  (1...{b} 2.{B}#), 2.{B}# (1...{a} 2.{A}#), and double
  threat 2.{AB}# culminate in Key 1.{K}! (threat 2.{C}#),
  transferring 2.{A}# and 2.{B}# to variations 1...{a}
  and 1...{b}."

# Anti-Dombrovskis

mate2::types::NamedTheme::AntiDombrovskis

Try 1 threatens A; Try 2 answers defense a with A; Key answers defense a with a changed mate C.

Thema Pattern Specification (.thm)
try (A) [B]
try (D) [A]
key (E) [C]
subsumes ChangedPlay, ThreatKey
story "Anti-Dombrovskis: Threat 2.{A}# from Try 1.{Tr1}?
  becomes the variation mate against 1...{a}
  in Try 1.{Tr2}?, before changing to 2.{C}# after
  Key 1.{K}! (threat 2.{E}#)."

# Anti-Le Grand

mate2::types::NamedTheme::AntiLeGrand

Try 1 threatens AB; Try 2 threatens B and answers defense b with A; Key threatens A, answers defense a with B, and answers defense b with changed mate C.

Thema Pattern Specification (.thm)
try (AB) [_ _]
try (B) [_ A]
key (A) [B C]
subsumes Barnes, ChangedPlay, DoubleThreat, Isaev,
  PseudoLeGrand, ThreatKey
story "Anti-Le Grand: Double threat 2.{AB}#
  in Try 1.{Tr1}? separates into threat 2.{B}# / mate
  2.{A}# in Try 1.{Tr2}?, while Key 1.{K}! threatens
  2.{A}#, meets 1...{a} with 2.{B}#, and meets 1...{b}
  with changed mate 2.{C}#."

# Cyclic Kiss

mate2::types::NamedTheme::KissCyclic

Three-phase cyclic Kiss where the threat in each phase equals a variation mate from the preceding phase.

Thema Pattern Specification (.thm)
try (A) [B _ _]
try (B) [_ C _]
key (C) [_ _ A]
subsumes ThreatKey, TransferredMates
story "Cyclic Kiss: Three-phase threat-mate cycle
  across Try 1.{Tr1}? (threat 2.{A}#, 1...{a} 2.{B}#),
  Try 1.{Tr2}? (threat 2.{B}#, 1...{b} 2.{C}#),
  and Key 1.{K}! (threat 2.{C}#, 1...{c} 2.{A}#)."

# Anti-Lacny

mate2::types::NamedTheme::AntiLacny

Three-phase cyclic shift of two mates A, B and a refutation across three Black defenses.

Thema Pattern Specification (.thm)
vir [A B !]
try [! A B]
try [B ! A]
key [C D E]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes RukhlisCyclic
story "Anti-Lacny: Cyclic shift of mates 2.{A}#,
  2.{B}# and refutations across 1...{a}, 1...{b},
  1...{c} in virtual play and Key 1.{K}!."

# Cyclic Threat Reversal

mate2::types::NamedTheme::CyclicThreatReversal

Three-phase cyclic Threat Reversal where threats A, B, C and variation mates B, C, A cycle across three distinct defenses.

Thema Pattern Specification (.thm)
try (A) [B _ _]
try (B) [_ C _]
key (C) [_ _ A]
subsumes ChangedPlay, KissCyclic, PseudoCyclicLeGrand
story "Cyclic Threat Reversal: Threats 2.{A}#, 2.{B}#,
  2.{C}# and variation mates cycle across 1...{a},
  1...{b}, 1...{c}."

# Double Dombrovskis

mate2::types::NamedTheme::DoubleDombrovskis Alias: 4-fold Dombrovskis

Four tries with distinct threats A, B, C, D refuted by a, b, c, d, all four threats appearing as variation mates after a, b, c, d in the key.

Thema Pattern Specification (.thm)
try (A) [! _ _ _]
try (B) [_ ! _ _]
try (C) [_ _ ! _]
try (D) [_ _ _ !]
key [A B C D]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, Dad, Dombrovskis, Dombrovsky
story "Double Dombrovskis: Four try threats (2.{A}#,
  2.{B}#, 2.{C}#, 2.{D}#) refuted by 1...{a}!, 1...{b}!,
  1...{c}!, 1...{d}! become the four variation mates after
  Key 1.{K}!{threat_clause}."

# Triple Hannelius

mate2::types::NamedTheme::TripleHannelius

Three tries with threats A, B, C refuted by a, b, c, answered in the key by the cyclic permutation B, C, A.

Thema Pattern Specification (.thm)
try (A) [! _ _]
try (B) [_ ! _]
try (C) [_ _ !]
key [B C A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Dad
story "Triple Hannelius: Try threats 2.{A}# (refuted
  by 1...{a}!), 2.{B}# (refuted by 1...{b}!),
  and 2.{C}# (refuted by 1...{c}!) cycle after
  Key 1.{K}!{threat_clause}: 1...{a} 2.{B}#,
  1...{b} 2.{C}#, 1...{c} 2.{A}#."

# Reciprocal Banny

mate2::types::NamedTheme::ReciprocalBanny

Tries 1.A? (refuted by a!) and 1.B? (refuted by b!) have their first moves appear reciprocally against a and b in the key.

Thema Pattern Specification (.thm)
try A [! _]
try B [_ !]
key [B A]
subsumes Vladimirov
story "Reciprocal Banny: Try moves 1.{A}? (refuted
  by 1...{a}!) and 1.{B}? (refuted by 1...{b}!)
  appear reciprocally after Key 1.{K}!{threat_clause}:
  1...{a} 2.{B}# and 1...{b} 2.{A}#."

# Reciprocal Vladimirov

mate2::types::NamedTheme::VladimirovReciprocal

Try 1.A? (refuted by a!, mating with B after b) and Try 1.B? (refuted by b!, mating with A after a) are united in the key with 1...a 2.A# and 1...b 2.B#.

Thema Pattern Specification (.thm)
try A [! B]
try B [A !]
key [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes MoscowTheme, PseudoSalazar, VladimirovIdeal
story "Reciprocal Vladimirov: Tries 1.{A}?
  (1...{b} 2.{B}#, refuted by 1...{a}!) and 1.{B}?
  (1...{a} 2.{A}#, refuted by 1...{b}!) unite after
  Key 1.{K}!{threat_clause}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Pseudo Erokhin

mate2::types::NamedTheme::PseudoErokhin

In Phase 1, White plays 1.A (threat 2.B#) with variation 1...a 2.C#; in Phase 2, White plays 1.C (threat 2.D#) with variation 1...a 2.B#.

Thema Pattern Specification (.thm)
try A (B) [C]
+any C (D) [B]
where distinct(A, B, C)
with -match_threat_count
subsumes Erokhin, TransferredMates
story "Pseudo Erokhin: Try 1.{A}? (threat 2.{B}#;
  1...{a} 2.{C}#) shifts into 1.{C} (threat 2.{D}#;
  1...{a} 2.{B}#)."

# Cyclic Herpai

mate2::types::NamedTheme::CyclicHerpai

Three Black defenses on the same square form a cycle of mates/refutations in tries and allow three distinct mates in the key.

Thema Pattern Specification (.thm)
try [A ! _]
try [_ B !]
key [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from)
subsumes ArrivalCorrection
story "Cyclic Herpai: On {a.to}, tries fail to 1...{b}!
  and 1...{c}! while Key 1.{K}! unites 1...{a} 2.{A}#,
  1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# Hermanson theme

mate2::types::NamedTheme::Hermanson Alias: Hermanson

Two tries and the Key share the same threat T while cyclically shifting mates A, B, C across defenses a and b (A, B / B, C / C, A).

Thema Pattern Specification (.thm)
try (T) [A B]
try (T) [B C]
key (T) [C A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec3, Lacny, RiceCycle, ZagoruikoCyclic
story "Hermanson theme: With common threat 2.{T}#, Try
  1.{Tr1}?, Try 1.{Tr2}?, and Key 1.{K}! cyclically shift
  2.{A}#, 2.{B}#, and 2.{C}# across 1...{a} and 1...{b}."

# Poltava theme

mate2::types::NamedTheme::Poltava Alias: Poltava

A try and a multi-flight-giving key by the same White piece produce changed mates against Black King flights and captures (Caprice + multi-flight key).

Thema Pattern Specification (.thm)
try Tr [A B]
key K [C D]
where same_piece(Tr, K), Tr.to != K.to,
  K.flights_given >= 2
subsumes ChangedPlay, FlightGivingKey
story "Poltava theme: Try 1.{Tr}? (2.{A}#, 2.{B}#) and
  multi-flight Key 1.{K}! (2.{C}#, 2.{D}#) by the same
  White {K.role} change the mates."

# Amazon theme

mate2::types::NamedTheme::Amazon Alias: Amazon

A try and the key exhibit a three-variation Lacny cyclic shift where all three thematic mates are delivered by the White Queen.

Thema Pattern Specification (.thm)
try [A:Q B:Q C:Q]
key [B C A]
where same_piece(A, B, C), distinct(A.to, B.to, C.to)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiCarousel, ChangedPlay, CounterCarousel
story "Amazon theme: White's Queen cyclically shifts
  three mates between Try 1.{Tr}? (1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#) and Key 1.{K}! (1...{a}
  2.{B}#, 1...{b} 2.{C}#, 1...{c} 2.{A}#)."

# Surkov-Slesarenko combination

mate2::types::NamedTheme::SurkovSlesarenko

Try 1.A? (threat 2.B#) answers defenses a and b with 2.C# and 2.D#; the key threatens (CD) and answers a and b with 2.A# and 2.B# (or reciprocal multi-phase combination of Erokhin, Le Grand, and Anti-Reversal).

Thema Pattern Specification (.thm)
try A (B) [C D]
try C (D) [A _]
key D (C) [_ B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiReversal, ChangedPlay, Isaev, Legrand,
  PseudoErokhin, PseudoLeGrand, Salazar, ThreatReversal,
  Urania
story "Surkov-Slesarenko combination: Try 1.{A}? (threat
  2.{B}#; 2.{C}#, 2.{D}#), Try 1.{C}? (threat 2.{D}#;
  2.{A}#), and Key 1.{D}! (threat 2.{C}#; 2.{B}#)."
---
try A (B) [C D]
key K (CD) [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiReversal, ChangedPlay, Erokhin, Legrand,
  PseudoErokhin, PseudoLeGrand, Rudenko
story "Surkov-Slesarenko combination:
  Try 1.{A}? (threat 2.{B}#; 1...{a} 2.{C}#,
  1...{b} 2.{D}#) and Key 1.{K}! (threats 2.{C}#, 2.{D}#;
  1...{a} 2.{A}#, 1...{b} 2.{B}#)."
---
try Tr (AB) [C D]
key C (D) [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes AntiReversal, ChangedPlay, Erokhin, Legrand,
  PseudoErokhin, PseudoLeGrand, Rudenko
story "Surkov-Slesarenko combination: Try 1.{Tr}? (threats
  2.{A}#, 2.{B}#; 1...{a} 2.{C}#, 1...{b} 2.{D}#) and Key
  1.{C}! (threat 2.{D}#; 1...{a} 2.{A}#, 1...{b} 2.{B}#)."

# Dombro-Zagoruiko

mate2::types::NamedTheme::DombroZagoruiko

Set play has mates C and D after defenses a and b; two tries threaten A and B (refuted by a and b respectively); the key answers a and b with A and B (combining Dombrovskis and 3-phase Zagoruiko).

Thema Pattern Specification (.thm)
vir [C D]
try (A) [! _]
try (B) [_ !]
key [A B]
subsumes ChangedPlay, Dombrovskis, Dombrovsky
story "Dombro-Zagoruiko: Set play (1...{a} 2.{C}#,
  1...{b} 2.{D}#) and Dombrovskis tries (threats 2.{A}#,
  2.{B}#) culminate in Key 1.{K}! (1...{a} 2.{A}#,
  1...{b} 2.{B}#)."

# Shedey-Lacny

mate2::types::NamedTheme::ShedeyLacny

A three-move cycle (A, B, C) between virtual play and the key where the threat and two defensive mates cyclically shift (Shedey cycle + Lacny).

Thema Pattern Specification (.thm)
vir (A) [B C]
key (B) [C A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Lacny, ShedeyCycle
story "Shedey-Lacny: Mates 2.{A}#, 2.{B}#,
  2.{C}# cycle across threat and defenses 1...{a},
  1...{b} between virtual play (threat 2.{A}#, 2.{B}#,
  2.{C}#) and Key 1.{K}! (threat 2.{B}#, 2.{C}#, 2.{A}#)."
---
vir [A B C]
key (A) [B C A]
subsumes Lacny, ShedeyCycle
story "Shedey-Lacny: Virtual mates 2.{A}#, 2.{B}#,
  2.{C}# shift after Key 1.{K}! (threat 2.{A}#) into
  1...{a} 2.{B}#, 1...{b} 2.{C}#, and 1...{c} 2.{A}#."

# Complete Shedey cycle

mate2::types::NamedTheme::CompleteShedeyCycle

Across two tries and the key, three White moves A, B, C form a complete cycle between threats and variation mates against two Black defenses.

Thema Pattern Specification (.thm)
try (A) [B C]
try (B) [C A]
key (C) [A B]
with -match_threat_count
subsumes Brabec3, Isaev, PseudoLeGrand, RiceCycle,
  ShedeyCycle, Ukrainian, ZagoruikoCyclic
story "Complete Shedey cycle: Threats and mates (2.{A}#,
  2.{B}#, 2.{C}#) cycle completely across Try 1.{Tr1}?,
  Try 1.{Tr2}?, and Key 1.{K}!."
Chapter Section · 71 Themes

05. Multi-Threat Separation & Named Try-Play Systems

Tries and keys featuring multiple simultaneous threats separated by defenses (Fleck, Barnes) and classical try-play composer themes.

# Barnes

mate2::types::NamedTheme::Barnes

Multiple threats AB in one phase T1 separated into individual threats A and B in phases T2 and T3.

Thema Pattern Specification (.thm)
+any T1 (AB)
+any T2 (A)
+any T3 (B)
with -refutation_is_check -capture_try_piece
  -single_refutation -flight_from_check -sparse_mates
  -few_replies
story "Barnes threat separation: Combined double threat
  2.{AB}# in one phase is separated into individual
  threats 2.{A}# and 2.{B}# in other phases after
  key 1.{key}!."

# Arnhem

mate2::types::NamedTheme::Arnhem

Try 1 answers defense a with mate A (refuted by b); Try 2 answers defense b with mate A (refuted by a); solved by Key K.

Thema Pattern Specification (.thm)
try [A !]
try [! A]
key K
story "Arnhem: Tries 1.{Tr1}? (1...{a} 2.{A}#, refuted
  by 1...{b}!) and 1.{Tr2}? (1...{b} 2.{A}#, refuted
  by 1...{a}!) reciprocate mate 2.{A}# and refutation,
  resolved by key 1.{K}!{threat_clause}."

# Kiss

mate2::types::NamedTheme::Kiss

Kiss theme: Try A answers defenses a and b with mates B and C; Key B answers defenses a and b with mates C and A.

Thema Pattern Specification (.thm)
try A [B C]
key B [C A]
with -match_threat_count -match_mate_count
subsumes ChangedMate, PseudoSalazar
story "Kiss: Cyclic change across try 1.{A}?
  (defenses 1...{a} 2.{B}#, 1...{b} 2.{C}#) and key
  1.{B}!{threat_clause} (defenses 1...{a} 2.{C}#,
  1...{b} 2.{A}#)."

# Mäkihovi

mate2::types::NamedTheme::Makihovi Alias: Makihovi

Defense dual separation across three phases: dual mate AB against defense a in virtual phase V is separated into mate A in Try Tr and mate B in Key K.

Thema Pattern Specification (.thm)
vir V [AB]
try Tr [A]
key K [B]
where A.from != V.to, B.from != V.to, A.from != Tr.to,
  B.from != K.to
subsumes ChangedPlay
story "Mäkihovi: Dual mate 2.{AB}# in {phase1} is
  separated into 2.{A}# in try 1.{Tr}? and 2.{B}# after
  key 1.{K}!{threat_clause} against defense 1...{a}."

# Robert

mate2::types::NamedTheme::RobertTheme

Robert theme: dual mate AB against defense a in a try is separated in the Key across defenses b and c as mates A and B (with mate C against a).

Thema Pattern Specification (.thm)
try [AB _ _]
key [C A B]
subsumes ChangedMate
story "Robert theme: Dual mate 2.{AB}# in try
  1.{Tr}? is separated across defenses after key
  1.{K}!{threat_clause}: 1...{a} 2.{C}#, 1...{b} 2.{A}#,
  1...{c} 2.{B}#."

# Žuk

mate2::types::NamedTheme::Zuk Alias: Zuk

Try has double threat AB refuted by defenses a and b; Key answers defenses with mates A and B.

Thema Pattern Specification (.thm)
try (AB) [! !]
key [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Rudenko
story "Žuk: Try 1.{Tr}? has double threat 2.{AB}# refuted
  by 1...{a}! and 1...{b}!; Key 1.{K}!{threat_clause}
  separates these threats into defensive mates:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Mochalkin

mate2::types::NamedTheme::Mochalkin

Mochalkin theme: Try has double threat AB (with mates C, D against defenses a, b); Key threatens C and answers defenses a, b with mates A, B.

Thema Pattern Specification (.thm)
try (AB) [C D]
key (C) [A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes RudenkoReversal, ThreatKey
story "Mochalkin: Try 1.{Tr}? carries double threat
  2.{AB}# (answered by 1...{a} 2.{C}# and 1...{b} 2.{D}#);
  Key 1.{K}! threatens 2.{C}# and converts the try
  threats into defensive mates: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Odessa

mate2::types::NamedTheme::Odessa

Try has double threat AB (with mates C, D against defenses a, b); Key threatens CD and transfers A, B into variation mates.

Thema Pattern Specification (.thm)
try (AB) [C D _ _]
key (CD) [_ _ A B]
subsumes KarlstromFleck, Rudenko, Shanshin,
  TransferredMates
story "Odessa: Try 1.{Tr}? carries double threat 2.{AB}#
  (defended by 1...{a} 2.{C}# and 1...{b} 2.{D}#); Key
  1.{K}! threatens 2.{CD}# and transfers the try threats
  to new defenses: 1...{c} 2.{A}# and 1...{d} 2.{B}#."
---
try (AB) [C D]
key (CD) [A B]
subsumes KarlstromFleck, Rudenko, Shanshin,
  TransferredMates
story "Odessa: Try 1.{Tr}? (double threat 2.{AB}#, 1...{a}
  2.{C}#, 1...{b} 2.{D}#) and Key 1.{K}! (double threat
  2.{CD}#, 1...{a} 2.{A}#, 1...{b} 2.{B}#) reciprocally
  exchange double threats and variation mates."

# Mate Transference

mate2::types::NamedTheme::MateTransference

Mate transference: checkmate A transfers across phases from a try threat or defense a to answer defense a or b in the Key.

Thema Pattern Specification (.thm)
set [!A]
try (A) [_]
key (T) [A!@a]
story "Mate transference: Mate 2.{A}# transferred
  from try play into Key 1.{K}! (threat 2.{T}#):
  defense 1...{a} met by 2.{A}#."
---
try Tr (A) [_]
key K (-) [A!@a]
where !(same_piece(Tr, K) && A.from == Tr.to),
  Tr.threat_count <= 2,
  (A.mate_count == 1 || a.self_block)
with -match_threat_count -match_mate_count
story "Mate transference: Try threat 2.{A}# becomes
  an actual checkmate against defense 1...{a}
  in the solution (Key 1.{K}!)."
---
set [A B]
key [C A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.opens_line() && b.opens_line()) || (A.slider
    && a.opens_line(WK) && b.opens_line(WK)) || (A.slider
    && !a.capture && !b.capture
    && collinear(a.from, a.to, b.to))))
story "Mate transference: Set-play mate against defense
  1...{a} transfers to answer 1...{b} in the solution:
  2.{A}# (Key 1.{K}!{threat_clause})."
---
vir [A C]
+any [B A]
where K.threat_count <= 1,
  !(same_piece(a, b) && (A.slider && !a.capture
    && !b.capture && collinear(a.from, a.to, b.to)))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Mate transference: Key 1.{K}!{threat_clause}.
  Mating reply 2.{A}# (against 1...{a}) is transferred
  to answer defense 1...{b}."
---
vir [A -]
+any [B A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.opens_line() && b.opens_line()) || (A.slider
    && a.opens_line(WK) && b.opens_line(WK)) || (A.slider
    && !a.capture && !b.capture
    && collinear(a.from, a.to, b.to))))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Mate transference: Key 1.{K}!{threat_clause}.
  Mating reply 2.{A}# (against 1...{a}) is transferred
  to answer defense 1...{b}."
---
vir [A B - -]
key [- - A B]
story "Mate transference: Mates 2.{A}# and 2.{B}#
  transfer from virtual play to answer 1...{c} and 1...{d}
  in the solution (Key 1.{K}!{threat_clause})."
---
set [A B - -]
key (XY) [C* D* A B]
where A != C, B != D
with -match_threat_count -match_mate_count
story "Mate transference: Set-play mates 2.{A}# and 2.{B}#
  against 1...{a} and 1...{b} transfer to answer 1...{c}
  and 1...{d} after Key 1.{K}!{threat_clause}."
---
set [A:P:= B:P:=]
key [C:P:= D:P:=]
where same_piece(A, B, C, D), A.promotion == D.promotion,
  B.promotion == C.promotion, A.promotion != B.promotion
with -match_mate_count
story "Mate transference: Set-play promotion mates
  2.{A}# and 2.{B}# against 1...{a} and 1...{b}
  reciprocally transfer after Key 1.{K}!{threat_clause}:
  1...{a} 2.{C}# and 1...{b} 2.{D}#."
---
vir [A -]
+any [- A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.capture == b.capture && a.opens_line()
    && b.opens_line()) || (A.slider && a.opens_line(WK)
    && b.opens_line(WK)) || (A.slider && !a.capture
    && !b.capture && collinear(a.from, a.to, b.to))))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Mate transference: Key 1.{K}!{threat_clause}.
  Mating reply 2.{A}# (against 1...{a}) is transferred
  to answer defense 1...{b}."
---
set [A -]
key [A* A]
where !same_piece(a, b), (a, b).role != 'K',
  K.threat_count <= 1, a.self_block, K.flights_given > 0
with -match_mate_count
story "Mate transference: Set-play mate 2.{A}# against
  1...{a} transfers to also answer 1...{b} after
  Key 1.{K}!{threat_clause}."

# Volgograd

mate2::types::NamedTheme::Volgograd

Volgograd theme: Try A threatens B and answers defense a with mate C; Key K threatens A and answers defense a with mate B.

Thema Pattern Specification (.thm)
try A (B) [C]
key K (A) [B]
subsumes ChangedMate, ThreatAntiReversal, ThreatKey
story "Volgograd: Cyclic shift between try 1.{A}?
  (threat 2.{B}#, defense 1...{a} 2.{C}#) and key 1.{K}!
  (threat 2.{A}#, defense 1...{a} 2.{B}#)."

# Lender Combination

mate2::types::NamedTheme::LenderCombination

Lender combination: Try A threatens B (answers defenses a, b with C, D); Key C threatens D (answers defenses a, b with A, B).

Thema Pattern Specification (.thm)
try A (B) [C D]
key C (D) [A B]
subsumes ChangedPlay, Legrand, Salazar, ThreatKey,
  TransferredMates, VladimirovCC2
story "Lender combination: Try 1.{A}? (threat 2.{B}#,
  defenses 1...{a} 2.{C}#, 1...{b} 2.{D}#) and Key 1.{C}!
  (threat 2.{D}#, defenses 1...{a} 2.{A}#, 1...{b} 2.{B}#)
  reciprocally exchange threats and mates."

# Dad

mate2::types::NamedTheme::Dad

Dad theme: threats A, B, C from three separate tries are united into variation mates A, B, C against defenses a, b, c in the Key.

Thema Pattern Specification (.thm)
try (A) [_ _ _]
try (B) [_ _ _]
try (C) [_ _ _]
key [A B C]
story "Dad: Three separate try threats 2.{A}# (1.{Tr1}?),
  2.{B}# (1.{Tr2}?), and 2.{C}# (1.{Tr3}?) are united into
  defensive checkmates after key 1.{K}!{threat_clause}:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Mäkihovi-Robert

mate2::types::NamedTheme::MakihoviRobert

Synthesis of Mäkihovi dual separation and Robert reciprocal play against defense a: Try 1 has dual mate AB, Try 2 threatens A (mates B), Key threatens B (mates A).

Thema Pattern Specification (.thm)
try [AB]
try (A) [B]
key (B) [A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Legrand, Makihovi, ThreatKey
story "Mäkihovi-Robert: Synthesis of Mäkihovi
  dual separation and Robert reciprocal play
  across tries 1.{Tr1}?, 1.{Tr2}? (threat 2.{A}#,
  defense 1...{a} 2.{B}#), and key 1.{K}! (threat 2.{B}#,
  defense 1...{a} 2.{A}#)."

# Burmistrov

mate2::types::NamedTheme::Burmistrov

Burmistrov theme against defense a: Try 1 threatens AB (mates C), Try 2 threatens C (mates A), Key threatens C (mates B) (or Key threatens AB and mates C).

Thema Pattern Specification (.thm)
try (AB) [C]
try (C) [A]
key (C) [B]
subsumes ChangedPlay, DoubleThreat, ThreatKey
story "Burmistrov: Tries 1.{Tr1}?, 1.{Tr2}?,
  and key 1.{K}! (threat 2.{C}#, defense 1...{a} 2.{B}#)
  coordinate changed threats and mates."
---
try (C) [A]
try (C) [B]
key (AB) [C]
subsumes ChangedPlay, DoubleThreat, ThreatKey
story "Burmistrov: Tries 1.{Tr1}? (threat 2.{C}#,
  1...{a} 2.{A}#), 1.{Tr2}? (threat 2.{C}#,
  1...{a} 2.{B}#), and key 1.{K}! (threats 2.{AB}#,
  1...{a} 2.{C}#) coordinate changed threats and mates."

# Mai 2

mate2::types::NamedTheme::Mai2

Mai 2 theme: Try threatens double threat AB (with dual mate CD against defense a); Key threatens CD (with dual mate AB against defense b).

Thema Pattern Specification (.thm)
try (AB) [CD _]
key (CD) [_ AB]
subsumes DoubleThreat
story "Mai 2: Try 1.{Tr}? (double threat 2.{AB}#,
  defenses 2.{CD}#) and key 1.{K}! (threat 2.{CD}#,
  defenses 2.{AB}#) exchange threats and mates."

# Brabec 1

mate2::types::NamedTheme::Brabec1

Brabec theme form 1 across defenses a and b: Try 1 (A, B), Try 2 (C, -), and Key (-, D).

Thema Pattern Specification (.thm)
try [A B]
try [C -]
key [- D]
subsumes ChangedPlay
story "Brabec 1: Changed play across tries 1.{Tr1}?,
  1.{Tr2}?, and key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{D}#."

# Brabec 2

mate2::types::NamedTheme::Brabec2

Brabec theme form 2 across defenses a, b, c, d: virtual play (A, B, -, -), Try (-, -, A, -), and Key (-, -, -, B).

Thema Pattern Specification (.thm)
vir [A B - -]
try [- - A -]
key [- - - B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes TransferredMates
story "Brabec 2: Mate transference across {phase1},
  try 1.{Tr}?, and key 1.{K}!{threat_clause}."

# Brabec 3

mate2::types::NamedTheme::Brabec3

Brabec theme form 3 across defenses a and b: Try 1 (A, B), Try 2 (_, A), and Key (B, _).

Thema Pattern Specification (.thm)
try [A B]
try [_ A]
key [B _]
subsumes ChangedPlay, TransferredMates
story "Brabec 3: Coordinated mate transference
  across tries 1.{Tr1}?, 1.{Tr2}?, and key
  1.{K}!{threat_clause}."

# Brabec 4

mate2::types::NamedTheme::Brabec4

Brabec theme form 4 across defenses a, b, c, d: virtual play (A, B, _, _), Try (C, _, A, _), and Key (_, D, _, B).

Thema Pattern Specification (.thm)
vir [A B _ _]
try [C _ A _]
key [_ D _ B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec1, TransferredMates
story "Brabec 4: Fourfold changed play across {phase1},
  try 1.{Tr}?, and key 1.{K}!{threat_clause}."

# Harkov

mate2::types::NamedTheme::Harkov

Try Tr (threat T) is refuted by two defenses a and b; Key (threat KThr) answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try Tr (T) [! !]
key (KThr) [A B]
where a.from != b.from, Tr.refutation_count == 2
story "Harkov: Try 1.{Tr}? (threat 2.{T}#)
  is refuted by both 1...{a}! and 1...{b}!;
  Key 1.{K}!{threat_clause} answers those defenses with
  distinct mates 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Pirrone

mate2::types::NamedTheme::Pirrone

Pirrone theme across defenses a, b, c, d: Try 1 (A, B, A, B), Try 2 (A, B, _), and Key (_, _, A, B).

Thema Pattern Specification (.thm)
try [A B A B]
try [A B _]
key [_ _ A B]
story "Pirrone: Recurring defenses and mates
  separated across tries 1.{Tr1}?, 1.{Tr2}?, and key
  1.{K}!{threat_clause}."

# Ricciardi

mate2::types::NamedTheme::Ricciardi

Ricciardi theme: Try 1 threatens A (refuted by b) and Try 2 threatens B (refuted by c); Key answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try (A) [_ ! _]
try (B) [_ _ !]
key [A B _ _]
story "Ricciardi: Tries 1.{Tr1}? and 1.{Tr2}?
  are refuted by defenses that allow mates after
  key 1.{K}!{threat_clause}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Tver

mate2::types::NamedTheme::Tver

Tver theme: double threats AB and CD from two tries are united into variation mates A, B, C, D against defenses a, b, c, d in the Key.

Thema Pattern Specification (.thm)
try (AB) [_ _ _]
try (CD) [_ _ _]
key [A B C D]
subsumes DoubleThreat, Rudenko
story "Tver: Double threats from tries 1.{Tr1}? (2.{AB}#)
  and 1.{Tr2}? (2.{CD}#) are united into defensive mates
  after key 1.{K}!{threat_clause}."

# Double Threat

mate2::types::NamedTheme::DoubleThreat

The Key or Try move creates two or more simultaneous mating threats.

Thema Pattern Specification (.thm)
key K
where K.threat_count >= 2
story "Double threat: Key 1.{K}! creates two or more
  simultaneous mating threats against the Black position."
---
try T (XY) [!]
key K
story "Double threat: Try 1.{T}? creates two
  simultaneous mating threats (2.{X}# and 2.{Y}#),
  refuted by 1...{a}!."

# Fleck

mate2::types::NamedTheme::Fleck Alias: Fleck theme

White threatens multiple checkmates (at least 3); Black defenses selectively separate each threat into a unique mate.

Thema Pattern Specification (.thm)
any (ABC) [A B C]
with -match_threat_count
story "Fleck theme: Key 1.{K}! threatens multiple
  checkmates 2.{ABC}#; Black defenses selectively
  separate each threat into a unique mate: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Threat key

mate2::types::NamedTheme::ThreatKey

The key move carries one or more direct threats of checkmate.

Thema Pattern Specification (.thm)
key K (X) [A]
where K.threat_count >= 1
story "Threat key: Key 1.{K}! introduces a direct threat
  2.{X}#, answered against 1...{a} by checkmate 2.{A}#."

# Ahues

mate2::types::NamedTheme::Ahues Alias: Ahues theme

Two tries share the same threat X and are refuted by distinct defenses a and b; after the key, defenses a and b allow mates A and B.

Thema Pattern Specification (.thm)
try (X) [! _]
try (X) [_ !]
key (_) [A B]
story "Ahues: Tries 1.{Tr1}? and 1.{Tr2}? (both
  threatening 2.{X}#, refuted by 1...{a}! and 1...{b}!)
  prepare Key 1.{K}!{threat_clause}, where the refutations
  become defenses allowing mates 2.{A}# and 2.{B}#."

# Sushkov

mate2::types::NamedTheme::Sushkov Alias: Sushkov theme

Reciprocal exchange of threats and variation mates between try and key across different Black defenses, or threat separation by moves to the same square.

Thema Pattern Specification (.thm)
try Tr (A) [B _]
key K (B) [_ A]
story "Sushkov: Try 1.{Tr}? (threat 2.{A}#,
  variation 1...{a} 2.{B}#) and Key 1.{K}! (threat 2.{B}#,
  variation 1...{b} 2.{A}#) reciprocally exchange threats
  and mates across different defenses."
---
try Tr (X)
key K (Y)
where same_square(Tr, K), Tr.from != K.from
with -match_threat_count -single_refutation
  -capture_try_piece -refutation_is_check
story "Sushkov: Try 1.{Tr}? (threat 2.{X}#) and Key 1.{K}!
  (threat 2.{Y}#) play to {K.to} with separated threats."
---
vir [A B - -]
key [- - A B]
story "Sushkov: Mates 2.{A}# and 2.{B}# against 1...{a}
  and 1...{b} in {phase1} are transferred to answer
  1...{c} and 1...{d} after Key 1.{K}!{threat_clause}."

# Moscow theme

mate2::types::NamedTheme::MoscowTheme Alias: Moscow theme I

Two Black defenses arriving on the same square individually refute two White tries and allow distinct checkmates after the key.

Thema Pattern Specification (.thm)
try [! _]
try [_ !]
key [A B]
where same_square(a, b), a.from != b.from
with -match_threat_count -match_mate_count
story "Moscow theme: Defenses 1...{a} and 1...{b}
  arriving on {a.to} individually refute tries 1.{Tr1}?
  and 1.{Tr2}?, and allow 2.{A}# and 2.{B}# after
  Key 1.{K}!{threat_clause}."
---
try Tr1 [A !]
try Tr2 [! B]
key K [A B]
where same_square(a, b) || (same_piece(a, b)
    && same_piece(Tr1, Tr2, K))
with -few_replies -sparse_mates -match_threat_count
  -match_mate_count
story "Moscow theme: Tries 1.{Tr1}? and 1.{Tr2}?
  show reciprocal defenses and refutations;
  Key 1.{K}!{threat_clause} delivers mates:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Transferred Mates

mate2::types::NamedTheme::TransferredMates Alias: Transferred mates

Checkmate A appearing in one phase (as a try threat or against defense a) transfers in a subsequent phase to answer defense a or b.

Thema Pattern Specification (.thm)
set [!A]
try (A) [_]
key (T) [A!@a]
story "Transferred mates: Mate 2.{A}# transferred
  from try play into Key 1.{K}! (threat 2.{T}#):
  defense 1...{a} met by 2.{A}#."
---
try Tr (A) [_]
key K (-) [A!@a]
where !(same_piece(Tr, K) && A.from == Tr.to),
  Tr.threat_count <= 2,
  (A.mate_count == 1 || a.self_block)
with -match_threat_count -match_mate_count
story "Transferred mates: Try threat 2.{A}# becomes
  an actual checkmate against defense 1...{a}
  in the solution (Key 1.{K}!)."
---
set [A B]
key K [C A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.opens_line() && b.opens_line()) || (A.slider
    && a.opens_line(WK) && b.opens_line(WK)) || (A.slider
    && !a.capture && !b.capture
    && collinear(a.from, a.to, b.to))))
story "Transferred mates: Set-play mate against defense
  1...{a} transfers to answer 1...{b} in the solution:
  2.{A}# (Key 1.{K}!{threat_clause})."
---
vir [A C]
+any K [B A]
where K.threat_count <= 1,
  !(same_piece(a, b) && (A.slider && !a.capture
    && !b.capture && collinear(a.from, a.to, b.to)))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Transferred mates: Mate 2.{A}# transfers
  from {phase1} (1...{a}) to answer defense 1...{b}
  in {phase2}."
---
vir [A -]
+any K [B A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.opens_line() && b.opens_line()) || (A.slider
    && a.opens_line(WK) && b.opens_line(WK)) || (A.slider
    && !a.capture && !b.capture
    && collinear(a.from, a.to, b.to))))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Transferred mates: Mate 2.{A}# transfers
  from {phase1} (1...{a}) to answer defense 1...{b}
  in {phase2}."
---
vir [A B - -]
key [- - A B]
story "Transferred mates: Mates 2.{A}# and 2.{B}#
  transfer from virtual play to answer 1...{c} and 1...{d}
  in the solution (Key 1.{K}!{threat_clause})."
---
set [A B - -]
key (XY) [C* D* A B]
where A != C, B != D
with -match_threat_count -match_mate_count
story "Transferred mates: Set-play mates 2.{A}# and 2.{B}#
  against 1...{a} and 1...{b} transfer to answer 1...{c}
  and 1...{d} after Key 1.{K}!{threat_clause}."
---
set [A:P:= B:P:=]
key [C:P:= D:P:=]
where same_piece(A, B, C, D), A.promotion == D.promotion,
  B.promotion == C.promotion, A.promotion != B.promotion
with -match_mate_count
story "Transferred mates: Set-play promotion mates
  2.{A}# and 2.{B}# against 1...{a} and 1...{b}
  reciprocally transfer after Key 1.{K}!{threat_clause}:
  1...{a} 2.{C}# and 1...{b} 2.{D}#."
---
vir [A -]
+any K [- A]
where K.threat_count <= 1,
  !(same_piece(a, b) && ((a.unguards(A) && b.unguards(A))
    || (a.capture == b.capture && a.opens_line()
    && b.opens_line()) || (A.slider && a.opens_line(WK)
    && b.opens_line(WK)) || (A.slider && !a.capture
    && !b.capture && collinear(a.from, a.to, b.to))))
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
story "Transferred mates: Mate 2.{A}# against 1...{a}
  in {phase1} transfers to answer defense 1...{b}
  in {phase2}."
---
set [A -]
key K [A* A]
where !same_piece(a, b), (a, b).role != 'K',
  K.threat_count <= 1, a.self_block, K.flights_given > 0
with -match_mate_count
subsumes MateTransference
story "Transferred mates: Set-play mate 2.{A}# against
  1...{a} transfers to also answer 1...{b} after
  Key 1.{K}!{threat_clause}."

# White combinations

mate2::types::NamedTheme::WhiteCombinations

Two or more White tries are individually refuted by distinct Black defenses a and b, which are answered by distinct checkmates in the key.

Thema Pattern Specification (.thm)
try Tr1 (X) [! _]
try Tr2 (Y*) [_ !]
key K (Z*) [A* B*]
where (X.to == Y.to && Y.to == Z.to) || (a.to == b.to
    && a.from != b.from)
with -match_threat_count -match_mate_count
  -refutation_is_check -single_refutation
  -capture_try_piece
story "White combinations: Tries 1.{Tr1}? (refuted
  by 1...{a}!) and 1.{Tr2}? (refuted by 1...{b}!)
  are resolved by Key 1.{K}!{threat_clause}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
try Tr1 [! _]
try Tr2 [_ !]
key K [A* B*]
where K.threat_count == 0
with -match_threat_count -match_mate_count
  -refutation_is_check -single_refutation
  -capture_try_piece
story "White combinations: Tries 1.{Tr1}? (refuted
  by 1...{a}!) and 1.{Tr2}? (refuted by 1...{b}!) are
  resolved by waiting Key 1.{K}!: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Kubbel cycle

mate2::types::NamedTheme::KubbelCycle Alias: Kubbel theme

Threefold circular square-to-square Umnov cycle across three variations: A.to == b.to, B.to == c.to, C.to == a.to.

Thema Pattern Specification (.thm)
key [A B C]
where A.to == b.to, B.to == c.to, C.to == a.to,
  distinct(A.to, B.to, C.to)
subsumes Stavrinides
story "Kubbel cycle: Threefold circular square-to-square
  Umnov cycle after Key 1.{K}!{threat_clause}:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# Kharkov 2

mate2::types::NamedTheme::Kharkov2 Alias: Kharkov II

Chained refutations across tries: Try 1 is refuted by a!; Try 2 answers a with mate A but is refuted by b!; Try 3 answers a with mate B; Key answers both a and b with changed mates C and D.

Thema Pattern Specification (.thm)
try [! E]
try [A !]
try [B _]
key [C D]
with -match_threat_count -match_mate_count
  -capture_try_piece -refutation_is_check
subsumes ChangedMate
story "Kharkov 2: Chained refutation progression across
  Try 1.{Tr1}? (refuted by 1...{a}!), Try 1.{Tr2}?
  (1...{a} 2.{A}#, refuted by 1...{b}!), Try 1.{Tr3}?
  (1...{a} 2.{B}#), and Key 1.{K}!{threat_clause} (1...{a}
  2.{C}#, 1...{b} 2.{D}#)."

# Barnes analog for secondary threats

mate2::types::NamedTheme::BarnesSecondary

Dual defensive mates AB against a defense in one phase are reciprocally separated across two defenses in two subsequent phases.

Thema Pattern Specification (.thm)
try [AB _]
try [A B]
key [B A]
with -match_mate_count
subsumes ChangedPlay, TransferredMates
story "Barnes analog for secondary threats:
  Dual mates 2.{AB}# in Try 1.{Tr1}? are reciprocally
  separated across Try 1.{Tr2}? (1...{a} 2.{A}#,
  1...{b} 2.{B}#) and Key 1.{K}!{threat_clause} (1...{a}
  2.{B}#, 1...{b} 2.{A}#)."

# Karlstrøm-Fleck

mate2::types::NamedTheme::KarlstromFleck Alias: Karlstrom-Fleck

Synthesis of Fleck and Karlstrøm themes: Key creates multiple threats while total defenses defeat all initial threats and force fresh non-threat checkmates A and B.

Thema Pattern Specification (.thm)
key (XY) [A B]
where (!A.recaptures(a) || !B.recaptures(b))
with -match_threat_count
subsumes DoubleThreat, Fleck
story "Karlstrøm-Fleck: Key 1.{K}! threatens multiple
  checkmates (2.{X}#, 2.{Y}#), while total defenses
  1...{a} and 1...{b} defeat all initial threats and force
  fresh checkmates 2.{A}# and 2.{B}#."

# Herpai

mate2::types::NamedTheme::Herpai Alias: Herpai theme

Two Black defenses move to the same square: in Try 1, defense a allows mate A while defense b refutes; in Try 2, defense b allows mate B while defense a refutes; in Key, defenses a and b allow mates A and B.

Thema Pattern Specification (.thm)
try [A !]
try [! B]
key [A B]
where same_square(a, b), a.from != b.from
with -single_refutation -capture_try_piece -sparse_mates
  -few_replies -match_threat_count -match_mate_count
subsumes DefencesOnSameSquare, Laitinen
story "Herpai theme: Defenses 1...{a} and 1...{b}
  to {a.to} reciprocally allow and refute mates
  in Tries 1.{Tr1}? and 1.{Tr2}?, before uniting
  after Key 1.{K}!{threat_clause}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Luukkonen

mate2::types::NamedTheme::Luukkonen Alias: Luukkonen theme

Multiple Black defenses arriving on the same square receive the identical mate X in virtual play; in the key, X becomes the threat while those defenses receive distinct new mates A and B.

Thema Pattern Specification (.thm)
vir [X X]
key (X) [A B]
where same_square(a, b), a.from != b.from
with -match_threat_count
subsumes ChangedMate, DefencesOnSameSquare, Laitinen
story "Luukkonen: Defenses 1...{a} and 1...{b} to {a.to}
  both allowed 2.{X}# in {phase1}; Key 1.{K}! makes
  2.{X}# the threat and separates the defenses into
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Sushkov analog for secondary threats

mate2::types::NamedTheme::SushkovSecondary

Double threat AB in Try 1 is separated into secondary mates A and B in Tries 2 and 3 (refuted by b! and a!), and united in the Key against a and b.

Thema Pattern Specification (.thm)
try (AB) [_ _]
try [A !]
try [! B]
key [A B]
subsumes DoubleThreat, MoscowTheme, Rudenko
story "Sushkov analog for secondary threats:
  Double threat 2.{AB}# in Try 1.{Tr1}? is separated
  as variation mates in Tries 1.{Tr2}? and 1.{Tr3}?,
  and united after Key 1.{K}!{threat_clause}:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Shanshin dual avoidance

mate2::types::NamedTheme::Shanshin Alias: Shanshin theme

Try threatens double threat AB and answers defense a with C; Key threatens DC and answers defense b with B.

Thema Pattern Specification (.thm)
try (AB) [C _]
key (DC) [_ B]
subsumes DoubleThreat, Isaev
story "Shanshin dual avoidance: Double threat 2.{AB}#
  and variation mate 2.{C}# in Try 1.{Tr}? reciprocally
  exchange places in Key 1.{K}! (double threat 2.{DC}#,
  variation 1...{b} 2.{B}#)."

# Block-to-threat change

mate2::types::NamedTheme::BlockThreatChange

Complete set-play block in the diagram position is disrupted by a threat-creating key that changes at least two set mates.

Thema Pattern Specification (.thm)
^set [A B]
^key (T) [C D]
where set_play_complete()
subsumes ChangedPlay, ThreatKey
story "Block-to-threat change: Complete set-play block
  (1...{a} 2.{A}#, 1...{b} 2.{B}#) is transformed
  by Threat Key 1.{K}! (threat 2.{T}#) into 1...{a} 2.{C}#
  and 1...{b} 2.{D}#."

# Threat-to-block key

mate2::types::NamedTheme::ThreatToBlock

A thematic try creates a threat, whereas the actual key is a waiting-move block that changes at least two mates.

Thema Pattern Specification (.thm)
^try (T) [A B]
^key K [C D]
where K.threat_count == 0
subsumes ChangedMate
story "Threat-to-block key: Threat Try 1.{Tr}?
  (threat 2.{T}#, 1...{a} 2.{A}#, 1...{b} 2.{B}#)
  yields to waiting-move Key 1.{K}! with changed mates
  1...{a} 2.{C}# and 1...{b} 2.{D}#."

# Double Threat Reversal

mate2::types::NamedTheme::DoubleThreatReversal

Try threatens double threat AB and answers defenses a and b with mate C; Key threatens C and answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try (AB) [C C _]
key (C) [A B _]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes LegrandDouble, ReciprocalZagoruiko, ShedeyCycle,
  TwinThreatChange
story "Double Threat Reversal: Try 1.{Tr}? threatens
  2.{A}# and 2.{B}# with 1...{a}/1...{b} 2.{C}#,
  reversed after Key 1.{K}! (threat 2.{C}#;
  1...{a} 2.{A}#, 1...{b} 2.{B}#)."

# Loshinsky magnet

mate2::types::NamedTheme::LoshinskyMagnet Alias: Magnet theme

A White line-piece moves along a line in the key, drawing a Black line-piece along that same line to two distinct squares.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
key K:Q|R|B [A B]
where same_piece(a, b), a.to != b.to,
  collinear(K.from, K.to, a.from),
  collinear(K.from, K.to, a.to),
  collinear(a.from, a.to, b.to)
story "Loshinsky magnet: White {K.role_name} key
  1.{K}!{threat_clause} draws Black's {a.role_name}
  on {a.from} along the line: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Kopaev theme

mate2::types::NamedTheme::Kopaev Alias: Kopaev

A White try move 1.Tr? is refuted by a Black move landing on the try piece's vacated origin square, which is then answered by mate in the key.

Thema Pattern Specification (.thm)
def [a]
try Tr [! _]
key [A B]
where a.to == Tr.from
story "Kopaev theme: Try 1.{Tr}? vacates {Tr.from}
  and is refuted by 1...{a}! occupying {Tr.from};
  Key 1.{K}!{threat_clause} answers 1...{a} with 2.{A}#."

# Theme G

mate2::types::NamedTheme::ThemeG Alias: Thema G

Two tries by a White pawn (one-step and two-step) fail to Black captures; the key captures with that pawn and turns those refutations into variations.

Thema Pattern Specification (.thm)
try Tr1:P (T) [! _]
try Tr2:P (T) [_ !]
key K:P:x (T) [A B]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to)
subsumes CaptureKey, Isaev, SchneiderInterference
story "Theme G: Pawn tries 1.{Tr1}? (1...{a}!) and
  1.{Tr2}? (1...{b}!) are resolved by capture key 1.{K}!,
  yielding 2.{A}# and 2.{B}#."

# Guidelli

mate2::types::NamedTheme::Guidelli Alias: Guidelli theme

White key moves a slider onto a line; moves of a Black Queen or slider along that line allow both recapture mates and a repeat mate by the key piece.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B c:Q|R|B]
key K:Q|R|B [A B A]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  A.from == K.to, B.to == b.to
story "Guidelli: Key 1.{K}!{threat_clause}.
  Moves of the Black {a.role} (1...{a}, 1...{b},
  1...{c}) allow 2.{A}# and capture mate 2.{B}#."

# Brogi

mate2::types::NamedTheme::Brogi Alias: Brogi theme

Two tries by the same White piece threaten single mates and are refuted by the same Black defense; the key by that piece threatens both mates (and more) simultaneously.

Thema Pattern Specification (.thm)
try Tr1 (A) [!]
try Tr2 (B) [!]
key K (AB) [C]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DoubleThreat, WhiteCorrection
story "Brogi: Tries 1.{Tr1}? (threat 2.{A}#) and 1.{Tr2}?
  (threat 2.{B}#) fail to 1...{a}!; Key 1.{K}! threatens
  both 2.{A}# and 2.{B}# and answers 1...{a} with 2.{C}#."

# Dentist theme

mate2::types::NamedTheme::Dentist

The White key piece moves to provoke a Black slider check and then mates by capturing the checking slider (and also mates after another move of that slider).

Thema Pattern Specification (.thm)
def [a:R|B|Q:+ b:R|B|Q]
key K [A:x@a B]
where same_piece(a, b), A.from == K.to, B.from == K.to
subsumes ProvokedCheck
story "Dentist theme: Key 1.{K}!{threat_clause} provokes
  1...{a} (answered by capture 2.{A}#) and 1...{b}
  (answered by 2.{B}#) with the key piece."

# Crimean theme

mate2::types::NamedTheme::Crimean

Three tries Tr1, Tr2, Tr3 by the same White piece are refuted by three different Black pieces capturing on the same square (defenses a, b, c); Key K moves that White piece so captures a, b, c allow mates A, B, C.

Thema Pattern Specification (.thm)
def [a:x b:x c:x]
try Tr1 [! _ _]
try Tr2 [_ ! _]
try Tr3 [_ _ !]
key K [A B C]
where same_piece(Tr1, Tr2, Tr3, K), same_square(a, b, c),
  distinct(a.from, b.from, c.from)
subsumes MoscowTheme, MultipleCaptures, WhiteCorrection
story "Crimean theme: Tries 1.{Tr1}?, 1.{Tr2}?, and
  1.{Tr3}? fail to captures on {a.to} (1...{a}!, 1...{b}!,
  1...{c}!); Key 1.{K}! answers them with 2.{A}#, 2.{B}#,
  and 2.{C}#."

# Zhuravlev theme

mate2::types::NamedTheme::Zhuravlev Alias: Zhuravlev combination

In Phase 1, White plays 1.C? with double threat (2.A#, 2.B#); in Phase 2, White plays 1.B! threatening 2.C# with variation mate 1...a 2.A#.

Thema Pattern Specification (.thm)
try C (AB)
+any B (C) [A]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Zhuravlev theme: Try 1.{C}? (threats 2.{A}#,
  2.{B}#) reverses into 1.{B} (threat 2.{C}#;
  1...{a} 2.{A}#)."
---
try A (B) [_]
try B (C) [A]
key K (A) [B]
where distinct(A, B, K)
with -match_threat_count
story "Zhuravlev theme: Moves {A} and {B} cycle across
  Try 1.{A}? (threat 2.{B}#), Try 1.{B}? (1...{a} 2.{A}#),
  and Key 1.{K}! (threat 2.{A}#; 1...{a} 2.{B}#)."

# Papack cycle

mate2::types::NamedTheme::PapackCycle

Three White moves A, B, C cycle between double-threat components and variation mate across a try and the key: Try threatens (AB) with 1...a 2.C#; Key threatens (BC) with 1...a 2.A#.

Thema Pattern Specification (.thm)
try (AB) [C]
key (BC) [A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate, DoubleThreat
story "Papack cycle: Try 1.{Tr}? (threats 2.{A}#, 2.{B}#;
  1...{a} 2.{C}#) cycles into Key 1.{K}! (threats 2.{B}#,
  2.{C}#; 1...{a} 2.{A}#)."

# One-line Herpai

mate2::types::NamedTheme::OneLineHerpai

Two Black pieces moving to the same square force mates A and B in set play (with dual avoidance) and changed mates C and D after the key.

Thema Pattern Specification (.thm)
vir [A B]
key K [C D]
where same_square(a, b), a.from != b.from,
  (K.threat_count > 0 || (!between(a.from, C.from, C.to)
    && !between(b.from, D.from, D.to)))
subsumes ChangedPlay, DefencesOnSameSquare, Laitinen
story "One-line Herpai: On {a.to}, defenses 1...{a}
  and 1...{b} change from virtual mates 2.{A}#/2.{B}#
  to 2.{C}#/2.{D}# after Key 1.{K}!."

# Zarur theme

mate2::types::NamedTheme::Zarur Alias: Zarur

Virtual play has mates A and B after defenses a and b; tries Tr1 (mates C on a, refuted by b) and Tr2 (refuted by a, mates D on b) by the same White piece each change one mate; Key K changes both to E and F.

Thema Pattern Specification (.thm)
vir [A B]
try Tr1 [C !]
try Tr2 [! D]
key K [E F]
where same_piece(Tr1, Tr2)
subsumes ChangedPlay, Makrava
story "Zarur theme: Set play (2.{A}#, 2.{B}#),
  Tries 1.{Tr1}? (1...{a} 2.{C}#; 1...{b}!) and
  1.{Tr2}? (1...{b} 2.{D}#; 1...{a}!), and Key 1.{K}!
  (2.{E}#, 2.{F}#)."

# Fokin

mate2::types::NamedTheme::Fokin Alias: Fokin theme

Three tries Tr1, Tr2, Tr3 (threatening T) to square K.to are refuted by Black defenses a, b, c to the same square; Key K (threatening T) answers a, b, c with mates A, B, C by those three try pieces.

Thema Pattern Specification (.thm)
try Tr1 (T) [! _ _]
try Tr2 (T) [_ ! _]
try Tr3 (T) [_ _ !]
key K (T) [A B C]
where same(Tr1.to, Tr2.to, Tr3.to, K.to),
  same(a.to, b.to, c.to), same_piece(Tr1, A),
  same_piece(Tr2, B), same_piece(Tr3, C)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DefencesOnSameSquare, PlayOnSameSquare
story "Fokin: Three tries 1.{Tr1}?, 1.{Tr2}?, 1.{Tr3}?
  to {K.to} fail to defenses 1...{a}!, 1...{b}!, 1...{c}!
  on {a.to}; Key 1.{K}! answers them with mates 2.{A}#,
  2.{B}#, 2.{C}# by those three try pieces."

# Neva theme

mate2::types::NamedTheme::Neva Alias: Neva

Three tries threaten mates A, B, C (all refuted by defense r); in the Key, captures a, b, c by the same Black piece on three distinct squares allow mates A, B, C.

Thema Pattern Specification (.thm)
def [r a:x b:x c:x]
try (A) [! _ _ _]
try (B) [! _ _ _]
try (C) [! _ _ _]
key [_ A B C]
where same_piece(a, b, c), distinct(a.to, b.to, c.to)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Neva theme: Three tries with threats 2.{A}#,
  2.{B}#, 2.{C}# (all refuted by 1...{r}!) lead
  to Key 1.{K}!, where captures 1...{a}, 1...{b}, 1...{c}
  by the same Black piece allow 2.{A}#, 2.{B}#, 2.{C}#."

# Munich theme

mate2::types::NamedTheme::Munich Alias: Munich

Three tries by the same White slider with the same threat are each refuted by a different Black piece (R, B, N); the key by that slider solves.

Thema Pattern Specification (.thm)
try Tr1 (T) [! _ _]
try Tr2 (T) [_ ! _]
try Tr3 (T) [_ _ !]
key K (T) [A B C]
where same_piece(Tr1, Tr2, Tr3, K), K.slider,
  distinct(a.from, b.from, c.from)
subsumes Isaev, ThreatKey, WhiteCorrection
story "Munich theme: Slider tries 1.{Tr1}? (1...{a}!),
  1.{Tr2}? (1...{b}!), and 1.{Tr3}? (1...{c}!) with threat
  2.{T}# are solved by 1.{K}!."

# Kontrawechsel

mate2::types::NamedTheme::Kontrawechsel

Two tries are refuted by the one-step and two-step advances of the same Black pawn; the key threatens two mates and answers those pawn advances with mates on the same square.

Thema Pattern Specification (.thm)
def [a:P b:P]
try Tr1 [! _]
try Tr2 [_ !]
key K (XY) [A B]
where same_piece(a, b), a.to != b.to, A.from != B.from,
  A.to == B.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Barulin, KarlstromFleck
story "Kontrawechsel: Tries 1.{Tr1}? (1...{a}!)
  and 1.{Tr2}? (1...{b}!) are solved by Key 1.{K}!
  (threats 2.{X}#, 2.{Y}#), answering 1...{a} 2.{A}# and
  1...{b} 2.{B}# on {A.to}."

# Adabashev synthesis

mate2::types::NamedTheme::Adabashev

Two tries by the same White piece share a primary threat A while introducing secondary threats B and C (refuted by a and b); the key reverses or unites those moves.

Thema Pattern Specification (.thm)
try Tr1 (AB) [! _]
try Tr2 (AC) [_ !]
key [B C]
where same_piece(Tr1, Tr2)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DoubleThreat
story "Adabashev synthesis: Double-threat tries 1.{Tr1}?
  (2.{A}#, 2.{B}#; 1...{a}!) and 1.{Tr2}? (2.{A}#, 2.{C}#;
  1...{b}!) are united in Key 1.{K}!: 1...{a} 2.{B}# and
  1...{b} 2.{C}#."

# Bogdanov-Rychkov

mate2::types::NamedTheme::BogdanovRychkov

Tries Tr1 (threatening XYZ, refuted by a) and Tr2 (threatening XY, refuted by b) and Key K (threatening X) by the same White piece progressively reduce the threats, with Key K answering defenses a and b with Z and Y.

Thema Pattern Specification (.thm)
try Tr1 (XYZ) [! _]
try Tr2 (XY) [_ !]
key K (X) [Z Y]
where same_piece(Tr1, Tr2, K)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DoubleThreat
story "Bogdanov-Rychkov: Progressive threat reduction
  by 1.{Tr1}? (threats 2.{X}#, 2.{Y}#, 2.{Z}#; 1...{a}!),
  1.{Tr2}? (threats 2.{X}#, 2.{Y}#; 1...{b}!), and Key
  1.{K}! (threat 2.{X}#; 1...{a} 2.{Z}#, 1...{b} 2.{Y}#)."

# Burkhardt mate

mate2::types::NamedTheme::BurkhardtMate Alias: Burkhardt

The key threatens at least four mates by the same White Rook or Bishop moving along its orthogonal/diagonal rays, separated by Black defenses.

Thema Pattern Specification (.thm)
key (ABCD) [A:R|B B:R|B C:R|B D:R|B]
where same_piece(A, B, C, D),
  distinct(A.to, B.to, C.to, D.to)
with -match_threat_count
subsumes BatteryMate, BatteryPlay, KarlstromFleck
story "Burkhardt mate: Key 1.{K}! threatens four
  {A.role} mates (2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#),
  separated by 1...{a}, 1...{b}, 1...{c}, and 1...{d}."

# Total Fleck

mate2::types::NamedTheme::TotalFleck

The key threatens three distinct mates, and three moves by the same Black defender individually force each of the three threats as the unique checkmate.

Thema Pattern Specification (.thm)
key (ABC) [A B C]
where same_piece(a, b, c), distinct(a.to, b.to, c.to)
with -match_threat_count
subsumes DoubleThreat, Fleck
story "Total Fleck: Key 1.{K}! threatens 2.{A}#, 2.{B}#,
  and 2.{C}#; moves of a single Black {a.role} (1...{a},
  1...{b}, 1...{c}) force each threat in turn."

# Seneca theme

mate2::types::NamedTheme::Seneca Alias: Gosman-Seneca

Three checking tries A, B, C by the same White piece are refuted by three Black King flights a, b, c; after Key K, Black defenses d, e, f to those same squares (a.to, b.to, c.to) allow A, B, C as variation mates.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d e f]
try A:+ [! _ _ _ _ _]
try B:+ [_ ! _ _ _ _]
try C:+ [_ _ ! _ _ _]
key K [_ _ _ A B C]
where same_piece(A, B, C), distinct(A.to, B.to, C.to),
  a.to == d.to, b.to == e.to, c.to == f.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes WhiteCorrection
story "Seneca theme (Gosman-Seneca): Checking tries 1.{A}?
  (1...{a}!), 1.{B}? (1...{b}!), and 1.{C}? (1...{c}!)
  become mates 2.{A}#, 2.{B}#, 2.{C}# after 1...{d},
  1...{e}, 1...{f} following Key 1.{K}!."

# Fastosky theme

mate2::types::NamedTheme::Fastosky Alias: Fastosky

In virtual play, two Black sliders capturing on the same square (defenses a and b) allow mates A and B; the Key changes the mates after captures a and b to C and D and adds Black King capture c on that same square allowing mate E.

Thema Pattern Specification (.thm)
def [a:R|B:x b:R|B:x c:K:x]
vir [A B _]
key [C D E]
where same_square(a, b, c), a.from != b.from
subsumes FlightCapture, MultipleCaptures, OneLineHerpai,
  SomovA
story "Fastosky theme: Set captures 1...{a} 2.{A}#
  and 1...{b} 2.{B}# on {a.to} change after Key 1.{K}!
  to 2.{C}# and 2.{D}#, with added King capture
  1...{c} 2.{E}#."

# Kubbel chain

mate2::types::NamedTheme::KubbelChain

Three tries by the same White slider along a line are refuted by a Black slider following it step-by-step onto the vacated or adjacent squares along that line (Loshinsky magnet chain).

Thema Pattern Specification (.thm)
try Tr1 [! _ _]
try Tr2 [_ ! _]
try Tr3 [_ _ !]
key K [A _ _]
where same_piece(Tr1, Tr2, Tr3, K), K.slider,
  same_piece(a, b, c), a.slider, a.to == Tr1.from,
  b.to == Tr1.to, c.to == Tr2.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes LoshinskyMagnet
story "Kubbel chain: White slider tries 1.{Tr1}?,
  1.{Tr2}?, 1.{Tr3}? are shadowed step-by-step by
  1...{a}!, 1...{b}!, 1...{c}! before Key 1.{K}! solves."

# Kubbel theme

mate2::types::NamedTheme::KubbelTheme

Two tries A and B by the same White piece are reciprocally refuted by defenses a and b landing on each other's destination squares (A.to == b.to, B.to == a.to); Key K answers defenses a and b with mates A and B.

Thema Pattern Specification (.thm)
try A [! _]
try B [_ !]
key K [A B]
where same_piece(A, B), A.to == b.to, B.to == a.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Kubbel theme: White tries 1.{A}? and 1.{B}? are
  reciprocally refuted by Black moves 1...{a}! (to {B.to})
  and 1...{b}! (to {A.to}), then become variation mates
  after Key 1.{K}!."

# Larsen Task

mate2::types::NamedTheme::LarsenTask Alias: Baltic theme

A sacrificial key is captured on its arrival square by three distinct Black pieces, and all three resulting checkmates are delivered on the exact same square by three different White moves.

Thema Pattern Specification (.thm)
def [a:x@K b:x@K c:x@K]
key K [A B C]
where distinct(a.from, b.from, c.from),
  same_square(A, B, C)
subsumes TripleSacrificeKey
story "Larsen Task (Baltic theme): Key 1.{K}! sacrifices
  on {K.to}; captures 1...{a}, 1...{b}, and 1...{c} are
  answered on the same square {A.to} by 2.{A}#, 2.{B}#,
  and 2.{C}#."

# Nesic theme

mate2::types::NamedTheme::Nesic Alias: Nesic

Two tries Tr1 and Tr2 by different White pieces to the same square fail to defenses a and b; a third White piece moves to that same square as Key K and changes the virtual mates A and B after a and b to C and D.

Thema Pattern Specification (.thm)
vir [A B]
try Tr1 [! _]
try Tr2 [_ !]
key K [C D]
where same_square(Tr1, Tr2, K),
  distinct(Tr1.from, Tr2.from, K.from)
subsumes ChangedPlay, Sushkov
story "Nesic theme: Three White pieces occupy {K.to}—Tries
  1.{Tr1}? (1...{a}!) and 1.{Tr2}? (1...{b}!) fail, while
  Key 1.{K}! changes set play (2.{A}#, 2.{B}#) to 2.{C}#
  and 2.{D}#."

# Ellerman-Mäkihovi

mate2::types::NamedTheme::EllermanMakihovi

Set-play dual mate AB against defense a is separated into mate A in a try (refuted by defense b) and mate B in the Key.

Thema Pattern Specification (.thm)
set [AB _]
try [A !]
key [B _]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate
story "Ellerman-Mäkihovi: Set-play dual
  1...{a} 2.{A}#/2.{B}# is separated into 1...{a} 2.{A}#
  after Try 1.{Tr}? (refuted by 1...{b}!) and
  1...{a} 2.{B}# after Key 1.{K}!."

# Anti-Moscow theme

mate2::types::NamedTheme::AntiMoscow

Two tries with different threats are refuted by two Black defenses that open and close lines (Moscow defenses as try refutations), which are answered in the key.

Thema Pattern Specification (.thm)
try (X) [! _]
try (Y) [_ !]
key (Z) [A B]
where a.opens_line(), b.opens_line(),
  (a.closes_line() || a.self_block),
  (b.closes_line() || b.self_block)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes MoscowTheme, ThreatKey
story "Anti-Moscow theme: Tries 1.{Tr1}? (threat 2.{X}#;
  1...{a}!) and 1.{Tr2}? (threat 2.{Y}#; 1...{b}!) fail to
  line-opening/closing defenses, overcome by Key 1.{K}!."

# Reciprocal Kopaev

mate2::types::NamedTheme::KopaevReciprocal

Across two phases, two Black defenses that open and close lines reciprocally exchange their allowed mates.

Thema Pattern Specification (.thm)
vir [A B]
key [B A]
where (a.opens_line() || b.opens_line()),
  (a.closes_line() || b.closes_line())
subsumes LineClosure, ReciprocalChange, SelfInterference
story "Reciprocal Kopaev: Line-opening/closing defenses
  1...{a} and 1...{b} reciprocally exchange mates 2.{A}#
  and 2.{B}# after Key 1.{K}!."

# Volgograd double

mate2::types::NamedTheme::VolgogradDouble

Try 1.A? threatens BC and answers defense a with mate D (refuted by b); Key 1.B! threatens AD and answers defense a with mate C (doubled Volgograd).

Thema Pattern Specification (.thm)
try A (BC) [D !]
key B (AD) [C _]
where distinct(A, B, C, D)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, ThreatKey
story "Volgograd double: Try 1.{A}? (threats 2.{B}#,
  2.{C}#; 1...{a} 2.{D}#) and Key 1.{B}! (threats 2.{A}#,
  2.{D}#; 1...{a} 2.{C}#) exchange first moves, threats,
  and mates."
Chapter Section · 67 Themes

06. Phase Changes, Transferences & Changed Play

Changes of checkmate against the same defense across phases (Zagoruiko, Rukhlis, Bikos, Reciprocal Change, Transferred Mates, Mutate).

# Albino

mate2::types::NamedTheme::Albino

A White Pawn on its initial square (rank 2) executes all 4 possible pawn moves across mating variations, threats, or phases.

Thema Pattern Specification (.thm)
any [A:P B:P C:P D:P]
where pawn_quartet(A, B, C, D)
with -match_mate_count
story "Albino: Key 1.{K}!{threat_clause} The White
  pawn on {A.from} charts all four compass directions
  to deliver checkmate: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#"
---
any (A:P) [B:P C:P D:P]
where pawn_quartet(A, B, C, D)
with -match_mate_count
story "Albino: The White pawn on {A.from} charts all four
  compass directions across threat 2.{A}# and variations
  2.{B}#, 2.{C}#, 2.{D}#"
---
any A:P
any B:P
any C:P
any D:P
where pawn_quartet(A, B, C, D)
with -single_refutation -sparse_mates -few_replies
  -capture_try_piece -match_threat_count
story "Albino: The White pawn on {A.from} executes
  all four compass moves across phases: 1.{A}, 1.{B},
  1.{C}, 1.{D}"
---
try [A:P _ _ _]
try [_ B:P _ _]
try [_ _ C:P _]
key [_ _ _ D:P]
where pawn_quartet(A, B, C, D)
with -match_mate_count
story "Albino: The White pawn on {A.from} charts
  all four compass directions across tries and key:
  2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#"

# Stocchi

mate2::types::NamedTheme::Stocchi Alias: Stocchi correction

Three or more Black defenses close the same square (self-block), or cross-correction/multi-phase Stocchi blocks.

Thema Pattern Specification (.thm)
any [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from), (a, b, c).role != 'K',
  (a, b, c).flight_block,
  (a.self_block || b.self_block || c.self_block
    || (a.capture && b.capture && c.capture))
story "Stocchi blocks: Key 1.{K}!{threat_clause}.
  Three Black defenses close {a.to}, each met
  by a distinct checkmate: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."
---
key K [A A B B B]
where A != B, same_piece(a, b, c), same_piece(d, e),
  (a, d).role != 'K',
  (a.from != d.from || (collinear(a.from, a.to, b.to)
    && collinear(a.from, a.to, c.to)
    && collinear(d.from, d.to, e.to)
    && !collinear(a.from, a.to, d.to))),
  !(K.threat_count == 0 && guards(c.from, A.to)
    && guards(c.to, A.to))
story "Stocchi correction: Key 1.{K}!{threat_clause}.
  The defense 1...{c} (correction for the {a.piece}
  on {a.from}, general mate 2.{A}#) allows 2.{B}#,
  which also serves as the general mate for the {d.piece}
  on {d.from}."
---
key K [A A AB B B]
where same_piece(a, b, c), same_piece(d, e),
  (a, d).role != 'K', a.from != d.from,
  !(K.threat_count == 0 && guards(c.from, A.to)
    && guards(c.to, A.to))
story "Stocchi correction: Key 1.{K}!{threat_clause}.
  The defense 1...{c} (correction for the {a.piece}
  on {a.from}, general mate 2.{A}#) allows 2.{B}#,
  which also serves as the general mate for the {d.piece}
  on {d.from}."
---
vir [A]
try [B]
key [C]
where a.self_block
story "Stocchi: Self-block defense 1...{a} on {a.to} is
  answered by three distinct checkmates across phases:
  2.{A}#, 2.{B}#, and 2.{C}# after key
  1.{K}!{threat_clause}."

# Reversal

mate2::types::NamedTheme::Reversal Alias: Reciprocal Change

Reciprocal change of mates (A, B vs B, A) across two phases against defenses a and b, or functional reversal between phase move and mate (Try A mates B; Key B mates A).

Thema Pattern Specification (.thm)
vir [A B]
+any [B A]
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count
subsumes ChangedMate, TransferredMates
story "Reversal: Reciprocal changed play between {phase1}
  (1...{a} 2.{A}# vs 1...{b} 2.{B}#) and {phase2} (1...{a}
  2.{B}# vs 1...{b} 2.{A}#)."
---
try A [B]
+any B [A]
with -no_threats_sparse_mates -no_threats_few_replies
  -match_threat_count -capture_try_piece
  -single_refutation
story "Reversal: Functional reversal between Try 1.{A}?
  (1...{a} 2.{B}#) and 1.{B}! (1...{a} 2.{A}#)."

# Threat Reversal

mate2::types::NamedTheme::ThreatReversal

Reciprocal change between phase move and threat across two phases: Try A threatens B; Key B threatens A.

Thema Pattern Specification (.thm)
try A (B)
+any B (A)
with -capture_try_piece
subsumes ThreatAntiReversal
story "Threat Reversal: Reciprocal exchange between
  threat and key moves across two phases: Try 1.{A}?
  (threat 2.{B}#) and Key 1.{B}! (threat 2.{A}#)."

# Zagoruiko

mate2::types::NamedTheme::Zagoruiko Alias: Zagoruiko 3x2

Changed checkmates across 3 phases against defenses a and b (3x2: A, B / C, D / E, F).

Thema Pattern Specification (.thm)
^vir [A B]
^try [C D]
^key [E F]
where count_distinct(A, B, C, D, E, F) >= 5
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay
story "Zagoruiko (3×2): Three distinct phases produce
  changed mates against defenses 1...{a} and 1...{b}:
  {phase1} (2.{A}# / 2.{B}#), Try 1.{Tr}? (2.{C}#
  / 2.{D}#), and Key 1.{K}!{threat_clause} (2.{E}#
  / 2.{F}#)."

# Zagoruiko 3x3

mate2::types::NamedTheme::Zagoruiko3x3

Changed checkmates across 3 phases against defenses a, b, c (3x3: A, B, C / D, E, F / G, H, I).

Thema Pattern Specification (.thm)
^vir [A B C]
^try [D E F]
^key [G H I]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ThreeChangedMates, Zagoruiko
story "Zagoruiko (3×3): Three distinct phases produce
  three trios of changed mates against defenses 1...{a},
  1...{b}, and 1...{c}: {phase1}, Try 1.{Tr}?,
  and Key 1.{K}!{threat_clause}."

# Rukhlis

mate2::types::NamedTheme::Rukhlis

Mates against defenses a and b change in a subsequent phase to C and D, while original mates A and B reappear against new defenses c and d.

Thema Pattern Specification (.thm)
vir [A B _ _]
+any [C D A B]
with -match_threat_count -capture_try_piece
  -single_refutation -no_threats_few_replies
  -no_threats_sparse_mates
story "Rukhlis: Key 1.{K}!{threat_clause}. Mates
  against 1...{a} (2.{A}#) and 1...{b} (2.{B}#) transfer
  to 1...{c} and 1...{d}, while fresh mates answer the
  original defenses: 1...{a} 2.{C}# and 1...{b} 2.{D}#."
---
vir [A B _]
+any [C D A]
where distinct(A, B, C, D)
with -match_threat_count -capture_try_piece
  -single_refutation -no_threats_few_replies
  -no_threats_sparse_mates
story "Rukhlis: Mates against 1...{a} (2.{A}#) and 1...{b}
  (2.{B}#) change to 2.{C}# and 2.{D}# while 2.{A}#
  transfers to 1...{c}."
---
vir [A B _]
+any (A) [C D B]
with -match_threat_count -capture_try_piece
  -single_refutation -no_threats_few_replies
  -no_threats_sparse_mates
story "Rukhlis: Mates against 1...{a} (2.{A}#) and 1...{b}
  (2.{B}#) change to 2.{C}# and 2.{D}# while 2.{A}#
  becomes the threat and 2.{B}# transfers to 1...{c}."
---
vir [A B _]
+any (A) [- C B]
with -match_threat_count -capture_try_piece
  -single_refutation -no_threats_few_replies
  -no_threats_sparse_mates
subsumes ChangedMate
story "Rukhlis: Mates against 1...{a} (2.{A}#) and 1...{b}
  (2.{B}#) shift as 2.{A}# becomes the threat, 1...{b}
  receives changed mate 2.{C}#, and 2.{B}# transfers
  to 1...{c}."

# Twente

mate2::types::NamedTheme::Twente

Dual separation across phases: dual mates AB in one phase separated into distinct mates A and B in another phase.

Thema Pattern Specification (.thm)
vir [AB AB]
key [A B]
with -single_refutation -refutation_is_check
  -capture_try_piece -sparse_mates -few_replies
  -match_threat_count
subsumes ChangedMate, TransferredMates
story "Twente: Dual mates 2.{AB}# in {phase1}
  are separated into distinct checkmates after
  key 1.{K}!{threat_clause}: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Changed Mate

mate2::types::NamedTheme::ChangedMate

Simple mate change (A to B) against defense a across two phases.

Thema Pattern Specification (.thm)
set [A]
key [B]
with -match_mate_count
story "Changed mate: Defense 1...{a} is met by checkmate
  2.{A}# in set play, changed to 2.{B}# after key
  1.{K}!{threat_clause}."
---
try [A]
key [B]
with -match_mate_count -capture_try_piece
  -refutation_is_check
story "Changed mate: Defense 1...{a} is met by checkmate
  2.{A}# in try 1.{Tr}?, changed to 2.{B}# after key
  1.{K}!{threat_clause}."
---
vir [A]
try [B]
with -match_mate_count -capture_try_piece
  -refutation_is_check
story "Changed mate: Defense 1...{a} receives changed
  checkmates between {phase1} (2.{A}#) and try 1.{Tr}?
  (2.{B}#)."

# Anti-Reversal

mate2::types::NamedTheme::AntiReversal

Anti-reversal changed play across tries and key (e.g., Try A mates B, Try B mates C, Key C mates A against defense a).

Thema Pattern Specification (.thm)
try A [B]
try B [C]
key C [A]
story "Anti-reversal: Cyclic changed play
  across three phases (Try 1.{A}?, Try 1.{B}?,
  Key 1.{C}!{threat_clause}) parries reciprocal reversal."
---
try A [B]
key K (B) [A]
with -refutation_is_check
story "Anti-reversal: Try 1.{A}? answers defense 1...{a}
  with 2.{B}#; Key 1.{K}! threatens 2.{B}# and answers
  1...{a} with 2.{A}#."
---
try A [B]
key C [A]
where distinct(A, B, C)
story "Anti-reversal: Try 1.{A}? answers 1...{a} with
  2.{B}#; Key 1.{C}!{threat_clause} answers 1...{a}
  with 2.{A}#."
---
try A [B]
key B [C]
where distinct(A, B, C)
subsumes ChangedMate
story "Anti-reversal: Try 1.{A}? answers 1...{a} with
  2.{B}#; Key 1.{B}!{threat_clause} answers 1...{a}
  with 2.{C}#."

# Threat Anti-Reversal

mate2::types::NamedTheme::ThreatAntiReversal

Try move T appears as threat T in another phase K, or threat K of try T becomes phase move K.

Thema Pattern Specification (.thm)
try T
+any K (T)
where K.threat_count <= 2
with -match_threat_count -single_refutation
  -capture_try_piece
story "Threat anti-reversal: Try move 1.{T}? returns as
  the threat 2.{T}# after 1.{K}."
---
try T (K)
+any K
where T.threat_count <= 2
with -match_threat_count -single_refutation
  -capture_try_piece
story "Threat anti-reversal: Threat 2.{K}# of try 1.{T}?
  becomes the first move 1.{K}!."

# Zagoruiko 4x2

mate2::types::NamedTheme::Zagoruiko4x2

Changed checkmates across 4 phases against defenses a and b (4x2: A, B / C, D / E, F / G, H).

Thema Pattern Specification (.thm)
^vir [A B]
^try [C D]
^try [E F]
^key [G H]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Zagoruiko
story "Zagoruiko (4×2): Four distinct phases produce four
  pairs of changed mates against defenses 1...{a} and
  1...{b}, culminating in key 1.{K}!{threat_clause}."

# Zagoruiko 4x3

mate2::types::NamedTheme::Zagoruiko4x3

Changed checkmates across 4 phases against defenses a, b, c (4x3: A, B, C / D, E, F / G, H, I / J, M, L).

Thema Pattern Specification (.thm)
^vir [A B C]
^try [D E F]
^try [G H I]
^key [J M L]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Zagoruiko3x3, Zagoruiko4x2
story "Zagoruiko (4×3): Four distinct phases weave
  changed mates against three defenses 1...{a}, 1...{b},
  and 1...{c}, culminating in key 1.{K}!{threat_clause}."

# Zagoruiko Nanning

mate2::types::NamedTheme::ZagoruikoNanning

Nanning variation of the Zagoruiko theme across three phases against defenses a and b (A, B / B, C / D, A).

Thema Pattern Specification (.thm)
vir [A B]
try [B C]
key [D A]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec3
story "Zagoruiko Nanning: Changed play across phases
  combined with Nanning dual avoidance, resolved by key
  1.{K}!{threat_clause}."

# Threat Zagoruiko 3x2

mate2::types::NamedTheme::ThreatZago3x2

Zagoruiko changed play combining threats (A, B, C) and defensive mates (D, E, F) against defense a across 3 phases.

Thema Pattern Specification (.thm)
try (A) [D]
try (B) [E]
key (C) [F]
subsumes ChangedPlay, ThreatKey
story "Threat Zagoruiko 3×2: Three phases feature
  changed threats combined with changed defensive mates:
  Try 1.{Tr1}?, Try 1.{Tr2}?, and Key 1.{K}!
  (threat 2.{C}#, defense 1...{a} 2.{F}#)."

# Threat Zagoruiko 4x2

mate2::types::NamedTheme::ThreatZago4x2

Zagoruiko changed play combining threats (A, C, E, G) and defensive mates (B, D, F, H) against defense a across 4 phases.

Thema Pattern Specification (.thm)
try (A) [B]
try (C) [D]
try (E) [F]
key (G) [H]
subsumes ThreatZago3x2
story "Threat Zagoruiko 4×2: Four phases feature
  changed threats combined with changed defensive mates,
  culminating in key 1.{K}! (threat 2.{G}#, defense
  1...{a} 2.{H}#)."

# Zagoruiko Distributed

mate2::types::NamedTheme::ZagoruikoDist

Distributed Zagoruiko changed play across phases: Try 1 (A, B), Try 2 (C, -), Try 3 (-, D), and Key (E, F) against defenses a and b.

Thema Pattern Specification (.thm)
try [A B]
try [C -]
try [- D]
key [E F]
subsumes ChangedPlay
story "Zagoruiko Distributed: Changed mates distributed
  across tries 1.{Tr1}?, 1.{Tr2}?, 1.{Tr3}?, and key
  1.{K}!{threat_clause} (1...{a} 2.{E}#, 1...{b} 2.{F}#)."

# Urania

mate2::types::NamedTheme::Urania

Urania theme: move A appears across three phases as first move A, threat A (after phase move T), and variation mate A against defense a.

Thema Pattern Specification (.thm)
any A
any T (A)
any [A]
where T.threat_count <= 2
with -capture_try_piece -match_threat_count
  -match_mate_count -no_threats_few_replies
  -no_threats_sparse_mates -refutation_is_check
  -flight_from_check -single_refutation
story "Urania: Move {A} functions across three phases as
  a first move, a threat, and a variation checkmate."

# Bartolović

mate2::types::NamedTheme::Bartolovic Alias: Bartolovic

Bartolović theme: changed play across three phases against defenses a and b: Try 1 (A, B), Try 2 (C, B), and Key (A, D).

Thema Pattern Specification (.thm)
try [A B]
try [C B]
key [A D]
subsumes ChangedPlay
story "Bartolović: Reciprocal changed play across tries
  1.{Tr1}?, 1.{Tr2}?, and key 1.{K}!{threat_clause}:
  1...{a} 2.{A}#, 1...{b} 2.{D}#."

# Rukhlis Condensed

mate2::types::NamedTheme::RukhlisCondensed

Condensed Rukhlis mate transference: Try answers defenses a, b with mates A, B; Key answers defenses a, b, c with mates C, A, B.

Thema Pattern Specification (.thm)
try [A B]
key [C A B]
subsumes ChangedMate, TransferredMates
story "Rukhlis Condensed: Try 1.{Tr}? and key
  1.{K}!{threat_clause} exhibit compact mate transference:
  mate 2.{A}# against 1...{a} transfers to 1...{b},
  while a fresh mate 2.{C}# answers 1...{a}."

# Rukhlis Distributed

mate2::types::NamedTheme::RukhlisDistributed

Distributed Rukhlis transference across three phases and four defenses a, b, c, d: virtual play (A, B, _, _), Try (C, _, A, _), and Key (_, D, _, B).

Thema Pattern Specification (.thm)
vir [A B _ _]
try [C _ A _]
key [_ D _ B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec1, Rukhlis, TransferredMates
story "Rukhlis Distributed: Distributed mate
  transference across {phase1}, try 1.{Tr}?, and key
  1.{K}!{threat_clause}: 1...{a} 2.{C}#, 1...{b} 2.{D}#."

# Ideal Rukhlis

mate2::types::NamedTheme::IdealRuklis

Ideal Rukhlis across four defenses a, b, c, d: Try answers a, b, c, d with A, B, C, D; Key answers a, b, c, d with E, F, A, B.

Thema Pattern Specification (.thm)
try [A B C D]
key [E F A B]
subsumes FourChangedMates, Rukhlis, TransferredMates
story "Ideal Rukhlis: Complete six-mate
  transference matrix between try 1.{Tr}? and key
  1.{K}!{threat_clause}: 1...{a} 2.{E}#, 1...{b} 2.{F}#,
  1...{c} 2.{A}#, 1...{d} 2.{B}#."

# Extended Rukhlis

mate2::types::NamedTheme::ExtendedRuklis

Extended Rukhlis transference: virtual mates A, B, C against defenses a, b, c change in the Key to D, E, F while A, B, C transfer to defenses d, e, f.

Thema Pattern Specification (.thm)
vir [A B C _ _ _]
key [D E F A B C]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, Rukhlis, ThreeChangedMates
story "Extended Rukhlis: Extended mate transference
  spanning multiple defenses between {phase1} and key
  1.{K}!{threat_clause}."

# Rukhlis Parti Sur 3 Phases A

mate2::types::NamedTheme::RukhlisPartiSur3PhasesA

Rukhlis divided across 3 phases (variant A) over defenses a, b, c, d: virtual play (A, B, -, -), Try (C, D, -, -), and Key (-, -, A, B).

Thema Pattern Specification (.thm)
vir [A B - -]
try [C D - -]
key [- - A B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedPlay, Sushkov, TransferredMates
story "Rukhlis (3 Phases A): Rukhlis mate transference
  partitioned across {phase1}, try 1.{Tr}?, and key
  1.{K}!{threat_clause}."

# Rukhlis Parti Sur 3 Phases B

mate2::types::NamedTheme::RukhlisPartiSur3PhasesB

Rukhlis divided across 3 phases (variant B) over defenses a, b, c, d: virtual play (A, B, _, _), Try (C, _, A, _), and Key (_, D, _, B).

Thema Pattern Specification (.thm)
vir [A B _ _]
try [C _ A _]
key [_ D _ B]
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes Brabec1, Rukhlis, TransferredMates
story "Rukhlis (3 Phases B): Rukhlis mate transference
  partitioned across {phase1}, try 1.{Tr}?, and key
  1.{K}!{threat_clause}."

# Reciprocal Change

mate2::types::NamedTheme::ReciprocalChange

Reciprocal change of mates between virtual play (1...a 2.A#, 1...b 2.B#) and the Key (1...a 2.B#, 1...b 2.A#).

Thema Pattern Specification (.thm)
vir [A B]
key [B A]
subsumes Reversal
story "Reciprocal Change: Checkmates against
  defenses 1...{a} (2.{A}#) and 1...{b} (2.{B}#)
  in virtual play are reciprocally swapped after
  key 1.{K}!{threat_clause}: 1...{a} 2.{B}#
  vs 1...{b} 2.{A}#."

# Chepizhny

mate2::types::NamedTheme::Chepizhny

Chepizhny theme: recurring mate D shifts across defenses b, c, d alongside changed mates A, B, C on defense a across Try 1, Try 2, and the Key.

Thema Pattern Specification (.thm)
try [A D _ _]
try [B _ D _]
key [C _ _ D]
subsumes ChangedPlay
story "Chepizhny: Recurring mate 2.{D}# alongside changed
  mates 2.{A}#, 2.{B}#, 2.{C}# across tries 1.{Tr1}?,
  1.{Tr2}?, and key 1.{K}!{threat_clause}."

# Bikos

mate2::types::NamedTheme::Bikos Alias: Bikos theme

Reciprocal change of harmful defense effects: defense a produces self-block in one phase and unguard/exposure to capture in another phase, while defense b reciprocally produces unguard/exposure to capture and self-block.

Thema Pattern Specification (.thm)
vir [A B]
+any [C D]
where A != C, B != D, (a, b).flight_block,
  (A.recaptures(a) && !B.recaptures(b) && !C.recaptures(a)
    && D.recaptures(b)) || (!A.recaptures(a)
    && B.recaptures(b) && C.recaptures(a)
    && !D.recaptures(b))
subsumes ChangedMate
story "Bikos: Reciprocal change of harmful defense effects
  (self-block vs exposure to capture) between {phase1} and
  {phase2} across 1...{a} (2.{A}# -> 2.{C}#) and 1...{b}
  (2.{B}# -> 2.{D}#)."

# Java

mate2::types::NamedTheme::Java Alias: Java theme

Two Black defenses each close one of two White guard lines to a flight square, forcing dual avoidance between two mates by the same White piece.

Thema Pattern Specification (.thm)
key [A B]
where same_piece(A, B), A.to != B.to, a.unpins(A),
  b.unpins(B), (a.closes_line(WK) || a.cuts_enemy_line()),
  (b.closes_line(WK) || b.cuts_enemy_line())
story "Java theme: Key 1.{K}!{threat_clause}.
  Dual self-blocks 1...{a} and 1...{b} uniquely unlock
  checkmates 2.{A}# and 2.{B}#."
---
def [a:!x b:!x]
key [A B]
where K.threat_count > 0, same_piece(a, b), a.to != b.to,
  same_piece(A, B), A.to != B.to, !A.recaptures(a),
  !B.recaptures(b),
  (a.closes_line(WK) || a.cuts_enemy_line()),
  (b.closes_line(WK) || b.cuts_enemy_line())
story "Java theme: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} close White guard lines,
  forcing dual avoidance between 2.{A}# and 2.{B}#."

# Haring

mate2::types::NamedTheme::Haring Alias: Haring theme

In at least two phases, the White move following the same Black defense is a switchback of the key-piece.

Thema Pattern Specification (.thm)
try Tr [A~Tr]
key K  [B~K]
where Tr.threat_count > 0 || K.threat_count > 0
    || Tr.from != K.from
with -match_threat_count
subsumes ChangedMate
story "Haring: In two phases, White's reply to 1...{a}
  is a switchback of the key piece (Try 1.{Tr}? and Key
  1.{K}!{threat_clause}), delivering 2.{A}# and 2.{B}#."

# Makrava

mate2::types::NamedTheme::Makrava

Try 1 refuted by a (answers b with mate A); Try 2 refuted by b (answers a with the same mate A); Key answers both with changed mates C and D.

Thema Pattern Specification (.thm)
try [! A]
try [A !]
key [C D]
subsumes ChangedMate
story "Makrava: Tries 1.{Tr1}? (1...{a}!, 1...{b} 2.{A}#)
  and 1.{Tr2}? (1...{a} 2.{A}#, 1...{b}!) transfer
  mate 2.{A}# before Key 1.{K}!{threat_clause} delivers
  1...{a} 2.{C}# and 1...{b} 2.{D}#."

# Added play

mate2::types::NamedTheme::AddedPlay

A defense exists in post-key play that had no checkmate provided in set play.

Thema Pattern Specification (.thm)
set [-]
key K [A]
where K.threat_count == 0 || set_play_complete()
story "Added play: Key 1.{K}!{threat_clause} introduces
  new mating variations not present in set play:
  1...{a} 2.{A}#."

# Removed play

mate2::types::NamedTheme::RemovedPlay

A defense provided with mate in set play has no variation in post-key play.

Thema Pattern Specification (.thm)
set [A]
key K [-]
where K.threat_count == 0 || A.from != K.from
    || a.role == 'K'
with -match_mate_count
story "Removed play: Key 1.{K}!{threat_clause} eliminates
  the set-play variation 1...{a} 2.{A}#, focusing White's
  attack on the solution."
---
key K
where has_removed_set_defense(),
  (K.threat_count <= 1 || set_mate_count() > 1)
story "Removed play: Key 1.{K}!{threat_clause} eliminates
  a set-play variation, focusing White's attack
  on the solution."

# Changed play

mate2::types::NamedTheme::ChangedPlay

The same Black defense receives different checkmates across phases.

Thema Pattern Specification (.thm)
set [A]
key [B]
story "Changed play: Key 1.{K}!{threat_clause} changes
  the mating reply against 1...{a} from set mate 2.{A}#
  to 2.{B}#."
---
try [A B]
key [C D]
with -single_refutation -capture_try_piece
  -refutation_is_check -sparse_mates -few_replies
story "Changed play: Key 1.{K}!{threat_clause} changes
  the mating replies against 1...{a} and 1...{b} from
  2.{A}#, 2.{B}# to 2.{C}#, 2.{D}#."

# Progressive

mate2::types::NamedTheme::Progressive

Progressive increase or intensification of thematic motives across phases.

Thema Pattern Specification (.thm)
def [a:+ b c d]
key [A B C D]
where b.pins(BK), c.unpins(WK), d.self_block, d.was_flight
subsumes ProvokedCheck, SelfBlock, SelfPin
story "Progressive: Key 1.{K}!{threat_clause}
  progressively unlocks mates across varied defenses:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#,
  1...{d} 2.{D}#."

# Visserman

mate2::types::NamedTheme::Visserman

Changed mates between set play (A, B) and the Key (C, D) against two Black King flights a and b.

Thema Pattern Specification (.thm)
def [a:K b:K]
set [A B]
key [C D]
subsumes FreeChange, KingFlight
story "Visserman: Fourfold changed play across phases:
  1...{a} set 2.{A}# / key 2.{C}#, 1...{b} set 2.{B}# /
  key 2.{D}# (Key 1.{K}!{threat_clause})."

# Free change

mate2::types::NamedTheme::FreeChange

Changed checkmates between set play and actual play for two or more defenses.

Thema Pattern Specification (.thm)
set [A B]
key [C D]
where A != C, B != D
subsumes ChangedPlay
story "Free change: Key 1.{K}!{threat_clause} changes
  checkmates between phases without try threats:
  1...{a} set 2.{A}# / key 2.{C}#, 1...{b} set 2.{B}# /
  key 2.{D}#."

# Check - Non-check

mate2::types::NamedTheme::CheckNonCheck

Thematic contrast between checking and non-checking moves across phases.

Thema Pattern Specification (.thm)
try [A B]
key K:K [B* A*]
where a.is_check != b.is_check
with -match_mate_count
subsumes ChangedMate
story "Check - Non-check: Thematic contrast between
  checking and non-checking Black defenses across
  Try 1.{Tr}? and Royal Key 1.{K}!{threat_clause}:
  1...{a} and 1...{b}."

# Salazar

mate2::types::NamedTheme::Salazar Alias: Salazar theme

Reversal of White's first and second moves across try and key against the same Black defense (Try 1.A? 1...a 2.B#; Key 1.B! 1...a 2.A#).

Thema Pattern Specification (.thm)
try A [B]
+any B [A]
with -match_threat_count -match_mate_count -few_replies
  -sparse_mates -single_refutation -capture_try_piece
  -refutation_is_check
subsumes ChangedMate
story "Salazar: Reversal of White's first and second moves
  against defense 1...{a}: Try 1.{A}? answers 1...{a} with
  2.{B}#, while 1.{B} answers 1...{a} with 2.{A}#."

# Salazar (double)

mate2::types::NamedTheme::SalazarDouble Alias: Double Salazar

Double Salazar reversal: two tries 1.A? and 1.B? answer defenses with 2.C#, and Key 1.C! answers those defenses with 2.A# and 2.B#.

Thema Pattern Specification (.thm)
try A [C _]
try B [_ C]
key C [A B]
subsumes BatteryMate, BatteryPlay, Salazar, VladimirovCC2
story "Double Salazar: Tries 1.{A}? (1...{a} 2.{C}#)
  and 1.{B}? (1...{b} 2.{C}#) reverse first and second
  moves with Key 1.{C}!{threat_clause} (1...{a} 2.{A}#,
  1...{b} 2.{B}#)."

# Black correction in Try

mate2::types::NamedTheme::BlackCorrectionTry

Black correction play occurring in a virtual try phase.

Thema Pattern Specification (.thm)
def [r a]
try (T) [T A]
where a.corrects(r)
story "Black correction in Try: In Try 1.{Tr}?
  (threat 2.{T}#), random move 1...{r} allows 2.{T}#,
  while correction 1...{a} forces 2.{A}#."

# Black correction in set play

mate2::types::NamedTheme::BlackCorrectionSetPlay

Black piece executes a random move and a correction move in set play, with changed mates in the key.

Thema Pattern Specification (.thm)
def [r1 r2 a]
set [A A B]
key [C C D]
where same_piece(r1, r2, a), r1.to < r2.to,
  distinct(r1.to, r2.to, a.to), !(r1, r2, a).check,
  !B.recaptures(a)
subsumes FreeChange
story "Black correction in set play: Set play features
  random defense 1...{r1} 2.{A}# and correction
  1...{a} 2.{B}#, changed after Key 1.{K}!{threat_clause}
  to 1...{r1} 2.{C}# and 1...{a} 2.{D}#."

# Double Black correction

mate2::types::NamedTheme::DoubleBlackCorrection

Two distinct Black pieces each execute a random move and a specific correction move in the key phase.

Thema Pattern Specification (.thm)
def [r1 a r2 b]
key (T) [T A T B]
where a.corrects(r1), b.corrects(r2), diff_piece(a, b)
subsumes ThreatKey
story "Double Black correction: Key 1.{K}! (threat 2.{T}#)
  provokes corrections from two Black pieces:
  1...{r1} 2.{T}# / 1...{a} 2.{A}# and 1...{r2} 2.{T}# /
  1...{b} 2.{B}#."

# Reciprocal cross-checks

mate2::types::NamedTheme::ReciprocalCrossCheck

Two Black checking defenses have their cross-check mates reciprocally exchanged between virtual play and actual play.

Thema Pattern Specification (.thm)
def [a:+ b:+]
vir [A B]
+any [B A]
subsumes ChangedCrossCheck, ChangedPlay, CrossCheck,
  ProvokedCheck, Reversal
story "Reciprocal cross-checks: Black checks 1...{a} and
  1...{b} reciprocally swap cross-check mates 2.{A}# and
  2.{B}# between {phase1} and {phase2}."

# Reciprocal Zagoruiko

mate2::types::NamedTheme::ReciprocalZagoruiko

Three-phase Zagoruiko over two defenses where two phases reciprocally exchange mates (A, B vs B, A) and the third phase introduces changed mates (C, D).

Thema Pattern Specification (.thm)
^vir [A B]
^vir [B A]
^key [C D]
subsumes ChangedPlay, Reversal
story "Reciprocal Zagoruiko: Defenses 1...{a} and
  1...{b} reciprocally swap 2.{A}# and 2.{B}# in virtual
  play, then change to 2.{C}# and 2.{D}# after
  Key 1.{K}!{threat_clause}."

# Three changed mates

mate2::types::NamedTheme::ThreeChangedMates

At least three Black defenses receive changed mates between virtual play (set or try) and the key.

Thema Pattern Specification (.thm)
^vir [A B C]
^key [D E F]
subsumes ChangedMate
story "Three changed mates: Mates after 1...{a},
  1...{b}, and 1...{c} change from 2.{A}#, 2.{B}#,
  2.{C}# in {phase1} to 2.{D}#, 2.{E}#, 2.{F}# after
  Key 1.{K}!{threat_clause}."

# Four changed mates

mate2::types::NamedTheme::FourChangedMates

At least four Black defenses receive changed mates between virtual play and the key.

Thema Pattern Specification (.thm)
^vir [A B C D]
^key [E F G H]
subsumes ChangedPlay, ThreeChangedMates
story "Four changed mates: Mates after 1...{a}, 1...{b},
  1...{c}, and 1...{d} all change from {phase1} (2.{A}#,
  2.{B}#, 2.{C}#, 2.{D}#) to Key 1.{K}!{threat_clause}
  (2.{E}#, 2.{F}#, 2.{G}#, 2.{H}#)."

# Changed Star-flights

mate2::types::NamedTheme::ChangedStarFlights

All four diagonal star-flights of the Black King receive changed mates between virtual play and the key.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
^vir [A B C D]
^key [E F G H]
where (a, b, c, d).diag, distinct(a.to, b.to, c.to, d.to)
subsumes FourChangedMates, RadialFlights, StarFlights
story "Changed Star-flights: All four diagonal Black King
  flights (1...{a}, 1...{b}, 1...{c}, 1...{d}) receive
  changed mates after Key 1.{K}!{threat_clause}."

# Changed Cross-flights

mate2::types::NamedTheme::ChangedCrossFlights

All four orthogonal cross-flights of the Black King receive changed mates between virtual play and the key, or two orthogonal flights in set-play are replaced by the other two orthogonal flights after the key.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
^vir [A B C D]
^key [E F G H]
where (a, b, c, d).ortho, distinct(a.to, b.to, c.to, d.to)
subsumes BkTShapeFlights, FourChangedMates, RadialFlights
story "Changed Cross-flights: All four orthogonal Black
  King flights (1...{a}, 1...{b}, 1...{c}, 1...{d})
  receive changed mates after Key 1.{K}!{threat_clause}."
---
def [a:K b:K c:K d:K]
vir [A B _ _]
key [_ _ C D]
where (a, b, c, d).ortho, distinct(a.to, b.to, c.to, d.to)
subsumes ChangedPlay, FlightGivingAndTakingKey
story "Changed Cross-flights: Orthogonal Black King
  flights 1...{a} (2.{A}#) and 1...{b} (2.{B}#)
  in {phase1} are replaced by the orthogonal flights
  1...{c} (2.{C}#) and 1...{d} (2.{D}#) after
  Key 1.{K}!{threat_clause}."

# Twin-threat Zagoruiko

mate2::types::NamedTheme::TwinThreatChange

Three phases each feature a distinct threat (X, Y, Z) and changed mates across two Black defenses.

Thema Pattern Specification (.thm)
^vir (X) [A B]
^try (Y) [C D]
^key (Z) [E F]
subsumes ChangedPlay, ThreatKey
story "Twin-threat Zagoruiko: Three phases with distinct
  threats (2.{X}#, 2.{Y}#, 2.{Z}#) and 3x2 changed mates
  across 1...{a} and 1...{b}."

# Double Albino

mate2::types::NamedTheme::DoubleAlbino

Two distinct White Pawns on the 2nd rank each execute all four Albino moves, or an Albino quartet occurs in two phases.

Thema Pattern Specification (.thm)
vir [A:P B:P C:P D:P _ _ _ _]
+any [_ _ _ _ E:P F:P G:P H:P]
where pawn_quartet(A, B, C, D), pawn_quartet(E, F, G, H)
story "Double Albino: Two White Pawn quartets occur across
  {phase1} (2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#) and {phase2}
  (2.{E}#, 2.{F}#, 2.{G}#, 2.{H}#)."

# Double Pickaninny

mate2::types::NamedTheme::DoublePickaninny

A Black Pawn on the 7th rank executes all four Pickaninny moves with changed mates between virtual play and actual play.

Thema Pattern Specification (.thm)
def [a:P b:P c:P d:P]
^vir [A B C D]
^key [E F G H]
where pawn_quartet(a, b, c, d)
subsumes FourChangedMates, Pickaninny
story "Double Pickaninny: Black Pawn on {a.from} executes
  its four-move Pickaninny with changed mates between
  {phase1} (2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#) and Key 1.{K}!
  (2.{E}#, 2.{F}#, 2.{G}#, 2.{H}#)."

# Focal self-block

mate2::types::NamedTheme::FocalSelfBlock

Two different Black pieces self-block on two different flight squares while reciprocally allowing mate on each other's blocking square.

Thema Pattern Specification (.thm)
def [a b]
key [A@b B@a]
where diff_piece(a, b), a.to != b.to, (a, b).self_block
subsumes SelfBlock
story "Focal self-block: After Key 1.{K}!{threat_clause},
  Black self-blocks 1...{a} and 1...{b} reciprocally
  concede checkmates on each other's squares:
  2.{A}# and 2.{B}#."

# Theme F

mate2::types::NamedTheme::ThemeF Alias: Thema F

Two tries Tr1 and Tr2 by a White piece (threatening T) are reciprocally refuted by a Black piece's moves a and b (Tr1.to == b.to, Tr2.to == a.to); Key K moves that White piece to a third square and answers a and b with mates A and B.

Thema Pattern Specification (.thm)
try Tr1 (T) [! _]
try Tr2 (T) [_ !]
key K (T) [A B]
where same_piece(Tr1, Tr2, K), same_piece(a, b),
  Tr1.to == b.to, Tr2.to == a.to,
  distinct(Tr1.to, Tr2.to, K.to)
subsumes Isaev, ThreatKey, WhiteCorrection
story "Theme F: Tries 1.{Tr1}? and 1.{Tr2}? are
  reciprocally refuted by 1...{a}! and 1...{b}!;
  Key 1.{K}! answers them with 2.{A}# and 2.{B}#."

# Zappas

mate2::types::NamedTheme::Zappas Alias: Zappas theme

At least three phases (tries and key) feature the same mate A after defense a in tries (each refuted by a different defense b, c) before changing or resolving in the key.

Thema Pattern Specification (.thm)
try [A ! _]
try [A _ !]
key [A B C]
story "Zappas: Tries 1.{Tr1}? (1...{b}!) and 1.{Tr2}?
  (1...{c}!) share 1...{a} 2.{A}#; Key 1.{K}! resolves all
  three with 2.{A}#, 2.{B}#, and 2.{C}#."

# Zappas simple

mate2::types::NamedTheme::ZappasSimple

Against two Black defenses on the same square, two tries and the key produce three completely changed pairs of mates (3x2 Zagoruiko on the same defense square).

Thema Pattern Specification (.thm)
try [A B]
try [C D]
key [E F]
where same_square(a, b), a.from != b.from
subsumes OneLineHerpai, Zagoruiko
story "Zappas simple: On square {a.to} (1...{a}, 1...{b}),
  Try 1.{Tr1}? (2.{A}#, 2.{B}#), Try 1.{Tr2}? (2.{C}#,
  2.{D}#), and Key 1.{K}! (2.{E}#, 2.{F}#) produce three
  pairs of mates."

# Spisska-Borovicka

mate2::types::NamedTheme::SpisskaBorovicka

Total four-move reciprocal exchange between a try and the key: Try 1.A? (2.B#) answers 1...a 2.C#, 1...b 2.D#; Key 1.C! (2.D#) answers 1...a 2.B#, 1...b 2.A#.

Thema Pattern Specification (.thm)
try A (B) [C D]
key C (D) [B A]
subsumes AntiReversal, DombrovskisCrossClosed2,
  PseudoErokhin, PseudoSalazar, VladimirovCC2
story "Spisska-Borovicka: Try 1.{A}? (threat 2.{B}#;
  1...{a} 2.{C}#, 1...{b} 2.{D}#) reciprocally exchanges
  all four moves with Key 1.{C}! (threat 2.{D}#;
  1...{a} 2.{B}#, 1...{b} 2.{A}#)."

# Anti-Salazar

mate2::types::NamedTheme::AntiSalazar

Two tries reciprocally exchange first move and threat (1.A? threat 2.B# and 1.B? threat 2.A#), both refuted by the same defense, while the key solves with a third move.

Thema Pattern Specification (.thm)
try A (B) [!]
try B (A) [!]
key K [C]
where distinct(A, B, K)
with -match_threat_count -capture_try_piece
subsumes ThreatAntiReversal
story "Anti-Salazar: Tries 1.{A}? (threat 2.{B}#)
  and 1.{B}? (threat 2.A#) both fail to 1...{a}!,
  solved by Key 1.{K}! (1...{a} 2.{C}#)."

# Pseudo Salazar

mate2::types::NamedTheme::PseudoSalazar

Two phases exchange first move and variation mate across different Black defenses (1.A? 1...a 2.B# and 1.B 1...b 2.A#), or two tries exchange first move and mate against the same defense.

Thema Pattern Specification (.thm)
try A [B _]
+any B [_ A]
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
  -refutation_is_check
story "Pseudo Salazar: Try 1.{A}? (1...{a} 2.{B}#) and
  1.{B} (1...{b} 2.{A}#) exchange first move and mate
  across different Black defenses."
---
try A [B]
try B [A]
key K [C]
story "Pseudo Salazar: Tries 1.{A}? (1...{a} 2.{B}#) and
  1.{B}? (1...{a} 2.{A}#) exchange first move and mate,
  followed by Key 1.{K}! (1...{a} 2.{C}#)."

# Dalton

mate2::types::NamedTheme::Dalton Alias: Dalton theme

Set play has Black correction by one Black piece allowing mates A and B; the key pins that piece so a second Black piece executes correction allowing the same mates A and B.

Thema Pattern Specification (.thm)
vir [A B _ _]
key [_ _ A B]
where same_piece(a, b), same_piece(c, d), a.from != c.from
story "Dalton: Set correction by {a.piece_desc} (1...{a}
  2.{A}#, 1...{b} 2.{B}#) transfers after Key 1.{K}!
  to {c.piece_desc} (1...{c} 2.{A}#, 1...{d} 2.{B}#)."

# Arnstam theme

mate2::types::NamedTheme::Arnstam Alias: Arnstam

In a White correction try, two Black pieces capturing on the same square allow the same mate A (passive dual avoidance); in the key, those captures force two distinct changed mates B and C.

Thema Pattern Specification (.thm)
def [a:x b:x]
try Tr [A A]
key K [B C]
where same_piece(Tr, K), same_square(a, b),
  a.from != b.from
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ChangedMate, DefencesOnSameSquare, Laitinen
story "Arnstam theme: In Try 1.{Tr}?, captures 1...{a} and
  1...{b} on {a.to} both allow 2.{A}#; after Key 1.{K}!,
  they separate into 2.{B}# and 2.{C}#."

# Gooderson

mate2::types::NamedTheme::Gooderson Alias: Gooderson theme

In virtual play, two Black defenses a and b to the same square allow mates A and B; after the Key, defenses a and b allow changed mates C and D while other moves c and d of those same two pieces allow the original mates A and B (Rukhlis + Black correction).

Thema Pattern Specification (.thm)
vir [A B _ _]
key [C D A B]
where same_square(a, b), a.from != b.from,
  same_piece(a, c), same_piece(b, d)
subsumes OneLineHerpai, Rukhlis
story "Gooderson: Set mates 2.{A}# and 2.{B}# after
  captures 1...{a} and 1...{b} on {a.to} change to 2.{C}#
  and 2.{D}# after Key 1.{K}!, while reappearing after
  random moves 1...{c} and 1...{d}."

# Freie Presse theme

mate2::types::NamedTheme::FreiePresse

Set play has two checking moves A and B as mates against defenses a and b; tries 1.A+? and 1.B+? are refuted by Black King flights c and d; the key changes the mates after a and b while transferring A# and B# to new Black defenses e and f.

Thema Pattern Specification (.thm)
vir [A B _ _ _ _]
try A:+ [_ _ ! _ _ _]
try B:+ [_ _ _ ! _ _]
key K [!A !B _ _ A B]
where (c, d).role == 'K'
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Freie Presse theme: Set mates 2.{A}# (after
  1...{a}) and 2.{B}# (after 1...{b}) fail as checking
  tries 1.{A}? (1...{c}!) and 1.{B}? (1...{d}!);
  Key 1.{K}!{threat_clause} changes the mates after
  1...{a} and 1...{b} while transferring 2.{A}# and 2.{B}#
  to 1...{e} and 1...{f}."

# Muleblock theme

mate2::types::NamedTheme::Muleblock Alias: Muleblock

In set play, defense a allows quiet mate A (self-block) and defense b allows capture mate B; after the key, defense a is captured by C while defense b self-blocks to allow quiet mate A (Bikos + transferred mate).

Thema Pattern Specification (.thm)
vir [A!@a B@b]
key [C@a A!@b]
where a.self_block || b.self_block
subsumes ChangedMate, TransferredMates
story "Muleblock theme: Set play (1...{a} 2.{A}#
  self-block, 1...{b} 2.{B}# capture) switches after
  Key 1.{K}! to 1...{a} 2.{C}# capture and 1...{b} 2.{A}#
  transferred self-block."

# Røpke

mate2::types::NamedTheme::Ropke Alias: Roepke theme

Two Black pawns each promote to a Queen and a Knight, and the four promotions are answered by distinct or reciprocal White mates.

Thema Pattern Specification (.thm)
def [a:P:=Q b:P:=N c:P:=Q d:P:=N]
key [A B C D]
where same_piece(a, b), same_piece(c, d), a.from != c.from
subsumes BlackUnderpromotion
story "Røpke: Key 1.{K}!{threat_clause}. Dual promotions
  by two Black pawns (1...{a} 2.{A}#, 1...{b} 2.{B}# and
  1...{c} 2.{C}#, 1...{d} 2.{D}#) produce distinct mates."
---
def [a:P:= b:P:= c:P:= d:P:=]
key [A B B A]
where same_piece(a, b), same_piece(c, d),
  a.from != c.from, a.promotion != b.promotion,
  c.promotion != d.promotion
subsumes BlackUnderpromotion
story "Røpke: Key 1.{K}!{threat_clause}.
  Dual promotions by two Black pawns (1...{a} 2.{A}#,
  1...{b} 2.{B}# and 1...{c} 2.{B}#, 1...{d} 2.{A}#)
  produce reciprocal mates."

# Breton Adverse

mate2::types::NamedTheme::BretonAdverse

Reciprocal change of mates (A, B to B, A) between virtual play and the Key where two different White pieces swap mates against two Black capture defenses a and b.

Thema Pattern Specification (.thm)
def [a:x b:x]
vir [A B]
key [B A]
where A.from != B.from
subsumes ReciprocalChange
story "Breton Adverse: Captures 1...{a} and 1...{b}
  reciprocally exchange mates 2.{A}# and 2.{B}# between
  virtual play and Key 1.{K}!."

# Urania doubled

mate2::types::NamedTheme::UraniaDoubled

Two distinct White moves A and B both appear across three phases as first move, threat, and variation mate.

Thema Pattern Specification (.thm)
try A (B) [_ _]
try B (A) [_ _]
key K [A B]
where distinct(A, B, K)
with -match_threat_count -capture_try_piece
subsumes ThreatAntiReversal, Urania
story "Urania doubled: Both {A} and {B} appear as try
  first move, try threat, and variation mate after
  Key 1.{K}! (1...{a} 2.{A}#, 1...{b} 2.{B}#)."
Chapter Section · 18 Themes

07. Black & White Corrections

Random moves by defending or attacking units yielding general flaws, corrected by specific moves with secondary flaws (Somov, Stocchi).

# White correction

mate2::types::NamedTheme::WhiteCorrection

White tries make general moves with a piece which are refuted; the key makes a corrected move with the same piece.

Thema Pattern Specification (.thm)
try Tr1 (X) [!]
try Tr2 (X) [_]
key K [A]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  Tr1.threat_count == Tr2.threat_count,
  Tr1.threat_count <= 2,
  (K.threat_count > 0 || K.opens_line(WK))
with -match_threat_count -match_mate_count
story "White correction: Random White tries 1.{Tr1}? and
  1.{Tr2}? fail; thematic correction 1.{K}!{threat_clause}
  succeeds with 2.{A}# against 1...{a}."
---
try Tr1 [!]
try Tr2 [_]
key K [A]
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  (Tr1.threat_count == 0 || Tr2.threat_count == 0),
  Tr1.threat_count <= 2, Tr2.threat_count <= 2,
  (K.threat_count > 0 || K.opens_line(WK))
with -match_threat_count -match_mate_count
story "White correction: Random White tries 1.{Tr1}? and
  1.{Tr2}? fail; thematic correction 1.{K}!{threat_clause}
  succeeds with 2.{A}# against 1...{a}."
---
try Tr1 [! _]
try Tr2 [_ !]
key K
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to), Tr1.threat_count == 0,
  Tr2.threat_count == 0,
  (K.threat_count > 0 || K.opens_line(WK))
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "White correction: White tries 1.{Tr1}? and 1.{Tr2}?
  by the same piece fail to 1...{a}! and 1...{b}!;
  correction 1.{K}!{threat_clause} succeeds."
---
try Tr1 (X) [! _]
try Tr2 (X) [_ !]
key K
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  Tr1.threat_count == Tr2.threat_count,
  Tr1.threat_count <= 2,
  (K.threat_count > 0 || K.opens_line(WK))
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "White correction: White tries 1.{Tr1}? and 1.{Tr2}?
  by the same piece fail to 1...{a}! and 1...{b}!;
  correction 1.{K}!{threat_clause} succeeds."
---
try Tr1 (X) [! _]
try Tr2 (Y) [_ !]
key K [A B]
where same_piece(Tr1, Tr2), Tr1.to != Tr2.to,
  Tr1.threat_count <= 2, Tr2.threat_count <= 2,
  (K.opens_line(WK) || Tr1.opens_line(WK)
    || X.to == Tr1.from || X == Y)
with -match_threat_count -match_mate_count
  -single_refutation
story "White correction: White tries 1.{Tr1}? and 1.{Tr2}?
  by the same piece fail to 1...{a}! and 1...{b}!;
  Key 1.{K}!{threat_clause} succeeds."
---
try Tr (X) [!]
+any K (Y) [A]
where same_piece(Tr, K), Tr.to != K.to,
  (Tr.opens_line(WK) || K.opens_line(WK)
    || X.to == Tr.from || K.to == X.to),
  (X.from != Tr.to || Tr.opens_line(WK)),
  (X.from != Y.from || X.to != Y.to)
with -match_threat_count -match_mate_count
story "White correction: White try 1.{Tr}? (threat 2.{X}#)
  fails to 1...{a}!; correction 1.{K}! (threat 2.{Y}#)
  answers 1...{a} with 2.{A}#."
---
try Tr (X) [!]
key K (X) [A]
where same_piece(Tr, K), Tr.to != K.to,
  (Tr.opens_line(WK) || K.opens_line(WK)
    || X.to == K.from)
story "White correction: White try 1.{Tr}? fails
  to 1...{a}!; thematic correction 1.{K}!{threat_clause}
  succeeds with 2.{A}#."

# Somov

mate2::types::NamedTheme::Somov Alias: Somov theme

Black correction defense unguards a square allowing a distinct mate.

Thema Pattern Specification (.thm)
key K [A A B]
where A != B, same_piece(a, b, c),
  distinct(a.to, b.to, c.to),
  (c.to != B.to || c.pinned_to(WK) || c.pinned_to(BK)),
  c.unguards(B),
  !(guards(a.to, B.to) && guards(b.to, B.to)),
  !(K.threat_count == 0 && guards(c.from, A.to)
    && guards(c.to, A.to)),
  !(K.threat_count == 0 && between(c.from, A.from, A.to)
    && collinear(A.from, c.from, c.to)),
  !(a, b).check
story "Somov: Key 1.{K}!{threat_clause}. Random moves
  allow general mate 2.{A}#, but correction defense
  1...{c} unguards {B.to}, allowing checkmate 2.{B}#."

# Black correction

mate2::types::NamedTheme::BlackCorrection

A general Black piece move allows the threat or a general mate; Black corrects with the same piece to parry it, forcing a new mate or refuting a try.

Thema Pattern Specification (.thm)
def [a:N|B|R|Q b]
key K (T) [A B]
where same_piece(a, b), a.to != b.to,
  ((!A.recaptures(a) && !B.recaptures(b))
    || (T.to == a.from && (!A.recaptures(a)
    || !B.recaptures(b)) && A.from != B.from)),
  (a.role == 'N' || (!a.capture || !b.capture))
story "Black correction: Key 1.{K}! threatens 2.{T}#.
  A general defense allows the threat, while corrected
  defenses 1...{a} and 1...{b} parry it but allow 2.{A}#
  and 2.{B}#."
---
def [a:N|B|R|Q b c]
key K [A A B]
where A != B, same_piece(a, b, c),
  distinct(a.to, b.to, c.to), a.to != A.to, b.to != A.to,
  !(c.capture && B.recaptures(c)),
  !(K.threat_count == 0 && !c.capture
    && guards(c.from, A.to) && guards(c.to, A.to)),
  !(K.threat_count == 0 && between(c.from, A.from, A.to)
    && collinear(A.from, c.from, c.to))
story "Black correction: Key 1.{K}!{threat_clause}.
  General moves 1...{a} and 1...{b} allow mate 2.{A}#,
  while corrected defense 1...{c} allows distinct
  mate 2.{B}#."
---
def [a:N|B|R|Q b]
try [A !]
try [! B]
where same_piece(a, b), a.to != b.to, !a.capture,
  !b.capture, A.to != a.to, B.to != b.to
story "Black correction: Correction defenses 1...{a} and
  1...{b} by the same Black piece reciprocally allow mates
  2.{A}#, 2.{B}# and refute tries 1.{Tr1}?, 1.{Tr2}?."
---
def [a:N|B|R|Q b c]
try [A A !]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  a.to != A.to, b.to != A.to, !c.capture
story "Black correction: In try 1.{Tr}?, general moves
  1...{a} and 1...{b} allow 2.{A}# while corrected defense
  1...{c}! refutes."
---
def [a:N|B|R|Q b c]
key K [A A A]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  a.to != A.to, b.to != A.to, c.to == A.to, !c.check,
  !(K.threat_count == 0 && c.slider)
story "Black correction: Key 1.{K}!{threat_clause}.
  Random moves 1...{a} and 1...{b} allow quiet mate
  2.{A}#, while corrected move 1...{c} interposes
  on {c.to} and is captured by 2.{A}#."
---
def [a:N|B|R|Q b c]
key [XA XA A]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  !X.recaptures(a), !X.recaptures(b)
story "Black correction: Key 1.{K}!{threat_clause}.
  Random moves 1...{a} and 1...{b} allow dual mates,
  while corrected move 1...{c} forces 2.{A}#."
---
def [a:B|R|Q b c]
key [XA YA B]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  X.recaptures(a), Y.recaptures(b), !A.recaptures(a),
  !A.recaptures(b), !c.capture
story "Black correction: Key 1.{K}!{threat_clause}.
  Random moves 1...{a} and 1...{b} allow general mate
  2.{A}#, while corrected defense 1...{c} parries 2.{A}#
  and allows 2.{B}#."
---
def [a:N|B|R|Q b c]
key [XA A B]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  a.to != A.to, b.to != A.to
story "Black correction: Key 1.{K}!{threat_clause}.
  Random moves 1...{a} and 1...{b} allow general mate
  2.{A}#, while corrected defense 1...{c} forces 2.{B}#."
---
def [a:N|B|R|Q b c]
key [XA YA B]
where same_piece(a, b, c), distinct(a.to, b.to, c.to),
  a.to != A.to, b.to != A.to
story "Black correction: Key 1.{K}!{threat_clause}.
  Random moves 1...{a} and 1...{b} allow general mate
  2.{A}#, while corrected defense 1...{c} forces 2.{B}#."

# Threat correction

mate2::types::NamedTheme::ThreatCorrection

White correction where general moves threaten A and corrected move threatens B.

Thema Pattern Specification (.thm)
try Tr1 (A) [!]
try Tr2 (A) [!]
any K (B*)
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  Tr1.threat_count == Tr2.threat_count, A.from != Tr1.to,
  (A.from != B.from || A.to != B.to)
with -match_threat_count -single_refutation
  -capture_try_piece -refutation_is_check
story "Threat correction: Random tries 1.{Tr1}? and
  1.{Tr2}? threatened 2.{A}# (refuted by 1...{a}!);
  1.{K}! corrects the threat to 2.{B}#."
---
try Tr1 (A) [! _]
try Tr2 (A) [_ !]
key K (B)
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  (Tr1.threat_count == Tr2.threat_count
    || K.opens_line(WK) || Tr1.opens_line(WK)
    || Tr1.capture || Tr2.capture),
  (A.from != Tr1.to || B.from != K.to),
  (A.from != B.from || A.to != B.to)
with -match_threat_count -single_refutation
  -capture_try_piece -refutation_is_check
story "Threat correction: Random tries 1.{Tr1}? and
  1.{Tr2}? threatened 2.{A}# (refuted by 1...{a}! and
  1...{b}!); Key 1.{K}! corrects the threat to 2.{B}#."
---
try Tr1 (A) [! _]
try Tr2 (B) [_ !]
key K (C)
where same_piece(Tr1, Tr2, K),
  distinct(Tr1.to, Tr2.to, K.to),
  (K.opens_line(WK) || Tr1.opens_line(WK)
    || A.to == K.from || A.from == Tr1.to
    || B.from == Tr2.to),
  (A.from != C.from || A.to != C.to || B.from != C.from
    || B.to != C.to)
with -match_threat_count -single_refutation
  -capture_try_piece -refutation_is_check
story "Threat correction: Tries 1.{Tr1}? (threat 2.{A}#,
  refuted by 1...{a}!) and 1.{Tr2}? (threat 2.{B}#,
  refuted by 1...{b}!) are corrected by Key 1.{K}!
  (threat 2.{C}#)."
---
try Tr (A)
key K (B)
where same_piece(Tr, K), Tr.to != K.to,
  (K.opens_line(WK) || Tr.opens_line(WK) || A.to == K.from
    || (A.from == Tr.to && B.from != K.to)),
  (A.from != B.from || A.to != B.to)
with -match_threat_count -capture_try_piece
  -refutation_is_check
story "Threat correction: Try 1.{Tr}? threatened 2.{A}#;
  Key 1.{K}! by the same piece corrects the threat
  to 2.{B}#."

# Stocchi blocks

mate2::types::NamedTheme::StocchiBlocks

Multiple self-blocks on the same flight square answered by different checkmates.

Thema Pattern Specification (.thm)
def [a:!K b:!K c:!K]
key [A B C]
where same_square(a, b, c), (a, b, c).self_block
subsumes DefencesOnSameSquare, Laitinen
story "Stocchi blocks: Key 1.{K}!{threat_clause} answers
  three self-blocks on {a.to} with distinct checkmates:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Secondary black correction

mate2::types::NamedTheme::SecondaryCorrection

Three levels of Black defense by the same piece: random move, first correction, and second correction (tertiary mate).

Thema Pattern Specification (.thm)
key [A A B C]
where same_piece(a, b, c, d), a.to < b.to, c.to < d.to,
  distinct(a.to, b.to, c.to, d.to), c.corrects(a),
  d.corrects(a), !c.check, !d.check, B.mate_count == 1,
  C.mate_count == 1
with -match_mate_count
story "Secondary Black correction:
  Key 1.{K}!{threat_clause} meets three tiers of defense
  by the same piece: random move 1...{a} allows 2.{A}#,
  primary correction 1...{c} allows 2.{B}#, and secondary
  correction 1...{d} allows 2.{C}#."

# Tertiary black correction

mate2::types::NamedTheme::TertiaryCorrection

Four levels of Black defense by the same piece, each distinguishing a further refined checkmate.

Thema Pattern Specification (.thm)
key [A A B C D]
where same_piece(a, b, c, d, e), a.to < b.to, c.to < d.to,
  d.to < e.to, distinct(a.to, b.to, c.to, d.to, e.to),
  c.corrects(a), d.corrects(a), e.corrects(a), !c.check,
  !d.check, !e.check,
  (B.mate_count == 1 && C.mate_count == 1)
    || (B.mate_count == 1 && D.mate_count == 1)
    || (C.mate_count == 1 && D.mate_count == 1)
with -match_mate_count
subsumes SecondaryCorrection
story "Tertiary Black correction:
  Key 1.{K}!{threat_clause} meets four tiers of Black
  defense, each parrying previous flaws only to permit
  distinct mates: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
---
key K (D) [A A B C D]
where same_piece(a, b, c, d, e), a.to < b.to, c.to < d.to,
  d.to < e.to, distinct(a.to, b.to, c.to, d.to, e.to),
  c.corrects(a), d.corrects(a), e.corrects(a), !c.check,
  !d.check, !e.check,
  (B.mate_count == 1 && C.mate_count == 1)
    || (B.mate_count == 1 && D.mate_count == 1)
    || (C.mate_count == 1 && D.mate_count == 1)
with -match_threat_count -match_mate_count
subsumes SecondaryCorrection
story "Tertiary Black correction:
  Key 1.{K}!{threat_clause} meets four tiers of Black
  defense, each parrying previous flaws only to permit
  distinct mates: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."

# Arrival correction

mate2::types::NamedTheme::ArrivalCorrection

Correction by Black based on the arrival square of different defending pieces.

Thema Pattern Specification (.thm)
key [A B C]
where same_square(a, b, c),
  distinct(a.from, b.from, c.from)
subsumes DefencesOnSameSquare, Laitinen
story "Arrival correction: Key 1.{K}!{threat_clause}
  meets correction based on arrival square {a.to}:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Somov (A)

mate2::types::NamedTheme::SomovA

Somov theme form A: self-block flaw on the King's field allows mate.

Thema Pattern Specification (.thm)
key [A B C]
where same_square(a, b, c), (a, b, c).self_block,
  distinct(a.from, b.from, c.from)
subsumes ArrivalCorrection
story "Somov A: Key 1.{K}!{threat_clause} exploits
  a self-block flaw on the King's field square {a.to}:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Ural theme

mate2::types::NamedTheme::Ural

Three correcting moves in Black corrections are self-blocks.

Thema Pattern Specification (.thm)
def [r1 a r2 b r3 c]
key [T1* A* T2* B* T3* C*]
where a.corrects(r1), b.corrects(r2), c.corrects(r3),
  (a, b, c).self_block, distinct(A, B, C)
with -match_mate_count
subsumes SelfBlock
story "Ural theme: Key 1.{K}!{threat_clause}; three
  correcting moves in Black corrections are self-blocks:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."
---
def [a:N|B|R|Q b:N|B|R|Q c:N|B|R|Q]
key [A* B* C*]
where (a, b, c).self_block,
  (same_piece(a, b) || same_piece(b, c)
    || same_piece(a, c)),
  distinct(A, B, C)
with -match_mate_count
subsumes SelfBlock
story "Ural theme: Key 1.{K}!{threat_clause}; three
  correcting moves in Black corrections are self-blocks:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Somov (C)

mate2::types::NamedTheme::SomovC

Black correction defense whose secondary flaw is opening a White line of attack toward the Black King.

Thema Pattern Specification (.thm)
def [r a]
key (T) [T A]
where a.corrects(r), a.opens_line(A)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes ThreatKey
story "Somov (C): After Key 1.{K}! (threat 2.{T}#),
  random move 1...{r} allows 2.{T}#, while Black
  correction 1...{a} opens a White line for 2.{A}#."

# Somov (E)

mate2::types::NamedTheme::SomovE

Black correction defense whose secondary flaw is interfering with a friendly Black line-piece.

Thema Pattern Specification (.thm)
def [r a]
key (T) [T A]
where a.corrects(r), a.parries(T), a.interferes_for(A)
subsumes CrossCheck, LineClosure, ProvokedCheck,
  SelfInterference, ThreatKey
story "Somov (E): After Key 1.{K}! (threat 2.{T}#), random
  move 1...{r} allows 2.{T}#, while Black correction
  1...{a} interferes with a friendly line-piece,
  allowing 2.{A}#."

# Mutual Black correction

mate2::types::NamedTheme::MutualCorrection

Two distinct Black pieces execute correction moves to the exact same destination square.

Thema Pattern Specification (.thm)
def [r1 a r2 b]
key (T) [T A T B]
where a.corrects(r1), b.corrects(r2), diff_piece(a, b),
  a.to == b.to
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
subsumes DefencesOnSameSquare, Laitinen, ThreatKey
story "Mutual Black correction: Key 1.{K}! (threat 2.{T}#)
  induces two Black pieces to correct on the same square
  {a.to}: 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Correction self-block

mate2::types::NamedTheme::CorrectionSelfBlock

A Black correction move simultaneously self-blocks a flight square of the Black King, met by a non-capturing mate.

Thema Pattern Specification (.thm)
def [r a]
key (T) [T A]
where a.corrects(r), a.self_block, A.to != a.to
subsumes CrossCheck, ProvokedCheck, SelfBlock, ThreatKey
story "Correction self-block: After Key 1.{K}!
  (threat 2.{T}#), Black correction 1...{a} (correcting
  1...{r}) self-blocks on {a.to}, allowing 2.{A}#."

# Kiev theme

mate2::types::NamedTheme::Kiev Alias: Kiev

Two tries by a White slider along a line with the same threat are refuted by random and correction moves of a Black Knight; the key along that line answers both.

Thema Pattern Specification (.thm)
def [a:N b:N]
try Tr1 (T) [! _]
try Tr2 (T) [_ !]
key K (T) [A B]
where same_piece(Tr1, Tr2, K), K.slider, same_piece(a, b),
  a.to != b.to
subsumes Isaev, ThreatKey, WhiteCorrection
story "Kiev theme: Slider tries 1.{Tr1}? (1...{a}!)
  and 1.{Tr2}? (1...{b}!) with threat 2.{T}# are solved
  by 1.{K}!, answering 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Anti-Führer

mate2::types::NamedTheme::AntiFuehrer Alias: Povenets

A check-provoking key exposes the White King to random and correction checks by a Black Knight, forcing two different White pieces to deliver cross-check mates on the same square.

Thema Pattern Specification (.thm)
def [a:N:+ b:N:+]
key K [A B]
where same_piece(a, b), a.to != b.to, A.from != B.from,
  A.to == B.to
subsumes Barulin, BlackCorrection, CrossCheck,
  ProvokedCheck
story "Anti-Führer (Povenets): Key 1.{K}!{threat_clause}
  provokes Knight checks 1...{a} and 1...{b}, answered
  on {A.to} by 2.{A}# and 2.{B}#."

# Velimirovic attack

mate2::types::NamedTheme::VelimirovicAttack

White Knight correction tries are refuted by a Black Queen/slider moving to a board corner square.

Thema Pattern Specification (.thm)
try Tr1:N [A !]
try Tr2:N [_ B]
key K:N [C D]
where same_piece(Tr1, Tr2, K),
  (b.to in CORNERS || b.from in CORNERS)
subsumes ChangedPlay, CornerMove
story "Velimirovic attack: White Knight correction tries
  1.{Tr1}? (refuted by corner move 1...{b}!) and 1.{Tr2}?
  lead to Key 1.{K}!."

# Anti-Somov A1

mate2::types::NamedTheme::AntiSomovA1

In a try and the key (or two variations), Black defenses close lines to allow mates on the same square by two different White pieces.

Thema Pattern Specification (.thm)
try [A B]
key [C D]
where A.to == B.to, A.from != B.from, C.to == D.to,
  C.from != D.from
subsumes Barulin, ChangedPlay
story "Anti-Somov A1: Try 1.{Tr}? (2.{A}#, 2.{B}#
  on {A.to}) and Key 1.{K}! (2.{C}#, 2.{D}# on {C.to})
  swap same-square mates."
Chapter Section · 15 Themes

08. Checks, Cross-Checks & Counter-Attacks

Defensive checks parried by cross-checking checkmates, double checks, checking keys, and provoked checks.

# Cross-Check

mate2::types::NamedTheme::CrossCheck Alias: Cross check

Black defense gives check to White King, answered by White checkmate without directly capturing the checking piece.

Thema Pattern Specification (.thm)
def [a:+]
any [A]
where A.fires_battery || !A.recaptures(a)
story "Cross-check: Key 1.{K}!{threat_clause} The
  check 1...{a}+ is answered by the counter-checking
  checkmate 2.{A}#"

# Double Check Mate

mate2::types::NamedTheme::DoubleCheckMate

White delivers checkmate with a double check.

Thema Pattern Specification (.thm)
key [A]
where A.double_check
story "Double checkmate: Key 1.{K}!{threat_clause}.
  Checkmate 2.{A}# strikes the King from two different
  directions simultaneously."
---
key (A)
where A.double_check
with -match_threat_count
story "Double checkmate: Key 1.{K}! threatens double
  checkmate 2.{A}#."

# Checking Key

mate2::types::NamedTheme::CheckingKey

The Key move gives check to the Black King.

Thema Pattern Specification (.thm)
key K:+
story "Checking key: Key 1.{K}! boldly opens the solution
  with a direct check to the Black King."

# Double check

mate2::types::NamedTheme::DoubleCheck

White delivers checkmate with a double check from two distinct pieces simultaneously.

Thema Pattern Specification (.thm)
key [A]
where A.double_check
story "Double check: Key 1.{K}!{threat_clause}.
  White delivers checkmate 2.{A}# with two pieces checking
  simultaneously against 1...{a}."
---
key (A)
where A.double_check
with -match_threat_count
story "Double check: Key 1.{K}! threatens double
  checkmate 2.{A}#."

# Check-giving key

mate2::types::NamedTheme::CheckGivingKey Alias: Checking Key

White key move delivers check to the Black King.

Thema Pattern Specification (.thm)
key K:+ [A]
with -match_mate_count
subsumes CheckingKey
story "Check-giving key: Key 1.{K}! gives direct check,
  met by 1...{a} 2.{A}#."

# Provoked Check

mate2::types::NamedTheme::ProvokedCheck

White key invites or provokes a Black check, which is answered by cross-checkmate.

Thema Pattern Specification (.thm)
def [a:+]
key K [A:+]
where K.role == 'K' || a.to == K.to || a.to == K.from
    || between(K.from, a.from, a.to)
    || between(K.from, a.to, WK)
    || collinear(K.from, a.from, WK) || K.unpins(BK)
    || (a.role == 'K' && K.flights_given > 0)
    || K.threat_count == 0
story "Provoked check: White key 1.{K}!{threat_clause}
  invites Black check 1...{a}+, decisively countered
  by checkmate 2.{A}#."

# Cross-check key

mate2::types::NamedTheme::CrossCheckKey

The problem starts with White in check, and the key parries check while delivering check (or checkmate).

Thema Pattern Specification (.thm)
key K:+ [A]
where start_is_check()
subsumes CheckGivingKey
story "Cross-check key: Key 1.{K}! boldly parries
  a check while delivering check, meeting defense with
  checkmate 2.{A}#."

# Double cross-check

mate2::types::NamedTheme::DoubleCrossCheck

Two distinct Black checking defenses are met by non-capturing cross-check mates.

Thema Pattern Specification (.thm)
def [a:+ b:+]
key [A!@a B!@b]
story "Double cross-check: Key 1.{K}!{threat_clause}
  meets two Black checks with non-capturing cross-checks:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Triple cross-check

mate2::types::NamedTheme::TripleCrossCheck

Three distinct Black checking defenses are answered by distinct cross-check mates.

Thema Pattern Specification (.thm)
def [a:+ b:+ c:+]
key [A B C]
subsumes DoubleCrossCheck, ProvokedCheck
story "Triple cross-check: Key 1.{K}!{threat_clause}
  parries three Black checks with distinct cross-check
  mates: 1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Changed cross-check

mate2::types::NamedTheme::ChangedCrossCheck

The same Black checking defense is answered by one cross-check mate in virtual play and by a different cross-check mate in actual play.

Thema Pattern Specification (.thm)
def [a:+]
^vir [A]
^+any [B]
subsumes ChangedMate
story "Changed cross-check: Black check 1...{a} is
  answered by 2.{A}# in {phase1}, and by changed
  cross-check 2.{B}# in {phase2}."

# Switchback cross-check

mate2::types::NamedTheme::SwitchbackCrossCheck

A Black checking defense is answered by a switchback cross-check mate of the White key piece returning to its origin square.

Thema Pattern Specification (.thm)
def [a:+]
key K [A~K]
subsumes ProvokedCheck, Switchback
story "Switchback cross-check: Key 1.{K}!{threat_clause}
  answers Black check 1...{a} with a switchback return
  to {K.from}: 2.{A}#."

# Self-block cross-check

mate2::types::NamedTheme::SelfBlockCrossCheck

A Black checking defense simultaneously self-blocks a flight square of the Black King, met by a non-capturing cross-check mate.

Thema Pattern Specification (.thm)
def [a:+]
key [A!@a]
where a.self_block
subsumes SelfBlock
story "Self-block cross-check:
  After Key 1.{K}!{threat_clause}, Black check 1...{a}
  self-blocks on {a.to}, allowing cross-check 2.{A}#."

# Theme E

mate2::types::NamedTheme::ThemeE Alias: Thema E

Two Black checking defenses on the same square pin or block one of two White pieces, forcing the other to deliver cross-check mate on the same square.

Thema Pattern Specification (.thm)
def [a:+ b:+]
key [A B]
where same_square(a, b), a.from != b.from,
  A.from != B.from, A.to == B.to
subsumes Barulin, DefencesOnSameSquare, Laitinen,
  ProvokedCheck
story "Theme E: Key 1.{K}!{threat_clause}. Checking
  defenses 1...{a} and 1...{b} on {a.to} force distinct
  White cross-checks on {A.to}: 2.{A}# vs 2.{B}#."

# Padulli type

mate2::types::NamedTheme::Padulli Alias: Padulli

A checking key grants at least two new King flights and replaces set-play mates with completely new flight-variation mates.

Thema Pattern Specification (.thm)
vir [A B _ _]
key K:+ [_ _ C D]
where K.flights_given >= 2, (c, d).role == 'K',
  c.to != d.to
subsumes CheckGivingKey, FlightGivingKey
story "Padulli type: Checking Key 1.{K}! grants flights
  1...{c} 2.{C}# and 1...{d} 2.{D}#, replacing set-play
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Pseudo Umnov 1

mate2::types::NamedTheme::PseudoUmnov1 Alias: Pseudo Umnov

A Black checking defense vacates a square that White's cross-check mate immediately occupies (Umnov cross-check).

Thema Pattern Specification (.thm)
def [a:+]
key [A@a.from]
where !A.capture
subsumes CrossCheck, ProvokedCheck
story "Pseudo Umnov 1: Key 1.{K}!{threat_clause}.
  Checking defense 1...{a} vacates {a.from}, allowing
  cross-check mate 2.{A}# on {a.from}."
Chapter Section · 37 Themes

09. King Flights & Board Geometry

Flights granted to the Black King (stars, crosses, Y-flights, radial wheels) and board extremity play (corners, perimeters).

# Star Flights

mate2::types::NamedTheme::StarFlights Alias: Star flights

Black King has 4 diagonal flight moves in defense, each answered by checkmate.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
any [A* B* C* D*]
where a.sw, b.se, c.nw, d.ne,
  count_distinct(A, B, C, D) >= 2
with -match_mate_count
subsumes KingFlight
story "Star flights: Key 1.{K}!{threat_clause} The
  Black king flees to all four diagonal flight squares:
  1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#;
  1...{c} allows 2.{C}#; 1...{d} allows 2.{D}#"

# Cross Flights

mate2::types::NamedTheme::CrossFlights Alias: Cross flights

Black King has 4 orthogonal flight moves in defense, each answered by checkmate.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
key [A B C D]
where a.south, b.north, c.west, d.east
with -match_mate_count
subsumes KingFlight
story "Cross flights: Key 1.{K}!{threat_clause} The
  Black king darts to all four orthogonal flight squares:
  1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#;
  1...{c} allows 2.{C}#; 1...{d} allows 2.{D}#"

# Flight Giving Key

mate2::types::NamedTheme::FlightGivingKey

The Key move increases the Black King's available escape flight squares (net flights given ≥ 1).

Thema Pattern Specification (.thm)
key K
where K.flights_given - K.flights_taken > 0
story "Flight-giving key: Key 1.{K}!{threat_clause}
  generously grants flight squares to the Black King."

# Corner Move

mate2::types::NamedTheme::CornerMove

A thematic move lands on a corner square (a1, a8, h1, h8).

Thema Pattern Specification (.thm)
key K
where K.to.corner
story "Corner move: Key 1.{K}!{threat_clause} moves
  to corner square {K.to}."
---
key K [A]
where !K.to.corner, A.to.corner
story "Corner move: Key 1.{K}!{threat_clause} features
  play to a corner square (1...{a} 2.{A}#)."

# Flight Taking Key

mate2::types::NamedTheme::FlightTakingKey

The Key move reduces the Black King's available escape flight squares (net flights taken ≥ 1).

Thema Pattern Specification (.thm)
key K
where K.flights_taken - K.flights_given > 0
story "Flight-taking key: Key 1.{K}!{threat_clause}
  restricts the Black King by seizing a vital
  flight square."

# Two Flights Giving Key

mate2::types::NamedTheme::TwoFlightsGivingKey

The Key move provides a net increase of two escape flight squares to the Black King.

Thema Pattern Specification (.thm)
key K
where K.flights_given - K.flights_taken == 2
subsumes FlightGivingKey
story "Two flights giving key: Key 1.{K}!{threat_clause}
  magnanimously concedes two flight squares
  to the Black King."

# Three Flights Giving Key

mate2::types::NamedTheme::ThreeFlightsGivingKey

The Key move provides a net increase of three escape flight squares to the Black King.

Thema Pattern Specification (.thm)
key K
where K.flights_given - K.flights_taken == 3
subsumes FlightGivingKey, TwoFlightsGivingKey
story "Three flights giving key: Key 1.{K}!{threat_clause}
  offers three flight squares to the Black King."

# Four Flights Giving Key

mate2::types::NamedTheme::FourFlightsGivingKey

The Key move provides a net increase of at least four escape flight squares to the Black King.

Thema Pattern Specification (.thm)
key K
where K.flights_given - K.flights_taken >= 4
subsumes FlightGivingKey, ThreeFlightsGivingKey,
  TwoFlightsGivingKey
story "Four flights giving key: Key 1.{K}!{threat_clause}
  offers four flight squares to the Black King."

# Smothered Mate

mate2::types::NamedTheme::SmotheredMate

Knight checkmate where the Black King is completely surrounded and has 0 flights.

Thema Pattern Specification (.thm)
key [A]
where A.smothered_mate
story "Smothered mate: Key 1.{K}!{threat_clause}.
  The Black King is trapped within its own ranks;
  defense 1...{a} is met by Knight checkmate 2.{A}#."

# Mari

mate2::types::NamedTheme::Mari Alias: Mari theme

Black defenses open White lines of guard to a flight square (or self-block it), relieving White pieces to abandon their guard and deliver distinct mates.

Thema Pattern Specification (.thm)
key [A B]
where same_square(a, b), a.from != b.from, A != B,
  ((a, b).unpins(BK) || (A.to == b.from
    && B.to == a.from))
story "Mari: Key 1.{K}!{threat_clause}.
  Mutual self-unpinning and cross-checks across defenses
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."
---
key K [A B]
where K.threat_count <= 1, a.from != b.from, A != B,
  a.opens_line(WK), b.opens_line(WK), !A.recaptures(a),
  !B.recaptures(b),
  (K.threat_count > 0 || K.flights_given > 0
    || K.active_sacrifice)
story "Mari: Key 1.{K}!{threat_clause}.
  Defenses 1...{a} and 1...{b} open White lines of action,
  enabling mates 2.{A}# and 2.{B}#."
---
key K [A B]
where K.threat_count <= 1, a.to != b.to, A != B,
  a.self_block, b.self_block, A.to != a.to, B.to != b.to,
  attacks(A.from, a.to), !attacks(A.to, a.to),
  attacks(B.from, b.to), !attacks(B.to, b.to)
story "Mari: Key 1.{K}!{threat_clause}. Self-blocks
  1...{a} and 1...{b} allow mates 2.{A}# and 2.{B}# that
  abandon guard of the blocked flight squares."

# Flight capture

mate2::types::NamedTheme::FlightCapture

Black King captures an attacking or guarding White piece on a flight square.

Thema Pattern Specification (.thm)
def [a:K:x]
key [A]
subsumes KingFlight
story "Flight capture: Key 1.{K}!{threat_clause}.
  Black King captures a piece on a flight square
  (1...{a}), met by checkmate 2.{A}#."

# Corner-to-corner

mate2::types::NamedTheme::CornerToCorner

A move traveling directly across the chessboard from one corner square to another (rank, file, or diagonal).

Thema Pattern Specification (.thm)
any K [A]
where K.corner_to_corner || A.corner_to_corner
story "Corner-to-corner: Key 1.{K}!{threat_clause}.
  A move traverses the board directly from one corner
  to another, culminating in 2.{A}# against 1...{a}."

# Model mate

mate2::types::NamedTheme::ModelMate

A pure and economical checkmate: all White pieces (except King and Pawns) participate, and each flight is guarded exactly once.

Thema Pattern Specification (.thm)
key [A]
where A.model_mate
story "Model mate: Key 1.{K}!{threat_clause} leads against
  1...{a} to a model mate 2.{A}# with pure flight control
  and complete piece participation."

# Self‑block

mate2::types::NamedTheme::SelfBlock Alias: Self-block

Black defense occupies a flight square adjacent to the Black King, taking away that flight and allowing mate.

Thema Pattern Specification (.thm)
key [A!@a]
where a.self_block
with -match_mate_count
story "Self-block: Key 1.{K}!{threat_clause} compels
  defense 1...{a} which deprives the Black King of flight
  square {a.to}, enabling 2.{A}#."

# King flight

mate2::types::NamedTheme::KingFlight

A defense consisting of the Black King moving to an available flight square.

Thema Pattern Specification (.thm)
def [a:K]
key [A]
story "King flight: Key 1.{K}!{threat_clause} is met
  by Black King flight 1...{a}, promptly answered
  by checkmate 2.{A}#."

# Flight-giving and -taking key

mate2::types::NamedTheme::FlightGivingAndTakingKey

White key move grants one or more new flights to the Black King while taking away others.

Thema Pattern Specification (.thm)
key K
where K.flights_given > 0, K.flights_taken > 0
story "Flight-giving and -taking key:
  Key 1.{K}!{threat_clause} simultaneously grants new
  flight(s) to the Black King while taking away existing
  flight(s)."

# King Y-flight

mate2::types::NamedTheme::KingYFlight Alias: Y-flights

Black King has three flight moves forming a Y-shape pattern.

Thema Pattern Specification (.thm)
key K
where BK.y_flight
story "King Y-flight: Key 1.{K}!{threat_clause} grants
  the Black King three flights in a Y-formation."
---
def [a:K b:K c:K]
any [A* B* C*]
where same_piece(a, b, c), count_distinct(A, B, C) >= 2,
  (({a.to, b.to} == {a.from.left_up, a.from.right_up}
    && c.to == a.from.down) || ({a.to, b.to} ==
    {a.from.left_down, a.from.right_down}
    && c.to == a.from.up) || ({a.to, b.to} ==
    {a.from.left_up, a.from.left_down}
    && c.to == a.from.right) || ({a.to, b.to} ==
    {a.from.right_up, a.from.right_down}
    && c.to == a.from.left))
with -match_mate_count
story "King Y-flight: Three King flights forming
  a Y-formation: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."

# 2 flights taking key

mate2::types::NamedTheme::TwoFlightsTakingKey

White key reduces the Black King's available flight squares by at least two (net flights taken ≥ 2).

Thema Pattern Specification (.thm)
key K
where K.flights_taken - K.flights_given >= 2
subsumes FlightTakingKey
story "Two flights taking key: Key 1.{K}!{threat_clause}
  deprives the Black King of two flight squares."

# Gockel

mate2::types::NamedTheme::Gockel Alias: Gockel theme

Flight-giving key followed by multiple checkmates by the same White piece.

Thema Pattern Specification (.thm)
key K [A B]
where K.flights_given > 0, BK.flights >= 2,
  same_piece(A, B), K.mating_origins == 1
subsumes FlightGivingKey, KingFlight
story "Gockel: Flight-giving key 1.{K}!{threat_clause}
  answers defenses with checkmates by the same piece:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Unblock

mate2::types::NamedTheme::Unblock

A piece vacates an obstructed flight square in the King's field.

Thema Pattern Specification (.thm)
^any K [A* B*]
where K.threat_count > 0, (a, b).role != 'K',
  distance(a.from, BK) == 1, distance(b.from, BK) == 1,
  (distance(a.to, BK) > 1 || A.to == a.from
    || attacks(A.to, a.from) || (!A.fires_battery
    && A.battery_rear >= 0)),
  (distance(b.to, BK) > 1 || B.to == b.from
    || attacks(B.to, b.from) || (!B.fires_battery
    && B.battery_rear >= 0)),
  (a.from != b.from || (A != B && distance(a.to, BK) > 1
    && distance(b.to, BK) > 1 && !(a.check
    && A.recaptures(a)) && !(b.check && B.recaptures(b))))
with -match_threat_count -match_mate_count
  -capture_try_piece -single_refutation
story "Unblock: Flight square unblockings 1...{a} and
  1...{b} are met by checkmates 2.{A}# and 2.{B}#."
---
key K (X) [X* B*]
where (a, b).role != 'K', a.from != b.from,
  distance(a.from, BK) == 1, distance(b.from, BK) == 1,
  distance(a.to, BK) > 1, distance(b.to, BK) > 1
with -match_threat_count -match_mate_count
story "Unblock: Flight square unblockings 1...{a} and
  1...{b} are met by checkmates 2.{X}# and 2.{B}#."

# Four corners

mate2::types::NamedTheme::FourCorners

Moves to or interactions on all four corner squares of the board (a1, a8, h1, h8).

Thema Pattern Specification (.thm)
key [A B C D]
where (A, B, C, D).to.corner,
  distinct(A.to, B.to, C.to, D.to)
with -match_mate_count
story "Four corners: Key 1.{K}!{threat_clause} reaches all
  four corner squares of the board across variations."
---
key K [A B]
where {K.from, K.to, A.to, B.to} == CORNERS
story "Four corners: Key 1.{K}!{threat_clause} and
  mates 2.{A}#, 2.{B}# visit all four corner squares
  of the board."
---
key K [A B C]
where {A.from, A.to, B.to, C.to} == CORNERS
story "Four corners: After Key 1.{K}!{threat_clause},
  mates 2.{A}#, 2.{B}#, and 2.{C}# from {A.from} visit all
  four corner squares of the board."
---
try T
key K [A]
where {K.from, K.to, T.to, A.to} == CORNERS
story "Four corners: Try 1.{T}?,
  Key 1.{K}!{threat_clause}, and mate 2.{A}# visit all
  four corner squares of the board."
---
try T1
try T2
key K
where {T1.from, T1.to, T2.to, K.to} == CORNERS
story "Four corners: Tries 1.{T1}?, 1.{T2}? and
  Key 1.{K}!{threat_clause} visit all four corner squares
  of the board."

# WK star

mate2::types::NamedTheme::WkStar Alias: White King star

White King moves in 4 diagonal directions (star formation).

Thema Pattern Specification (.thm)
key [A:K B:K C:K D:K]
where A.nw, B.ne, C.sw, D.se
story "White King star: Key 1.{K}!{threat_clause} leads
  to the White King moving along four diagonal star rays
  across variations: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
---
any A:K
any B:K
any C:K
any D:K
where same_piece(A, B, C, D), A.nw, B.ne, C.sw, D.se
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
story "White King star: The White King on {A.from}
  steps along all four diagonal star rays across phases:
  1.{A}, 1.{B}, 1.{C}, 1.{D}."

# WK cross

mate2::types::NamedTheme::WkCross Alias: White King cross

White King moves in 4 orthogonal directions (cross formation).

Thema Pattern Specification (.thm)
key [A:K B:K C:K D:K]
where A.north, B.south, C.west, D.east
subsumes RoyalBattery
story "White King cross: Key 1.{K}!{threat_clause}
  leads to the White King stepping along four orthogonal
  cross directions to deliver mate: 2.{A}#, 2.{B}#,
  2.{C}#, 2.{D}#."
---
any (A:K) [B:K C:K D:K]
where same_piece(A, B, C, D), cross_dirs(A, B, C, D),
  B.dir < C.dir < D.dir
with -match_threat_count -match_mate_count
subsumes RoyalBattery
story "White King cross: Key 1.{K}! (threat 2.{A}#)
  leads to the White King stepping along four orthogonal
  cross directions to deliver mate: 2.{A}#, 2.{B}#,
  2.{C}#, 2.{D}#."
---
any A:K
any B:K
any C:K
any D:K
where same_piece(A, B, C, D), A.north, B.south, C.west,
  D.east
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
story "White King cross: The White King on {A.from}
  steps along all four orthogonal cross directions across
  phases: 1.{A}, 1.{B}, 1.{C}, 1.{D}."

# Radial flights

mate2::types::NamedTheme::RadialFlights

Black King has multiple flight moves radiating symmetrically from its square.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
key [A* B* C* D*]
where a.to < b.to, b.to < c.to, c.to < d.to
with -match_mate_count
subsumes KingFlight
story "Radial flights: Key 1.{K}!{threat_clause} answers
  four symmetrical radiating King flights: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#, 1...{d} 2.{D}#."

# Horseblock

mate2::types::NamedTheme::Horseblock

A Knight blocks an enemy line or flight square in defense.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N]
key [A B C D]
where (a, b, c, d).self_block
subsumes SelfBlock
story "Horseblock: Key 1.{K}!{threat_clause} compels
  a Black Knight to commit self-blocks across variations:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#,
  1...{d} 2.{D}#."

# Kettner theme

mate2::types::NamedTheme::Kettner

White key creates a direct threat; in at least three variations, Black defenses self-block former Black King flight squares.

Thema Pattern Specification (.thm)
key (X) [A B C]
where (a, b, c).was_flight, (a, b, c).self_block
subsumes SelfBlock, ThreatKey
story "Kettner theme: Key 1.{K}! creates direct threat
  2.{X}#; Black defenses block former flight squares,
  allowing distinct checkmates: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."

# 2 capture flights

mate2::types::NamedTheme::TwoCaptureFlights Alias: Two capture flights

The Black King has at least two distinct legal capture flights on move 1, each met by checkmate.

Thema Pattern Specification (.thm)
def [a:K:x b:K:x]
key [A B]
where a.to != b.to
subsumes FlightCapture
story "Two capture flights: Key 1.{K}!{threat_clause}
  allows the Black King two distinct capture flights:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# King T-flight

mate2::types::NamedTheme::BkTShapeFlights Alias: BK T-flight

The Black King has three orthogonal flight squares forming a T-shaped constellation.

Thema Pattern Specification (.thm)
def [a:K b:K c:K]
key [A B C]
where (a, b, c).ortho, distinct(a.to, b.to, c.to)
subsumes KingFlight
story "King T-flight: After Key 1.{K}!{threat_clause},
  the Black King has three orthogonal T-flights:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# 3 capture flights

mate2::types::NamedTheme::ThreeCaptureFlights Alias: Three capture flights

The Black King has at least three distinct legal capture flights on move 1, each met by checkmate.

Thema Pattern Specification (.thm)
def [a:K:x b:K:x c:K:x]
key [A B C]
where distinct(a.to, b.to, c.to)
subsumes TwoCaptureFlights
story "Three capture flights: Key 1.{K}!{threat_clause}
  grants the Black King three capture flights:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# 4 capture flights

mate2::types::NamedTheme::FourCaptureFlights Alias: Four capture flights

The Black King has four distinct legal capture flights on move 1, each met by checkmate.

Thema Pattern Specification (.thm)
def [a:K:x b:K:x c:K:x d:K:x]
key [A B C D]
where distinct(a.to, b.to, c.to, d.to)
with -match_mate_count
subsumes FlightGivingKey, RadialFlights,
  ThreeCaptureFlights
story "Four capture flights: Key 1.{K}!{threat_clause}
  grants the Black King four capture flights:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#,
  and 1...{d} 2.{D}#."

# Magnetic Black King

mate2::types::NamedTheme::MagneticKing

Three different White pieces deliver contact checkmates on squares immediately adjacent to the Black King.

Thema Pattern Specification (.thm)
key [A B C]
where diff_piece(A, B, C), distance(A.to, BK) == 1,
  distance(B.to, BK) == 1, distance(C.to, BK) == 1
story "Magnetic Black King: After
  Key 1.{K}!{threat_clause}, three distinct White pieces
  deliver contact mates adjacent to the Black King:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Alain C. White theme

mate2::types::NamedTheme::AlainCWhite

A flight-giving sacrificial key on a square adjacent to the Black King is captured by three Black pieces (including the Black King and two sliders), producing three distinct mates.

Thema Pattern Specification (.thm)
def [a:Q|R|B:x@K b:Q|R|B:x@K c:K:x@K]
key K [A B C]
where a.from != b.from
subsumes DoubleSacrificeKey, RoyalSacrificeKey
story "Alain C. White theme: Flight-giving sacrificial Key
  1.{K}!{threat_clause} on {K.to} is captured by 1...{a}
  (2.{A}#), 1...{b} (2.{B}#), and King 1...{c} (2.{C}#)."

# Kinnunen theme

mate2::types::NamedTheme::Kinnunen Alias: Kinnunen

Two moves of a Black pawn self-block two squares around the Black King, while two moves of a Black slider vacate a flight square (unblock) and open lines.

Thema Pattern Specification (.thm)
def [a:P b:P c:B|R|Q d:B|R|Q]
key [A B C D]
where same_piece(a, b), a.self_block, b.self_block,
  same_piece(c, d), c.to != d.to,
  distance(c.from, BK) == 1
subsumes SelfBlock
story "Kinnunen theme: Key 1.{K}!{threat_clause}. Pawn
  self-blocks (1...{a} 2.{A}#, 1...{b} 2.{B}#) contrast
  with slider unblocks (1...{c} 2.{C}#, 1...{d} 2.{D}#)."

# Octopus theme

mate2::types::NamedTheme::Octopus

A Black Knight adjacent to the Black King executes a wheel of at least six moves that unblock a flight square and self-interfere, forcing six distinct mates.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N e:N f:N]
key [A B C D E F]
where same_piece(a, b, c, d, e, f),
  distinct(a.to, b.to, c.to, d.to, e.to, f.to),
  distance(a.from, BK) == 1,
  count_distinct(A, B, C, D, E, F) >= 5
story "Octopus theme: Key 1.{K}!{threat_clause}.
  Black's Knight on {a.from} unblocks and moves to six
  squares (1...{a}..1...{f}), allowing distinct mates."

# Four-Hands-Round

mate2::types::NamedTheme::FourHandsRound

A square-clearing key allows a White Queen starting on a corner square to deliver mates on at least three other edge/corner squares against Pickabish (Pawn + Bishop) defenses.

Thema Pattern Specification (.thm)
def [a:B b:P c:B d:P]
key K [A:Q B:Q C:Q D:Q]
where same_piece(A, B, C, D), A.from in CORNERS,
  (A.to in CORNERS || B.to in CORNERS || C.to in CORNERS),
  distinct(A.to, B.to, C.to, D.to)
subsumes CornerMove, CornerToCorner
story "Four-Hands-Round: Key 1.{K}!{threat_clause}.
  White's Queen on corner {A.from} tours the board after
  Pickabish defenses: 2.{A}#, 2.{B}#, 2.{C}#, and 2.{D}#."

# Segal

mate2::types::NamedTheme::Segal Alias: Segal theme

Three Black King flights (Kettner) and two Black slider moves to two of those same flight squares produce five distinct checkmates.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:R|B|Q e:R|B|Q]
key [A B C D E]
where distinct(a.to, b.to, c.to), same_piece(d, e),
  d.to == a.to, e.to == b.to
subsumes KingFlight
story "Segal: Key 1.{K}!{threat_clause}.
  Three King flights (1...{a}, 1...{b}, 1...{c}) and two
  slider moves to those squares (1...{d}, 1...{e}) produce
  five distinct mates."

# Anderssen mate

mate2::types::NamedTheme::AnderssenMate Alias: Anderssen's mate

A White King key move grants a flight square to the Black King and then delivers a Royal discovered/capture mate after the Black King moves to that flight.

Thema Pattern Specification (.thm)
def [a:K]
key K:K [A:K]
where K.flights_given >= 1, distance(A.to, BK) <= 2
subsumes FlightGivingKey, KingFlight, RoyalBattery
story "Anderssen mate: White King Key 1.{K}! grants flight
  1...{a} and answers with White King mate 2.{A}#."
Chapter Section · 16 Themes

10. Piece Wheels, Crosses & Geometric Stars

Systematic geometric maneuvers by individual pieces (Knight wheel, Rook crosses, Bishop stars, Queen crosses).

# Knight Wheel

mate2::types::NamedTheme::KnightWheel

A Black Knight moves from a single square to all 8 possible squares across defensive variations.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N e:N f:N g:N h:N]
key [A B C D E F _ _]
where same_piece(a, b, c, d, e, f, g, h), a.to < b.to,
  b.to < c.to, c.to < d.to, d.to < e.to, e.to < f.to,
  g.to < h.to,
  distinct(a.to, b.to, c.to, d.to, e.to, f.to, g.to, h.to)
with -match_mate_count
story "Knight wheel: Key 1.{K}!{threat_clause}.
  The Black Knight on {a.from} visits all 8 compass
  destinations across defensive variations."
---
def [a:N b:N c:N d:N e:N f:N g:N]
key (T) [A B C D E F _]
where same_piece(a, b, c, d, e, f, g), T.to == a.from,
  a.to < b.to, b.to < c.to, c.to < d.to, d.to < e.to,
  e.to < f.to,
  distinct(a.to, b.to, c.to, d.to, e.to, f.to, g.to)
with -match_mate_count
story "Knight wheel: Key 1.{K}!{threat_clause}.
  The Black Knight on {a.from} visits all 8 compass
  destinations across defensive variations."

# White Knight wheel

mate2::types::NamedTheme::WhiteKnightWheel

A White Knight delivers moves to 4 or more distinct wheel destinations.

Thema Pattern Specification (.thm)
key [A:N B:N C:N D:N]
where same_piece(A, B, C, D),
  distinct(A.to, B.to, C.to, D.to)
with -match_mate_count
story "White Knight wheel: Key 1.{K}!{threat_clause}.
  White Knight delivers checkmate to wheel squares
  (2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#)."
---
key (ABCD:N)
where same_piece(A, B, C, D),
  distinct(A.to, B.to, C.to, D.to)
with -match_threat_count
story "White Knight wheel: Key 1.{K}! threatens
  a wheel of White Knight checkmates (2.{A}#, 2.{B}#,
  2.{C}#, 2.{D}#)."
---
try Tr1:N
try Tr2:N
try Tr3:N
any K:N
where same_piece(Tr1, Tr2, Tr3, K), Tr1.to < Tr2.to,
  Tr2.to < Tr3.to, distinct(Tr1.to, Tr2.to, Tr3.to, K.to)
with -match_threat_count
story "White Knight wheel: White Knight on {K.from}
  executes a wheel of first moves across tries (1.{Tr1}?,
  1.{Tr2}?, 1.{Tr3}?) and 1.{K}!"

# Knight star

mate2::types::NamedTheme::KnightStar

A Knight executes moves to all 8 squares arranged in a star/wheel pattern.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N e:N f:N g:N h:N]
+key [A* B* C* D* E* F* G* H*]
where same_piece(a, b, c, d, e, f, g, h),
  a.to < b.to < c.to < d.to < e.to < f.to < g.to < h.to
with -match_mate_count
story "Knight star: Key 1.{K}!{threat_clause} compels
  a Black Knight on {a.from} to defend across all eight
  star vectors: 1...{a} 2.{A}#, 1...{b} 2.{B}#."

# Black knight star

mate2::types::NamedTheme::BlackKnightStar

Black Knight plays to all 8 possible squares.

Thema Pattern Specification (.thm)
def [a:N b:N c:N d:N e:N f:N g:N h:N]
+key [A* B* C* D* E* F* G* H*]
where same_piece(a, b, c, d, e, f, g, h),
  a.to < b.to < c.to < d.to < e.to < f.to < g.to < h.to
with -match_mate_count
subsumes KnightStar
story "Black knight star: Key 1.{K}!{threat_clause}
  compels a Black Knight to defend across all eight
  compass spokes, each met by mate: 1...{a} 2.{A}#,
  1...{b} 2.{B}#."

# Defences on the same square

mate2::types::NamedTheme::DefencesOnSameSquare

Multiple distinct Black defending pieces arrive at the identical square.

Thema Pattern Specification (.thm)
key K [A B]
where same_square(a, b), a.from != b.from,
  !((a.role == 'K' || b.role == 'K') && a.capture
    && b.capture),
  (K.threat_count > 0 || a.self_block || b.self_block
    || a.capture || b.capture || !(a.opens_line(WK)
    || b.opens_line(WK)))
story "Defenses on same square: Key 1.{K}!{threat_clause}
  meets different Black units defending to the same
  square: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Mates on the same square

mate2::types::NamedTheme::MatesOnSameSquare

White checkmates arrive at the same destination square across different variations.

Thema Pattern Specification (.thm)
key [A B]
where same_square(A, B), A.from != B.from
story "Mates on same square: Key 1.{K}!{threat_clause}
  allows checkmates arriving on the same square against
  distinct defenses: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."
---
vir [A B]
key [C D]
where same_square(A, C), same_square(B, D),
  A.from != C.from, B.from != D.from
story "Mates on same square: Key 1.{K}!{threat_clause}
  changes checkmates to arrive on the same squares
  with different pieces: 1...{a} 2.{A}# / 2.{C}#,
  1...{b} 2.{B}# / 2.{D}#."

# BR cross

mate2::types::NamedTheme::BrCross Alias: Black Rook cross

Black Rook defends across 4 orthogonal directions (cross formation).

Thema Pattern Specification (.thm)
def [a:R b:R c:R d:R]
key [A* B* C* D*]
where same_piece(a, b, c, d), a.north, b.south, c.east,
  d.west
with -match_mate_count
story "Black Rook cross: Key 1.{K}!{threat_clause}
  answers a Black Rook defending across four orthogonal
  cross directions: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#, 1...{d} 2.{D}#."

# BB star

mate2::types::NamedTheme::BbStar Alias: Black Bishop star

Black Bishop defends along 4 diagonal branches from a central square.

Thema Pattern Specification (.thm)
def [a:B b:B c:B d:B]
key [A B C D]
where same_piece(a, b, c, d),
  count_distinct(A, B, C, D) >= 3, a.ne, b.nw, c.se, d.sw
story "Black Bishop star: Key 1.{K}!{threat_clause}
  compels a Black Bishop to defend along four diagonal
  branches from a central square: 1...{a} 2.{A}#,
  1...{b} 2.{B}#."

# WR cross

mate2::types::NamedTheme::WrCross Alias: White Rook cross

White Rook delivers moves across 4 orthogonal directions (cross formation).

Thema Pattern Specification (.thm)
any [A:R B:R C:R D:R]
where same_piece(A, B, C, D), A.north, B.south, C.east,
  D.west
with -match_mate_count -single_refutation
  -capture_try_piece
story "White Rook cross: Key 1.{K}!{threat_clause}
  unleashes a White Rook delivering checkmates across four
  orthogonal directions: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
---
any (A:R) [B:R C:R D:R]
where same_piece(A, B, C, D), cross_dirs(A, B, C, D),
  B.dir < C.dir < D.dir
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "White Rook cross: Key 1.{K}! (threat 2.{A}#)
  enables a White Rook to branch across all four
  orthogonal directions: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
---
any A:R
any B:R
any C:R
any D:R
where same_piece(A, B, C, D), A.north, B.south, C.east,
  D.west
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
story "White Rook cross: White Rook on {A.from} branches
  across all four orthogonal directions across phases:
  1.{A}, 1.{B}, 1.{C}, 1.{D}."
---
try (A:R)
try (B:R)
any (C:R) [D:R]
where same_piece(A, B, C, D), cross_dirs(A, B, C, D)
with -match_threat_count -match_mate_count
  -single_refutation -capture_try_piece
story "White Rook cross: White Rook on {A.from} branches
  across all four orthogonal directions across tries and
  key: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."

# WB star

mate2::types::NamedTheme::WbStar Alias: White Bishop star

White Bishop moves along 4 diagonal branches from a central square.

Thema Pattern Specification (.thm)
key [A:B B:B C:B D:B]
where same_piece(A, B, C, D), A.ne, B.nw, C.se, D.sw
story "White Bishop star: Key 1.{K}!{threat_clause}
  enables a White Bishop to branch across four
  diagonal rays to deliver checkmate: 2.{A}#, 2.{B}#,
  2.{C}#, 2.{D}#."
---
key (A:B) [B:B C:B D:B]
where same_piece(A, B, C, D), star_dirs(A, B, C, D),
  B.dir < C.dir < D.dir
story "White Bishop star: Key 1.{K}! (threat 2.{A}#)
  enables a White Bishop to branch across all four
  diagonal rays: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
---
any A:B
any B:B
any C:B
any D:B
where same_piece(A, B, C, D), A.ne, B.nw, C.se, D.sw
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
story "White Bishop star: White Bishop on {A.from}
  branches across all four diagonal rays across phases:
  1.{A}, 1.{B}, 1.{C}, 1.{D}."

# WS wheel

mate2::types::NamedTheme::WsWheel Alias: White Knight Wheel

White Knight executes thematic moves across variations in a wheel formation.

Thema Pattern Specification (.thm)
key [A:N B:N C:N D:N E:N F:N G:N H:N]
where same_piece(A, B, C, D, E, F, G, H),
  distinct(A.to, B.to, C.to, D.to, E.to, F.to, G.to, H.to)
subsumes BatteryPlay, WhiteKnightWheel
story "White Knight wheel: Key 1.{K}!{threat_clause}
  unleashes a White Knight completing an eight-spoke wheel
  of checkmates across variations."
---
try Tr1:N
try Tr2:N
try Tr3:N
try Tr4:N
try Tr5:N
try Tr6:N
any K:N
where same_piece(Tr1, Tr2, Tr3, Tr4, Tr5, Tr6, K),
  Tr1.to < Tr2.to, Tr2.to < Tr3.to, Tr3.to < Tr4.to,
  Tr4.to < Tr5.to, Tr5.to < Tr6.to,
  distinct(Tr1.to, Tr2.to, Tr3.to, Tr4.to, Tr5.to, Tr6.to,
    K.to)
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
story "WS wheel: White Knight on {K.from} executes a wheel
  of moves across tries and 1.{K}!"
---
try Tr1:N
try Tr2:N
try Tr3:N
try Tr4:N
try Tr5:N
try Tr6:N
key [A:N*]
where same_piece(Tr1, Tr2, Tr3, Tr4, Tr5, Tr6, A),
  Tr1.to < Tr2.to, Tr2.to < Tr3.to, Tr3.to < Tr4.to,
  Tr4.to < Tr5.to, Tr5.to < Tr6.to,
  distinct(Tr1.to, Tr2.to, Tr3.to, Tr4.to, Tr5.to, Tr6.to,
    A.to)
with -refutation_is_check -single_refutation -sparse_mates
  -few_replies -capture_try_piece -match_threat_count
  -match_mate_count
story "WS wheel: White Knight on {Tr1.from} executes
  a wheel of moves across tries and checkmate 2.{A}#."

# Queen's cross

mate2::types::NamedTheme::QueensCross Alias: WQ cross

The White Queen delivers checkmates from the same square along both orthogonal (at least 3) and diagonal (at least 3) cross directions across variations.

Thema Pattern Specification (.thm)
key [A:Q B:Q C:Q D:Q E:Q F:Q]
where same_piece(A, B, C, D, E, F), (A, B, C).ortho,
  (D, E, F).diag, A.to < B.to < C.to, D.to < E.to < F.to
story "Queen's cross: Key 1.{K}!{threat_clause} unleashes
  the White Queen on {A.from} across orthogonal and
  diagonal cross rays: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#,
  2.{E}#, 2.{F}#."

# BQ cross

mate2::types::NamedTheme::BqCross Alias: Black Queen orthogonal cross

The Black Queen defends along all four orthogonal directions (north, south, east, west) from the same square across variations.

Thema Pattern Specification (.thm)
def [a:Q b:Q c:Q d:Q]
key [A B C D]
where same_piece(a, b, c, d), a.north, b.south, c.east,
  d.west
story "BQ cross: Black Queen on {a.from} defends
  in all four orthogonal directions after
  Key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#, 1...{d} 2.{D}#."

# BQ star

mate2::types::NamedTheme::BqStar Alias: Black Queen diagonal star

The Black Queen defends along all four diagonal directions from the same square across variations.

Thema Pattern Specification (.thm)
def [a:Q b:Q c:Q d:Q]
key [A B C D]
where same_piece(a, b, c, d), a.ne, b.nw, c.se, d.sw
story "BQ star: Black Queen on {a.from}
  defends in all four diagonal directions after
  Key 1.{K}!{threat_clause}: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#, 1...{d} 2.{D}#."

# WQ orthogonal cross

mate2::types::NamedTheme::WqOrthoCross Alias: White Queen orthogonal cross

The White Queen delivers checkmates in all four orthogonal directions (north, south, east, west) from the same square.

Thema Pattern Specification (.thm)
key [A:Q B:Q C:Q D:Q]
where same_piece(A, B, C, D), A.north, B.south, C.east,
  D.west
with -match_mate_count
story "WQ orthogonal cross: White Queen on {A.from}
  delivers checkmates in all four orthogonal directions:
  2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."

# WQ diagonal star

mate2::types::NamedTheme::WqDiagStar Alias: White Queen diagonal star

The White Queen delivers checkmates in all four diagonal directions from the same square.

Thema Pattern Specification (.thm)
key [A:Q B:Q C:Q D:Q]
where same_piece(A, B, C, D), A.ne, B.nw, C.se, D.sw
with -match_mate_count
story "WQ diagonal star: White Queen on {A.from}
  delivers checkmates in all four diagonal directions:
  2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."
Chapter Section · 14 Themes

11. Special Rules, Promotions & Tasks

Orthodox chess rules exploited for composition tasks (Albino, Pickaninny, Allumwandlung / AUW, Excelsior, Castling, En Passant).

# Pickaninny

mate2::types::NamedTheme::Pickaninny

A Black Pawn on its initial square (rank 7) executes all 4 possible pawn moves across defending variations.

Thema Pattern Specification (.thm)
def [a:P b:P c:P d:P]
^any [A* B* C* D*]
where pawn_quartet(a, b, c, d),
  count_distinct(A, B, C, D) >= 3
with -match_mate_count
story "Pickaninny: Key 1.{K}!{threat_clause} The Black
  pawn on {a.from} exhausts all four compass defenses:
  1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#;
  1...{c} allows 2.{C}#; 1...{d} allows 2.{D}#"
---
def [a:P b:P c:P]
key (T) [A* B* C*]
where same_piece(a, b, c), a.from.rank == 7,
  T.to == a.from, a.to < b.to, b.to < c.to,
  distinct(T, A, B, C)
with -match_mate_count
story "Pickaninny: Key 1.{K}! (threat 2.{T}#) compels
  the Black pawn on {a.from} to exhaust all four compass
  defenses: 1...{a} allows 2.{A}#; 1...{b} allows 2.{B}#;
  1...{c} allows 2.{C}#"

# Allumwandlung

mate2::types::NamedTheme::Allumwandlung Alias: AUW

Promotions to all four roles (Queen, Rook, Bishop, Knight) appear across White mating moves.

Thema Pattern Specification (.thm)
key [A:= B:= C:= D:=]
where distinct(A.promotion, B.promotion, C.promotion,
    D.promotion)
subsumes PromotionKey
story "Allumwandlung (AUW): Key 1.{K}!{threat_clause}
  White completes the fourfold promotion cycle
  in checkmate: 2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#"

# Underpromotion

mate2::types::NamedTheme::Underpromotion

White promotes to a piece other than a Queen (Rook, Bishop, or Knight) in the key or checkmate.

Thema Pattern Specification (.thm)
key [A:=!Q]
story "Underpromotion: Key 1.{K}!{threat_clause} White
  delivers checkmate by promoting to a {A.promotion}:
  2.{A}#"
---
key K:=!Q
subsumes PromotionKey
story "Underpromotion: Key 1.{K}!{threat_clause} promotes
  a pawn to a {K.promotion}."

# Castling Key

mate2::types::NamedTheme::CastlingKey Alias: Castling

White or Black executes castling (kingside or queenside) in key, try, or defense.

Thema Pattern Specification (.thm)
any K [A*]
where K.castling || a.castling
with -single_refutation -capture_try_piece
  -match_threat_count -match_mate_count -sparse_mates
  -few_replies -refutation_is_check
story "Castling: 1.{K} features castling in play
  (1...{a} 2.{A}#)."
---
try K [!]
where K.castling || a.castling
with -single_refutation -capture_try_piece
  -match_threat_count -sparse_mates -few_replies
  -refutation_is_check
story "Castling: Try 1.{K}? features castling in play
  (refuted by 1...{a}!)."

# Castling Mate

mate2::types::NamedTheme::CastlingMate

White delivers or threatens checkmate by castling.

Thema Pattern Specification (.thm)
any [A]
where A.castling
with -single_refutation -capture_try_piece
  -match_threat_count -match_mate_count -sparse_mates
  -few_replies -refutation_is_check
story "Castling mate: Key 1.{K}!{threat_clause} The attack
  concludes with a castling checkmate 2.{A}#"
---
any (T)
where T.castling
with -single_refutation -capture_try_piece
  -match_threat_count -sparse_mates -few_replies
  -refutation_is_check
story "Castling mate: 1.{K} threatens a castling
  checkmate 2.{T}#."

# En Passant

mate2::types::NamedTheme::EnPassant

Checkmate or defense played via en passant capture.

Thema Pattern Specification (.thm)
any [A*]
where a.ep || A.ep
with -single_refutation -capture_try_piece
  -match_threat_count -match_mate_count -sparse_mates
  -few_replies -refutation_is_check
story "En passant: Key 1.{K}!{threat_clause}.
  Defense 1...{a} allows checkmate with an en passant
  capture: 2.{A}#."
---
try [!]
where a.ep
with -single_refutation -capture_try_piece
  -match_threat_count -sparse_mates -few_replies
  -refutation_is_check
story "En passant: Try 1.{Tr}? is refuted by the en
  passant capture 1...{a}!."

# Promotion Key

mate2::types::NamedTheme::PromotionKey Alias: Promotion mate

The Key, Try, Defense, or Mate move is a pawn promotion.

Thema Pattern Specification (.thm)
any K:=
story "Promotion key: Move 1.{K}!{threat_clause} promotes
  a pawn to unleash the decisive attack."
---
any [A]
where A.is_promotion || a.is_promotion
with -match_mate_count
story "Promotion: Key 1.{K}!{threat_clause} features pawn
  promotion in play: 1...{a} 2.{A}#."

# Excelsior

mate2::types::NamedTheme::Excelsior

A pawn moves from its starting square (rank 2) all the way to promotion mate (requires at least 5 moves; cannot occur in a #2).

Thema Pattern Specification (.thm)
key K:P [A:P:=]
where K.from.rank == 2, same_piece(K, A)
subsumes PromotionKey
story "Excelsior: Pawn begins its epic march with
  key 1.{K}!{threat_clause}, culminating in promotion
  checkmate 2.{A}# against 1...{a}."

# Valladao

mate2::types::NamedTheme::Valladao Alias: Valladão task

The task featuring castling, en passant capture, and pawn promotion in the same problem.

Thema Pattern Specification (.thm)
key K [A B]
where (K.castling || a.castling || b.castling
    || A.castling || B.castling),
  (a.ep || A.ep),
  (K.is_promotion || b.is_promotion || B.is_promotion)
with -match_mate_count
subsumes CastlingKey, EnPassant, PromotionKey
story "Valladão task: Complete triad of castling,
  en passant capture, and pawn promotion in Key
  1.{K}!{threat_clause} (1...{a} 2.{A}#, 1...{b} 2.{B}#)."

# Pape theme

mate2::types::NamedTheme::Pape

En passant captures executed by Black in defense.

Thema Pattern Specification (.thm)
key [A B]
where (a, b).ep
subsumes DefencesOnSameSquare, EnPassant, Laitinen
story "Pape theme: Key 1.{K}!{threat_clause} meets
  en passant defenses with checkmates: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Black underpromotion

mate2::types::NamedTheme::BlackUnderpromotion Alias: Underpromotion (Black)

A Black pawn promotes to a minor piece or Rook (Knight, Bishop, or Rook) as a defensive variation, met by a distinct mate.

Thema Pattern Specification (.thm)
def [a:= b:=]
key [A B]
where same_piece(a, b), a.to == b.to,
  a.promotion != b.promotion
story "Black underpromotion: Key 1.{K}!{threat_clause}
  meets Black pawn promotions on {a.to} with distinct
  checkmates: 1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Promotion cross

mate2::types::NamedTheme::PromotionCross

White Pawn(s) deliver checkmate by promoting on three distinct squares on the 8th rank across variations.

Thema Pattern Specification (.thm)
key [A:= B:= C:=]
where distinct(A.to, B.to, C.to)
subsumes PromotionKey
story "Promotion cross: After Key 1.{K}!{threat_clause},
  White promotes on three distinct 8th-rank squares:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Superalbino

mate2::types::NamedTheme::Superalbino

A White pawn executes all four Albino checkmates (one-step, two-step, left capture, right capture) plus a fifth variation where a White piece mates on that pawn's square.

Thema Pattern Specification (.thm)
key [A:P B:P C:P D:P E]
where pawn_quartet(A, B, C, D), E.to == A.from,
  E.from != A.from
subsumes Albino, BatteryMate, BatteryPlay
story "Superalbino: Key 1.{K}!{threat_clause}.
  White's pawn on {A.from} executes all four Albino
  mates (2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#) plus capture
  1...{e} 2.{E}# on {A.from}."

# Isardam

mate2::types::NamedTheme::Isardam Alias: Isardam theme

A White pawn promotes on the key move to one piece type, and in three variations a White pawn promotes to the remaining three piece types (Allumwandlung split between key and mates).

Thema Pattern Specification (.thm)
key K:P:= [A:P:= B:P:= C:P:=]
where {K.promotion, A.promotion, B.promotion, C.promotion}
    == {'Q', 'R', 'B', 'N'}
subsumes Allumwandlung
story "Isardam: Promotion Key 1.{K}! ({K.promotion})
  and variation promotions 2.{A}# ({A.promotion}),
  2.{B}# ({B.promotion}), and 2.{C}# ({C.promotion})
  complete a fourfold Allumwandlung."
Chapter Section · 13 Themes

12. Mating Net Types & Aesthetic Properties

Checkmate geometry and economy (Model mates, Pure mates, Ideal mates, Mirror mates, Smothered mates, Epaulette mates, Echo mates).

# Pure mate

mate2::types::NamedTheme::PureMate

Every square in the Black King's field is either blocked by a Black piece or guarded by exactly one White unit.

Thema Pattern Specification (.thm)
key [A]
where A.pure_mate
story "Pure mate: Key 1.{K}!{threat_clause} answers
  1...{a} with a pure mate 2.{A}# where every flight
  square is guarded exactly once."

# Mirror mate

mate2::types::NamedTheme::MirrorMate

A checkmate position where no square in the Black King's field is occupied by any piece.

Thema Pattern Specification (.thm)
key [A]
where A.mirror_mate
story "Mirror mate: Key 1.{K}!{threat_clause} answers
  1...{a} with checkmate 2.{A}# leaving all eight adjacent
  flight squares vacant."

# Ideal mate

mate2::types::NamedTheme::IdealMate

A model mate in which all pieces of both colors present on the board participate.

Thema Pattern Specification (.thm)
key [A]
where A.ideal_mate
subsumes ModelMate
story "Ideal mate: Key 1.{K}!{threat_clause} answers
  1...{a} with an ideal mate 2.{A}# with every piece
  on the board participating."

# Echo mate

mate2::types::NamedTheme::EchoMate

Two or more checkmates that have identical geometric shape and piece relationships transposed or rotated.

Thema Pattern Specification (.thm)
key [A* B*]
where (A.to < B.to || (a.role == 'K' && b.role == 'K'
    && a.to < b.to)),
  A.echo(B)
story "Echo mate: Key 1.{K}!{threat_clause} delivers
  checkmates 2.{A}# and 2.{B}# that mirror each other
  in identical geometric shapes: 1...{a} vs 1...{b}."
---
key (XY) [A* B*]
where (A.to < B.to || (a.role == 'K' && b.role == 'K'
    && a.to < b.to)),
  A.echo(B)
with -match_threat_count
story "Echo mate: Key 1.{K}!{threat_clause} delivers
  checkmates 2.{A}# and 2.{B}# that mirror each other
  in identical geometric shapes: 1...{a} vs 1...{b}."
---
vir [A _]
key [_ B]
where A.to != B.to, A.echo(B)
story "Echo mate: Checkmates 2.{A}# in {phase1} and
  2.{B}# after Key 1.{K}!{threat_clause} mirror each other
  in identical geometric shapes."

# Chameleon echo

mate2::types::NamedTheme::ChameleonEcho

Echo checkmates occurring on squares of opposite board colors.

Thema Pattern Specification (.thm)
def [a:K b:K]
key [A B]
where a.to < b.to, A.chameleon_echo(B)
subsumes KingFlight
story "Chameleon echo: Key 1.{K}!{threat_clause}
  delivers echo checkmates on squares of opposite color:
  1...{a} 2.{A}# vs 1...{b} 2.{B}."
---
def [a:K]
key (A) [B]
where A.chameleon_echo(B)
subsumes KingFlight
story "Chameleon echo: Key 1.{K}! threatens 2.{A}# and
  answers King flight 1...{a} with echo checkmate 2.{B}#
  on a square of opposite color."

# Epaulette mate

mate2::types::NamedTheme::EpauletteMate

Checkmate where the Black King is flanked on opposite sides by its own pieces (epaulettes) blocking escape.

Thema Pattern Specification (.thm)
key [A]
where A.epaulette_mate
story "Epaulette mate: Key 1.{K}!{threat_clause} delivers
  checkmate 2.{A}# against 1...{a} with the Black King
  flanked on both sides by friendly units."

# Asymmetrical

mate2::types::NamedTheme::Asymmetrical

An apparently symmetrical position where the solution uniquely breaks symmetry.

Thema Pattern Specification (.thm)
key K
where is_position_symmetric() || has_symmetric_try()
story "Asymmetrical: Key 1.{K}!{threat_clause} breaks
  the apparent symmetry of the position."

# Anti-dual

mate2::types::NamedTheme::AntiDual Alias: Dual avoidance

Dual checkmates are separated across defenses.

Thema Pattern Specification (.thm)
key K [A!@a B!@b]
try (AB) [_ _]
where K.threat_count <= 1, same_piece(a, b)
with -match_threat_count -capture_try_piece
story "Anti-dual: Try 1.{Tr}? threatened dual mates;
  Key 1.{K}!{threat_clause} cleanly separates them:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."
---
key [AB A B]
where (same_piece(A, B) && !A.recaptures(b)
    && !B.recaptures(c)) || same_piece(a, b)
    || same_piece(a, c) || same_piece(b, c)
story "Anti-dual: Key 1.{K}!{threat_clause} separates dual
  checkmates: defense 1...{a} allows duals, while 1...{b}
  and 1...{c} force unique mates 2.{A}# and 2.{B}#."
---
def [a b]
key K [A B]
where a.role != 'K', same_piece(a, b), a.to != b.to,
  same_piece(A, B), A.to != B.to, !A.recaptures(a),
  !B.recaptures(b),
  ((!a.capture && !b.capture) || (K.threat_count == 0
    && (!a.capture || !b.capture))),
  ((a.unpins(A) && b.unpins(B)) || (a.self_pins_for(A)
    && b.self_pins_for(B)) || (a.self_block
    && b.self_block) || (a.cuts_enemy_line()
    && b.cuts_enemy_line()))
story "Anti-dual: Key 1.{K}!{threat_clause} forces dual
  avoidance by the same White piece across defenses
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
key [A B]
where same_piece(a, b), a.to != b.to, same_square(A, B),
  A.from != B.from, A.role == B.role
story "Anti-dual: Key 1.{K}!{threat_clause} forces dual
  avoidance on {A.to} between 2.{A}# (after 1...{a}) and
  2.{B}# (after 1...{b})."
---
def [a:!x b:!x]
key [A B]
where same_piece(a, b), a.to != b.to, A.from != B.from,
  A.role == B.role, A.to != B.to,
  (a.to == B.to || attacks(a.to, B.to)),
  (b.to == A.to || attacks(b.to, A.to))
story "Anti-dual: Key 1.{K}!{threat_clause} forces dual
  avoidance between 2.{A}# (after 1...{a}) and 2.{B}#
  (after 1...{b})."
---
key (AB) [A B]
where !A.recaptures(a), !B.recaptures(b)
story "Anti-dual: Key 1.{K}! threatens 2.{A}# and 2.{B}#;
  defenses 1...{a} and 1...{b} force dual avoidance
  between 2.{A}# and 2.{B}#."

# Symmetrical

mate2::types::NamedTheme::Symmetrical Alias: Symmetric position

The diagram position is geometrically symmetric.

Thema Pattern Specification (.thm)
key K
where is_position_symmetric()
story "Symmetrical: The initial diagram
  position is geometrically symmetric, solved
  by 1.{K}!{threat_clause}."

# Double model mate

mate2::types::NamedTheme::DoubleModelMate

At least two distinct defensive variations end in model checkmates.

Thema Pattern Specification (.thm)
key [A B]
where (A, B).model_mate
subsumes DoublePureMate, ModelMate
story "Double model mate: Key 1.{K}!{threat_clause}
  produces two distinct model checkmates: 1...{a} 2.{A}#
  and 1...{b} 2.{B}#."

# Triple model mate

mate2::types::NamedTheme::TripleModelMate

At least three distinct defensive variations end in model checkmates.

Thema Pattern Specification (.thm)
key [A B C]
where (A, B, C).model_mate
subsumes DoubleModelMate
story "Triple model mate: Key 1.{K}!{threat_clause}
  produces three distinct model checkmates:
  1...{a} 2.{A}#, 1...{b} 2.{B}#, and 1...{c} 2.{C}#."

# Double pure mate

mate2::types::NamedTheme::DoublePureMate

At least two distinct defensive variations end in pure checkmates.

Thema Pattern Specification (.thm)
key [A B]
where (A, B).pure_mate
subsumes PureMate
story "Double pure mate: Key 1.{K}!{threat_clause}
  produces two distinct pure checkmates: 1...{a} 2.{A}#
  and 1...{b} 2.{B}#."

# Double mirror mate

mate2::types::NamedTheme::DoubleMirrorMate

At least two distinct defensive variations end in mirror checkmates (all 8 squares around the Black King vacant).

Thema Pattern Specification (.thm)
key [A B]
where (A, B).mirror_mate
subsumes MirrorMate
story "Double mirror mate: Key 1.{K}!{threat_clause}
  produces two distinct mirror checkmates:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."
Chapter Section · 38 Themes

13. Tactical Motifs, Sacrifices & Maneuvers

Fundamental composition motifs (Active and passive sacrifices, decoys, deflections, self-blocks, unguards, ambushes, switchbacks, Umnov, Focal).

# Switchback

mate2::types::NamedTheme::Switchback

A piece returns to the square it departed from (e.g. key piece returns to its origin on move 2 to deliver mate).

Thema Pattern Specification (.thm)
key K [A~K]
with -unique_mate
story "Switchback: Key 1.{K}!{threat_clause} returns
  to origin on move 2 to deliver checkmate: 2.{A}#"
---
key K (A~K)
with -match_threat_count
story "Switchback: Key 1.{K}! threatens a switchback
  checkmate returning to {K.from}: 2.{A}#."

# Umnov

mate2::types::NamedTheme::Umnov Alias: White Umnov

White mating move occupies the square just vacated by the Black defending piece.

Thema Pattern Specification (.thm)
key [A*@a.from]
with -match_mate_count
story "Umnov vacation-occupation:
  Key 1.{K}!{threat_clause} White occupies the square
  {a.from} just vacated by Black defense 1...{a}: 2.{A}#"

# Laitinen

mate2::types::NamedTheme::Laitinen

Key K threatens a non-capturing pawn advance X; Black defenses a and b mechanically block square X.to, leading to distinct mates A and B.

Thema Pattern Specification (.thm)
key K (X:P:!x) [A B]
where a.to == X.to, b.to == X.to, a.from != b.from
subsumes DefencesOnSameSquare
story "Laitinen: Key 1.{K}! (threat 2.{X}#). Black
  defenses mechanically block {X.to} with dual avoidance:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Ambush key

mate2::types::NamedTheme::AmbushKey Alias: Ambush

A line-moving piece moves behind an obstacle piece on a line of action towards the Black King or field.

Thema Pattern Specification (.thm)
key K [A]
where K.slider, A.fires_battery,
  !collinear(K.from, A.from, BK), A.battery_rear == K.to,
  ray_clear(K.to, A.from)
story "Ambush key: Key 1.{K}!{threat_clause} lies
  in ambush behind an obstacle piece, preparing discovered
  checkmate 2.{A}# against 1...{a}."
---
key K (T?) [A]
where K.slider, A.from == K.to,
  !collinear(K.from, K.to, a.from),
  between(a.from, K.to, A.to),
  !collinear(K.to, a.to, A.to), ray_clear(K.to, a.from),
  (K.threat_count != 1 || T.to != a.from)
with -match_threat_count
story "Ambush key: Key 1.{K}!{threat_clause} lies
  in ambush behind {a.from}; when 1...{a} vacates
  the line, 2.{A}# delivers checkmate."
---
key K [A]
where K.threat_count == 0, K.slider, A.from != K.to,
  A.to != a.from, !collinear(K.from, K.to, a.from),
  ray_clear(K.to, a.from), !collinear(K.to, a.from, a.to),
  (between(a.from, K.to, BK)
    || between(a.from, K.to, BK.north)
    || between(a.from, K.to, BK.south)
    || between(a.from, K.to, BK.east)
    || between(a.from, K.to, BK.west)
    || between(a.from, K.to, BK.ne)
    || between(a.from, K.to, BK.nw)
    || between(a.from, K.to, BK.se)
    || between(a.from, K.to, BK.sw)),
  ((K.role in {'R', 'Q'} && (K.to.file == a.from.file
    || K.to.rank == a.from.rank)) || (K.role in {'B', 'Q'}
    && (K.to.file != a.from.file
    && K.to.rank != a.from.rank)))
story "Ambush key: Key 1.{K}!{threat_clause} moves into
  ambush behind {a.from} aiming into the Black King's
  field, enabling 2.{A}# after 1...{a}."

# Decoy

mate2::types::NamedTheme::Decoy

A piece is lured onto a disadvantageous square by an attractive sacrifice or check.

Thema Pattern Specification (.thm)
def [a:x@K]
key K [A]
where a.role != 'K', a.flight_block
subsumes ActiveSacrifice
story "Decoy: Key 1.{K}!{threat_clause} lures a Black
  piece onto {a.to} (1...{a}), enabling checkmate 2.{A}#."
---
def [a:x b:x c:x]
key (X@a.from) [A@a B@b C@c]
where same_piece(a, b, c), distinct(a.to, b.to, c.to)
story "Decoy: Key 1.{K}!{threat_clause} decoys Black's
  {a.piece} on {a.from} onto {a.to}, {b.to}, and {c.to},
  met by recaptures 2.{A}#, 2.{B}#, and 2.{C}#."

# Annihilation

mate2::types::NamedTheme::Annihilation Alias: Capture of obstacle

A defending or obstructing piece is eliminated by direct capture.

Thema Pattern Specification (.thm)
def [a:x]
key [A]
where (A.recaptures(a) || between(a.to, A.from, A.to)),
  A.fires_battery
subsumes BatteryMate, BatteryPlay
story "Annihilation: Key 1.{K}!{threat_clause} provokes
  1...{a} which captures an obstructing piece, opening
  the line for checkmate 2.{A}#."

# Sacrificial key

mate2::types::NamedTheme::SacrificialKey

White key places a piece where it can be captured by Black (sacrifice).

Thema Pattern Specification (.thm)
def [a:x@K b:x@K]
key K [A B]
where a.from != b.from
with -match_mate_count
subsumes ActiveSacrifice, DefencesOnSameSquare, Laitinen
story "Sacrificial key: Key 1.{K}!{threat_clause}
  offers the key piece for capture: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."
---
def [a:x@K b:x@K]
key K (AB) [A B]
where a.from != b.from
with -match_threat_count -match_mate_count
subsumes ActiveSacrifice, DefencesOnSameSquare, Laitinen
story "Sacrificial key: Key 1.{K}!{threat_clause}
  offers the key piece for capture: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."
---
def [a:x@K b:x@K]
key K (A*) [A B]
where a.from != b.from
with -match_threat_count -match_mate_count
subsumes ActiveSacrifice, DefencesOnSameSquare, Laitinen
story "Sacrificial key: Key 1.{K}!{threat_clause}
  offers the key piece for capture: 1...{a} 2.{A}#
  vs 1...{b} 2.{B}#."

# Passive sacrifice

mate2::types::NamedTheme::PassiveSacrifice

White key leaves an already attacked piece on its square to be captured.

Thema Pattern Specification (.thm)
def [a:x]
key K [A]
where a.to != K.to, K.passive_sacrifice
story "Passive sacrifice: Key 1.{K}!{threat_clause} leaves
  the piece on {a.to} en prise (1...{a} 2.{A}#)."
---
key K
where K.passive_sacrifice
story "Passive sacrifice: Key 1.{K}!{threat_clause}
  quietly leaves a White piece where Black may
  capture it."

# Roman decoy

mate2::types::NamedTheme::RomanDecoy Alias: Roman theme

A Black defending piece is decoyed to a square where its defensive power is diminished by a new weakness.

Thema Pattern Specification (.thm)
def [a:x@K]
key K [A]
where A.from != K.to,
  (a.obstructs(A) || (a.slider && K.cuts_enemy_line()
    && !A.recaptures(a)))
with -match_mate_count
subsumes SelfInterference
story "Roman decoy: Key 1.{K}!{threat_clause}
  decoys a Black piece, turning defense 1...{a} into
  checkmate 2.{A}#."

# Deflection

mate2::types::NamedTheme::Deflection

A defending piece is forced away from defending a vital square or piece.

Thema Pattern Specification (.thm)
key [A!@a]
where a.role != 'K', guards(a.from, A.to),
  !guards(a.to, A.to)
story "Deflection: Key 1.{K}!{threat_clause}
  deflects Black defense 1...{a} away from defending
  against 2.{A}#."

# Continued attack

mate2::types::NamedTheme::ContinuedAttack

White delivers checkmate by moving the same piece that delivered the key or previous threat.

Thema Pattern Specification (.thm)
key (Thr) [A]
where same_piece(A, Thr), !(A.capture && A.recaptures(a))
story "Continued attack: Key 1.{K}! introduces threat
  2.{Thr}#, followed by checkmate 2.{A}# by the same piece
  against 1...{a}."

# Active sacrifice

mate2::types::NamedTheme::ActiveSacrifice

White key moves a piece onto an attacked square where Black can capture it.

Thema Pattern Specification (.thm)
key K
where K.active_sacrifice
story "Active sacrifice: Key 1.{K}!{threat_clause}
  forcefully places a piece en prise to shatter
  Black's defense."

# Queen sacrifice

mate2::types::NamedTheme::QueenSacrifice

White sacrifices the Queen in key or defense variation.

Thema Pattern Specification (.thm)
key K [A]
where (K.role == 'Q' && a.recaptures(K)) || (a.is_capture
    && a.to == A.from)
subsumes ActiveSacrifice
story "Queen sacrifice: White heroically sacrifices
  the Queen with Key 1.{K}!{threat_clause}, crushing
  1...{a} with 2.{A}#."

# Chernet theme

mate2::types::NamedTheme::Chernet

White key and try are made by the same piece which sacrifices itself on two different squares, try not refuted by capture.

Thema Pattern Specification (.thm)
try Tr [!]
key K
where same_piece(Tr, K), Tr.to != K.to, K.sacrifice,
  Tr.sacrifice, a.to != Tr.to, Tr.threat_count >= 1,
  K.threat_count >= 1,
  (K.threat_count <= 1 || Tr.threat_count <= 1
    || K.capture || Tr.capture)
subsumes ActiveSacrifice
story "Chernet theme: Key 1.{K}!{threat_clause} and try
  1.{Tr}? (refuted by 1...{a}!) are moves by the same
  White piece sacrificing on different squares."

# Balbo theme

mate2::types::NamedTheme::Balbo

In at least three variations, the Black defending piece and the White mating piece have the same piece type, across three distinct piece types.

Thema Pattern Specification (.thm)
key [A B C]
where a.role == A.role, b.role == B.role,
  c.role == C.role, distinct(a.role, b.role, c.role)
story "Balbo theme: Key 1.{K}!{threat_clause} matches
  Black defending roles with identical White mating piece
  roles: 1...{a} 2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#."

# Anti-Balbo

mate2::types::NamedTheme::AntiBalbo

Defenses prevent the Balbo pattern.

Thema Pattern Specification (.thm)
try T1 [! _ _]
try T2 [_ ! _]
try T3 [_ _ !]
key K
where T1.role == a.role, T2.role == b.role,
  T3.role == c.role, distinct(T1.role, T2.role, T3.role)
with -capture_try_piece -refutation_is_check
  -single_refutation -match_threat_count
story "Anti-Balbo: Black defenses parry White's Balbo
  attempts (1.{T1}?, 1.{T2}?, 1.{T3}?), resolved
  by Key 1.{K}!{threat_clause}."

# Mule theme

mate2::types::NamedTheme::Mule

Two self-blocks by Black Knights and two self-blocks by Black Bishops across four variations.

Thema Pattern Specification (.thm)
def [a:N b:N c:B d:B]
key [A B C D]
where (a, b, c, d).self_block
subsumes SelfBlock
story "Mule theme: Key 1.{K}!{threat_clause} induces
  self-blocks by Black Knights and Bishops: 1...{a}
  2.{A}#, 1...{b} 2.{B}#, 1...{c} 2.{C}#, 1...{d} 2.{D}#."

# Multiple captures of White piece

mate2::types::NamedTheme::MultipleCaptures

The same White piece is captured by different Black units across defending variations.

Thema Pattern Specification (.thm)
def [a:x b:x c:x]
key [A B C]
where a.to == b.to == c.to,
  distinct(a.from, b.from, c.from)
subsumes ArrivalCorrection
story "Multiple captures: Key 1.{K}!{threat_clause}
  provokes three different Black units to capture the same
  White piece on {a.to}: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."

# Kozhakin theme

mate2::types::NamedTheme::Kozhakin

First and last White moves arrive on the same square (key and mate arrive on same square).

Thema Pattern Specification (.thm)
key K [A@K]
story "Kozhakin: Key 1.{K}!{threat_clause} and checkmate
  2.{A}# arrive on the identical square {K.to} against
  defense 1...{a}."

# Stavrinides

mate2::types::NamedTheme::Stavrinides Alias: Stavrinides cycle

Chained square-to-square Umnov cycle across variations: defense avacates/plays to square of mate A, defense b plays to square of mate B, closing a cycle back to defense a.

Thema Pattern Specification (.thm)
key [A B]
where A.to == b.to, B.to == a.to, A.to != B.to
story "Stavrinides: Circular square-to-square
  Umnov cycle after Key 1.{K}!{threat_clause}:
  1...{a} (on {a.to}) allows 2.{A}# (on {A.to}),
  while 1...{b} (on {b.to}) allows 2.{B}# (on {B.to})."

# Black Umnov

mate2::types::NamedTheme::BlackUmnov

A Black defense moves onto the exact square vacated by the White key piece (a.to == K.from).

Thema Pattern Specification (.thm)
def [a@K.from]
key K [A]
story "Black Umnov: Key 1.{K}!{threat_clause} vacates
  {K.from}, and Black defense 1...{a} immediately occupies
  {a.to}, allowing checkmate 2.{A}#."

# Threat return

mate2::types::NamedTheme::ThreatReturn Alias: Threat Switchback

The threat created by the key move is a switchback of the key piece returning to its departure square.

Thema Pattern Specification (.thm)
key K (T~K)
subsumes Switchback
story "Threat return: Key 1.{K}! threatens an immediate
  switchback return of the {K.role_name} to its origin
  square: 2.{T}#."

# Rook sacrifice

mate2::types::NamedTheme::RookSacrifice

White actively sacrifices a Rook on the key move.

Thema Pattern Specification (.thm)
def [a:x@K]
key K:R [A]
subsumes ActiveSacrifice
story "Rook sacrifice: Key 1.{K}!{threat_clause}
  sacrifices a White Rook on {K.to}, met
  by 1...{a} 2.{A}#."

# Coulomb theme

mate2::types::NamedTheme::Coulomb Alias: Coulomb

A Black defense moves along a line toward a White slider, shortening its range while allowing a non-capturing mate by that slider.

Thema Pattern Specification (.thm)
def [a:!x]
key [A:Q|R|B]
where collinear(a.from, a.to, A.from),
  between(a.to, a.from, A.from),
  collinear(A.from, A.to, a.to),
  between(A.to, A.from, a.to)
story "Coulomb theme: After Key 1.{K}!{threat_clause},
  Black defense 1...{a} advances toward White's
  {A.role_name} on {A.from}, met by 2.{A}#."

# Focal theme

mate2::types::NamedTheme::FocalTheme Alias: Brennpunktthema

A Black line-piece on a focal square guards two focal squares along different vectors; moving along different rays abandons guard of the other focal square.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
key [A B]
where same_piece(a, b), a.dir != b.dir, A.to != B.to,
  guards(a.from, A.to), guards(a.from, B.to),
  !collinear(a.from, A.to, B.to), a.unguards(A.to),
  b.unguards(B.to)
story "Focal theme (Brennpunktthema): Black's focal
  {a.role_name} on {a.from} cannot maintain simultaneous
  guard of {A.to} and {B.to} after 1.{K}!{threat_clause}:
  1...{a} 2.{A}# vs 1...{b} 2.{B}#."

# Pendulum theme

mate2::types::NamedTheme::PendulumTheme Alias: Pendulum

A White line-piece moves in one direction from its origin square in a try and in the opposite direction along the same line in the key, changing mates.

Thema Pattern Specification (.thm)
^try Tr:Q|R|B [A B]
^key K:Q|R|B [C D]
where same_piece(Tr, K), collinear(Tr.from, Tr.to, K.to),
  between(Tr.from, Tr.to, K.to)
subsumes ChangedMate
story "Pendulum theme: White's {K.role_name} on {K.from}
  swings in opposite directions along the line
  between Try 1.{Tr}? (2.{A}#, 2.{B}#) and Key 1.{K}!
  (2.{C}#, 2.{D}#)."

# Bishop sacrifice

mate2::types::NamedTheme::BishopSacrifice

White actively sacrifices a Bishop on the key move.

Thema Pattern Specification (.thm)
def [a:x@K]
key K:B [A]
subsumes ActiveSacrifice
story "Bishop sacrifice: Key 1.{K}!{threat_clause}
  sacrifices a White Bishop on {K.to}, met
  by 1...{a} 2.{A}#."

# Knight sacrifice

mate2::types::NamedTheme::KnightSacrifice

White actively sacrifices a Knight on the key move.

Thema Pattern Specification (.thm)
def [a:x@K]
key K:N [A]
subsumes ActiveSacrifice
story "Knight sacrifice: Key 1.{K}!{threat_clause}
  sacrifices a White Knight on {K.to}, met
  by 1...{a} 2.{A}#."

# Double-sacrifice key

mate2::types::NamedTheme::DoubleSacrificeKey

The White key piece moves to a square where two different non-King Black pieces can capture it, yielding distinct checkmates.

Thema Pattern Specification (.thm)
def [a:!K:x@K b:!K:x@K]
key K [A B]
where a.from != b.from
subsumes SacrificialKey
story "Double-sacrifice key: Key 1.{K}!{threat_clause}
  offers the {K.role_name} on {K.to} to two Black
  capturers: 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:!K:x@K b:!K:x@K]
key K (XY) [A B]
where a.from != b.from
with -match_threat_count
subsumes SacrificialKey
story "Double-sacrifice key: Key 1.{K}!{threat_clause}
  offers the {K.role_name} on {K.to} to two Black
  capturers: 1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Triple-sacrifice key

mate2::types::NamedTheme::TripleSacrificeKey

The White key piece moves to a square where at least three different Black pieces can capture it, yielding three distinct checkmates.

Thema Pattern Specification (.thm)
def [a:x@K b:x@K c:x@K]
key K [A B C]
where distinct(a.from, b.from, c.from)
subsumes DoubleSacrificeKey, MultipleCaptures
story "Triple-sacrifice key: Key 1.{K}!{threat_clause}
  offers the {K.role_name} on {K.to} to three
  Black capturers: 1...{a} 2.{A}#, 1...{b} 2.{B}#,
  1...{c} 2.{C}#."

# Royal sacrifice key

mate2::types::NamedTheme::RoyalSacrificeKey

The White key piece sacrifices itself on a square adjacent to the Black King so that the Black King itself captures it.

Thema Pattern Specification (.thm)
def [a:K:x@K]
key K [A]
subsumes ActiveSacrifice, FlightCapture
story "Royal sacrifice key: Key 1.{K}!{threat_clause}
  sacrifices the {K.role_name} directly to the Black King
  on {K.to}: 1...{a} 2.{A}#."

# Theme B

mate2::types::NamedTheme::ThemeB Alias: Thema B

Two Black moves of a piece open a Black defensive line while self-blocking or closing another line, separating two White mates by the same piece.

Thema Pattern Specification (.thm)
key [A B]
where same_piece(a, b), a.to != b.to, same_piece(A, B),
  A.to != B.to, (a.opens_line() || b.opens_line()),
  (a.self_block || a.closes_line()),
  (b.self_block || b.closes_line())
subsumes LineOpening
story "Theme B: Key 1.{K}!{threat_clause}.
  Moves 1...{a} and 1...{b} open a Black line while
  closing/self-blocking to separate 2.{A}# and 2.{B}#."

# Theme H

mate2::types::NamedTheme::ThemeH Alias: Thema H

Two tries by the same White piece are refuted by two different Black pieces moving onto the vacated departure square (Umnov refutation).

Thema Pattern Specification (.thm)
try Tr1 [! _]
try Tr2 [_ !]
key K [A B]
where same_piece(Tr1, Tr2), Tr1.to != Tr2.to,
  a.to == Tr1.from, b.to == Tr2.from, a.from != b.from
subsumes DefencesOnSameSquare, Laitinen
story "Theme H: Tries 1.{Tr1}? and 1.{Tr2}? are refuted on
  the vacated square {Tr1.from} by 1...{a}! and 1...{b}!;
  Key 1.{K}! answers with 2.{A}# and 2.{B}#."

# Bottacchi

mate2::types::NamedTheme::Bottacchi Alias: Bottacchi theme

Moves of a Black Knight and a Black Bishop self-block or interfere on squares around the Black King, forcing four distinct White mates.

Thema Pattern Specification (.thm)
def [a:N b:N c:B d:B]
key [A B C D]
where same_piece(a, b), same_piece(c, d),
  (a.self_block || b.self_block || c.self_block
    || d.self_block)
story "Bottacchi: Key 1.{K}!{threat_clause}. Black
  Knight (1...{a}, 1...{b}) and Bishop (1...{c}, 1...{d})
  defenses allow 2.{A}#, 2.{B}#, 2.{C}#, and 2.{D}#."

# Pseudo Umnov 2

mate2::types::NamedTheme::PseudoUmnov2

In virtual play (set or try), a Black defense vacates a square for White's Umnov mate, and after the key the mate after that defense changes.

Thema Pattern Specification (.thm)
vir [A@a.from]
key [B]
where B.to != a.from
subsumes ChangedMate
story "Pseudo Umnov 2: Virtual Umnov mate 1...{a} 2.{A}#
  on {a.from} changes after Key 1.{K}! to 1...{a} 2.{B}#."

# Phoenix

mate2::types::NamedTheme::Phoenix Alias: Phoenix theme

The key sacrifices a White piece (Q, R, B, or N), and when Black captures that piece, a White pawn promotes to the exact same piece type (rising from the ashes).

Thema Pattern Specification (.thm)
def [a:x@K]
key K:Q|R|B|N [A:P:=]
where A.promotion == K.role
subsumes ActiveSacrifice, PromotionKey
story "Phoenix: Key 1.{K}! sacrifices the White {K.role}
  on {K.to}; after 1...{a}, a White pawn promotes to a new
  {A.promotion} with 2.{A}#."

# Magee theme

mate2::types::NamedTheme::Magee Alias: Magee

Four Black pawn self-block defenses around the Black King allow four different White pieces to deliver mate.

Thema Pattern Specification (.thm)
def [a:P b:P c:P d:P]
key [A B C D]
where (a, b, c, d).self_block,
  distinct(A.from, B.from, C.from, D.from)
subsumes Barulin, SelfBlock
story "Magee theme: Key 1.{K}!{threat_clause}.
  Four Black pawn self-blocks (1...{a}, 1...{b}, 1...{c},
  1...{d}) allow four different White pieces to mate:
  2.{A}#, 2.{B}#, 2.{C}#, 2.{D}#."

# Siegfried

mate2::types::NamedTheme::Siegfried Alias: Siegfried theme

Tries by a White piece fail to Black slider focal defenses; a waiting move by that White piece solves by deflecting the focal Black slider.

Thema Pattern Specification (.thm)
def [a:Q|R|B b:Q|R|B]
try Tr1 [! _]
try Tr2 [_ !]
key K () [A B]
where same_piece(Tr1, Tr2, K), same_piece(a, b),
  a.to != b.to
subsumes FocalTheme
story "Siegfried: Tries 1.{Tr1}? (1...{a}!) and 1.{Tr2}?
  (1...{b}!) fail to the focal Black {a.role_name} until
  waiting Key 1.{K}! deflects it for 2.{A}# and 2.{B}#."
Chapter Section · 34 Themes

14. Stipulations, Key Types & Piece Economy

Problem stipulations (Miniatures ≤ 7 pieces, Merediths ≤ 12 pieces, Aristocrat, Rex Solus) and key move classifications (Quiet key, Waiting key, Zugzwang).

# Capture Key

mate2::types::NamedTheme::CaptureKey

The Key move captures an enemy piece.

Thema Pattern Specification (.thm)
key K:x
story "Capture key: Key 1.{K}!{threat_clause} begins with
  the capture of an enemy piece."

# Seeberger

mate2::types::NamedTheme::Seeberger

A piece is forced to a square where it interferes with another piece of the same color, causing zugzwang.

Thema Pattern Specification (.thm)
key [A]
where a.to == A.to, a.obstructs(A)
story "Seeberger interference: Key 1.{K}!{threat_clause}
  compels defense 1...{a} to obstruct a friendly line
  piece, conceding 2.{A}#."

# Miniature

mate2::types::NamedTheme::Miniature

A problem with at most 7 pieces in total on the board.

Thema Pattern Specification (.thm)
key K
where piece_count() <= 7
story "Miniature: Key 1.{K}!{threat_clause} solves
  a composition of pristine economy (≤7 pieces)."

# Meredith

mate2::types::NamedTheme::Meredith

A problem with 8 to 12 pieces in total on the board.

Thema Pattern Specification (.thm)
key K
where piece_count() >= 8, piece_count() <= 12
story "Meredith: Key 1.{K}!{threat_clause} solves
  an economical problem of 8 to 12 pieces."

# Zugzwang

mate2::types::NamedTheme::Zugzwang

Black is compelled to move in a position where any move worsens their defense, leading to checkmate.

Thema Pattern Specification (.thm)
key K [A]
where !K.check, K.threat_count == 0
story "Zugzwang: Key 1.{K}! creates complete zugzwang;
  Black's compelled move 1...{a} concedes 2.{A}#."

# Quiet key

mate2::types::NamedTheme::QuietKey

The key move is non-checking and non-capturing.

Thema Pattern Specification (.thm)
key K
where !K.check, !K.capture
story "Quiet key: Subtle non-checking, non-capturing key
  1.{K}!{threat_clause} weaves an inescapable mating net."

# Waiting key

mate2::types::NamedTheme::WaitingKey Alias: Block key

The key move creates no direct threat, putting Black into zugzwang (waiting move).

Thema Pattern Specification (.thm)
key K [A]
where !K.check, K.threat_count == 0
story "Waiting key: White key 1.{K}! preserves the tension
  without a direct threat, waiting for Black's move
  1...{a} to concede 2.{A}#."

# Complete block

mate2::types::NamedTheme::CompleteBlock Alias: Block

A block problem where all Black defenses in the diagram position already have set mates.

Thema Pattern Specification (.thm)
set [A*]
key [B*]
where set_play_complete()
with -match_mate_count
story "Complete block: All Black defenses are provided for
  in set play (1...{a} 2.{A}#); Key 1.{K}!{threat_clause}
  solves with 1...{a} 2.{B}#."

# Incomplete block

mate2::types::NamedTheme::IncompleteBlock

A waiting-move problem where some but not all Black defenses have set mates before the key.

Thema Pattern Specification (.thm)
set [A -]
key K [_ C]
where !set_play_complete(), unprovided_count() > 0,
  set_mate_count() > 0, K.threat_count == 0
subsumes AddedPlay
story "Incomplete block: Some defenses are provided in set
  play, while remaining play is completed by waiting
  Key 1.{K}!: 1...{b} 2.{C}#."

# Mutate

mate2::types::NamedTheme::Mutate Alias: Block Threat

A complete block problem in which at least one defense is answered by a changed mate while maintaining no threat.

Thema Pattern Specification (.thm)
set [A]
key [B]
where K.threat_count == 0, set_play_complete()
subsumes ChangedPlay
story "Mutate: Complete waiting block in set play;
  Key 1.{K}! changes the mating replies: 1...{a} 2.{A}#
  -> 2.{B}#."

# Block

mate2::types::NamedTheme::Block

White key creates no direct threat, relying on Black's zugzwang to deliver checkmate on any reply.

Thema Pattern Specification (.thm)
key K
where false
story "Block: White key 1.{K}! creates no direct threat,
  relying on zugzwang to deliver checkmate on any reply."

# Le Lionnais

mate2::types::NamedTheme::LeLionnais

White King waiting key succeeds while at least three other White King tries fail.

Thema Pattern Specification (.thm)
try T1:K
try T2:K
try T3:K
key K:K (-)
where distinct(T1.to, T2.to, T3.to, K.to)
with -no_threats_few_replies -no_threats_sparse_mates
  -single_refutation -refutation_is_check
story "Le Lionnais: White King tries 1.{T1}?, 1.{T2}?,
  and 1.{T3}? fail, leaving waiting Key 1.{K}! as
  the unique Royal choice."

# Rex solus

mate2::types::NamedTheme::RexSolus Alias: Rex Solus

Black has only the King and no other pieces on the board.

Thema Pattern Specification (.thm)
key K
where black_piece_count() == 1
story "Rex solus: Key 1.{K}!{threat_clause} skillfully
  outmaneuvers the lone Black King."

# Aristocrat

mate2::types::NamedTheme::Aristocrat

A chess problem containing no pawns.

Thema Pattern Specification (.thm)
key K
where pawn_count() == 0
story "Aristocrat: Key 1.{K}!{threat_clause} solves
  a composition without pawns."

# Tanagra

mate2::types::NamedTheme::Tanagra

A miniature problem with 5 or fewer pieces in total on the board.

Thema Pattern Specification (.thm)
key K
where piece_count() <= 5
subsumes Miniature
story "Tanagra: Key 1.{K}!{threat_clause} solves
  a miniature of utmost economy (≤5 pieces)."

# Duel

mate2::types::NamedTheme::Duel

A confrontation in which only one White piece and one Black piece move across all variations.

Thema Pattern Specification (.thm)
key K [A* B* C*]
where same_piece(a, b, c), same_piece(A, B, C),
  (distinct(A.to, B.to, C.to) || ((A, B, C).fires_battery
    && A != B)),
  (K.threat_count > 0 || !A.slider)
with -match_mate_count
story "Duel: Key 1.{K}!{threat_clause} sparks a duel
  between two pieces across variations: 1...{a} 2.{A}#,
  1...{b} 2.{B}#, 1...{c} 2.{C}#."
---
try Tr1 [! _ _]
try Tr2 [_ ! _]
try Tr3 [_ _ !]
where same_piece(Tr1, Tr2, Tr3), same_piece(a, b, c)
with -skip_no_threats_few_replies
  -skip_no_threats_sparse_mates -match_threat_count
story "Duel: White's {Tr1.role_name} and Black's
  {a.role_name} engage in a duel across tries 1.{Tr1}?
  (1...{a}!), 1.{Tr2}? (1...{b}!), and 1.{Tr3}?
  (1...{c}!)."

# Herlin

mate2::types::NamedTheme::Herlin Alias: Herlin counter clearance

Mutual head-on line duel between a Black slider and a White slider: Black moves toward the White piece and is captured by it (a -> B@a), or captures the White piece and is recaptured by a supporting White piece (b:x@B.from -> A@b).

Thema Pattern Specification (.thm)
def [a:!x b:x@B.from]
key [B:x@a A:x@b]
where same_piece(a, b), a.slider, B.slider,
  collinear(a.from, a.to, B.from),
  between(a.to, a.from, B.from)
story "Herlin counter-clearance:
  After Key 1.{K}!{threat_clause}, the Black {a.role_name}
  on {a.from} and White {B.role_name} on {B.from}
  engage in a head-on line duel: 1...{a} allows 2.{B}#,
  while 1...{b} allows recapture 2.{A}#."

# Knight duel

mate2::types::NamedTheme::KnightDuel

White and Black Knights duel: when a Black Knight moves to two distinct squares, a White Knight captures it on both squares or mates on its vacated square.

Thema Pattern Specification (.thm)
def [a:N b:N]
key [A:N@a B:N@b]
where same_piece(a, b), same_piece(A, B), a.to != b.to
subsumes Umnov
story "Knight duel: After Key 1.{K}!{threat_clause},
  White's Knight on {A.from} duels Black's Knight
  on {a.from}: 1...{a} 2.{A}# and 1...{b} 2.{B}#."
---
def [a:N b:N]
key [A:N@a.from B:N@b]
where same_piece(a, b), A.from != B.from, a.to != b.to
subsumes Umnov
story "Knight duel: After Key 1.{K}!{threat_clause},
  White's Knights duel Black's Knight on {a.from}:
  1...{a} 2.{A}# (occupying {a.from}) and 1...{b} 2.{B}#
  (capturing on {b.to})."
---
def [a:N b:N]
key [A:N@a.from B:N@b.from]
where a.from != b.from, same_piece(A, B)
subsumes Umnov
story "Knight duel: After Key 1.{K}!{threat_clause},
  White's Knight on {A.from} duels Black's Knights
  on {a.from} and {b.from}: 1...{a} 2.{A}# and
  1...{b} 2.{B}#."

# Bishop duel

mate2::types::NamedTheme::BishopDuel

A Black Bishop and a White Bishop duel along the exact same diagonal in at least two variations.

Thema Pattern Specification (.thm)
def [a:B b:B]
key [A:B B:B]
where same_piece(a, b), same_piece(A, B), a.to != b.to,
  A.to != B.to, collinear(a.from, a.to, A.from),
  collinear(a.from, A.from, A.to)
story "Bishop duel: After Key 1.{K}!{threat_clause},
  White's Bishop on {A.from} and Black's Bishop
  on {a.from} duel along the same diagonal:
  1...{a} 2.{A}# and 1...{b} 2.{B}#."

# Sackmann

mate2::types::NamedTheme::Sackmann Alias: Sackmann theme

A waiting key provokes a Black check that is answered by the key piece moving along a pin line or interposing.

Thema Pattern Specification (.thm)
def [a:+ b]
key K () [A B]
where A.from == K.to
subsumes ProvokedCheck
story "Sackmann: Waiting Key 1.{K}! provokes check
  1...{a}, answered by 2.{A}#, alongside 1...{b} 2.{B}#."

# Larsen theme

mate2::types::NamedTheme::LarsenTheme

A capture key changes the pin status and provokes a Black pawn/piece check whose vacated departure square is occupied by White's cross-check mate.

Thema Pattern Specification (.thm)
def [a:+]
key K:x [A@a.from]
where !A.capture
subsumes CaptureKey, PseudoUmnov1
story "Larsen theme: Capture Key 1.{K}!{threat_clause}
  provokes check 1...{a}, answered by Umnov cross-check
  2.{A}# on {a.from}."

# Szöghy 1

mate2::types::NamedTheme::Szoghy1

After a waiting key, a Black checking defense vacates a square that White's front battery piece occupies to deliver discovered cross-check mate.

Thema Pattern Specification (.thm)
def [a:+]
key K () [A@a.from]
where A.fires_battery
subsumes BatteryMate, BatteryPlay, PseudoUmnov1
story "Szöghy 1: Waiting Key 1.{K}! allows check 1...{a},
  vacating {a.from} for battery cross-check 2.{A}#."

# Szöghy 3

mate2::types::NamedTheme::Szoghy3

In a mutate (waiting key with set play), two pawn promotion mates are reciprocally exchanged or changed against Black checks and defenses.

Thema Pattern Specification (.thm)
vir [A:P:= B:P:=]
key K () [B A]
where A.promotion != B.promotion
subsumes PromotionKey, ReciprocalChange
story "Szöghy 3: Waiting Key 1.{K}! reciprocally exchanges
  promotion mates 2.{A}# and 2.{B}# against 1...{a}
  and 1...{b}."

# Pedersen theme

mate2::types::NamedTheme::Pedersen Alias: Pedersen

White Knight wheel tries into zugzwang are refuted by correction moves of a Black Bishop or Rook along a line.

Thema Pattern Specification (.thm)
def [a:B|R b:B|R]
try Tr1:N () [A !]
try Tr2:N () [_ !]
key K:N [C D]
where same_piece(Tr1, Tr2, K), same_piece(a, b),
  a.to != b.to
subsumes ChangedMate
story "Pedersen theme: Knight tries 1.{Tr1}? and
  1.{Tr2}? fail to Black {b.role} correction 1...{b}!,
  solved by Knight Key 1.{K}!."

# Römpp mates

mate2::types::NamedTheme::RomppMates Alias: Rompp mates

A sacrificial ambush key into zugzwang decoys two Black sliders to capture the key piece, allowing two White battery pieces to deliver discovered mates.

Thema Pattern Specification (.thm)
def [a:R:x@K b:B:x@K]
key K () [A B]
where A.fires_battery, B.fires_battery
subsumes BatteryMate, BatteryPlay, DoubleSacrificeKey
story "Römpp mates: Waiting sacrificial Key 1.{K}! decoys
  1...{a} and 1...{b} to {K.to}, firing battery mates
  2.{A}# and 2.{B}#."

# Kindergarten

mate2::types::NamedTheme::Kindergarten

A chess problem in which the only pieces on the board are Kings and Pawns.

Thema Pattern Specification (.thm)
key K
where piece_count() == pawn_count() + 2
story "Kindergarten: Key 1.{K}!{threat_clause} solves
  a Kings-and-Pawns composition."

# Schiegl

mate2::types::NamedTheme::Schiegl Alias: Schiegl theme

A promotion key into zugzwang is followed by Black Knight defenses that allow multiple Royal battery mates by the White King.

Thema Pattern Specification (.thm)
def [a:N b:N]
key K:P:= () [A:K B:K]
where A.fires_battery, B.fires_battery, A.to != B.to
subsumes PromotionKey, RoyalBattery
story "Schiegl: Promotion waiting Key 1.{K}! answers Black
  Knight moves 1...{a} and 1...{b} with Royal battery
  mates 2.{A}# and 2.{B}#."

# Perpetuum mobile

mate2::types::NamedTheme::PerpetuumMobile

A waiting key by a White slider against four Black King star-flights is followed by that same slider delivering all checkmates.

Thema Pattern Specification (.thm)
def [a:K b:K c:K d:K]
key K:B|R|Q () [A B C D]
where distinct(a.to, b.to, c.to, d.to), A.from == K.to,
  B.from == K.to, C.from == K.to, D.from == K.to
subsumes RadialFlights
story "Perpetuum mobile: Waiting slider Key 1.{K}! answers
  all four King flights (1...{a}, 1...{b}, 1...{c},
  1...{d}) with moves of the key piece."

# Hertzsprung material

mate2::types::NamedTheme::HertzsprungMaterial

A chess problem in which White's force consists solely of King, Queen, and two Rooks (K + Q + 2R).

Thema Pattern Specification (.thm)
key K
where white_piece_count() == 4,
  white_piece_count('Q') == 1, white_piece_count('R') == 2
story "Hertzsprung material: Key 1.{K}!{threat_clause}
  solves with White force consisting solely of King,
  Queen, and two Rooks."

# Kniest

mate2::types::NamedTheme::Kniest Alias: Kniest theme

A capture key that both gives and takes a flight square is captured on K.to by at least three Black pieces (including the Black King), producing three distinct mates.

Thema Pattern Specification (.thm)
def [a:x@K b:x@K c:K:x@K]
key K:x [A B C]
where K.flights_given >= 1, K.flights_taken >= 1,
  a.from != b.from
subsumes CaptureKey, DoubleSacrificeKey,
  FlightGivingAndTakingKey, RoyalSacrificeKey
story "Kniest: Give-and-take capture Key
  1.{K}!{threat_clause} on {K.to} is captured by 1...{a}
  (2.{A}#), 1...{b} (2.{B}#), and King 1...{c} (2.{C}#)."

# Velikij

mate2::types::NamedTheme::Velikij Alias: Veliky theme

Three tries by the White Queen along a line are each refuted by a Black Bishop/slider shadowing her on a parallel line (Opposition), before the Queen moves to the far end of the line into zugzwang.

Thema Pattern Specification (.thm)
def [a:B|R|Q b:B|R|Q c:B|R|Q]
try Tr1:Q [! _ _]
try Tr2:Q [_ ! _]
try Tr3:Q [_ _ !]
key K:Q () [A B C]
where same_piece(Tr1, Tr2, Tr3, K), same_piece(a, b, c),
  distinct(a.to, b.to, c.to)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Velikij: Queen tries 1.{Tr1}? (1...{a}!), 1.{Tr2}?
  (1...{b}!), and 1.{Tr3}? (1...{c}!) are parried by
  Black's {a.role} until waiting Queen Key 1.{K}! solves."

# Monreal-Michel theme

mate2::types::NamedTheme::MonrealMichel

A capture key threatens capture of a Black Knight, whose random move, correction move, and checking capture allow three distinct mates by a White battery.

Thema Pattern Specification (.thm)
def [a:N b:N c:N:+]
key K:x (T) [A B C]
where same_piece(a, b, c), T.to == a.from,
  distinct(a.to, b.to, c.to),
  (A.fires_battery || B.fires_battery || C.fires_battery)
subsumes BatteryMate, BatteryPlay, CaptureKey,
  ProvokedCheck
story "Monreal-Michel theme: Capture Key 1.{K}! threatens
  2.{T}# on {a.from}; Knight moves 1...{a}, 1...{b}, and
  1...{c} allow battery mates 2.{A}#, 2.{B}#, and 2.{C}#."

# Salamanca theme

mate2::types::NamedTheme::Salamanca Alias: Salamanca

A pawn capture key sacrifices the pawn on a square where Black's capture self-pins in a half-pin (Zilahi + half-pin), while the other half-pinned piece's defense allows the key pawn to advance for mate.

Thema Pattern Specification (.thm)
def [a:x@K b]
key K:P:x [A:P B:P]
where B.from == K.to, A.from != K.to,
  (a.self_pins_for(A) || b.self_pins_for(B))
subsumes ActiveSacrifice, CaptureKey, SelfPin
story "Salamanca theme: Pawn capture
  Key 1.{K}!{threat_clause} sacrifices on {K.to} (1...{a}
  2.{A}#) and advances on 1...{b} with 2.{B}#."

# Monkey theme

mate2::types::NamedTheme::Monkey

Tries by two White Rooks and two White Bishops (White Organ Pipes) moving to the same rank or file fail to Black pawn defenses before a quiet key solves.

Thema Pattern Specification (.thm)
try Tr1:B [! _]
try Tr2:R [_ !]
try Tr3:R [_ !]
try Tr4:B [_ !]
key K [A B]
where distinct(Tr1.from, Tr2.from, Tr3.from, Tr4.from),
  same(Tr1.to.rank, Tr2.to.rank, Tr3.to.rank, Tr4.to.rank)
with -refutation_is_check -flight_from_check
  -capture_try_piece -match_threat_count -match_mate_count
  -single_refutation -sparse_mates -few_replies
story "Monkey theme: White Organ-pipe tries 1.{Tr1}?,
  1.{Tr2}?, 1.{Tr3}?, and 1.{Tr4}? fail before quiet
  Key 1.{K}! solves."