model_theory.ultraproductsMathlib.ModelTheory.Ultraproducts

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -57,7 +57,7 @@ instance setoidPrestructure : L.Prestructure ((u : Filter α).productSetoid M) :
     fun_equiv := fun n f x y xy =>
       by
       refine' mem_of_superset (Inter_mem.2 xy) fun a ha => _
-      simp only [Set.mem_iInter, Set.mem_setOf_eq] at ha 
+      simp only [Set.mem_iInter, Set.mem_setOf_eq] at ha
       simp only [Set.mem_setOf_eq, ha]
     rel_equiv := fun n r x y xy => by
       rw [← iff_eq_eq]
@@ -143,7 +143,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
-      simp_rw [← Ultrafilter.eventually_not, Classical.not_forall] at h 
+      simp_rw [← Ultrafilter.eventually_not, Classical.not_forall] at h
       refine'
         ⟨fun a : α =>
           Classical.epsilon fun m : M a =>
Diff
@@ -143,7 +143,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
-      simp_rw [← Ultrafilter.eventually_not, not_forall] at h 
+      simp_rw [← Ultrafilter.eventually_not, Classical.not_forall] at h 
       refine'
         ⟨fun a : α =>
           Classical.epsilon fun m : M a =>
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
 -/
-import Mathbin.ModelTheory.Quotients
-import Mathbin.Order.Filter.Germ
-import Mathbin.Order.Filter.Ultrafilter
+import ModelTheory.Quotients
+import Order.Filter.Germ
+import Order.Filter.Ultrafilter
 
 #align_import model_theory.ultraproducts from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
 
Diff
@@ -131,7 +131,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       ∀ m : ∀ a : α, M a,
         φ.realize (fun i : β => (x i : (u : Filter α).product M))
           (Fin.snoc (coe ∘ v) (↑m : (u : Filter α).product M))
-    · exact forall_quotient_iff
+    · exact Quotient.forall
     have h' :
       ∀ (m : ∀ a, M a) (a : α),
         (fun i : Fin (k + 1) => (Fin.snoc v m : _ → ∀ a, M a) i a) =
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
-
-! This file was ported from Lean 3 source module model_theory.ultraproducts
-! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.ModelTheory.Quotients
 import Mathbin.Order.Filter.Germ
 import Mathbin.Order.Filter.Ultrafilter
 
+#align_import model_theory.ultraproducts from "leanprover-community/mathlib"@"0b7c740e25651db0ba63648fbae9f9d6f941e31b"
+
 /-! # Ultraproducts and Łoś's Theorem
 
 > THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
Diff
@@ -142,7 +142,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       by
       refine' fun m a => funext (Fin.reverseInduction _ fun i hi => _)
       · simp only [Fin.snoc_last]
-      · simp only [Fin.snoc_castSuccEmb]
+      · simp only [Fin.snoc_castSucc]
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
Diff
@@ -142,7 +142,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       by
       refine' fun m a => funext (Fin.reverseInduction _ fun i hi => _)
       · simp only [Fin.snoc_last]
-      · simp only [Fin.snoc_castSucc]
+      · simp only [Fin.snoc_castSuccEmb]
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
Diff
@@ -86,11 +86,14 @@ instance structure : L.Structure ((u : Filter α).product M) :=
 #align first_order.language.ultraproduct.Structure FirstOrder.Language.Ultraproduct.structure
 -/
 
+#print FirstOrder.Language.Ultraproduct.funMap_cast /-
 theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
     (funMap f fun i => (x i : (u : Filter α).product M)) = fun a => funMap f fun i => x i a := by
   apply fun_map_quotient_mk
 #align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_cast
+-/
 
+#print FirstOrder.Language.Ultraproduct.term_realize_cast /-
 theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β) :
     (t.realize fun i => (x i : (u : Filter α).product M)) = fun a => t.realize fun i => x i a :=
   by
@@ -103,9 +106,11 @@ theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β)
   · simp only [term.realize, t_ih]
     rfl
 #align first_order.language.ultraproduct.term_realize_cast FirstOrder.Language.Ultraproduct.term_realize_cast
+-/
 
 variable [∀ a : α, Nonempty (M a)]
 
+#print FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast /-
 theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormula β n)
     (x : β → ∀ a, M a) (v : Fin n → ∀ a, M a) :
     (φ.realize (fun i : β => (x i : (u : Filter α).product M)) fun i => v i) ↔
