Open lecopivo opened 7 months ago
When running simp/fun_trans with zeta:=false, the tactic fun_prop is unable to see through let bindings. For example this does is not provable:
simp/fun_trans
zeta:=false
fun_prop
import SciLean open SciLean variable {K : Type} [RealScalar K] {X : Type} [Vec K X] {ι : Type} {κ : Type} [IndexType ι] [IndexType κ] set_default_scalar K example (f : X → X) (hf : CDifferentiable K f) : (∂ x, let df := ∂ (x':=0), f x' df x + df x) = let df := ∂ (x':=0), f x'; fun x dx => ∂ (x:=x;dx), df x + ∂ (x:=x;dx), df x := by conv => lhs; autodiff sorry
This is because simp introduces new (non-let) free variable df when differentiating df x + df x. This prevents fun_prop unfolding df.
simp
df
df x + df x
When running
simp/fun_trans
withzeta:=false
, the tacticfun_prop
is unable to see through let bindings. For example this does is not provable:This is because
simp
introduces new (non-let) free variabledf
when differentiatingdf x + df x
. This preventsfun_prop
unfoldingdf
.