order.prop_instancesMathlib.Order.PropInstances

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)

(last sync)

fix(*): add missing classical tactics and decidable arguments (#18277)

As discussed in this Zulip thread, the classical tactic is buggy in Mathlib3, and "leaks" into subsequent declarations.

This doesn't port well, as the bug is fixed in lean 4.

This PR installs a temporary hack to contain these leaks, fixes all of the correponding breakages, then reverts the hack.

The result is that the new classical tactics in the diff are not needed in Lean 3, but will be needed in Lean 4.

In a future PR, I will try committing the hack itself; but in the meantime, these files are very close to (if not beyond) the port, so the sooner they are fixed the better.

Diff
@@ -59,6 +59,7 @@ lemma disjoint_iff [Π i, order_bot (α' i)] {f g : Π i, α' i} :
 begin
   split,
   { intros h i x hf hg,
+    classical,
     refine (update_le_iff.mp $
     -- this line doesn't work
       h (update_le_iff.mpr ⟨hf, λ _ _, _⟩) (update_le_iff.mpr ⟨hg, λ _ _, _⟩)).1,
@@ -85,5 +86,6 @@ codisjoint_iff_le_sup.trans $ forall_const _
 @[simp] lemma Prop.is_compl_iff {P Q : Prop} : is_compl P Q ↔ ¬(P ↔ Q) :=
 begin
   rw [is_compl_iff, Prop.disjoint_iff, Prop.codisjoint_iff, not_iff],
+  classical,
   tauto,
 end

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -20,9 +20,9 @@ Instances on `Prop` such as `distrib_lattice`, `bounded_order`, `linear_order`.
 -/
 
 
-#print Prop.distribLattice /-
+#print Prop.instDistribLattice /-
 /-- Propositions form a distributive lattice. -/
-instance Prop.distribLattice : DistribLattice Prop :=
+instance Prop.instDistribLattice : DistribLattice Prop :=
   { Prop.partialOrder with
     sup := Or
     le_sup_left := @Or.inl
@@ -33,18 +33,18 @@ instance Prop.distribLattice : DistribLattice Prop :=
     inf_le_right := @And.right
     le_inf := fun a b c Hab Hac Ha => And.intro (Hab Ha) (Hac Ha)
     le_sup_inf := fun a b c => or_and_left.2 }
-#align Prop.distrib_lattice Prop.distribLattice
+#align Prop.distrib_lattice Prop.instDistribLattice
 -/
 
-#print Prop.boundedOrder /-
+#print Prop.instBoundedOrder /-
 /-- Propositions form a bounded order. -/
-instance Prop.boundedOrder : BoundedOrder Prop
+instance Prop.instBoundedOrder : BoundedOrder Prop
     where
   top := True
   le_top a Ha := True.intro
   bot := False
   bot_le := @False.elim
-#align Prop.bounded_order Prop.boundedOrder
+#align Prop.bounded_order Prop.instBoundedOrder
 -/
 
 #print Prop.bot_eq_false /-
Diff
@@ -66,7 +66,8 @@ instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
 -/
 
 #print Prop.linearOrder /-
-noncomputable instance Prop.linearOrder : LinearOrder Prop := by classical
+noncomputable instance Prop.linearOrder : LinearOrder Prop := by
+  classical exact Lattice.toLinearOrder Prop
 #align Prop.linear_order Prop.linearOrder
 -/
 
@@ -95,7 +96,13 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
   constructor
   · intro h i x hf hg
     classical
-  -- this line doesn't work
+    refine'
+      (update_le_iff.mp <|-- this line doesn't work
+            h
+            (update_le_iff.mpr ⟨hf, fun _ _ => _⟩) (update_le_iff.mpr ⟨hg, fun _ _ => _⟩)).1
+    · exact ⊥
+    · exact bot_le
+    · exact bot_le
   · intro h x hf hg i
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
@@ -136,7 +143,7 @@ theorem Prop.codisjoint_iff {P Q : Prop} : Codisjoint P Q ↔ P ∨ Q :=
 theorem Prop.isCompl_iff {P Q : Prop} : IsCompl P Q ↔ ¬(P ↔ Q) :=
   by
   rw [isCompl_iff, Prop.disjoint_iff, Prop.codisjoint_iff, not_iff]
-  classical
+  classical tauto
 #align Prop.is_compl_iff Prop.isCompl_iff
 -/
 
Diff
@@ -66,8 +66,7 @@ instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
 -/
 
 #print Prop.linearOrder /-
-noncomputable instance Prop.linearOrder : LinearOrder Prop := by
-  classical exact Lattice.toLinearOrder Prop
+noncomputable instance Prop.linearOrder : LinearOrder Prop := by classical
 #align Prop.linear_order Prop.linearOrder
 -/
 
@@ -96,13 +95,7 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
   constructor
   · intro h i x hf hg
     classical
-    refine'
-      (update_le_iff.mp <|-- this line doesn't work
-            h
-            (update_le_iff.mpr ⟨hf, fun _ _ => _⟩) (update_le_iff.mpr ⟨hg, fun _ _ => _⟩)).1
-    · exact ⊥
-    · exact bot_le
-    · exact bot_le
+  -- this line doesn't work
   · intro h x hf hg i
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
@@ -143,7 +136,7 @@ theorem Prop.codisjoint_iff {P Q : Prop} : Codisjoint P Q ↔ P ∨ Q :=
 theorem Prop.isCompl_iff {P Q : Prop} : IsCompl P Q ↔ ¬(P ↔ Q) :=
   by
   rw [isCompl_iff, Prop.disjoint_iff, Prop.codisjoint_iff, not_iff]
-  classical tauto
+  classical
 #align Prop.is_compl_iff Prop.isCompl_iff
 -/
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
 -/
-import Mathbin.Order.Disjoint
-import Mathbin.Order.WithBot
+import Order.Disjoint
+import Order.WithBot
 
 #align_import order.prop_instances from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
-
-! This file was ported from Lean 3 source module order.prop_instances
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Order.Disjoint
 import Mathbin.Order.WithBot
 
+#align_import order.prop_instances from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
+
 /-!
 
 # The order on `Prop`
Diff
@@ -50,13 +50,17 @@ instance Prop.boundedOrder : BoundedOrder Prop
 #align Prop.bounded_order Prop.boundedOrder
 -/
 
+#print Prop.bot_eq_false /-
 theorem Prop.bot_eq_false : (⊥ : Prop) = False :=
   rfl
 #align Prop.bot_eq_false Prop.bot_eq_false
+-/
 
+#print Prop.top_eq_true /-
 theorem Prop.top_eq_true : (⊤ : Prop) = True :=
   rfl
 #align Prop.top_eq_true Prop.top_eq_true
+-/
 
 #print Prop.le_isTotal /-
 instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
@@ -70,15 +74,19 @@ noncomputable instance Prop.linearOrder : LinearOrder Prop := by
 #align Prop.linear_order Prop.linearOrder
 -/
 
+#print sup_Prop_eq /-
 @[simp]
 theorem sup_Prop_eq : (· ⊔ ·) = (· ∨ ·) :=
   rfl
 #align sup_Prop_eq sup_Prop_eq
+-/
 
+#print inf_Prop_eq /-
 @[simp]
 theorem inf_Prop_eq : (· ⊓ ·) = (· ∧ ·) :=
   rfl
 #align inf_Prop_eq inf_Prop_eq
+-/
 
 namespace Pi
 
Diff
@@ -91,13 +91,13 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
   constructor
   · intro h i x hf hg
     classical
-      refine'
-        (update_le_iff.mp <|-- this line doesn't work
-              h
-              (update_le_iff.mpr ⟨hf, fun _ _ => _⟩) (update_le_iff.mpr ⟨hg, fun _ _ => _⟩)).1
-      · exact ⊥
-      · exact bot_le
-      · exact bot_le
+    refine'
+      (update_le_iff.mp <|-- this line doesn't work
+            h
+            (update_le_iff.mpr ⟨hf, fun _ _ => _⟩) (update_le_iff.mpr ⟨hg, fun _ _ => _⟩)).1
+    · exact ⊥
+    · exact bot_le
+    · exact bot_le
   · intro h x hf hg i
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
Diff
@@ -84,6 +84,7 @@ namespace Pi
 
 variable {ι : Type _} {α' : ι → Type _} [∀ i, PartialOrder (α' i)]
 
+#print Pi.disjoint_iff /-
 theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     Disjoint f g ↔ ∀ i, Disjoint (f i) (g i) :=
   by
@@ -100,16 +101,21 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
   · intro h x hf hg i
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
+-/
 
+#print Pi.codisjoint_iff /-
 theorem codisjoint_iff [∀ i, OrderTop (α' i)] {f g : ∀ i, α' i} :
     Codisjoint f g ↔ ∀ i, Codisjoint (f i) (g i) :=
   @disjoint_iff _ (fun i => (α' i)ᵒᵈ) _ _ _ _
 #align pi.codisjoint_iff Pi.codisjoint_iff
+-/
 
+#print Pi.isCompl_iff /-
 theorem isCompl_iff [∀ i, BoundedOrder (α' i)] {f g : ∀ i, α' i} :
     IsCompl f g ↔ ∀ i, IsCompl (f i) (g i) := by
   simp_rw [isCompl_iff, disjoint_iff, codisjoint_iff, forall_and]
 #align pi.is_compl_iff Pi.isCompl_iff
+-/
 
 end Pi
 
Diff
@@ -50,22 +50,10 @@ instance Prop.boundedOrder : BoundedOrder Prop
 #align Prop.bounded_order Prop.boundedOrder
 -/
 
-/- warning: Prop.bot_eq_false -> Prop.bot_eq_false is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Prop (Bot.bot.{0} Prop (OrderBot.toHasBot.{0} Prop Prop.le (BoundedOrder.toOrderBot.{0} Prop Prop.le Prop.boundedOrder))) False
-but is expected to have type
-  Eq.{1} Prop (Bot.bot.{0} Prop (OrderBot.toBot.{0} Prop Prop.le (BoundedOrder.toOrderBot.{0} Prop Prop.le Prop.boundedOrder))) False
-Case conversion may be inaccurate. Consider using '#align Prop.bot_eq_false Prop.bot_eq_falseₓ'. -/
 theorem Prop.bot_eq_false : (⊥ : Prop) = False :=
   rfl
 #align Prop.bot_eq_false Prop.bot_eq_false
 
-/- warning: Prop.top_eq_true -> Prop.top_eq_true is a dubious translation:
-lean 3 declaration is
-  Eq.{1} Prop (Top.top.{0} Prop (OrderTop.toHasTop.{0} Prop Prop.le (BoundedOrder.toOrderTop.{0} Prop Prop.le Prop.boundedOrder))) True
-but is expected to have type
-  Eq.{1} Prop (Top.top.{0} Prop (OrderTop.toTop.{0} Prop Prop.le (BoundedOrder.toOrderTop.{0} Prop Prop.le Prop.boundedOrder))) True
-Case conversion may be inaccurate. Consider using '#align Prop.top_eq_true Prop.top_eq_trueₓ'. -/
 theorem Prop.top_eq_true : (⊤ : Prop) = True :=
   rfl
 #align Prop.top_eq_true Prop.top_eq_true
@@ -82,23 +70,11 @@ noncomputable instance Prop.linearOrder : LinearOrder Prop := by
 #align Prop.linear_order Prop.linearOrder
 -/
 
-/- warning: sup_Prop_eq -> sup_Prop_eq is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Prop -> Prop -> Prop) (Sup.sup.{0} Prop (SemilatticeSup.toHasSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) Or
-but is expected to have type
-  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.236 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.238 : Prop) => Sup.sup.{0} Prop (SemilatticeSup.toSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice))) x._@.Mathlib.Order.PropInstances._hyg.236 x._@.Mathlib.Order.PropInstances._hyg.238) (fun (x._@.Mathlib.Order.PropInstances._hyg.251 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.253 : Prop) => Or x._@.Mathlib.Order.PropInstances._hyg.251 x._@.Mathlib.Order.PropInstances._hyg.253)
-Case conversion may be inaccurate. Consider using '#align sup_Prop_eq sup_Prop_eqₓ'. -/
 @[simp]
 theorem sup_Prop_eq : (· ⊔ ·) = (· ∨ ·) :=
   rfl
 #align sup_Prop_eq sup_Prop_eq
 
-/- warning: inf_Prop_eq -> inf_Prop_eq is a dubious translation:
-lean 3 declaration is
-  Eq.{1} (Prop -> Prop -> Prop) (Inf.inf.{0} Prop (SemilatticeInf.toHasInf.{0} Prop (Lattice.toSemilatticeInf.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) And
-but is expected to have type
-  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.272 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.274 : Prop) => Inf.inf.{0} Prop (Lattice.toInf.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice)) x._@.Mathlib.Order.PropInstances._hyg.272 x._@.Mathlib.Order.PropInstances._hyg.274) (fun (x._@.Mathlib.Order.PropInstances._hyg.287 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.289 : Prop) => And x._@.Mathlib.Order.PropInstances._hyg.287 x._@.Mathlib.Order.PropInstances._hyg.289)
-Case conversion may be inaccurate. Consider using '#align inf_Prop_eq inf_Prop_eqₓ'. -/
 @[simp]
 theorem inf_Prop_eq : (· ⊓ ·) = (· ∧ ·) :=
   rfl
@@ -108,12 +84,6 @@ namespace Pi
 
 variable {ι : Type _} {α' : ι → Type _} [∀ i, PartialOrder (α' i)]
 