@@ -152,7 +157,9 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
     · rw [Filter.eventually_iff] at *
       exact Filter.mem_of_superset h fun a ha => ha (m a)
 #align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast
+-/
 
+#print FirstOrder.Language.Ultraproduct.realize_formula_cast /-
 theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a, M a) :
     (φ.realize fun i => (x i : (u : Filter α).product M)) ↔
       ∀ᶠ a : α in u, φ.realize fun i => x i a :=
@@ -160,9 +167,11 @@ theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a
   simp_rw [formula.realize, ← bounded_formula_realize_cast φ x, iff_eq_eq]
   exact congr rfl (Subsingleton.elim _ _)
 #align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_cast
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print FirstOrder.Language.Ultraproduct.sentence_realize /-
 /-- Łoś's Theorem : A sentence is true in an ultraproduct if and only if the set of structures it is
   true in is in the ultrafilter. -/
 theorem sentence_realize (φ : L.Sentence) : (u : Filter α).product M ⊨ φ ↔ ∀ᶠ a : α in u, M a ⊨ φ :=
@@ -170,6 +179,7 @@ theorem sentence_realize (φ : L.Sentence) : (u : Filter α).product M ⊨ φ 
   simp_rw [sentence.realize, ← realize_formula_cast φ, iff_eq_eq]
   exact congr rfl (Subsingleton.elim _ _)
 #align first_order.language.ultraproduct.sentence_realize FirstOrder.Language.Ultraproduct.sentence_realize
+-/
 
 instance : Nonempty ((u : Filter α).product M) :=
   letI : ∀ a, Inhabited (M a) := fun _ => Classical.inhabited_of_nonempty'
Diff
@@ -94,7 +94,8 @@ theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
 theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β) :
     (t.realize fun i => (x i : (u : Filter α).product M)) = fun a => t.realize fun i => x i a :=
   by
-  convert@term.realize_quotient_mk L _ ((u : Filter α).productSetoid M)
+  convert
+    @term.realize_quotient_mk L _ ((u : Filter α).productSetoid M)
       (ultraproduct.setoid_prestructure M u) _ t x
   ext a
   induction t
Diff
@@ -60,7 +60,7 @@ instance setoidPrestructure : L.Prestructure ((u : Filter α).productSetoid M) :
     fun_equiv := fun n f x y xy =>
       by
       refine' mem_of_superset (Inter_mem.2 xy) fun a ha => _
-      simp only [Set.mem_iInter, Set.mem_setOf_eq] at ha
+      simp only [Set.mem_iInter, Set.mem_setOf_eq] at ha 
       simp only [Set.mem_setOf_eq, ha]
     rel_equiv := fun n r x y xy => by
       rw [← iff_eq_eq]
@@ -140,7 +140,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
-      simp_rw [← Ultrafilter.eventually_not, not_forall] at h
+      simp_rw [← Ultrafilter.eventually_not, not_forall] at h 
       refine'
         ⟨fun a : α =>
           Classical.epsilon fun m : M a =>
Diff
@@ -35,7 +35,7 @@ universe u v
 
 variable {α : Type _} (M : α → Type _) (u : Ultrafilter α)
 
-open FirstOrder Filter
+open scoped FirstOrder Filter
 
 open Filter
 
Diff
@@ -86,23 +86,11 @@ instance structure : L.Structure ((u : Filter α).product M) :=
 #align first_order.language.ultraproduct.Structure FirstOrder.Language.Ultraproduct.structure
 -/
 
-/- warning: first_order.language.ultraproduct.fun_map_cast -> FirstOrder.Language.Ultraproduct.funMap_cast is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] {n : Nat} (f : FirstOrder.Language.Functions.{u1, u2} L n) (x : (Fin n) -> (forall (a : α), M a)), Eq.{succ (max u3 u4)} (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Structure.funMap.{u1, u2, max u3 u4} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) n f (fun (i : Fin n) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i))) ((fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (fun (a : α) => FirstOrder.Language.Structure.funMap.{u1, u2, u4} L (M a) (_inst_1 a) n f (fun (i : Fin n) => x i a)))
-but is expected to have type
-  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u3, u4}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u3, u4, u1} L (M a)] {n : Nat} (f : FirstOrder.Language.Functions.{u3, u4} L n) (x : (Fin n) -> (forall (a : α), M a)), Eq.{max (succ u2) (succ u1)} (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.Structure.funMap.{u3, u4, max u2 u1} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u3, u4, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u3, u4, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) n f (fun (i : Fin n) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i))) (Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (fun (a : α) => FirstOrder.Language.Structure.funMap.{u3, u4, u1} L (M a) (_inst_1 a) n f (fun (i : Fin n) => x i a)))
-Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_castₓ'. -/
 theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
     (funMap f fun i => (x i : (u : Filter α).product M)) = fun a => funMap f fun i => x i a := by
   apply fun_map_quotient_mk
 #align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_cast
 
