Documentation

Init.NotationExtra

Equations
Equations
Equations
def Lean.expandExplicitBinders (combinatorDeclName : Lean.Name) (explicitBinders : Lean.Syntax) (body : Lean.Syntax) :
Equations
def Lean.expandBrackedBinders (combinatorDeclName : Lean.Name) (bracketedExplicitBinders : Lean.Syntax) (body : Lean.Syntax) :
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations
Equations

Apply function extensionality and introduce new hypotheses. The tactic funext will keep applying new the funext lemma until the goal target is not reducible to

  |-  ((fun x => ...) = (fun x => ...))

The variant funexth₁...hₙ applies funext n times, and uses the given identifiers to name the new hypotheses. Patterns can be used like in the intro tactic. Example, given a goal

  |-  ((fun x : Nat × Bool => ...) = (fun x => ...))

funext(a,b) applies funext once and performs pattern matching on the newly introduced pair.

Equations

·tac focuses on the main goal and tries to solve it using tac, or else fails.

Equations

Similar to first, but succeeds only if one the given tactics solves the current goal.

inductive Lean.Loop :
Type
@[inline]
def Lean.Loop.forIn {β : Type u} {m : Type uType v} [inst : Monad m] :
Lean.Loopβ(Unitβm (ForInStep β)) → m β
Equations
@[specialize]
partial def Lean.Loop.forIn.loop {β : Type u} {m : Type uType v} [inst : Monad m] (f : Unitβm (ForInStep β)) (b : β) :
m β
instance Lean.instForInLoopUnit {m : Type u_1Type u_2} :
Equations
  • Lean.instForInLoopUnit = { forIn := fun {β} [Monad m] => Lean.Loop.forIn }