-/- warning: pi.disjoint_iff -> Pi.disjoint_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderBot.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Disjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderBot.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Disjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-but is expected to have type
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderBot.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Disjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderBot.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Disjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-Case conversion may be inaccurate. Consider using '#align pi.disjoint_iff Pi.disjoint_iffₓ'. -/
 theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     Disjoint f g ↔ ∀ i, Disjoint (f i) (g i) :=
   by
@@ -131,23 +101,11 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
 
-/- warning: pi.codisjoint_iff -> Pi.codisjoint_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderTop.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Codisjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderTop.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Codisjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-but is expected to have type
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderTop.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Codisjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderTop.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Codisjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-Case conversion may be inaccurate. Consider using '#align pi.codisjoint_iff Pi.codisjoint_iffₓ'. -/
 theorem codisjoint_iff [∀ i, OrderTop (α' i)] {f g : ∀ i, α' i} :
     Codisjoint f g ↔ ∀ i, Codisjoint (f i) (g i) :=
   @disjoint_iff _ (fun i => (α' i)ᵒᵈ) _ _ _ _
 #align pi.codisjoint_iff Pi.codisjoint_iff
 
-/- warning: pi.is_compl_iff -> Pi.isCompl_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), BoundedOrder.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (IsCompl.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.boundedOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), IsCompl.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-but is expected to have type
-  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), BoundedOrder.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (IsCompl.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.boundedOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), IsCompl.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
-Case conversion may be inaccurate. Consider using '#align pi.is_compl_iff Pi.isCompl_iffₓ'. -/
 theorem isCompl_iff [∀ i, BoundedOrder (α' i)] {f g : ∀ i, α' i} :
     IsCompl f g ↔ ∀ i, IsCompl (f i) (g i) := by
   simp_rw [isCompl_iff, disjoint_iff, codisjoint_iff, forall_and]
Diff
@@ -72,9 +72,7 @@ theorem Prop.top_eq_true : (⊤ : Prop) = True :=
 
 #print Prop.le_isTotal /-
 instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
-  ⟨fun p q => by
-    change (p → q) ∨ (q → p)
-    tauto⟩
+  ⟨fun p q => by change (p → q) ∨ (q → p); tauto⟩
 #align Prop.le_is_total Prop.le_isTotal
 -/
 
Diff
@@ -110,7 +110,12 @@ namespace Pi
 
 variable {ι : Type _} {α' : ι → Type _} [∀ i, PartialOrder (α' i)]
 
-#print Pi.disjoint_iff /-
+/- warning: pi.disjoint_iff -> Pi.disjoint_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderBot.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Disjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderBot.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Disjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+but is expected to have type
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderBot.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Disjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderBot.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Disjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+Case conversion may be inaccurate. Consider using '#align pi.disjoint_iff Pi.disjoint_iffₓ'. -/
 theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     Disjoint f g ↔ ∀ i, Disjoint (f i) (g i) :=
   by
@@ -127,21 +132,28 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
   · intro h x hf hg i
     apply h i (hf i) (hg i)
 #align pi.disjoint_iff Pi.disjoint_iff
--/
 
-#print Pi.codisjoint_iff /-
+/- warning: pi.codisjoint_iff -> Pi.codisjoint_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderTop.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Codisjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderTop.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Codisjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+but is expected to have type
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), OrderTop.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (Codisjoint.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.orderTop.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), Codisjoint.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+Case conversion may be inaccurate. Consider using '#align pi.codisjoint_iff Pi.codisjoint_iffₓ'. -/
 theorem codisjoint_iff [∀ i, OrderTop (α' i)] {f g : ∀ i, α' i} :
     Codisjoint f g ↔ ∀ i, Codisjoint (f i) (g i) :=
   @disjoint_iff _ (fun i => (α' i)ᵒᵈ) _ _ _ _
 #align pi.codisjoint_iff Pi.codisjoint_iff
--/
 
-#print Pi.isCompl_iff /-
+/- warning: pi.is_compl_iff -> Pi.isCompl_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), BoundedOrder.{u2} (α' i) (Preorder.toHasLe.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (IsCompl.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.boundedOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toHasLe.{u2} ((fun (i : ι) => (fun (i : ι) => (fun (i : ι) => α' i) i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), IsCompl.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+but is expected to have type
+  forall {ι : Type.{u1}} {α' : ι -> Type.{u2}} [_inst_1 : forall (i : ι), PartialOrder.{u2} (α' i)] [_inst_2 : forall (i : ι), BoundedOrder.{u2} (α' i) (Preorder.toLE.{u2} (α' i) (PartialOrder.toPreorder.{u2} (α' i) (_inst_1 i)))] {f : forall (i : ι), α' i} {g : forall (i : ι), α' i}, Iff (IsCompl.{max u1 u2} (forall (i : ι), α' i) (Pi.partialOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => _inst_1 i)) (Pi.boundedOrder.{u1, u2} ι (fun (i : ι) => α' i) (fun (i : ι) => Preorder.toLE.{u2} ((fun (i : ι) => (fun (i : ι) => α' i) i) i) ((fun (i : ι) => PartialOrder.toPreorder.{u2} ((fun (i : ι) => α' i) i) ((fun (i : ι) => _inst_1 i) i)) i)) (fun (i : ι) => _inst_2 i)) f g) (forall (i : ι), IsCompl.{u2} (α' i) (_inst_1 i) (_inst_2 i) (f i) (g i))
+Case conversion may be inaccurate. Consider using '#align pi.is_compl_iff Pi.isCompl_iffₓ'. -/
 theorem isCompl_iff [∀ i, BoundedOrder (α' i)] {f g : ∀ i, α' i} :
     IsCompl f g ↔ ∀ i, IsCompl (f i) (g i) := by
   simp_rw [isCompl_iff, disjoint_iff, codisjoint_iff, forall_and]
 #align pi.is_compl_iff Pi.isCompl_iff
--/
 
 end Pi
 
Diff
@@ -88,7 +88,7 @@ noncomputable instance Prop.linearOrder : LinearOrder Prop := by
 lean 3 declaration is
   Eq.{1} (Prop -> Prop -> Prop) (Sup.sup.{0} Prop (SemilatticeSup.toHasSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) Or
 but is expected to have type
-  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.307 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.309 : Prop) => Sup.sup.{0} Prop (SemilatticeSup.toSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice))) x._@.Mathlib.Order.PropInstances._hyg.307 x._@.Mathlib.Order.PropInstances._hyg.309) (fun (x._@.Mathlib.Order.PropInstances._hyg.322 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.324 : Prop) => Or x._@.Mathlib.Order.PropInstances._hyg.322 x._@.Mathlib.Order.PropInstances._hyg.324)
+  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.236 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.238 : Prop) => Sup.sup.{0} Prop (SemilatticeSup.toSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice))) x._@.Mathlib.Order.PropInstances._hyg.236 x._@.Mathlib.Order.PropInstances._hyg.238) (fun (x._@.Mathlib.Order.PropInstances._hyg.251 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.253 : Prop) => Or x._@.Mathlib.Order.PropInstances._hyg.251 x._@.Mathlib.Order.PropInstances._hyg.253)
 Case conversion may be inaccurate. Consider using '#align sup_Prop_eq sup_Prop_eqₓ'. -/
 @[simp]
 theorem sup_Prop_eq : (· ⊔ ·) = (· ∨ ·) :=
