private IAppliable GetUnaryFunction(UnaryOperator.Opcode op) { UnaryOperator function = null; try { function = UnaryOperatorCache[op]; } catch (KeyNotFoundException) { function = new UnaryOperator(Token.NoToken, op); UnaryOperatorCache[op] = function; } return(function); }
private static NAryExpr GetUnaryOperator(Expr e, UnaryOperator.Opcode opcode) { var nary = e as NAryExpr; if (nary == null) { return(null); } var fun = nary.Fun; if (fun is UnaryOperator) { var unary = fun as UnaryOperator; if (unary.Op == opcode) { return(nary); } } return(null); }
public static Term Unop(UnaryOperator.Opcode opcode, Term arg) { string uopIsa; switch (opcode) { case UnaryOperator.Opcode.Not: uopIsa = "Not"; break; case UnaryOperator.Opcode.Neg: uopIsa = "UMinus"; break; default: throw new NotImplementedException(); } var list = new List <Term> { IsaCommonTerms.TermIdentFromName(uopIsa), arg }; return(new TermApp(IsaCommonTerms.TermIdentFromName("UnOp"), list)); }