A (possibly paramterized) Tuple.
RWPass(PassMan &man, std::string_view name)
Data constructor for a Sigma.
const Def * augment_tuple(const Tuple *, Lam *, Lam *)
const Def * augment_pack(const Pack *pack, Lam *f, Lam *f_diff)
const Def * augment(const Def *, Lam *, Lam *)
Applies to (open) expressions in a functional context.
const Def * augment_var(const Var *, Lam *, Lam *)
helper functions for augment
const Def * derive(const Def *)
Acts on toplevel autodiff on closed terms:
const Def * augment_app(const App *, Lam *, Lam *)
const Def * augment_(const Def *, Lam *, Lam *)
Rewrites the given definition in a lambda environment.
const Def * augment_lam(Lam *, Lam *, Lam *)
AutoDiffEval(PassMan &man)
const Def * derive_(const Def *)
Additionally to the derivation, the pullback is registered and the maps are initialized.
const Def * augment_extract(const Extract *, Lam *, Lam *)
const Def * augment_lit(const Lit *, Lam *, Lam *)
const Def * rewrite(const Def *) override
Detect autodiff calls.
The automatic differentiation Plugin
DefMap< const Def * > Def2Def