Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2019 Chris Hughes. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Chris Hughes

! This file was ported from Lean 3 source module data.pi.lex
! 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.Basic
import Mathlib.Order.WellFounded
import Mathlib.Algebra.Group.Pi
import Mathlib.Algebra.Order.Group.Defs
import Mathlib.Mathport.Notation

/-!
# Lexicographic order on Pi types

This file defines the lexicographic order for Pi types. `a` is less than `b` if `a i = b i` for all
`i` up to some point `k`, and `a k < b k`.

## Notation

* `Πₗ i, α i`: Pi type equipped with the lexicographic order. Type synonym of `Π i, α i`.

## See also

Related files are:
* `Data.Finset.Colex`: Colexicographic order on finite sets.
* `Data.List.Lex`: Lexicographic order on lists.
* `Data.Oigma.Order`: Lexicographic order on `Σₗ i, α i`.
* `Data.PSigma.Order`: Lexicographic order on `Σₗ' i, α i`.
* `Data.Prod.Lex`: Lexicographic order on `α × β`.
-/


variable {
ι: Type ?u.24140
ι
:
Type _: Type (?u.26+1)
Type _
} {
β: ιType ?u.7
β
:
ι: Type ?u.26
ι
Type _: Type (?u.11934+1)
Type _
} (
r: ιιProp
r
:
ι: Type ?u.2
ι
ι: Type ?u.2
ι
Prop: Type
Prop
) (
s: {i : ι} → β iβ iProp
s
: ∀ {
i: ?m.3766
i
},
β: ιType ?u.9959
β
i: ?m.41
i
β: ιType ?u.8179
β
i: ?m.41
i
Prop: Type
Prop
) namespace Pi
instance: {α : Type u_1} → [inst : Inhabited α] → Inhabited (Lex α)
instance
{
α: Type ?u.50
α
:
Type _: Type (?u.50+1)
Type _
} : ∀ [
Inhabited: Sort ?u.54 → Sort (max1?u.54)
Inhabited
α: Type ?u.50
α
],
Inhabited: Sort ?u.57 → Sort (max1?u.57)
Inhabited
(
Lex: Type ?u.58 → Type ?u.58
Lex
α: Type ?u.50
α
) := @fun
x: ?m.63
x
=>
x: ?m.63
x
/-- The lexicographic relation on `Π i : ι, β i`, where `ι` is ordered by `r`, and each `β i` is ordered by `s`. -/ protected def
Lex: ((i : ι) → β i) → ((i : ι) → β i) → Prop
Lex
(
x: (i : ι) → β i
x
y: (i : ι) → β i
y
: ∀
i: ?m.129
i
,
β: ιType ?u.103
β
i: ?m.123
i
) :
Prop: Type
Prop
:= ∃
i: ?m.140
i
, (∀
j: ?m.143
j
,
r: ιιProp
r
j: ?m.143
j
i: ?m.140
i
x: (i : ι) → β i
x
j: ?m.143
j
=
y: (i : ι) → β i
y
j: ?m.143
j
) ∧
s: {i : ι} → β iβ iProp
s
(
x: (i : ι) → β i
x
i: ?m.140
i
) (
y: (i : ι) → β i
y
i: ?m.140
i
) #align pi.lex
Pi.Lex: {ι : Type u_1} → {β : ιType u_2} → (ιιProp) → ({i : ι} → β iβ iProp) → ((i : ι) → β i) → ((i : ι) → β i) → Prop
Pi.Lex
/- This unfortunately results in a type that isn't delta-reduced, so we keep the notation out of the basic API, just in case -/ /-- The notation `Πₗ i, α i` refers to a pi type equipped with the lexicographic order. -/ notation3 "Πₗ "(...)", "
r: ?m.373
r
:(scoped p => Lex (∀ i, p i)) => r @[simp] theorem
toLex_apply: ∀ (x : (i : ι) → β i) (i : ι), toLex x i = x i
toLex_apply
(
x: (i : ι) → β i
x
: ∀
i: ?m.3468
i
,
β: ιType ?u.3448
β
i: ?m.3468
i
) (
i: ι
i
:
ι: Type ?u.3443
ι
) :
toLex: {α : Type ?u.3476} → α Lex α
toLex
x: (i : ι) → β i
x
i: ι
i
=
x: (i : ι) → β i
x
i: ι
i
:=
rfl: ∀ {α : Sort ?u.3560} {a : α}, a = a
rfl
#align pi.to_lex_apply
Pi.toLex_apply: ∀ {ι : Type u_2} {β : ιType u_1} (x : (i : ι) → β i) (i : ι), toLex x i = x i
Pi.toLex_apply
@[simp] theorem
ofLex_apply: ∀ {ι : Type u_1} {β : ιType u_2} (x : Lex ((i : ι) → β i)) (i : ι), ofLex x i = x i
ofLex_apply
(
x: Lex ((i : ι) → β i)
x
:
Lex: Type ?u.3619 → Type ?u.3619
Lex
(∀
i: ?m.3621
i
,
β: ιType ?u.3600
β
i: ?m.3621
i
)) (
i: ι
i
:
ι: Type ?u.3595
ι
) :
ofLex: {α : Type ?u.3630} → Lex α α
ofLex
x: Lex ((i : ι) → β i)
x
i: ι
i
=
x: Lex ((i : ι) → β i)
x
i: ι
i
:=
rfl: ∀ {α : Sort ?u.3716} {a : α}, a = a
rfl
#align pi.of_lex_apply
Pi.ofLex_apply: ∀ {ι : Type u_1} {β : ιType u_2} (x : Lex ((i : ι) → β i)) (i : ι), ofLex x i = x i
Pi.ofLex_apply
theorem
lex_lt_of_lt_of_preorder: ∀ [inst : (i : ι) → Preorder (β i)] {r : ιιProp}, WellFounded r∀ {x y : (i : ι) → β i}, x < yi, (∀ (j : ι), r j ix j y j y j x j) x i < y i
lex_lt_of_lt_of_preorder
[∀
i: ?m.3776
i
,
Preorder: Type ?u.3779 → Type ?u.3779
Preorder
(
β: ιType ?u.3756
β
i: ?m.3776
i
)] {
r: ιιProp
r
} (hwf :
WellFounded: {α : Sort ?u.3786} → (ααProp) → Prop
WellFounded
r: ?m.3783
r
) {
x: (i : ι) → β i
x
y: (i : ι) → β i
y
: ∀
i: ?m.3802
i
,
β: ιType ?u.3756
β
i: ?m.3802
i
} (
hlt: x < y
hlt
:
x: (i : ι) → β i
x
<
y: (i : ι) → β i
y
) : ∃
i: ?m.3861
i
, (∀
j: ?m.3864
j
,
r: ?m.3783
r
j: ?m.3864
j
i: ?m.3861
i
x: (i : ι) → β i
x
j: ?m.3864
j
y: (i : ι) → β i
y
j: ?m.3864
j
y: (i : ι) → β i
y
j: ?m.3864
j
x: (i : ι) → β i
x
j: ?m.3864
j
) ∧
x: (i : ι) → β i
x
i: ?m.3861
i
<
y: (i : ι) → β i
y
i: ?m.3861
i
:= let
h': ?m.3910
h'
:=
Pi.lt_def: ∀ {ι : Type ?u.3912} {α : ιType ?u.3911} [inst : (i : ι) → Preorder (α i)] {x y : (i : ι) → α i}, x < y x y i, x i < y i
Pi.lt_def
.
1: ∀ {a b : Prop}, (a b) → ab
1
hlt: x < y
hlt
let
i: ι
i
,
hi: i fun x_1 => Preorder.toLT.1 (x x_1) (y x_1)
hi
,
hl: ∀ (x_1 : ι), (x_1 fun x_2 => Preorder.toLT.1 (x x_2) (y x_2)) → ¬r x_1 i
hl
⟩ := hwf.
has_min: ∀ {α : Type ?u.3964} {r : ααProp}, WellFounded r∀ (s : Set α), Set.Nonempty sa, a s ∀ (x : α), x s¬r x a
has_min
_: Set ?m.3970
_
h': ?m.3910
h'
.
2: ∀ {a b : Prop}, a bb
2
i: ι
i
, fun
j: ?m.4084
j
hj: ?m.4087
hj
=> ⟨
h': ?m.3910
h'
.
1: ∀ {a b : Prop}, a ba
1
j: ?m.4084
j
,
not_not: ∀ {a : Prop}, ¬¬a a
not_not
.
1: ∀ {a b : Prop}, (a b) → ab
1
fun
h: ?m.4106
h
=>
hl: ∀ (x_1 : ι), (x_1 fun x_2 => Preorder.toLT.1 (x x_2) (y x_2)) → ¬r x_1 i
hl
j: ?m.4084
j
(
lt_of_le_not_le: ∀ {α : Type ?u.4108} [inst : Preorder α] {a b : α}, a b¬b aa < b
lt_of_le_not_le
(
h': ?m.3910
h'
.
1: ∀ {a b : Prop}, a ba
1
j: ?m.4084
j
)
h: ?m.4106
h
)
hj: ?m.4087
hj
⟩,
hi: i fun x_1 => Preorder.toLT.1 (x x_1) (y x_1)
hi
#align pi.lex_lt_of_lt_of_preorder
Pi.lex_lt_of_lt_of_preorder: ∀ {ι : Type u_2} {β : ιType u_1} [inst : (i : ι) → Preorder (β i)] {r : ιιProp}, WellFounded r∀ {x y : (i : ι) → β i}, x < yi, (∀ (j : ι), r j ix j y j y j x j) x i < y i
Pi.lex_lt_of_lt_of_preorder
theorem
lex_lt_of_lt: ∀ [inst : (i : ι) → PartialOrder (β i)] {r : ιιProp}, WellFounded r∀ {x y : (i : ι) → β i}, x < yPi.Lex r (fun i x x_1 => x < x_1) x y
lex_lt_of_lt
[∀
i: ?m.4377
i
,
PartialOrder: Type ?u.4380 → Type ?u.4380
PartialOrder
(
β: ιType ?u.4357
β
i: ?m.4377
i
)] {
r: ιιProp
r
} (hwf :
WellFounded: {α : Sort ?u.4387} → (ααProp) → Prop
WellFounded
r: ?m.4384
r
) {
x: (i : ι) → β i
x
y: (i : ι) → β i
y
: ∀
i: ?m.4403
i
,
β: ιType ?u.4357
β
i: ?m.4403
i
} (
hlt: x < y
hlt
:
x: (i : ι) → β i
x
<
y: (i : ι) → β i
y
) :
Pi.Lex: {ι : Type ?u.4478} → {β : ιType ?u.4477} → (ιιProp) → ({i : ι} → β iβ iProp) → ((i : ι) → β i) → ((i : ι) → β i) → Prop
Pi.Lex
r: ?m.4384
r
(@fun
i: ?m.4488
i
=>
(· < ·): β iβ iProp
(· < ·)
)
x: (i : ι) → β i
x
y: (i : ι) → β i
y
:=

