This section is for authors of AD systems. It assumes a pretty solid understanding of both Julia and automatic differentiation. It explains how to make use of ChainRule's "rulesets" (frules, rrules,) to avoid having to code all your own AD primitives / custom sensitives.

There are 3 main ways to access ChainRules rule sets in your AutoDiff system.

• This is primarily intended for operator overloading based AD systems which will generate overloads for primal functions based for their overloaded types based on the existence of an rrule/frule.
2. Source code tranform based on inserting branches that check of rrule/frule return nothing
• If the rrule/frule returns a rule result then use it, if it returns nothing then do normal AD path.
3. Source code transform based on rrule/frule method-table
• If an applicable rrule/frule exists in the method table then use it, else generate normal AD path.