data.rbtree.basicMathlib.Data.Rbtree.Basic

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -154,7 +154,7 @@ theorem Std.RBNode.range [IsStrictWeakOrder α lt] {t : Std.RBNode α} {x} :
     -- red_node and black_node are identical
     intro lo hi h₁ h₂;
     cases h₁
-    simp only [mem] at h₂ 
+    simp only [mem] at h₂
     have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
     have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
     cases_type* or.1
Diff
@@ -72,14 +72,26 @@ theorem Std.RBNode.lo_lt_hi {t : Std.RBNode α} {lt} [IsTrans α lt] :
 theorem Std.RBNode.isSearchableOfIsSearchableOfIncomp [IsStrictWeakOrder α lt] {t} :
     ∀ {lo hi hi'} (hc : ¬lt hi' hi ∧ ¬lt hi hi') (hs : Std.RBNode.IsSearchable lt t lo (some hi)),
       Std.RBNode.IsSearchable lt t lo (some hi') :=
-  by classical
+  by
+  classical
+  induction t <;> intros <;>
+    run_tac
+      is_searchable_tactic
+  · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
+  all_goals apply t_ih_rchild hc hs_hs₂
 #align rbnode.is_searchable_of_is_searchable_of_incomp Std.RBNode.isSearchableOfIsSearchableOfIncomp
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem Std.RBNode.isSearchableOfIncompOfIsSearchable [IsStrictWeakOrder α lt] {t} :
     ∀ {lo lo' hi} (hc : ¬lt lo' lo ∧ ¬lt lo lo') (hs : Std.RBNode.IsSearchable lt t (some lo) hi),
       Std.RBNode.IsSearchable lt t (some lo') hi :=
-  by classical
+  by
+  classical
+  induction t <;> intros <;>
+    run_tac
+      is_searchable_tactic
+  · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
+  all_goals apply t_ih_lchild hc hs_hs₁
 #align rbnode.is_searchable_of_incomp_of_is_searchable Std.RBNode.isSearchableOfIncompOfIsSearchable
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
@@ -134,10 +146,44 @@ theorem Std.RBNode.range [IsStrictWeakOrder α lt] {t : Std.RBNode α} {x} :
     ∀ {lo hi},
       Std.RBNode.IsSearchable lt t lo hi →
         Std.RBNode.Mem lt x t → Std.RBNode.Lift lt lo (some x) ∧ Std.RBNode.Lift lt (some x) hi :=
-  by classical
+  by
+  classical
+  induction t
+  case leaf => simp [mem]
+  all_goals
+    -- red_node and black_node are identical
+    intro lo hi h₁ h₂;
+    cases h₁
+    simp only [mem] at h₂ 
+    have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
+    have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
+    cases_type* or.1
+    · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) := by apply t_ih_lchild;
+        assumption; assumption
+      cases' h₃ with lo_x x_val
+      constructor
+      show lift lt lo (some x); · assumption
+      show lift lt (some x) hi
+      · cases' hi with hi <;> simp [lift] at *
+        apply trans_of lt x_val val_hi
+    · cases h₂
+      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
+      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+      · apply lt_of_lt_of_incomp lo_val; simp [*]
+      constructor
+      · apply lt_of_lt_of_incomp lo_val; simp [*]
+      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+    · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi := by apply t_ih_rchild;
+        assumption; assumption
+      cases' h₃ with val_x x_hi
+      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
+      · assumption
+      · apply trans_of lt lo_val val_x
+      constructor
+      · apply trans_of lt lo_val val_x
+      · assumption
 #align rbnode.range Std.RBNode.range
 
--- red_node and black_node are identical
 theorem Std.RBNode.ltOfMemLeft [IsStrictWeakOrder α lt] {y : α} {t l r : Std.RBNode α} :
     ∀ {lo hi},
       Std.RBNode.IsSearchable lt t lo hi →
Diff
@@ -72,26 +72,14 @@ theorem Std.RBNode.lo_lt_hi {t : Std.RBNode α} {lt} [IsTrans α lt] :
 theorem Std.RBNode.isSearchableOfIsSearchableOfIncomp [IsStrictWeakOrder α lt] {t} :
     ∀ {lo hi hi'} (hc : ¬lt hi' hi ∧ ¬lt hi hi') (hs : Std.RBNode.IsSearchable lt t lo (some hi)),
       Std.RBNode.IsSearchable lt t lo (some hi') :=
-  by
-  classical
-  induction t <;> intros <;>
-    run_tac
-      is_searchable_tactic
-  · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
-  all_goals apply t_ih_rchild hc hs_hs₂
+  by classical
 #align rbnode.is_searchable_of_is_searchable_of_incomp Std.RBNode.isSearchableOfIsSearchableOfIncomp
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem Std.RBNode.isSearchableOfIncompOfIsSearchable [IsStrictWeakOrder α lt] {t} :
     ∀ {lo lo' hi} (hc : ¬lt lo' lo ∧ ¬lt lo lo') (hs : Std.RBNode.IsSearchable lt t (some lo) hi),
       Std.RBNode.IsSearchable lt t (some lo') hi :=
-  by
-  classical
-  induction t <;> intros <;>
-    run_tac
-      is_searchable_tactic
-  · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
-  all_goals apply t_ih_lchild hc hs_hs₁
+  by classical
 #align rbnode.is_searchable_of_incomp_of_is_searchable Std.RBNode.isSearchableOfIncompOfIsSearchable
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
@@ -146,44 +134,10 @@ theorem Std.RBNode.range [IsStrictWeakOrder α lt] {t : Std.RBNode α} {x} :
     ∀ {lo hi},
       Std.RBNode.IsSearchable lt t lo hi →
         Std.RBNode.Mem lt x t → Std.RBNode.Lift lt lo (some x) ∧ Std.RBNode.Lift lt (some x) hi :=
-  by
-  classical
-  induction t
-  case leaf => simp [mem]
-  all_goals
-    -- red_node and black_node are identical
-    intro lo hi h₁ h₂;
-    cases h₁
-    simp only [mem] at h₂ 
-    have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
-    have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
-    cases_type* or.1
-    · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) := by apply t_ih_lchild;
-        assumption; assumption
-      cases' h₃ with lo_x x_val
-      constructor
-      show lift lt lo (some x); · assumption
-      show lift lt (some x) hi
-      · cases' hi with hi <;> simp [lift] at *
-        apply trans_of lt x_val val_hi
-    · cases h₂
-      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
-      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
-      · apply lt_of_lt_of_incomp lo_val; simp [*]
-      constructor
-      · apply lt_of_lt_of_incomp lo_val; simp [*]
-      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
-    · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi := by apply t_ih_rchild;
-        assumption; assumption
-      cases' h₃ with val_x x_hi
-      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
-      · assumption
-      · apply trans_of lt lo_val val_x
-      constructor
-      · apply trans_of lt lo_val val_x
-      · assumption
+  by classical
 #align rbnode.range Std.RBNode.range
 
+-- red_node and black_node are identical
 theorem Std.RBNode.ltOfMemLeft [IsStrictWeakOrder α lt] {y : α} {t l r : Std.RBNode α} :
     ∀ {lo hi},
       Std.RBNode.IsSearchable lt t lo hi →
Diff
@@ -3,15 +3,15 @@ Copyright (c) 2017 Microsoft Corporation. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Leonardo de Moura
 -/
-import Mathbin.Data.Rbtree.Init
-import Mathbin.Logic.IsEmpty
-import Mathbin.Tactic.Interactive
+import Data.Rbtree.Init
+import Logic.IsEmpty
+import Tactic.Interactive
 
 #align_import data.rbtree.basic from "leanprover-community/mathlib"@"5cb17dd1617d2dc55eb17777c3dcded3306fadb5"
 
 universe u
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:337:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def tactic.interactive.blast_disjs : tactic Unit :=
   sorry
 #align tactic.interactive.blast_disjs tactic.interactive.blast_disjs
@@ -42,7 +42,7 @@ inductive Std.RBNode.IsSearchable (lt : α → α → Prop) : Std.RBNode α →
     is_searchable (black_node l v r) lo hi
 #align rbnode.is_searchable Std.RBNode.IsSearchable
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:337:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def is_searchable_tactic : tactic Unit :=
   sorry
 #align rbnode.is_searchable_tactic rbnode.is_searchable_tactic
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2017 Microsoft Corporation. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Leonardo de Moura
-
-! This file was ported from Lean 3 source module data.rbtree.basic
-! leanprover-community/mathlib commit 5cb17dd1617d2dc55eb17777c3dcded3306fadb5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Rbtree.Init
 import Mathbin.Logic.IsEmpty
 import Mathbin.Tactic.Interactive
 
+#align_import data.rbtree.basic from "leanprover-community/mathlib"@"5cb17dd1617d2dc55eb17777c3dcded3306fadb5"
+
 universe u
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
Diff
@@ -19,38 +19,38 @@ unsafe def tactic.interactive.blast_disjs : tactic Unit :=
   sorry
 #align tactic.interactive.blast_disjs tactic.interactive.blast_disjs
 
-namespace Rbnode
+namespace Std.RBNode
 
 variable {α : Type u}
 
 open Color Nat
 
-inductive IsNodeOf : Rbnode α → Rbnode α → α → Rbnode α → Prop
-  | of_red (l v r) : is_node_of (red_node l v r) l v r
+inductive Std.RBNode.IsNodeOf : Std.RBNode α → Std.RBNode α → α → Std.RBNode α → Prop
+  | of_red (l v r) : is_node_of (Std.RBNode.node l v r) l v r
   | of_black (l v r) : is_node_of (black_node l v r) l v r
-#align rbnode.is_node_of Rbnode.IsNodeOf
+#align rbnode.is_node_of Std.RBNode.IsNodeOf
 
-def Lift (lt : α → α → Prop) : Option α → Option α → Prop
+def Std.RBNode.Lift (lt : α → α → Prop) : Option α → Option α → Prop
   | some a, some b => lt a b
   | _, _ => True
-#align rbnode.lift Rbnode.Lift
+#align rbnode.lift Std.RBNode.Lift
 
-inductive IsSearchable (lt : α → α → Prop) : Rbnode α → Option α → Option α → Prop
-  | leaf_s {lo hi} (hlt : Lift lt lo hi) : is_searchable leaf lo hi
+inductive Std.RBNode.IsSearchable (lt : α → α → Prop) : Std.RBNode α → Option α → Option α → Prop
+  | leaf_s {lo hi} (hlt : Std.RBNode.Lift lt lo hi) : is_searchable Std.RBNode.nil lo hi
   |
   red_s {l r v lo hi} (hs₁ : is_searchable l lo (some v)) (hs₂ : is_searchable r (some v) hi) :
-    is_searchable (red_node l v r) lo hi
+    is_searchable (Std.RBNode.node l v r) lo hi
   |
   black_s {l r v lo hi} (hs₁ : is_searchable l lo (some v)) (hs₂ : is_searchable r (some v) hi) :
     is_searchable (black_node l v r) lo hi
-#align rbnode.is_searchable Rbnode.IsSearchable
+#align rbnode.is_searchable Std.RBNode.IsSearchable
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def is_searchable_tactic : tactic Unit :=
   sorry
 #align rbnode.is_searchable_tactic rbnode.is_searchable_tactic
 
-open Rbnode (Mem)
+open Std.RBNode (Mem)
 
 open IsSearchable
 
@@ -58,8 +58,8 @@ section IsSearchableLemmas
 
 variable {lt : α → α → Prop}
 
-theorem lo_lt_hi {t : Rbnode α} {lt} [IsTrans α lt] :
-    ∀ {lo hi}, IsSearchable lt t lo hi → Lift lt lo hi :=
+theorem Std.RBNode.lo_lt_hi {t : Std.RBNode α} {lt} [IsTrans α lt] :
+    ∀ {lo hi}, Std.RBNode.IsSearchable lt t lo hi → Std.RBNode.Lift lt lo hi :=
   by
   induction t <;> intro lo hi hs
   case leaf => cases hs; assumption
@@ -69,12 +69,12 @@ theorem lo_lt_hi {t : Rbnode α} {lt} [IsTrans α lt] :
     have h₂ := t_ih_rchild hs_hs₂
     cases lo <;> cases hi <;> simp [lift] at *
     apply trans_of lt h₁ h₂
-#align rbnode.lo_lt_hi Rbnode.lo_lt_hi
+#align rbnode.lo_lt_hi Std.RBNode.lo_lt_hi
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
-    ∀ {lo hi hi'} (hc : ¬lt hi' hi ∧ ¬lt hi hi') (hs : IsSearchable lt t lo (some hi)),
-      IsSearchable lt t lo (some hi') :=
+theorem Std.RBNode.isSearchableOfIsSearchableOfIncomp [IsStrictWeakOrder α lt] {t} :
+    ∀ {lo hi hi'} (hc : ¬lt hi' hi ∧ ¬lt hi hi') (hs : Std.RBNode.IsSearchable lt t lo (some hi)),
+      Std.RBNode.IsSearchable lt t lo (some hi') :=
   by
   classical
   induction t <;> intros <;>
@@ -82,12 +82,12 @@ theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
       is_searchable_tactic
   · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
   all_goals apply t_ih_rchild hc hs_hs₂
-#align rbnode.is_searchable_of_is_searchable_of_incomp Rbnode.isSearchable_of_isSearchable_of_incomp
+#align rbnode.is_searchable_of_is_searchable_of_incomp Std.RBNode.isSearchableOfIsSearchableOfIncomp
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
-    ∀ {lo lo' hi} (hc : ¬lt lo' lo ∧ ¬lt lo lo') (hs : IsSearchable lt t (some lo) hi),
-      IsSearchable lt t (some lo') hi :=
+theorem Std.RBNode.isSearchableOfIncompOfIsSearchable [IsStrictWeakOrder α lt] {t} :
+    ∀ {lo lo' hi} (hc : ¬lt lo' lo ∧ ¬lt lo lo') (hs : Std.RBNode.IsSearchable lt t (some lo) hi),
+      Std.RBNode.IsSearchable lt t (some lo') hi :=
   by
   classical
   induction t <;> intros <;>
@@ -95,56 +95,60 @@ theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
       is_searchable_tactic
   · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
   all_goals apply t_ih_lchild hc hs_hs₁
-#align rbnode.is_searchable_of_incomp_of_is_searchable Rbnode.isSearchable_of_incomp_of_isSearchable
+#align rbnode.is_searchable_of_incomp_of_is_searchable Std.RBNode.isSearchableOfIncompOfIsSearchable
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_some_low_of_isSearchable_of_lt {t} [IsTrans α lt] :
-    ∀ {lo hi lo'} (hlt : lt lo' lo) (hs : IsSearchable lt t (some lo) hi),
-      IsSearchable lt t (some lo') hi :=
+theorem Std.RBNode.isSearchableSomeLowOfIsSearchableOfLt {t} [IsTrans α lt] :
+    ∀ {lo hi lo'} (hlt : lt lo' lo) (hs : Std.RBNode.IsSearchable lt t (some lo) hi),
+      Std.RBNode.IsSearchable lt t (some lo') hi :=
   by
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
   · cases hi <;> simp_all [lift]; apply trans_of lt hlt; assumption
   all_goals apply t_ih_lchild hlt hs_hs₁
-#align rbnode.is_searchable_some_low_of_is_searchable_of_lt Rbnode.isSearchable_some_low_of_isSearchable_of_lt
+#align rbnode.is_searchable_some_low_of_is_searchable_of_lt Std.RBNode.isSearchableSomeLowOfIsSearchableOfLt
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_none_low_of_isSearchable_some_low {t} :
-    ∀ {y hi} (hlt : IsSearchable lt t (some y) hi), IsSearchable lt t none hi :=
+theorem Std.RBNode.isSearchableNoneLowOfIsSearchableSomeLow {t} :
+    ∀ {y hi} (hlt : Std.RBNode.IsSearchable lt t (some y) hi),
+      Std.RBNode.IsSearchable lt t none hi :=
   by
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
   · simp [lift]
   all_goals apply t_ih_lchild hlt_hs₁
-#align rbnode.is_searchable_none_low_of_is_searchable_some_low Rbnode.isSearchable_none_low_of_isSearchable_some_low
+#align rbnode.is_searchable_none_low_of_is_searchable_some_low Std.RBNode.isSearchableNoneLowOfIsSearchableSomeLow
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_some_high_of_isSearchable_of_lt {t} [IsTrans α lt] :
-    ∀ {lo hi hi'} (hlt : lt hi hi') (hs : IsSearchable lt t lo (some hi)),
-      IsSearchable lt t lo (some hi') :=
+theorem Std.RBNode.isSearchableSomeHighOfIsSearchableOfLt {t} [IsTrans α lt] :
+    ∀ {lo hi hi'} (hlt : lt hi hi') (hs : Std.RBNode.IsSearchable lt t lo (some hi)),
+      Std.RBNode.IsSearchable lt t lo (some hi') :=
   by
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
   · cases lo <;> simp_all [lift]; apply trans_of lt; assumption; assumption
   all_goals apply t_ih_rchild hlt hs_hs₂
-#align rbnode.is_searchable_some_high_of_is_searchable_of_lt Rbnode.isSearchable_some_high_of_isSearchable_of_lt
+#align rbnode.is_searchable_some_high_of_is_searchable_of_lt Std.RBNode.isSearchableSomeHighOfIsSearchableOfLt
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
-theorem isSearchable_none_high_of_isSearchable_some_high {t} :
-    ∀ {lo y} (hlt : IsSearchable lt t lo (some y)), IsSearchable lt t lo none :=
+theorem Std.RBNode.isSearchableNoneHighOfIsSearchableSomeHigh {t} :
+    ∀ {lo y} (hlt : Std.RBNode.IsSearchable lt t lo (some y)),
+      Std.RBNode.IsSearchable lt t lo none :=
   by
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
   · cases lo <;> simp [lift]
   all_goals apply t_ih_rchild hlt_hs₂
-#align rbnode.is_searchable_none_high_of_is_searchable_some_high Rbnode.isSearchable_none_high_of_isSearchable_some_high
+#align rbnode.is_searchable_none_high_of_is_searchable_some_high Std.RBNode.isSearchableNoneHighOfIsSearchableSomeHigh
 
-theorem range [IsStrictWeakOrder α lt] {t : Rbnode α} {x} :
-    ∀ {lo hi}, IsSearchable lt t lo hi → Mem lt x t → Lift lt lo (some x) ∧ Lift lt (some x) hi :=
+theorem Std.RBNode.range [IsStrictWeakOrder α lt] {t : Std.RBNode α} {x} :
+    ∀ {lo hi},
+      Std.RBNode.IsSearchable lt t lo hi →
+        Std.RBNode.Mem lt x t → Std.RBNode.Lift lt lo (some x) ∧ Std.RBNode.Lift lt (some x) hi :=
   by
   classical
   induction t
@@ -181,48 +185,55 @@ theorem range [IsStrictWeakOrder α lt] {t : Rbnode α} {x} :
       constructor
       · apply trans_of lt lo_val val_x
       · assumption
-#align rbnode.range Rbnode.range
+#align rbnode.range Std.RBNode.range
 
-theorem lt_of_mem_left [IsStrictWeakOrder α lt] {y : α} {t l r : Rbnode α} :
-    ∀ {lo hi}, IsSearchable lt t lo hi → IsNodeOf t l y r → ∀ {x}, Mem lt x l → lt x y :=
+theorem Std.RBNode.ltOfMemLeft [IsStrictWeakOrder α lt] {y : α} {t l r : Std.RBNode α} :
+    ∀ {lo hi},
+      Std.RBNode.IsSearchable lt t lo hi →
+        Std.RBNode.IsNodeOf t l y r → ∀ {x}, Std.RBNode.Mem lt x l → lt x y :=
   by
   intro _ _ hs hn x hm; cases hn <;> cases hs
   all_goals exact (range hs_hs₁ hm).2
-#align rbnode.lt_of_mem_left Rbnode.lt_of_mem_left
+#align rbnode.lt_of_mem_left Std.RBNode.ltOfMemLeft
 
-theorem lt_of_mem_right [IsStrictWeakOrder α lt] {y : α} {t l r : Rbnode α} :
-    ∀ {lo hi}, IsSearchable lt t lo hi → IsNodeOf t l y r → ∀ {z}, Mem lt z r → lt y z :=
+theorem Std.RBNode.ltOfMemRight [IsStrictWeakOrder α lt] {y : α} {t l r : Std.RBNode α} :
+    ∀ {lo hi},
+      Std.RBNode.IsSearchable lt t lo hi →
+        Std.RBNode.IsNodeOf t l y r → ∀ {z}, Std.RBNode.Mem lt z r → lt y z :=
   by
   intro _ _ hs hn z hm; cases hn <;> cases hs
   all_goals exact (range hs_hs₂ hm).1
-#align rbnode.lt_of_mem_right Rbnode.lt_of_mem_right
+#align rbnode.lt_of_mem_right Std.RBNode.ltOfMemRight
 
-theorem lt_of_mem_left_right [IsStrictWeakOrder α lt] {y : α} {t l r : Rbnode α} :
+theorem Std.RBNode.ltOfMemLeftRight [IsStrictWeakOrder α lt] {y : α} {t l r : Std.RBNode α} :
     ∀ {lo hi},
-      IsSearchable lt t lo hi → IsNodeOf t l y r → ∀ {x z}, Mem lt x l → Mem lt z r → lt x z :=
+      Std.RBNode.IsSearchable lt t lo hi →
+        Std.RBNode.IsNodeOf t l y r →
+          ∀ {x z}, Std.RBNode.Mem lt x l → Std.RBNode.Mem lt z r → lt x z :=
   by
   intro _ _ hs hn x z hm₁ hm₂; cases hn <;> cases hs
   all_goals
     have h₁ := range hs_hs₁ hm₁
     have h₂ := range hs_hs₂ hm₂
     exact trans_of lt h₁.2 h₂.1
-#align rbnode.lt_of_mem_left_right Rbnode.lt_of_mem_left_right
+#align rbnode.lt_of_mem_left_right Std.RBNode.ltOfMemLeftRight
 
 end IsSearchableLemmas
 
-inductive IsRedBlack : Rbnode α → Color → Nat → Prop
-  | leaf_rb : is_red_black leaf black 0
+inductive Std.RBNode.IsRedBlack : Std.RBNode α → RBColor → Nat → Prop
+  | leaf_rb : is_red_black Std.RBNode.nil black 0
   |
   red_rb {v l r n} (rb_l : is_red_black l black n) (rb_r : is_red_black r black n) :
-    is_red_black (red_node l v r) red n
+    is_red_black (Std.RBNode.node l v r) red n
   |
   black_rb {v l r n c₁ c₂} (rb_l : is_red_black l c₁ n) (rb_r : is_red_black r c₂ n) :
     is_red_black (black_node l v r) black (succ n)
-#align rbnode.is_red_black Rbnode.IsRedBlack
+#align rbnode.is_red_black Std.RBNode.IsRedBlack
 
 open IsRedBlack
 
-theorem depth_min : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → n ≤ depth min t :=
+theorem Std.RBNode.depth_min :
+    ∀ {c n} {t : Std.RBNode α}, Std.RBNode.IsRedBlack t c n → n ≤ Std.RBNode.depth min t :=
   by
   intro c n' t h
   induction h
@@ -235,9 +246,9 @@ theorem depth_min : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → n ≤ depth
     simp [depth]
     apply succ_le_succ
     apply le_min <;> assumption
-#align rbnode.depth_min Rbnode.depth_min
+#align rbnode.depth_min Std.RBNode.depth_min
 
-private def upper : Color → Nat → Nat
+private def upper : RBColor → Nat → Nat
   | red, n => 2 * n + 1
   | black, n => 2 * n
 
@@ -245,7 +256,8 @@ private theorem upper_le : ∀ c n, upper c n ≤ 2 * n + 1
   | red, n => le_refl _
   | black, n => by apply le_succ
 
-theorem depth_max' : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → depth max t ≤ upper c n :=
+theorem Std.RBNode.depth_max' :
+    ∀ {c n} {t : Std.RBNode α}, Std.RBNode.IsRedBlack t c n → Std.RBNode.depth max t ≤ upper c n :=
   by
   intro c n' t h
   induction h
@@ -262,18 +274,20 @@ theorem depth_max' : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → depth max t
     suffices new : max (depth max h_l) (depth max h_r) + 1 ≤ 2 * h_n + 2 * 1
     · simp_all [depth, upper, succ_eq_add_one, Nat.left_distrib]
     apply succ_le_succ; apply max_le <;> assumption
-#align rbnode.depth_max' Rbnode.depth_max'
+#align rbnode.depth_max' Std.RBNode.depth_max'
 
-theorem depth_max {c n} {t : Rbnode α} (h : IsRedBlack t c n) : depth max t ≤ 2 * n + 1 :=
-  le_trans (depth_max' h) (upper_le _ _)
-#align rbnode.depth_max Rbnode.depth_max
+theorem Std.RBNode.depth_max {c n} {t : Std.RBNode α} (h : Std.RBNode.IsRedBlack t c n) :
+    Std.RBNode.depth max t ≤ 2 * n + 1 :=
+  le_trans (Std.RBNode.depth_max' h) (upper_le _ _)
+#align rbnode.depth_max Std.RBNode.depth_max
 
-theorem balanced {c n} {t : Rbnode α} (h : IsRedBlack t c n) : depth max t ≤ 2 * depth min t + 1 :=
+theorem Std.RBNode.balanced {c n} {t : Std.RBNode α} (h : Std.RBNode.IsRedBlack t c n) :
+    Std.RBNode.depth max t ≤ 2 * Std.RBNode.depth min t + 1 :=
   by
   have : 2 * depth min t + 1 ≥ 2 * n + 1 := by apply succ_le_succ; apply Nat.mul_le_mul_left;
     apply depth_min h
   apply le_trans; apply depth_max h; apply this
-#align rbnode.balanced Rbnode.balanced
+#align rbnode.balanced Std.RBNode.balanced
 
-end Rbnode
+end Std.RBNode
 
Diff
@@ -14,7 +14,7 @@ import Mathbin.Tactic.Interactive
 
 universe u
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def tactic.interactive.blast_disjs : tactic Unit :=
   sorry
 #align tactic.interactive.blast_disjs tactic.interactive.blast_disjs
@@ -45,7 +45,7 @@ inductive IsSearchable (lt : α → α → Prop) : Rbnode α → Option α → O
     is_searchable (black_node l v r) lo hi
 #align rbnode.is_searchable Rbnode.IsSearchable
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:336:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def is_searchable_tactic : tactic Unit :=
   sorry
 #align rbnode.is_searchable_tactic rbnode.is_searchable_tactic
Diff
@@ -77,11 +77,11 @@ theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
       IsSearchable lt t lo (some hi') :=
   by
   classical
-    induction t <;> intros <;>
-      run_tac
-        is_searchable_tactic
-    · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
-    all_goals apply t_ih_rchild hc hs_hs₂
+  induction t <;> intros <;>
+    run_tac
+      is_searchable_tactic
+  · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
+  all_goals apply t_ih_rchild hc hs_hs₂
 #align rbnode.is_searchable_of_is_searchable_of_incomp Rbnode.isSearchable_of_isSearchable_of_incomp
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
@@ -90,11 +90,11 @@ theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
       IsSearchable lt t (some lo') hi :=
   by
   classical
-    induction t <;> intros <;>
-      run_tac
-        is_searchable_tactic
-    · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
-    all_goals apply t_ih_lchild hc hs_hs₁
+  induction t <;> intros <;>
+    run_tac
+      is_searchable_tactic
+  · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
+  all_goals apply t_ih_lchild hc hs_hs₁
 #align rbnode.is_searchable_of_incomp_of_is_searchable Rbnode.isSearchable_of_incomp_of_isSearchable
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
@@ -147,40 +147,40 @@ theorem range [IsStrictWeakOrder α lt] {t : Rbnode α} {x} :
     ∀ {lo hi}, IsSearchable lt t lo hi → Mem lt x t → Lift lt lo (some x) ∧ Lift lt (some x) hi :=
   by
   classical
-    induction t
-    case leaf => simp [mem]
-    all_goals
-      -- red_node and black_node are identical
-      intro lo hi h₁ h₂;
-      cases h₁
-      simp only [mem] at h₂ 
-      have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
-      have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
-      cases_type*or.1
-      · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) := by apply t_ih_lchild;
-          assumption; assumption
-        cases' h₃ with lo_x x_val
-        constructor
-        show lift lt lo (some x); · assumption
-        show lift lt (some x) hi
-        · cases' hi with hi <;> simp [lift] at *
-          apply trans_of lt x_val val_hi
-      · cases h₂
-        cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
-        · apply lt_of_incomp_of_lt _ val_hi; simp [*]
-        · apply lt_of_lt_of_incomp lo_val; simp [*]
-        constructor
-        · apply lt_of_lt_of_incomp lo_val; simp [*]
-        · apply lt_of_incomp_of_lt _ val_hi; simp [*]
-      · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi := by apply t_ih_rchild;
-          assumption; assumption
-        cases' h₃ with val_x x_hi
-        cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
-        · assumption
-        · apply trans_of lt lo_val val_x
-        constructor
-        · apply trans_of lt lo_val val_x
-        · assumption
+  induction t
+  case leaf => simp [mem]
+  all_goals
+    -- red_node and black_node are identical
+    intro lo hi h₁ h₂;
+    cases h₁
+    simp only [mem] at h₂ 
+    have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
+    have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
+    cases_type* or.1
+    · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) := by apply t_ih_lchild;
+        assumption; assumption
+      cases' h₃ with lo_x x_val
+      constructor
+      show lift lt lo (some x); · assumption
+      show lift lt (some x) hi
+      · cases' hi with hi <;> simp [lift] at *
+        apply trans_of lt x_val val_hi
+    · cases h₂
+      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
+      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+      · apply lt_of_lt_of_incomp lo_val; simp [*]
+      constructor
+      · apply lt_of_lt_of_incomp lo_val; simp [*]
+      · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+    · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi := by apply t_ih_rchild;
+        assumption; assumption
+      cases' h₃ with val_x x_hi
+      cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
+      · assumption
+      · apply trans_of lt lo_val val_x
+      constructor
+      · apply trans_of lt lo_val val_x
+      · assumption
 #align rbnode.range Rbnode.range
 
 theorem lt_of_mem_left [IsStrictWeakOrder α lt] {y : α} {t l r : Rbnode α} :
Diff
@@ -153,7 +153,7 @@ theorem range [IsStrictWeakOrder α lt] {t : Rbnode α} {x} :
       -- red_node and black_node are identical
       intro lo hi h₁ h₂;
       cases h₁
-      simp only [mem] at h₂
+      simp only [mem] at h₂ 
       have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
       have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
       cases_type*or.1
Diff
@@ -80,10 +80,7 @@ theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
     induction t <;> intros <;>
       run_tac
         is_searchable_tactic
-    · cases lo <;> simp_all [lift]
-      apply lt_of_lt_of_incomp
-      assumption
-      exact ⟨hc.2, hc.1⟩
+    · cases lo <;> simp_all [lift]; apply lt_of_lt_of_incomp; assumption; exact ⟨hc.2, hc.1⟩
     all_goals apply t_ih_rchild hc hs_hs₂
 #align rbnode.is_searchable_of_is_searchable_of_incomp Rbnode.isSearchable_of_isSearchable_of_incomp
 
@@ -96,10 +93,7 @@ theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
     induction t <;> intros <;>
       run_tac
         is_searchable_tactic
-    · cases hi <;> simp_all [lift]
-      apply lt_of_incomp_of_lt
-      assumption
-      assumption
+    · cases hi <;> simp_all [lift]; apply lt_of_incomp_of_lt; assumption; assumption
     all_goals apply t_ih_lchild hc hs_hs₁
 #align rbnode.is_searchable_of_incomp_of_is_searchable Rbnode.isSearchable_of_incomp_of_isSearchable
 
@@ -111,9 +105,7 @@ theorem isSearchable_some_low_of_isSearchable_of_lt {t} [IsTrans α lt] :
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
-  · cases hi <;> simp_all [lift]
-    apply trans_of lt hlt
-    assumption
+  · cases hi <;> simp_all [lift]; apply trans_of lt hlt; assumption
   all_goals apply t_ih_lchild hlt hs_hs₁
 #align rbnode.is_searchable_some_low_of_is_searchable_of_lt Rbnode.isSearchable_some_low_of_isSearchable_of_lt
 
@@ -136,10 +128,7 @@ theorem isSearchable_some_high_of_isSearchable_of_lt {t} [IsTrans α lt] :
   induction t <;> intros <;>
     run_tac
       is_searchable_tactic
-  · cases lo <;> simp_all [lift]
-    apply trans_of lt
-    assumption
-    assumption
+  · cases lo <;> simp_all [lift]; apply trans_of lt; assumption; assumption
   all_goals apply t_ih_rchild hlt hs_hs₂
 #align rbnode.is_searchable_some_high_of_is_searchable_of_lt Rbnode.isSearchable_some_high_of_isSearchable_of_lt
 
@@ -162,46 +151,29 @@ theorem range [IsStrictWeakOrder α lt] {t : Rbnode α} {x} :
     case leaf => simp [mem]
     all_goals
       -- red_node and black_node are identical
-      intro lo hi h₁ h₂
+      intro lo hi h₁ h₂;
       cases h₁
       simp only [mem] at h₂
-      have val_hi : lift lt (some t_val) hi :=
-        by
-        apply lo_lt_hi
-        assumption
-      have lo_val : lift lt lo (some t_val) :=
-        by
-        apply lo_lt_hi
-        assumption
+      have val_hi : lift lt (some t_val) hi := by apply lo_lt_hi; assumption
+      have lo_val : lift lt lo (some t_val) := by apply lo_lt_hi; assumption
       cases_type*or.1
-      · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) :=
-          by
-          apply t_ih_lchild
-          assumption
-          assumption
+      · have h₃ : lift lt lo (some x) ∧ lift lt (some x) (some t_val) := by apply t_ih_lchild;
+          assumption; assumption
         cases' h₃ with lo_x x_val
         constructor
-        show lift lt lo (some x)
-        · assumption
+        show lift lt lo (some x); · assumption
         show lift lt (some x) hi
         · cases' hi with hi <;> simp [lift] at *
           apply trans_of lt x_val val_hi
       · cases h₂
         cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
-        · apply lt_of_incomp_of_lt _ val_hi
-          simp [*]
-        · apply lt_of_lt_of_incomp lo_val
-          simp [*]
+        · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+        · apply lt_of_lt_of_incomp lo_val; simp [*]
         constructor
-        · apply lt_of_lt_of_incomp lo_val
-          simp [*]
-        · apply lt_of_incomp_of_lt _ val_hi
-          simp [*]
-      · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi :=
-          by
-          apply t_ih_rchild
-          assumption
-          assumption
+        · apply lt_of_lt_of_incomp lo_val; simp [*]
+        · apply lt_of_incomp_of_lt _ val_hi; simp [*]
+      · have h₃ : lift lt (some t_val) (some x) ∧ lift lt (some x) hi := by apply t_ih_rchild;
+          assumption; assumption
         cases' h₃ with val_x x_hi
         cases' lo with lo <;> cases' hi with hi <;> simp [lift] at *
         · assumption
@@ -258,8 +230,7 @@ theorem depth_min : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → n ≤ depth
   case red_rb =>
     simp [depth]
     have : min (depth min h_l) (depth min h_r) ≥ h_n := by apply le_min <;> assumption
-    apply le_succ_of_le
-    assumption
+    apply le_succ_of_le; assumption
   case black_rb =>
     simp [depth]
     apply succ_le_succ
@@ -290,8 +261,7 @@ theorem depth_max' : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → depth max t
     have : depth max h_r ≤ 2 * h_n + 1 := le_trans h_ih_rb_r (upper_le _ _)
     suffices new : max (depth max h_l) (depth max h_r) + 1 ≤ 2 * h_n + 2 * 1
     · simp_all [depth, upper, succ_eq_add_one, Nat.left_distrib]
-    apply succ_le_succ
-    apply max_le <;> assumption
+    apply succ_le_succ; apply max_le <;> assumption
 #align rbnode.depth_max' Rbnode.depth_max'
 
 theorem depth_max {c n} {t : Rbnode α} (h : IsRedBlack t c n) : depth max t ≤ 2 * n + 1 :=
@@ -300,14 +270,9 @@ theorem depth_max {c n} {t : Rbnode α} (h : IsRedBlack t c n) : depth max t ≤
 
 theorem balanced {c n} {t : Rbnode α} (h : IsRedBlack t c n) : depth max t ≤ 2 * depth min t + 1 :=
   by
-  have : 2 * depth min t + 1 ≥ 2 * n + 1 :=
-    by
-    apply succ_le_succ
-    apply Nat.mul_le_mul_left
+  have : 2 * depth min t + 1 ≥ 2 * n + 1 := by apply succ_le_succ; apply Nat.mul_le_mul_left;
     apply depth_min h
-  apply le_trans
-  apply depth_max h
-  apply this
+  apply le_trans; apply depth_max h; apply this
 #align rbnode.balanced Rbnode.balanced
 
 end Rbnode
Diff
@@ -269,12 +269,10 @@ theorem depth_min : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → n ≤ depth
 private def upper : Color → Nat → Nat
   | red, n => 2 * n + 1
   | black, n => 2 * n
-#align rbnode.upper rbnode.upper
 
 private theorem upper_le : ∀ c n, upper c n ≤ 2 * n + 1
   | red, n => le_refl _
   | black, n => by apply le_succ
-#align rbnode.upper_le rbnode.upper_le
 
 theorem depth_max' : ∀ {c n} {t : Rbnode α}, IsRedBlack t c n → depth max t ≤ upper c n :=
   by
Diff
@@ -14,7 +14,7 @@ import Mathbin.Tactic.Interactive
 
 universe u
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:334:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def tactic.interactive.blast_disjs : tactic Unit :=
   sorry
 #align tactic.interactive.blast_disjs tactic.interactive.blast_disjs
@@ -45,7 +45,7 @@ inductive IsSearchable (lt : α → α → Prop) : Rbnode α → Option α → O
     is_searchable (black_node l v r) lo hi
 #align rbnode.is_searchable Rbnode.IsSearchable
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:334:4: warning: unsupported (TODO): `[tacs] -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:330:4: warning: unsupported (TODO): `[tacs] -/
 unsafe def is_searchable_tactic : tactic Unit :=
   sorry
 #align rbnode.is_searchable_tactic rbnode.is_searchable_tactic
@@ -71,7 +71,7 @@ theorem lo_lt_hi {t : Rbnode α} {lt} [IsTrans α lt] :
     apply trans_of lt h₁ h₂
 #align rbnode.lo_lt_hi Rbnode.lo_lt_hi
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
     ∀ {lo hi hi'} (hc : ¬lt hi' hi ∧ ¬lt hi hi') (hs : IsSearchable lt t lo (some hi)),
       IsSearchable lt t lo (some hi') :=
@@ -87,7 +87,7 @@ theorem isSearchable_of_isSearchable_of_incomp [IsStrictWeakOrder α lt] {t} :
     all_goals apply t_ih_rchild hc hs_hs₂
 #align rbnode.is_searchable_of_is_searchable_of_incomp Rbnode.isSearchable_of_isSearchable_of_incomp
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
     ∀ {lo lo' hi} (hc : ¬lt lo' lo ∧ ¬lt lo lo') (hs : IsSearchable lt t (some lo) hi),
       IsSearchable lt t (some lo') hi :=
@@ -103,7 +103,7 @@ theorem isSearchable_of_incomp_of_isSearchable [IsStrictWeakOrder α lt] {t} :
     all_goals apply t_ih_lchild hc hs_hs₁
 #align rbnode.is_searchable_of_incomp_of_is_searchable Rbnode.isSearchable_of_incomp_of_isSearchable
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_some_low_of_isSearchable_of_lt {t} [IsTrans α lt] :
     ∀ {lo hi lo'} (hlt : lt lo' lo) (hs : IsSearchable lt t (some lo) hi),
       IsSearchable lt t (some lo') hi :=
@@ -117,7 +117,7 @@ theorem isSearchable_some_low_of_isSearchable_of_lt {t} [IsTrans α lt] :
   all_goals apply t_ih_lchild hlt hs_hs₁
 #align rbnode.is_searchable_some_low_of_is_searchable_of_lt Rbnode.isSearchable_some_low_of_isSearchable_of_lt
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_none_low_of_isSearchable_some_low {t} :
     ∀ {y hi} (hlt : IsSearchable lt t (some y) hi), IsSearchable lt t none hi :=
   by
@@ -128,7 +128,7 @@ theorem isSearchable_none_low_of_isSearchable_some_low {t} :
   all_goals apply t_ih_lchild hlt_hs₁
 #align rbnode.is_searchable_none_low_of_is_searchable_some_low Rbnode.isSearchable_none_low_of_isSearchable_some_low
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_some_high_of_isSearchable_of_lt {t} [IsTrans α lt] :
     ∀ {lo hi hi'} (hlt : lt hi hi') (hs : IsSearchable lt t lo (some hi)),
       IsSearchable lt t lo (some hi') :=
@@ -143,7 +143,7 @@ theorem isSearchable_some_high_of_isSearchable_of_lt {t} [IsTrans α lt] :
   all_goals apply t_ih_rchild hlt hs_hs₂
 #align rbnode.is_searchable_some_high_of_is_searchable_of_lt Rbnode.isSearchable_some_high_of_isSearchable_of_lt
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:72:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:69:18: unsupported non-interactive tactic rbnode.is_searchable_tactic -/
 theorem isSearchable_none_high_of_isSearchable_some_high {t} :
     ∀ {lo y} (hlt : IsSearchable lt t lo (some y)), IsSearchable lt t lo none :=
   by

Changes in mathlib4

mathlib3
mathlib4
chore: move #align_import out of comment (#6165)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -3,12 +3,13 @@ Copyright (c) 2017 Microsoft Corporation. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Leonardo de Moura
 -/
+import Mathlib.Mathport.Rename
+
+#align_import data.rbtree.basic from "leanprover-community/mathlib"@"5cb17dd1617d2dc55eb17777c3dcded3306fadb5"
 
 /-!
 # Porting note: essentially already ported to std4
 
-#align_import data.rbtree.basic from "leanprover-community/mathlib"@"5cb17dd1617d2dc55eb17777c3dcded3306fadb5"
-
 https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Mathlib4.20porting.20meeting.20series/near/369848971
 
 -/
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2017 Microsoft Corporation. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Leonardo de Moura
-
-! This file was ported from Lean 3 source module data.rbtree.basic
-! leanprover-community/mathlib commit 5cb17dd1617d2dc55eb17777c3dcded3306fadb5
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 
 /-!
 # Porting note: essentially already ported to std4
 
+#align_import data.rbtree.basic from "leanprover-community/mathlib"@"5cb17dd1617d2dc55eb17777c3dcded3306fadb5"
+
 https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Mathlib4.20porting.20meeting.20series/near/369848971
 
 -/
feat: "port" Rbmap and Rbtree files (#5504)

Cf. here. Incorporates #5479.

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 5

6 files ported (100.0%)
3205 lines ported (100.0%)

All dependencies are ported!