Goals accomplished! 🐙
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


Pi.Lex r (fun i x x_1 => x < x_1) x y
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


Pi.Lex r (fun i x x_1 => x < x_1) x y
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


i, (∀ (j : ι), r j ix j = y j) x i < y i
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


Pi.Lex r (fun i x x_1 => x < x_1) x y
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


i, (∀ (j : ι), r j ix j y j y j x j) x i < y i
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


i, (∀ (j : ι), r j ix j y j y j x j) x i < y i
ι: Type u_2

β: ιType u_1

r✝: ιιProp

s: {i : ι} → β iβ iProp

inst✝: (i : ι) → PartialOrder (β i)

r: ιιProp

hwf: WellFounded r

x, y: (i : ι) → β i

hlt: x < y


Pi.Lex r (fun i x x_1 => x < x_1) x y

Goals accomplished! 🐙
#align pi.lex_lt_of_lt
Pi.lex_lt_of_lt: ∀ {ι : Type u_2} {β : ιType u_1} [inst : (i : ι) → PartialOrder (β i)] {r : ιιProp}, WellFounded r∀ {x y : (i : ι) → β i}, x < yPi.Lex r (fun i x x_1 => x < x_1) x y
Pi.lex_lt_of_lt
theorem
isTrichotomous_lex: ∀ [inst : ∀ (i : ι), IsTrichotomous (β i) s], WellFounded rIsTrichotomous ((i : ι) → β i) (Pi.Lex r s)
isTrichotomous_lex
[∀
i: ?m.5175
i
,
IsTrichotomous: (α : Type ?u.5178) → (ααProp) → Prop
IsTrichotomous
(
β: ιType ?u.5155
β
i: ?m.5175
i
)
s: {i : ι} → β iβ iProp
s
] (wf :
WellFounded: {α : Sort ?u.5190} → (ααProp) → Prop
WellFounded
r: ιιProp
r
) :
IsTrichotomous: (α : Type ?u.5200) → (ααProp) → Prop
IsTrichotomous
(∀
i: ?m.5202
i
,
β: ιType ?u.5155
β
i: ?m.5202
i
) (
Pi.Lex: {ι : Type ?u.5207} → {β : ιType ?u.5206} → (ιιProp) → ({i : ι} → β iβ iProp) → ((i : ι) → β i) → ((i : ι) → β i) → Prop
Pi.Lex
r: ιιProp
r
@
s: {i : ι} → β iβ iProp
s
) := { trichotomous := fun
a: ?m.5254
a
b: ?m.5258
b
=>

Goals accomplished! 🐙
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i


Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a = b


inl
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i


Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a = b


inl
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a = b


inl
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a

Goals accomplished! 🐙
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i


Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι


inr
Pi.Lex r s a b a = b Pi.Lex r s b a

Goals accomplished! 🐙
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι


∀ (j : ι), r j ia j = b j
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

j: ι


r j ia j = b j
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι


∀ (j : ι), r j ia j = b j
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

j: ι


r j ia j = b j
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

j: ι


¬a j = b j¬r j i
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

j: ι


¬a j = b j¬r j i
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι


∀ (j : ι), r j ia j = b j

Goals accomplished! 🐙
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

hri: ∀ (j : ι), r j ia j = b j

hne: a i b i


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

hri: ∀ (j : ι), r j ia j = b j

hne: a i b i

hi: s (a i) (b i)


inr.inl
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a_1, a a_1 b a_1

i:= WellFounded.min wf (fun x => a x = b xFalse) hab: ι

hri: ∀ (j : ι), r j ia j = b j

hne: a i b i

hi: a i = b i s (b i) (a i)


inr.inr
Pi.Lex r s a b a = b Pi.Lex r s b a
ι: Type u_2

β: ιType u_1

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝: ∀ (i : ι), IsTrichotomous (β i) s

wf: WellFounded r

a, b: (i : ι) → β i

hab: a b


inr
Pi.Lex r s a b a = b Pi.Lex r s b a

Goals accomplished! 🐙
} #align pi.is_trichotomous_lex
Pi.isTrichotomous_lex: ∀ {ι : Type u_2} {β : ιType u_1} (r : ιιProp) (s : {i : ι} → β iβ iProp) [inst : ∀ (i : ι), IsTrichotomous (β i) s], WellFounded rIsTrichotomous ((i : ι) → β i) (Pi.Lex r s)
Pi.isTrichotomous_lex
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LT ι] → [inst : (a : ι) → LT (β a)] → LT (Lex ((i : ι) → β i))
instance
[
LT: Type ?u.5758 → Type ?u.5758
LT
ι: Type ?u.5734
ι
] [∀
a: ?m.5762
a
,
LT: Type ?u.5765 → Type ?u.5765
LT
(
β: ιType ?u.5739
β
a: ?m.5762
a
)] :
LT: Type ?u.5769 → Type ?u.5769
LT
(
Lex: Type ?u.5770 → Type ?u.5770
Lex
(∀
i: ?m.5772
i
,
β: ιType ?u.5739
β
i: ?m.5772
i
)) := ⟨
Pi.Lex: {ι : Type ?u.5786} → {β : ιType ?u.5785} → (ιιProp) → ({i : ι} → β iβ iProp) → ((i : ι) → β i) → ((i : ι) → β i) → Prop
Pi.Lex
(· < ·): ιιProp
(· < ·)
@fun
_: ?m.5816
_
=>
(· < ·): β x✝β x✝Prop
(· < ·)
instance
Lex.isStrictOrder: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : (a : ι) → PartialOrder (β a)], IsStrictOrder (Lex ((i : ι) → β i)) fun x x_1 => x < x_1
Lex.isStrictOrder
[
LinearOrder: Type ?u.5968 → Type ?u.5968
LinearOrder
ι: Type ?u.5944
ι
] [∀
a: ?m.5972
a
,
PartialOrder: Type ?u.5975 → Type ?u.5975
PartialOrder
(
β: ιType ?u.5949
β
a: ?m.5972
a
)] :
IsStrictOrder: (α : Type ?u.5979) → (ααProp) → Prop
IsStrictOrder
(
Lex: Type ?u.5980 → Type ?u.5980
Lex
(∀
i: ?m.5982
i
,
β: ιType ?u.5949
β
i: ?m.5982
i
))
(· < ·): Lex ((i : ι) → β i)Lex ((i : ι) → β i)Prop
(· < ·)
where irrefl := fun
a: ?m.6286
a
k: ι
k
, _,
hk₂: (fun x x_1 x_2 => x_1 < x_2) k (a k) (a k)
hk₂
⟩ =>
lt_irrefl: ∀ {α : Type ?u.6466} [inst : Preorder α] (a : α), ¬a < a
lt_irrefl
(
a: ?m.6286
a
k: ι
k
)
hk₂: (fun x x_1 x_2 => x_1 < x_2) k (a k) (a k)
hk₂
trans :=

