data.ulift
⟷
Mathlib.Data.ULift
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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`
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -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 :=
Nat.card
is zero (#8202)
and lemmas about injectivity/surjectivity of PLift.map
/ULift.map
.
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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`
@@ -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
@@ -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
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
@@ -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
All dependencies are ported!