Theorem: List.Nat.antidiagonalTuple_pairwise_pi_lex
File: Mathlib/Data/Fin/Tuple/NatAntidiagonal.lean

tactic: simp_rw [antidiagonalTuple, List.pairwise_bind, List.pairwise_map, List.mem_map,
  forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
state_before: k n : ℕ
⊢ Pairwise (Pi.Lex (fun x x_1 => x < x_1) fun x x x_1 => x < x_1) (antidiagonalTuple (k + 1) n)
state_after: k n : ℕ
⊢ (∀ a ∈ antidiagonal n,
      Pairwise (fun a_2 b => Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a.1 a_2) (Fin.cons a.1 b))
        (antidiagonalTuple k a.2)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a₁.1 a) (Fin.cons a₂.1 a_2))
      (antidiagonal n)

tactic: simp only [mem_antidiagonal, Prod.forall, and_imp, forall_apply_eq_imp_iff₂]
state_before: k n : ℕ
⊢ (∀ a ∈ antidiagonal n,
      Pairwise (fun a_2 b => Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a.1 a_2) (Fin.cons a.1 b))
        (antidiagonalTuple k a.2)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a₁.1 a) (Fin.cons a₂.1 a_2))
      (antidiagonal n)
state_after: k n : ℕ
⊢ (∀ (a b : ℕ),
      a + b = n →
        Pairwise (fun a_2 b => Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a a_2) (Fin.cons a b))
          (antidiagonalTuple k b)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a₁.1 a) (Fin.cons a₂.1 a_2))
      (antidiagonal n)

tactic: simp only [Fin.pi_lex_lt_cons_cons, eq_self_iff_true, true_and_iff, lt_self_iff_false,
  false_or_iff]
state_before: k n : ℕ
⊢ (∀ (a b : ℕ),
      a + b = n →
        Pairwise (fun a_2 b => Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a a_2) (Fin.cons a b))
          (antidiagonalTuple k b)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            Pi.Lex (fun x x_1 => x < x_1) (fun x x x_1 => x < x_1) (Fin.cons a₁.1 a) (Fin.cons a₂.1 a_2))
      (antidiagonal n)
state_after: k n : ℕ
⊢ (∀ (a b : ℕ),
      a + b = n →
        Pairwise (fun a b => Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a b) (antidiagonalTuple k b)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
      (antidiagonal n)

tactic: refine ⟨fun _ _ _ => antidiagonalTuple_pairwise_pi_lex k _, ?_⟩
state_before: k n : ℕ
⊢ (∀ (a b : ℕ),
      a + b = n →
        Pairwise (fun a b => Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a b) (antidiagonalTuple k b)) ∧
    Pairwise
      (fun a₁ a₂ =>
        ∀ a ∈ antidiagonalTuple k a₁.2,
          ∀ a_2 ∈ antidiagonalTuple k a₂.2,
            a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
      (antidiagonal n)
state_after: k n : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)

tactic: induction' n with n n_ih
state_before: k n : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
state_after: case zero
k : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal 0)

case succ
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal (n + 1))

tactic: rw [antidiagonal_zero]
state_before: case zero
k : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal 0)
state_after: case zero
k : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    [(0, 0)]

tactic: exact List.pairwise_singleton _ _
state_before: case zero
k : ℕ
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    [(0, 0)]
state_after: no goals

tactic: rw [antidiagonal_succ, List.pairwise_cons, List.pairwise_map]
state_before: case succ
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal (n + 1))
state_after: case succ
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ (∀ a' ∈ map (Prod.map Nat.succ id) (antidiagonal n),
      ∀ a ∈ antidiagonalTuple k (0, n + 1).2,
        ∀ a_2 ∈ antidiagonalTuple k a'.2,
          (0, n + 1).1 < a'.1 ∨ (0, n + 1).1 = a'.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2) ∧
    Pairwise
      (fun a b =>
        ∀ a_1 ∈ antidiagonalTuple k (Prod.map Nat.succ id a).2,
          ∀ a_3 ∈ antidiagonalTuple k (Prod.map Nat.succ id b).2,
            (Prod.map Nat.succ id a).1 < (Prod.map Nat.succ id b).1 ∨
              (Prod.map Nat.succ id a).1 = (Prod.map Nat.succ id b).1 ∧
                Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
      (antidiagonal n)

tactic: refine ⟨fun p hp x hx y hy => ?_, ?_⟩
state_before: case succ
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ (∀ a' ∈ map (Prod.map Nat.succ id) (antidiagonal n),
      ∀ a ∈ antidiagonalTuple k (0, n + 1).2,
        ∀ a_2 ∈ antidiagonalTuple k a'.2,
          (0, n + 1).1 < a'.1 ∨ (0, n + 1).1 = a'.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2) ∧
    Pairwise
      (fun a b =>
        ∀ a_1 ∈ antidiagonalTuple k (Prod.map Nat.succ id a).2,
          ∀ a_3 ∈ antidiagonalTuple k (Prod.map Nat.succ id b).2,
            (Prod.map Nat.succ id a).1 < (Prod.map Nat.succ id b).1 ∨
              (Prod.map Nat.succ id a).1 = (Prod.map Nat.succ id b).1 ∧
                Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
      (antidiagonal n)
state_after: case succ.refine_1
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
p : ℕ × ℕ
hp : p ∈ map (Prod.map Nat.succ id) (antidiagonal n)
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
hy : y ∈ antidiagonalTuple k p.2
⊢ (0, n + 1).1 < p.1 ∨ (0, n + 1).1 = p.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y

case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k (Prod.map Nat.succ id a).2,
        ∀ a_3 ∈ antidiagonalTuple k (Prod.map Nat.succ id b).2,
          (Prod.map Nat.succ id a).1 < (Prod.map Nat.succ id b).1 ∨
            (Prod.map Nat.succ id a).1 = (Prod.map Nat.succ id b).1 ∧
              Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)

tactic: dsimp
state_before: case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k (Prod.map Nat.succ id a).2,
        ∀ a_3 ∈ antidiagonalTuple k (Prod.map Nat.succ id b).2,
          (Prod.map Nat.succ id a).1 < (Prod.map Nat.succ id b).1 ∨
            (Prod.map Nat.succ id a).1 = (Prod.map Nat.succ id b).1 ∧
              Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)
