File: .lake/packages/lean4/src/lean/Lean/Meta/Tactic/LinearArith/Solver.lean

full_name: Lean.Meta.Linear.Var.id
code: structure Var where
  id : Nat
  deriving Inhabited, Ord, DecidableEq, Repr
goal: Nat

full_name: Lean.Meta.Linear.instReprVar
code: structure Var where
  id : Nat
  deriving Inhabited, Ord, DecidableEq, Repr
goal: Repr Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.Var
code: structure Var where
  id : Nat
  deriving Inhabited, Ord, DecidableEq, Repr
goal: Type

full_name: Lean.Meta.Linear.instInhabitedVar
code: structure Var where
  id : Nat
  deriving Inhabited, Ord, DecidableEq, Repr
goal: Inhabited Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.instOrdVar
code: structure Var where
  id : Nat
  deriving Inhabited, Ord, DecidableEq, Repr
goal: Ord Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.instLTVar
code: instance : LT Var 
goal: LT Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.instDecidableLtVar
code: instance (a b : Var) : Decidable (a < b) 
goal: Decidable (a < b)

full_name: Lean.Meta.Linear.Assignment
code: structure Assignment where
  val : Array Rat := #[]
  deriving Inhabited
goal: Type

full_name: Lean.Meta.Linear.Assignment.val
code: structure Assignment where
  val : Array Rat := #[]
  deriving Inhabited
goal: Array Lean.Rat

full_name: Lean.Meta.Linear.instInhabitedAssignment
code: structure Assignment where
  val : Array Rat := #[]
  deriving Inhabited
goal: Inhabited Lean.Meta.Linear.Assignment

full_name: Lean.Meta.Linear.Assignment.size
code: abbrev Assignment.size (a : Assignment) : Nat 
goal: Nat

full_name: Lean.Meta.Linear.Assignment.get?
code: abbrev Assignment.get? (a : Assignment) (x : Var) : Option Rat 
goal: Option Lean.Rat

full_name: Lean.Meta.Linear.Assignment.push
code: abbrev Assignment.push (a : Assignment) (v : Rat) : Assignment 
goal: Lean.Meta.Linear.Assignment

full_name: Lean.Meta.Linear.Assignment.shrink
code: abbrev Assignment.shrink (a : Assignment) (newSize : Nat) : Assignment 
goal: Lean.Meta.Linear.Assignment

full_name: Lean.Meta.Linear.Poly
code: structure Poly where
  val : Array (Int × Var)
  deriving Inhabited, Repr, DecidableEq
goal: Type

full_name: Lean.Meta.Linear.instReprPoly
code: structure Poly where
  val : Array (Int × Var)
  deriving Inhabited, Repr, DecidableEq
goal: Repr Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.val
code: structure Poly where
  val : Array (Int × Var)
  deriving Inhabited, Repr, DecidableEq
goal: Array (Int × Lean.Meta.Linear.Var)

full_name: Lean.Meta.Linear.instInhabitedPoly
code: structure Poly where
  val : Array (Int × Var)
  deriving Inhabited, Repr, DecidableEq
goal: Inhabited Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.size
code: abbrev Poly.size (e : Poly) : Nat 
goal: Nat

full_name: Lean.Meta.Linear.Poly.getMaxVarCoeff
code: abbrev Poly.getMaxVarCoeff (e : Poly) : Int 
goal: Int

full_name: Lean.Meta.Linear.Poly.getMaxVar
code: abbrev Poly.getMaxVar (e : Poly) : Var 
goal: Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.Poly.get
code: abbrev Poly.get (e : Poly) (i : Fin e.size) : Int × Var 
goal: Int × Lean.Meta.Linear.Var

full_name: Lean.Meta.Linear.Poly.scale
code: def Poly.scale (d : Int) (e : Poly) : Poly 
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.add.go
code: def Poly.add (e₁ e₂ : Poly) : Poly 
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.add
code: def Poly.add (e₁ e₂ : Poly) : Poly 
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.combine
code: def Poly.combine (d₁ : Int) (e₁ : Poly) (d₂ : Int) (e₂ : Poly) : Poly 
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.combine.go
code: def Poly.combine (d₁ : Int) (e₁ : Poly) (d₂ : Int) (e₂ : Poly) : Poly 
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.Poly.eval?
code: def Poly.eval? (e : Poly) (a : Assignment) : Option Rat 
goal: Option Lean.Rat

full_name: Lean.Meta.Linear.instInhabitedAssumptionId
code: structure AssumptionId where
  id : Nat := 0
  deriving Inhabited, DecidableEq, Repr
goal: Inhabited Lean.Meta.Linear.AssumptionId

full_name: Lean.Meta.Linear.instReprAssumptionId
code: structure AssumptionId where
  id : Nat := 0
  deriving Inhabited, DecidableEq, Repr
goal: Repr Lean.Meta.Linear.AssumptionId

full_name: Lean.Meta.Linear.AssumptionId
code: structure AssumptionId where
  id : Nat := 0
  deriving Inhabited, DecidableEq, Repr
goal: Type

full_name: Lean.Meta.Linear.AssumptionId.id
code: structure AssumptionId where
  id : Nat := 0
  deriving Inhabited, DecidableEq, Repr
goal: Nat

full_name: Lean.Meta.Linear.instBEqJustification
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: BEq Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.instReprJustification
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Repr Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.instInhabitedJustification
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Inhabited Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.Justification
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Type

full_name: Lean.Meta.Linear.Justification.assumption
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.Justification.combine
code: inductive Justification where
  | combine (c₁ : Int) (j₁ : Justification) (c₂ : Int) (j₂ : Justification)
  | assumption (id : AssumptionId)
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.instInhabitedCnstrKind
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Inhabited Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.CnstrKind
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Type

