项目文件夹

文件
wehub-resource-sync 26382a7ac6
CI / Clippy (push) Failing after 15m13s
CI / Test (ubuntu-latest) (push) Failing after 16m1s
CI / Test (macos-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Build (no embeddings / no ORT) (push) Has been cancelled
CI / Format (push) Has been cancelled
CI / Cookbook (Node) (push) Has been cancelled
CI / Pi Extension (Node) (push) Has been cancelled
CI / Rust SDK (lean-ctx-client) (push) Has been cancelled
CI / Embed SDK (lean-ctx-sdk) (push) Has been cancelled
CI / Python SDK (leanctx) (push) Has been cancelled
CI / Hermes Plugin (Python) (push) Has been cancelled
CI / SDK Conformance Matrix (push) Has been cancelled
CI / Coverage (push) Has been cancelled
CI / cargo-deny (push) Has been cancelled
CI / Adversarial Safety (push) Has been cancelled
CI / Benchmarks (push) Has been cancelled
CI / Output-Quality Gate (eval A/B) (push) Has been cancelled
CI / Documentation (push) Has been cancelled
CI / CI Green (push) Has been cancelled
JetBrains Plugin / Actionlint (push) Has been cancelled
CodeQL / Analyze (actions) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
CodeQL / Analyze (rust) (push) Has been cancelled
JetBrains Plugin / Validation (push) Has been cancelled
JetBrains Plugin / Build (push) Has been cancelled
JetBrains Plugin / Test (push) Has been cancelled
Security Check / Security Scan (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:35:30 +08:00

189 行
7.6 KiB
Lean4

此文件含有模棱两可的 Unicode 字符
此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。
/-
LeanCTX Formal Verification — Terse Compression Engine Invariants
Proves correctness properties of the 4-layer terse compression engine:
- Passthrough guarantee for Off level
- Structural marker protection
- Filler/decoration removal rules
- Max-to-Standard fallback correctness
- Threshold ordering across levels
Mirrors: rust/src/core/terse/engine.rs, rust/src/core/terse/pipeline.rs
Enterprise guarantee: these proofs ensure the compression engine
never silently destroys information.
Scientific basis:
- Surprisal-based information density (Shannon 1948)
- Structural marker preservation (analogous to Named Entity Recognition)
-/
import LeanCtxProofs.Basic
namespace LeanCtxProofs.Compression.TerseEngine
-- ============================================================================
-- Core Types (mirror rust/src/core/config.rs + engine.rs)
-- ============================================================================
/-- Compression levels, ordered by aggressiveness.
Mirrors `CompressionLevel` in config.rs. -/
inductive CompressionLevel where
| off
| lite
| standard
| max
deriving DecidableEq, Repr
/-- A scored text line with information density metadata. -/
structure ScoredLine where
content : String
score : Nat
hasStructuralMarker : Bool
isEmpty : Bool
isPureDecoration : Bool
isFiller : Bool
deriving DecidableEq, Repr
/-- Whether a compression level is active (not Off). -/
def CompressionLevel.isActive : CompressionLevel Bool
| .off => false
| _ => true
/-- Score threshold for each level (scaled ×10 for Nat precision).
Mirrors constants in engine.rs: 2.5→25, 3.0→30, 3.5→35. -/
def scoreThreshold : CompressionLevel Nat
| .off => 0
| .lite => 25
| .standard => 30
| .max => 35
-- ============================================================================
-- Line Filtering (mirrors engine.rs filter logic)
-- ============================================================================
/-- A line should be removed if: empty, pure decoration, unprotected filler,
or below score threshold without structural markers. -/
def shouldRemove (level : CompressionLevel) (line : ScoredLine) : Bool :=
line.isEmpty ||
line.isPureDecoration ||
(line.isFiller && !line.hasStructuralMarker) ||
(line.score < scoreThreshold level && !line.hasStructuralMarker)
/-- The core filter: keep lines that should NOT be removed. -/
def filterLines (level : CompressionLevel) (lines : List ScoredLine) : List ScoredLine :=
lines.filter (! shouldRemove level ·)
/-- Max-level with fallback to Standard on quality failure. -/
def compressWithFallback (lines : List ScoredLine)
(maxQualityPassed : Bool) : List ScoredLine :=
if maxQualityPassed then filterLines .max lines
else filterLines .standard lines
-- ============================================================================
-- Engine Correctness Theorems
-- ============================================================================
/-- **Theorem 1 (Off Never Removes): Off level marks non-filler content for keeping.
(Off threshold is 0, so only empty/decoration/unprotected-filler lines are removed.) -/
theorem off_never_removes (line : ScoredLine)
(h_ne : line.isEmpty = false)
(h_nd : line.isPureDecoration = false)
(h_nf : line.isFiller = false) :
shouldRemove .off line = false := by
simp [shouldRemove, scoreThreshold, h_ne, h_nd, h_nf]
/-- **Theorem 2 (Structural Marker Safety): Lines with structural markers
are NEVER removed, regardless of compression level.** -/
theorem structural_markers_preserved (level : CompressionLevel) (line : ScoredLine)
(h_marker : line.hasStructuralMarker = true)
(h_not_empty : line.isEmpty = false)
(h_not_deco : line.isPureDecoration = false) :
shouldRemove level line = false := by
simp [shouldRemove, h_not_empty, h_not_deco, h_marker]
/-- **Theorem 3 (Empty Lines Always Removed): Empty lines are removed
at any compression level.** -/
theorem empty_lines_always_removed (level : CompressionLevel) (line : ScoredLine)
(h_empty : line.isEmpty = true) :
shouldRemove level line = true := by
simp [shouldRemove, h_empty]
/-- **Theorem 4 (Decoration Always Removed): Pure decoration lines are
removed at any compression level.** -/
theorem decoration_always_removed (level : CompressionLevel) (line : ScoredLine)
(h_deco : line.isPureDecoration = true) :
shouldRemove level line = true := by
simp [shouldRemove, h_deco]
/-- **Theorem 5 (Filler With Markers Kept): Filler lines that have structural
markers are NOT removed — the marker protects them.** -/
theorem filler_with_marker_kept (level : CompressionLevel) (line : ScoredLine)
(h_filler : line.isFiller = true)
(h_marker : line.hasStructuralMarker = true)
(h_not_empty : line.isEmpty = false)
(h_not_deco : line.isPureDecoration = false) :
shouldRemove level line = false := by
simp [shouldRemove, h_not_empty, h_not_deco, h_filler, h_marker]
/-- **Theorem 6 (Filter is Subset): Filtered output is always a subset of input.** -/
theorem filter_subset (level : CompressionLevel) (lines : List ScoredLine) :
l filterLines level lines, l lines := by
intro l hl
simp [filterLines, List.mem_filter] at hl
exact hl.1
/-- **Theorem 7 (Threshold Monotonicity): Lite ≤ Standard threshold.** -/
theorem lite_le_standard : scoreThreshold .lite scoreThreshold .standard := by
native_decide
/-- **Theorem 8 (Threshold Monotonicity): Standard ≤ Max threshold.** -/
theorem standard_le_max : scoreThreshold .standard scoreThreshold .max := by
native_decide
/-- **Theorem 9 (Threshold Monotonicity): Lite ≤ Max threshold.** -/
theorem lite_le_max : scoreThreshold .lite scoreThreshold .max := by
native_decide
/-- **Theorem 10 (Fallback Returns Standard): When Max quality fails,
fallback returns Standard compression.** -/
theorem fallback_on_failure (lines : List ScoredLine) :
compressWithFallback lines false = filterLines .standard lines := by
simp [compressWithFallback]
/-- **Theorem 11 (Fallback Uses Max): When Max quality passes,
fallback returns Max compression.** -/
theorem fallback_on_success (lines : List ScoredLine) :
compressWithFallback lines true = filterLines .max lines := by
simp [compressWithFallback]
/-- **Theorem 12 (Off Not Active): Off level is never active.** -/
theorem off_not_active : CompressionLevel.isActive .off = false := by rfl
/-- **Theorem 13 (Lite Active): Lite level is active.** -/
theorem lite_is_active : CompressionLevel.isActive .lite = true := by rfl
/-- **Theorem 14 (Standard Active): Standard level is active.** -/
theorem standard_is_active : CompressionLevel.isActive .standard = true := by rfl
/-- **Theorem 15 (Max Active): Max level is active.** -/
theorem max_is_active : CompressionLevel.isActive .max = true := by rfl
/-- **Theorem 16 (Filter Empty): Filtering an empty list produces an empty list.** -/
theorem filter_empty (level : CompressionLevel) :
filterLines level [] = [] := by rfl
/-- **Theorem 17 (High Score Protected): A non-empty, non-decoration line with
score above Max threshold is never removed at any level.** -/
theorem high_score_kept (level : CompressionLevel) (line : ScoredLine)
(h_score : scoreThreshold .max line.score)
(h_not_empty : line.isEmpty = false)
(h_not_deco : line.isPureDecoration = false)
(h_not_filler : line.isFiller = false) :
shouldRemove level line = false := by
simp [shouldRemove, h_not_empty, h_not_deco, h_not_filler]
intro h_lt
have h_le : scoreThreshold level scoreThreshold .max := by
cases level <;> simp [scoreThreshold] <;> omega
omega
end LeanCtxProofs.Compression.TerseEngine