model_theory.ultraproducts
⟷
Mathlib.ModelTheory.Ultraproducts
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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 =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -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 =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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) =
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2fe465deb81bcd7ccafa065bb686888a82f15372
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/5dc6092d09e5e489106865241986f7f2ad28d4c8
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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'
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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 =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -35,7 +35,7 @@ universe u v
variable {α : Type _} (M : α → Type _) (u : Ultrafilter α)
-open FirstOrder Filter
+open scoped FirstOrder Filter
open Filter
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/ef95945cd48c932c9e034872bd25c3c220d9c946
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/d4437c68c8d350fc9d4e95e1e174409db35e30d7
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
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>
@@ -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)]
@@ -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]
Quotient.exists
(#7220)
Also forall_quotient_iff {α : Type*} [r : Setoid α] ...
-> Quotient.forall {α : Sort*} {s : Setoid α} ...
@@ -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) =
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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]
@@ -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
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>
@@ -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 => _⟩
@@ -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 => _⟩
The unported dependencies are