ad is a source to source translation. it doesn’t just use the list of numbers. The difference between AD and symbolic differentiation is that symbolic differentiation requires flattening program execution, while AD works with more dynamic program flow by following the flow that the primal execution.