Goals accomplished! 🐙
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)


∀ (a b c : Lex ((i : ι) → β i)), a < bb < ca < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)

a, b, c: Lex ((i : ι) → β i)

N₁: ι

lt_N₁: ∀ (j : ι), (fun x x_1 => x < x_1) j N₁a j = b j

a_lt_b: a N₁ < b N₁

N₂: ι

lt_N₂: ∀ (j : ι), (fun x x_1 => x < x_1) j N₂b j = c j

b_lt_c: b N₂ < c N₂


intro.intro.intro.intro
a < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)


∀ (a b c : Lex ((i : ι) → β i)), a < bb < ca < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)

a, b, c: Lex ((i : ι) → β i)

N₁: ι

lt_N₁: ∀ (j : ι), (fun x x_1 => x < x_1) j N₁a j = b j

a_lt_b: a N₁ < b N₁

N₂: ι

lt_N₂: ∀ (j : ι), (fun x x_1 => x < x_1) j N₂b j = c j

b_lt_c: b N₂ < c N₂

H: N₁ < N₂


intro.intro.intro.intro.inl
a < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)

a, b, c: Lex ((i : ι) → β i)

N₁: ι

lt_N₁: ∀ (j : ι), (fun x x_1 => x < x_1) j N₁a j = b j

