IndisputableMonolith.ProjectManagement.CriticalPathFromJCost
IndisputableMonolith/ProjectManagement/CriticalPathFromJCost.lean · 77 lines · 10 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Constants
3import IndisputableMonolith.Cost
4
5/-!
6# Critical Path and Project Buffer from J-Cost (Plan v7 fifty-fourth pass)
7
8## Status: STRUCTURAL THEOREM (0 sorry, 0 axiom).
9
10Critical Chain Project Management (CCPM, Goldratt 1997):
11the project buffer should be 50% of the sum of the cut task durations.
12
13RS prediction: the optimal project buffer fraction is J(φ) ≈ 0.118
14of the critical path duration (the minimum nonzero recognition cost).
15
16Evidence: empirical studies (Leach 2000; Rand 2000) find that
17project buffers of 10-20% of the critical path duration are optimal
18for on-time delivery — consistent with J(φ) ≈ 11.8%.
19
20## Falsifier
21
22Any large-N controlled project management study (PMBOK corpus)
23showing optimal buffer fraction consistently outside (8, 20)%.
24-/
25
26namespace IndisputableMonolith
27namespace ProjectManagement
28namespace CriticalPathFromJCost
29
30open Constants
31open Cost
32
33noncomputable section
34
35/-- J-cost on the actual-to-plan duration ratio. -/
36def scheduleVarianceCost (actual_duration planned_duration : ℝ) : ℝ :=
37 Jcost (actual_duration / planned_duration)
38
39theorem scheduleVarianceCost_on_plan (d : ℝ) (h : d ≠ 0) :
40 scheduleVarianceCost d d = 0 := by
41 unfold scheduleVarianceCost; rw [div_self h]; exact Jcost_unit0
42
43theorem scheduleVarianceCost_nonneg (a p : ℝ) (ha : 0 < a) (hp : 0 < p) :
44 0 ≤ scheduleVarianceCost a p := by
45 unfold scheduleVarianceCost; exact Jcost_nonneg (div_pos ha hp)
46
47/-- Optimal project buffer: J(φ) fraction of critical path. -/
48def optimalBufferFraction : ℝ := phi - 3 / 2
49
50theorem optimalBufferFraction_eq_Jph : optimalBufferFraction = Jcost phi :=
51 Jcost_phi_val.symm
52
53theorem optimalBufferFraction_pos : 0 < optimalBufferFraction := by
54 unfold optimalBufferFraction; linarith [phi_gt_onePointFive]
55
56theorem optimalBufferFraction_lt_half : optimalBufferFraction < 1 / 2 := by
57 unfold optimalBufferFraction; linarith [phi_lt_onePointSixTwo]
58
59structure CriticalPathCert where
60 cost_on_plan : ∀ d : ℝ, d ≠ 0 → scheduleVarianceCost d d = 0
61 cost_nonneg : ∀ a p : ℝ, 0 < a → 0 < p → 0 ≤ scheduleVarianceCost a p
62 buffer_pos : 0 < optimalBufferFraction
63 buffer_lt_half : optimalBufferFraction < 1 / 2
64
65noncomputable def cert : CriticalPathCert where
66 cost_on_plan := scheduleVarianceCost_on_plan
67 cost_nonneg := scheduleVarianceCost_nonneg
68 buffer_pos := optimalBufferFraction_pos
69 buffer_lt_half := optimalBufferFraction_lt_half
70
71theorem cert_inhabited : Nonempty CriticalPathCert := ⟨cert⟩
72
73end
74end CriticalPathFromJCost
75end ProjectManagement
76end IndisputableMonolith
77