pt:-
	ClaList=[s(A,B),np(A,C),vp(C,D),np(D,E),prep(E,F),np(F,B)],
	trTransform(ClaList,TransforedClaList),
	portray_clause(TransforedClaList).


trTransform(ClaList,TransforedClaList):-
	transformed(ClaList,TransforedClaList),!.
trTransform([Head|Bodies],[THead|TBodies]):-
	headTransform(Head,THead,DepthLimit,TrSoFar,Tr),
	bodyTransform(DepthLimit,TrSoFar,Tr,Bodies,TBodies),
	asserta(transformed([Head|Bodies],[THead|TBodies])).

headTransform(Head,THead,DepthLimit,TrSoFar,Tr):-
	Head =.. [Predicate|Argus],
	THead =.. [Predicate,s(DepthLimit),TrSoFar,Tr|Argus]. % put two variables there % you can't put TrSoFar as [] -- it may not the first clause to resolve with example


bodyTransform(_,Tr,Tr,[],[]).
bodyTransform(DepthLimit,TrSoFar,Tr,[BAtom|Bodies],[TBAtom|TBodies]):-
	BAtom =.. [Predicate|Argus],
	TBAtom =.. [Predicate,DepthLimit,TrSoFar,Tr1|Argus],
	bodyTransform(DepthLimit,Tr1,Tr,Bodies,TBodies).	



/* no DepthLimit
trTransform(ClaList,TransforedClaList):-
	transformed(ClaList,TransforedClaList),!.
trTransform([Head|Bodies],[THead|TBodies]):-
	headTransform(Head,THead,TrSoFar,Tr),
	bodyTransform(TrSoFar,Tr,Bodies,TBodies),
	asserta(transformed([Head|Bodies],[THead|TBodies])).

headTransform(Head,THead,TrSoFar,Tr):-
	Head =.. [Predicate|Argus],
	THead =.. [Predicate,TrSoFar,Tr|Argus]. % put two variables there % you can't put TrSoFar as [] -- it may not the first clause to resolve with example


bodyTransform(Tr,Tr,[],[]).
bodyTransform(TrSoFar,Tr,[BAtom|Bodies],[TBAtom|TBodies]):-
	BAtom =.. [Predicate|Argus],
	TBAtom =.. [Predicate,TrSoFar,Tr1|Argus],
	bodyTransform(Tr1,Tr,Bodies,TBodies).	
*/