a_lt_b: a N₁ < b N₁

lt_N₂: ∀ (j : ι), (fun x x_1 => x < x_1) j N₁b j = c j

b_lt_c: b N₁ < c N₁


intro.intro.intro.intro.inr.inl
a < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)

a, b, c: Lex ((i : ι) → β i)

N₁: ι

lt_N₁: ∀ (j : ι), (fun x x_1 => x < x_1) j N₁a j = b j

a_lt_b: a N₁ < b N₁

N₂: ι

lt_N₂: ∀ (j : ι), (fun x x_1 => x < x_1) j N₂b j = c j

b_lt_c: b N₂ < c N₂

H: N₂ < N₁


intro.intro.intro.intro.inr.inr
a < c
ι: Type ?u.5944

β: ιType ?u.5949

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝¹: LinearOrder ι

inst✝: (a : ι) → PartialOrder (β a)


∀ (a b c : Lex ((i : ι) → β i)), a < bb < ca < c

Goals accomplished! 🐙
#align pi.lex.is_strict_order
Pi.Lex.isStrictOrder: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : (a : ι) → PartialOrder (β a)], IsStrictOrder (Lex ((i : ι) → β i)) fun x x_1 => x < x_1
Pi.Lex.isStrictOrder
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LinearOrder ι] → [inst : (a : ι) → PartialOrder (β a)] → PartialOrder (Lex ((i : ι) → β i))
instance
[
LinearOrder: Type ?u.7711 → Type ?u.7711
LinearOrder
ι: Type ?u.7687
ι
] [∀
a: ?m.7715
a
,
PartialOrder: Type ?u.7718 → Type ?u.7718
PartialOrder
(
β: ιType ?u.7692
β
a: ?m.7715
a
)] :
PartialOrder: Type ?u.7722 → Type ?u.7722
PartialOrder
(
Lex: Type ?u.7723 → Type ?u.7723
Lex
(∀
i: ?m.7725
i
,
β: ιType ?u.7692
β
i: ?m.7725
i
)) :=
partialOrderOfSO: {α : Type ?u.7733} → (r : ααProp) → [inst : IsStrictOrder α r] → PartialOrder α
partialOrderOfSO
(· < ·): Lex ((i : ι) → β i)Lex ((i : ι) → β i)Prop
(· < ·)
/-- `Πₗ i, α i` is a linear order if the original order is well-founded. -/ noncomputable
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LinearOrder ι] → [inst : IsWellOrder ι fun x x_1 => x < x_1] → [inst : (a : ι) → LinearOrder (β a)] → LinearOrder (Lex ((i : ι) → β i))
instance
[
LinearOrder: Type ?u.8198 → Type ?u.8198
LinearOrder
ι: Type ?u.8174
ι
] [
IsWellOrder: (α : Type ?u.8201) → (ααProp) → Prop
IsWellOrder
ι: Type ?u.8174
ι
(· < ·): ιιProp
(· < ·)
] [∀
a: ?m.8399
a
,
LinearOrder: Type ?u.8402 → Type ?u.8402
LinearOrder
(
β: ιType ?u.8179
β
a: ?m.8399
a
)] :
LinearOrder: Type ?u.8406 → Type ?u.8406
LinearOrder
(
Lex: Type ?u.8407 → Type ?u.8407
Lex
(∀
i: ?m.8409
i
,
β: ιType ?u.8179
β
i: ?m.8409
i
)) := @
linearOrderOfSTO: {α : Type ?u.8418} → (r : ααProp) → [inst : IsStrictTotalOrder α r] → [inst : (x y : α) → Decidable ¬r x y] → LinearOrder α
linearOrderOfSTO
(Πₗ
i: ?m.8425
i
,
β: ιType ?u.8179
β
i: ?m.8425
i
)
(· < ·): Lex ((i : ι) → (fun i => β i) i)Lex ((i : ι) → (fun i => β i) i)Prop
(· < ·)
{ trichotomous := (
isTrichotomous_lex: ∀ {ι : Type ?u.9130} {β : ιType ?u.9129} (r : ιιProp) (s : {i : ι} → β iβ iProp) [inst : ∀ (i : ι), IsTrichotomous (β i) s], WellFounded rIsTrichotomous ((i : ι) → β i) (Pi.Lex r s)
isTrichotomous_lex
_: ?m.9131?m.9131Prop
_
_: {i : ?m.9131} → ?m.9132 i?m.9132 iProp
_
IsWellFounded.wf: ∀ {α : Type ?u.9136} {r : ααProp} [self : IsWellFounded α r], WellFounded r
IsWellFounded.wf
).
1: ∀ {α : Type ?u.9217} {lt : ααProp} [self : IsTrichotomous α lt] (a b : α), lt a b a = b lt b a
1
} (
Classical.decRel: {α : Sort ?u.9867} → (p : ααProp) → DecidableRel p
Classical.decRel
_: ?m.9868?m.9868Prop
_
) section PartialOrder variable [
LinearOrder: Type ?u.13680 → Type ?u.13680
LinearOrder
ι: Type ?u.13656
ι
] [
IsWellOrder: (α : Type ?u.13683) → (ααProp) → Prop
IsWellOrder
ι: Type ?u.15811
ι
(· < ·): ιιProp
(· < ·)
] [∀
i: ?m.13881
i
,
PartialOrder: Type ?u.16039 → Type ?u.16039
PartialOrder
(
β: ιType ?u.13661
β
i: ?m.10179
i
)] {
x: (i : ι) → β i
x
y: (i : ι) → β i
y
: ∀
i: ?m.12162
i
,
β: ιType ?u.13661
β
i: ?m.10193
i
} {
i: ι
i
:
ι: Type ?u.10202
ι
} {
a: β i
a
:
β: ιType ?u.13661
β
i: ι
i
} open Function theorem
toLex_monotone: Monotone toLex
toLex_monotone
:
Monotone: {α : Type ?u.10451} → {β : Type ?u.10450} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
(@
toLex: {α : Type ?u.10486} → α Lex α
toLex
(∀
i: ?m.10488
i
,
β: ιType ?u.10207
β
i: ?m.10488
i
)) := fun
a: ?m.10707
a
b: ?m.10711
b
h: ?m.10715
h
=>
or_iff_not_imp_left: ∀ {a b : Prop}, a b ¬ab
or_iff_not_imp_left
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
hne: ?m.10729
hne
=> let
i: ι
i
,
hi: i { i | a i b i }
hi
,
hl: ∀ (x : ι), x { i | a i b i }¬x < i
hl
⟩ :=
IsWellFounded.wf: ∀ {α : Type ?u.10731} {r : ααProp} [self : IsWellFounded α r], WellFounded r
IsWellFounded.wf
.
has_min: ∀ {α : Type ?u.10758} {r : ααProp}, WellFounded r∀ (s : Set α), Set.Nonempty sa, a s ∀ (x : α), x s¬r x a
has_min
(r :=
(· < · ): ιιProp
(· < · )
) {
i: ?m.10830
i
|
a: ?m.10707
a
i: ?m.10830
i
b: ?m.10711
b
i: ?m.10830
i
} (
Function.ne_iff: ∀ {α : Sort ?u.10839} {β : αSort ?u.10838} {f₁ f₂ : (a : α) → β a}, f₁ f₂ a, f₁ a f₂ a
Function.ne_iff
.
1: ∀ {a b : Prop}, (a b) → ab
1
hne: ?m.10729
hne
) ⟨
i: ι
i
, fun
j: ?m.11028
j
hj: ?m.11031
hj
=>

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a b