full_name: Lean.Meta.Linear.CnstrKind.div
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.instDecidableEqCnstrKind
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: DecidableEq Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.CnstrKind.eq
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.CnstrKind.lt
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.instReprCnstrKind
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Repr Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.CnstrKind.le
code: inductive CnstrKind where
  | eq | div | lt | le
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.instBEqCnstrKind
code: BEq
goal: BEq Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.Cnstr
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Type

full_name: Lean.Meta.Linear.instBEqCnstr
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: BEq Lean.Meta.Linear.Cnstr

full_name: Lean.Meta.Linear.Cnstr.kind
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.CnstrKind

full_name: Lean.Meta.Linear.Cnstr.rhs
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Int

full_name: Lean.Meta.Linear.Cnstr.jst
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.Justification

full_name: Lean.Meta.Linear.Cnstr.lhs
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Lean.Meta.Linear.Poly

full_name: Lean.Meta.Linear.instReprCnstr
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Repr Lean.Meta.Linear.Cnstr

full_name: Lean.Meta.Linear.instInhabitedCnstr
code: structure Cnstr where
  kind : CnstrKind
  lhs  : Poly
  rhs  : Int
  jst  : Justification
  deriving Inhabited, DecidableEq, BEq, Repr
goal: Inhabited Lean.Meta.Linear.Cnstr

full_name: Lean.Meta.Linear.Cnstr.isStrict
code: abbrev Cnstr.isStrict (c : Cnstr) : Bool 
goal: Bool

full_name: Lean.Meta.Linear.Cnstr.getBound
code: def Cnstr.getBound (c : Cnstr) (a : Assignment) : Rat 
goal: Lean.Rat

full_name: Lean.Meta.Linear.Cnstr.isUnsat
code: def Cnstr.isUnsat (c : Cnstr) (a : Assignment) : Bool 
goal: Bool

full_name: Lean.Meta.Linear.getBestBound?
code: def getBestBound? (cs : Array Cnstr) (a : Assignment) (isLower isInt : Bool) : Option (Rat × Cnstr) 
goal: Option (Lean.Rat × Lean.Meta.Linear.Cnstr)

full_name: Lean.Meta.Linear.Result.sat
code: inductive Result where
  | unsat (j : Justification)
  | unsupported
  | timeout
  | sat (a : Assignment)
goal: Lean.Meta.Linear.Result

full_name: Lean.Meta.Linear.Result
code: inductive Result where
  | unsat (j : Justification)
  | unsupported
  | timeout
  | sat (a : Assignment)
goal: Type

full_name: Lean.Meta.Linear.Result.unsat
code: inductive Result where
  | unsat (j : Justification)
  | unsupported
  | timeout
  | sat (a : Assignment)
goal: Lean.Meta.Linear.Result

full_name: Lean.Meta.Linear.Result.timeout
code: inductive Result where
  | unsat (j : Justification)
  | unsupported
  | timeout
  | sat (a : Assignment)
goal: Lean.Meta.Linear.Result

full_name: Lean.Meta.Linear.Result.unsupported
code: inductive Result where
  | unsat (j : Justification)
  | unsupported
  | timeout
  | sat (a : Assignment)
goal: Lean.Meta.Linear.Result

full_name: Lean.Meta.Linear.Context.int
code: structure Context where
  int : Array Bool
goal: Array Bool

full_name: Lean.Meta.Linear.Context
code: structure Context where
  int : Array Bool
goal: Type

full_name: Lean.Meta.Linear.State.assignment
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Lean.Meta.Linear.Assignment

full_name: Lean.Meta.Linear.State.lowers
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Array (Array Lean.Meta.Linear.Cnstr)

full_name: Lean.Meta.Linear.State
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Type

full_name: Lean.Meta.Linear.State.uppers
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Array (Array Lean.Meta.Linear.Cnstr)

full_name: Lean.Meta.Linear.instInhabitedState
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Inhabited Lean.Meta.Linear.State

full_name: Lean.Meta.Linear.State.int
code: structure State where
  lowers      : Array (Array Cnstr)
  uppers      : Array (Array Cnstr)
  int         : Array Bool
  assignment  : Assignment := {} -- partial assignment
  deriving Inhabited
goal: Array Bool

full_name: Lean.Meta.Linear.State.getNumVars
code: abbrev State.getNumVars (s : State) : Nat 
goal: Nat

full_name: Lean.Meta.Linear.State.currVar
code: abbrev State.currVar (s : State) : Nat 
goal: Nat

full_name: Lean.Meta.Linear.State.getBestLowerBound?
code: abbrev State.getBestLowerBound? (s : State) : Option (Rat × Cnstr) 
goal: Option (Lean.Rat × Lean.Meta.Linear.Cnstr)

full_name: Lean.Meta.Linear.State.getBestUpperBound?
code: abbrev State.getBestUpperBound? (s : State) : Option (Rat × Cnstr) 
goal: Option (Lean.Rat × Lean.Meta.Linear.Cnstr)

full_name: Lean.Meta.Linear.State.assignCurr
code: abbrev State.assignCurr (s : State) (v : Rat) : State 
goal: Lean.Meta.Linear.State

full_name: Lean.Meta.Linear.pickAssignment?
code: def pickAssignment? (lower : Rat) (lowerIsStrict : Bool) (upper : Rat) (upperIsStrict : Bool) : Option Rat 
goal: Option Lean.Rat

full_name: Lean.Meta.Linear.resolve
code: def resolve (s : State) (cl : Cnstr) (cu : Cnstr) : Sum Result State 
goal: Lean.Meta.Linear.Result ⊕ Lean.Meta.Linear.State

full_name: Lean.Meta.Linear.solve
code: def solve (n : Nat) (s : State) : Result 
goal: Lean.Meta.Linear.Result