data.uliftMathlib.Data.ULift

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Mathbin.Logic.Equiv.Basic
+import Logic.Equiv.Basic
 
 #align_import data.ulift from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module data.ulift
-! leanprover-community/mathlib commit 448144f7ae193a8990cb7473c9e9a01990f64ac7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Logic.Equiv.Basic
 
+#align_import data.ulift from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
+
 /-!
 # Extra lemmas about `ulift` and `plift`
 
Diff
@@ -117,40 +117,56 @@ instance [DecidableEq α] : DecidableEq (ULift α) :=
 instance [IsEmpty α] : IsEmpty (ULift α) :=
   Equiv.ulift.isEmpty
 
+#print ULift.up_injective /-
 theorem up_injective : Injective (@up α) :=
   Equiv.ulift.symm.Injective
 #align ulift.up_injective ULift.up_injective
+-/
 
+#print ULift.up_surjective /-
 theorem up_surjective : Surjective (@up α) :=
   Equiv.ulift.symm.Surjective
 #align ulift.up_surjective ULift.up_surjective
+-/
 
+#print ULift.up_bijective /-
 theorem up_bijective : Bijective (@up α) :=
   Equiv.ulift.symm.Bijective
 #align ulift.up_bijective ULift.up_bijective
+-/
 
+#print ULift.up_inj /-
 @[simp]
 theorem up_inj {x y : α} : up x = up y ↔ x = y :=
   up_injective.eq_iff
 #align ulift.up_inj ULift.up_inj
+-/
 
+#print ULift.down_surjective /-
 theorem down_surjective : Surjective (@down α) :=
   Equiv.ulift.Surjective
 #align ulift.down_surjective ULift.down_surjective
+-/
 
+#print ULift.down_bijective /-
 theorem down_bijective : Bijective (@down α) :=
   Equiv.ulift.Bijective
 #align ulift.down_bijective ULift.down_bijective
+-/
 
+#print ULift.forall /-
 @[simp]
 theorem forall {p : ULift α → Prop} : (∀ x, p x) ↔ ∀ x : α, p (ULift.up x) :=
   up_surjective.forall
 #align ulift.forall ULift.forall
+-/
 
+#print ULift.exists /-
 @[simp]
 theorem exists {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULift.up x) :=
   up_surjective.exists
 #align ulift.exists ULift.exists
+-/
 
 end ULift
 
Diff
@@ -117,84 +117,36 @@ instance [DecidableEq α] : DecidableEq (ULift α) :=
 instance [IsEmpty α] : IsEmpty (ULift α) :=
   Equiv.ulift.isEmpty
 
-/- warning: ulift.up_injective -> ULift.up_injective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}}, Function.Injective.{succ u1, succ (max u1 u2)} α (ULift.{u2, u1} α) (ULift.up.{u2, u1} α)
-but is expected to have type
-  forall {α : Type.{u2}}, Function.Injective.{succ u2, max (succ u2) (succ u1)} α (ULift.{u1, u2} α) (ULift.up.{u1, u2} α)
-Case conversion may be inaccurate. Consider using '#align ulift.up_injective ULift.up_injectiveₓ'. -/
 theorem up_injective : Injective (@up α) :=
   Equiv.ulift.symm.Injective
 #align ulift.up_injective ULift.up_injective
 
-/- warning: ulift.up_surjective -> ULift.up_surjective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}}, Function.Surjective.{succ u1, succ (max u1 u2)} α (ULift.{u2, u1} α) (ULift.up.{u2, u1} α)
-but is expected to have type
-  forall {α : Type.{u2}}, Function.Surjective.{succ u2, max (succ u2) (succ u1)} α (ULift.{u1, u2} α) (ULift.up.{u1, u2} α)
-Case conversion may be inaccurate. Consider using '#align ulift.up_surjective ULift.up_surjectiveₓ'. -/
 theorem up_surjective : Surjective (@up α) :=
   Equiv.ulift.symm.Surjective
 #align ulift.up_surjective ULift.up_surjective
 
