pith. machine review for the scientific record. sign in

IndisputableMonolith.ProjectManagement.CriticalPathFromJCost

IndisputableMonolith/ProjectManagement/CriticalPathFromJCost.lean · 77 lines · 10 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   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

source mirrored from github.com/jonwashburn/shape-of-logic