catlogic 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57afcbee35246b90edd31886a66d0d2cf921886b
4
- data.tar.gz: d800074866220096293953f434c5b102a07f0bcd
3
+ metadata.gz: 90a09a9e2399112e248c597e72c7c9d28849fe84
4
+ data.tar.gz: ddc5fa27e7320b5f05ca279cf247c3daac25b876
5
5
  SHA512:
6
- metadata.gz: 7205ea09f5d5337b984364a89df4321bbbe00589ab7086812156491461d7ec46fa07c16152476de084f724e807dba2ab185d7b82975c7dfccec5d7324ef44c08
7
- data.tar.gz: bb1b1ef80850971219ec479b711649161d078208b9f7e19bc5fa75fb3a12a9950d298ea44dbed723d9519af0ff61e86416048504c16ee92fd8af799fcd6eb54e
6
+ metadata.gz: daf7a9cb7f0409ad7dd4100dc787d43ea61f70d6798f872747c5554f4ee8a976d3e0706434b91ee8064dde15b16e9a85fc66582592343a768f7a07f1d01711a6
7
+ data.tar.gz: 1109801b36ac153639a25dbd5b4ca7fca6673db3a2f65d530cc2a3d612c9002352c41f067cc962c2ed9a36b5036158a924ccc65e0253792138817e1cedab4e81
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ /.idea/
data/lib/catlogic/form.rb CHANGED
@@ -19,4 +19,80 @@ class Form
19
19
  syllogism = self.syllogism
20
20
  syllogism.validity
21
21
  end
22
- end
22
+ def name
23
+ case @figure.label
24
+ when 1
25
+ case @mood.label
26
+ when "AAA"
27
+ name = "Barbara"
28
+ when "EAE"
29
+ name = "Celarent"
30
+ when "AII"
31
+ name = "Darii"
32
+ when "EIO"
33
+ name = "Ferio"
34
+ when "AAI"
35
+ name = "Barbari"
36
+ when "EAO"
37
+ name = "Celaront"
38
+ else
39
+ name = nil
40
+ end
41
+ when 2
42
+ case @mood.label
43
+ when "EAE"
44
+ name = "Cesare"
45
+ when "AEE"
46
+ name = "Camestres"
47
+ when "EIO"
48
+ name = "Festino"
49
+ when "AOO"
50
+ name = "Baroco"
51
+ when "EAO"
52
+ name = "Cesaro"
53
+ when "AEO"
54
+ name = "Camestrop"
55
+ else
56
+ name = nil
57
+ end
58
+ when 3
59
+ case @mood.label
60
+ when "AAI"
61
+ name = "Darapti"
62
+ when "IAI"
63
+ name = "Disamis"
64
+ when "AII"
65
+ name = "Datisi"
66
+ when "EAO"
67
+ name = "Felapton"
68
+ when "OAO"
69
+ name = "Bocardo"
70
+ when "EIO"
71
+ name = "Ferison"
72
+ else
73
+ name = nil
74
+ end
75
+ when 4
76
+ case @mood.label
77
+ when "AAI"
78
+ name = "Bramantip"
79
+ when "AEE"
80
+ name = "Camenes"
81
+ when "IAI"
82
+ name = "Festino"
83
+ when "EAO"
84
+ name = "Fesapo"
85
+ when "EIO"
86
+ name = "Fresison"
87
+ when "AEO"
88
+ name = "Camenop"
89
+ else
90
+ name = nil
91
+ end
92
+ else
93
+ name = nil
94
+ end
95
+ return name
96
+ end
97
+
98
+ end
@@ -1,211 +1,38 @@
1
1
  class PremiseCollection
2
2
  def initialize(propositionarray)
3
- @collection = propositionarray
3
+ @collection_array = propositionarray
4
4
  end
5
5
 
6
- def getAllValidSyllogisms
7
-
8
- if @collection.count < 2
9
- puts "collection must include two or more propositions"
6
+ def at_least_two?
7
+ if @collection_array.count >= 2
8
+ true
10
9
  else