hne: ¬toLex a = toLex b

i: ι

hi: i { i | a i b i }

hl: ∀ (x : ι), x { i | a i b i }¬x < i

j: ι

hj: (fun x x_1 => x < x_1) j i


toLex a j = toLex b j
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a b

hne: ¬toLex a = toLex b

i: ι

hi: i { i | a i b i }

j: ι

hj: (fun x x_1 => x < x_1) j i

hl: toLex a j toLex b j


x, x { i | a i b i } x < i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a b

hne: ¬toLex a = toLex b

i: ι

hi: i { i | a i b i }

hl: ∀ (x : ι), x { i | a i b i }¬x < i

j: ι

hj: (fun x x_1 => x < x_1) j i


toLex a j = toLex b j

Goals accomplished! 🐙
, (
h: ?m.10715
h
i: ι
i
).
lt_of_ne: ∀ {α : Type ?u.11039} [inst : PartialOrder α] {a b : α}, a ba ba < b
lt_of_ne
hi: i { i | a i b i }
hi
#align pi.to_lex_monotone
Pi.toLex_monotone: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)], Monotone toLex
Pi.toLex_monotone
theorem
toLex_strictMono: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)], StrictMono toLex
toLex_strictMono
:
StrictMono: {α : Type ?u.12178} → {β : Type ?u.12177} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
StrictMono
(@
toLex: {α : Type ?u.12213} → α Lex α
toLex
(∀
i: ?m.12215
i
,
β: ιType ?u.11934
β
i: ?m.12215
i
)) := fun
a: ?m.12434
a
b: ?m.12438
b
h: ?m.12442
h
=> let
i: ι
i
,
hi: i { i | a i b i }
hi
,
hl: ∀ (x : ι), x { i | a i b i }¬x < i
hl
⟩ :=
IsWellFounded.wf: ∀ {α : Type ?u.12444} {r : ααProp} [self : IsWellFounded α r], WellFounded r
IsWellFounded.wf
.
has_min: ∀ {α : Type ?u.12471} {r : ααProp}, WellFounded r∀ (s : Set α), Set.Nonempty sa, a s ∀ (x : α), x s¬r x a
has_min
(r :=
(· < · ): ιιProp
(· < · )
) {
i: ?m.12543
i
|
a: ?m.12434
a
i: ?m.12543
i
b: ?m.12438
b
i: ?m.12543
i
} (
Function.ne_iff: ∀ {α : Sort ?u.12552} {β : αSort ?u.12551} {f₁ f₂ : (a : α) → β a}, f₁ f₂ a, f₁ a f₂ a
Function.ne_iff
.
1: ∀ {a b : Prop}, (a b) → ab
1
h: ?m.12442
h
.
ne: ∀ {α : Type ?u.12575} [inst : Preorder α] {a b : α}, a < ba b
ne
) ⟨
i: ι
i
, fun
j: ?m.12782
j
hj: ?m.12785
hj
=>

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a < b

