Imports
Interval search after the counted cached-field insertion
namespace CLRS.Chapter14The counted cached-field insertion inherits complete post-insert search semantics.
theorem intervalSearch_cachedInsert_spec (q query : Interval) {t : AugmentedRBTree Interval Nat}
(hB : IntervalTree.IsBST (AugmentedRBTree.toIntervalTree t))
(hW : AugmentedRBTree.WellAugmented IntervalTree.maxHighAug t) :
let run := AugmentationExecution.insert IntervalTree.maxHighAug AugmentedRBTree.intervalLt q t
let updated := AugmentedRBTree.toIntervalTree run.tree
(IntervalTree.intervalSearch? updated query = none ↔
¬ (Interval.overlaps q query = true ∨ IntervalTree.hasOverlap (AugmentedRBTree.toIntervalTree t) query)) ∧
(∀ i, IntervalTree.intervalSearch? updated query = some i →
(i = q ∨ i ∈ AugmentedRBTree.keys t) ∧ Interval.overlaps i query = true) := by
dsimp only
rw [AugmentationExecution.insert_refines _ _ _ _ hW]
exact intervalSearch_insert_spec q query hB hWend CLRS.Chapter14