∀ (motive : Lean.Grind.CommRing.Power → Lean.Grind.CommRing.Power → Sort u_1) (x x_1 : Lean.Grind.CommRing.Power)
  (h_1 :
    (a : Lean.Grind.CommRing.Var) →
      (a_1 : ℕ) → (b : Lean.Grind.CommRing.Var) → (b_1 : ℕ) → motive { x := a, k := a_1 } { x := b, k := b_1 })
  (h_2 : (x x_2 : Lean.Grind.CommRing.Power) → motive x x_2),
  (∀ (a : Lean.Grind.CommRing.Var) (a_1 : ℕ) (b : Lean.Grind.CommRing.Var) (b_1 : ℕ),
      x = { x := a, k := a_1 } → x_1 = { x := b, k := b_1 } → False) →
    (match x, x_1 with
      | { x := a, k := a_1 }, { x := b, k := b_1 } => h_1 a a_1 b b_1
      | x, x_3 => h_2 x x_3) =
      h_2 x x_1