awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : DecidableEq ι
inst_1 : (i : ι) → Preorder (α i)
inst_2 : (i : ι) → LocallyFiniteOrder (α i)
x x_1 x_2 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
k : ι
c : α k
h : i = k
h_1 : Eq.rec (motive := fun (x : ι) (h : i = x) ↦ α x) a ⋯ < c
⊢ (∃ (x : j = k), c < Eq.rec (motive := fun (x : ι) (h : j = x) ↦ α x) b ⋯) ↔
    ∃ (h : k = j), Eq.rec (motive := fun (x : ι) (x_3 : k = x) ↦ α x) c ⋯ < b
have mp : (∃ (x : j = k), c < Eq.rec (motive := fun (x : ι) (h : j = x) ↦ α x) b sorry) →
  ∃ (h : k = j), Eq.rec (motive := fun (x : ι) (x_3 : k = x) ↦ α x) c sorry < b
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : DecidableEq ι
inst_1 : (i : ι) → Preorder (α i)
inst_2 : (i : ι) → LocallyFiniteOrder (α i)
x x_1 x_2 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
k : ι
c : α k
h : i = k
h_1 : Eq.rec (motive := fun (x : ι) (h : i = x) ↦ α x) a ⋯ < c
mp :
  (∃ (x : j = k), c < Eq.rec (motive := fun (x : ι) (h : j = x) ↦ α x) b ⋯) →
    ∃ (h : k = j), Eq.rec (motive := fun (x : ι) (x_3 : k = x) ↦ α x) c ⋯ < b
⊢ (∃ (x : j = k), c < Eq.rec (motive := fun (x : ι) (h : j = x) ↦ α x) b ⋯) ↔
    ∃ (h : k = j), Eq.rec (motive := fun (x : ι) (x_3 : k = x) ↦ α x) c ⋯ < b
have mpr : (∃ (h : k = j), Eq.rec (motive := fun (x : ι) (x_3 : k = x) ↦ α x) c sorry < b) →
  ∃ (x : j = k), c < Eq.rec (motive := fun (x : ι) (h : j = x) ↦ α x) b sorry
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderBot (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iic a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b ≤ mk (β := fun (i : ι) ↦ α i) i a
have inl : ∀ (b : α i),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iic a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) i b) ↔
    mk (β := fun (i : ι) ↦ α i) i b ≤ mk (β := fun (i : ι) ↦ α i) i a
Tactic: obtain rfl | hij := eq_or_ne i j
Cleared hypotheses: j, b
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderBot (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (b : α i),
    Membership.mem (γ := Finset ((i : ι) × α i))
        (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
          | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iic a) :
          Finset ((i : ι) × α i))
        (mk (β := fun (i : ι) ↦ α i) i b) ↔
      mk (β := fun (i : ι) ↦ α i) i b ≤ mk (β := fun (i : ι) ↦ α i) i a
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iic a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b ≤ mk (β := fun (i : ι) ↦ α i) i a
have inr : ∀ (hij : i ≠ j),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iic a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b ≤ mk (β := fun (i : ι) ↦ α i) i a
Tactic: obtain rfl | hij := eq_or_ne i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderBot (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iio a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b < mk (β := fun (i : ι) ↦ α i) i a
have inl : ∀ (b : α i),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iio a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) i b) ↔
    mk (β := fun (i : ι) ↦ α i) i b < mk (β := fun (i : ι) ↦ α i) i a
Tactic: obtain rfl | hij := eq_or_ne i j
Cleared hypotheses: j, b
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderBot (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (b : α i),
    Membership.mem (γ := Finset ((i : ι) × α i))
        (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
          | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iio a) :
          Finset ((i : ι) × α i))
        (mk (β := fun (i : ι) ↦ α i) i b) ↔
      mk (β := fun (i : ι) ↦ α i) i b < mk (β := fun (i : ι) ↦ α i) i a
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iio a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b < mk (β := fun (i : ι) ↦ α i) i a
have inr : ∀ (hij : i ≠ j),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Iio a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) j b < mk (β := fun (i : ι) ↦ α i) i a
Tactic: obtain rfl | hij := eq_or_ne i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderTop (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ici a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a ≤ mk (β := fun (i : ι) ↦ α i) j b
have inl : ∀ (b : α i),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ici a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) i b) ↔
    mk (β := fun (i : ι) ↦ α i) i a ≤ mk (β := fun (i : ι) ↦ α i) i b
