]> matita.cs.unibo.it Git - logicplayer.git/blob - mainActivity/src/com/example/furt/myapplication/FormulaAnd.java
The applet.
[logicplayer.git] / mainActivity / src / 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         RuleIntroduction andIntroduction=new RuleIntroduction("∧i",5);
35         Node Left=new Node(leftF);
36         Node Right=new Node(rightF);
37         Node thisNode=new Node(this);
38         thisNode.addChild(Left);
39         thisNode.addChild(Right);
40         andIntroduction.tempRule=thisNode;
41         rules.add(andIntroduction);
42         return rules;
43     }
44     public List<EliminationRule> EliminationRules()
45     {
46         List<EliminationRule> nodes=new ArrayList<EliminationRule>();
47         nodes.add(new RuleAndElimination(this));
48         return nodes;
49     }
50
51     @Override
52     public boolean Fill(Formula Filler) {
53         if(leftF.toString().equals("_")) {
54             this.leftF = Filler;
55             return true;
56         }
57         else if(rightF.toString().equals("_")) {
58             this.rightF = Filler;
59             return true;
60         }
61         return leftF.Fill(Filler) || rightF.Fill(Filler);
62     }
63
64     @Override
65     public boolean setCursor() {
66         return leftF.setCursor() || rightF.setCursor();
67     }
68
69     @Override
70     public Formula duplicate() {
71         return new FormulaAnd(leftF.duplicate(),rightF.duplicate());
72     }
73 }
74