i: ι

hi: i { i | a i b i }

hl: ∀ (x : ι), x { i | a i b i }¬x < i

j: ι

hj: (fun x x_1 => x < x_1) j i


toLex a j = toLex b j
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a < b

i: ι

hi: i { i | a i b i }

j: ι

hj: (fun x x_1 => x < x_1) j i

hl: toLex a j toLex b j


x, x { i | a i b i } x < i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i✝: ι

a✝: β i✝

a, b: (i : ι) → β i

h: a < b

i: ι

hi: i { i | a i b i }

hl: ∀ (x : ι), x { i | a i b i }¬x < i

j: ι

hj: (fun x x_1 => x < x_1) j i


toLex a j = toLex b j

Goals accomplished! 🐙
, (
h: ?m.12442
h
.
le: ∀ {α : Type ?u.12793} [inst : Preorder α] {a b : α}, a < ba b
le
i: ι
i
).
lt_of_ne: ∀ {α : Type ?u.12804} [inst : PartialOrder α] {a b : α}, a ba ba < b
lt_of_ne
hi: i { i | a i b i }
hi
#align pi.to_lex_strict_mono
Pi.toLex_strictMono: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)], StrictMono toLex
Pi.toLex_strictMono
@[simp] theorem
lt_toLex_update_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex x < toLex (update x i a) x i < a
lt_toLex_update_self_iff
:
toLex: {α : Type ?u.13905} → α Lex α
toLex
x: (i : ι) → β i
x
<
toLex: {α : Type ?u.13986} → α Lex α
toLex
(
update: {α : Sort ?u.14065} → {β : αSort ?u.14064} → [inst : DecidableEq α] → ((a : α) → β a) → (a' : α) → β a'(a : α) → β a
update
x: (i : ι) → β i
x
i: ι
i
a: β i
a
) ↔
x: (i : ι) → β i
x
i: ι
i
<
a: β i
a
:=

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a)x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: toLex x j < toLex (update x i a) j


intro.intro
x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j


intro.intro
x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j


intro.intro
x i < a

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j


j = i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j


j = i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x i a) j_1

h: x j < update x i a j


j = i

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) x i < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x j a) j_1

h: x j < update x j a j


intro.intro
x j < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x j a) j_1

h: x j < a


intro.intro
x j < a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex x j_1 = toLex (update x j a) j_1

h: x j < a


intro.intro
x j < a

Goals accomplished! 🐙
#align pi.lt_to_lex_update_self_iff
Pi.lt_toLex_update_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex x < toLex (update x i a) x i < a
Pi.lt_toLex_update_self_iff
@[simp] theorem
toLex_update_lt_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex (update x i a) < toLex x a < x i
toLex_update_lt_self_iff
:
toLex: {α : Type ?u.16060} → α Lex α
toLex
(
update: {α : Sort ?u.16139} → {β : αSort ?u.16138} → [inst : DecidableEq α] → ((a : α) → β a) → (a' : α) → β a'(a : α) → β a
update
x: (i : ι) → β i
x
i: ι
i
a: β i
a
) <
toLex: {α : Type ?u.16260} → α Lex α
toLex
x: (i : ι) → β i
x
a: β i
a
<
x: (i : ι) → β i
x
i: ι
i
:=

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex xa < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: toLex (update x i a) j < toLex x j


intro.intro
a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j


intro.intro
a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j


intro.intro
a < x i

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j


j = i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j


j = i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: x j < x j

H: ¬j = i


ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i

j: ι

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x i a) j_1 = toLex x j_1

h: update x i a j < x j


j = i

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x a < x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x j a) j_1 = toLex x j_1

h: update x j a j < x j


intro.intro
a < x j
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x j a) j_1 = toLex x j_1

h: a < x j


intro.intro
a < x j
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

j: ι

a: β j

hj: ∀ (j_1 : ι), (fun x x_1 => x < x_1) j_1 jtoLex (update x j a) j_1 = toLex x j_1

h: a < x j


intro.intro
a < x j

