MCPcopy Create free account
hub / github.com/agenticsorg/lean-agentic / build_lambda

Method build_lambda

leanr-elab/src/elaborate.rs:536–554  ·  view source on GitHub ↗

Build lambda from params

(&mut self, params: Vec<Param>, body: TermId)

Source from the content-addressed store, hash-verified

534
535 /// Build lambda from params
536 fn build_lambda(&mut self, params: Vec<Param>, body: TermId) -> ElabResult<TermId> {
537 let mut result = body;
538
539 for param in params.into_iter().rev() {
540 let ty = if let Some(ref ty_expr) = param.type_ {
541 self.synth(ty_expr)?.0
542 } else {
543 self.fresh_mvar()?
544 };
545
546 for name in param.names.into_iter().rev() {
547 let name_sym = self.arena.get_symbol(&name.name);
548 let binder = Binder::new(name_sym, ty);
549 result = self.arena.mk_lam(binder, result);
550 }
551 }
552
553 Ok(result)
554 }
555
556 /// Create a fresh metavariable
557 fn fresh_mvar(&mut self) -> ElabResult<TermId> {

Callers 2

elaborate_defMethod · 0.80
elaborate_theoremMethod · 0.80

Calls 3

synthMethod · 0.80
fresh_mvarMethod · 0.80
mk_lamMethod · 0.80

Tested by

no test coverage detected