Computes a lower bound of the span of the chain, taking into account only
the first nonchain task.
For more accurate results, this should be called after Precedences(),
otherwise the lower bound might be lower than feasible.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-08-06 UTC."],[],["The `DisjunctivePropagator` class manages tasks defined by start, duration, and end times, refining their value ranges. Key actions include propagating precedence deductions (`Precedences`), computing new task bounds (`Propagate`), and finding lower bounds for chain spans (`ChainSpanMin`, `ChainSpanMinDynamic`). It also handles edge-finding (`EdgeFinding`), detectable precedences with chains (`DetectablePrecedencesWithChain`), enforces domain holes (`ForbiddenIntervals`), mirrors tasks with time symmetry (`MirrorTasks`), and propagates distance duration constraints (`DistanceDuration`). `Clear` clears internal state.\n"]]