Goals accomplished! 🐙
#align pi.to_lex_update_lt_self_iff
Pi.toLex_update_lt_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex (update x i a) < toLex x a < x i
Pi.toLex_update_lt_self_iff
@[simp] theorem
le_toLex_update_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex x toLex (update x i a) x i a
le_toLex_update_self_iff
:
toLex: {α : Type ?u.18214} → α Lex α
toLex
x: (i : ι) → β i
x
toLex: {α : Type ?u.18295} → α Lex α
toLex
(
update: {α : Sort ?u.18374} → {β : αSort ?u.18373} → [inst : DecidableEq α] → ((a : α) → β a) → (a' : α) → β a'(a : α) → β a
update
x: (i : ι) → β i
x
i: ι
i
a: β i
a
) ↔
x: (i : ι) → β i
x
i: ι
i
a: β i
a
:=

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x toLex (update x i a) x i a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x toLex (update x i a) x i a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x < toLex (update x i a) toLex x = toLex (update x i a) x i < a x i = a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x toLex (update x i a) x i a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


x i < a toLex x = toLex (update x i a) x i < a x i = a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x toLex (update x i a) x i a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


x i < a x = update x i a x i < a x i = a
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex x toLex (update x i a) x i a

Goals accomplished! 🐙

Goals accomplished! 🐙
#align pi.le_to_lex_update_self_iff
Pi.le_toLex_update_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex x toLex (update x i a) x i a
Pi.le_toLex_update_self_iff
@[simp] theorem
toLex_update_le_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex (update x i a) toLex x a x i
toLex_update_le_self_iff
:
toLex: {α : Type ?u.20782} → α Lex α
toLex
(
update: {α : Sort ?u.20861} → {β : αSort ?u.20860} → [inst : DecidableEq α] → ((a : α) → β a) → (a' : α) → β a'(a : α) → β a
update
x: (i : ι) → β i
x
i: ι
i
a: β i
a
) ≤
toLex: {α : Type ?u.20982} → α Lex α
toLex
x: (i : ι) → β i
x
a: β i
a
x: (i : ι) → β i
x
i: ι
i
:=

Goals accomplished! 🐙
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) toLex x a x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) toLex x a x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) < toLex x toLex (update x i a) = toLex x a < x i a = x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) toLex x a x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


a < x i toLex (update x i a) = toLex x a < x i a = x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) toLex x a x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


a < x i update x i a = x a < x i a = x i
ι: Type u_1

β: ιType u_2

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: LinearOrder ι

inst✝¹: IsWellOrder ι fun x x_1 => x < x_1

inst✝: (i : ι) → PartialOrder (β i)

x, y: (i : ι) → β i

i: ι

a: β i


toLex (update x i a) toLex x a x i

Goals accomplished! 🐙

