]> matita.cs.unibo.it Git - logicplayer.git/blob - mainActivity/app/src/main/java/com/example/furt/myapplication/FormulaAnd.java
Ported to latest version of Android SDK
[logicplayer.git] / mainActivity / app / src / main / java / com / example / furt / myapplication / FormulaAnd.java
1 package com.example.furt.myapplication;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 public class FormulaAnd extends GenericFormula implements Formula
7 {
8     Formula leftF;
9     Formula rightF;
10     int leftPriority;
11     int rightPriority;
12     FormulaAnd(Formula F1,Formula F2)
13     {
14         leftF=F1;
15         rightF=F2;
16         priority=15;
17         leftPriority=15;
18         rightPriority=16;
19     }
20     @Override
21     public String Draw(int p)
22     {
23         if (priority >= p)
24             return leftF.Draw(leftPriority)+"∧"+rightF.Draw(rightPriority);
25         else
26             return("(")+leftF.Draw(leftPriority)+"∧"+rightF.Draw(rightPriority)+")";
27     }
28
29     @Override
30     public List<IntroductionRule> introductionRules()
31     {
32         List<IntroductionRule> rules=new ArrayList<IntroductionRule>();
33         rules.addAll(super.introductionRules());
34
35         //Regola di introduzione dell'And
36         RuleIntroduction andIntroduction=new RuleIntroduction("∧i",5);
37         Node Left=new Node(leftF);
38         Node Right=new Node(rightF);
39         Node thisNode=new Node(this);
40         thisNode.addChild(Left);
41         thisNode.addChild(Right);
42         andIntroduction.tempRule=thisNode;
43         rules.add(andIntroduction);
44
45         return rules;
46     }
47     public List<EliminationRule> EliminationRules()
48     {
49         List<EliminationRule> nodes=new ArrayList<EliminationRule>();
50         nodes.add(new RuleAndElimination(this));
51         return nodes;
52     }
53
54     @Override
55     public boolean Fill(Formula Filler) {
56         if(leftF.toString().equals("_")) {
57             this.leftF = Filler;
58             return true;
59         }
60         else if(rightF.toString().equals("_")) {
61             this.rightF = Filler;
62             return true;
63         }
64         return leftF.Fill(Filler) || rightF.Fill(Filler);
65     }
66
67     @Override
68     public boolean setCursor() {
69         return leftF.setCursor() || rightF.setCursor();
70     }
71
72     @Override
73     public Formula duplicate() {
74         return new FormulaAnd(leftF.duplicate(),rightF.duplicate());
75     }
76 }
77