-/- warning: first_order.language.ultraproduct.term_realize_cast -> FirstOrder.Language.Ultraproduct.term_realize_cast is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] {β : Type.{u5}} (x : β -> (forall (a : α), M a)) (t : FirstOrder.Language.Term.{u1, u2, u5} L β), Eq.{succ (max u3 u4)} (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Term.realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i)) t) ((fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (fun (a : α) => FirstOrder.Language.Term.realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β (fun (i : β) => x i a) t))
-but is expected to have type
-  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] {β : Type.{u3}} (x : β -> (forall (a : α), M a)) (t : FirstOrder.Language.Term.{u4, u5, u3} L β), Eq.{max (succ u2) (succ u1)} (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.Term.realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i)) t) (Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (fun (a : α) => FirstOrder.Language.Term.realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β (fun (i : β) => x i a) t))
-Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.term_realize_cast FirstOrder.Language.Ultraproduct.term_realize_castₓ'. -/
 theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β) :
     (t.realize fun i => (x i : (u : Filter α).product M)) = fun a => t.realize fun i => x i a :=
   by
@@ -117,9 +105,6 @@ theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β)
 
 variable [∀ a : α, Nonempty (M a)]
 
-/- warning: first_order.language.ultraproduct.bounded_formula_realize_cast -> FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_castₓ'. -/
 theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormula β n)
     (x : β → ∀ a, M a) (v : Fin n → ∀ a, M a) :
     (φ.realize (fun i : β => (x i : (u : Filter α).product M)) fun i => v i) ↔
@@ -167,12 +152,6 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       exact Filter.mem_of_superset h fun a ha => ha (m a)
 #align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast
 
-/- warning: first_order.language.ultraproduct.realize_formula_cast -> FirstOrder.Language.Ultraproduct.realize_formula_cast is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] {β : Type.{u5}} (φ : FirstOrder.Language.Formula.{u1, u2, u5} L β) (x : β -> (forall (a : α), M a)), Iff (FirstOrder.Language.Formula.Realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β φ (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i))) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.Formula.Realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β φ (fun (i : β) => x i a)) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
-but is expected to have type
-  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] {β : Type.{u3}} (φ : FirstOrder.Language.Formula.{u4, u5, u3} L β) (x : β -> (forall (a : α), M a)), Iff (FirstOrder.Language.Formula.Realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β φ (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i))) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.Formula.Realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β φ (fun (i : β) => x i a)) (Ultrafilter.toFilter.{u2} α u))
-Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_castₓ'. -/
 theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a, M a) :
     (φ.realize fun i => (x i : (u : Filter α).product M)) ↔
       ∀ᶠ a : α in u, φ.realize fun i => x i a :=
@@ -181,12 +160,6 @@ theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a
   exact congr rfl (Subsingleton.elim _ _)
 #align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_cast
 
-/- warning: first_order.language.ultraproduct.sentence_realize -> FirstOrder.Language.Ultraproduct.sentence_realize is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] (φ : FirstOrder.Language.Sentence.{u1, u2} L), Iff (FirstOrder.Language.Sentence.Realize.{u1, u2, max u3 u4} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) φ) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.Sentence.Realize.{u1, u2, u4} L (M a) (_inst_1 a) φ) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
-but is expected to have type
-  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u3, u4}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u3, u4, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] (φ : FirstOrder.Language.Sentence.{u3, u4} L), Iff (FirstOrder.Language.Sentence.Realize.{u3, u4, max u2 u1} L (Filter.Product.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) M) (FirstOrder.Language.Ultraproduct.structure.{u3, u4, u2, u1} α M u L (fun (a : α) => _inst_1 a)) φ) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.Sentence.Realize.{u3, u4, u1} L (M a) (_inst_1 a) φ) (Ultrafilter.toFilter.{u2} α u))
-Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.sentence_realize FirstOrder.Language.Ultraproduct.sentence_realizeₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- Łoś's Theorem : A sentence is true in an ultraproduct if and only if the set of structures it is
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
 
 ! This file was ported from Lean 3 source module model_theory.ultraproducts