Tactic: obtain rfl | hij := eq_or_ne i j
Cleared hypotheses: j, b
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderTop (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (b : α i),
    Membership.mem (γ := Finset ((i : ι) × α i))
        (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
          | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ici a) :
          Finset ((i : ι) × α i))
        (mk (β := fun (i : ι) ↦ α i) i b) ↔
      mk (β := fun (i : ι) ↦ α i) i a ≤ mk (β := fun (i : ι) ↦ α i) i b
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ici a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a ≤ mk (β := fun (i : ι) ↦ α i) j b
have inr : ∀ (hij : i ≠ j),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ici a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a ≤ mk (β := fun (i : ι) ↦ α i) j b
Tactic: obtain rfl | hij := eq_or_ne i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderTop (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ioi a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a < mk (β := fun (i : ι) ↦ α i) j b
have inl : ∀ (b : α i),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ioi a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) i b) ↔
    mk (β := fun (i : ι) ↦ α i) i a < mk (β := fun (i : ι) ↦ α i) i b
Tactic: obtain rfl | hij := eq_or_ne i j
Cleared hypotheses: j, b
-- Lean 4 proof step from Mathlib.Data.Sigma.Interval (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
inst : (i : ι) → Preorder (α i)
inst_1 : (i : ι) → LocallyFiniteOrderTop (α i)
x x_1 : (i : ι) × α i
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (b : α i),
    Membership.mem (γ := Finset ((i : ι) × α i))
        (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
          | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ioi a) :
          Finset ((i : ι) × α i))
        (mk (β := fun (i : ι) ↦ α i) i b) ↔
      mk (β := fun (i : ι) ↦ α i) i a < mk (β := fun (i : ι) ↦ α i) i b
⊢ Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ioi a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a < mk (β := fun (i : ι) ↦ α i) j b
have inr : ∀ (hij : i ≠ j),
  Membership.mem (γ := Finset ((i : ι) × α i))
      (match (motive := (i : ι) × α i → Finset ((i : ι) × α i)) mk (β := fun (i : ι) ↦ α i) i a with
        | ⟨i, a⟩ => Finset.map (Embedding.sigmaMk (β := α) i) (Ioi a) :
        Finset ((i : ι) × α i))
      (mk (β := fun (i : ι) ↦ α i) j b) ↔
    mk (β := fun (i : ι) ↦ α i) i a < mk (β := fun (i : ι) ↦ α i) j b
Tactic: obtain rfl | hij := eq_or_ne i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
a b : (i : ι) × α i
⊢ Lex (α := α) r s a b ↔
    r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
            (a.snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))
have mp : Lex (α := α) r s a b →
  r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
    ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
      s (b.fst (β := fun (i : ι) ↦ α i))
        (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
          (a.snd (β := fun (i : ι) ↦ α i)) h)
        (b.snd (β := fun (i : ι) ↦ α i))
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
a b : (i : ι) × α i
mp :
  Lex (α := α) r s a b →
    r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
            (a.snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))
⊢ Lex (α := α) r s a b ↔
    r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
            (a.snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))
have mpr : (r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
    ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
      s (b.fst (β := fun (i : ι) ↦ α i))
        (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
          (a.snd (β := fun (i : ι) ↦ α i)) h)
        (b.snd (β := fun (i : ι) ↦ α i))) →
  Lex (α := α) r s a b
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
a b : (i : ι) × α i
⊢ (r (a.fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : a.fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : a.fst (β := fun (i : ι) ↦ α i) = x) ↦ α x)
            (a.snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))) →
    Lex (α := α) r s a b
have mpr : ∀ (i : ι) (a : α i),
  (r ((mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : (mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : (mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i) = x) ↦
            α x) ((mk (β := fun (i : ι) ↦ α i) i a).snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))) →
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) b
Tactic: obtain ⟨i, a⟩ := a
Cleared hypotheses: a
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
b : (i : ι) × α i
i : ι
a : α i
⊢ (r ((mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i)) (b.fst (β := fun (i : ι) ↦ α i)) ∨
      ∃ (h : (mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i) = b.fst (β := fun (i : ι) ↦ α i)),
        s (b.fst (β := fun (i : ι) ↦ α i))
          (Eq.rec (motive := fun (x : ι) (x_1 : (mk (β := fun (i : ι) ↦ α i) i a).fst (β := fun (i : ι) ↦ α i) = x) ↦
            α x) ((mk (β := fun (i : ι) ↦ α i) i a).snd (β := fun (i : ι) ↦ α i)) h)
          (b.snd (β := fun (i : ι) ↦ α i))) →
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) b
have mpr : (r i (b.fst (β := fun (i : ι) ↦ α i)) ∨
    ∃ (h : i = b.fst (β := fun (i : ι) ↦ α i)),
      s (b.fst (β := fun (i : ι) ↦ α i)) (Eq.rec (motive := fun (x : ι) (x_1 : i = x) ↦ α x) a h)
        (b.snd (β := fun (i : ι) ↦ α i))) →
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) b
Tactic: dsimp only
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r₁ r₂ : ι → ι → Prop
s₁ s₂ : (i : ι) → α i → α i → Prop
hr : ∀ (a b : ι), r₁ a b → r₂ a b
hs : ∀ (i : ι) (a b : α i), s₁ i a b → s₂ i a b
a b : (i : ι) × α i
h : Lex (α := α) r₁ s₁ a b
⊢ Lex (α := α) r₂ s₂ a b
have left : ∀ {i j : ι} (a : α i) (b : α j) (hij : r₁ i j),
  Lex (α := α) r₂ s₂ (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b)