@@ -99,7 +99,7 @@ theorem sup_Prop_eq : (· ⊔ ·) = (· ∨ ·) :=
 lean 3 declaration is
   Eq.{1} (Prop -> Prop -> Prop) (Inf.inf.{0} Prop (SemilatticeInf.toHasInf.{0} Prop (Lattice.toSemilatticeInf.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) And
 but is expected to have type
-  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.343 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.345 : Prop) => Inf.inf.{0} Prop (Lattice.toInf.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice)) x._@.Mathlib.Order.PropInstances._hyg.343 x._@.Mathlib.Order.PropInstances._hyg.345) (fun (x._@.Mathlib.Order.PropInstances._hyg.358 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.360 : Prop) => And x._@.Mathlib.Order.PropInstances._hyg.358 x._@.Mathlib.Order.PropInstances._hyg.360)
+  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.272 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.274 : Prop) => Inf.inf.{0} Prop (Lattice.toInf.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice)) x._@.Mathlib.Order.PropInstances._hyg.272 x._@.Mathlib.Order.PropInstances._hyg.274) (fun (x._@.Mathlib.Order.PropInstances._hyg.287 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.289 : Prop) => And x._@.Mathlib.Order.PropInstances._hyg.287 x._@.Mathlib.Order.PropInstances._hyg.289)
 Case conversion may be inaccurate. Consider using '#align inf_Prop_eq inf_Prop_eqₓ'. -/
 @[simp]
 theorem inf_Prop_eq : (· ⊓ ·) = (· ∧ ·) :=
Diff
@@ -84,19 +84,27 @@ noncomputable instance Prop.linearOrder : LinearOrder Prop := by
 #align Prop.linear_order Prop.linearOrder
 -/
 
-#print sup_Prop_eq /-
+/- warning: sup_Prop_eq -> sup_Prop_eq is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Prop -> Prop -> Prop) (Sup.sup.{0} Prop (SemilatticeSup.toHasSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) Or
+but is expected to have type
+  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.307 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.309 : Prop) => Sup.sup.{0} Prop (SemilatticeSup.toSup.{0} Prop (Lattice.toSemilatticeSup.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice))) x._@.Mathlib.Order.PropInstances._hyg.307 x._@.Mathlib.Order.PropInstances._hyg.309) (fun (x._@.Mathlib.Order.PropInstances._hyg.322 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.324 : Prop) => Or x._@.Mathlib.Order.PropInstances._hyg.322 x._@.Mathlib.Order.PropInstances._hyg.324)
+Case conversion may be inaccurate. Consider using '#align sup_Prop_eq sup_Prop_eqₓ'. -/
 @[simp]
 theorem sup_Prop_eq : (· ⊔ ·) = (· ∨ ·) :=
   rfl
 #align sup_Prop_eq sup_Prop_eq
--/
 
-#print inf_Prop_eq /-
+/- warning: inf_Prop_eq -> inf_Prop_eq is a dubious translation:
+lean 3 declaration is
+  Eq.{1} (Prop -> Prop -> Prop) (Inf.inf.{0} Prop (SemilatticeInf.toHasInf.{0} Prop (Lattice.toSemilatticeInf.{0} Prop (LinearOrder.toLattice.{0} Prop Prop.linearOrder)))) And
+but is expected to have type
+  Eq.{1} (Prop -> Prop -> Prop) (fun (x._@.Mathlib.Order.PropInstances._hyg.343 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.345 : Prop) => Inf.inf.{0} Prop (Lattice.toInf.{0} Prop (DistribLattice.toLattice.{0} Prop Prop.distribLattice)) x._@.Mathlib.Order.PropInstances._hyg.343 x._@.Mathlib.Order.PropInstances._hyg.345) (fun (x._@.Mathlib.Order.PropInstances._hyg.358 : Prop) (x._@.Mathlib.Order.PropInstances._hyg.360 : Prop) => And x._@.Mathlib.Order.PropInstances._hyg.358 x._@.Mathlib.Order.PropInstances._hyg.360)
+Case conversion may be inaccurate. Consider using '#align inf_Prop_eq inf_Prop_eqₓ'. -/
 @[simp]
 theorem inf_Prop_eq : (· ⊓ ·) = (· ∧ ·) :=
   rfl
 #align inf_Prop_eq inf_Prop_eq
