From 76e6405c9f810bf9830756bb20ad9e4be3214b89 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Wed, 24 Jul 2024 14:27:43 +0200 Subject: Fix performance issue in CompleteTree.contains. --- BinaryHeap/CompleteTree/AdditionalOperations.lean | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/BinaryHeap/CompleteTree/AdditionalOperations.lean b/BinaryHeap/CompleteTree/AdditionalOperations.lean index d248904..3327e70 100644 --- a/BinaryHeap/CompleteTree/AdditionalOperations.lean +++ b/BinaryHeap/CompleteTree/AdditionalOperations.lean @@ -67,13 +67,14 @@ instance {α : Type u} [DecidableEq α] {tree : CompleteTree α n} {element : α Decidable.isTrue $ Or.inl t else have hl := go p l - have hr := go q r if h₁ : hl.decide then Decidable.isTrue $ Or.inr $ Or.inl $ decide_eq_true_eq.mp h₁ - else if h₂ : hr.decide then - Decidable.isTrue $ Or.inr $ Or.inr $ decide_eq_true_eq.mp h₂ else - have h₁ : ¬l.contains element := decide_eq_true_eq.subst h₁ - have h₂ : ¬r.contains element := decide_eq_true_eq.subst h₂ - Decidable.isFalse $ not_or_intro t $ not_or_intro h₁ h₂ + have hr := go q r + if h₂ : hr.decide then + Decidable.isTrue $ Or.inr $ Or.inr $ decide_eq_true_eq.mp h₂ + else + have h₁ : ¬l.contains element := decide_eq_true_eq.subst h₁ + have h₂ : ¬r.contains element := decide_eq_true_eq.subst h₂ + Decidable.isFalse $ not_or_intro t $ not_or_intro h₁ h₂ go n tree -- cgit v1.2.3