11
- #inputconclusions = @collection
12
- validsyllogisms = []
13
- pairs = []
14
-
15
- @collection.each do |proposition|
16
-
17
- @collection.each do |secondproposition|
18
- unless proposition.equal? secondproposition
19
- pairs << PremisePair.new(proposition, secondproposition)
20
- end
21
- end
22
- end
23
- pairs.each do |pair|
24
- if pair.isThreeTermPair?
25
- conclusions = pair.getPossibleConclusions
26
- conclusions.each do |conclusion|
27
- syllogism = Syllogism.new(pair.getMajor, pair.getMinor, conclusion)
28
- if syllogism.validity == "valid"
29
- validsyllogisms << syllogism
30
- end
31
- end
32
- end
33
- end
10
+ false
34
11
  end
35
- return validsyllogisms
36
- end
37
-
38
- def getUniqueValidSyllogisms
39
- inputconclusions = @collection
40
- validsyllogisms = self.getAllValidSyllogisms
41
- uniquevalidsyllogisms = []
42
-
43
- validsyllogisms.each do |syllogism|
44
- validconclusion = syllogism.getConclusion
45
- if (validconclusion.isUnique?(inputconclusions))
46
- uniquevalidsyllogisms << syllogism
47
- end
48
- end
49
- return uniquevalidsyllogisms
50
12
  end
51
-
52
- =begin
53
- def getUniqueInferredTruths
54
-
55
- uniquevalidsyllogisms = self.getUniqueValidSyllogisms
56
- uniqueinferredtruths = []
57
-
58
- uniquevalidsyllogisms.each do |syllogism|
59
- uniqueinferredtruths << syllogism.getConclusion
60
- end
61
-
62
- return uniqueinferredtruths
13
+ def size
14
+ @collection_array.count
63
15
  end
64
- =end
65
-
66
- def getAllInferredTruths
67
- inputconclusions = @collection
68
- inferredconclusions = []
69
-
70
- validsyllogisms = self.getAllValidSyllogisms
71
- validsyllogisms.each do |syllogism|
72
- validconclusion = syllogism.getConclusion
73
-
74
- if (validconclusion.isUnique?(inputconclusions))
75
- inferredconclusions << validconclusion
16
+ def unique_set
17
+ unique_set = []
18
+ @collection_array.each do |conclusion|
19
+ if unique_set.count == 0
20
+ unique_set << conclusion
21
+ elsif conclusion.unique?(unique_set)
22
+ unique_set << conclusion
76
23
  end
77
24
  end
78
- return inferredconclusions
79
- end
80
-
81
-
82
- def getUniqueInferredTruths
83
- newset = PremiseCollection.new(self.getAllInferredTruths)
84
- unique_inferredconclusions = newset.reduceToUniqueSet
85
- return unique_inferredconclusions
86
- end
87
-
88
-
89
-
90
- def displayLoopedInferredTruths
91
-
92
- #get first set of inferences from initial collection set
93
- inferredtruths = self.getUniqueInferredTruths
94
- #combine with existing - on first interation will be comined with empty array
95
- combinedset = self.combineSets(inferredtruths)
96
-
97
- puts "======================="
98
- puts "first set of inferences"
99
- puts inferredtruths.count
100
- puts "======================="
101
-
102
-
103
- self.displayAllValidSyllogisms
104
- self.displayUniqueSyllogisms
105
- self.displayInferredTruths
106
-
107
-
108
- while (inferredtruths.count != 0)
109
-
110
- ## create new collection object
111
- newcollection = PremiseCollection.new(combinedset)
112
-
113
- ## get next set of inferences
114
-
115
- #reset inferred truths
116
- inferredtruths = newcollection.getUniqueInferredTruths
117
- #rest combined set
118
- combinedset = newcollection.combineSets(inferredtruths)
119
-
120
- puts "======================="
121
- puts "next set of inferences"
122
- puts inferredtruths.count
123
- puts "======================="
124
-
125
- #display inferred set
126
- newcollection.displayAllValidSyllogisms
127
- newcollection.displayUniqueSyllogisms
128
- newcollection.displayInferredTruths
129
-
130
- end
131
- end
132
-
133
-
134
- def combineSets(newset)
135
- newcollection = []
136
-
137
- newcollection << @collection
138
- newcollection << newset
139
-
140
-
141
- return newcollection.flatten
25
+ return unique_set
142
26
  end
