File: .lake/packages/lean4/src/lean/Lean/Meta/LevelDefEq.lean

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.strictOccursMax.visit
code: /--
  Return true iff `lvl` occurs in `max u_1 ... u_n` and `lvl != u_i` for all `i in [1, n]`.
  That is, `lvl` is a proper level subterm of some `u_i`. -/
private def strictOccursMax (lvl : Level) : Level → Bool
  
goal: Lean.Level → Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.strictOccursMax
code: /--
  Return true iff `lvl` occurs in `max u_1 ... u_n` and `lvl != u_i` for all `i in [1, n]`.
  That is, `lvl` is a proper level subterm of some `u_i`. -/
private def strictOccursMax (lvl : Level) : Level → Bool
  
goal: Lean.Level → Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.mkMaxArgsDiff
code: /-- `mkMaxArgsDiff mvarId (max u_1 ... (mvar mvarId) ... u_n) v` => `max v u_1 ... u_n` -/
private def mkMaxArgsDiff (mvarId : LMVarId) : Level → Level → Level
  
goal: Lean.Level → Lean.Level → Lean.Level

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.solveSelfMax
code: /--
Solves `?m =?= max ?m v` by creating a fresh metavariable `?n`
and assigning `?m := max ?n v`
-/
private def solveSelfMax (mvarId : LMVarId) (v : Level) : MetaM Unit 
goal: Lean.MetaM Unit

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.tryApproxSelfMax
code: /--
Returns true if `v` is `max u ?m` (or variant). That is, we solve `u =?= max u ?m` as `?m := u`.
This is an approximation. For example, we ignore the solution `?m := 0`.
-/
-- TODO: investigate whether we need to improve this approximation.
private def tryApproxSelfMax (u v : Level) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.tryApproxSelfMax.solve
code: /--
Returns true if `v` is `max u ?m` (or variant). That is, we solve `u =?= max u ?m` as `?m := u`.
This is an approximation. For example, we ignore the solution `?m := 0`.
-/
-- TODO: investigate whether we need to improve this approximation.
private def tryApproxSelfMax (u v : Level) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.tryApproxMaxMax
code: /--
Returns true if `u` of the form `max u₁ u₂` and `v` of the form `max u₁ ?w` (or variant).
That is, we solve `max u₁ u₂ =?= max u₁ ?v` as `?v := u₂`.
This is an approximation. For example, we ignore the solution `?w := max u₁ u₂`.
-/
-- TODO: investigate whether we need to improve this approximation.
private def tryApproxMaxMax (u v : Level) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.tryApproxMaxMax.solve
code: /--
Returns true if `u` of the form `max u₁ u₂` and `v` of the form `max u₁ ?w` (or variant).
That is, we solve `max u₁ u₂ =?= max u₁ ?v` as `?v := u₂`.
This is an approximation. For example, we ignore the solution `?w := max u₁ u₂`.
-/
-- TODO: investigate whether we need to improve this approximation.
private def tryApproxMaxMax (u v : Level) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.postponeIsLevelDefEq
code: private def postponeIsLevelDefEq (lhs : Level) (rhs : Level) : MetaM Unit 
goal: Lean.MetaM Unit

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.LevelDefEq.0.Lean.Meta.isMVarWithGreaterDepth
code: private def isMVarWithGreaterDepth (v : Level) (mvarId : LMVarId) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.LevelDefEq._hyg.1929
code: builtin_initialize
  registerTraceClass `Meta.isLevelDefEq
  registerTraceClass `Meta.isLevelDefEq.stuck (inherited := true)
goal: IO Unit