comparison hoareBinaryTree1.agda @ 775:fb74ba4fa38e

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 11 May 2023 17:52:58 +0900
parents ebd8a73543dd
children 576b35b1d2d7
comparison
equal deleted inserted replaced
774:ebd8a73543dd 775:fb74ba4fa38e
613 parent grand uncle : bt A 613 parent grand uncle : bt A
614 pg : ParentGrand self parent uncle grand 614 pg : ParentGrand self parent uncle grand
615 rest : List (bt A) 615 rest : List (bt A)
616 stack=gp : stack ≡ ( self ∷ parent ∷ grand ∷ rest ) 616 stack=gp : stack ≡ ( self ∷ parent ∷ grand ∷ rest )
617 617
618 record RBI {n : Level} {A : Set n} (key : ℕ) (value : A) (orig : bt (Color ∧ A) ) (stack : List (bt (Color ∧ A))) : Set n where 618 record RBI {n : Level} {A : Set n} (key : ℕ) (value : A) (orig repl : bt (Color ∧ A) ) (stack : List (bt (Color ∧ A))) : Set n where
619 field 619 field
620 od d rd : ℕ 620 od d rd : ℕ
621 tree rot repl : bt (Color ∧ A) 621 tree rot : bt (Color ∧ A)
622 origti : treeInvariant orig 622 origti : treeInvariant orig
623 origrb : RBtreeInvariant orig od 623 origrb : RBtreeInvariant orig od
624 treerb : RBtreeInvariant tree d 624 treerb : RBtreeInvariant tree d
625 replrb : RBtreeInvariant repl rd 625 replrb : RBtreeInvariant repl rd
626 d=rd : ( d ≡ rd ) ∨ ( (suc d ≡ rd ) ∧ (color tree ≡ Red)) 626 d=rd : ( d ≡ rd ) ∨ ( (suc d ≡ rd ) ∧ (color tree ≡ Red))
729 → RBtreeInvariant orig d0 729 → RBtreeInvariant orig d0
730 → (stack : List (bt (Color ∧ A))) → (pg : PG (Color ∧ A) tree stack ) 730 → (stack : List (bt (Color ∧ A))) → (pg : PG (Color ∧ A) tree stack )
731 → RBtreeInvariant tree ds ∧ RBtreeInvariant (PG.parent pg) dp ∧ RBtreeInvariant (PG.grand pg) dg 731 → RBtreeInvariant tree ds ∧ RBtreeInvariant (PG.parent pg) dp ∧ RBtreeInvariant (PG.grand pg) dg
732 PGtoRBinvariant = {!!} 732 PGtoRBinvariant = {!!}
733 733
734 findRBT : {n m : Level} {A : Set n} {t : Set m} → (key : ℕ) → (tree tree0 : bt (Color ∧ A) ) → (stack : List (bt (Color ∧ A))) → {d d0 : ℕ} 734 findRBT : {n m : Level} {A : Set n} {t : Set m} → (key : ℕ) → (tree : bt (Color ∧ A) )
735 → RBtreeInvariant tree0 d0 735 → {d : ℕ} → RBtreeInvariant tree d
736 → RBtreeInvariant tree d ∧ stackInvariant key tree tree0 stack 736 → (exit : (current : bt (Color ∧ A)) → (stack : List (bt (Color ∧ A)))
737 → (next : (tree1 : bt (Color ∧ A)) → (stack : List (bt (Color ∧ A))) → {d1 : ℕ} → RBtreeInvariant tree1 d1 ∧ stackInvariant key tree1 tree0 stack → bt-depth tree1 < bt-depth tree → t ) 737 → RBI key value tree current stack → t ) → t
738 → (exit : (tree1 : bt (Color ∧ A)) → (stack : List (bt (Color ∧ A))) → {d1 : ℕ} → RBtreeInvariant tree1 d1 ∧ stackInvariant key tree1 tree0 stack
739 → (tree1 ≡ leaf ) ∨ ( node-key tree1 ≡ just key ) → t ) → t
740 findRBT = {!!} 738 findRBT = {!!}
741 739
742 rotateLeft : {n m : Level} {A : Set n} {t : Set m} 740 rotateLeft : {n m : Level} {A : Set n} {t : Set m}
743 → (key : ℕ) → (value : A) → {d0 : ℕ} 741 → (key : ℕ) → (value : A)
744 → (orig tree rot repl : bt (Color ∧ A)) {d0 : ℕ} 742 → (orig tree : bt (Color ∧ A))
745 → RBtreeInvariant orig d0 743 → (stack : List (bt (Color ∧ A)))
746 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant repl dr 744 → (r : RBI key value orig tree stack )
747 → (stack : List (bt (Color ∧ A))) → (si : stackInvariant key tree orig stack ) 745 → (next : (tree1 (bt (Color ∧ A))) → (stack1 : List (bt (Color ∧ A)))
748 → rotatedTree tree rot 746 → (r : RBI key value orig current stack1 )
749 → replacedRBTree key value (child-replaced key rot) repl
750 → (next : {key2 d2 : ℕ} {c2 : Color}
751 → (to tr rot rr : bt (Color ∧ A))
752 → RBtreeInvariant orig d0
753 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant rr dr
754 → (stack1 : List (bt (Color ∧ A))) → stackInvariant key tr to stack1
755 → rotatedTree tr rot
756 → replacedRBTree key value (child-replaced key rot) rr
757 → length stack1 < length stack → t ) 747 → length stack1 < length stack → t )
758 → (exit : {k1 d1 : ℕ} {c1 : Color} → (rot repl : bt (Color ∧ A) ) 748 → (exit : (repl : bt (Color ∧ A) ) → (stack1 : List (bt (Color ∧ A)))
759 → {d : ℕ} → RBtreeInvariant repl d 749 → stack1 ≡ (orig ∷ [])
760 → (ri : rotatedTree orig rot ) → replacedRBTree key value rot repl → t ) → t 750 → RBI key value orig repl stack1
761 rotateLeft {n} {m} {A} {t} key value orig tree rot repl rbo rbt rbr stack si ri rr next exit = rotateLeft1 where 751 → t ) → t
752 rotateLeft {n} {m} {A} {t} key value = ? where
762 rotateLeft1 : t 753 rotateLeft1 : t
763 rotateLeft1 with stackToPG tree orig stack si 754 rotateLeft1 with stackToPG ? orig stack si
764 ... | case1 x = exit {!!} {!!} {!!} {!!} rr 755 ... | case1 x = exit {!!} {!!} {!!} {!!} rr
765 ... | case2 (case1 x) = {!!} 756 ... | case2 (case1 x) = {!!}
766 ... | case2 (case2 pg) = {!!} 757 ... | case2 (case2 pg) = {!!}
767 758
768 rotateRight : {n m : Level} {A : Set n} {t : Set m} 759 rotateRight : {n m : Level} {A : Set n} {t : Set m}
769 → (key : ℕ) → (value : A) → {d0 : ℕ} 760 → (key : ℕ) → (value : A)
770 → (orig tree rot repl : bt (Color ∧ A)) {d0 : ℕ} 761 → (orig tree : bt (Color ∧ A))
771 → RBtreeInvariant orig d0 762 → (stack : List (bt (Color ∧ A)))
772 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant repl dr 763 → (r : RBI key value orig tree stack )
773 → (stack : List (bt (Color ∧ A))) → (si : stackInvariant key tree orig stack ) 764 → (next : (stack1 : List (bt (Color ∧ A)))
774 → rotatedTree tree rot 765 → (r : RBI key value orig stack1 )
775 → replacedRBTree key value (child-replaced key rot) repl
776 → (next : {key2 d2 : ℕ} {c2 : Color}
777 → (to tr rot rr : bt (Color ∧ A))
778 → RBtreeInvariant orig d0
779 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant rr dr
780 → (stack1 : List (bt (Color ∧ A))) → stackInvariant key tr to stack1
781 → rotatedTree tr rot
782 → replacedRBTree key value (child-replaced key rot) rr
783 → length stack1 < length stack → t ) 766 → length stack1 < length stack → t )
784 → (exit : {k1 d1 : ℕ} {c1 : Color} → (rot repl : bt (Color ∧ A) ) 767 → (exit : (repl : bt (Color ∧ A) ) → (stack1 : List (bt (Color ∧ A)))
785 → {d : ℕ} → RBtreeInvariant repl d 768 → stack1 ≡ (orig ∷ [])
786 → (ri : rotatedTree orig rot ) → replacedRBTree key value rot repl → t ) → t 769 → RBI key value orig repl stack1
787 rotateRight {n} {m} {A} {t} key value orig tree rot repl rbo rbt rbr stack si ri rr next exit = rotateRight1 where 770 → t ) → t
771 rotateRight {n} {m} {A} {t} key value = ? where
788 rotateRight1 : t 772 rotateRight1 : t
789 rotateRight1 with stackToPG tree orig stack si 773 rotateRight1 with stackToPG ? ? ? ?
790 ... | case1 x = {!!} 774 ... | case1 x = {!!}
791 ... | case2 (case1 x) = {!!} 775 ... | case2 (case1 x) = {!!}
792 ... | case2 (case2 pg) = {!!} 776 ... | case2 (case2 pg) = {!!}
793 777
794 insertCase5 : {n m : Level} {A : Set n} {t : Set m} 778 insertCase5 : {n m : Level} {A : Set n} {t : Set m}
795 → (key : ℕ) → (value : A) → {d0 : ℕ} 779 → (key : ℕ) → (value : A)
796 → (orig tree rot repl : bt (Color ∧ A)) {d0 : ℕ} 780 → (orig tree : bt (Color ∧ A))
797 → RBtreeInvariant orig d0 781 → (stack : List (bt (Color ∧ A)))
798 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant repl dr 782 → (r : RBI key value orig tree stack )
799 → (stack : List (bt (Color ∧ A))) → (si : stackInvariant key tree orig stack ) 783 → (next : (tree1 (bt (Color ∧ A))) (stack1 : List (bt (Color ∧ A)))
800 → rotatedTree tree rot 784 → (r : RBI key value orig tree1 stack1 )
801 → replacedRBTree key value (child-replaced key rot) repl
802 → (next : {key2 d2 : ℕ} {c2 : Color}
803 → (to tr rot rr : bt (Color ∧ A))
804 → RBtreeInvariant orig d0
805 → {d : ℕ} → RBtreeInvariant tree d → {dr : ℕ} → RBtreeInvariant rr dr
806 → (stack1 : List (bt (Color ∧ A))) → stackInvariant key tr to stack1
807 → rotatedTree tr rot
808 → replacedRBTree key value (child-replaced key rot) rr
809 → length stack1 < length stack → t ) 785 → length stack1 < length stack → t )
810 → (exit : {k1 d1 : ℕ} {c1 : Color} → (rot repl : bt (Color ∧ A) ) 786 → (exit : (repl : bt (Color ∧ A) ) → (stack1 : List (bt (Color ∧ A)))
811 → {d : ℕ} → RBtreeInvariant repl d 787 → stack1 ≡ (orig ∷ [])
812 → (ri : rotatedTree orig rot ) → replacedRBTree key value rot repl → t ) → t 788 → RBI key value orig repl stack1
813 insertCase5 {n} {m} {A} {t} key value orig tree rot repl rbo rbt rbr stack si ri rr next exit = insertCase51 where 789 → t ) → t
790 insertCase5 {n} {m} {A} {t} key value = ? where
814 insertCase51 : t 791 insertCase51 : t
815 insertCase51 with stackToPG tree orig stack si 792 insertCase51 with stackToPG ? orig stack ?
816 ... | case1 eq = {!!} 793 ... | case1 eq = {!!}
817 ... | case2 (case1 eq ) = {!!} 794 ... | case2 (case1 eq ) = {!!}
818 ... | case2 (case2 pg) with PG.pg pg 795 ... | case2 (case2 pg) with PG.pg pg
819 ... | s2-s1p2 x x₁ = rotateRight {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit 796 ... | s2-s1p2 x x₁ = ? -- rotateRight {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit
820 -- x : PG.parent pg ≡ node kp vp tree n1 797 -- x : PG.parent pg ≡ node kp vp tree n1
821 -- x₁ : PG.grand pg ≡ node kg vg (PG.parent pg) (PG.uncle pg) 798 -- x₁ : PG.grand pg ≡ node kg vg (PG.parent pg) (PG.uncle pg)
822 ... | s2-1sp2 x x₁ = rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit 799 ... | s2-1sp2 x x₁ = ? -- rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit
823 ... | s2-s12p x x₁ = rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit 800 ... | s2-s12p x x₁ = ? -- rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit
824 ... | s2-1s2p x x₁ = rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit 801 ... | s2-1s2p x x₁ = ? -- rotateLeft {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} next exit
825 -- = insertCase2 tree (PG.parent pg) (PG.uncle pg) (PG.grand pg) stack si (PG.pg pg) 802 -- = insertCase2 tree (PG.parent pg) (PG.uncle pg) (PG.grand pg) stack si (PG.pg pg)
826 803
827 804
828 -- if we have replacedNode on RBTree, we have RBtreeInvariant 805 -- if we have replacedNode on RBTree, we have RBtreeInvariant
829 806
830 replaceRBP : {n m : Level} {A : Set n} {t : Set m} 807 replaceRBP : {n m : Level} {A : Set n} {t : Set m}
831 → (key : ℕ) → (value : A) 808 → (key : ℕ) → (value : A)
832 → (orig : bt (Color ∧ A)) 809 → (orig repl : bt (Color ∧ A))
833 → (stack : List (bt (Color ∧ A))) 810 → (stack : List (bt (Color ∧ A)))
834 → (r : RBI key value orig stack ) 811 → (r : RBI key value orig stack )
835 → (next : (stack1 : List (bt (Color ∧ A))) 812 → (next : (stack1 : List (bt (Color ∧ A)))
836 → (r : RBI key value orig stack1 ) 813 → (r : RBI key value orig stack1 )
837 → length stack1 < length stack → t ) 814 → length stack1 < length stack → t )
838 → (exit : (repl : bt (Color ∧ A) ) → (stack1 : List (bt (Color ∧ A))) 815 → (exit : (repl : bt (Color ∧ A) ) → (stack1 : List (bt (Color ∧ A)))
839 → stack1 ≡ (orig ∷ []) 816 → stack1 ≡ (orig ∷ [])
840 → RBI key value orig stack1 817 → RBI key value orig stack1
841 → t ) → t 818 → t ) → t
842 replaceRBP = ? 819 replaceRBP {n} {m} {A} {t} key value orig stack r next exit = ? where
843
844 replaceRBP' : {n m : Level} {A : Set n} {t : Set m}
845 → (key : ℕ) → (value : A)
846 → (to tr rot rr : bt (Color ∧ A))
847 → {d0 : ℕ} → RBtreeInvariant to d0
848 → {d : ℕ} → RBtreeInvariant tr d → {dr : ℕ} → RBtreeInvariant rr dr
849 → (stack : List (bt (Color ∧ A))) → stackInvariant key tr to stack
850 → rotatedTree tr rot
851 → replacedRBTree key value (child-replaced key rot) rr
852 → (next : {key2 d2 : ℕ} {c2 : Color}
853 → (to tr rot rr : bt (Color ∧ A))
854 → RBtreeInvariant to d0
855 → {d : ℕ} → RBtreeInvariant tr d → {dr : ℕ} → RBtreeInvariant rr dr
856 → (stack1 : List (bt (Color ∧ A))) → stackInvariant key tr to stack1
857 → rotatedTree tr rot
858 → replacedRBTree key value (child-replaced key rot) rr
859 → length stack1 < length stack → t )
860 → (exit : (rot repl : bt (Color ∧ A) )
861 → {d : ℕ} → RBtreeInvariant repl d
862 → (ri : rotatedTree to rot ) → replacedRBTree key value (child-replaced key rot) repl → t ) → t
863 replaceRBP' {n} {m} {A} {t} key value orig tree rot repl rbio rbit rbir stack si roti ri next exit = ? where
864 insertCase2 : (tree parent uncle grand : bt (Color ∧ A)) 820 insertCase2 : (tree parent uncle grand : bt (Color ∧ A))
865 → (stack : List (bt (Color ∧ A))) → (si : stackInvariant key tree orig stack ) 821 → (stack : List (bt (Color ∧ A))) → (si : stackInvariant key tree orig stack )
866 → (pg : ParentGrand tree parent uncle grand ) → t 822 → (pg : ParentGrand tree parent uncle grand ) → t
867 insertCase2 tree leaf uncle grand stack si (s2-s1p2 () x₁) 823 insertCase2 tree leaf uncle grand stack si (s2-s1p2 () x₁)
868 insertCase2 tree leaf uncle grand stack si (s2-1sp2 () x₁) 824 insertCase2 tree leaf uncle grand stack si (s2-1sp2 () x₁)
869 insertCase2 tree leaf uncle grand stack si (s2-s12p () x₁) 825 insertCase2 tree leaf uncle grand stack si (s2-s12p () x₁)
870 insertCase2 tree leaf uncle grand stack si (s2-1s2p () x₁) 826 insertCase2 tree leaf uncle grand stack si (s2-1s2p () x₁)
871 insertCase2 tree parent@(node kp ⟪ Red , _ ⟫ _ _) uncle grand stack si pg = next {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} 827 insertCase2 tree parent@(node kp ⟪ Red , _ ⟫ _ _) uncle grand stack si pg = ? -- next {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!}
872 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) leaf grand stack si pg = {!!} 828 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) leaf grand stack si pg = {!!}
873 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Red , _ ⟫ _ _ ) grand stack si pg = next {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} 829 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Red , _ ⟫ _ _ ) grand stack si pg = ? -- next {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!} {!!}
874 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-s1p2 x x₁) = 830 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-s1p2 x x₁) = ?
875 insertCase5 key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!} next exit 831 -- insertCase5 key value orig tree {!!} rbio {!!} {!!} stack si {!!} ri {!!} {!!} next exit
876 -- tree is left of parent, parent is left of grand 832 -- tree is left of parent, parent is left of grand
877 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp tree n1 833 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp tree n1
878 -- grand ≡ node kg vg (node kp ⟪ Black , proj3 ⟫ left right) (node ku ⟪ Black , proj4 ⟫ left₁ right₁) 834 -- grand ≡ node kg vg (node kp ⟪ Black , proj3 ⟫ left right) (node ku ⟪ Black , proj4 ⟫ left₁ right₁)
879 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-1sp2 x x₁) = 835 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-1sp2 x x₁) = ?
880 rotateLeft key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!} 836 -- rotateLeft key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!}
881 (λ a b c d e f h i j k l m → insertCase5 key value a b c d {!!} {!!} h i j k l {!!} {!!} next exit ) exit 837 -- (λ a b c d e f h i j k l m → insertCase5 key value a b c d {!!} {!!} h i j k l {!!} {!!} next exit ) exit
882 -- tree is right of parent, parent is left of grand rotateLeft 838 -- tree is right of parent, parent is left of grand rotateLeft
883 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp n1 tree 839 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp n1 tree
884 -- grand ≡ node kg vg (node kp ⟪ Black , proj3 ⟫ left right) (node ku ⟪ Black , proj4 ⟫ left₁ right₁) 840 -- grand ≡ node kg vg (node kp ⟪ Black , proj3 ⟫ left right) (node ku ⟪ Black , proj4 ⟫ left₁ right₁)
885 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-s12p x x₁) = 841 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-s12p x x₁) = ?
886 rotateRight key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!} 842 -- rotateRight key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!}
887 (λ a b c d e f h i j k l m → insertCase5 key value a b c d {!!} {!!} h i j k l {!!} {!!} next exit ) exit 843 -- (λ a b c d e f h i j k l m → insertCase5 key value a b c d {!!} {!!} h i j k l {!!} {!!} next exit ) exit
888 -- tree is left of parent, parent is right of grand, rotateRight 844 -- tree is left of parent, parent is right of grand, rotateRight
889 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp tree n1 845 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp tree n1
890 -- grand ≡ node kg vg (node ku ⟪ Black , proj4 ⟫ left₁ right₁) (node kp ⟪ Black , proj3 ⟫ left right) 846 -- grand ≡ node kg vg (node ku ⟪ Black , proj4 ⟫ left₁ right₁) (node kp ⟪ Black , proj3 ⟫ left right)
891 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-1s2p x x₁) = 847 insertCase2 tree parent@(node kp ⟪ Black , _ ⟫ _ _) (node ku ⟪ Black , _ ⟫ _ _) grand stack si (s2-1s2p x x₁) = ?
892 insertCase5 key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!} next exit 848 -- insertCase5 key value orig tree {!!} repl rbio {!!} {!!} stack si {!!} ri {!!} {!!} next exit
893 -- tree is right of parent, parent is right of grand 849 -- tree is right of parent, parent is right of grand
894 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp n1 tree 850 -- node kp ⟪ Black , proj3 ⟫ left right ≡ node kp₁ vp n1 tree
895 -- grand ≡ node kg vg (node ku ⟪ Black , proj4 ⟫ left₁ right₁) (node kp ⟪ Black , proj3 ⟫ left right) 851 -- grand ≡ node kg vg (node ku ⟪ Black , proj4 ⟫ left₁ right₁) (node kp ⟪ Black , proj3 ⟫ left right)
896 insertCase1 : t 852 insertCase1 : t
897 insertCase1 with stackToPG tree orig stack si 853 insertCase1 with stackToPG ? orig stack ?
898 ... | case1 eq = exit rot repl rbir (subst (λ k → rotatedTree k rot) (stackCase1 si eq) roti) ri 854 ... | case1 eq = ? -- exit rot repl rbir (subst (λ k → rotatedTree k rot) (stackCase1 si eq) roti) ri
899 ... | case2 (case1 eq ) = ? where 855 ... | case2 (case1 eq ) = ? where
900 insertCase12 : (to : bt (Color ∧ A)) → {d : ℕ} → RBtreeInvariant orig d → to ≡ orig 856 insertCase12 : (to : bt (Color ∧ A)) → {d : ℕ} → RBtreeInvariant orig d → to ≡ orig
901 → (rr : bt (Color ∧ A)) → {dr : ℕ} → RBtreeInvariant repl dr → rr ≡ repl 857 → (rr : bt (Color ∧ A)) → {dr : ℕ} → RBtreeInvariant ? dr → rr ≡ ?
902 → {stack : List (bt (Color ∧ A))} → (si : stackInvariant key tree to stack ) 858 → {stack : List (bt (Color ∧ A))} → (si : stackInvariant key ? to stack )
903 → stack ≡ tree ∷ to ∷ [] → t 859 → stack ≡ ? ∷ to ∷ [] → t
904 insertCase12 = ? 860 insertCase12 = ?
905 -- exit rot repl rbir ? ? 861 -- exit rot repl rbir ? ?
906 ... | case2 (case2 pg) = insertCase2 tree (PG.parent pg) (PG.uncle pg) (PG.grand pg) stack si (PG.pg pg) 862 ... | case2 (case2 pg) = ? -- insertCase2 tree (PG.parent pg) (PG.uncle pg) (PG.grand pg) stack si (PG.pg pg)
907 863
908 864
865