order.extension.wellMathlib.Order.Extension.Well

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)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Yaël Dillies, Junyan Xu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Junyan Xu
 -/
-import Mathbin.Data.Prod.Lex
-import Mathbin.SetTheory.Ordinal.Arithmetic
+import Data.Prod.Lex
+import SetTheory.Ordinal.Arithmetic
 
 #align_import order.extension.well from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Yaël Dillies, Junyan Xu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Junyan Xu
-
-! This file was ported from Lean 3 source module order.extension.well
-! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Prod.Lex
 import Mathbin.SetTheory.Ordinal.Arithmetic
 
+#align_import order.extension.well from "leanprover-community/mathlib"@"23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6"
+
 /-!
 # Extend a well-founded order to a well-order
 
Diff
@@ -40,8 +40,6 @@ namespace WellFounded
 
 variable (hwf : WellFounded r)
 
-include hwf
-
 #print WellFounded.wellOrderExtension /-
 /-- An arbitrary well order on `α` that extends `r`.
 
@@ -60,9 +58,11 @@ noncomputable def wellOrderExtension : LinearOrder α :=
 #align well_founded.well_order_extension WellFounded.wellOrderExtension
 -/
 
+#print WellFounded.wellOrderExtension.isWellFounded_lt /-
 instance wellOrderExtension.isWellFounded_lt : IsWellFounded α hwf.wellOrderExtension.lt :=
   ⟨InvImage.wf _ <| WellFounded.prod_lex Ordinal.wellFoundedLT.wf WellOrderingRel.isWellOrder.wf⟩
 #align well_founded.well_order_extension.is_well_founded_lt WellFounded.wellOrderExtension.isWellFounded_lt
+-/
 
 #print WellFounded.exists_well_order_ge /-
 /-- Any well-founded relation can be extended to a well-ordering on that type. -/
Diff
@@ -93,13 +93,17 @@ def toWellOrderExtension : α ≃ WellOrderExtension α :=
 noncomputable instance [LT α] [WellFoundedLT α] : LinearOrder (WellOrderExtension α) :=
   (IsWellFounded.wf : @WellFounded α (· < ·)).wellOrderExtension
 
+#print WellOrderExtension.wellFoundedLT /-
 instance WellOrderExtension.wellFoundedLT [LT α] [WellFoundedLT α] :
     WellFoundedLT (WellOrderExtension α) :=
   WellFounded.wellOrderExtension.isWellFounded_lt _
 #align well_order_extension.well_founded_lt WellOrderExtension.wellFoundedLT
+-/
 
+#print toWellOrderExtension_strictMono /-
 theorem toWellOrderExtension_strictMono [Preorder α] [WellFoundedLT α] :
     StrictMono (toWellOrderExtension : α → WellOrderExtension α) := fun a b h =>
   Prod.Lex.left _ _ <| WellFounded.rank_lt_of_rel _ h
 #align to_well_order_extension_strict_mono toWellOrderExtension_strictMono
+-/
 
Diff
@@ -60,12 +60,6 @@ noncomputable def wellOrderExtension : LinearOrder α :=
 #align well_founded.well_order_extension WellFounded.wellOrderExtension
 -/
 
-/- warning: well_founded.well_order_extension.is_well_founded_lt -> WellFounded.wellOrderExtension.isWellFounded_lt is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} {r : α -> α -> Prop} (hwf : WellFounded.{succ u1} α r), IsWellFounded.{u1} α (LinearOrder.Lt.{u1} α (WellFounded.wellOrderExtension.{u1} α r hwf))
-but is expected to have type
-  forall {α : Type.{u1}} {r : α -> α -> Prop} (hwf : WellFounded.{succ u1} α r), IsWellFounded.{u1} α (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (LinearOrder.toPartialOrder.{u1} α (WellFounded.wellOrderExtension.{u1} α r hwf)))))
-Case conversion may be inaccurate. Consider using '#align well_founded.well_order_extension.is_well_founded_lt WellFounded.wellOrderExtension.isWellFounded_ltₓ'. -/
 instance wellOrderExtension.isWellFounded_lt : IsWellFounded α hwf.wellOrderExtension.lt :=
   ⟨InvImage.wf _ <| WellFounded.prod_lex Ordinal.wellFoundedLT.wf WellOrderingRel.isWellOrder.wf⟩
 #align well_founded.well_order_extension.is_well_founded_lt WellFounded.wellOrderExtension.isWellFounded_lt
@@ -99,23 +93,11 @@ def toWellOrderExtension : α ≃ WellOrderExtension α :=
 noncomputable instance [LT α] [WellFoundedLT α] : LinearOrder (WellOrderExtension α) :=
   (IsWellFounded.wf : @WellFounded α (· < ·)).wellOrderExtension
 
