Documentation

Lean.Meta.AppBuilder

Returns id e

Equations

Given e s.t. inferType e is definitionally equal to expectedType, returns term @id expectedType e.

Equations

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.

Returns a = b.

Equations

Returns HEq a b.

Equations

If a and b have definitionally equal types, returns Eq a b, otherwise returns HEq a b.

Equations
  • One or more equations did not get rendered due to their size.

Returns a proof of a = a.

Equations

Returns a proof of HEq a a.

Equations
def Lean.Meta.mkAbsurd (e hp hnp : Expr) :

Given hp : P and nhp : Not P, returns an instance of type e.

Equations

Given h : False, returns an instance of type e.

Equations

Given h : a = b, returns a proof of b = a.

Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkEqTrans (h₁ h₂ : Expr) :

Given h₁ : a = b and h₂ : b = c, returns a proof of a = c.

Equations
  • One or more equations did not get rendered due to their size.

Similar to mkEqTrans, but arguments can be none. none is treated as a reflexivity proof.

Equations

Given h : HEq a b, returns a proof of HEq b a.

Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkHEqTrans (h₁ h₂ : Expr) :

Given h₁ : HEq a b, h₂ : HEq b c, returns a proof of HEq a c.

Equations
  • One or more equations did not get rendered due to their size.

Given h : HEq a b where a and b have the same type, returns a proof of Eq a b.

Equations
  • One or more equations did not get rendered due to their size.

Given h : Eq a b, returns a proof of HEq a b.

Equations
  • One or more equations did not get rendered due to their size.

If e is @Eq.refl α a, returns a.

Equations

If e is @congrArg α β a b f h, returns α, f and h. Also works if e can be turned into such an application (e.g. congrFun).

Equations
  • One or more equations did not get rendered due to their size.
partial def Lean.Meta.mkCongrArg (f h : Expr) :

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.
def Lean.Meta.mkCongr (h₁ h₂ : Expr) :

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.
def Lean.Meta.mkAppM (constName : Name) (xs : Array Expr) :

Returns 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.

Similar to mkAppM, but takes an Expr instead of a constant name.

Equations
def Lean.Meta.mkAppOptM (constName : Name) (xs : Array (Option Expr)) :

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.

Similar to mkAppOptM, but takes an Expr instead of a constant name.

Equations
def Lean.Meta.mkEqNDRec (motive h1 h2 : Expr) :
Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkEqRec (motive h1 h2 : Expr) :
Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkEqMP (eqProof pr : Expr) :
Equations
def Lean.Meta.mkEqMPR (eqProof pr : Expr) :
Equations
Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkPure (monad e : Expr) :

Given a monad and e : α, makes pure e.

Equations
partial def Lean.Meta.mkProjection (s : Expr) (fieldName : Name) :

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.
Equations
Equations
def Lean.Meta.mkSome (type value : Expr) :
Equations

Returns a proof for p : Prop using decide p

Equations
  • One or more equations did not get rendered due to their size.

Returns a < b

Equations

Returns a <= b

Equations

Returns @Classical.ofNonempty α _

Equations
def Lean.Meta.mkLetCongr (h₁ h₂ : Expr) :

Returns let_congr h₁ h₂

Equations

Returns @of_eq_true p h

Equations
  • One or more equations did not get rendered due to their size.

Returns of_eq_true h

Equations
  • One or more equations did not get rendered due to their size.

Returns eq_true h

Equations
  • One or more equations did not get rendered due to their size.

Returns eq_true h

Equations
  • One or more equations did not get rendered due to their size.

Returns eq_false h h must have type definitionally equal to ¬ p in the current reducibility setting.

Equations

Returns eq_false' h h must have type definitionally equal to p → False in the current reducibility setting.

Equations
def Lean.Meta.mkImpCongr (h₁ h₂ : Expr) :
Equations
Equations
Equations

Returns instance for [Monad m] if there is one

Equations
  • One or more equations did not get rendered due to their size.
def Lean.Meta.mkNumeral (type : Expr) (n : Nat) :

Returns (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.

Returns a + b using a heterogeneous +. This method assumes a and b have the same type.

Equations

Returns a - b using a heterogeneous -. This method assumes a and b have the same type.

Equations

Returns a * b using a heterogeneous *. This method assumes a and b have the same type.

Equations

Returns a ≤ b. This method assumes a and b have the same type.

Equations

Returns a < b. This method assumes a and b have the same type.

Equations

Given h : a = b, returns a proof for a ↔ b.

Equations