Theorem: algebra.Order.ble_eq_true_of_lex
Proof state before:
case h_2.inl
n✝ : ℕ
v₁ v₂ : Vector ℕ n✝
h✝¹ : lex_impl v₁ v₂
m : ℕ
a b : Vector ℕ m
x : ℕ
xs : List ℕ
property✝³ : List.length (x :: xs) = m
y : ℕ
ys : List ℕ
property✝² : List.length (y :: ys) = m
h :
  if x = y then
    lex_impl (tail { val := x :: xs, property := property✝³ }) (tail { val := y :: ys, property := property✝² })
  else x ≤ y
v₁✝ v₂✝ : Vector ℕ m
x✝ : ℕ
tail✝¹ : List ℕ
property✝¹ : List.length (x✝ :: tail✝¹) = m
y✝ : ℕ
tail✝ : List ℕ
property✝ : List.length (y✝ :: tail✝) = m
heq✝¹ : { val := x :: xs, property := property✝³ } = { val := x✝ :: tail✝¹, property := property✝¹ }
heq✝ : { val := y :: ys, property := property✝² } = { val := y✝ :: tail✝, property := property✝ }
h✝ : (x✝ == y✝) = true
⊢ algebra.Order.ble_lex_impl (tail { val := x :: xs, property := property✝³ })
      (tail { val := y :: ys, property := property✝² }) =
    true

case h_2.inr
n✝ : ℕ
v₁ v₂ : Vector ℕ n✝
h✝¹ : lex_impl v₁ v₂
m : ℕ
a b : Vector ℕ m
x : ℕ
xs : List ℕ
property✝³ : List.length (x :: xs) = m
y : ℕ
ys : List ℕ
property✝² : List.length (y :: ys) = m
h : lex_impl { val := x :: xs, property := property✝³ } { val := y :: ys, property := property✝² }
v₁✝ v₂✝ : Vector ℕ m
x✝ : ℕ
tail✝¹ : List ℕ
property✝¹ : List.length (x✝ :: tail✝¹) = m
y✝ : ℕ
tail✝ : List ℕ
property✝ : List.length (y✝ :: tail✝) = m
heq✝¹ : { val := x :: xs, property := property✝³ } = { val := x✝ :: tail✝¹, property := property✝¹ }
heq✝ : { val := y :: ys, property := property✝² } = { val := y✝ :: tail✝, property := property✝ }
h✝ : ¬(x✝ == y✝) = true
⊢ decide (x✝ ≤ y✝) = true
Tactic:
split at h
Proof state after:
case h_2.inl.inl
n✝ : ℕ
v₁ v₂ : Vector ℕ n✝
h✝² : lex_impl v₁ v₂
m : ℕ
a b : Vector ℕ m
x : ℕ
xs : List ℕ
property✝³ : List.length (x :: xs) = m
y : ℕ
ys : List ℕ
property✝² : List.length (y :: ys) = m
v₁✝ v₂✝ : Vector ℕ m
x✝ : ℕ
tail✝¹ : List ℕ
property✝¹ : List.length (x✝ :: tail✝¹) = m
y✝ : ℕ
tail✝ : List ℕ
property✝ : List.length (y✝ :: tail✝) = m
heq✝¹ : { val := x :: xs, property := property✝³ } = { val := x✝ :: tail✝¹, property := property✝¹ }
heq✝ : { val := y :: ys, property := property✝² } = { val := y✝ :: tail✝, property := property✝ }
h✝¹ : (x✝ == y✝) = true
h✝ : x = y
h : lex_impl (tail { val := x :: xs, property := property✝³ }) (tail { val := y :: ys, property := property✝² })
⊢ algebra.Order.ble_lex_impl (tail { val := x :: xs, property := property✝³ })
      (tail { val := y :: ys, property := property✝² }) =
    true

case h_2.inl.inr
n✝ : ℕ
v₁ v₂ : Vector ℕ n✝
h✝² : lex_impl v₁ v₂
m : ℕ
a b : Vector ℕ m
x : ℕ
xs : List ℕ
property✝³ : List.length (x :: xs) = m
y : ℕ
ys : List ℕ
property✝² : List.length (y :: ys) = m
v₁✝ v₂✝ : Vector ℕ m
x✝ : ℕ
tail✝¹ : List ℕ
property✝¹ : List.length (x✝ :: tail✝¹) = m
y✝ : ℕ
tail✝ : List ℕ
property✝ : List.length (y✝ :: tail✝) = m
heq✝¹ : { val := x :: xs, property := property✝³ } = { val := x✝ :: tail✝¹, property := property✝¹ }
heq✝ : { val := y :: ys, property := property✝² } = { val := y✝ :: tail✝, property := property✝ }
h✝¹ : (x✝ == y✝) = true
h✝ : ¬x = y
h : x ≤ y
⊢ algebra.Order.ble_lex_impl (tail { val := x :: xs, property := property✝³ })
      (tail { val := y :: ys, property := property✝² }) =
    true

case h_2.inr
n✝ : ℕ
v₁ v₂ : Vector ℕ n✝
h✝¹ : lex_impl v₁ v₂
m : ℕ
a b : Vector ℕ m
x : ℕ
xs : List ℕ
property✝³ : List.length (x :: xs) = m
y : ℕ
ys : List ℕ
property✝² : List.length (y :: ys) = m
h : lex_impl { val := x :: xs, property := property✝³ } { val := y :: ys, property := property✝² }
v₁✝ v₂✝ : Vector ℕ m
x✝ : ℕ
tail✝¹ : List ℕ
property✝¹ : List.length (x✝ :: tail✝¹) = m
y✝ : ℕ
tail✝ : List ℕ
property✝ : List.length (y✝ :: tail✝) = m
heq✝¹ : { val := x :: xs, property := property✝³ } = { val := x✝ :: tail✝¹, property := property✝¹ }
heq✝ : { val := y :: ys, property := property✝² } = { val := y✝ :: tail✝, property := property✝ }
h✝ : ¬(x✝ == y✝) = true
⊢ decide (x✝ ≤ y✝) = true