143
-
144
-
145
-
146
- def reduceToUniqueSet
147
- unique_knownconclusions = []
148
-
149
- @collection.each do |conclusion|
150
- if unique_knownconclusions.count == 0
151
- unique_knownconclusions << conclusion
152
- elsif conclusion.isUnique?(unique_knownconclusions)
153
- unique_knownconclusions << conclusion
27
+ def premise_pairs
28
+ pairs = []
29
+ @collection_array.each do |proposition|
30
+ @collection_array.each do |secondproposition|
31
+ unless proposition.same_as?(secondproposition)
32
+ pairs << PremisePair.new(proposition, secondproposition)
33
+ end
154
34
  end
155
-
156
-
157
35
  end
158
- return unique_knownconclusions
159
- end
160
-
161
- def displayInferredTruths
162
- truths = self.getUniqueInferredTruths
163
- puts
164
- puts "==== Begin Display All Unique Inferred Truths ==="
165
- truths.each do |truth|
166
- truth.displayProposition
167
- end
168
- puts "==== End Display All Unique Inferred Truths ==="
169
- puts
170
-
171
36
  end
37
+ end
172
38
 
173
- def displayAllValidSyllogisms
174
- puts
175
- puts "====== Begin Display All Valid Syllogisms==="
176
- allvalidsyllogisms = self.getAllValidSyllogisms
177
- allvalidsyllogisms.each do |syllogism|
178
- syllogism.displayForm
179
- syllogism.displaySyllogism
180
- puts
181
- end
182
- puts "======End All Vallid Syllogisms==="
183
- puts
184
- end
185
-
186
- def displayUniqueSyllogisms
187
-
188
- puts
189
- puts "======Begin Display All Syllogism Producing new truths==="
190
- uniquevalidsyllogisms = self.getUniqueValidSyllogisms
191
- uniquevalidsyllogisms.each do |syllogism|
192
- syllogism.displayForm
193
- syllogism.displaySyllogism
194
- puts
195
- end
196
- puts "======End Display All Syllogism Producing new truths==="
197
- puts
198
-
199
- end
200
-
201
-
202
- def getNumberOfInferredTruths
203
- self.getUniqueInferredTruths.count
204
- end
205
- def getNumberOfInputTruths
206
- @collection.count
207
- end
208
- def getRatioInputToInferred
209
- self.getNumberOfInferredTruths / self.getNumberOfInputTruths
210
- end
211
- end
@@ -155,6 +155,18 @@ class Proposition
155
155
  return distribution
156
156
  end
157
157
 
158
+ def same_as?(proposition)
159
+ if (proposition.quantity.label == self.quantity.label &&
160
+ proposition.subject.label == self.subject.label &&
161
+ proposition.quality.label == self.quality.label &&
162
+ proposition.predicate.label == self.predicate.label &&
163
+ proposition.truthvalue == self.truthvalue)
164
+ true
165
+ else
166
+ false
167
+ end
168
+ end
169
+
158
170
  def unique?(set)
159
171
  numerofoccurences = self.number_of_occurences(set)
160
172
  if numerofoccurences == 0
@@ -167,11 +179,7 @@ class Proposition
167
179
  def number_of_occurences(set)
168
180
  @occurences = 0
169
181
  set.each do |proposition|