-/- warning: well_order_extension.well_founded_lt -> WellOrderExtension.wellFoundedLT is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : LT.{u1} α] [_inst_2 : WellFoundedLT.{u1} α _inst_1], WellFoundedLT.{u1} (WellOrderExtension.{u1} α) (Preorder.toHasLt.{u1} (WellOrderExtension.{u1} α) (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (LinearOrder.toLattice.{u1} (WellOrderExtension.{u1} α) (WellOrderExtension.linearOrder.{u1} α _inst_1 _inst_2))))))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : LT.{u1} α] [_inst_2 : WellFoundedLT.{u1} α _inst_1], WellFoundedLT.{u1} (WellOrderExtension.{u1} α) (Preorder.toLT.{u1} (WellOrderExtension.{u1} α) (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α _inst_1 _inst_2)))))))
-Case conversion may be inaccurate. Consider using '#align well_order_extension.well_founded_lt WellOrderExtension.wellFoundedLTₓ'. -/
 instance WellOrderExtension.wellFoundedLT [LT α] [WellFoundedLT α] :
     WellFoundedLT (WellOrderExtension α) :=
   WellFounded.wellOrderExtension.isWellFounded_lt _
 #align well_order_extension.well_founded_lt WellOrderExtension.wellFoundedLT
 
-/- warning: to_well_order_extension_strict_mono -> toWellOrderExtension_strictMono is a dubious translation:
-lean 3 declaration is
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toHasLt.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (LinearOrder.toLattice.{u1} (WellOrderExtension.{u1} α) (WellOrderExtension.linearOrder.{u1} α (Preorder.toHasLt.{u1} α _inst_1) _inst_2))))) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) => α -> (WellOrderExtension.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
-but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toLT.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α (Preorder.toLT.{u1} α _inst_1) _inst_2)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => WellOrderExtension.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
-Case conversion may be inaccurate. Consider using '#align to_well_order_extension_strict_mono toWellOrderExtension_strictMonoₓ'. -/
 theorem toWellOrderExtension_strictMono [Preorder α] [WellFoundedLT α] :
     StrictMono (toWellOrderExtension : α → WellOrderExtension α) := fun a b h =>
   Prod.Lex.left _ _ <| WellFounded.rank_lt_of_rel _ h
Diff
@@ -114,7 +114,7 @@ instance WellOrderExtension.wellFoundedLT [LT α] [WellFoundedLT α] :
 lean 3 declaration is
   forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toHasLt.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (LinearOrder.toLattice.{u1} (WellOrderExtension.{u1} α) (WellOrderExtension.linearOrder.{u1} α (Preorder.toHasLt.{u1} α _inst_1) _inst_2))))) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) => α -> (WellOrderExtension.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
 but is expected to have type
-  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toLT.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α (Preorder.toLT.{u1} α _inst_1) _inst_2)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => WellOrderExtension.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toLT.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α (Preorder.toLT.{u1} α _inst_1) _inst_2)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => WellOrderExtension.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
 Case conversion may be inaccurate. Consider using '#align to_well_order_extension_strict_mono toWellOrderExtension_strictMonoₓ'. -/
 theorem toWellOrderExtension_strictMono [Preorder α] [WellFoundedLT α] :
     StrictMono (toWellOrderExtension : α → WellOrderExtension α) := fun a b h =>
Diff
@@ -99,17 +99,25 @@ def toWellOrderExtension : α ≃ WellOrderExtension α :=
 noncomputable instance [LT α] [WellFoundedLT α] : LinearOrder (WellOrderExtension α) :=
   (IsWellFounded.wf : @WellFounded α (· < ·)).wellOrderExtension
 
-#print WellOrderExtension.wellFoundedLT /-
+/- warning: well_order_extension.well_founded_lt -> WellOrderExtension.wellFoundedLT is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : LT.{u1} α] [_inst_2 : WellFoundedLT.{u1} α _inst_1], WellFoundedLT.{u1} (WellOrderExtension.{u1} α) (Preorder.toHasLt.{u1} (WellOrderExtension.{u1} α) (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (LinearOrder.toLattice.{u1} (WellOrderExtension.{u1} α) (WellOrderExtension.linearOrder.{u1} α _inst_1 _inst_2))))))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : LT.{u1} α] [_inst_2 : WellFoundedLT.{u1} α _inst_1], WellFoundedLT.{u1} (WellOrderExtension.{u1} α) (Preorder.toLT.{u1} (WellOrderExtension.{u1} α) (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α _inst_1 _inst_2)))))))
+Case conversion may be inaccurate. Consider using '#align well_order_extension.well_founded_lt WellOrderExtension.wellFoundedLTₓ'. -/
 instance WellOrderExtension.wellFoundedLT [LT α] [WellFoundedLT α] :
     WellFoundedLT (WellOrderExtension α) :=
   WellFounded.wellOrderExtension.isWellFounded_lt _
 #align well_order_extension.well_founded_lt WellOrderExtension.wellFoundedLT