Goals accomplished! 🐙
#align pi.to_lex_update_le_self_iff
Pi.toLex_update_le_self_iff: ∀ {ι : Type u_1} {β : ιType u_2} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)] {x : (i : ι) → β i} {i : ι} {a : β i}, toLex (update x i a) toLex x a x i
Pi.toLex_update_le_self_iff
end PartialOrder
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LinearOrder ι] → [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] → [inst_2 : (a : ι) → PartialOrder (β a)] → [inst_3 : (a : ι) → OrderBot (β a)] → OrderBot (Lex ((a : ι) → β a))
instance
[
LinearOrder: Type ?u.22827 → Type ?u.22827
LinearOrder
ι: Type ?u.22803
ι
] [
IsWellOrder: (α : Type ?u.22830) → (ααProp) → Prop
IsWellOrder
ι: Type ?u.22803
ι
(· < ·): ιιProp
(· < ·)
] [∀
a: ?m.23028
a
,
PartialOrder: Type ?u.23031 → Type ?u.23031
PartialOrder
(
β: ιType ?u.22808
β
a: ?m.23028
a
)] [∀
a: ?m.23036
a
,
OrderBot: (α : Type ?u.23039) → [inst : LE α] → Type ?u.23039
OrderBot
(
β: ιType ?u.22808
β
a: ?m.23036
a
)] :
OrderBot: (α : Type ?u.23070) → [inst : LE α] → Type ?u.23070
OrderBot
(
Lex: Type ?u.23071 → Type ?u.23071
Lex
(∀
a: ?m.23073
a
,
β: ιType ?u.22808
β
a: ?m.23073
a
)) where bot :=
toLex: {α : Type ?u.23211} → α Lex α
toLex
: ?m.23290
bot_le
_: ?m.23328
_
:=
toLex_monotone: ∀ {ι : Type ?u.23330} {β : ιType ?u.23331} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)], Monotone toLex
toLex_monotone
bot_le: ∀ {α : Type ?u.23434} [inst : LE α] [inst_1 : OrderBot α] {a : α}, a
bot_le
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LinearOrder ι] → [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] → [inst_2 : (a : ι) → PartialOrder (β a)] → [inst_3 : (a : ι) → OrderTop (β a)] → OrderTop (Lex ((a : ι) → β a))
instance
[
LinearOrder: Type ?u.24164 → Type ?u.24164
LinearOrder
ι: Type ?u.24140
ι
] [
IsWellOrder: (α : Type ?u.24167) → (ααProp) → Prop
IsWellOrder
ι: Type ?u.24140
ι
(· < ·): ιιProp
(· < ·)
] [∀
a: ?m.24365
a
,
PartialOrder: Type ?u.24368 → Type ?u.24368
PartialOrder
(
β: ιType ?u.24145
β
a: ?m.24365
a
)] [∀
a: ?m.24373
a
,
OrderTop: (α : Type ?u.24376) → [inst : LE α] → Type ?u.24376
OrderTop
(
β: ιType ?u.24145
β
a: ?m.24373
a
)] :
OrderTop: (α : Type ?u.24407) → [inst : LE α] → Type ?u.24407
OrderTop
(
Lex: Type ?u.24408 → Type ?u.24408
Lex
(∀
a: ?m.24410
a
,
β: ιType ?u.24145
β
a: ?m.24410
a
)) where top :=
toLex: {α : Type ?u.24548} → α Lex α
toLex
: ?m.24627
le_top
_: ?m.24659
_
:=
toLex_monotone: ∀ {ι : Type ?u.24661} {β : ιType ?u.24662} [inst : LinearOrder ι] [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] [inst_2 : (i : ι) → PartialOrder (β i)], Monotone toLex
toLex_monotone
le_top: ∀ {α : Type ?u.24759} [inst : LE α] [inst_1 : OrderTop α] {a : α}, a
le_top
instance: {ι : Type u_1} → {β : ιType u_2} → [inst : LinearOrder ι] → [inst_1 : IsWellOrder ι fun x x_1 => x < x_1] → [inst_2 : (a : ι) → PartialOrder (β a)] → [inst_3 : (a : ι) → BoundedOrder (β a)] → BoundedOrder (Lex ((a : ι) → β a))
instance
[
LinearOrder: Type ?u.25433 → Type ?u.25433
LinearOrder
ι: Type ?u.25409
ι
] [
IsWellOrder: (α : Type ?u.25436) → (ααProp) → Prop
IsWellOrder
ι: Type ?u.25409
ι
(· < ·): ιιProp
(· < ·)
] [∀
a: ?m.25634
a
,
PartialOrder: Type ?u.25637 → Type ?u.25637
PartialOrder
(
β: ιType ?u.25414
β
a: ?m.25634
a
)] [∀
a: ?m.25642
a
,
BoundedOrder: (α : Type ?u.25645) → [inst : LE α] → Type ?u.25645
BoundedOrder
(
β: ιType ?u.25414
β
a: ?m.25642
a
)] :
BoundedOrder: (α : Type ?u.25676) → [inst : LE α] → Type ?u.25676
BoundedOrder
(
Lex: Type ?u.25677 → Type ?u.25677
Lex
(∀
a: ?m.25679
a
,
β: ιType ?u.25414
β
a: ?m.25679
a
)) :=
{ }: BoundedOrder ?m.25793
{ }
instance: ∀ {ι : Type u_1} {β : ιType u_2} [inst : Preorder ι] [inst_1 : (i : ι) → LT (β i)] [inst_2 : ∀ (i : ι), DenselyOrdered (β i)], DenselyOrdered (Lex ((i : ι) → β i))
instance
[
Preorder: Type ?u.26222 → Type ?u.26222
Preorder
ι: Type ?u.26198
ι
] [∀
i: ?m.26226
i
,
LT: Type ?u.26229 → Type ?u.26229
LT
(
β: ιType ?u.26203
β
i: ?m.26226
i
)] [∀
i: ?m.26234
i
,
DenselyOrdered: (α : Type ?u.26237) → [inst : LT α] → Prop
DenselyOrdered
(
β: ιType ?u.26203
β
i: ?m.26234
i
)] :
DenselyOrdered: (α : Type ?u.26249) → [inst : LT α] → Prop
DenselyOrdered
(
Lex: Type ?u.26250 → Type ?u.26250
Lex
(∀
i: ?m.26252
i
,
β: ιType ?u.26203
β
i: ?m.26252
i
)) := ⟨

Goals accomplished! 🐙
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)


∀ (a₁ a₂ : Lex ((i : ι) → β i)), a₁ < a₂a, a₁ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i


intro.intro
a, a₁✝ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)


∀ (a₁ a₂ : Lex ((i : ι) → β i)), a₁ < a₂a, a₁ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro
a, a₁✝ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)


∀ (a₁ a₂ : Lex ((i : ι) → β i)), a₁ < a₂a, a₁ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro
a, a₁✝ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i

j: ι

hj: (fun x x_1 => x < x_1) j i


intro.intro.intro.intro.refine'_1
a₁✝ j = Function.update a₂ i a j
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro.refine'_2
(fun x x_1 x_2 => x_1 < x_2) i (a₁✝ i) (Function.update a₂ i a i)
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i

j: ι

hj: (fun x x_1 => x < x_1) j i


intro.intro.intro.intro.refine'_3
Function.update a₂ i a j = a₂ j
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro.refine'_4
(fun x x_1 x_2 => x_1 < x_2) i (Function.update a₂ i a i) (a₂ i)
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro
a, a₁✝ < a a < a₂
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i

j: ι

hj: (fun x x_1 => x < x_1) j i


intro.intro.intro.intro.refine'_1
a₁✝ j = Function.update a₂ i a j
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro.refine'_2
(fun x x_1 x_2 => x_1 < x_2) i (a₁✝ i) (Function.update a₂ i a i)
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i

j: ι

hj: (fun x x_1 => x < x_1) j i


intro.intro.intro.intro.refine'_3
Function.update a₂ i a j = a₂ j
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i


intro.intro.intro.intro.refine'_4
(fun x x_1 x_2 => x_1 < x_2) i (Function.update a₂ i a i) (a₂ i)
ι: Type ?u.26198

β: ιType ?u.26203

r: ιιProp

s: {i : ι} → β iβ iProp

inst✝²: Preorder ι

inst✝¹: (i : ι) → LT (β i)

inst✝: ∀ (i : ι), DenselyOrdered (β i)

a₁✝, a₂: Lex ((i : ι) → β i)

i: ι

h: ∀ (j : ι), (fun x x_1 => x < x_1) j ia₁✝ j = a₂ j

hi: a₁✝ i < a₂ i

a: β i

ha₁: a₁✝ i < a

ha₂: a < a₂ i

j: ι