Tactic: obtain ⟨a, b, hij⟩ | ⟨a, b, hab⟩ := h
Cleared hypotheses: a, b, h
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r₁ r₂ : ι → ι → Prop
s₁ s₂ : (i : ι) → α i → α i → Prop
hr : ∀ (a b : ι), r₁ a b → r₂ a b
hs : ∀ (i : ι) (a b : α i), s₁ i a b → s₂ i a b
a b : (i : ι) × α i
h : Lex (α := α) r₁ s₁ a b
left :
  ∀ {i j : ι} (a : α i) (b : α j) (hij : r₁ i j),
    Lex (α := α) r₂ s₂ (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b)
⊢ Lex (α := α) r₂ s₂ a b
have right : ∀ {i : ι} (a b : α i) (hab : s₁ i a b),
  Lex (α := α) r₂ s₂ (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b)
Tactic: obtain ⟨a, b, hij⟩ | ⟨a, b, hab⟩ := h
Cleared hypotheses: a, b, h
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
a b : (i : ι) × α i
⊢ Lex (α := α) (Function.swap (φ := fun (a a_1 : ι) ↦ Prop) r) s a b ↔
    Lex (α := α) r (fun (i : ι) ↦ Function.swap (φ := fun (a a_1 : α i) ↦ Prop) (s i)) b a
have mp : Lex (α := α) (Function.swap (φ := fun (a a_1 : ι) ↦ Prop) r) s a b →
  Lex (α := α) r (fun (i : ι) ↦ Function.swap (φ := fun (a a_2 : α i) ↦ Prop) (s i)) b a
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r : ι → ι → Prop
s : (i : ι) → α i → α i → Prop
a b : (i : ι) × α i
mp :
  Lex (α := α) (Function.swap (φ := fun (a a_1 : ι) ↦ Prop) r) s a b →
    Lex (α := α) r (fun (i : ι) ↦ Function.swap (φ := fun (a a_2 : α i) ↦ Prop) (s i)) b a
⊢ Lex (α := α) (Function.swap (φ := fun (a a_1 : ι) ↦ Prop) r) s a b ↔
    Lex (α := α) r (fun (i : ι) ↦ Function.swap (φ := fun (a a_1 : α i) ↦ Prop) (s i)) b a
have mpr : Lex (α := α) r (fun (i : ι) ↦ Function.swap (φ := fun (a a_1 : α i) ↦ Prop) (s i)) b a →
  Lex (α := α) (Function.swap (φ := fun (a a_2 : ι) ↦ Prop) r) s a b
Tactic: constructor
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Total (s i)
i : ι
a : α i
j : ι
b : α j
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
have inl : ∀ (hij : r i j),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hij | rfl | hji := trichotomous_of r i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Total (s i)
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (hij : r i j),
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
have inr : ∀ (b : α i),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hij | rfl | hji := trichotomous_of r i j
Cleared hypotheses: j, b
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Total (s i)
i : ι
a : α i
j : ι
b : α j
inl :
  ∀ (hij : r i j),
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
inr :
  ∀ (b : α i),
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
have inr₁ : ∀ (hji : r j i),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hij | rfl | hji := trichotomous_of r i j
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Total (s i)
i : ι
a b : α i
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
have inr : ∀ (hab : s i a b),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hab | hba := total_of (s i) a b
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Total (s i)
i : ι
a b : α i
inr :
  ∀ (hab : s i a b),
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
have inr₁ : ∀ (hba : s i b a),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) i b) ∨
    Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hab | hba := total_of (s i) a b
-- Lean 4 proof step from Mathlib.Data.Sigma.Lex (goal)
Goal:
ι : Type u_1
α : ι → Type u_2
r r₁ r₂ : ι → ι → Prop
s s₁ s₂ : (i : ι) → α i → α i → Prop
a_1 b_1 : (i : ι) × α i
inst : Std.Trichotomous r
inst_1 : ∀ (i : ι), Std.Trichotomous (s i)
i : ι
a : α i
j : ι
b : α j
⊢ Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    mk (β := fun (i : ι) ↦ α i) i a = mk (β := fun (i : ι) ↦ α i) j b ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
have inl : ∀ (hij : r i j),
  Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) i a) (mk (β := fun (i : ι) ↦ α i) j b) ∨
    mk (β := fun (i : ι) ↦ α i) i a = mk (β := fun (i : ι) ↦ α i) j b ∨
      Lex (α := α) r s (mk (β := fun (i : ι) ↦ α i) j b) (mk (β := fun (i : ι) ↦ α i) i a)
Tactic: obtain hij | rfl | hji := trichotomous_of r i j