• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java IExpression类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中ap.parser.IExpression的典型用法代码示例。如果您正苦于以下问题:Java IExpression类的具体用法?Java IExpression怎么用?Java IExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



IExpression类属于ap.parser包,在下文中一共展示了IExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: and

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IFormula and(IExpression t1, IExpression t2) {
  if (t1 == t2) {
    return (IFormula) t1;
  }
  if (isTrue(t1)) {
    return (IFormula) t2;
  }
  if (isTrue(t2)) {
    return (IFormula) t1;
  }
  if (isFalse(t1)) {
    return pFalse;
  }
  if (isFalse(t2)) {
    return pFalse;
  }
  return simplify(new IBinFormula(IBinJunctor.And(), (IFormula) t1, (IFormula) t2));
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:20,代码来源:PrincessBooleanFormulaManager.java


示例2: or

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IFormula or(IExpression t1, IExpression t2) {
  if (t1 == t2) {
    return (IFormula) t1;
  }
  if (isTrue(t1)) {
    return pTrue;
  }
  if (isTrue(t2)) {
    return pTrue;
  }
  if (isFalse(t1)) {
    return (IFormula) t2;
  }
  if (isFalse(t2)) {
    return (IFormula) t1;
  }
  return simplify(new IBinFormula(IBinJunctor.Or(), (IFormula) t1, (IFormula) t2));
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:20,代码来源:PrincessBooleanFormulaManager.java


示例3: getArrayAddresses

import ap.parser.IExpression; //导入依赖的package包/类
/**
 * Collect array-models, we need them to replace identifiers later. Princess models arrays as
 * plain numeric "memory-addresses", and the model for an array-access at one of the addresses is
 * the array-content. Example: "arr[5]=123" is modeled as "{arr=0, select(0,5)=123}" or "{arr=0,
 * store(0,5,123)=0}", where "0" is the memory-address. The returned mapping contains the mapping
 * of "0" (=address) to "arr" (=identifier).
 */
private Map<IdealInt, ITerm> getArrayAddresses(
    scala.collection.Map<ModelLocation, ModelValue> interpretation) {
  Map<IdealInt, ITerm> arrays = new HashMap<>();
  Iterator<Tuple2<ModelLocation, ModelValue>> it1 = interpretation.iterator();
  while (it1.hasNext()) {
    Tuple2<ModelLocation, ModelValue> entry = it1.next();
    if (entry._1 instanceof ConstantLoc) {
      ITerm maybeArray = IExpression.i(((ConstantLoc) entry._1).c());
      if (creator.getEnv().hasArrayType(maybeArray) && entry._2 instanceof IntValue) {
        arrays.put(((IntValue) entry._2).v(), maybeArray);
      }
    }
  }
  return arrays;
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:23,代码来源:PrincessModel.java


示例4: mkTrigger

import ap.parser.IExpression; //导入依赖的package包/类
public ProverExpr mkTrigger(ProverExpr body, ProverExpr[] triggers) {
  final ArrayBuffer<IExpression> triggerExprs = new ArrayBuffer<IExpression> ();
  
  for (int i = 0; i < triggers.length; ++i) {
    if (triggers[i] instanceof TermExpr)
      triggerExprs.$plus$eq(((TermExpr)triggers[i]).term);
    else
         triggerExprs.$plus$eq(((FormulaExpr)triggers[i]).formula);
  }
  
  return new FormulaExpr(IExpression.trig(((FormulaExpr)body).formula,
                                          triggerExprs));
}
 
开发者ID:SRI-CSL,项目名称:bixie,代码行数:14,代码来源:PrincessProver.java


示例5: simplify

import ap.parser.IExpression; //导入依赖的package包/类
@Override
protected IExpression simplify(IExpression f) {
  // TODO this method is not tested, check it!
  if (f instanceof IFormula) {
    f = BooleanCompactifier.apply((IFormula) f);
  }
  return PartialEvaluator.apply(f);
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:9,代码来源:PrincessFormulaManager.java


示例6: PrincessArrayFormulaManager

import ap.parser.IExpression; //导入依赖的package包/类
PrincessArrayFormulaManager(
    FormulaCreator<
            IExpression, PrincessTermType, PrincessEnvironment, PrincessFunctionDeclaration>
        pFormulaCreator) {
  super(pFormulaCreator);
  env = pFormulaCreator.getEnv();
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:8,代码来源:PrincessArrayFormulaManager.java


示例7: internalMakeArray

import ap.parser.IExpression; //导入依赖的package包/类
@Override
protected <TI extends Formula, TE extends Formula> IExpression internalMakeArray(
    String pName, FormulaType<TI> pIndexType, FormulaType<TE> pElementType) {

  // other types in arrays are not supported in princess
  assert pIndexType.isIntegerType() && pElementType.isIntegerType();

  final ArrayFormulaType<TI, TE> arrayFormulaType =
      FormulaType.getArrayType(pIndexType, pElementType);
  final PrincessTermType arrayType = toSolverType(arrayFormulaType);

  return getFormulaCreator().makeVariable(arrayType, pName);
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:14,代码来源:PrincessArrayFormulaManager.java


示例8: makeApp

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IExpression makeApp(PrincessEnvironment env, List<IExpression> args) {
  Preconditions.checkArgument(args.size() == 2);
  if (args.get(0) instanceof IIntLit) {
    return new ITimes(((IIntLit) args.get(0)).value(), (ITerm) args.get(1));
  } else if (args.get(1) instanceof IIntLit) {
    return new ITimes(((IIntLit) args.get(1)).value(), (ITerm) args.get(0));
  } else {
    throw new AssertionError("unexpected args for multiplication");
  }
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:12,代码来源:PrincessFunctionDeclaration.java


示例9: ifThenElse

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IExpression ifThenElse(IExpression condition, IExpression t1, IExpression t2) {
  if (t1 instanceof IFormula) {
    return new IFormulaITE((IFormula) condition, (IFormula) t1, (IFormula) t2);
  } else {
    return new ITermITE((IFormula) condition, (ITerm) t1, (ITerm) t2);
  }
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:9,代码来源:PrincessBooleanFormulaManager.java


示例10: not

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IFormula not(IExpression pBits) {
  if (pBits instanceof INot) {
    return ((INot) pBits).subformula(); // "not not a" == "a"
  } else {
    return new INot((IFormula) pBits);
  }
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:9,代码来源:PrincessBooleanFormulaManager.java


示例11: evaluateImpl

import ap.parser.IExpression; //导入依赖的package包/类
@Nullable
@Override
public Object evaluateImpl(IExpression f) {
  Option<ModelValue> out = model.evalExpression(f);
  if (out.isEmpty()) {
    return null;
  }
  ModelValue value = out.get();
  return getValue(value);
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:11,代码来源:PrincessModel.java


示例12: multiply

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IExpression multiply(IExpression pNumber1, IExpression pNumber2) {
  IExpression result;
  try {
    result = ((ITerm) pNumber1).$times((ITerm) pNumber2);
  } catch (IllegalArgumentException e) {
    result = BitShiftMultiplication.mult((ITerm) pNumber1, (ITerm) pNumber2);
  }
  return result;
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:11,代码来源:PrincessIntegerFormulaManager.java


示例13: getUnsatCore

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public List<BooleanFormula> getUnsatCore() {
  Preconditions.checkState(!closed && computeUnsatCores);
  final List<BooleanFormula> result = new ArrayList<>();
  final scala.collection.immutable.Set<Object> core = api.getUnsatCore();

  int cnt = 0;
  for (IExpression formula : getAssertedFormulas()) {
    if (core.contains(cnt)) {
      result.add(mgr.encapsulateBooleanFormula(formula));
    }
    ++cnt;
  }
  return result;
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:16,代码来源:PrincessAbstractProver.java


示例14: parseStringToTerms

import ap.parser.IExpression; //导入依赖的package包/类
public List<? extends IExpression> parseStringToTerms(String s, PrincessFormulaCreator creator) {

    Tuple3<
            Seq<IFormula>, scala.collection.immutable.Map<IFunction, SMTFunctionType>,
            scala.collection.immutable.Map<ConstantTerm, SMTType>>
        triple = api.extractSMTLIBAssertionsSymbols(new StringReader(s));

    List<? extends IExpression> formula = seqAsJavaList(triple._1());
    Map<IFunction, SMTFunctionType> functionTypes = mapAsJavaMap(triple._2());
    Map<ConstantTerm, SMTType> constantTypes = mapAsJavaMap(triple._3());

    ImmutableSet.Builder<IExpression> declaredFunctions = ImmutableSet.builder();
    for (IExpression f : formula) {
      declaredFunctions.addAll(creator.extractVariablesAndUFs(f, true).values());
    }
    for (IExpression var : declaredFunctions.build()) {
      if (var instanceof IConstant) {
        SMTType type = constantTypes.get(((IConstant) var).c());
        if (type instanceof SMTParser2InputAbsy.SMTArray) {
          arrayVariablesCache.put(var.toString(), (ITerm) var);
        } else {
          intVariablesCache.put(var.toString(), (ITerm) var);
        }
        addSymbol((IConstant) var);
      } else if (var instanceof IAtom) {
        boolVariablesCache.put(((IAtom) var).pred().name(), (IFormula) var);
        addSymbol((IAtom) var);
      } else if (var instanceof IFunApp) {
        IFunction fun = ((IFunApp) var).fun();
        functionsCache.put(fun.name(), fun);
        functionsReturnTypes.put(fun, convertToTermType(functionTypes.get(fun)));
        addFunction(fun);
      }
    }
    return formula;
  }
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:37,代码来源:PrincessEnvironment.java


示例15: getName

import ap.parser.IExpression; //导入依赖的package包/类
private static String getName(IExpression var) {
  if (var instanceof IAtom) {
    return ((IAtom) var).pred().name();
  } else if (var instanceof IConstant) {
    return var.toString();
  } else if (var instanceof IFunApp) {
    String fullStr = ((IFunApp) var).fun().toString();
    return fullStr.substring(0, fullStr.indexOf('/'));
  }

  throw new IllegalArgumentException("The given parameter is no variable or function");
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:13,代码来源:PrincessEnvironment.java


示例16: getType

import ap.parser.IExpression; //导入依赖的package包/类
private static String getType(IExpression var) {
  if (var instanceof IFormula) {
    return "Bool";

    // functions are included here, they cannot be handled separate for princess
  } else if (var instanceof ITerm) {
    return "Int";
  }

  throw new IllegalArgumentException("The given parameter is no variable or function");
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:12,代码来源:PrincessEnvironment.java


示例17: PrincessQuantifiedFormulaManager

import ap.parser.IExpression; //导入依赖的package包/类
PrincessQuantifiedFormulaManager(
    FormulaCreator<
            IExpression, PrincessTermType, PrincessEnvironment, PrincessFunctionDeclaration>
        pCreator) {
  super(pCreator);
  env = getFormulaCreator().getEnv();
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:8,代码来源:PrincessQuantifiedFormulaManager.java


示例18: mkQuantifier

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public IExpression mkQuantifier(Quantifier q, List<IExpression> vars, IExpression body) {
  checkArgument(body instanceof IFormula);
  ap.terfor.conjunctions.Quantifier pq = (q == Quantifier.FORALL) ? ALL$.MODULE$ : EX$.MODULE$;
  if (vars.size() == 0) {

    // Body already contains bound variables.
    return new IQuantified(pq, (IFormula) body);
  } else {
    return IExpression.quanConsts(
        pq, iterableAsScalaIterable(toConstantTerm(vars)), (IFormula) body);
  }
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:14,代码来源:PrincessQuantifiedFormulaManager.java


示例19: toConstantTerm

import ap.parser.IExpression; //导入依赖的package包/类
private List<ConstantTerm> toConstantTerm(List<IExpression> lst) {
  List<ConstantTerm> retVal = new ArrayList<>(lst.size());
  for (IExpression f : lst) {
    retVal.add(((IConstant) f).c());
  }
  return retVal;
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:8,代码来源:PrincessQuantifiedFormulaManager.java


示例20: getFormulaType

import ap.parser.IExpression; //导入依赖的package包/类
@Override
public FormulaType<?> getFormulaType(IExpression pFormula) {
  if (getEnv().hasArrayType(pFormula)) {
    return new ArrayFormulaType<>(FormulaType.IntegerType, FormulaType.IntegerType);
  } else if (pFormula instanceof IFormula) {
    return FormulaType.BooleanType;
  } else if (pFormula instanceof ITerm) {
    return FormulaType.IntegerType;
  }
  throw new IllegalArgumentException("Unknown formula type");
}
 
开发者ID:sosy-lab,项目名称:java-smt,代码行数:12,代码来源:PrincessFormulaCreator.java



注:本文中的ap.parser.IExpression类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Callback类代码示例发布时间:2022-05-16
下一篇:
Java SynthesisEngine类代码示例发布时间:2022-05-16
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap