Equations
- Lean.instBEqLiteral = { beq := [anonymous] }
Equations
- Lean.instReprLiteral = { reprPrec := [anonymous] }
Equations
- Lean.instInhabitedLiteral = { default := Lean.Literal.natVal default }
Equations
- Lean.Literal.hash x = match x with | Lean.Literal.natVal v => hash v | Lean.Literal.strVal v => hash v
Equations
- Lean.instHashableLiteral = { hash := Lean.Literal.hash }
Equations
- Lean.Literal.lt x x = match x, x with | Lean.Literal.natVal x, Lean.Literal.strVal x_1 => true | Lean.Literal.natVal v₁, Lean.Literal.natVal v₂ => decide (v₁ < v₂) | Lean.Literal.strVal v₁, Lean.Literal.strVal v₂ => decide (v₁ < v₂) | x, x_1 => false
Equations
- Lean.instLTLiteral = { lt := fun a b => Lean.Literal.lt a b = true }
Equations
- default: Lean.BinderInfo
- implicit: Lean.BinderInfo
- strictImplicit: Lean.BinderInfo
- instImplicit: Lean.BinderInfo
- auxDecl: Lean.BinderInfo
Equations
- Lean.instBEqBinderInfo = { beq := [anonymous] }
Equations
- Lean.instInhabitedBinderInfo = { default := Lean.BinderInfo.default }
Equations
- Lean.instReprBinderInfo = { reprPrec := [anonymous] }
Equations
- Lean.BinderInfo.hash x = match x with | Lean.BinderInfo.default => 947 | Lean.BinderInfo.implicit => 1019 | Lean.BinderInfo.strictImplicit => 1087 | Lean.BinderInfo.instImplicit => 1153 | Lean.BinderInfo.auxDecl => 1229
Equations
- Lean.BinderInfo.isExplicit x = match x with | Lean.BinderInfo.implicit => false | Lean.BinderInfo.strictImplicit => false | Lean.BinderInfo.instImplicit => false | x => true
Equations
- Lean.instHashableBinderInfo = { hash := Lean.BinderInfo.hash }
Equations
- Lean.BinderInfo.isInstImplicit x = match x with | Lean.BinderInfo.instImplicit => true | x => false
Equations
- Lean.BinderInfo.isImplicit x = match x with | Lean.BinderInfo.implicit => true | x => false
Equations
- Lean.BinderInfo.isStrictImplicit x = match x with | Lean.BinderInfo.strictImplicit => true | x => false
Equations
- Lean.BinderInfo.isAuxDecl x = match x with | Lean.BinderInfo.auxDecl => true | x => false
@[inline]
Equations
- Lean.MData.empty = { entries := [] }
Equations
Equations
Equations
- Lean.instBEqData_1 = { beq := fun a b => a == b }
Equations
- Lean.Expr.Data.approxDepth c = UInt64.toUInt8 (UInt64.land (UInt64.shiftRight c 40) 255)
Equations
Equations
- Lean.Expr.Data.hasFVar c = (UInt64.land (UInt64.shiftRight c 32) 1 == 1)
Equations
- Lean.Expr.Data.hasExprMVar c = (UInt64.land (UInt64.shiftRight c 33) 1 == 1)
Equations
- Lean.Expr.Data.hasLevelMVar c = (UInt64.land (UInt64.shiftRight c 34) 1 == 1)
Equations
- Lean.Expr.Data.hasLevelParam c = (UInt64.land (UInt64.shiftRight c 35) 1 == 1)
Equations
- Lean.Expr.Data.nonDepLet c = (UInt64.land (UInt64.shiftRight c 36) 1 == 1)
@[extern c inline "(uint8_t)((#1 << 24) >> 61)"]
Equations
- Lean.Expr.Data.binderInfo c = let bi := UInt64.shiftRight (UInt64.shiftLeft c 24) 61; if (bi == 0) = true then Lean.BinderInfo.default else if (bi == 1) = true then Lean.BinderInfo.implicit else if (bi == 2) = true then Lean.BinderInfo.strictImplicit else if (bi == 3) = true then Lean.BinderInfo.instImplicit else Lean.BinderInfo.auxDecl
@[extern c inline "(uint64_t)#1"]
Equations
- Lean.BinderInfo.toUInt64 x = match x with | Lean.BinderInfo.default => 0 | Lean.BinderInfo.implicit => 1 | Lean.BinderInfo.strictImplicit => 2 | Lean.BinderInfo.instImplicit => 3 | Lean.BinderInfo.auxDecl => 4
def
Lean.Expr.mkData
(h : UInt64)
(looseBVarRange : optParam Nat 0)
(approxDepth : optParam UInt32 0)
(hasFVar : optParam Bool false)
(hasExprMVar : optParam Bool false)
(hasLevelMVar : optParam Bool false)
(hasLevelParam : optParam Bool false)
(bi : optParam Lean.BinderInfo Lean.BinderInfo.default)
(nonDepLet : optParam Bool false)
:
Equations
- Lean.Expr.mkData h looseBVarRange approxDepth hasFVar hasExprMVar hasLevelMVar hasLevelParam bi nonDepLet = let approxDepth := if approxDepth > 255 then 255 else UInt32.toUInt8 approxDepth; if looseBVarRange > Nat.pow 2 16 - 1 then panicWithPosWithDecl "Lean.Expr" "Lean.Expr.mkData" 136 44 "bound variable index is too big" else let r := UInt32.toUInt64 (UInt64.toUInt32 h) + UInt64.shiftLeft (Bool.toUInt64 hasFVar) 32 + UInt64.shiftLeft (Bool.toUInt64 hasExprMVar) 33 + UInt64.shiftLeft (Bool.toUInt64 hasLevelMVar) 34 + UInt64.shiftLeft (Bool.toUInt64 hasLevelParam) 35 + UInt64.shiftLeft (Bool.toUInt64 nonDepLet) 36 + UInt64.shiftLeft (Lean.BinderInfo.toUInt64 bi) 37 + UInt64.shiftLeft (UInt8.toUInt64 approxDepth) 40 + UInt64.shiftLeft (Nat.toUInt64 looseBVarRange) 48; r
@[inline]
def
Lean.Expr.mkDataForBinder
(h : UInt64)
(looseBVarRange : Nat)
(approxDepth : UInt32)
(hasFVar : Bool)
(hasExprMVar : Bool)
(hasLevelMVar : Bool)
(hasLevelParam : Bool)
(bi : Lean.BinderInfo)
:
Equations
- Lean.Expr.mkDataForBinder h looseBVarRange approxDepth hasFVar hasExprMVar hasLevelMVar hasLevelParam bi = Lean.Expr.mkData h looseBVarRange approxDepth hasFVar hasExprMVar hasLevelMVar hasLevelParam bi
@[inline]
def
Lean.Expr.mkDataForLet
(h : UInt64)
(looseBVarRange : Nat)
(approxDepth : UInt32)
(hasFVar : Bool)
(hasExprMVar : Bool)
(hasLevelMVar : Bool)
(hasLevelParam : Bool)
(nonDepLet : Bool)
:
Equations
- Lean.Expr.mkDataForLet h looseBVarRange approxDepth hasFVar hasExprMVar hasLevelMVar hasLevelParam nonDepLet = Lean.Expr.mkData h looseBVarRange approxDepth hasFVar hasExprMVar hasLevelMVar hasLevelParam Lean.BinderInfo.default nonDepLet
Equations
- Lean.instReprData_1 = { reprPrec := fun v prec => Id.run (let r := "Expr.mkData " ++ toString (Lean.Expr.Data.hash v); let _do_jp := fun r y => let _do_jp := fun r y => let _do_jp := fun r y => let _do_jp := fun r y => let _do_jp := fun r y => let _do_jp := fun r y => let _do_jp := fun r y => Repr.addAppParen (Std.Format.text r) prec; if (Lean.Expr.Data.binderInfo v == Lean.BinderInfo.default) = true then let r := r ++ " (bi := " ++ toString (repr (Lean.Expr.Data.binderInfo v)) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if Lean.Expr.Data.nonDepLet v = true then let r := r ++ " (nonDepLet := " ++ toString (Lean.Expr.Data.nonDepLet v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if Lean.Expr.Data.hasLevelMVar v = true then let r := r ++ " (hasLevelMVar := " ++ toString (Lean.Expr.Data.hasLevelMVar v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if Lean.Expr.Data.hasExprMVar v = true then let r := r ++ " (hasExprMVar := " ++ toString (Lean.Expr.Data.hasExprMVar v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if Lean.Expr.Data.hasFVar v = true then let r := r ++ " (hasFVar := " ++ toString (Lean.Expr.Data.hasFVar v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if (Lean.Expr.Data.approxDepth v != 0) = true then let r := r ++ " (approxDepth := " ++ toString (Lean.Expr.Data.approxDepth v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y; if (Lean.Expr.Data.looseBVarRange v != 0) = true then let r := r ++ " (looseBVarRange := " ++ toString (Lean.Expr.Data.looseBVarRange v) ++ ")"; do let y ← pure PUnit.unit _do_jp r y else do let y ← pure PUnit.unit _do_jp r y) }
Equations
- Lean.instInhabitedFVarId = { default := { name := default } }
Equations
- Lean.instBEqFVarId = { beq := [anonymous] }
Equations
- Lean.instHashableFVarId = { hash := [anonymous] }
Equations
- Lean.instReprFVarId = { reprPrec := fun n p => reprPrec n.name p }
Equations
- Lean.FVarIdSet = Std.RBTree Lean.FVarId fun a a_1 => Lean.Name.quickCmp a.name a_1.name
Equations
- Lean.instForInFVarIdSetFVarId = inferInstanceAs (ForIn m (Std.RBTree Lean.FVarId fun a a_1 => Lean.Name.quickCmp a.name a_1.name) Lean.FVarId)
Equations
Equations
- Lean.FVarIdMap α = Std.RBMap Lean.FVarId α fun a a_1 => Lean.Name.quickCmp a.name a_1.name
Equations
- Lean.instEmptyCollectionFVarIdMap = inferInstanceAs (EmptyCollection (Std.RBMap Lean.FVarId α fun a a_1 => Lean.Name.quickCmp a.name a_1.name))
- bvar: Nat → Lean.Expr.Data → Lean.Expr
- fvar: Lean.FVarId → Lean.Expr.Data → Lean.Expr
- mvar: Lean.MVarId → Lean.Expr.Data → Lean.Expr
- sort: Lean.Level → Lean.Expr.Data → Lean.Expr
- const: Lean.Name → List Lean.Level → Lean.Expr.Data → Lean.Expr
- app: Lean.Expr → Lean.Expr → Lean.Expr.Data → Lean.Expr
- lam: Lean.Name → Lean.Expr → Lean.Expr → Lean.Expr.Data → Lean.Expr
- forallE: Lean.Name → Lean.Expr → Lean.Expr → Lean.Expr.Data → Lean.Expr
- letE: Lean.Name → Lean.Expr → Lean.Expr → Lean.Expr → Lean.Expr.Data → Lean.Expr
- lit: Lean.Literal → Lean.Expr.Data → Lean.Expr
- mdata: Lean.MData → Lean.Expr → Lean.Expr.Data → Lean.Expr
- proj: Lean.Name → Nat → Lean.Expr → Lean.Expr.Data → Lean.Expr
Equations
- Lean.instReprExpr = { reprPrec := [anonymous] }
Equations
- Lean.instInhabitedExpr = { default := Lean.Expr.bvar default default }
@[inline]
Equations
- Lean.Expr.data x = match x with | Lean.Expr.bvar x d => d | Lean.Expr.fvar x d => d | Lean.Expr.mvar x d => d | Lean.Expr.sort x d => d | Lean.Expr.const x x_1 d => d | Lean.Expr.app x x_1 d => d | Lean.Expr.lam x x_1 x_2 d => d | Lean.Expr.forallE x x_1 x_2 d => d | Lean.Expr.letE x x_1 x_2 x_3 d => d | Lean.Expr.lit x d => d | Lean.Expr.mdata x x_1 d => d | Lean.Expr.proj x x_1 x_2 d => d
Equations
- Lean.Expr.ctorName x = match x with | Lean.Expr.bvar x x_1 => "bvar" | Lean.Expr.fvar x x_1 => "fvar" | Lean.Expr.mvar x x_1 => "mvar" | Lean.Expr.sort x x_1 => "sort" | Lean.Expr.const x x_1 x_2 => "const" | Lean.Expr.app x x_1 x_2 => "app" | Lean.Expr.lam x x_1 x_2 x_3 => "lam" | Lean.Expr.forallE x x_1 x_2 x_3 => "forallE" | Lean.Expr.letE x x_1 x_2 x_3 x_4 => "letE" | Lean.Expr.lit x x_1 => "lit" | Lean.Expr.mdata x x_1 x_2 => "mdata" | Lean.Expr.proj x x_1 x_2 x_3 => "proj"
Equations
Equations
- Lean.Expr.instHashableExpr = { hash := Lean.Expr.hash }
Equations
Equations
Equations
Equations
- Lean.Expr.hasMVar e = let d := Lean.Expr.data e; Lean.Expr.Data.hasExprMVar d || Lean.Expr.Data.hasLevelMVar d
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
- Lean.mkConst n lvls = Lean.Expr.const n lvls (Lean.Expr.mkData (mixHash 5 (mixHash (hash n) (hash lvls))) 0 0 false false (List.any lvls Lean.Level.hasMVar) (List.any lvls Lean.Level.hasParam) Lean.BinderInfo.default)
Equations
- Lean.Literal.type x = match x with | Lean.Literal.natVal x => Lean.mkConst `Nat | Lean.Literal.strVal x => Lean.mkConst `String
Equations
Equations
- Lean.mkBVar idx = Lean.Expr.bvar idx (Lean.Expr.mkData (mixHash 7 (hash idx)) (idx + 1) 0 false false false false Lean.BinderInfo.default)
Equations
- Lean.mkSort lvl = Lean.Expr.sort lvl (Lean.Expr.mkData (mixHash 11 (hash lvl)) 0 0 false false (Lean.Level.hasMVar lvl) (Lean.Level.hasParam lvl) Lean.BinderInfo.default)
Equations
- Lean.mkFVar fvarId = Lean.Expr.fvar fvarId (Lean.Expr.mkData (mixHash 13 (hash fvarId)) 0 0 true false false false Lean.BinderInfo.default)
Equations
- Lean.mkMVar fvarId = Lean.Expr.mvar fvarId (Lean.Expr.mkData (mixHash 17 (hash fvarId)) 0 0 false true false false Lean.BinderInfo.default)
Equations
- Lean.mkMData m e = let d := Lean.Expr.approxDepth e + 1; Lean.Expr.mdata m e (Lean.Expr.mkData (mixHash (UInt32.toUInt64 d) (hash e)) (Lean.Expr.looseBVarRange e) d (Lean.Expr.hasFVar e) (Lean.Expr.hasExprMVar e) (Lean.Expr.hasLevelMVar e) (Lean.Expr.hasLevelParam e) Lean.BinderInfo.default)
Equations
- Lean.mkProj s i e = let d := Lean.Expr.approxDepth e + 1; Lean.Expr.proj s i e (Lean.Expr.mkData (mixHash (UInt32.toUInt64 d) (mixHash (hash s) (mixHash (hash i) (hash e)))) (Lean.Expr.looseBVarRange e) d (Lean.Expr.hasFVar e) (Lean.Expr.hasExprMVar e) (Lean.Expr.hasLevelMVar e) (Lean.Expr.hasLevelParam e) Lean.BinderInfo.default)
Equations
- Lean.mkApp f a = let d := max (Lean.Expr.approxDepth f) (Lean.Expr.approxDepth a) + 1; Lean.Expr.app f a (Lean.Expr.mkData (mixHash (UInt32.toUInt64 d) (mixHash (hash f) (hash a))) (max (Lean.Expr.looseBVarRange f) (Lean.Expr.looseBVarRange a)) d (Lean.Expr.hasFVar f || Lean.Expr.hasFVar a) (Lean.Expr.hasExprMVar f || Lean.Expr.hasExprMVar a) (Lean.Expr.hasLevelMVar f || Lean.Expr.hasLevelMVar a) (Lean.Expr.hasLevelParam f || Lean.Expr.hasLevelParam a) Lean.BinderInfo.default)
Equations
- Lean.mkLambda x bi t b = let d := max (Lean.Expr.approxDepth t) (Lean.Expr.approxDepth b) + 1; Lean.Expr.lam x t b (Lean.Expr.mkDataForBinder (mixHash (UInt32.toUInt64 d) (mixHash (hash t) (hash b))) (max (Lean.Expr.looseBVarRange t) (Lean.Expr.looseBVarRange b - 1)) d (Lean.Expr.hasFVar t || Lean.Expr.hasFVar b) (Lean.Expr.hasExprMVar t || Lean.Expr.hasExprMVar b) (Lean.Expr.hasLevelMVar t || Lean.Expr.hasLevelMVar b) (Lean.Expr.hasLevelParam t || Lean.Expr.hasLevelParam b) bi)
Equations
- Lean.mkForall x bi t b = let d := max (Lean.Expr.approxDepth t) (Lean.Expr.approxDepth b) + 1; Lean.Expr.forallE x t b (Lean.Expr.mkDataForBinder (mixHash (UInt32.toUInt64 d) (mixHash (hash t) (hash b))) (max (Lean.Expr.looseBVarRange t) (Lean.Expr.looseBVarRange b - 1)) d (Lean.Expr.hasFVar t || Lean.Expr.hasFVar b) (Lean.Expr.hasExprMVar t || Lean.Expr.hasExprMVar b) (Lean.Expr.hasLevelMVar t || Lean.Expr.hasLevelMVar b) (Lean.Expr.hasLevelParam t || Lean.Expr.hasLevelParam b) bi)
Equations
- Lean.mkSimpleThunkType type = Lean.mkForall Lean.Name.anonymous Lean.BinderInfo.default (Lean.mkConst `Unit) type
Equations
- Lean.mkSimpleThunk type = Lean.mkLambda `_ Lean.BinderInfo.default (Lean.mkConst `Unit) type
def
Lean.mkLet
(x : Lean.Name)
(t : Lean.Expr)
(v : Lean.Expr)
(b : Lean.Expr)
(nonDep : optParam Bool false)
:
Equations
- Lean.mkLet x t v b nonDep = let d := max (max (Lean.Expr.approxDepth t) (Lean.Expr.approxDepth v)) (Lean.Expr.approxDepth b) + 1; Lean.Expr.letE x t v b (Lean.Expr.mkDataForLet (mixHash (UInt32.toUInt64 d) (mixHash (hash t) (mixHash (hash v) (hash b)))) (max (max (Lean.Expr.looseBVarRange t) (Lean.Expr.looseBVarRange v)) (Lean.Expr.looseBVarRange b - 1)) d (Lean.Expr.hasFVar t || Lean.Expr.hasFVar v || Lean.Expr.hasFVar b) (Lean.Expr.hasExprMVar t || Lean.Expr.hasExprMVar v || Lean.Expr.hasExprMVar b) (Lean.Expr.hasLevelMVar t || Lean.Expr.hasLevelMVar v || Lean.Expr.hasLevelMVar b) (Lean.Expr.hasLevelParam t || Lean.Expr.hasLevelParam v || Lean.Expr.hasLevelParam b) nonDep)
Equations
- Lean.mkAppB f a b = Lean.mkApp (Lean.mkApp f a) b
Equations
- Lean.mkApp2 f a b = Lean.mkAppB f a b
Equations
- Lean.mkApp3 f a b c = Lean.mkApp (Lean.mkAppB f a b) c
Equations
- Lean.mkApp4 f a b c d = Lean.mkAppB (Lean.mkAppB f a b) c d
def
Lean.mkApp5
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e : Lean.Expr)
:
Equations
- Lean.mkApp5 f a b c d e = Lean.mkApp (Lean.mkApp4 f a b c d) e
def
Lean.mkApp6
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e₁ : Lean.Expr)
(e₂ : Lean.Expr)
:
Equations
- Lean.mkApp6 f a b c d e₁ e₂ = Lean.mkAppB (Lean.mkApp4 f a b c d) e₁ e₂
def
Lean.mkApp7
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e₁ : Lean.Expr)
(e₂ : Lean.Expr)
(e₃ : Lean.Expr)
:
Equations
- Lean.mkApp7 f a b c d e₁ e₂ e₃ = Lean.mkApp3 (Lean.mkApp4 f a b c d) e₁ e₂ e₃
def
Lean.mkApp8
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e₁ : Lean.Expr)
(e₂ : Lean.Expr)
(e₃ : Lean.Expr)
(e₄ : Lean.Expr)
:
Equations
- Lean.mkApp8 f a b c d e₁ e₂ e₃ e₄ = Lean.mkApp4 (Lean.mkApp4 f a b c d) e₁ e₂ e₃ e₄
def
Lean.mkApp9
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e₁ : Lean.Expr)
(e₂ : Lean.Expr)
(e₃ : Lean.Expr)
(e₄ : Lean.Expr)
(e₅ : Lean.Expr)
:
Equations
- Lean.mkApp9 f a b c d e₁ e₂ e₃ e₄ e₅ = Lean.mkApp5 (Lean.mkApp4 f a b c d) e₁ e₂ e₃ e₄ e₅
def
Lean.mkApp10
(f : Lean.Expr)
(a : Lean.Expr)
(b : Lean.Expr)
(c : Lean.Expr)
(d : Lean.Expr)
(e₁ : Lean.Expr)
(e₂ : Lean.Expr)
(e₃ : Lean.Expr)
(e₄ : Lean.Expr)
(e₅ : Lean.Expr)
(e₆ : Lean.Expr)
:
Equations
- Lean.mkApp10 f a b c d e₁ e₂ e₃ e₄ e₅ e₆ = Lean.mkApp6 (Lean.mkApp4 f a b c d) e₁ e₂ e₃ e₄ e₅ e₆
Equations
- Lean.mkLit l = Lean.Expr.lit l (Lean.Expr.mkData (mixHash 3 (hash l)) 0 0 false false false false Lean.BinderInfo.default)
Equations
Equations
- Lean.mkNatLit n = let r := Lean.mkRawNatLit n; Lean.mkApp3 (Lean.mkConst `OfNat.ofNat [Lean.levelZero]) (Lean.mkConst `Nat) r (Lean.mkApp (Lean.mkConst `instOfNatNat) r)
Equations
Equations
- Lean.mkConstEx c lvls = Lean.mkConst c lvls
Equations
- Lean.mkLambdaEx n d b bi = Lean.mkLambda n bi d b
Equations
- Lean.mkForallEx n d b bi = Lean.mkForall n bi d b
Equations
- Lean.mkLetEx n t v b = Lean.mkLet n t v b
Equations
Equations
Equations
- Lean.mkAppN f args = Array.foldl Lean.mkApp f args 0 (Array.size args)
Equations
- Lean.mkAppRange f i j args = Lean.mkAppRangeAux j args i f
Equations
- Lean.mkAppRev fn revArgs = Array.foldr (fun a r => Lean.mkApp r a) fn revArgs (Array.size revArgs)
@[extern lean_expr_quick_lt]
Equations
- Lean.Expr.instBEqExpr = { beq := Lean.Expr.eqv }
Equations
- Lean.Expr.isSort x = match x with | Lean.Expr.sort x x_1 => true | x => false
Equations
- Lean.Expr.isType x = match x with | Lean.Expr.sort (Lean.Level.succ x x_1) x_2 => true | x => false
Equations
- Lean.Expr.isProp x = match x with | Lean.Expr.sort (Lean.Level.zero x) x_1 => true | x => false
Equations
- Lean.Expr.isBVar x = match x with | Lean.Expr.bvar x x_1 => true | x => false
Equations
- Lean.Expr.isMVar x = match x with | Lean.Expr.mvar x x_1 => true | x => false
Equations
- Lean.Expr.isFVar x = match x with | Lean.Expr.fvar x x_1 => true | x => false
Equations
- Lean.Expr.isApp x = match x with | Lean.Expr.app x x_1 x_2 => true | x => false
Equations
- Lean.Expr.isProj x = match x with | Lean.Expr.proj x x_1 x_2 x_3 => true | x => false
Equations
- Lean.Expr.isConst x = match x with | Lean.Expr.const x x_1 x_2 => true | x => false
Equations
- Lean.Expr.isConstOf x x = match x, x with | Lean.Expr.const n x x_1, m => n == m | x, x_1 => false
Equations
- Lean.Expr.isForall x = match x with | Lean.Expr.forallE x x_1 x_2 x_3 => true | x => false
Equations
- Lean.Expr.isLambda x = match x with | Lean.Expr.lam x x_1 x_2 x_3 => true | x => false
Equations
- Lean.Expr.isBinding x = match x with | Lean.Expr.lam x x_1 x_2 x_3 => true | Lean.Expr.forallE x x_1 x_2 x_3 => true | x => false
Equations
- Lean.Expr.isLet x = match x with | Lean.Expr.letE x x_1 x_2 x_3 x_4 => true | x => false
Equations
- Lean.Expr.isMData x = match x with | Lean.Expr.mdata x x_1 x_2 => true | x => false
Equations
- Lean.Expr.isLit x = match x with | Lean.Expr.lit x x_1 => true | x => false
Equations
- Lean.Expr.getForallBody (Lean.Expr.forallE x_1 x_2 x_3 x_4) = Lean.Expr.getForallBody x_3
- Lean.Expr.getForallBody x = x
Equations
- Lean.Expr.getAppFn (Lean.Expr.app x_1 x_2 x_3) = Lean.Expr.getAppFn x_1
- Lean.Expr.getAppFn x = x
Equations
- Lean.Expr.getAppNumArgsAux (Lean.Expr.app f a x_2) x = Lean.Expr.getAppNumArgsAux f (x + 1)
- Lean.Expr.getAppNumArgsAux x x = x
Equations
@[inline]
Equations
- Lean.Expr.getAppArgs e = let dummy := Lean.mkSort Lean.levelZero; let nargs := Lean.Expr.getAppNumArgs e; Lean.Expr.getAppArgsAux e (mkArray nargs dummy) (nargs - 1)
@[inline]
Equations
@[specialize]
Equations
- Lean.Expr.withAppAux k (Lean.Expr.app f a x_3) x x = Lean.Expr.withAppAux k f (Array.set! x x a) (x - 1)
- Lean.Expr.withAppAux k x x x = k x x
@[inline]
Equations
- Lean.Expr.withApp e k = let dummy := Lean.mkSort Lean.levelZero; let nargs := Lean.Expr.getAppNumArgs e; Lean.Expr.withAppAux k e (mkArray nargs dummy) (nargs - 1)
@[inline]
Equations
@[inline]
Equations
- Lean.Expr.getArg! e i n = Lean.Expr.getRevArg! e (n - i - 1)
@[inline]
def
Lean.Expr.getArgD
(e : Lean.Expr)
(i : Nat)
(v₀ : Lean.Expr)
(n : optParam Nat (Lean.Expr.getAppNumArgs e))
:
Equations
- Lean.Expr.getArgD e i v₀ n = Lean.Expr.getRevArgD e (n - i - 1) v₀
Equations
- Lean.Expr.isAppOf e n = match Lean.Expr.getAppFn e with | Lean.Expr.const c x x_1 => c == n | x => false
Equations
- Lean.Expr.appFn! x = match x with | Lean.Expr.app f x x_1 => f | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.appFn!" 586 17 "application expected"
Equations
- Lean.Expr.appArg! x = match x with | Lean.Expr.app x a x_1 => a | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.appArg!" 590 17 "application expected"
Equations
- Lean.Expr.sortLevel! x = match x with | Lean.Expr.sort u x => u | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.sortLevel!" 594 17 "sort expected"
Equations
- Lean.Expr.litValue! x = match x with | Lean.Expr.lit v x => v | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.litValue!" 598 16 "literal expected"
Equations
- Lean.Expr.isNatLit x = match x with | Lean.Expr.lit (Lean.Literal.natVal x) x_1 => true | x => false
Equations
- Lean.Expr.natLit? x = match x with | Lean.Expr.lit (Lean.Literal.natVal v) x => some v | x => none
Equations
- Lean.Expr.isStringLit x = match x with | Lean.Expr.lit (Lean.Literal.strVal x) x_1 => true | x => false
Equations
- Lean.Expr.isCharLit e = (Lean.Expr.isAppOfArity e `Char.ofNat 1 && Lean.Expr.isNatLit (Lean.Expr.appArg! e))
Equations
- Lean.Expr.constName! x = match x with | Lean.Expr.const n x x_1 => n | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.constName!" 617 19 "constant expected"
Equations
- Lean.Expr.constName? x = match x with | Lean.Expr.const n x x_1 => some n | x => none
Equations
- Lean.Expr.constLevels! x = match x with | Lean.Expr.const x ls x_1 => ls | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.constLevels!" 625 20 "constant expected"
Equations
- Lean.Expr.bvarIdx! x = match x with | Lean.Expr.bvar idx x => idx | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.bvarIdx!" 629 18 "bvar expected"
Equations
- Lean.Expr.fvarId! x = match x with | Lean.Expr.fvar n x => n | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.fvarId!" 633 16 "fvar expected"
Equations
- Lean.Expr.mvarId! x = match x with | Lean.Expr.mvar n x => n | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.mvarId!" 637 16 "mvar expected"
Equations
- Lean.Expr.bindingName! x = match x with | Lean.Expr.forallE n x x_1 x_2 => n | Lean.Expr.lam n x x_1 x_2 => n | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.bindingName!" 642 23 "binding expected"
Equations
- Lean.Expr.bindingDomain! x = match x with | Lean.Expr.forallE x d x_1 x_2 => d | Lean.Expr.lam x d x_1 x_2 => d | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.bindingDomain!" 647 23 "binding expected"
Equations
- Lean.Expr.bindingBody! x = match x with | Lean.Expr.forallE x x_1 b x_2 => b | Lean.Expr.lam x x_1 b x_2 => b | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.bindingBody!" 652 23 "binding expected"
Equations
- Lean.Expr.bindingInfo! x = match x with | Lean.Expr.forallE x x_1 x_2 c => Lean.Expr.Data.binderInfo c | Lean.Expr.lam x x_1 x_2 c => Lean.Expr.Data.binderInfo c | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.bindingInfo!" 657 23 "binding expected"
Equations
- Lean.Expr.letName! x = match x with | Lean.Expr.letE n x x_1 x_2 x_3 => n | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.letName!" 661 17 "let expression expected"
Equations
- Lean.Expr.letType! x = match x with | Lean.Expr.letE x t x_1 x_2 x_3 => t | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.letType!" 665 19 "let expression expected"
Equations
- Lean.Expr.letValue! x = match x with | Lean.Expr.letE x x_1 v x_2 x_3 => v | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.letValue!" 669 21 "let expression expected"
Equations
- Lean.Expr.letBody! x = match x with | Lean.Expr.letE x x_1 x_2 b x_3 => b | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.letBody!" 673 23 "let expression expected"
Equations
- Lean.Expr.consumeMData (Lean.Expr.mdata x_1 x_2 x_3) = Lean.Expr.consumeMData x_2
- Lean.Expr.consumeMData x = x
Equations
- Lean.Expr.mdataExpr! x = match x with | Lean.Expr.mdata x e x_1 => e | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.mdataExpr!" 681 19 "mdata expression expected"
Equations
- Lean.Expr.projExpr! x = match x with | Lean.Expr.proj x x_1 e x_2 => e | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.projExpr!" 685 20 "proj expression expected"
Equations
- Lean.Expr.projIdx! x = match x with | Lean.Expr.proj x i x_1 x_2 => i | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.projIdx!" 689 20 "proj expression expected"
Equations
Equations
- Lean.Expr.isArrow e = match e with | Lean.Expr.forallE x x_1 b x_2 => !Lean.Expr.hasLooseBVars b | x => false
@[extern lean_expr_has_loose_bvar]
@[extern lean_expr_instantiate1]
Equations
- Lean.Expr.replaceFVar e fvar v = Lean.Expr.instantiate1 (Lean.Expr.abstract e #[fvar]) v
Equations
- Lean.Expr.replaceFVarId e fvarId v = Lean.Expr.replaceFVar e (Lean.mkFVar fvarId) v
Equations
- Lean.Expr.replaceFVars e fvars vs = Lean.Expr.instantiateRev (Lean.Expr.abstract e fvars) vs
Equations
- Lean.Expr.instToStringExpr = { toString := Lean.Expr.dbgToString }
Equations
- Lean.Expr.isAtomic x = match x with | Lean.Expr.const x x_1 x_2 => true | Lean.Expr.sort x x_1 => true | Lean.Expr.bvar x x_1 => true | Lean.Expr.lit x x_1 => true | Lean.Expr.mvar x x_1 => true | Lean.Expr.fvar x x_1 => true | x => false
Equations
- Lean.mkDecIsTrue pred proof = Lean.mkAppB (Lean.mkConst `Decidable.isTrue) pred proof
Equations
- Lean.mkDecIsFalse pred proof = Lean.mkAppB (Lean.mkConst `Decidable.isFalse) pred proof
@[inline]
Equations
@[inline]
Equations
@[inline]
Equations
Equations
- Lean.instInhabitedExprStructEq = { default := { val := default } }
Equations
- Lean.instCoeExprExprStructEq = { coe := Lean.ExprStructEq.mk }
Equations
- Lean.ExprStructEq.beq x x = match x, x with | { val := e₁ }, { val := e₂ } => Lean.Expr.equal e₁ e₂
Equations
- Lean.ExprStructEq.hash x = match x with | { val := e } => Lean.Expr.hash e
Equations
Equations
Equations
- Lean.ExprStructEq.instToStringExprStructEq = { toString := fun e => toString e.val }
@[inline]
Equations
@[inline]
Equations
def
Lean.Expr.mkAppRevRange
(f : Lean.Expr)
(beginIdx : Nat)
(endIdx : Nat)
(revArgs : Array Lean.Expr)
:
Equations
- Lean.Expr.mkAppRevRange f beginIdx endIdx revArgs = Lean.Expr.mkAppRevRangeAux revArgs beginIdx f endIdx
Equations
- Lean.Expr.betaRev f revArgs = if (Array.size revArgs == 0) = true then f else Lean.Expr.betaRevAux revArgs (Array.size revArgs) f 0
Equations
- Lean.Expr.beta f args = Lean.Expr.betaRev f (Array.reverse args)
Equations
- Lean.Expr.isHeadBetaTargetFn (Lean.Expr.lam x_1 x_2 x_3 x_4) = true
- Lean.Expr.isHeadBetaTargetFn (Lean.Expr.mdata x_1 b x_2) = Lean.Expr.isHeadBetaTargetFn b
- Lean.Expr.isHeadBetaTargetFn x = false
Equations
- Lean.Expr.headBeta e = let f := Lean.Expr.getAppFn e; if Lean.Expr.isHeadBetaTargetFn f = true then Lean.Expr.betaRev f (Lean.Expr.getAppRevArgs e) else e
Equations
Equations
Equations
- Lean.Expr.etaExpandedStrict? x = match x with | Lean.Expr.lam x x_1 b x_2 => Lean.Expr.etaExpandedAux b 1 | x => none
Equations
- Lean.Expr.getOptParamDefault? e = if Lean.Expr.isAppOfArity e `optParam 2 = true then some (Lean.Expr.appArg! e) else none
Equations
- Lean.Expr.getAutoParamTactic? e = if Lean.Expr.isAppOfArity e `autoParam 2 = true then some (Lean.Expr.appArg! e) else none
Equations
- Lean.Expr.isOptParam e = Lean.Expr.isAppOfArity e `optParam 2
Equations
- Lean.Expr.isAutoParam e = Lean.Expr.isAppOfArity e `autoParam 2
@[inline]
Equations
- Lean.Expr.hasAnyFVar e p = (fun visit => visit e) (Lean.Expr.hasAnyFVar.visit p)
Equations
- Lean.Expr.containsFVar e fvarId = Lean.Expr.hasAnyFVar e fun a => a == fvarId
@[extern lean_expr_update_app]
def
Lean.Expr.updateApp
(e : Lean.Expr)
(newFn : Lean.Expr)
(newArg : Lean.Expr)
(h : Lean.Expr.isApp e = true)
:
Equations
- Lean.Expr.updateApp e newFn newArg h = Lean.mkApp newFn newArg
@[inline]
Equations
- Lean.Expr.updateApp! e newFn newArg = match e with | Lean.Expr.app fn arg c => Lean.Expr.updateApp (Lean.Expr.app fn arg c) newFn newArg (_ : Lean.Expr.isApp (Lean.Expr.app fn arg c) = Lean.Expr.isApp (Lean.Expr.app fn arg c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateApp!" 966 20 "application expected"
@[extern lean_expr_update_const]
def
Lean.Expr.updateConst
(e : Lean.Expr)
(newLevels : List Lean.Level)
(h : Lean.Expr.isConst e = true)
:
Equations
- Lean.Expr.updateConst e newLevels h = Lean.mkConst (Lean.Expr.constName! e) newLevels
@[inline]
Equations
- Lean.Expr.updateConst! e newLevels = match e with | Lean.Expr.const n ls c => Lean.Expr.updateConst (Lean.Expr.const n ls c) newLevels (_ : Lean.Expr.isConst (Lean.Expr.const n ls c) = Lean.Expr.isConst (Lean.Expr.const n ls c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateConst!" 975 20 "constant expected"
@[extern lean_expr_update_sort]
Equations
- Lean.Expr.updateSort e newLevel h = Lean.mkSort newLevel
@[inline]
Equations
- Lean.Expr.updateSort! e newLevel = match e with | Lean.Expr.sort l c => Lean.Expr.updateSort (Lean.Expr.sort l c) newLevel (_ : Lean.Expr.isSort (Lean.Expr.sort l c) = Lean.Expr.isSort (Lean.Expr.sort l c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateSort!" 984 16 "level expected"
@[extern lean_expr_update_proj]
Equations
- Lean.Expr.updateProj e newExpr h = match e with | Lean.Expr.proj s i x x_1 => Lean.mkProj s i newExpr | x => e
@[extern lean_expr_update_mdata]
Equations
- Lean.Expr.updateMData e newExpr h = match e with | Lean.Expr.mdata d x x_1 => Lean.mkMData d newExpr | x => e
@[inline]
Equations
- Lean.Expr.updateMData! e newExpr = match e with | Lean.Expr.mdata d e c => Lean.Expr.updateMData (Lean.Expr.mdata d e c) newExpr (_ : Lean.Expr.isMData (Lean.Expr.mdata d e c) = Lean.Expr.isMData (Lean.Expr.mdata d e c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateMData!" 1001 19 "mdata expected"
@[inline]
Equations
- Lean.Expr.updateProj! e newExpr = match e with | Lean.Expr.proj s i e c => Lean.Expr.updateProj (Lean.Expr.proj s i e c) newExpr (_ : Lean.Expr.isProj (Lean.Expr.proj s i e c) = Lean.Expr.isProj (Lean.Expr.proj s i e c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateProj!" 1006 20 "proj expected"
@[extern lean_expr_update_forall]
def
Lean.Expr.updateForall
(e : Lean.Expr)
(newBinfo : Lean.BinderInfo)
(newDomain : Lean.Expr)
(newBody : Lean.Expr)
(h : Lean.Expr.isForall e = true)
:
Equations
- Lean.Expr.updateForall e newBinfo newDomain newBody h = Lean.mkForall (Lean.Expr.bindingName! e) newBinfo newDomain newBody
@[inline]
def
Lean.Expr.updateForall!
(e : Lean.Expr)
(newBinfo : Lean.BinderInfo)
(newDomain : Lean.Expr)
(newBody : Lean.Expr)
:
Equations
- Lean.Expr.updateForall! e newBinfo newDomain newBody = match e with | Lean.Expr.forallE n d b c => Lean.Expr.updateForall (Lean.Expr.forallE n d b c) newBinfo newDomain newBody (_ : Lean.Expr.isForall (Lean.Expr.forallE n d b c) = Lean.Expr.isForall (Lean.Expr.forallE n d b c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateForall!" 1015 23 "forall expected"
@[inline]
Equations
- Lean.Expr.updateForallE! e newDomain newBody = match e with | Lean.Expr.forallE n d b c => Lean.Expr.updateForall (Lean.Expr.forallE n d b c) (Lean.Expr.Data.binderInfo c) newDomain newBody (_ : Lean.Expr.isForall (Lean.Expr.forallE n d b c) = Lean.Expr.isForall (Lean.Expr.forallE n d b c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateForallE!" 1020 23 "forall expected"
@[extern lean_expr_update_lambda]
def
Lean.Expr.updateLambda
(e : Lean.Expr)
(newBinfo : Lean.BinderInfo)
(newDomain : Lean.Expr)
(newBody : Lean.Expr)
(h : Lean.Expr.isLambda e = true)
:
Equations
- Lean.Expr.updateLambda e newBinfo newDomain newBody h = Lean.mkLambda (Lean.Expr.bindingName! e) newBinfo newDomain newBody
@[inline]
def
Lean.Expr.updateLambda!
(e : Lean.Expr)
(newBinfo : Lean.BinderInfo)
(newDomain : Lean.Expr)
(newBody : Lean.Expr)
:
Equations
- Lean.Expr.updateLambda! e newBinfo newDomain newBody = match e with | Lean.Expr.lam n d b c => Lean.Expr.updateLambda (Lean.Expr.lam n d b c) newBinfo newDomain newBody (_ : Lean.Expr.isLambda (Lean.Expr.lam n d b c) = Lean.Expr.isLambda (Lean.Expr.lam n d b c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateLambda!" 1029 19 "lambda expected"
@[inline]
Equations
- Lean.Expr.updateLambdaE! e newDomain newBody = match e with | Lean.Expr.lam n d b c => Lean.Expr.updateLambda (Lean.Expr.lam n d b c) (Lean.Expr.Data.binderInfo c) newDomain newBody (_ : Lean.Expr.isLambda (Lean.Expr.lam n d b c) = Lean.Expr.isLambda (Lean.Expr.lam n d b c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateLambdaE!" 1034 19 "lambda expected"
@[extern lean_expr_update_let]
def
Lean.Expr.updateLet
(e : Lean.Expr)
(newType : Lean.Expr)
(newVal : Lean.Expr)
(newBody : Lean.Expr)
(h : Lean.Expr.isLet e = true)
:
Equations
- Lean.Expr.updateLet e newType newVal newBody h = Lean.mkLet (Lean.Expr.letName! e) newType newVal newBody
@[inline]
def
Lean.Expr.updateLet!
(e : Lean.Expr)
(newType : Lean.Expr)
(newVal : Lean.Expr)
(newBody : Lean.Expr)
:
Equations
- Lean.Expr.updateLet! e newType newVal newBody = match e with | Lean.Expr.letE n t v b c => Lean.Expr.updateLet (Lean.Expr.letE n t v b c) newType newVal newBody (_ : Lean.Expr.isLet (Lean.Expr.letE n t v b c) = Lean.Expr.isLet (Lean.Expr.letE n t v b c)) | x => panicWithPosWithDecl "Lean.Expr" "Lean.Expr.updateLet!" 1043 22 "let expression expected"
Equations
- Lean.Expr.updateFn (Lean.Expr.app f a x_2) x = Lean.Expr.updateApp! (Lean.Expr.app f a x_2) (Lean.Expr.updateFn f x) a
- Lean.Expr.updateFn x x = x
@[inline]
Equations
- Lean.Expr.instantiateLevelParamsCore s e = (fun visit => visit e) (Lean.Expr.instantiateLevelParamsCore.visit s)
@[specialize]
def
Lean.Expr.instantiateLevelParamsCore.visit
(s : Lean.Name → Option Lean.Level)
(e : Lean.Expr)
:
def
Lean.Expr.instantiateLevelParams
(e : Lean.Expr)
(paramNames : List Lean.Name)
(lvls : List Lean.Level)
:
Equations
- Lean.Expr.instantiateLevelParams e paramNames lvls = Lean.Expr.instantiateLevelParamsCore (Lean.Expr.getParamSubst paramNames lvls) e
def
Lean.Expr.instantiateLevelParamsArray
(e : Lean.Expr)
(paramNames : Array Lean.Name)
(lvls : Array Lean.Level)
:
Equations
- Lean.Expr.instantiateLevelParamsArray e paramNames lvls = Lean.Expr.instantiateLevelParamsCore (fun p => Lean.Expr.getParamSubstArray paramNames lvls p 0) e
def
Lean.Expr.setOption
{α : Type}
(e : Lean.Expr)
(optionName : Lean.Name)
[inst : Lean.KVMap.Value α]
(val : α)
:
Equations
- Lean.Expr.setOption e optionName val = Lean.mkMData (Lean.KVMap.set Lean.MData.empty optionName val) e
Equations
- Lean.Expr.setPPExplicit e flag = Lean.Expr.setOption e `pp.explicit flag
Equations
- Lean.Expr.setPPUniverses e flag = Lean.Expr.setOption e `pp.universes flag
Equations
- Lean.Expr.setAppPPExplicit e = match e with | Lean.Expr.app x x_1 x_2 => let f := Lean.Expr.setPPExplicit (Lean.Expr.getAppFn e) false; let args := Array.map (fun a => Lean.Expr.setPPExplicit a false) (Lean.Expr.getAppArgs e); Lean.Expr.setPPExplicit (Lean.mkAppN f args) true | x => e
Equations
- Lean.Expr.setAppPPExplicitForExposingMVars e = match e with | Lean.Expr.app x x_1 x_2 => let f := Lean.Expr.setPPExplicit (Lean.Expr.getAppFn e) false; let args := Array.map (fun arg => if Lean.Expr.hasMVar arg = true then arg else Lean.Expr.setPPExplicit arg false) (Lean.Expr.getAppArgs e); Lean.Expr.setPPExplicit (Lean.mkAppN f args) true | x => e
Equations
- Lean.mkAnnotation kind e = Lean.mkMData (Lean.KVMap.insert Lean.KVMap.empty kind (Lean.DataValue.ofBool true)) e
Equations
- Lean.annotation? kind e = match e with | Lean.Expr.mdata d b x => if (Lean.KVMap.size d == 1 && Lean.KVMap.getBool d kind) = true then some b else none | x => none
Equations
- Lean.mkLetFunAnnotation e = Lean.mkAnnotation `let_fun e
Equations
- Lean.letFunAnnotation? e = Lean.annotation? `let_fun e
Equations
- Lean.isLetFun e = match Lean.letFunAnnotation? e with | none => false | some e => Lean.Expr.isApp e && Lean.Expr.isLambda (Lean.Expr.appFn! e)
Equations
- Lean.mkInaccessible e = Lean.mkAnnotation `_inaccessible e
Equations
- Lean.inaccessible? e = Lean.annotation? `_inaccessible e
Equations
- Lean.mkLHSGoal e = Lean.mkAnnotation `_lhsGoal e
Equations
- Lean.isLHSGoal? e = match Lean.annotation? `_lhsGoal e with | none => none | some e => if Lean.Expr.isAppOfArity e `Eq 3 = true then some (Lean.Expr.appArg! (Lean.Expr.appFn! e)) else none
Equations
- Lean.mkNot p = Lean.mkApp (Lean.mkConst `Not) p
Equations
- Lean.mkOr p q = Lean.mkApp2 (Lean.mkConst `Or) p q
Equations
- Lean.mkAnd p q = Lean.mkApp2 (Lean.mkConst `And) p q
Equations
- Lean.mkEM p = Lean.mkApp (Lean.mkConst `Classical.em) p