Date: 2025-11-21
Branch: proof-multirule-axiom
Objective: Improve module naming for reusability and fix modularization issues
This document summarizes the comprehensive refactoring of the phonetic verification modules to improve naming conventions for better reusability and clean up architectural issues introduced during the monolithic → modular split.
Compile the memory-intensive PatternHelpers_Mismatch_Complex.v proof with systemd resource limits to prevent system crashes.
make -j1PatternMatching_Induction.v (renamed from _Mismatch_Complex)The original module names were too specific to their initial use case (mismatch analysis for position skipping). The new names emphasize general techniques and reusable patterns:
| Old Name | New Name | Rationale | Reusability Score |
|---|---|---|---|
PatternHelpers_Mismatch_Simple.v | PatternMatching_Properties.v | Emphasize general "properties" over specific "mismatch" application | ⭐⭐⭐⭐⭐ High |
PatternHelpers_Mismatch_Complex.v | PatternMatching_Induction.v | Focus on reusable "induction" techniques rather than specific use case | ⭐⭐⭐⭐⭐ High |
PatternHelpers_Leftmost.v | PatternMatching_Positioning.v | Generic "positioning" applicable beyond leftmost analysis | ⭐⭐⭐⭐ Good |
| Module Name | Reusability Assessment | Decision |
|---|---|---|
PatternHelpers_Basic.v | ✅ Already generic (infrastructure, prefix preservation) | KEEP |
PatternOverlap.v | ✅ Generic concept applicable to many pattern systems | KEEP |
Preservation.v | ✅ Generic verification concept | KEEP |
Position_Skipping_Proof.v | ❌ Extremely specific to position skipping axiom | KEEP (not meant for reuse) |
During the split from monolithic position_skipping_proof.v (3379 lines) into modular structure, redundant files were not deleted:
theories/Patterns/PatternHelpers.v (21KB) - Complete duplicate of all 4 split modulestheories/Patterns/PatternHelpers_Mismatch.v - Redundant intermediate versionThese files were not in _CoqProject but still existed, creating stealth conflicts.
rm theories/Patterns/PatternHelpers.v
rm theories/Patterns/PatternHelpers_Mismatch.v
_CoqProject ConfigurationUpdated: Module filenames + improved documentation comments
# Patterns layer (Axiom 2 - FULLY PROVEN)
-# PatternHelpers split into 4 files to manage memory during compilation:
-# - Basic: lightweight lemmas (~10GB)
-# - Mismatch_Simple: simple helper lemmas (~5-10GB)
-# - Mismatch_Complex: pattern_matches_at_has_mismatch with nested induction (~60-80GB)
-# - Leftmost: leftmost mismatch analysis with deep nested induction (~80GB)
+# Pattern matching modules split for memory management and reusability:
+# - Basic: lightweight infrastructure (prefix preservation, position validity) (~10GB)
+# - Properties: pattern matching properties and simple helpers (~5-10GB)
+# - Induction: complex nested induction proofs for pattern mismatch (~60-80GB)
+# - Positioning: leftmost/positional analysis with deep induction (~80GB)
theories/Patterns/PatternHelpers_Basic.v
-theories/Patterns/PatternHelpers_Mismatch_Simple.v
-theories/Patterns/PatternHelpers_Mismatch_Complex.v
-theories/Patterns/PatternHelpers_Leftmost.v
+theories/Patterns/PatternMatching_Properties.v
+theories/Patterns/PatternMatching_Induction.v
+theories/Patterns/PatternMatching_Positioning.v
theories/Patterns/PatternOverlap.v
File: theories/Patterns/PatternOverlap.v
From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternHelpers_Basic.
-From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternHelpers_Mismatch_Simple.
-From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternHelpers_Mismatch_Complex.
-From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternHelpers_Leftmost.
+From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternMatching_Properties.
+From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternMatching_Induction.
+From Liblevenshtein.Phonetic.Verification Require Import Patterns.PatternMatching_Positioning.
File: theories/Position_Skipping_Proof.v
From Liblevenshtein.Phonetic.Verification Require Import
Auxiliary.Types Auxiliary.Lib
Core.Rules
Invariants.InvariantProperties Invariants.AlgoState
Patterns.PatternHelpers_Basic
- Patterns.PatternHelpers_Mismatch_Simple
- Patterns.PatternHelpers_Mismatch_Complex
- Patterns.PatternHelpers_Leftmost
+ Patterns.PatternMatching_Properties
+ Patterns.PatternMatching_Induction
+ Patterns.PatternMatching_Positioning
Patterns.PatternOverlap.
File: theories/Patterns/PatternMatching_Properties.v
(** * Pattern Matching Properties - Simple Helpers
This module contains simple helper lemmas for pattern matching properties
with lightweight proofs. Designed for reusability across pattern matching
verification tasks.
Part of: Liblevenshtein.Phonetic.Verification.Patterns
Renamed from PatternHelpers_Mismatch_Simple.v for better reusability.
*)
File: theories/Patterns/PatternMatching_Induction.v
(** * Pattern Matching Induction - Complex Nested Induction Proofs
This module contains the memory-intensive pattern_matches_at_has_mismatch lemma
with complex nested induction and extensive lia usage. Provides reusable induction
patterns for pattern matching verification.
Part of: Liblevenshtein.Phonetic.Verification.Patterns
Renamed from PatternHelpers_Mismatch_Complex.v for better reusability.
Isolated into its own file due to high memory requirements (~60-80GB).
*)
File: theories/Patterns/PatternMatching_Positioning.v
(** * Pattern Matching Positioning - Positional Analysis
This module contains positional analysis lemmas for pattern matching,
including leftmost position determination with deep nested induction.
Designed for reusability in pattern position verification tasks.
Part of: Liblevenshtein.Phonetic.Verification.Patterns
Renamed from PatternHelpers_Leftmost.v for better reusability.
*)
make clean # Remove all .vo, .vok, .vos files
make -j1) to manage memory/tmp/verify_compile.logPatternMatching_Induction.v (the OOM-prone proof)All renames used git mv to preserve file history:
git mv theories/Patterns/PatternHelpers_Mismatch_Simple.v \
theories/Patterns/PatternMatching_Properties.v
git mv theories/Patterns/PatternHelpers_Mismatch_Complex.v \
theories/Patterns/PatternMatching_Induction.v
git mv theories/Patterns/PatternHelpers_Leftmost.v \
theories/Patterns/PatternMatching_Positioning.v
git mv)_CoqProject)PatternOverlap.v, Position_Skipping_Proof.v)pattern_matches_at_has_mismatch proof (Phase 4)Recommendation: Use Option 5 (Profile) + Option 1 (Optimize) to fix OOM root cause
Strategy:
coqc -verbose -time to identify slowest tacticslia workloadlia usage with manual proof steps where feasibleGoal: Reduce memory footprint from 100GB+ to manageable levels (<20GB)
docs/verification/phonetic/position_skipping_proof.v (3379 lines, 87 lemmas)/tmp/verify_compile.log, /tmp/overlap_compile.log, /tmp/leftmost_compile.logproof-multirule-axiommasterCan you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |