import kodkod.ast.Relation; //導入方法依賴的package包/類

/**

* Calls lookup(pred) and returns the cached value, if any.

* If a replacement has not been cached, visits the formula's

* children. If nothing changes, the argument is cached and

* returned, otherwise a replacement formula is cached and returned.

* @return { p: RelationPredicate | p.name = pred.name && p.relation = pred.relation.accept(this) &&

* p.name = FUNCTION => p.targetMult = pred.targetMult &&

* p.domain = pred.domain.accept(this) &&

* p.range = pred.range.accept(this),

* p.name = TOTAL_ORDERING => p.ordered = pred.ordered.accept(this) &&

* p.first = pred.first.accept(this) &&

* p.last = pred.last.accept(this) }

*/

public Formula visit(RelationPredicate pred) {

Formula ret = lookup(pred);

if (ret!=null) return ret;

final Relation r = (Relation)pred.relation().accept(this);

switch(pred.name()) {

case ACYCLIC :

ret = (r==pred.relation()) ? pred : r.acyclic();

break;

case FUNCTION :

final RelationPredicate.Function fp = (RelationPredicate.Function) pred;

final Expression domain = fp.domain().accept(this);

final Expression range = fp.range().accept(this);

ret = (r==fp.relation() && domain==fp.domain() && range==fp.range()) ?

fp :

(fp.targetMult()==Multiplicity.ONE ? r.function(domain, range) : r.partialFunction(domain,range));

break;

case TOTAL_ORDERING :

final RelationPredicate.TotalOrdering tp = (RelationPredicate.TotalOrdering) pred;

final Relation ordered = (Relation) tp.ordered().accept(this);

final Relation first = (Relation)tp.first().accept(this);

final Relation last = (Relation)tp.last().accept(this);

ret = (r==tp.relation() && ordered==tp.ordered() && first==tp.first() && last==tp.last()) ?

tp : r.totalOrder(ordered, first, last);

break;

default :

throw new IllegalArgumentException("unknown relation predicate: " + pred.name());

}

return cache(pred,ret);

}

java partialfunction,Java Relation.partialFunction方法代碼示例相关推荐

  1. java field setfont_Java JTextField.setFont方法代碼示例

    本文整理匯總了Java中javax.swing.JTextField.setFont方法的典型用法代碼示例.如果您正苦於以下問題:Java JTextField.setFont方法的具體用法?Java ...

  2. java jdbc reparecall_Java Connection.prepareCall方法代碼示例

    本文整理匯總了Java中java.sql.Connection.prepareCall方法的典型用法代碼示例.如果您正苦於以下問題:Java Connection.prepareCall方法的具體用法 ...

  3. java swing rectangle_Java SwingUtilities.convertRectangle方法代碼示例

    本文整理匯總了Java中javax.swing.SwingUtilities.convertRectangle方法的典型用法代碼示例.如果您正苦於以下問題:Java SwingUtilities.co ...

  4. java digests.generatesalt_Java DigestUtils.sha1Hex方法代碼示例

    本文整理匯總了Java中org.apache.commons.codec.digest.DigestUtils.sha1Hex方法的典型用法代碼示例.如果您正苦於以下問題:Java DigestUti ...

  5. java imageio temp_Java ImageIO.setUseCache方法代碼示例

    本文整理匯總了Java中javax.imageio.ImageIO.setUseCache方法的典型用法代碼示例.如果您正苦於以下問題:Java ImageIO.setUseCache方法的具體用法? ...

  6. java json parser_Java JSONParser.parse方法代碼示例

    本文整理匯總了Java中org.json.simple.parser.JSONParser.parse方法的典型用法代碼示例.如果您正苦於以下問題:Java JSONParser.parse方法的具體 ...

  7. java path.resolve_Java Path.resolve方法代碼示例

    本文整理匯總了Java中java.nio.file.Path.resolve方法的典型用法代碼示例.如果您正苦於以下問題:Java Path.resolve方法的具體用法?Java Path.reso ...

  8. java hex decodehex_Java Hex.decodeHex方法代碼示例

    本文整理匯總了Java中org.apache.commons.codec.binary.Hex.decodeHex方法的典型用法代碼示例.如果您正苦於以下問題:Java Hex.decodeHex方法 ...

  9. java entry getvalue_Java Entry.getValue方法代碼示例

    本文整理匯總了Java中java.util.Map.Entry.getValue方法的典型用法代碼示例.如果您正苦於以下問題:Java Entry.getValue方法的具體用法?Java Entry ...

  10. java webclient post_Java WebClient.post方法代碼示例

    本文整理匯總了Java中org.apache.cxf.jaxrs.client.WebClient.post方法的典型用法代碼示例.如果您正苦於以下問題:Java WebClient.post方法的具 ...

最新文章

  1. L1-039. 古风排版
  2. 《Flask 入门教程》第 6 章:模板优化
  3. 209. 单点登录(SSO)
  4. java kafka 集群消费_kafka集群简单生产者消费者实例
  5. ajax js图片上传到php,Ajax上传并预览图片(附代码)
  6. [RBA开发系列一] 建立http 请求的process
  7. js实现IE、谷歌浏览器打印网页内容
  8. linux高级安全ssh限制利用PAM
  9. 毕设题目:Matlab机器人路径规划
  10. 关于protel 99se 汉化后某些菜单消失的解决方法
  11. 23种设计模式-多例模式《柒个我》
  12. 行流 - 通用;仅使用库存接口开单 and 行流 - 通用;
  13. 【CO2二氧化碳传感器】senseair S8 LP
  14. 服务器tomcat成功运行但是无法在外网访问的解决办法
  15. 1174:大整数乘法
  16. Ubuntu16.04成功解决InvalidSpecError: Invalid spec: =2.7!!!
  17. 假如生活欺骗了你……
  18. Wordpress使用CloudFlare的CDN来加速网站(页面规则缓存设置教程
  19. 经济——读《论21世纪的资本》有感
  20. jama包及求解二元一次方程组

热门文章

  1. Build-Docker-Image-from-Zero: 从零构建Docker镜像
  2. Linux Zero-copy零拷贝技术:源码示例
  3. SeismicUnix:cwpcmaps.c
  4. 如何用git将本地项目push到GitHub上?
  5. VUe3 @cli(axios)跨域访问
  6. 糖尿病监测中国际通用的“金标准”
  7. 保留小数点后三位_三年后想买车?Excel理财小助手pmt函数帮你算
  8. linux mysql 编码修改吗_Linux下mysql 修改编码
  9. ansys里面自带chemkin_ANSYS CHEMKINPRO复杂化学反应快速仿真
  10. mysql 事务中锁处理_MySQL事务处理及锁定_MySQL