induct: fixes P :: "('a, 'b) rbt \<Rightarrow> 'a \<Rightarrow> 'b \<Rightarrow> ('a, 'b) rbt \<Rightarrow> bool"   and a0 :: "('a, 'b) rbt"   and a1 :: "'a"   and a2 :: "'b"   and a3 :: "('a, 'b) rbt" assumes "\<And>a w x b s t c y z d. P (Branch R a w x b) s t (Branch R c y z d)"   and "\<And>a w x b s t c y z. P (Branch R (Branch R a w x b) s t c) y z Empty"   and "\<And>a w x b s t c y z va vb vc vd. P (Branch R (Branch R a w x b) s t c) y z (Branch B va vb vc vd)"   and "\<And>w x b s t c y z. P (Branch R Empty w x (Branch R b s t c)) y z Empty"   and "\<And>va vb vc vd w x b s t c y z. P (Branch R (Branch B va vb vc vd) w x (Branch R b s t c)) y z Empty"   and "\<And>w x b s t c y z va vb vc vd. P (Branch R Empty w x (Branch R b s t c)) y z (Branch B va vb vc vd)"   and "\<And>ve vf vg vh w x b s t c y z va vb vc vd. P (Branch R (Branch B ve vf vg vh) w x (Branch R b s t c)) y z (Branch B va vb vc vd)"   and "\<And>w x b s t c y z d. P Empty w x (Branch R b s t (Branch R c y z d))"   and "\<And>va vb vc vd w x b s t c y z d. P (Branch B va vb vc vd) w x (Branch R b s t (Branch R c y z d))"   and "\<And>w x b s t c y z. P Empty w x (Branch R (Branch R b s t c) y z Empty)"   and "\<And>w x b s t c y z va vb vc vd. P Empty w x (Branch R (Branch R b s t c) y z (Branch B va vb vc vd))"   and "\<And>va vb vc vd w x b s t c y z. P (Branch B va vb vc vd) w x (Branch R (Branch R b s t c) y z Empty)"   and "\<And>va vb vc vd w x b s t c y z ve vf vg vh. P (Branch B va vb vc vd) w x (Branch R (Branch R b s t c) y z (Branch B ve vf vg vh))"   and "\<And>s t. P Empty s t Empty"   and "\<And>s t va vb vc vd. P Empty s t (Branch B va vb vc vd)"   and "\<And>s t va vb vc. P Empty s t (Branch B va vb vc Empty)"   and "\<And>s t v vb vc. P Empty s t (Branch v Empty vb vc Empty)"   and "\<And>s t v ve vf vg vh vb vc. P Empty s t (Branch v (Branch B ve vf vg vh) vb vc Empty)"   and "\<And>s t va vb vc vf vg vh vi. P Empty s t (Branch B va vb vc (Branch B vf vg vh vi))"   and "\<And>s t v vb vc vf vg vh vi. P Empty s t (Branch v Empty vb vc (Branch B vf vg vh vi))"   and "\<And>s t v ve vj vk vl vb vc vf vg vh vi. P Empty s t (Branch v (Branch B ve vj vk vl) vb vc (Branch B vf vg vh vi))"   and "\<And>va vb vc vd s t. P (Branch B va vb vc vd) s t Empty"   and "\<And>va vb vc vd s t ve vf vg vh. P (Branch B va vb vc vd) s t (Branch B ve vf vg vh)"   and "\<And>va vb vc vd s t ve vf vg. P (Branch B va vb vc vd) s t (Branch B ve vf vg Empty)"   and "\<And>va vb vc vd s t v vf vg. P (Branch B va vb vc vd) s t (Branch v Empty vf vg Empty)"   and "\<And>va vb vc vd s t v vi vj vk vl vf vg. P (Branch B va vb vc vd) s t (Branch v (Branch B vi vj vk vl) vf vg Empty)"   and "\<And>va vb vc vd s t ve vf vg vj vk vl vm. P (Branch B va vb vc vd) s t (Branch B ve vf vg (Branch B vj vk vl vm))"   and "\<And>va vb vc vd s t v vf vg vj vk vl vm. P (Branch B va vb vc vd) s t (Branch v Empty vf vg (Branch B vj vk vl vm))"   and "\<And>va vb vc vd s t v vi vn vo vp vf vg vj vk vl vm. P (Branch B va vb vc vd) s t (Branch v (Branch B vi vn vo vp) vf vg (Branch B vj vk vl vm))"   and "\<And>s t. P Empty s t Empty"   and "\<And>va vb vc vd s t. P (Branch B va vb vc vd) s t Empty"   and "\<And>vb vc vd s t. P (Branch B Empty vb vc vd) s t Empty"   and "\<And>v vb vc s t. P (Branch v Empty vb vc Empty) s t Empty"   and "\<And>v vb vc ve vf vg vh s t. P (Branch v Empty vb vc (Branch B ve vf vg vh)) s t Empty"   and "\<And>vf vg vh vi vb vc vd s t. P (Branch B (Branch B vf vg vh vi) vb vc vd) s t Empty"   and "\<And>v vf vg vh vi vb vc s t. P (Branch v (Branch B vf vg vh vi) vb vc Empty) s t Empty"   and "\<And>v vf vg vh vi vb vc ve vj vk vl s t. P (Branch v (Branch B vf vg vh vi) vb vc (Branch B ve vj vk vl)) s t Empty"   and "\<And>s t va vb vc vd. P Empty s t (Branch B va vb vc vd)"   and "\<And>ve vf vg vh s t va vb vc vd. P (Branch B ve vf vg vh) s t (Branch B va vb vc vd)"   and "\<And>vf vg vh s t va vb vc vd. P (Branch B Empty vf vg vh) s t (Branch B va vb vc vd)"   and "\<And>v vf vg s t va vb vc vd. P (Branch v Empty vf vg Empty) s t (Branch B va vb vc vd)"   and "\<And>v vf vg vi vj vk vl s t va vb vc vd. P (Branch v Empty vf vg (Branch B vi vj vk vl)) s t (Branch B va vb vc vd)"   and "\<And>vj vk vl vm vf vg vh s t va vb vc vd. P (Branch B (Branch B vj vk vl vm) vf vg vh) s t (Branch B va vb vc vd)"   and "\<And>v vj vk vl vm vf vg s t va vb vc vd. P (Branch v (Branch B vj vk vl vm) vf vg Empty) s t (Branch B va vb vc vd)"   and "\<And>v vj vk vl vm vf vg vi vn vo vp s t va vb vc vd. P (Branch v (Branch B vj vk vl vm) vf vg (Branch B vi vn vo vp)) s t (Branch B va vb vc vd)" shows "P a0 a1 a2 a3"