@@ -530,8 +530,7 @@ theorem balance!_eq_balanceₘ {k v} {l r : Impl α β} (hlb : l.Balanced) (hrb
530
530
(hlr : BalanceLErasePrecond l.size r.size ∨ BalanceLErasePrecond r.size l.size) :
531
531
balance! k v l r = balanceₘ k v l r := by
532
532
cases k, v, l, r using balance!.fun_cases
533
- all_goals
534
- simp only [balance!, balanceₘ]
533
+ all_goals dsimp only [balance!, balanceₘ]
535
534
· rfl
536
535
· split <;> simp_all [Std.Internal.tree_tac]
537
536
· split <;> simp_all only [Std.Internal.tree_tac]
@@ -655,7 +654,7 @@ theorem balanced_rotateL (k v l rs rk rv rl rr) (hl : l.Balanced)
655
654
(hlr : BalanceLErasePrecond l.size rs ∨ BalanceLErasePrecond rs l.size)
656
655
(hh : rs > delta * l.size) :
657
656
(rotateL k v l rk rv rl rr : Impl α β).Balanced := by
658
- cases k, v, l, rk, rv, rl, rr using rotateL.fun_cases <;> simp only [rotateL]
657
+ fun_cases rotateL k v l rk rv rl rr <;> dsimp only [rotateL]
659
658
· split
660
659
· next h =>
661
660
exact balanced_singleL _ _ _ _ _ _ _ _ hl hr hlr hh h
@@ -669,7 +668,7 @@ theorem balanced_rotateR (k v ls lk lv ll lr r) (hl : (Impl.inner ls lk lv ll lr
669
668
(hr : r.Balanced) (hlr : BalanceLErasePrecond ls r.size ∨ BalanceLErasePrecond r.size ls)
670
669
(hh : ls > delta * r.size) :
671
670
(rotateR k v lk lv ll lr r : Impl α β).Balanced := by
672
- cases k, v, lk, lv, ll, lr, r using rotateR.fun_cases <;> simp only [rotateR]
671
+ fun_cases rotateR k v lk lv ll lr r <;> dsimp only [rotateR]
673
672
· split
674
673
· next h =>
675
674
exact balanced_singleR k v _ _ _ _ _ _ hl hr hlr hh h
@@ -681,89 +680,79 @@ theorem balanced_rotateR (k v ls lk lv ll lr r) (hl : (Impl.inner ls lk lv ll lr
681
680
682
681
theorem balanceL_eq_balanceLErase {k : α} {v : β k} {l r : Impl α β} {hlb hrb hlr} :
683
682
balanceL k v l r hlb hrb hlr = balanceLErase k v l r hlb hrb hlr.erase := by
684
- rw [balanceL.eq_def, balanceLErase.eq_def]
683
+ fun_cases balanceL k v l r hlb hrb hlr
684
+ all_goals dsimp only [balanceL, balanceLErase]
685
+ contradiction
685
686
split
686
- · dsimp only
687
- split
688
- all_goals dsimp only
689
- contradiction
690
- · dsimp only
691
- split
692
- all_goals dsimp only
693
- split
694
- · split
695
- · dsimp only
696
- · contradiction
697
- · contradiction
698
- · rfl
687
+ · split <;> contradiction
688
+ · rfl
699
689
700
690
theorem balanceLErase_eq_balanceL! {k : α} {v : β k} {l r : Impl α β} {hlb hrb hlr} :
701
691
balanceLErase k v l r hlb hrb hlr = balanceL! k v l r := by
702
- rw [balanceLErase.eq_def, balanceL!.eq_def]
703
- repeat' (split; dsimp)
704
- all_goals try contradiction
705
- all_goals simp_all [-Nat.not_lt]
692
+ fun_cases balanceL! k v l r
693
+ all_goals dsimp only [balanceLErase, balanceL!]
694
+ all_goals simp only [*]
695
+ all_goals dsimp only [dreduceDIte, dreduceIte]
696
+ all_goals contradiction
706
697
707
698
theorem balanceL!_eq_balance! {k : α} {v : β k} {l r : Impl α β} (hlb : l.Balanced)
708
699
(hrb : r.Balanced) (hlr : BalanceLErasePrecond l.size r.size) :
709
700
balanceL! k v l r = balance! k v l r := by
710
701
cases k, v, l, r using balance!.fun_cases
711
- all_goals
712
- simp only [balanceL!, balance!, *, if_true, if_false, true_and, size_inner, size_leaf]
702
+ all_goals dsimp only [balanceL!, balance!]
703
+ all_goals try simp only [*]
704
+ all_goals try dsimp only [dreduceDIte, dreduceIte]
713
705
all_goals try rfl
714
706
all_goals try contradiction
715
707
all_goals try (exfalso; tree_tac; done)
716
- all_goals congr; tree_tac
708
+ congr; tree_tac
717
709
718
710
theorem balanceR_eq_balanceRErase {k : α} {v : β k} {l r : Impl α β} {hlb hrb hlr} :
719
711
balanceR k v l r hlb hrb hlr = balanceRErase k v l r hlb hrb hlr.erase := by
720
- rw [balanceR.eq_def, balanceRErase.eq_def]
712
+ fun_cases balanceR k v l r hlb hrb hlr
713
+ all_goals dsimp only [balanceR, balanceRErase]
714
+ contradiction
721
715
split
722
- · dsimp only
723
- split
724
- all_goals dsimp only
725
- contradiction
726
- · dsimp only
727
- split
728
- all_goals dsimp only
729
- split
730
- · split
731
- · dsimp only
732
- · contradiction
733
- · contradiction
734
- · rfl
716
+ · split <;> contradiction
717
+ · rfl
735
718
736
719
theorem balanceRErase_eq_balanceR! {k : α} {v : β k} {l r : Impl α β} {hlb hrb hlr} :
737
720
balanceRErase k v l r hlb hrb hlr = balanceR! k v l r := by
738
- rw [balanceRErase.eq_def, balanceR!.eq_def]
739
- repeat' (split; dsimp)
740
- all_goals try contradiction
741
- all_goals simp_all [-Nat.not_lt]
721
+ fun_cases balanceR! k v l r
722
+ all_goals dsimp only [balanceRErase, balanceR!]
723
+ all_goals simp only [*]
724
+ all_goals dsimp only [dreduceDIte, dreduceIte]
725
+ all_goals contradiction
742
726
743
727
theorem balanceR!_eq_balance! {k : α} {v : β k} {l r : Impl α β} (hlb : l.Balanced)
744
728
(hrb : r.Balanced) (hlr : BalanceLErasePrecond r.size l.size) :
745
729
balanceR! k v l r = balance! k v l r := by
746
730
cases k, v, l, r using balance!.fun_cases
747
- all_goals
748
- simp only [balanceR!, balance!, *, if_true, if_false, true_and, size_inner, size_leaf]
731
+ all_goals dsimp only [balanceR!, balance!]
732
+ all_goals try simp only [*]
733
+ all_goals try dsimp only [dreduceDIte, dreduceIte]
749
734
all_goals try rfl
750
735
all_goals try contradiction
751
736
all_goals try (exfalso; tree_tac; done)
752
- all_goals congr; tree_tac
737
+ congr; tree_tac
753
738
754
739
theorem balance_eq_balance! {k : α} {v : β k} {l r : Impl α β} {hlb hrb hlr} :
755
740
balance k v l r hlb hrb hlr = balance! k v l r := by
756
- rw [balance.eq_def, balance!.eq_def]
757
- repeat' (split; dsimp)
758
- all_goals try contradiction
759
- all_goals simp_all [-Nat.not_lt]
741
+ fun_cases balance! k v l r
742
+ all_goals dsimp only [balance, balance!]
743
+ all_goals simp only [*]
744
+ all_goals dsimp only [dreduceDIte]
745
+ all_goals contradiction
760
746
761
747
theorem balance_eq_inner [Ord α] {sz k v} {l r : Impl α β}
762
748
(hl : (inner sz k v l r).Balanced) {h} :
763
749
balance k v l r hl.left hl.right h = inner sz k v l r := by
764
750
rw [balance_eq_balance!, balance!_eq_balanceₘ hl.left hl.right h, balanceₘ]
765
751
have hl' := balanced_inner_iff.mp hl
766
- fun_cases balanceₘ k v l r <;> tree_tac
752
+ rw [hl'.2 .2 .2 ]
753
+ split; rfl
754
+ replace hl' := hl'.2 .2 .1 .resolve_left ‹_›
755
+ simp only [Nat.not_lt_of_le, hl'.1 , hl'.2 , reduceDIte, bin]
767
756
768
757
theorem balance!_desc {k : α} {v : β k} {l r : Impl α β} (hlb : l.Balanced) (hrb : r.Balanced)
769
758
(hlr : BalanceLErasePrecond l.size r.size ∨ BalanceLErasePrecond r.size l.size) :
0 commit comments