Open Erk- opened 2 years ago
When I was playing around with files and debugging my own code I thought it would be nice to have it show which rules were applied so I made a small patch for it.
defined rule `div_sub_dist` defined rule `div_sum_dist` defined rule `pow` apply square_of_sum => (A + B)^2 apply square => (A + B)*(A + B) apply mul_sum_dist => (A + B)*A + (A + B)*B apply mul_comm => A*(A + B) + B*(A + B) apply mul_sum_dist => (A*A + A*B) + (B*A + B*B) apply sum_assoc => A*A + (A*B + (B*A + B*B)) apply sum_assoc => A*A + ((A*B + B*A) + B*B) apply mul_comm => A*A + ((A*B + A*B) + B*B) apply double_sum => A*A + (2*(A*B) + B*B) apply square => A^2 + (2*(A*B) + B^2) defined rule `square_of_sum` defined rule `lim_def` defined rule `lim_sum_dist` apply examples/peano.noq:5:9 => 2 + 3 apply 3 => 2 + s(2) apply 2 => s(1) + s(s(1)) apply 1 => s(s(0)) + s(s(s(0))) apply sum => s(s(0) + s(s(s(0)))) apply sum => s(s(0 + s(s(s(0))))) apply sum_id => s(s(s(s(s(0))))) apply examples/peano.noq:14:9 => 4 - 3 apply 4 => s(3) - 3 apply 3 => s(s(2)) - s(2) apply 2 => s(s(s(1))) - s(s(1)) apply 1 => s(s(s(s(0)))) - s(s(s(0))) apply sub => s(s(s(0))) - s(s(0)) apply sub => s(s(0)) - s(0) apply sub => s(0) - 0 apply sub_id => s(0)
Using inline rules such as in der-square.noq will cause the alignment to be bad:
der-square.noq
defined rule `der_def` defined rule `square_def` apply examples/der-square.noq:6:13 => der(square) apply der_def => lim(dx, 0, (square(x + dx) - square(x))/dx) apply square_def => lim(dx, 0, ((x + dx)^2 - x^2)/dx) apply square_of_sum => lim(dx, 0, ((x^2 + (2*(x*dx) + dx^2)) - x^2)/dx) apply examples/der-square.noq:10:15 => lim(dx, 0, ((x^2 - x^2) + (2*(x*dx) + dx^2))/dx) apply diff_id => lim(dx, 0, (0 + (2*(x*dx) + dx^2))/dx) apply sum_id => lim(dx, 0, (2*(x*dx) + dx^2)/dx) apply div_sum_dist => lim(dx, 0, (2*(x*dx))/dx + dx^2/dx) apply mul_assoc => lim(dx, 0, ((2*x)*dx)/dx + dx^2/dx) apply square => lim(dx, 0, ((2*x)*dx)/dx + (dx*dx)/dx) apply examples/der-square.noq:16:11 => lim(dx, 0, 2*x + dx) apply lim_def => apply_rule(0, dx, 0, 2*x + dx) apply replace => 2*x + 0 apply sum_comm => 0 + 2*x apply sum_id => 2*x
When I was playing around with files and debugging my own code I thought it would be nice to have it show which rules were applied so I made a small patch for it.
Example
Know Issues
Using inline rules such as in
der-square.noq
will cause the alignment to be bad: