aprender 0.29.3

Next-generation ML framework in pure Rust — `cargo install aprender` for the `apr` CLI
Documentation
# [Topic] Theory - Template

<!-- DOC_STATUS_START -->
**Chapter Status**: ⬜ Template (Not yet written)

| Status | Count | Examples |
|--------|-------|----------|
| ✅ Working | 0 | - |
| ⏳ In Progress | 0 | - |
| ⬜ Not Implemented | 3 | All examples pending |

*Last tested: Never*
*Aprender version: 0.3.0*
*Test file: tests/book/ml_fundamentals/template_chapter.rs*
<!-- DOC_STATUS_END -->

---

## Overview

[Brief 2-3 sentence overview of the topic]

**Key Concepts**:
- Concept 1
- Concept 2
- Concept 3

**Why This Matters**:
[1-2 sentences explaining practical importance]

---

## Mathematical Foundation

### The Core Equation

[Present the main mathematical equation with explanation]

**Example**: For Linear Regression, the OLS solution is:

```
β = (X^T X)^(-1) X^T y
```

Where:
- `β` = coefficient vector
- `X` = feature matrix
- `y` = target vector

### Derivation (Brief)

[2-3 paragraphs showing key derivation steps, focusing on intuition not rigor]

**Property Test Reference**: This equation is verified in `tests/book/ml_fundamentals/[topic].rs::test_[property_name]`

---

## Implementation in Aprender

### Code Example 1: Basic Usage

```rust
use aprender::module::Algorithm;
use aprender::primitives::{Matrix, Vector};
use aprender::traits::Estimator;

// Create sample data
let x = Matrix::from_vec(5, 1, vec![1.0, 2.0, 3.0, 4.0, 5.0]).unwrap();
let y = Vector::from_vec(vec![2.0, 4.0, 6.0, 8.0, 10.0]);

// Fit model
let mut model = Algorithm::new();
model.fit(&x, &y).unwrap();

// Verify coefficients
let coef = model.coefficients();
assert!((coef[0] - 2.0).abs() < 1e-5); // Should be ~2.0
```

**Test Reference**: `tests/book/ml_fundamentals/[topic].rs::test_basic_usage`

---

### Code Example 2: Edge Case Handling

```rust
// Test edge case: [describe edge case]
let x_edge = Matrix::from_vec(2, 1, vec![1.0, 1.0]).unwrap();
let y_edge = Vector::from_vec(vec![1.0, 2.0]);

let mut model = Algorithm::new();
let result = model.fit(&x_edge, &y_edge);

// Should handle gracefully
assert!(result.is_err());
```

**Test Reference**: `tests/book/ml_fundamentals/[topic].rs::test_edge_case`

---

## Verification Through Property Tests

### Property 1: [Mathematical Property Name]

**Mathematical Statement**: [State the property mathematically]

**Verification Code**:

```rust
#[cfg(test)]
mod properties {
    use proptest::prelude::*;

    proptest! {
        #[test]
        fn property_name(
            x_vals in prop::collection::vec(-100.0f32..100.0f32, 10..20),
            param in -10.0f32..10.0f32,
        ) {
            // Generate test data
            let n = x_vals.len();
            let x = Matrix::from_vec(n, 1, x_vals.clone()).unwrap();

            // Apply algorithm
            let mut model = Algorithm::new();
            model.fit(&x, &y).unwrap();

            // Verify property holds
            prop_assert!(/* condition */);
        }
    }
}
```

**Why This Proves Correctness**: [Explain how the property test validates the math]

**Test Reference**: `tests/book/ml_fundamentals/[topic].rs::properties::property_name`

---

## Practical Considerations

### When to Use This Approach

- **Good for**: [List scenarios]
-**Not good for**: [List scenarios]

### Performance Characteristics

- **Time Complexity**: O(?)
- **Space Complexity**: O(?)
- **Numerical Stability**: [High/Medium/Low]

### Common Pitfalls

1. **Pitfall 1**: [Describe]
   - **Solution**: [Fix]

2. **Pitfall 2**: [Describe]
   - **Solution**: [Fix]

---

## Comparison with Alternatives

| Approach | Pros | Cons | When to Use |
|----------|------|------|-------------|
| This method | - Pro 1<br>- Pro 2 | - Con 1<br>- Con 2 | Scenario X |
| Alternative 1 | - Pro 1<br>- Pro 2 | - Con 1<br>- Con 2 | Scenario Y |

---

## Real-World Application

**Case Study Reference**: <!-- TODO: Add case study link when chapter is written -->

**Key Takeaways**:
1. [Lesson learned from case study]
2. [Another lesson]
3. [Another lesson]

---

## Further Reading

### Peer-Reviewed Papers

1. **Author (Year)** - *Title*
   - **Relevance**: [Why this paper matters]
   - **Link**: [Public URL if available]
   - **Applied in**: `src/module/file.rs:123`

### Related Chapters

<!-- TODO: Update these links when adjacent chapters are written -->
- Previous Topic - Foundation for this chapter
- Next Topic - Builds on this chapter

---

## Summary

**What You Learned**:
- ✅ Mathematical foundation: [equation]
- ✅ Property testing validates correctness
- ✅ Implementation in Aprender
- ✅ When to use this approach

**Verification Guarantee**: All code examples in this chapter are validated by `cargo test --test book`. If this chapter's tests fail, the book build fails. **This is Poka-Yoke** (error-proofing).

---

## Exercises

1. **Exercise 1**: [Description]
   - **Hint**: See test file for example
   - **Solution**: `tests/book/ml_fundamentals/[topic].rs::test_exercise_1`

2. **Exercise 2**: [Description]
   - **Hint**: Try modifying the property test
   - **Solution**: `tests/book/ml_fundamentals/[topic].rs::test_exercise_2`

---

<!-- TODO: Update navigation links when adjacent chapters are written -->
**Next Chapter**: Next Topic

**Previous Chapter**: Previous Topic