-/- warning: ulift.up_bijective -> ULift.up_bijective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}}, Function.Bijective.{succ u1, succ (max u1 u2)} α (ULift.{u2, u1} α) (ULift.up.{u2, u1} α)
-but is expected to have type
-  forall {α : Type.{u2}}, Function.Bijective.{succ u2, max (succ u2) (succ u1)} α (ULift.{u1, u2} α) (ULift.up.{u1, u2} α)
-Case conversion may be inaccurate. Consider using '#align ulift.up_bijective ULift.up_bijectiveₓ'. -/
 theorem up_bijective : Bijective (@up α) :=
   Equiv.ulift.symm.Bijective
 #align ulift.up_bijective ULift.up_bijective
 
-/- warning: ulift.up_inj -> ULift.up_inj is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {x : α} {y : α}, Iff (Eq.{succ (max u1 u2)} (ULift.{u2, u1} α) (ULift.up.{u2, u1} α x) (ULift.up.{u2, u1} α y)) (Eq.{succ u1} α x y)
-but is expected to have type
-  forall {α : Type.{u2}} {x : α} {y : α}, Iff (Eq.{max (succ u2) (succ u1)} (ULift.{u1, u2} α) (ULift.up.{u1, u2} α x) (ULift.up.{u1, u2} α y)) (Eq.{succ u2} α x y)
-Case conversion may be inaccurate. Consider using '#align ulift.up_inj ULift.up_injₓ'. -/
 @[simp]
 theorem up_inj {x y : α} : up x = up y ↔ x = y :=
   up_injective.eq_iff
 #align ulift.up_inj ULift.up_inj
 
-/- warning: ulift.down_surjective -> ULift.down_surjective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}}, Function.Surjective.{succ (max u1 u2), succ u1} (ULift.{u2, u1} α) α (ULift.down.{u2, u1} α)
-but is expected to have type
-  forall {α : Type.{u2}}, Function.Surjective.{max (succ u2) (succ u1), succ u2} (ULift.{u1, u2} α) α (ULift.down.{u1, u2} α)
-Case conversion may be inaccurate. Consider using '#align ulift.down_surjective ULift.down_surjectiveₓ'. -/
 theorem down_surjective : Surjective (@down α) :=
   Equiv.ulift.Surjective
 #align ulift.down_surjective ULift.down_surjective
 
-/- warning: ulift.down_bijective -> ULift.down_bijective is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}}, Function.Bijective.{succ (max u1 u2), succ u1} (ULift.{u2, u1} α) α (ULift.down.{u2, u1} α)
-but is expected to have type
-  forall {α : Type.{u2}}, Function.Bijective.{max (succ u2) (succ u1), succ u2} (ULift.{u1, u2} α) α (ULift.down.{u1, u2} α)
-Case conversion may be inaccurate. Consider using '#align ulift.down_bijective ULift.down_bijectiveₓ'. -/
 theorem down_bijective : Bijective (@down α) :=
   Equiv.ulift.Bijective
 #align ulift.down_bijective ULift.down_bijective
 
-/- warning: ulift.forall -> ULift.forall is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {p : (ULift.{u2, u1} α) -> Prop}, Iff (forall (x : ULift.{u2, u1} α), p x) (forall (x : α), p (ULift.up.{u2, u1} α x))
-but is expected to have type
-  forall {α : Type.{u2}} {p : (ULift.{u1, u2} α) -> Prop}, Iff (forall (x : ULift.{u1, u2} α), p x) (forall (x : α), p (ULift.up.{u1, u2} α x))
-Case conversion may be inaccurate. Consider using '#align ulift.forall ULift.forallₓ'. -/
 @[simp]
 theorem forall {p : ULift α → Prop} : (∀ x, p x) ↔ ∀ x : α, p (ULift.up x) :=
   up_surjective.forall
 #align ulift.forall ULift.forall
 
