In principle, we only need to support two kinds of case split.
- Disequalities.
- Cooper-Left, but we have 4 different variants of this one.
- diseq (d : DiseqCnstr) : CaseKind
- cooper (s : CooperSplitPred) (hs : Array (FVarId × UnsatProof)) (decVars : FVarIdSet) : CaseKind
Instances For
Equations
- Lean.Meta.Grind.Arith.Cutsat.instInhabitedCase = { default := { kind := default, fvarId := default, saved := default } }
@[reducible, inline]
Returns true
if approximations are allowed.
Equations
- Lean.Meta.Grind.Arith.Cutsat.isApprox = do let __do_lift ← read pure (__do_lift == Lean.Meta.Grind.Arith.Cutsat.Search.Kind.rat)
Sets precise
to false
to indicate that some constraint was not satisfied.
Equations
- Lean.Meta.Grind.Arith.Cutsat.setImprecise = modify fun (s : Lean.Meta.Grind.Arith.Cutsat.Search.State) => { cases := s.cases, precise := false, decVars := s.decVars }
Equations
- One or more equations did not get rendered due to their size.