Colored Vertex Model Skill
Status: ✅ Production Ready Trit: +1 (PLUS - generative/optimistic) Color: #FF6B6B (Coral Red) Principle: Colors as conserved quantum numbers with projection properties Frame: Rainbow initial data → height function → KPZ limits
Overview
The colored stochastic six-vertex model extends the classical model with n colored arrow types. This skill provides:
- Rainbow Initial Data: Colors 1, 2, ..., n entering from left
- Colored Height Function: Track particles by color
- Projection Properties: Reduce n colors to k < n colors
- Gay-MCP Integration: Colors as deterministic GF(3) trits
Rainbow Configuration
Initial data (rainbow):
Color n entering at row 1
Color n-1 entering at row 2
...
Color 1 entering at row n
→n→ ↑
→n-1→ ↑ Grid evolution
... ↑ via vertex weights
→1→ ↑
Colored Height Function
# h_k(x,y) = number of arrows with color ≤ k passing through (x,y)
function colored_height(model, k, x, y)
count = 0
for arrow in model.arrows_through(x, y)
if arrow.color <= k
count += 1
end
end
return count
end
# Full height function array
H = [colored_height(model, k, x, y) for k in 1:n, x in 1:L, y in 1:T]
Vertex Weights
Stochastic Colored Weights
Each vertex satisfies:
- Arrow conservation (in = out for each color)
- Row stochasticity (weights sum to 1)
struct ColoredVertex
left_in::Vector{Int} # colors entering from left
bottom_in::Vector{Int} # colors entering from bottom
right_out::Vector{Int} # colors exiting right
top_out::Vector{Int} # colors exiting top
end
function weight(v::ColoredVertex, q, b)
# Stochastic six-vertex weights per color interaction
# See Borodin-Wheeler for full formulas
if is_through_vertex(v)
return a(q, b) # arrow goes straight through
elseif is_bend_vertex(v)
return b(q, b) # arrow bends
elseif is_cross_vertex(v)
return c(q, b) # arrows cross
end
end
Projection Properties
Key Feature: Projecting to fewer colors preserves the vertex model structure.
# Project from n colors to k colors
function project_colors(model::ColoredModel, k::Int)
# Colors 1,...,k stay as color 1
# Colors k+1,...,n stay as color 2
# (for k=1, this gives the uncolored model)
projected = ColoredModel(n_colors = 2)
for arrow in model.arrows
new_color = arrow.color <= k ? 1 : 2
add_arrow!(projected, arrow.position, new_color)
end
return projected
end
# Full projection: n colors → 1 color (uncolored)
uncolored = project_colors(model, 1)
# Theorem: uncolored model has same law as original uncolored six-vertex
Marginal Preservation
# Marginal of projected height = height of projected model
@test colored_height(project_colors(model, k), 1, x, y) ==
colored_height(model, k, x, y)
Integration with Gay-MCP
Colors map directly to Gay.jl deterministic coloring:
using GayMCP
# Initialize model with Gay.jl colors
function colored_model_with_gay(n_colors, seed)
Gay.gay_seed(seed)
model = ColoredModel(n_colors)
for row in 1:n_colors
color = Gay.color_at(row)
trit = Gay.trit_from_hue(color.H)
# Add colored arrow at row
add_arrow!(model, (0, row),
color = row,
gay_color = color,
trit = trit
)
end
return model
end
# Verify GF(3) conservation on any triangle of particles
function verify_gf3_triangle(model, triangle_indices)
trits = [model.arrows[i].trit for i in triangle_indices]
@test sum(trits) % 3 == 0
end
Color → Trit Mapping
# Consistent with Gay-MCP hue mapping
function color_to_trit(color_index, n_colors)
# Map color index to hue in [0, 360)
hue = (color_index - 1) * 360 / n_colors
# Gay-MCP trit mapping
if hue < 60 || hue >= 300
return +1 # PLUS (warm)
elseif hue < 180
return 0 # ERGODIC (neutral)
else
return -1 # MINUS (cool)
end
end
Scaling Limits (→ KPZ)
As mesh → 0, the colored height function converges to the KPZ fixed point:
# Rescale height function
function rescale_height(H, ε)
# 1:2:3 scaling
x_scale = ε^(-1)
t_scale = ε^(-3/2)
h_scale = ε^(1/2)
return (x, t) -> h_scale * H(x_scale * x, t_scale * t)
end
# In the limit ε → 0, converges to KPZ fixed point
# See kpz-universality skill
Gibbs Properties
Inter-Color Gibbs Property
The colored ensemble relates to uncolored via Pitman transform:
# Given uncolored paths, sample coloring via Pitman
function inter_color_gibbs(uncolored_paths)
# Find monotone coupling maximizing likelihood
coloring = pitman_transform(uncolored_paths)
return coloring
end
# Key variational formula:
# P(colored | uncolored) ∝ product of local transition kernels
Projection as Marginalization
# Projection = forgetting colors = marginalization
project(P_colored, subset) = ∫ P_colored d(complement colors)
# This is a left adjoint (free construction) in categorical terms
GF(3) Triad Assignment
| Trit | Skill | Role |
|---|---|---|
| -1 | yang-baxter-integrability | Structure |
| 0 | kpz-universality | Limits |
| +1 | colored-vertex-model | Data |
Conservation: (-1) + (0) + (+1) = 0 ✓
Commands
# Simulate colored model
just cvm-simulate n_colors=3 L=100 T=50
# Project to k colors
just cvm-project model=rainbow.jld2 k=2
# Compute height function
just cvm-height k=2 x=50 y=25
# Verify projection property
just cvm-verify-projection
# Gay-MCP integration
just cvm-gay seed=1069
Configuration
# colored-vertex-model.yaml
model:
n_colors: 3
grid_size: 100
time_steps: 50
weights:
q: 0.5
b: 0.3
gay_integration:
enabled: true
seed: 1069
verify_gf3: true
projection:
levels: [1, 2] # project to these color counts
Related Skills
- yang-baxter-integrability (-1): R-matrix structure
- kpz-universality (0): Scaling limits
- gay-mcp (+1): Deterministic coloring
- langevin-dynamics (0): Stochastic analysis
- discopy (+1): String diagrams
Research References
- Borodin-Wheeler (2018): "Colored stochastic vertex models"
- Aggarwal-Borodin-Wheeler (2022): "Colored six-vertex models"
- Galashin (2021): "Symmetries of stochastic colored vertex models"
- Borodin-Bufetov (2019): "Color-position symmetry"
Skill Name: colored-vertex-model Type: Integrable Probability Trit: +1 (PLUS) Key Property: Projection preserves model structure Status: ✅ Production Ready
Cat# Integration
Trit: +1 (PLUS)
Home: IntegrableProb
Poly Op: ⊗
Kan Role: Lan_K (left Kan)
Color: #FF6B6B
Color as Functor
Colors form a functor:
Color: Vertex → GF(3)
Projection is a natural transformation:
π: Color_n → Color_k (n > k)
GF(3) Naturality
(-1) + (0) + (+1) ≡ 0 (mod 3)
Autopoietic Marginalia
Colors flow. Projections preserve. The rainbow encodes the universe.
Every use of this skill is an opportunity for worlding:
- MEMORY (-1): Record successful projections
- REMEMBERING (0): Connect to KPZ limits
- WORLDING (+1): Discover new color structures
Add Interaction Exemplars here as the skill is used.