-/- warning: ulift.exists -> ULift.exists is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {p : (ULift.{u2, u1} α) -> Prop}, Iff (Exists.{succ (max u1 u2)} (ULift.{u2, u1} α) (fun (x : ULift.{u2, u1} α) => p x)) (Exists.{succ u1} α (fun (x : α) => p (ULift.up.{u2, u1} α x)))
-but is expected to have type
-  forall {α : Type.{u2}} {p : (ULift.{u1, u2} α) -> Prop}, Iff (Exists.{max (succ u2) (succ u1)} (ULift.{u1, u2} α) (fun (x : ULift.{u1, u2} α) => p x)) (Exists.{succ u2} α (fun (x : α) => p (ULift.up.{u1, u2} α x)))
-Case conversion may be inaccurate. Consider using '#align ulift.exists ULift.existsₓ'. -/
 @[simp]
 theorem exists {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULift.up x) :=
   up_surjective.exists

Changes in mathlib4

mathlib3
mathlib4
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -75,13 +75,13 @@ theorem «exists» {p : PLift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (PLi
 #align plift.exists PLift.exists
 
 @[simp] lemma map_injective : Injective (PLift.map f) ↔ Injective f :=
-  (Injective.of_comp_iff' _ down_bijective).trans $ up_injective.of_comp_iff _
+  (Injective.of_comp_iff' _ down_bijective).trans <| up_injective.of_comp_iff _
 
 @[simp] lemma map_surjective : Surjective (PLift.map f) ↔ Surjective f :=
-  (down_surjective.of_comp_iff _).trans $ Surjective.of_comp_iff' up_bijective _
+  (down_surjective.of_comp_iff _).trans <| Surjective.of_comp_iff' up_bijective _
 
 @[simp] lemma map_bijective : Bijective (PLift.map f) ↔ Bijective f :=
-  (down_bijective.of_comp_iff _).trans $ Bijective.of_comp_iff' up_bijective _
+  (down_bijective.of_comp_iff _).trans <| Bijective.of_comp_iff' up_bijective _
 
 end PLift
 
@@ -140,14 +140,14 @@ theorem «exists» {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULi
 #align ulift.exists ULift.exists
 
 @[simp] lemma map_injective : Injective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Injective f :=
-  (Injective.of_comp_iff' _ down_bijective).trans $ up_injective.of_comp_iff _
+  (Injective.of_comp_iff' _ down_bijective).trans <| up_injective.of_comp_iff _
 
 @[simp] lemma map_surjective :
     Surjective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Surjective f :=
-  (down_surjective.of_comp_iff _).trans $ Surjective.of_comp_iff' up_bijective _
+  (down_surjective.of_comp_iff _).trans <| Surjective.of_comp_iff' up_bijective _
 
 @[simp] lemma map_bijective : Bijective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Bijective f :=
-  (down_bijective.of_comp_iff _).trans $ Bijective.of_comp_iff' up_bijective _
+  (down_bijective.of_comp_iff _).trans <| Bijective.of_comp_iff' up_bijective _
 
 @[ext]
 theorem ext (x y : ULift α) (h : x.down = y.down) : x = y :=
feat: When Nat.card is zero (#8202)

and lemmas about injectivity/surjectivity of PLift.map/ULift.map.

Diff
@@ -3,6 +3,7 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
+import Mathlib.Control.ULift
 import Mathlib.Logic.Equiv.Basic
 
 #align_import data.ulift from "leanprover-community/mathlib"@"41cf0cc2f528dd40a8f2db167ea4fb37b8fde7f3"
@@ -15,13 +16,13 @@ In this file we provide `Subsingleton`, `Unique`, `DecidableEq`, and `isEmpty` i
 `PLift.exists`.
 -/
 
-universe u v
+universe u v u' v'
 
 open Function
 
 namespace PLift
 
-variable {α : Sort u} {β : Sort v}
+variable {α : Sort u} {β : Sort v} {f : α → β}
 
 instance [Subsingleton α] : Subsingleton (PLift α) :=
   Equiv.plift.subsingleton
@@ -73,11 +74,20 @@ theorem «exists» {p : PLift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (PLi
   up_surjective.exists
 #align plift.exists PLift.exists
 
+@[simp] lemma map_injective : Injective (PLift.map f) ↔ Injective f :=
+  (Injective.of_comp_iff' _ down_bijective).trans $ up_injective.of_comp_iff _
+
+@[simp] lemma map_surjective : Surjective (PLift.map f) ↔ Surjective f :=
+  (down_surjective.of_comp_iff _).trans $ Surjective.of_comp_iff' up_bijective _
+
+@[simp] lemma map_bijective : Bijective (PLift.map f) ↔ Bijective f :=
+  (down_bijective.of_comp_iff _).trans $ Bijective.of_comp_iff' up_bijective _
+
 end PLift
 
 namespace ULift
 
-variable {α : Type u} {β : Type v}
+variable {α : Type u} {β : Type v} {f : α → β}
 
 instance [Subsingleton α] : Subsingleton (ULift α) :=
   Equiv.ulift.subsingleton
@@ -129,6 +139,16 @@ theorem «exists» {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULi
   up_surjective.exists
 #align ulift.exists ULift.exists
 
+@[simp] lemma map_injective : Injective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Injective f :=
+  (Injective.of_comp_iff' _ down_bijective).trans $ up_injective.of_comp_iff _
+
+@[simp] lemma map_surjective :
+    Surjective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Surjective f :=
+  (down_surjective.of_comp_iff _).trans $ Surjective.of_comp_iff' up_bijective _
+
+@[simp] lemma map_bijective : Bijective (ULift.map f : ULift.{u'} α → ULift.{v'} β) ↔ Bijective f :=
+  (down_bijective.of_comp_iff _).trans $ Bijective.of_comp_iff' up_bijective _
+
 @[ext]
 theorem ext (x y : ULift α) (h : x.down = y.down) : x = y :=
   congrArg up h
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -134,7 +134,7 @@ theorem ext (x y : ULift α) (h : x.down = y.down) : x = y :=
   congrArg up h
 #align ulift.ext ULift.ext
 
-theorem ext_iff {α : Type _} (x y : ULift α) : x = y ↔ x.down = y.down :=
+theorem ext_iff {α : Type*} (x y : ULift α) : x = y ↔ x.down = y.down :=
   ⟨congrArg _, ULift.ext _ _⟩
 #align ulift.ext_iff ULift.ext_iff
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module data.ulift
-! leanprover-community/mathlib commit 41cf0cc2f528dd40a8f2db167ea4fb37b8fde7f3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Logic.Equiv.Basic
 
+#align_import data.ulift from "leanprover-community/mathlib"@"41cf0cc2f528dd40a8f2db167ea4fb37b8fde7f3"
+
 /-!
 # Extra lemmas about `ULift` and `PLift`
 
feat: port Algebra.CharP.Basic (#2845)
Diff
@@ -135,5 +135,10 @@ theorem «exists» {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULi
 @[ext]
 theorem ext (x y : ULift α) (h : x.down = y.down) : x = y :=
   congrArg up h
+#align ulift.ext ULift.ext
+
+theorem ext_iff {α : Type _} (x y : ULift α) : x = y ↔ x.down = y.down :=
+  ⟨congrArg _, ULift.ext _ _⟩
+#align ulift.ext_iff ULift.ext_iff
 
 end ULift
feat: port Algebra.Module.ULift (#1880)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -132,5 +132,8 @@ theorem «exists» {p : ULift α → Prop} : (∃ x, p x) ↔ ∃ x : α, p (ULi
   up_surjective.exists
 #align ulift.exists ULift.exists
 
-end ULift
+@[ext]
+theorem ext (x y : ULift α) (h : x.down = y.down) : x = y :=
+  congrArg up h
 
+end ULift
chore: add source headers to ported theory files (#1094)

The script used to do this is included. The yaml file was obtained from https://raw.githubusercontent.com/wiki/leanprover-community/mathlib/mathlib4-port-status.md

Diff
@@ -2,6 +2,11 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
+
+! This file was ported from Lean 3 source module data.ulift
+! leanprover-community/mathlib commit 41cf0cc2f528dd40a8f2db167ea4fb37b8fde7f3
+! Please do not edit these lines, except to modify the commit id
+! if you have ported upstream changes.
 -/
 import Mathlib.Logic.Equiv.Basic
 

Dependencies 17

18 files ported (100.0%)
8007 lines ported (100.0%)

All dependencies are ported!