/* norm

Polynomial Normal Form Procedure
Alan Bundy 1.7.82 */

poly_norm(Var,Var,[pair(1,1)]) :- !.

poly_norm(Var,A+B,Poly) :-
	poly_norm(Var,A,PolyA),
	poly_norm(Var,B,PolyB),
	add_pairs(PolyA,PolyB,Poly).


poly_norm(Var,A*B,Poly) :-
	poly_norm(Var,A,PolyA),
	poly_norm(Var,B,PolyB),
	mult_pairs(PolyA,PolyB,Poly).


poly_norm(Var,A^ #2,Poly) :-
	poly_norm(Var,A,PolyA),
	mult_pairs(PolyA,PolyB,Poly).

poly_norm(Var,$A,[pair(0,$AA)]) :-
	poly_norm(Var,A,[pair(0,AA)]).


poly_norm(Var,#A,[pair(0,#A)]) :- !.

poly_norm(Var,A,[pair(0,A)]) :-
	atom(A), !.