170
- if (proposition.quantity.label == self.quantity.label &&
171
- proposition.subject.label == self.subject.label &&
172
- proposition.quality.label == self.quality.label &&
173
- proposition.predicate.label == self.predicate.label &&
174
- proposition.truthvalue == self.truthvalue)
182
+ if self.same_as?(proposition)
175
183
  @occurences += 1
176
184
  end
177
185
  end
@@ -1,3 +1,3 @@
1
1
  module Catlogic
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -0,0 +1,259 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
9
+
10
+ premises2 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
11
+ Proposition.new("universal", "People", "affirmative", "Mammals", true)]
12
+
13
+ premises3 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
14
+ Proposition.new("universal", "People", "affirmative", "Mammals", true),
15
+ Proposition.new("universal", "Ants", "negative", "Mammals", true)]
16
+
17
+
18
+ premises4 = [Proposition.new("universal", "planes", "affirmative", "things with wings", true),
19
+ Proposition.new("particular", "planes", "affirmative", "things with propellors", true),
20
+ Proposition.new("universal", "pilots", "affirmative", "things that fly planes", true),
21
+ Proposition.new("universal", "things that fly planes", "affirmative", "tall things", true)]
22
+
23
+ premises5 = [Proposition.new("universal", "dogs", "affirmative", "animals", true),
24
+ Proposition.new("universal", "cats", "affirmative", "animals", true),
25
+ Proposition.new("universal", "animals", "affirmative", "mortals", true),
26
+ Proposition.new("universal", "mortals", "affirmative", "things that disintegrate", true),
27
+ Proposition.new("particular", "dogs", "affirmative", "brown", true)]
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+ collection = PremiseCollection.new(premises4)
36
+
37
+
38
+ puts "==============="
39
+ puts "intial set"
40
+ puts premises4.count
41
+ puts
42
+ premises4.each do |proposition|
43
+ proposition.displayProposition
44
+ end
45
+ puts "==============="
46
+
47
+ collection.displayLoopedInferredTruths
48
+ #puts "#{collection.getNumberOfInferredTruths} / #{collection.getNumberOfInputTruths}: #{collection.getRatioInputToInferred}/1"
49
+
50
+ =begin
51
+ def getAllValidSyllogisms
52
+
53
+ if @collection.count < 2
54
+ puts "collection must include two or more propositions"
55
+ else
56
+ #inputconclusions = @collection
57
+ validsyllogisms = []
58
+ pairs = []
59
+
60
+ @collection.each do |proposition|
61
+
62
+ @collection.each do |secondproposition|
63
+ unless proposition.equal? secondproposition
64
+ pairs << PremisePair.new(proposition, secondproposition)
65
+ end
66
+ end
67
+ end
68
+ pairs.each do |pair|
69
+ if pair.isThreeTermPair?
70
+ conclusions = pair.getPossibleConclusions
71
+ conclusions.each do |conclusion|
72
+ syllogism = Syllogism.new(pair.getMajor, pair.getMinor, conclusion)
73
+ if syllogism.validity == "valid"
74
+ validsyllogisms << syllogism
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ return validsyllogisms
81
+ end
82
+
83
+ def getUniqueValidSyllogisms
84
+ inputconclusions = @collection
85
+ validsyllogisms = self.getAllValidSyllogisms
86
+ uniquevalidsyllogisms = []
87
+
88
+ validsyllogisms.each do |syllogism|
89
+ validconclusion = syllogism.getConclusion
90
+ if (validconclusion.isUnique?(inputconclusions))
91
+ uniquevalidsyllogisms << syllogism
92
+ end
93
+ end
94
+ return uniquevalidsyllogisms
95
+ end
96
+ =end
97
+
98
+ =begin
99
+ def getUniqueInferredTruths
100
+
101
+ uniquevalidsyllogisms = self.getUniqueValidSyllogisms
102
+ uniqueinferredtruths = []
103
+
104
+ uniquevalidsyllogisms.each do |syllogism|
105
+ uniqueinferredtruths << syllogism.getConclusion
106
+ end
107
+
108
+ return uniqueinferredtruths
109
+ end
110
+ =end
111
+
112
+ =begin
113
+ def getAllInferredTruths
114
+ inputconclusions = @collection
115
+ inferredconclusions = []
116
+
117
+ validsyllogisms = self.getAllValidSyllogisms
118
+ validsyllogisms.each do |syllogism|
119
+ validconclusion = syllogism.getConclusion
120
+
121
+ if (validconclusion.isUnique?(inputconclusions))
122
+ inferredconclusions << validconclusion
123
+ end
124
+ end
125
+ return inferredconclusions
126
+ end
127
+
128
+
129
+ def getUniqueInferredTruths
130
+ newset = PremiseCollection.new(self.getAllInferredTruths)
131
+ unique_inferredconclusions = newset.reduceToUniqueSet
132
+ return unique_inferredconclusions
133
+ end
134
+
135
+
136
+
137
+ def displayLoopedInferredTruths
138
+
139
+ #get first set of inferences from initial collection set
140
+ inferredtruths = self.getUniqueInferredTruths
141
+ #combine with existing - on first interation will be comined with empty array
142
+ combinedset = self.combineSets(inferredtruths)
143
+
144
+ puts "======================="
145
+ puts "first set of inferences"
146
+ puts inferredtruths.count
147
+ puts "======================="
148
+
149
+
150
+ self.displayAllValidSyllogisms
151
+ self.displayUniqueSyllogisms
152
+ self.displayInferredTruths
153
+
154
+
155
+ while (inferredtruths.count != 0)
156
+
157
+ ## create new collection object
158
+ newcollection = PremiseCollection.new(combinedset)
159
+
160
+ ## get next set of inferences
161
+
162
+ #reset inferred truths
163
+ inferredtruths = newcollection.getUniqueInferredTruths
164
+ #rest combined set
165
+ combinedset = newcollection.combineSets(inferredtruths)
166
+
167
+ puts "======================="
168
+ puts "next set of inferences"
169
+ puts inferredtruths.count
170
+ puts "======================="
171
+
172
+ #display inferred set
173
+ newcollection.displayAllValidSyllogisms
174
+ newcollection.displayUniqueSyllogisms
175
+ newcollection.displayInferredTruths
176
+
177
+ end
178
+ end
179
+
180
+
181
+ def combineSets(newset)
182
+ newcollection = []
183
+
184
+ newcollection << @collection
185
+ newcollection << newset
186
+
187
+
188
+ return newcollection.flatten
189
+ end
190
+
191
+
192
+
193
+ def reduceToUniqueSet
194
+ unique_knownconclusions = []
195
+
196
+ @collection.each do |conclusion|
197
+ if unique_knownconclusions.count == 0
198
+ unique_knownconclusions << conclusion
199
+ elsif conclusion.isUnique?(unique_knownconclusions)
200
+ unique_knownconclusions << conclusion
201
+ end
202
+
203
+
204
+ end
205
+ return unique_knownconclusions
206
+ end
207
+
208
+ def displayInferredTruths
209
+ truths = self.getUniqueInferredTruths
210
+ puts
211
+ puts "==== Begin Display All Unique Inferred Truths ==="
212
+ truths.each do |truth|
213
+ truth.displayProposition
214
+ end
215
+ puts "==== End Display All Unique Inferred Truths ==="
216
+ puts
217
+
218
+ end
219
+
220
+ def displayAllValidSyllogisms
221
+ puts
222
+ puts "====== Begin Display All Valid Syllogisms==="
223
+ allvalidsyllogisms = self.getAllValidSyllogisms
224
+ allvalidsyllogisms.each do |syllogism|
225
+ syllogism.displayForm
226
+ syllogism.displaySyllogism
227
+ puts
228
+ end
229
+ puts "======End All Vallid Syllogisms==="
230
+ puts
231
+ end
232
+
233
+ def displayUniqueSyllogisms
234
+
235
+ puts
236
+ puts "======Begin Display All Syllogism Producing new truths==="
237
+ uniquevalidsyllogisms = self.getUniqueValidSyllogisms
238
+ uniquevalidsyllogisms.each do |syllogism|
239
+ syllogism.displayForm
240
+ syllogism.displaySyllogism
241
+ puts
242
+ end
243
+ puts "======End Display All Syllogism Producing new truths==="
244
+ puts
245
+
246
+ end
247
+
248
+
249
+ def getNumberOfInferredTruths
250
+ self.getUniqueInferredTruths.count
251
+ end
252
+ def getNumberOfInputTruths
253
+ @collection.count
254
+ end
255
+ def getRatioInputToInferred
256
+ self.getNumberOfInferredTruths / self.getNumberOfInputTruths
257
+ end
258
+
259
+ =end
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlog.rb"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  typeArray = ["A", "E", "I", "O"]
6
11
  numberArray = [1,2,3,4]
@@ -16,7 +21,7 @@ numberArray.each do |i|
16
21
  form = Form.new(mood, Figure.new(i))
17
22
 
18
23
  if form.validity == true
19
- puts form.label
24
+ puts form.label + " " + form.name
20
25
  end
21
26
  end
22
27
  end
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlog.rb"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  premises1 = [Proposition.new("universal", "dogs", "affirmative", "animals", true),
6
11
  Proposition.new("universal", "cats", "affirmative", "animals", true),
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlogic.rb"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  premisesArray = [Proposition.new(Quantity.new("universal"), Term.new("Events"), Quality.new("affirmative"), Term.new("Caused Happenings"), true),
6
11
  Proposition.new(Quantity.new("universal"), Term.new("Free Decisions"), Quality.new("negative"), Term.new("Caused Happenings"), true),
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlog.rb"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  premise1 = Proposition.new("universal", "Mammals", "affirmative", "Dogs", true)
6
11
  premise2 = Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true)
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- #require_relative "../lib/catlogic"
4
3
  begin
5
4
  require 'catlogic'
6
5
  rescue LoadError
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlogic"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  type = PropositionType.new("O", true)
6
11
  proposition = type.proposition
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlog.rb"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  premisesArray = [Proposition.new("universal", "Events", "affirmative", "Caused Happenings", true),
6
11
  Proposition.new("universal", "Free Decisions", "negative", "Caused Happenings", true),
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlogic"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  major = Proposition.new(Quantity.new("universal"), Term.new("pollution free"), Quality.new("negative"), Term.new("completely efficient"), true)
6
11
  minor = Proposition.new(Quantity.new("universal"), Term.new("automobile"), Quality.new("negative"), Term.new("completely efficient"), true)
@@ -1,6 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require_relative "../lib/catlogic"
3
+ begin
4
+ require 'catlogic'
5
+ rescue LoadError
6
+ require 'rubygems'
7
+ require 'catlogic'
8
+ end
4
9
 
5
10
  mood = Mood.new(PropositionType.new("A"), PropositionType.new("A"), PropositionType.new("A"))
6
11
  figure = Figure.new(3)
data/spec/form_spec.rb CHANGED
@@ -19,4 +19,9 @@ describe "form object" do
19
19
 
20
20
  major.label == "All M are P" && minor.label == "All S are M" && conclusion.label == "All S are P"
21
21
  end
22
+
23
+ it "should return the name 'Barbara' for a AAA1 syllogism" do
24
+ name = $form.name
25
+ name.should == "Barbara"
26
+ end
22
27
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+ require 'catlogic'
3
+
4
+ describe "premise collection object" do
5
+
6
+ $collection2 = PremiseCollection.new([Proposition.new(Quantity.new("universal"), Term.new("Mammals"), Quality.new("affirmative"), Term.new("Mortal Things"), true),
7
+ Proposition.new(Quantity.new("universal"), Term.new("People"), Quality.new("affirmative"), Term.new("Mammals"), true)])
8
+
9
+ $collection3 = PremiseCollection.new([Proposition.new(Quantity.new("universal"), Term.new("Mammals"), Quality.new("affirmative"), Term.new("Mortal Things"), true),
10
+ Proposition.new(Quantity.new("universal"), Term.new("People"), Quality.new("affirmative"), Term.new("Mammals"), true),
11
+ Proposition.new(Quantity.new("universal"), Term.new("Ants"), Quality.new("Negative"), Term.new("Mammals"), true)])
12
+
13
+ it "should confirm that there are two or more premises in the collection" do
14
+ result = $collection2.at_least_two?
15
+ result.should == true
16
+ end
17
+
18
+ it 'should return the size of the collection3 as 3 (aka the number of propositions in the collection' do
19
+ result = $collection3.size
20
+ result.should == 3
21
+ end
22
+
23
+ it 'should reduce collection to unique propositions only and return count of 3' do
24
+ result = $collection3.unique_set
25
+ result.count.should == 3
26
+ end
27
+
28
+ it 'should reduce non-unique collection to unique propositions only and return count of 2' do
29
+ collection = PremiseCollection.new([Proposition.new(Quantity.new("universal"), Term.new("Mammals"), Quality.new("affirmative"), Term.new("Mortal Things"), true),
30
+ Proposition.new(Quantity.new("universal"), Term.new("Mammals"), Quality.new("affirmative"), Term.new("Mortal Things"), true),
31
+ Proposition.new(Quantity.new("universal"), Term.new("Ants"), Quality.new("Negative"), Term.new("Mammals"), true)])
32
+ result = collection.unique_set
33
+ result.count.should == 2
34
+
35
+ end
36
+
37
+ it 'should return a premise pair collection for two propositions whose set count is 2' do
38
+ result = $collection2.premise_pairs
39
+ result.count.should == 2
40
+ end
41
+ end
@@ -212,4 +212,19 @@ describe 'proposition object' do
212
212
 
213
213
  result.should == false
214
214
  end
215
+
216
+ it 'can return answer false for two propositions that are not identical' do
217
+ prop1 = Proposition.new(Quantity.new("universal"), Term.new("Events"), Quality.new("affirmative"), Term.new("Caused Happenings"), true)
218
+ prop2 = Proposition.new(Quantity.new("universal"), Term.new("Free Decisions"), Quality.new("negative"), Term.new("Caused Happenings"), true)
219
+ result = prop1.same_as?(prop2)
220
+ result.should == false
221
+ end
222
+ it 'can return answer true for two propositions that are identical' do
223
+ prop1 = Proposition.new(Quantity.new("universal"), Term.new("Events"), Quality.new("affirmative"), Term.new("Caused Happenings"), true)
224
+ prop2 = Proposition.new(Quantity.new("universal"), Term.new("Events"), Quality.new("affirmative"), Term.new("Caused Happenings"), true)
225
+ result = prop1.same_as?(prop2)
226
+ result.should == true
227
+ end
228
+
229
+
215
230
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catlogic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey C. Witt
@@ -81,25 +81,6 @@ files:
81
81
  - LICENSE.txt
82
82
  - README.md
83
83
  - Rakefile
84
- - bin2/.idea/.name
85
- - bin2/.idea/bin.iml
86
- - bin2/.idea/encodings.xml
87
- - bin2/.idea/misc.xml
88
- - bin2/.idea/modules.xml
89
- - bin2/.idea/scopes/scope_settings.xml
90
- - bin2/.idea/vcs.xml
91
- - bin2/.idea/workspace.xml
92
- - bin2/displayInferredTruths.rb
93
- - bin2/getAllValidPropositions.rb
94
- - bin2/testCombineSets.rb
95
- - bin2/testIfUnique.rb
96
- - bin2/testPremisePair.rb
97
- - bin2/testProposition.rb
98
- - bin2/testPropositionType.rb
99
- - bin2/testQuantity.rb
100
- - bin2/testReduceToUniqueSet.rb
101
- - bin2/testSyllogism.rb
102
- - bin2/testSyllogismForm.rb
103
84
  - catlogic.gemspec