-! leanprover-community/mathlib commit f1ae620609496a37534c2ab3640b641d5be8b6f0
+! leanprover-community/mathlib commit 0b7c740e25651db0ba63648fbae9f9d6f941e31b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Order.Filter.Ultrafilter
 
 /-! # Ultraproducts and Łoś's Theorem
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 ## Main Definitions
 * `first_order.language.ultraproduct.Structure` is the ultraproduct structure on `filter.product`.
 
@@ -115,10 +118,7 @@ theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β)
 variable [∀ a : α, Nonempty (M a)]
 
 /- warning: first_order.language.ultraproduct.bounded_formula_realize_cast -> FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] {β : Type.{u5}} {n : Nat} (φ : FirstOrder.Language.BoundedFormula.{u1, u2, u5} L β n) (x : β -> (forall (a : α), M a)) (v : (Fin n) -> (forall (a : α), M a)), Iff (FirstOrder.Language.BoundedFormula.Realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β n φ (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i)) (fun (i : Fin n) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (v i))) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.BoundedFormula.Realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β n φ (fun (i : β) => x i a) (fun (i : Fin n) => v i a)) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
-but is expected to have type
-  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] {β : Type.{u3}} {n : Nat} (φ : FirstOrder.Language.BoundedFormula.{u4, u5, u3} L β n) (x : β -> (forall (a : α), M a)) (v : (Fin n) -> (forall (a : α), M a)), Iff (FirstOrder.Language.BoundedFormula.Realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β n φ (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i)) (fun (i : Fin n) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (v i))) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.BoundedFormula.Realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β n φ (fun (i : β) => x i a) (fun (i : Fin n) => v i a)) (Ultrafilter.toFilter.{u2} α u))
+<too large>
 Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_castₓ'. -/
 theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormula β n)
     (x : β → ∀ a, M a) (v : Fin n → ∀ a, M a) :
Diff
@@ -46,6 +46,7 @@ variable {L : Language.{u, v}} [∀ a, L.Structure (M a)]
 
 namespace Ultraproduct
 
+#print FirstOrder.Language.Ultraproduct.setoidPrestructure /-
 instance setoidPrestructure : L.Prestructure ((u : Filter α).productSetoid M) :=
   {
     (u : Filter α).productSetoid
@@ -72,18 +73,33 @@ instance setoidPrestructure : L.Prestructure ((u : Filter α).productSetoid M) :
         rw [funext ha2]
         exact ha1 }
 #align first_order.language.ultraproduct.setoid_prestructure FirstOrder.Language.Ultraproduct.setoidPrestructure
+-/
 
 variable {M} {u}
 
+#print FirstOrder.Language.Ultraproduct.structure /-
 instance structure : L.Structure ((u : Filter α).product M) :=
   Language.quotientStructure
 #align first_order.language.ultraproduct.Structure FirstOrder.Language.Ultraproduct.structure
+-/
 
+/- warning: first_order.language.ultraproduct.fun_map_cast -> FirstOrder.Language.Ultraproduct.funMap_cast is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] {n : Nat} (f : FirstOrder.Language.Functions.{u1, u2} L n) (x : (Fin n) -> (forall (a : α), M a)), Eq.{succ (max u3 u4)} (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Structure.funMap.{u1, u2, max u3 u4} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) n f (fun (i : Fin n) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i))) ((fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (fun (a : α) => FirstOrder.Language.Structure.funMap.{u1, u2, u4} L (M a) (_inst_1 a) n f (fun (i : Fin n) => x i a)))
+but is expected to have type
+  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u3, u4}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u3, u4, u1} L (M a)] {n : Nat} (f : FirstOrder.Language.Functions.{u3, u4} L n) (x : (Fin n) -> (forall (a : α), M a)), Eq.{max (succ u2) (succ u1)} (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.Structure.funMap.{u3, u4, max u2 u1} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u3, u4, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u3, u4, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) n f (fun (i : Fin n) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i))) (Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (fun (a : α) => FirstOrder.Language.Structure.funMap.{u3, u4, u1} L (M a) (_inst_1 a) n f (fun (i : Fin n) => x i a)))
+Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_castₓ'. -/
 theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
     (funMap f fun i => (x i : (u : Filter α).product M)) = fun a => funMap f fun i => x i a := by
   apply fun_map_quotient_mk
 #align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_cast
 
