ELIMINATE(EQNS,VARS):=BLOCK([TEQNS,SV,SE,L,FLAG,DISPFLAG],
	MODEDECLARE([L,I],INTEGER,FLAG,BOOLEAN),FLAG:DISPFLAG:FALSE,
	IF NOT (LISTP(EQNS) AND LISTP(VARS)) THEN ERROR("THE ARGUMENTS MUST BOTH BE LISTS"),
	IF LENGTH(VARS)>L:LENGTH(EQNS) THEN ERROR("MORE VARIABLES THEN EQUATIONS"),
	IF L=1 THEN ERROR("CAN'T ELIMINATE FROM ONLY ONE EQUATION"),
	IF LENGTH(VARS)=L THEN (VARS:REVERSE(VARS),SV:VARS[1], VARS:REVERSE(REST(VARS)),FLAG:TRUE),
	EQNS:MAP(?MEQHK,EQNS),
	FOR V IN VARS DO (
		TEQNS:[],
		FOR J:1 THRU L WHILE(FREEOF(V,FIRST(EQNS))) DO(
		  TEQNS:CONS(FIRST(EQNS),TEQNS), EQNS:REST(EQNS)),
		IF EQNS=[] THEN EQNS:TEQNS ELSE (TEQNS:APPEND(TEQNS,REST(EQNS)), EQNS:FIRST(EQNS), L:L-1, SE:[],
		FOR J:1 THRU L DO SE:CONS(RESULTANT(EQNS,TEQNS[J],V),SE),
		EQNS:SE)),
	IF FLAG THEN [RHS(EV(LAST(SOLVE(EQNS[1],SV)),EVAL))] ELSE EQNS)$