104
85
  - lib/catlogic.rb
105
86
  - lib/catlogic/distribution.rb
@@ -115,10 +96,30 @@ files:
115
96
  - lib/catlogic/syllogism.rb
116
97
  - lib/catlogic/term.rb
117
98
  - lib/catlogic/version.rb
99
+ - scripts/.idea/.name
100
+ - scripts/.idea/bin.iml
101
+ - scripts/.idea/encodings.xml
102
+ - scripts/.idea/misc.xml
103
+ - scripts/.idea/modules.xml
104
+ - scripts/.idea/scopes/scope_settings.xml
105
+ - scripts/.idea/vcs.xml
106
+ - scripts/.idea/workspace.xml
107
+ - scripts/displayInferredTruths.rb
108
+ - scripts/getAllValidPropositions.rb
109
+ - scripts/testCombineSets.rb
110
+ - scripts/testIfUnique.rb
111
+ - scripts/testPremisePair.rb
112
+ - scripts/testProposition.rb
113
+ - scripts/testPropositionType.rb
114
+ - scripts/testQuantity.rb
115
+ - scripts/testReduceToUniqueSet.rb
116
+ - scripts/testSyllogism.rb
117
+ - scripts/testSyllogismForm.rb
118
118
  - spec/distribution_spec.rb
119
119
  - spec/figure_spec.rb
120
120
  - spec/form_spec.rb
121
121
  - spec/mood_spec.rb
122
+ - spec/premise_collection_spec.rb
122
123
  - spec/premise_pair_spec.rb
123
124
  - spec/proposition_spec.rb
124
125
  - spec/proposition_type_spec.rb
@@ -156,6 +157,7 @@ test_files:
156
157
  - spec/figure_spec.rb
157
158
  - spec/form_spec.rb
158
159
  - spec/mood_spec.rb
160
+ - spec/premise_collection_spec.rb
159
161
  - spec/premise_pair_spec.rb
160
162
  - spec/proposition_spec.rb
161
163
  - spec/proposition_type_spec.rb
@@ -1,43 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require_relative "../lib/catlog.rb"
4
-
5
- premises2 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
6
- Proposition.new("universal", "People", "affirmative", "Mammals", true)]
7
-
8
- premises3 = [Proposition.new("universal", "Mammals", "affirmative", "Mortal Things", true),
9
- Proposition.new("universal", "People", "affirmative", "Mammals", true),
10
- Proposition.new("universal", "Ants", "negative", "Mammals", true)]
11
-
12
-
13
- premises4 = [Proposition.new("universal", "planes", "affirmative", "things with wings", true),
14
- Proposition.new("particular", "planes", "affirmative", "things with propellors", true),
15
- Proposition.new("universal", "pilots", "affirmative", "things that fly planes", true),
16
- Proposition.new("universal", "things that fly planes", "affirmative", "tall things", true)]
17
-
18
- premises5 = [Proposition.new("universal", "dogs", "affirmative", "animals", true),
19
- Proposition.new("universal", "cats", "affirmative", "animals", true),
20
- Proposition.new("universal", "animals", "affirmative", "mortals", true),
21
- Proposition.new("universal", "mortals", "affirmative", "things that disintegrate", true),
22
- Proposition.new("particular", "dogs", "affirmative", "brown", true)]
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
- collection = PremiseCollection.new(premises4)
31
-
32
-
33
- puts "==============="
34
- puts "intial set"
35
- puts premises4.count
36
- puts
37
- premises4.each do |proposition|
38
- proposition.displayProposition
39
- end
40
- puts "==============="
41
-
42
- collection.displayLoopedInferredTruths
43
- #puts "#{collection.getNumberOfInferredTruths} / #{collection.getNumberOfInputTruths}: #{collection.getRatioInputToInferred}/1"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes