Documentation

Lean.Level

def Nat.imax (n : Nat) (m : Nat) :
Equations
  • n.imax m = if m = 0 then 0 else n.max m

Cached hash code, cached results, and other data for Level. hash : 32-bits hasMVar : 1-bit hasParam : 1-bit depth : 24-bits

Equations
Instances For
Equations
Equations
Equations
Equations
Equations
def Lean.Level.mkData (h : UInt64) (depth : optParam Nat 0) (hasMVar : optParam Bool false) (hasParam : optParam Bool false) :
Equations
  • One or more equations did not get rendered due to their size.
Equations
  • One or more equations did not get rendered due to their size.
Equations
Equations
Instances For
Equations
Equations
instance Lean.instForInLMVarIdMapProdLMVarId {m : Type u_1 → Type u_2} {α : Type} :
Equations
Equations
  • Lean.instInhabitedLMVarIdMap = { default := }
@[implemented_by Lean.Level.data._override]
Equations
Equations
  • u.hash = u.data.hash
Equations
  • u.depth = u.data.depth.toNat
Equations
  • u.hasMVar = u.data.hasMVar
Equations
  • u.hasParam = u.data.hasParam
@[export lean_level_hash]
Equations
  • u.hashEx = (hash u).toUInt32
@[export lean_level_depth]
Equations
  • u.depthEx = u.data.depth
@[export lean_level_mk_zero]
Equations
Equations
Equations
  • x.isSucc = match x with | a.succ => true | x => false
Equations
  • x.isMax = match x with | a.max a_1 => true | x => false
Equations
  • x.isIMax = match x with | a.imax a_1 => true | x => false
Equations
  • x.isMaxIMax = match x with | a.max a_1 => true | a.imax a_1 => true | x => false
Equations
Equations
Equations

If result is true, then forall assignments A which assigns all parameters and metavariables occurring in l, l[A] != zero

Equations
Equations
Equations
  • u.succ.getOffsetAux x = u.getOffsetAux (x + 1)
  • x✝.getOffsetAux x = x
Equations
  • lvl.getOffset = lvl.getOffsetAux 0
Equations
  • a.succ.getLevelOffset = a.getLevelOffset
  • x.getLevelOffset = x
Equations
@[extern lean_level_eq]

occurs u l return true iff u occurs in l.

Equations
  • x.occurs v₁.succ = (x == v₁.succ || x.occurs v₁)
  • x.occurs (v₁.max v₂) = (x == v₁.max v₂ || x.occurs v₁ || x.occurs v₂)
  • x.occurs (v₁.imax v₂) = (x == v₁.imax v₂ || x.occurs v₁ || x.occurs v₂)
  • x✝.occurs x = (x✝ == x)
Equations
@[irreducible]

A total order on level expressions that has the following properties

  • succ l is an immediate successor of l.
  • zero is the minimal element. This total order is used in the normalization procedure.
Equations
  • l₁.normLt l₂ = l₁.normLtAux 0 l₂ 0

Return true if u and v denote the same level. Check is currently incomplete.

Equations
  • u.isEquiv v = (u == v || u.normalize == v.normalize)

Reduce (if possible) universe level by 1

Equations
Equations
Equations
Equations
Equations
Equations

The update functions try to avoid allocating new values using pointer equality. Note that if the update*! functions are used under a match-expression, the compiler will eliminate the double-match.

@[implemented_by _private.Lean.Level.0.Lean.Level.updateSucc!Impl]
Equations
@[implemented_by _private.Lean.Level.0.Lean.Level.updateMax!Impl]
Equations
@[implemented_by _private.Lean.Level.0.Lean.Level.updateIMax!Impl]
Equations
@[specialize #[]]
Equations
Equations
Equations
@[irreducible]
Equations
@[reducible, inline]
abbrev Lean.LevelMap (α : Type) :
Equations
@[reducible, inline]
Equations
@[reducible, inline]
Equations
Equations
  • v.succ.collectMVars s = v.collectMVars s
  • (u_2.max v).collectMVars s = u_2.collectMVars (v.collectMVars s)
  • (u_2.imax v).collectMVars s = u_2.collectMVars (v.collectMVars s)
  • (Lean.Level.mvar n).collectMVars s = Lean.RBTree.insert s n
  • u.collectMVars s = s
Equations
Equations
  • u.any p = (u.find? p).isSome
@[reducible, inline]
abbrev Nat.toLevel (n : Nat) :
Equations