+/- warning: first_order.language.ultraproduct.term_realize_cast -> FirstOrder.Language.Ultraproduct.term_realize_cast is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] {β : Type.{u5}} (x : β -> (forall (a : α), M a)) (t : FirstOrder.Language.Term.{u1, u2, u5} L β), Eq.{succ (max u3 u4)} (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Term.realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i)) t) ((fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (fun (a : α) => FirstOrder.Language.Term.realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β (fun (i : β) => x i a) t))
+but is expected to have type
+  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] {β : Type.{u3}} (x : β -> (forall (a : α), M a)) (t : FirstOrder.Language.Term.{u4, u5, u3} L β), Eq.{max (succ u2) (succ u1)} (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.Term.realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i)) t) (Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (fun (a : α) => FirstOrder.Language.Term.realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β (fun (i : β) => x i a) t))
+Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.term_realize_cast FirstOrder.Language.Ultraproduct.term_realize_castₓ'. -/
 theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β) :
     (t.realize fun i => (x i : (u : Filter α).product M)) = fun a => t.realize fun i => x i a :=
   by
@@ -98,6 +114,12 @@ theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β)
 
 variable [∀ a : α, Nonempty (M a)]
 
+/- warning: first_order.language.ultraproduct.bounded_formula_realize_cast -> FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] {β : Type.{u5}} {n : Nat} (φ : FirstOrder.Language.BoundedFormula.{u1, u2, u5} L β n) (x : β -> (forall (a : α), M a)) (v : (Fin n) -> (forall (a : α), M a)), Iff (FirstOrder.Language.BoundedFormula.Realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β n φ (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i)) (fun (i : Fin n) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (v i))) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.BoundedFormula.Realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β n φ (fun (i : β) => x i a) (fun (i : Fin n) => v i a)) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
+but is expected to have type
+  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] {β : Type.{u3}} {n : Nat} (φ : FirstOrder.Language.BoundedFormula.{u4, u5, u3} L β n) (x : β -> (forall (a : α), M a)) (v : (Fin n) -> (forall (a : α), M a)), Iff (FirstOrder.Language.BoundedFormula.Realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β n φ (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i)) (fun (i : Fin n) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (v i))) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.BoundedFormula.Realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β n φ (fun (i : β) => x i a) (fun (i : Fin n) => v i a)) (Ultrafilter.toFilter.{u2} α u))
+Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_castₓ'. -/
 theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormula β n)
     (x : β → ∀ a, M a) (v : Fin n → ∀ a, M a) :
     (φ.realize (fun i : β => (x i : (u : Filter α).product M)) fun i => v i) ↔
@@ -145,6 +167,12 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       exact Filter.mem_of_superset h fun a ha => ha (m a)
 #align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast
 
