]> matita.cs.unibo.it Git - logicplayer.git/blob - mainActivity/app/src/main/java/com/example/furt/myapplication/RuleAndElimination.java
Ported to latest version of Android SDK
[logicplayer.git] / mainActivity / app / src / main / java / com / example / furt / myapplication / RuleAndElimination.java
1 package com.example.furt.myapplication;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class RuleAndElimination implements EliminationRule
7 {
8     String ruleName;
9     FormulaAnd Fn;
10     RuleAndElimination(FormulaAnd F){
11         Fn=F;
12         ruleName="∧e";
13     }
14     public Node createNodes(Formula F,askFormula ask)
15     {
16             Formula C;
17             if (F==null) //applicazione Top-Down: chiamo la callback
18                 C=ask.Ask();
19             else
20                 C=F; //applicazione bottom-up: il nuovo nodo è la formula F passata
21             Node cNode=new Node(C);
22             if ((C.toString().equals(Fn.leftF.toString())) || (C.toString().equals(Fn.rightF.toString()))) //Posso utilizzare le regole di eliminazione sinistra o destra
23             {
24                 cNode.addChild(new Node(Fn));
25                 cNode.ruleName=ruleName;
26                 return cNode;
27             }
28             Node elNode=new Node(Fn);
29             List<Formula> HP=new ArrayList<Formula>();
30             HP.add(Fn.leftF);
31             HP.add(Fn.rightF);
32             cNode.addHPFormula(HP,true);
33             Node rNode=new Node(C);
34             rNode.addChild(elNode);
35             rNode.addChild(cNode);
36             rNode.ruleName=ruleName;
37             return rNode;
38     }
39 }
40
41