package org.overture.pog.pub;
import java.util.Map;
import org.overture.ast.expressions.AVariableExp;
import org.overture.ast.expressions.PExp;
import org.overture.ast.intf.lex.ILexNameToken;
import org.overture.ast.types.PType;
import org.overture.pog.utility.UniqueNameGenerator;
public interface IPOContextStack
{
public IPOContext push(IPOContext context);
public IPOContext pop();
public int size();
PType checkType(PExp exp, PType expected);
void noteType(PExp exp, PType PType);
public abstract PExp getPredWithContext(PExp initialPredicate);
public abstract String getName();
public abstract String getObligation(String root);
public void clearStateContexts();
public void setGenerator(UniqueNameGenerator gen);
public UniqueNameGenerator getGenerator();
public Map<ILexNameToken, AVariableExp> getLast_Vars();
}