+/- warning: first_order.language.ultraproduct.realize_formula_cast -> FirstOrder.Language.Ultraproduct.realize_formula_cast is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] {β : Type.{u5}} (φ : FirstOrder.Language.Formula.{u1, u2, u5} L β) (x : β -> (forall (a : α), M a)), Iff (FirstOrder.Language.Formula.Realize.{u1, u2, max u3 u4, u5} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) β φ (fun (i : β) => (fun (a : Sort.{max (succ u3) (succ u4)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u3) (succ u4), succ (max u3 u4)} a b] => self.0) (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (HasLiftT.mk.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (CoeTCₓ.coe.{max (succ u3) (succ u4), succ (max u3 u4)} (forall (a : α), M a) (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (Filter.Product.hasCoeT.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) (fun (a : α) => M a)))) (x i))) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.Formula.Realize.{u1, u2, u4, u5} L (M a) (_inst_1 a) β φ (fun (i : β) => x i a)) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
+but is expected to have type
+  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u4, u5}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u4, u5, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] {β : Type.{u3}} (φ : FirstOrder.Language.Formula.{u4, u5, u3} L β) (x : β -> (forall (a : α), M a)), Iff (FirstOrder.Language.Formula.Realize.{u4, u5, max u2 u1, u3} L (Quotient.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a))) (FirstOrder.Language.quotientStructure.{u4, u5, max u2 u1} L (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (FirstOrder.Language.Ultraproduct.setoidPrestructure.{u4, u5, u2, u1} α (fun (a : α) => M a) u L (fun (a : α) => _inst_1 a))) β φ (fun (i : β) => Quotient.mk'.{max (succ u2) (succ u1)} (forall (a : α), (fun (a : α) => M a) a) (Filter.productSetoid.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) (fun (a : α) => M a)) (x i))) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.Formula.Realize.{u4, u5, u1, u3} L (M a) (_inst_1 a) β φ (fun (i : β) => x i a)) (Ultrafilter.toFilter.{u2} α u))
+Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_castₓ'. -/
 theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a, M a) :
     (φ.realize fun i => (x i : (u : Filter α).product M)) ↔
       ∀ᶠ a : α in u, φ.realize fun i => x i a :=
@@ -153,6 +181,12 @@ theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a
   exact congr rfl (Subsingleton.elim _ _)
 #align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_cast
 
+/- warning: first_order.language.ultraproduct.sentence_realize -> FirstOrder.Language.Ultraproduct.sentence_realize is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u3}} {M : α -> Type.{u4}} {u : Ultrafilter.{u3} α} {L : FirstOrder.Language.{u1, u2}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u1, u2, u4} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u4} (M a)] (φ : FirstOrder.Language.Sentence.{u1, u2} L), Iff (FirstOrder.Language.Sentence.Realize.{u1, u2, max u3 u4} L (Filter.Product.{u3, u4} α ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u) M) (FirstOrder.Language.Ultraproduct.structure.{u1, u2, u3, u4} α M u L (fun (a : α) => _inst_1 a)) φ) (Filter.Eventually.{u3} α (fun (a : α) => FirstOrder.Language.Sentence.Realize.{u1, u2, u4} L (M a) (_inst_1 a) φ) ((fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Ultrafilter.{u3} α) (Filter.{u3} α) (HasLiftT.mk.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (CoeTCₓ.coe.{succ u3, succ u3} (Ultrafilter.{u3} α) (Filter.{u3} α) (Ultrafilter.Filter.hasCoeT.{u3} α))) u))
+but is expected to have type
+  forall {α : Type.{u2}} {M : α -> Type.{u1}} {u : Ultrafilter.{u2} α} {L : FirstOrder.Language.{u3, u4}} [_inst_1 : forall (a : α), FirstOrder.Language.Structure.{u3, u4, u1} L (M a)] [_inst_2 : forall (a : α), Nonempty.{succ u1} (M a)] (φ : FirstOrder.Language.Sentence.{u3, u4} L), Iff (FirstOrder.Language.Sentence.Realize.{u3, u4, max u2 u1} L (Filter.Product.{u2, u1} α (Ultrafilter.toFilter.{u2} α u) M) (FirstOrder.Language.Ultraproduct.structure.{u3, u4, u2, u1} α M u L (fun (a : α) => _inst_1 a)) φ) (Filter.Eventually.{u2} α (fun (a : α) => FirstOrder.Language.Sentence.Realize.{u3, u4, u1} L (M a) (_inst_1 a) φ) (Ultrafilter.toFilter.{u2} α u))
+Case conversion may be inaccurate. Consider using '#align first_order.language.ultraproduct.sentence_realize FirstOrder.Language.Ultraproduct.sentence_realizeₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- Łoś's Theorem : A sentence is true in an ultraproduct if and only if the set of structures it is
Diff
@@ -56,19 +56,19 @@ instance setoidPrestructure : L.Prestructure ((u : Filter α).productSetoid M) :
     fun_equiv := fun n f x y xy =>
       by
       refine' mem_of_superset (Inter_mem.2 xy) fun a ha => _
-      simp only [Set.mem_interᵢ, Set.mem_setOf_eq] at ha
+      simp only [Set.mem_iInter, Set.mem_setOf_eq] at ha
       simp only [Set.mem_setOf_eq, ha]
     rel_equiv := fun n r x y xy => by
       rw [← iff_eq_eq]
       refine' ⟨fun hx => _, fun hy => _⟩
       · refine' mem_of_superset (inter_mem hx (Inter_mem.2 xy)) _
         rintro a ⟨ha1, ha2⟩
-        simp only [Set.mem_interᵢ, Set.mem_setOf_eq] at *
+        simp only [Set.mem_iInter, Set.mem_setOf_eq] at *
         rw [← funext ha2]
         exact ha1
       · refine' mem_of_superset (inter_mem hy (Inter_mem.2 xy)) _
         rintro a ⟨ha1, ha2⟩
-        simp only [Set.mem_interᵢ, Set.mem_setOf_eq] at *
+        simp only [Set.mem_iInter, Set.mem_setOf_eq] at *
         rw [funext ha2]
         exact ha1 }
 #align first_order.language.ultraproduct.setoid_prestructure FirstOrder.Language.Ultraproduct.setoidPrestructure
