1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.qedeq.kernel.bo.logic.common;
17
18 import java.util.ArrayList;
19 import java.util.List;
20
21 import org.qedeq.base.utility.EqualsUtility;
22 import org.qedeq.kernel.se.base.list.Element;
23 import org.qedeq.kernel.se.base.list.ElementList;
24 import org.qedeq.kernel.se.common.ModuleContext;
25
26
27
28
29
30
31 public final class FunctionConstant {
32
33
34 private final FunctionKey key;
35
36
37 private final ElementList completeFormula;
38
39
40 private final ModuleContext context;
41
42
43 private final ElementList function;
44
45
46 private final ElementList definingTerm;
47
48
49 private final List subjectVariables;
50
51
52
53
54
55
56
57
58
59 public FunctionConstant(final FunctionKey key, final ElementList completeFormula,
60 final ModuleContext context) {
61 this.key = key;
62 this.completeFormula = completeFormula;
63 this.context = new ModuleContext(context);
64 final ElementList list = completeFormula.getList();
65 function = list.getElement(1).getList();
66 definingTerm = list.getElement(2).getList();
67 subjectVariables = new ArrayList(function.size() - 1);
68 for (int i = 0; i < function.size() - 1; i++) {
69 subjectVariables.add(new SubjectVariable(
70 function.getElement(i + 1).getList().getElement(0).getAtom().getString()));
71 }
72 }
73
74
75
76
77
78
79 public FunctionKey getKey() {
80 return key;
81 }
82
83
84
85
86
87
88 public String getName() {
89 return key.getName();
90 }
91
92
93
94
95
96
97 public String getArguments() {
98 return key.getArguments();
99 }
100
101
102
103
104
105
106 public Element getCompleteFormula() {
107 return completeFormula;
108 }
109
110
111
112
113
114
115 public ModuleContext getContext() {
116 return context;
117 }
118
119
120
121
122
123 public ElementList getFunction() {
124 return function;
125 }
126
127
128
129
130
131
132 public List getSubjectVariables() {
133 return subjectVariables;
134 }
135
136
137
138
139
140
141 public Element getDefiningTerm() {
142 return definingTerm;
143 }
144
145 public int hashCode() {
146 return (getKey() != null ? getKey().hashCode() : 0)
147 ^ (getCompleteFormula() != null ? getCompleteFormula().hashCode() : 0);
148 }
149
150 public boolean equals(final Object obj) {
151 if (!(obj instanceof FunctionConstant)) {
152 return false;
153 }
154 final FunctionConstant other = (FunctionConstant) obj;
155 return EqualsUtility.equals(getKey(), other.getKey())
156 && EqualsUtility.equals(getCompleteFormula(), other.getCompleteFormula());
157 }
158
159 public String toString() {
160 return getName() + "[" + getArguments() + "]";
161 }
162
163
164 }