Zulip Chat Archive
Stream: lean4
Topic: simplifying `let (a,b) := (x,y); f a b`
Tomas Skrivan (Jun 19 2024 at 22:13):
I would like simp to turn let (a,b) := (x,y); f a b into let a := x; let b := y; f a b.
Right now, simp simplifies let (a,b) := (x,y); f a b to f x y even with zeta := false. If you set iota := false then it does not get simplified at all.
These kind of simplifications are done in simproc Lean.Meta.Simp.simpMatch so it seems to me I should turn off iota and provide custom version of simpMatch.
Any tips how should I go about this?
Few examples of what I would like to have
let (a,b) := (x,y); f a b ==> let a := x; let b := y; f a b
let (a,b,c) := (x,yz); f a b c ==> let a := x; let bc := yz; let b := bc.1; let c := bc.2; f a b c
How would I go about writing such match reduction?
Last updated: May 02 2025 at 03:31 UTC