private void convertComment(Rule r, StringBuilder sb) { sb.append("(*{| rule "); sb.append(ToKast.apply(r.body()).replace("|}", "| )")); sb.append(" requires "); sb.append(ToKast.apply(r.requires()).replace("|)", "| )")); sb.append(" ensures "); sb.append(ToKast.apply(r.ensures()).replace("|)", "| )")); sb.append(" "); sb.append(r.att().toString().replace("|)", "| )")); sb.append("|}*)\n"); }
private int sortRules(Rule r1, Rule r2) { return ComparisonChain.start() .compareTrueFirst(r1.att().contains("structural"), r2.att().contains("structural")) .compareFalseFirst(r1.att().contains("owise"), r2.att().contains("owise")) .compareFalseFirst(indexesPoorly(r1), indexesPoorly(r2)) .result(); }
public Rule addImplicitCells(Rule rule) { return new Rule( addImplicitCells(rule.body()), rule.requires(), rule.ensures(), rule.att()); }
private Rule resolve(Rule rule) { resetCasts(); gatherCasts(rule.body()); gatherCasts(rule.requires()); gatherCasts(rule.ensures()); return new Rule( transform(rule.body()), addSideCondition(transform(rule.requires()), rule.att().contains("macro") || rule.att().contains("alias")), transform(rule.ensures()), rule.att()); }
private Rule preprocess(Rule rule) { return Rule( preprocess(rule.body()), preprocess(rule.requires()), preprocess(rule.ensures()), rule.att()); }
private Rule lift(Rule rule) { return Rule( lift(rule.body()), lift(rule.requires()), lift(rule.ensures()), rule.att()); }
private Rule resolve(Rule rule) { return new Rule( transform(rule.body()), transform(rule.requires()), transform(rule.ensures()), rule.att()); }
private Rule postprocess(Rule rule) { return Rule( postprocess(rule.body()), postprocess(rule.requires()), postprocess(rule.ensures()), rule.att()); }
private Rule expand(Rule rule) { return Rule(expand(rule.body()), expand(rule.requires()), expand(rule.ensures()), rule.att()); }
public Rule applyNormalization(Rule denormal, K... normals) { return Rule( applyNormalization(denormal.body(), normals), applyNormalization(denormal.requires(), normals), applyNormalization(denormal.ensures(), normals), denormal.att()); }
public static Rule transform(Function1<K, K> f, Rule r) { return Rule.apply(f.apply(r.body()), f.apply(r.requires()), f.apply(r.ensures()), r.att()); }
public Sentence concretize(Sentence m) { if (m instanceof Rule) { Rule r = (Rule) m; return new Rule(concretize(r.body()), r.requires(), r.ensures(), r.att()); } else if (m instanceof Context) { Context c = (Context) m; return new Context(concretize(c.body()), c.requires(), c.att()); } else { return m; } } }
public Rule normalize(Rule rule) { resetVars(rule.body(), rule.requires(), rule.ensures()); return Rule( transform(rule.body()), transform(rule.requires()), transform(rule.ensures()), rule.att()); }
private Rule convert(Rule rule) { reset(); gatherVars(rule.body(), vars); gatherVars(rule.requires(), vars); gatherVars(rule.ensures(), vars); K body = transform(rule.body()); return Rule( body, addSideCondition(rule.requires()), rule.ensures(), rule.att()); }
private Rule convert(Rule rule) { reset(); gatherVars(rule.body(), vars); gatherVars(rule.requires(), vars); gatherVars(rule.ensures(), vars); K body = transform(rule.body()); return Rule( body, addSideCondition(rule.requires()), rule.ensures(), rule.att()); }
private Rule resolve(Rule rule) { resetVars(); gatherVars(rule.body()); gatherVars(rule.requires()); gatherVars(rule.ensures()); return new Rule( transform(rule.body()), transform(rule.requires()), transform(rule.ensures()), rule.att()); }
private Rule close(Rule rule) { resetVars(); gatherVars(rule.body()); gatherVars(rule.requires()); gatherVars(rule.ensures()); return new Rule( transform(rule.body()), transform(rule.requires()), transform(rule.ensures()), rule.att()); }
private Rule convert(Rule rule) { reset(); gatherVars(rule.body()); gatherVars(rule.requires()); gatherVars(rule.ensures()); K body = convert(rule.body()); K requires = convertLookups(rule.requires()); return Rule( body, addSideCondition(requires), rule.ensures(), rule.att()); }
private static Sentence markRegularRules(Definition d, ConfigurationInfoFromModule configInfo, Sentence s, String att) { if (s instanceof org.kframework.definition.Rule) { org.kframework.definition.Rule r = (org.kframework.definition.Rule) s; if (r.body() instanceof KApply) { KLabel klabel = ((KApply) r.body()).klabel(); if (d.mainModule().sortFor().contains(klabel) //is false for rules in specification modules not part of semantics && d.mainModule().sortFor().apply(klabel).equals(configInfo.topCell())) { return Rule.apply(r.body(), r.requires(), r.ensures(), r.att().add(att)); } } } return s; }