The first programming language for choreographers of figure skating.
|
Note
|
✅ Green Tick Complete (2026-01-31) Anvomidav has achieved Green Tick status with 3 of 4 core language features: - ✅ Record field access (domain-specific types) - ✅ Stdlib integration (ISU rules validator) - ✅ Enhanced error messages with helpful hints - ❌ Workers N/A (choreography DSL, sequential execution) Overall Completion: 100% of core language features |
| Component | Description | Status |
|---|---|---|
Lexer |
Tokenizes Anvomidav source using logos |
✓ Complete |
Parser |
Builds AST using chumsky 0.9 combinators |
✓ Complete |
Type System |
Basic type checking for programs |
✓ Complete |
ISU Rules |
Validates programs against ISU regulations |
✓ Complete |
CLI |
Command-line interface ( |
✓ Complete |
All Disciplines |
Singles, Pairs, Ice Dance support |
✓ Complete |
Error Hints |
Helpful hints for ISU rule violations |
✓ Complete |
Anvomidav provides context-aware error hints for ISU rule violations:
error[E0201]: Too many jump elements: found 8, maximum 7
--> program.anv:12:5
|
12 | jump quad lutz
| ^^^^^^^^^^^^^^
|
help: ISU rules limit jump elements to 7 in this segment.
Consider removing some or moving to a different sequence.All semantic errors include helpful hints that: - Explain the ISU rule being violated - Suggest specific fixes - Reference discipline-specific requirements
┌─────────────────────────────────────────────────────────────────┐
│ anv-cli │
│ (Command Line Interface) │
│ check · parse · lex · fmt · new │
└────────────────────────┬────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ anv-syntax │ │ anv-types │ │anv-semantics│
│ Lexer │ │ Type │ │ ISU Rules │
│ Parser │ │ Checker │ │ Validation │
│ AST │ │ │ │ │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└────────────────┼────────────────┘
│
▼
┌─────────────────┐
│ anv-core │
│ Skating Types │
│ Source Spans │
│ Diagnostics │
└─────────────────┘
# Clone the repository
git clone https://github.com/hyperpolymath/anvomidav.git
cd anvomidav
# Build all crates
cargo build --release
# Run tests (90+ passing)
cargo test
# Install the CLI
cargo install --path crates/anv-cliprogram competition_2025 {
segment sp: short {
sequence opening {
jump triple axel
spin camel L3
step circular L4
}
}
segment fs: free {
sequence jumps {
jump quad lutz
jump triple flip
jump triple loop
}
}
}Anvomidav supports all ISU-recognized jumps with rotation counts:
jump single toe_loop // 1T
jump double salchow // 2S
jump triple axel // 3A
jump quad lutz // 4Lz
jump triple flip // 3F
jump double loop // 2LoSpins include position and level designation:
spin upright L2 // USp2
spin sit L3 // SSp3
spin camel L4 // CSp4
spin layback L3 // LSp3
spin biellmann L4 // BSp4For pairs skating, additional elements are available:
lift Gr3 L4 // Group 3 lift, Level 4
lift Gr5 L3 // Group 5 (hand-to-hand) lift
throw triple axel // 3ATh
twist double L3 // 2Tw3
death_spiral LBI L4 // Left Backward Inside death spiralchoreographic spiral // ChSp
choreographic spread // ChSl (spread eagle)
choreographic ina // ChSl (Ina Bauer)
pattern waltz // Pattern danceThe semantic analyzer validates programs against ISU Technical Panel guidelines:
-
Short Program: Max 3 jumps, 2 spins, 1 step sequence
-
Free Skate: Max 7 jumps, 3 spins, 1 step sequence
-
No pairs elements allowed (lifts, throws, twists, death spirals)
-
Short Program: 1 required lift, 1 throw, 1 twist, 1 death spiral
-
Free Skate: Multiple lifts, throws permitted
-
Side-by-side and synchronized elements supported
anv check <files> # Check files for errors
anv parse <file> # Parse and display AST
anv lex <file> # Tokenize and display tokens
anv fmt <files> # Format source files (WIP)
anv new <name> # Create new project
--template singles|pairs|ice-dance| Crate | Description | Lines |
|---|---|---|
|
Core skating types (Edge, JumpKind, SpinPosition, Level, etc.) |
~500 |
|
Lexer (logos) and Parser (chumsky), AST definitions |
~1500 |
|
Type checking and inference |
~400 |
|
ISU rules validation engine |
~500 |
|
Command-line interface |
~400 |
Per the Hyperpolymath Standard:
| Component | Technology |
|---|---|
Language |
Rust (1.75+) |
Lexer |
logos 0.14 |
Parser |
chumsky 0.9 |
Error Reporting |
miette 7 (fancy diagnostics) |
CLI Framework |
clap 4 |
Serialization |
serde/serde_json |
program mens_short_2025 {
segment sp: short {
sequence elements {
// Required jump element
jump triple axel
// Jump combination
jump triple lutz
jump triple toe_loop
// Flying spin
spin camel L3
// Spin with only one change of foot
spin sit L3
// Step sequence
step circular L4
}
}
}-
Roadmap — Development phases and milestones
-
Contributing — How to participate
-
Security Policy — Vulnerability reporting
-
Code of Conduct — Community standards
-
Academic Papers — Formal specification and proofs
Dual-licensed under PMPL-1.0 OR PMPL-1.0-or-later. Choose the license that best fits your use case.
Contributions welcome! We’re looking for:
-
Figure skating domain experts — Help refine element definitions
-
Compiler engineers — Work on optimization and codegen
-
UI/UX designers — Design visualization outputs
-
Documentation writers — Improve tutorials and guides
See CONTRIBUTING.adoc for workflow details.