math-ivt-proof
The code provides a computational proof companion to the mathematical Intermediate Value Theorem, using the supremum method with epsilon-delta continuity.
Let (f) be continuous on ([a,b]) with (f(a) < 0 < f(b)). Define:
[ S = { x \in [a,b] \mid f(x) \le 0 }, \qquad c = \sup S ]
Claim: (f(c) = 0).
If (f(c) < 0): By continuity, (\exists \delta > 0) such that (|x - c| < \delta \Rightarrow |f(x) - f(c)| < -f(c)/2). Then for (x \in (c, c+\delta)), (f(x) < f(c) + (-f(c)/2) = f(c)/2 < 0), so these points are in (S), contradicting that (c) is an upper bound of (S).
If (f(c) > 0): By continuity, (\exists \delta > 0) such that (|x - c| < \delta \Rightarrow |f(x) - f(c)| < f(c)/2). Then for (x \in (c-\delta, c)), (f(x) > f(c) - f(c)/2 = f(c)/2 > 0), so these points are not in (S), contradicting that (c) is the least upper bound.
Hence (f(c) = 0). ∎
Generalisation: For any target (v) with (f(a) < v < f(b)), apply the theorem to (g(x) = f(x) - v). If (f(a) > v > f(b)), apply it to (-f(x) + v).
File: ~/ivt_proof.py — 190 lines with three core components:
| Component | Purpose |
|---|---|
sup_of_set() |
Binary-search sweep to approximate (\sup{x \in [a,b] \mid P(x)}) |
find_delta_for_eps() |
Numerically search for a (\delta) satisfying the (\varepsilon)-(\delta) definition |
intermediate_value() |
Computes (c = \sup S) and verifies (f(c) \approx 0) via continuity check |
intermediate_value_general() |
Wraps the above for any target value in either inequality direction |
Key design: The binary search for the supremum implicitly relies on the fact that for a continuous function with (f(a) < 0 < f(b)), the set (S = {x \mid f(x) \le 0}) is an interval ([a, c]). The predicate f(x) <= target serves as the membership test, and the binary search converges to the supremum.
### Main demonstration (7 cases)
```
1. f(x) = x³ - 2x - 5 on [0, 3] → c ≈ 2.09455148 |f(c)-0| = 1.95e-10 ✓
2. f(x) = sin(x) - 0.5 on [0, 2] → c ≈ 0.52359878 |f(c)-0| = 9.14e-12 ✓
3. f(x) = eˣ - 4 on [0, 2] → c ≈ 1.38629436 |f(c)-0| = 1.32e-11 ✓
4. f(x) = 0.75-|x-1.5| on [0, 1.5] → c = 0.75000000 |f(c)-0| = 4.37e-11 ✓
5. f(x) = x² target 2 on [-1, 2] → c ≈ 1.41421356 |f(c)-2| = 9.61e-12 ✓
6. f(x) = 5-x target 3 on [0, 3] → c = 2.00000000 |f(c)-3| = 1.46e-11 ✓ (reversed)
7. f(x) = x-2 on [0, 4] → c = 2.00000000 |f(c)-0| = 2.91e-11 ✓
```
### Unit test suite (19 tests, all passing)
| Category | Tests | What's verified |
|----------|-------|----------------|
| `TestSupOfSet` | 4 | Supremum finder: constant predicates, exact boundaries |
| `TestEpsilonDelta` | 3 | Continuity checker and delta-finder sanity |
| `TestIntermediateValue` | 12 | Root-finding for polynomial, trig, exponential, abs; steep/shallow slopes; generalised targets; reversed inequality; error handling |
**Edge cases covered:**
- Nearly flat functions (\(10^{-6}\) slope) — converges correctly
- Very steep functions (\(10^{6}\) slope) — sup resolves within \(10^{-7}\) of true root
- Target value arbitrarily close to endpoint (0.001 vs f(a) = -1.0)
- Reversed inequality direction (\(f(a) > v > f(b)\))
- Violated preconditions raise `ValueError`
### Running the code
```bash
python3 ~/ivt_proof.py # 7-case demonstration
python3 ~/test_ivt.py # 19-unit-test suite
```
---{"model": "gpt-4o", "problem_class": "math-ivt-proof", "result": "passed", "tests": 19}The code provides a computational proof companion to the mathematical Intermediate Value Theorem, using the supremum method with epsilon-delta continuity.
Let (f) be continuous on ([a,b]) with (f(a) < 0 < f(b)). Define:
[ S = { x \in [a,b] \mid f(x) \le 0 }, \qquad c = \sup S ]
Claim: (f(c) = 0).
If (f(c) < 0): By continuity, (\exists \delta > 0) such that (|x - c| < \delta \Rightarrow |f(x) - f(c)| < -f(c)/2). Then for (x \in (c, c+\delta)), (f(x) < f(c) + (-f(c)/2) = f(c)/2 < 0), so these points are in (S), contradicting that (c) is an upper bound of (S).
If (f(c) > 0): By continuity, (\exists \delta > 0) such that (|x - c| < \delta \Rightarrow |f(x) - f(c)| < f(c)/2). Then for (x \in (c-\delta, c)), (f(x) > f(c) - f(c)/2 = f(c)/2 > 0), so these points are not in (S), contradicting that (c) is the least upper bound.
Hence (f(c) = 0). ∎
Generalisation: For any target (v) with (f(a) < v < f(b)), apply the theorem to (g(x) = f(x) - v). If (f(a) > v > f(b)), apply it to (-f(x) + v).
File: ~/ivt_proof.py — 190 lines with three core components:
| Component | Purpose |
|---|---|
sup_of_set() |
Binary-search sweep to approximate (\sup{x \in [a,b] \mid P(x)}) |
find_delta_for_eps() |
Numerically search for a (\delta) satisfying the (\varepsilon)-(\delta) definition |
intermediate_value() |
Computes (c = \sup S) and verifies (f(c) \approx 0) via continuity check |
intermediate_value_general() |
Wraps the above for any target value in either inequality direction |
Key design: The binary search for the supremum implicitly relies on the fact that for a continuous function with (f(a) < 0 < f(b)), the set (S = {x \mid f(x) \le 0}) is an interval ([a, c]). The predicate f(x) <= target serves as the membership test, and the binary search converges to the supremum.
### Main demonstration (7 cases)
```
1. f(x) = x³ - 2x - 5 on [0, 3] → c ≈ 2.09455148 |f(c)-0| = 1.95e-10 ✓
2. f(x) = sin(x) - 0.5 on [0, 2] → c ≈ 0.52359878 |f(c)-0| = 9.14e-12 ✓
3. f(x) = eˣ - 4 on [0, 2] → c ≈ 1.38629436 |f(c)-0| = 1.32e-11 ✓
4. f(x) = 0.75-|x-1.5| on [0, 1.5] → c = 0.75000000 |f(c)-0| = 4.37e-11 ✓
5. f(x) = x² target 2 on [-1, 2] → c ≈ 1.41421356 |f(c)-2| = 9.61e-12 ✓
6. f(x) = 5-x target 3 on [0, 3] → c = 2.00000000 |f(c)-3| = 1.46e-11 ✓ (reversed)
7. f(x) = x-2 on [0, 4] → c = 2.00000000 |f(c)-0| = 2.91e-11 ✓
```
### Unit test suite (19 tests, all passing)
| Category | Tests | What's verified |
|----------|-------|----------------|
| `TestSupOfSet` | 4 | Supremum finder: constant predicates, exact boundaries |
| `TestEpsilonDelta` | 3 | Continuity checker and delta-finder sanity |
| `TestIntermediateValue` | 12 | Root-finding for polynomial, trig, exponential, abs; steep/shallow slopes; generalised targets; reversed inequality; error handling |
**Edge cases covered:**
- Nearly flat functions (\(10^{-6}\) slope) — converges correctly
- Very steep functions (\(10^{6}\) slope) — sup resolves within \(10^{-7}\) of true root
- Target value arbitrarily close to endpoint (0.001 vs f(a) = -1.0)
- Reversed inequality direction (\(f(a) > v > f(b)\))
- Violated preconditions raise `ValueError`
### Running the code
```bash
python3 ~/ivt_proof.py # 7-case demonstration
python3 ~/test_ivt.py # 19-unit-test suite
```
---{"model": "gpt-4o", "problem_class": "math-ivt-proof", "result": "passed", "tests": 19}