/- Copyright (c) 2019 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Leonardo de Moura -/ import Lean.Meta.Instances namespace Lean.Meta private def getDefInfo (info : ConstantInfo) : MetaM (Option ConstantInfo) := do match (← read).config.transparency with | TransparencyMode.all => return some info | TransparencyMode.default => return some info | m => if (← isReducible info.name) then return some info else if m == TransparencyMode.instances && isGlobalInstance (← getEnv) info.name then return some info else return none def getConst? (constName : Name) : MetaM (Option ConstantInfo) := do let env ← getEnv match env.find? constName with | some (info@(ConstantInfo.thmInfo _)) => getTheoremInfo info | some (info@(ConstantInfo.defnInfo _)) => getDefInfo info | some info => pure (some info) | none => throwUnknownConstant constName def getConstNoEx? (constName : Name) : MetaM (Option ConstantInfo) := do let env ← getEnv match env.find? constName with | some (info@(ConstantInfo.thmInfo _)) => getTheoremInfo info | some (info@(ConstantInfo.defnInfo _)) => getDefInfo info | some info => pure (some info) | none => pure none end Meta