Given e s.t. inferType e is definitionally equal to expectedType, return
term @id expectedType e.
Equations
- Lean.Meta.mkExpectedTypeHint e expectedType = do let u ← Lean.Meta.getLevel expectedType pure (Lean.mkApp2 (Lean.mkConst `id [u]) expectedType e)
Instances For
mkLetFun x v e creates the encoding for the let_fun x := v; e expression.
The expression x can either be a free variable or a metavariable, and the function suitably abstracts x in e.
NB: x must not be a let-bound free variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Return a = b.
Equations
- Lean.Meta.mkEq a b = do let aType ← Lean.Meta.inferType a let u ← Lean.Meta.getLevel aType pure (Lean.mkApp3 (Lean.mkConst `Eq [u]) aType a b)
Instances For
Return HEq a b.
Equations
- Lean.Meta.mkHEq a b = do let aType ← Lean.Meta.inferType a let bType ← Lean.Meta.inferType b let u ← Lean.Meta.getLevel aType pure (Lean.mkApp4 (Lean.mkConst `HEq [u]) aType a bType b)
Instances For
Return a proof of a = a.
Instances For
Return a proof of HEq a a.
Equations
- Lean.Meta.mkHEqRefl a = do let aType ← Lean.Meta.inferType a let u ← Lean.Meta.getLevel aType pure (Lean.mkApp2 (Lean.mkConst `HEq.refl [u]) aType a)
Instances For
Given hp : P and nhp : Not P returns an instance of type e.
Instances For
Given h : False, return an instance of type e.
Instances For
Given h : a = b, returns a proof of b = a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given h₁ : a = b and h₂ : b = c returns a proof of a = c.
Instances For
Similar to mkEqTrans, but arguments can be none.
none is treated as a reflexivity proof.
Equations
- Lean.Meta.mkEqTrans? none none = pure none
- Lean.Meta.mkEqTrans? none (some h) = pure (some h)
- Lean.Meta.mkEqTrans? (some h) none = pure (some h)
- Lean.Meta.mkEqTrans? (some h₁) (some h₂) = do let a ← Lean.Meta.mkEqTrans h₁ h₂ pure (some a)
Instances For
If e is @Eq.refl α a, return a.
Instances For
Given f : α → β and h : a = b, returns a proof of f a = f b.
Given h : f = g and a : α, returns a proof of f a = g a.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given h₁ : f = g and h₂ : a = b, returns a proof of f a = g b.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Return the application constName xs.
It tries to fill the implicit arguments before the last element in xs.
Remark:
mkAppM `arbitrary #[α] returns @arbitrary.{u} α without synthesizing
the implicit argument occurring after α.
Given a x : ([Decidable p] → Bool) × Nat, mkAppM `Prod.fst #[x] returns @Prod.fst ([Decidable p] → Bool) Nat x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Similar to mkAppM, but takes an Expr instead of a constant name.
Instances For
Similar to mkAppM, but it allows us to specify which arguments are provided explicitly using Option type.
Example:
Given Pure.pure {m : Type u → Type v} [Pure m] {α : Type u} (a : α) : m α,
mkAppOptM `Pure.pure #[m, none, none, a]
returns a Pure.pure application if the instance Pure m can be synthesized, and the universe match.
Note that,
mkAppM `Pure.pure #[a]
fails because the only explicit argument (a : α) is not sufficient for inferring the remaining arguments,
we would need the expected type.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Similar to mkAppOptM, but takes an Expr instead of a constant name.
Equations
- Lean.Meta.mkAppOptM' f xs = do let fType ← Lean.Meta.inferType f Lean.Meta.withAppBuilderTrace✝ f xs (Lean.Meta.withNewMCtxDepth (Lean.Meta.mkAppOptMAux✝ f xs 0 #[] 0 #[] fType))
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a monad and e : α, makes pure e.
Instances For
mkProjection s fieldName returns an expression for accessing field fieldName of the structure s.
Remark: fieldName may be a subfield of s.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Meta.mkArrayLit type xs = do let u ← Lean.Meta.getDecLevel type let listLit ← Lean.Meta.mkListLit type xs pure (Lean.mkApp (Lean.mkApp (Lean.mkConst `List.toArray [u]) type) listLit)
Instances For
Equations
- Lean.Meta.mkSome type value = do let u ← Lean.Meta.getDecLevel type pure (Lean.mkApp2 (Lean.mkConst `Option.some [u]) type value)
Instances For
Equations
- Lean.Meta.mkSorry type synthetic = do let u ← Lean.Meta.getLevel type pure (Lean.mkApp2 (Lean.mkConst `sorryAx [u]) type (Lean.toExpr synthetic))
Instances For
Return Decidable.decide p
Instances For
Return a proof for p : Prop using decide p
Instances For
Return Inhabited.default α
Equations
- Lean.Meta.mkDefault α = Lean.Meta.mkAppOptM `Inhabited.default #[some α, none]
Instances For
Return @Classical.ofNonempty α _
Equations
- Lean.Meta.mkOfNonempty α = Lean.Meta.mkAppOptM `Classical.ofNonempty #[some α, none]
Instances For
Return sorryAx type
Equations
- Lean.Meta.mkSyntheticSorry type = do let __do_lift ← Lean.Meta.getLevel type pure (Lean.mkApp2 (Lean.mkConst `sorryAx [__do_lift]) type (Lean.mkConst `Bool.true))
Instances For
Return let_congr h₁ h₂
Equations
- Lean.Meta.mkLetCongr h₁ h₂ = Lean.Meta.mkAppM `let_congr #[h₁, h₂]
Instances For
Return let_val_congr b h
Equations
- Lean.Meta.mkLetValCongr b h = Lean.Meta.mkAppM `let_val_congr #[b, h]
Instances For
Return let_body_congr a h
Instances For
Return of_eq_true h
Instances For
Return eq_false h
h must have type definitionally equal to ¬ p in the current
reducibility setting.
Instances For
Equations
- Lean.Meta.mkImpCongr h₁ h₂ = Lean.Meta.mkAppM `implies_congr #[h₁, h₂]
Instances For
Equations
- Lean.Meta.mkImpCongrCtx h₁ h₂ = Lean.Meta.mkAppM `implies_congr_ctx #[h₁, h₂]
Instances For
Equations
- Lean.Meta.mkImpDepCongrCtx h₁ h₂ = Lean.Meta.mkAppM `implies_dep_congr_ctx #[h₁, h₂]
Instances For
Equations
- Lean.Meta.mkForallCongr h = Lean.Meta.mkAppM `forall_congr #[h]
Instances For
Return instance for [Monad m] if there is one
Instances For
Return (n : type), a numeric literal of type type. The method fails if we don't have an instance OfNat type n
Equations
- One or more equations did not get rendered due to their size.
Instances For
Return a + b using a heterogeneous +. This method assumes a and b have the same type.
Equations
- Lean.Meta.mkAdd a b = Lean.Meta.mkBinaryOp✝ `HAdd `HAdd.hAdd a b
Instances For
Return a - b using a heterogeneous -. This method assumes a and b have the same type.
Instances For
Return a * b using a heterogeneous *. This method assumes a and b have the same type.
Instances For
Return a ≤ b. This method assumes a and b have the same type.
Instances For
Return a < b. This method assumes a and b have the same type.
Instances For
Given h : a = b, return a proof for a ↔ b.