Diff
@@ -129,7 +129,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       by
       refine' fun m a => funext (Fin.reverseInduction _ fun i hi => _)
       · simp only [Fin.snoc_last]
-      · simp only [Fin.snoc_cast_succ]
+      · simp only [Fin.snoc_castSucc]
     simp only [← Fin.comp_snoc, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
     · contrapose! h
Diff
@@ -87,8 +87,7 @@ theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
 theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.term β) :
     (t.realize fun i => (x i : (u : Filter α).product M)) = fun a => t.realize fun i => x i a :=
   by
-  convert
-    @term.realize_quotient_mk L _ ((u : Filter α).productSetoid M)
+  convert@term.realize_quotient_mk L _ ((u : Filter α).productSetoid M)
       (ultraproduct.setoid_prestructure M u) _ t x
   ext a
   induction t

Changes in mathlib4

mathlib3
mathlib4
chore: avoid automatically generated instance names (#12270)
Diff
@@ -162,7 +162,7 @@ theorem sentence_realize (φ : L.Sentence) :
 
 nonrec instance Product.instNonempty : Nonempty ((u : Filter α).Product M) :=
   letI : ∀ a, Inhabited (M a) := fun _ => Classical.inhabited_of_nonempty'
-  instNonempty
+  inferInstance
 #align first_order.language.ultraproduct.product.nonempty FirstOrder.Language.Ultraproduct.Product.instNonempty
 
 end Ultraproduct
style: use cases x with | ... instead of cases x; case => ... (#9321)

This converts usages of the pattern

cases h
case inl h' => ...
case inr h' => ...

which derive from mathported code, to the "structured cases" syntax:

cases h with
| inl h' => ...
| inr h' => ...

The case where the subgoals are handled with · instead of case is more contentious (and much more numerous) so I left those alone. This pattern also appears with cases', induction, induction', and rcases. Furthermore, there is a similar transformation for by_cases:

by_cases h : cond
case pos => ...
case neg => ...

is replaced by:

if h : cond then
  ...
else
  ...

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -86,12 +86,9 @@ theorem term_realize_cast {β : Type*} (x : β → ∀ a, M a) (t : L.Term β) :
   convert @Term.realize_quotient_mk' L _ ((u : Filter α).productSetoid M)
       (Ultraproduct.setoidPrestructure M u) _ t x using 2
   ext a
-  induction t
-  case var =>
-    rfl
-  case func _ _ _ t_ih =>
-    simp only [Term.realize, t_ih]
-    rfl
+  induction t with
+  | var => rfl
+  | func _ _ t_ih => simp only [Term.realize, t_ih]; rfl
 #align first_order.language.ultraproduct.term_realize_cast FirstOrder.Language.Ultraproduct.term_realize_cast
 
 variable [∀ a : α, Nonempty (M a)]
doc: Mark named theorems including Compactness Theorem, Halting Problem, Tarski Vaught, Łoś (#8743)
Diff
@@ -154,8 +154,8 @@ theorem realize_formula_cast {β : Type*} (φ : L.Formula β) (x : β → ∀ a,
   exact congr rfl (Subsingleton.elim _ _)
 #align first_order.language.ultraproduct.realize_formula_cast FirstOrder.Language.Ultraproduct.realize_formula_cast
 
-/-- Łoś's Theorem : A sentence is true in an ultraproduct if and only if the set of structures it is
-  true in is in the ultrafilter. -/
+/-- **Łoś's Theorem**: A sentence is true in an ultraproduct if and only if the set of structures
+it is true in is in the ultrafilter. -/
 theorem sentence_realize (φ : L.Sentence) :
     (u : Filter α).Product M ⊨ φ ↔ ∀ᶠ a : α in u, M a ⊨ φ := by
   simp_rw [Sentence.Realize]
feat: add lemma Quotient.exists (#7220)

Also forall_quotient_iff {α : Type*} [r : Setoid α] ... -> Quotient.forall {α : Sort*} {s : Setoid α} ...

Diff
@@ -123,7 +123,7 @@ theorem boundedFormula_realize_cast {β : Type*} {n : ℕ} (φ : L.BoundedFormul
       φ.Realize (fun i : β => (x i : (u : Filter α).Product M))
         (Fin.snoc (((↑) : (∀ a, M a) → (u : Filter α).Product M) ∘ v)
           (m : (u : Filter α).Product M)))
-    · exact forall_quotient_iff
+    · exact Quotient.forall
     have h' :
       ∀ (m : ∀ a, M a) (a : α),
         (fun i : Fin (k + 1) => (Fin.snoc v m : _ → ∀ a, M a) i a) =
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -27,7 +27,7 @@ ultraproduct, Los's theorem
 
 universe u v
 
-variable {α : Type _} (M : α → Type _) (u : Ultrafilter α)
+variable {α : Type*} (M : α → Type*) (u : Ultrafilter α)
 
 open FirstOrder Filter
 
@@ -80,7 +80,7 @@ theorem funMap_cast {n : ℕ} (f : L.Functions n) (x : Fin n → ∀ a, M a) :
   apply funMap_quotient_mk'
 #align first_order.language.ultraproduct.fun_map_cast FirstOrder.Language.Ultraproduct.funMap_cast
 
-theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.Term β) :
+theorem term_realize_cast {β : Type*} (x : β → ∀ a, M a) (t : L.Term β) :
     (t.realize fun i => (x i : (u : Filter α).Product M)) =
       (fun a => t.realize fun i => x i a : (u : Filter α).Product M) := by
   convert @Term.realize_quotient_mk' L _ ((u : Filter α).productSetoid M)
@@ -96,7 +96,7 @@ theorem term_realize_cast {β : Type _} (x : β → ∀ a, M a) (t : L.Term β)
 
 variable [∀ a : α, Nonempty (M a)]
 
-theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormula β n)
+theorem boundedFormula_realize_cast {β : Type*} {n : ℕ} (φ : L.BoundedFormula β n)
     (x : β → ∀ a, M a) (v : Fin n → ∀ a, M a) :
     (φ.Realize (fun i : β => (x i : (u : Filter α).Product M))
         (fun i => (v i : (u : Filter α).Product M))) ↔
@@ -147,7 +147,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
       exact Filter.mem_of_superset h fun a ha => ha (m a)
 #align first_order.language.ultraproduct.bounded_formula_realize_cast FirstOrder.Language.Ultraproduct.boundedFormula_realize_cast
 
-theorem realize_formula_cast {β : Type _} (φ : L.Formula β) (x : β → ∀ a, M a) :
+theorem realize_formula_cast {β : Type*} (φ : L.Formula β) (x : β → ∀ a, M a) :
     (φ.Realize fun i => (x i : (u : Filter α).Product M)) ↔
       ∀ᶠ a : α in u, φ.Realize fun i => x i a := by
   simp_rw [Formula.Realize, ← boundedFormula_realize_cast φ x, iff_eq_eq]
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) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
-
-! This file was ported from Lean 3 source module model_theory.ultraproducts
-! leanprover-community/mathlib commit f1ae620609496a37534c2ab3640b641d5be8b6f0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.ModelTheory.Quotients
 import Mathlib.Order.Filter.Germ
 import Mathlib.Order.Filter.Ultrafilter
 
+#align_import model_theory.ultraproducts from "leanprover-community/mathlib"@"f1ae620609496a37534c2ab3640b641d5be8b6f0"
+
 /-! # Ultraproducts and Łoś's Theorem
 
 ## Main Definitions
chore: bump to nightly-2023-07-01 (#5409)

Open in Gitpod

Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -133,7 +133,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
           Fin.snoc (fun i : Fin k => v i a) (m a) := by
       refine' fun m a => funext (Fin.reverseInduction _ fun i _ => _)
       · simp only [Fin.snoc_last]
-      · simp only [Fin.snoc_castSuccEmb]
+      · simp only [Fin.snoc_castSucc]
     simp only [← Fin.comp_snoc]
     simp only [Function.comp, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
chore: rename Fin.castSucc to Fin.castSuccEmb (#5729)

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -133,7 +133,7 @@ theorem boundedFormula_realize_cast {β : Type _} {n : ℕ} (φ : L.BoundedFormu
           Fin.snoc (fun i : Fin k => v i a) (m a) := by
       refine' fun m a => funext (Fin.reverseInduction _ fun i _ => _)
       · simp only [Fin.snoc_last]
-      · simp only [Fin.snoc_castSucc]
+      · simp only [Fin.snoc_castSuccEmb]
     simp only [← Fin.comp_snoc]
     simp only [Function.comp, ih, h']
     refine' ⟨fun h => _, fun h m => _⟩
feat: port ModelTheory.Ultraproducts (#3976)

Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Dependencies 7 + 330

331 files ported (97.9%)
137084 lines ported (97.8%)
Show graph

The unported dependencies are