--/
 
-#print toWellOrderExtension_strictMono /-
+/- warning: to_well_order_extension_strict_mono -> toWellOrderExtension_strictMono is a dubious translation:
+lean 3 declaration is
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toHasLt.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (LinearOrder.toLattice.{u1} (WellOrderExtension.{u1} α) (WellOrderExtension.linearOrder.{u1} α (Preorder.toHasLt.{u1} α _inst_1) _inst_2))))) (coeFn.{succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (fun (_x : Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) => α -> (WellOrderExtension.{u1} α)) (Equiv.hasCoeToFun.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
+but is expected to have type
+  forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] [_inst_2 : WellFoundedLT.{u1} α (Preorder.toLT.{u1} α _inst_1)], StrictMono.{u1, u1} α (WellOrderExtension.{u1} α) _inst_1 (PartialOrder.toPreorder.{u1} (WellOrderExtension.{u1} α) (SemilatticeInf.toPartialOrder.{u1} (WellOrderExtension.{u1} α) (Lattice.toSemilatticeInf.{u1} (WellOrderExtension.{u1} α) (DistribLattice.toLattice.{u1} (WellOrderExtension.{u1} α) (instDistribLattice.{u1} (WellOrderExtension.{u1} α) (instLinearOrderWellOrderExtension.{u1} α (Preorder.toLT.{u1} α _inst_1) _inst_2)))))) (FunLike.coe.{succ u1, succ u1, succ u1} (Equiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => WellOrderExtension.{u1} α) _x) (Equiv.instFunLikeEquiv.{succ u1, succ u1} α (WellOrderExtension.{u1} α)) (toWellOrderExtension.{u1} α))
+Case conversion may be inaccurate. Consider using '#align to_well_order_extension_strict_mono toWellOrderExtension_strictMonoₓ'. -/
 theorem toWellOrderExtension_strictMono [Preorder α] [WellFoundedLT α] :
     StrictMono (toWellOrderExtension : α → WellOrderExtension α) := fun a b h =>
   Prod.Lex.left _ _ <| WellFounded.rank_lt_of_rel _ h
 #align to_well_order_extension_strict_mono toWellOrderExtension_strictMono
--/
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Junyan Xu
 
 ! This file was ported from Lean 3 source module order.extension.well
-! leanprover-community/mathlib commit 2751ae214172a40dfdd28dcbe91767868e0d8b81
+! leanprover-community/mathlib commit 23aa88e32dcc9d2a24cca7bc23268567ed4cd7d6
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.SetTheory.Ordinal.Arithmetic
 /-!
 # Extend a well-founded order to a well-order
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 This file constructs a well-order (linear well-founded order) which is an extension of a given
 well-founded order.
 

Changes in mathlib4

mathlib3
mathlib4
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
@@ -72,7 +72,7 @@ theorem exists_well_order_ge : ∃ s, r ≤ s ∧ IsWellOrder α s :=
 end WellFounded
 
 /-- A type alias for `α`, intended to extend a well-founded order on `α` to a well-order. -/
-def WellOrderExtension (α : Type _) : Type _ := α
+def WellOrderExtension (α : Type*) : Type _ := α
 #align well_order_extension WellOrderExtension
 
 instance [Inhabited α] : Inhabited (WellOrderExtension α) := ‹_›
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,15 +2,12 @@
 Copyright (c) 2022 Yaël Dillies, Junyan Xu. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yaël Dillies, Junyan Xu
-
-! This file was ported from Lean 3 source module order.extension.well
-! leanprover-community/mathlib commit 740acc0e6f9adf4423f92a485d0456fc271482da
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Prod.Lex
 import Mathlib.SetTheory.Ordinal.Arithmetic
 
+#align_import order.extension.well from "leanprover-community/mathlib"@"740acc0e6f9adf4423f92a485d0456fc271482da"
+
 /-!
 # Extend a well-founded order to a well-order
 
chore: fix grammar 3/3 (#5003)

Part 3 of #5001

Diff
@@ -54,7 +54,7 @@ necessarily injective but respects the order `r`; the other map is the identity
 chosen well-order on `α`), which is injective but doesn't respect `r`.
 
 By taking the lexicographic product of the two, we get both properties, so we can pull it back and
-get an well-order that extend our original order `r`. Another way to view this is that we choose an
+get a well-order that extend our original order `r`. Another way to view this is that we choose an
 arbitrary well-order to serve as a tiebreak between two elements of same rank.
 -/
 noncomputable def wellOrderExtension : LinearOrder α :=
feat: port Order.Extension.Well (#2333)

Dependencies 7 + 307

308 files ported (97.8%)
127668 lines ported (97.7%)
Show graph

The unported dependencies are