--/
 
 namespace Pi
 

Changes in mathlib4

mathlib3
mathlib4
chore: remove more autoImplicit (#11336)

... or reduce its scope (the full removal is not as obvious).

Diff
@@ -15,9 +15,6 @@ Instances on `Prop` such as `DistribLattice`, `BoundedOrder`, `LinearOrder`.
 
 -/
 
-set_option autoImplicit true
-
-
 /-- Propositions form a distributive lattice. -/
 instance Prop.instDistribLattice : DistribLattice Prop where
   sup := Or
@@ -113,6 +110,8 @@ theorem Prop.isCompl_iff {P Q : Prop} : IsCompl P Q ↔ ¬(P ↔ Q) := by
 
 -- Porting note: Lean 3 would unfold these for us, but we need to do it manually now
 section decidable_instances
+
+universe u
 variable {α : Type u}
 
 instance Prop.decidablePredBot : DecidablePred (⊥ : α → Prop) := fun _ => instDecidableFalse
chore(Order): add missing inst prefix to instance names (#11238)

This is not exhaustive; it largely does not rename instances that relate to algebra, and only focuses on the "core" order files.

Diff
@@ -19,7 +19,7 @@ set_option autoImplicit true
 
 
 /-- Propositions form a distributive lattice. -/
-instance Prop.distribLattice : DistribLattice Prop where
+instance Prop.instDistribLattice : DistribLattice Prop where
   sup := Or
   le_sup_left := @Or.inl
   le_sup_right := @Or.inr
@@ -29,15 +29,15 @@ instance Prop.distribLattice : DistribLattice Prop where
   inf_le_right := @And.right
   le_inf := fun _ _ _ Hab Hac Ha => And.intro (Hab Ha) (Hac Ha)
   le_sup_inf := fun _ _ _ => or_and_left.2
-#align Prop.distrib_lattice Prop.distribLattice
+#align Prop.distrib_lattice Prop.instDistribLattice
 
 /-- Propositions form a bounded order. -/
-instance Prop.boundedOrder : BoundedOrder Prop where
+instance Prop.instBoundedOrder : BoundedOrder Prop where
   top := True
   le_top _ _ := True.intro
   bot := False
   bot_le := @False.elim
-#align Prop.bounded_order Prop.boundedOrder
+#align Prop.bounded_order Prop.instBoundedOrder
 
 theorem Prop.bot_eq_false : (⊥ : Prop) = False :=
   rfl
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -111,7 +111,7 @@ theorem Prop.isCompl_iff {P Q : Prop} : IsCompl P Q ↔ ¬(P ↔ Q) := by
   by_cases P <;> by_cases Q <;> simp [*]
 #align Prop.is_compl_iff Prop.isCompl_iff
 
--- porting note: Lean 3 would unfold these for us, but we need to do it manually now
+-- Porting note: Lean 3 would unfold these for us, but we need to do it manually now
 section decidable_instances
 variable {α : Type u}
 
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

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

Diff
@@ -4,7 +4,6 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
 -/
 import Mathlib.Order.Disjoint
-import Mathlib.Order.WithBot
 
 #align_import order.prop_instances from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
 
fix: disable autoImplicit globally (#6528)

Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.

The intent of this PR is to make autoImplicit opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true in the few files that rely on it.

That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.

I claim that many of the uses of autoImplicit in these files are accidental; situations such as:

  • Assuming variables are in scope, but pasting the lemma in the wrong section
  • Pasting in a lemma from a scratch file without checking to see if the variable names are consistent with the rest of the file
  • Making a copy-paste error between lemmas and forgetting to add an explicit arguments.

Having set_option autoImplicit false as the default prevents these types of mistake being made in the 90% of files where autoImplicits are not used at all, and causes them to be caught by CI during review.

I think there were various points during the port where we encouraged porters to delete the universes u v lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.

A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18 as the no:dontcare:yes vote ratio.

While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true has been placed locally within a section, rather than at the top of the file.

Diff
@@ -16,6 +16,8 @@ Instances on `Prop` such as `DistribLattice`, `BoundedOrder`, `LinearOrder`.
 
 -/
 
+set_option autoImplicit true
+
 
 /-- Propositions form a distributive lattice. -/
 instance Prop.distribLattice : DistribLattice Prop where
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
@@ -67,7 +67,7 @@ theorem inf_Prop_eq : (· ⊓ ·) = (· ∧ ·) :=
 
 namespace Pi
 
-variable {ι : Type _} {α' : ι → Type _} [∀ i, PartialOrder (α' i)]
+variable {ι : Type*} {α' : ι → Type*} [∀ i, PartialOrder (α' i)]
 
 theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     Disjoint f g ↔ ∀ i, Disjoint (f i) (g i) := by
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) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
-
-! This file was ported from Lean 3 source module order.prop_instances
-! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Order.Disjoint
 import Mathlib.Order.WithBot
 
+#align_import order.prop_instances from "leanprover-community/mathlib"@"6623e6af705e97002a9054c1c05a980180276fc1"
+
 /-!
 
 # The order on `Prop`
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -83,7 +83,6 @@ theorem disjoint_iff [∀ i, OrderBot (α' i)] {f g : ∀ i, α' i} :
     · exact bot_le
   · intro h x hf hg i
     apply h i (hf i) (hg i)
-
 #align pi.disjoint_iff Pi.disjoint_iff
 
 theorem codisjoint_iff [∀ i, OrderTop (α' i)] {f g : ∀ i, α' i} :
feat: port Data.Matrix.Block (#3232)

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -113,3 +113,17 @@ theorem Prop.isCompl_iff {P Q : Prop} : IsCompl P Q ↔ ¬(P ↔ Q) := by
   rw [_root_.isCompl_iff, Prop.disjoint_iff, Prop.codisjoint_iff, not_iff]
   by_cases P <;> by_cases Q <;> simp [*]
 #align Prop.is_compl_iff Prop.isCompl_iff
+
+-- porting note: Lean 3 would unfold these for us, but we need to do it manually now
+section decidable_instances
+variable {α : Type u}
+
+instance Prop.decidablePredBot : DecidablePred (⊥ : α → Prop) := fun _ => instDecidableFalse
+
+instance Prop.decidablePredTop : DecidablePred (⊤ : α → Prop) := fun _ => instDecidableTrue
+
+instance Prop.decidableRelBot : DecidableRel (⊥ : α → α → Prop) := fun _ _ => instDecidableFalse
+
+instance Prop.decidableRelTop : DecidableRel (⊤ : α → α → Prop) := fun _ _ => instDecidableTrue
+
+end decidable_instances
chore: add missing hypothesis names to by_cases (#2679)
Diff
@@ -50,8 +50,7 @@ theorem Prop.top_eq_true : (⊤ : Prop) = True :=
 #align Prop.top_eq_true Prop.top_eq_true
 
 instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
-  ⟨fun p q => by
-    by_cases p <;> by_cases q <;> simp [h]⟩
+  ⟨fun p q => by by_cases h : q <;> simp [h]⟩
 #align Prop.le_is_total Prop.le_isTotal
 
 noncomputable instance Prop.linearOrder : LinearOrder Prop := by
chore: resync ported files (#2135)

This PR resyncs the first 28 entries of https://leanprover-community.github.io/mathlib-port-status/out-of-sync.html after sorting by diff size.

  • resync Mathlib/Data/Bool/Count
  • resync Mathlib/Order/Max
  • resync Mathlib/Algebra/EuclideanDomain/Instances
  • resync Mathlib/Data/List/Duplicate
  • resync Mathlib/Data/Multiset/Nodup
  • resync Mathlib/Data/Set/Pointwise/ListOfFn
  • resync Mathlib/Dynamics/FixedPoints/Basic
  • resync Mathlib/Order/OmegaCompletePartialOrder
  • resync Mathlib/Order/PropInstances
  • resync Mathlib/Topology/LocallyFinite
  • resync Mathlib/Data/Bool/Set
  • resync Mathlib/Data/Fintype/Card
  • resync Mathlib/Data/Multiset/Bind
  • resync Mathlib/Data/Rat/Floor
  • resync Mathlib/Algebra/Order/Floor
  • resync Mathlib/Data/Int/Basic
  • resync Mathlib/Data/Int/Dvd/Basic
  • resync Mathlib/Data/List/Sort
  • resync Mathlib/Data/Nat/GCD/Basic
  • resync Mathlib/Data/Set/Enumerate
  • resync Mathlib/Data/Set/Intervals/OrdConnectedComponent
  • resync Mathlib/GroupTheory/Subsemigroup/Basic
  • resync Mathlib/Topology/Connected
  • resync Mathlib/Topology/NhdsSet
  • resync Mathlib/Algebra/BigOperators/Multiset/Lemmas
  • resync Mathlib/Algebra/CharZero/Infinite
  • resync Mathlib/Data/Multiset/Range
  • resync Mathlib/Data/Set/Pointwise/Finite
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
 
 ! This file was ported from Lean 3 source module order.prop_instances
-! leanprover-community/mathlib commit 70d50ecfd4900dd6d328da39ab7ebd516abe4025
+! leanprover-community/mathlib commit 6623e6af705e97002a9054c1c05a980180276fc1
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
chore: fix more casing errors per naming scheme (#1232)

I've avoided anything under Tactic or test.

In correcting the names, I found Option.isNone_iff_eq_none duplicated between Std and Mathlib, so the Mathlib one has been removed.

Co-authored-by: Reid Barton <rwbarton@gmail.com>

Diff
@@ -49,10 +49,10 @@ theorem Prop.top_eq_true : (⊤ : Prop) = True :=
   rfl
 #align Prop.top_eq_true Prop.top_eq_true
 
-instance Prop.le_is_total : IsTotal Prop (· ≤ ·) :=
+instance Prop.le_isTotal : IsTotal Prop (· ≤ ·) :=
   ⟨fun p q => by
     by_cases p <;> by_cases q <;> simp [h]⟩
-#align Prop.le_is_total Prop.le_is_total
+#align Prop.le_is_total Prop.le_isTotal
 
 noncomputable instance Prop.linearOrder : LinearOrder Prop := by
   classical
chore: update lean4/std4 (#1096)
Diff
@@ -94,7 +94,7 @@ theorem codisjoint_iff [∀ i, OrderTop (α' i)] {f g : ∀ i, α' i} :
 
 theorem isCompl_iff [∀ i, BoundedOrder (α' i)] {f g : ∀ i, α' i} :
     IsCompl f g ↔ ∀ i, IsCompl (f i) (g i) := by
-  simp_rw [_root_.isCompl_iff, disjoint_iff, codisjoint_iff, forall_and]; rfl
+  simp_rw [_root_.isCompl_iff, disjoint_iff, codisjoint_iff, forall_and]
 #align pi.is_compl_iff Pi.isCompl_iff
 
 end Pi
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) 2017 Johannes Hölzl. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Johannes Hölzl
+
+! This file was ported from Lean 3 source module order.prop_instances
+! leanprover-community/mathlib commit 70d50ecfd4900dd6d328da39ab7ebd516abe4025
+! Please do not edit these lines, except to modify the commit id
+! if you have ported upstream changes.
 -/
 import Mathlib.Order.Disjoint
 import Mathlib.Order.WithBot

Dependencies 26

27 files ported (100.0%)
13044 lines ported (100.0%)

All dependencies are ported!