state_after: case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k a.2,
        ∀ a_3 ∈ antidiagonalTuple k b.2,
          a.1 + 1 < b.1 + 1 ∨ a.1 + 1 = b.1 + 1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)

tactic: simp_rw [Nat.succ_inj', Nat.succ_lt_succ_iff]
state_before: case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k a.2,
        ∀ a_3 ∈ antidiagonalTuple k b.2,
          a.1 + 1 < b.1 + 1 ∨ a.1 + 1 = b.1 + 1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)
state_after: case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k a.2,
        ∀ a_3 ∈ antidiagonalTuple k b.2,
          a.1 < b.1 ∨ a.1 = b.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)

tactic: exact n_ih
state_before: case succ.refine_2
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
⊢ Pairwise
    (fun a b =>
      ∀ a_1 ∈ antidiagonalTuple k a.2,
        ∀ a_3 ∈ antidiagonalTuple k b.2,
          a.1 < b.1 ∨ a.1 = b.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a_1 a_3)
    (antidiagonal n)
state_after: no goals

tactic: rw [List.mem_map, Prod.exists] at hp
state_before: case succ.refine_1
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
p : ℕ × ℕ
hp : p ∈ map (Prod.map Nat.succ id) (antidiagonal n)
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
hy : y ∈ antidiagonalTuple k p.2
⊢ (0, n + 1).1 < p.1 ∨ (0, n + 1).1 = p.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y
state_after: case succ.refine_1
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
p : ℕ × ℕ
hp : ∃ a b, (a, b) ∈ antidiagonal n ∧ Prod.map Nat.succ id (a, b) = p
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
hy : y ∈ antidiagonalTuple k p.2
⊢ (0, n + 1).1 < p.1 ∨ (0, n + 1).1 = p.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y

tactic: obtain ⟨a, b, _, rfl : (Nat.succ a, b) = p⟩ := hp
state_before: case succ.refine_1
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
p : ℕ × ℕ
hp : ∃ a b, (a, b) ∈ antidiagonal n ∧ Prod.map Nat.succ id (a, b) = p
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
hy : y ∈ antidiagonalTuple k p.2
⊢ (0, n + 1).1 < p.1 ∨ (0, n + 1).1 = p.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y
state_after: case succ.refine_1.intro.intro.intro
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
a b : ℕ
left✝ : (a, b) ∈ antidiagonal n
hy : y ∈ antidiagonalTuple k (a.succ, b).2
⊢ (0, n + 1).1 < (a.succ, b).1 ∨
    (0, n + 1).1 = (a.succ, b).1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y

tactic: exact Or.inl (Nat.zero_lt_succ _)
state_before: case succ.refine_1.intro.intro.intro
k n : ℕ
n_ih :
  Pairwise
    (fun a₁ a₂ =>
      ∀ a ∈ antidiagonalTuple k a₁.2,
        ∀ a_2 ∈ antidiagonalTuple k a₂.2,
          a₁.1 < a₂.1 ∨ a₁.1 = a₂.1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) a a_2)
    (antidiagonal n)
x : Fin k → ℕ
hx : x ∈ antidiagonalTuple k (0, n + 1).2
y : Fin k → ℕ
a b : ℕ
left✝ : (a, b) ∈ antidiagonal n
hy : y ∈ antidiagonalTuple k (a.succ, b).2
⊢ (0, n + 1).1 < (a.succ, b).1 ∨
    (0, n + 1).1 = (a.succ, b).1 ∧ Pi.Lex (fun x x_1 => x < x_1) (fun i x x_1 => x < x_1) x y
state_after: no goals