{motive : Lean.Meta.Grind.Arith.Cutsat.State → Sort u} →
  ((vars : Lean.PArray Lean.Expr) →
      (varMap : Lean.PHashMap Lean.Meta.Sym.ExprPtr Int.Linear.Var) →
        (vars' : Lean.PArray Lean.Expr) →
          (varMap' : Lean.PHashMap Lean.Meta.Sym.ExprPtr Int.Linear.Var) →
            (natToIntMap : Lean.PHashMap Lean.Meta.Sym.ExprPtr (Lean.Expr × Lean.Expr)) →
              (natDef : Lean.PHashMap Lean.Meta.Sym.ExprPtr Int.Linear.Var) →
                (dvds : Lean.PArray (Option Lean.Meta.Grind.Arith.Cutsat.DvdCnstr)) →
                  (lowers uppers : Lean.PArray (Lean.PArray Lean.Meta.Grind.Arith.Cutsat.LeCnstr)) →
                    (diseqs : Lean.PArray (Lean.PArray Lean.Meta.Grind.Arith.Cutsat.DiseqCnstr)) →
                      (elimEqs : Lean.PArray (Option Lean.Meta.Grind.Arith.Cutsat.EqCnstr)) →
                        (elimStack : List Int.Linear.Var) →
                          (occurs : Lean.PArray Lean.Meta.Grind.Arith.Cutsat.VarSet) →
                            (assignment : Lean.PArray ℚ) →
                              (nextCnstrId : ℕ) →
                                (caseSplits : Bool) →
                                  (conflict? : Option Lean.Meta.Grind.Arith.Cutsat.UnsatProof) →
                                    (diseqSplits : Lean.PHashMap Int.Linear.Poly Lean.FVarId) →
                                      (divMod : Lean.PHashSet (Lean.Expr × ℤ)) →
                                        (toIntIds : Lean.PHashMap Lean.Meta.Sym.ExprPtr (Option ℕ)) →
                                          (toIntInfos : Lean.PArray Lean.Meta.Grind.Arith.Cutsat.ToIntInfo) →
                                            (toIntTermMap :
                                                Lean.PHashMap Lean.Meta.Sym.ExprPtr
                                                  Lean.Meta.Grind.Arith.Cutsat.ToIntTermInfo) →
                                              (toIntVarMap : Lean.PHashMap Lean.Meta.Sym.ExprPtr Lean.Expr) →
                                                (usedCommRing : Bool) →
                                                  (nonlinearOccs : Lean.PHashMap Int.Linear.Var (List Int.Linear.Var)) →
                                                    motive
                                                      { vars := vars, varMap := varMap, vars' := vars',
                                                        varMap' := varMap', natToIntMap := natToIntMap,
                                                        natDef := natDef, dvds := dvds, lowers := lowers,
                                                        uppers := uppers, diseqs := diseqs, elimEqs := elimEqs,
                                                        elimStack := elimStack, occurs := occurs,
                                                        assignment := assignment, nextCnstrId := nextCnstrId,
                                                        caseSplits := caseSplits, conflict? := conflict?,
                                                        diseqSplits := diseqSplits, divMod := divMod,
                                                        toIntIds := toIntIds, toIntInfos := toIntInfos,
                                                        toIntTermMap := toIntTermMap, toIntVarMap := toIntVarMap,
                                                        usedCommRing := usedCommRing,
                                                        nonlinearOccs := nonlinearOccs }) →
    (t : Lean.Meta.Grind.Arith.Cutsat.State) → motive t