Class: PremiseCollection
- Inherits:
-
Object
- Object
- PremiseCollection
- Defined in:
- lib/catlogic/premise_collection.rb
Instance Method Summary collapse
- #combineSets(newset) ⇒ Object
- #displayAllValidSyllogisms ⇒ Object
- #displayInferredTruths ⇒ Object
- #displayLoopedInferredTruths ⇒ Object
- #displayUniqueSyllogisms ⇒ Object
-
#getAllInferredTruths ⇒ Object
def getUniqueInferredTruths.
- #getAllValidSyllogisms ⇒ Object
- #getNumberOfInferredTruths ⇒ Object
- #getNumberOfInputTruths ⇒ Object
- #getRatioInputToInferred ⇒ Object
- #getUniqueInferredTruths ⇒ Object
- #getUniqueValidSyllogisms ⇒ Object
-
#initialize(propositionarray) ⇒ PremiseCollection
constructor
A new instance of PremiseCollection.
- #reduceToUniqueSet ⇒ Object
Constructor Details
#initialize(propositionarray) ⇒ PremiseCollection
Returns a new instance of PremiseCollection.
2 3 4 |
# File 'lib/catlogic/premise_collection.rb', line 2 def initialize(propositionarray) @collection = propositionarray end |
Instance Method Details
#combineSets(newset) ⇒ Object
134 135 136 137 138 139 140 141 142 |
# File 'lib/catlogic/premise_collection.rb', line 134 def combineSets(newset) newcollection = [] newcollection << @collection newcollection << newset return newcollection.flatten end |
#displayAllValidSyllogisms ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/catlogic/premise_collection.rb', line 173 def displayAllValidSyllogisms puts puts "====== Begin Display All Valid Syllogisms===" allvalidsyllogisms = self.getAllValidSyllogisms allvalidsyllogisms.each do |syllogism| syllogism.displayForm syllogism.displaySyllogism puts end puts "======End All Vallid Syllogisms===" puts end |
#displayInferredTruths ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/catlogic/premise_collection.rb', line 161 def displayInferredTruths truths = self.getUniqueInferredTruths puts puts "==== Begin Display All Unique Inferred Truths ===" truths.each do |truth| truth.displayProposition end puts "==== End Display All Unique Inferred Truths ===" puts end |
#displayLoopedInferredTruths ⇒ Object
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/catlogic/premise_collection.rb', line 90 def displayLoopedInferredTruths #get first set of inferences from initial collection set inferredtruths = self.getUniqueInferredTruths #combine with existing - on first interation will be comined with empty array combinedset = self.combineSets(inferredtruths) puts "=======================" puts "first set of inferences" puts inferredtruths.count puts "=======================" self.displayAllValidSyllogisms self.displayUniqueSyllogisms self.displayInferredTruths while (inferredtruths.count != 0) ## create new collection object newcollection = PremiseCollection.new(combinedset) ## get next set of inferences #reset inferred truths inferredtruths = newcollection.getUniqueInferredTruths #rest combined set combinedset = newcollection.combineSets(inferredtruths) puts "=======================" puts "next set of inferences" puts inferredtruths.count puts "=======================" #display inferred set newcollection.displayAllValidSyllogisms newcollection.displayUniqueSyllogisms newcollection.displayInferredTruths end end |
#displayUniqueSyllogisms ⇒ Object
186 187 188 189 190 191 192 193 194 195 196 197 198 199 |
# File 'lib/catlogic/premise_collection.rb', line 186 def displayUniqueSyllogisms puts puts "======Begin Display All Syllogism Producing new truths===" uniquevalidsyllogisms = self.getUniqueValidSyllogisms uniquevalidsyllogisms.each do |syllogism| syllogism.displayForm syllogism.displaySyllogism puts end puts "======End Display All Syllogism Producing new truths===" puts end |
#getAllInferredTruths ⇒ Object
def getUniqueInferredTruths
uniquevalidsyllogisms = self.getUniqueValidSyllogisms
uniqueinferredtruths = []
uniquevalidsyllogisms.each do |syllogism|
uniqueinferredtruths << syllogism.getConclusion
end
return uniqueinferredtruths
end
66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/catlogic/premise_collection.rb', line 66 def getAllInferredTruths inputconclusions = @collection inferredconclusions = [] validsyllogisms = self.getAllValidSyllogisms validsyllogisms.each do |syllogism| validconclusion = syllogism.getConclusion if (validconclusion.isUnique?(inputconclusions)) inferredconclusions << validconclusion end end return inferredconclusions end |
#getAllValidSyllogisms ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/catlogic/premise_collection.rb', line 6 def getAllValidSyllogisms if @collection.count < 2 puts "collection must include two or more propositions" else #inputconclusions = @collection validsyllogisms = [] pairs = [] @collection.each do |proposition| @collection.each do |secondproposition| unless proposition.equal? secondproposition pairs << PremisePair.new(proposition, secondproposition) end end end pairs.each do |pair| if pair.isThreeTermPair? conclusions = pair.getPossibleConclusions conclusions.each do |conclusion| syllogism = Syllogism.new(pair.getMajor, pair.getMinor, conclusion) if syllogism.validity == "valid" validsyllogisms << syllogism end end end end end return validsyllogisms end |
#getNumberOfInferredTruths ⇒ Object
202 203 204 |
# File 'lib/catlogic/premise_collection.rb', line 202 def getNumberOfInferredTruths self.getUniqueInferredTruths.count end |
#getNumberOfInputTruths ⇒ Object
205 206 207 |
# File 'lib/catlogic/premise_collection.rb', line 205 def getNumberOfInputTruths @collection.count end |
#getRatioInputToInferred ⇒ Object
208 209 210 |
# File 'lib/catlogic/premise_collection.rb', line 208 def getRatioInputToInferred self.getNumberOfInferredTruths / self.getNumberOfInputTruths end |
#getUniqueInferredTruths ⇒ Object
82 83 84 85 86 |
# File 'lib/catlogic/premise_collection.rb', line 82 def getUniqueInferredTruths newset = PremiseCollection.new(self.getAllInferredTruths) unique_inferredconclusions = newset.reduceToUniqueSet return unique_inferredconclusions end |
#getUniqueValidSyllogisms ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/catlogic/premise_collection.rb', line 38 def getUniqueValidSyllogisms inputconclusions = @collection validsyllogisms = self.getAllValidSyllogisms uniquevalidsyllogisms = [] validsyllogisms.each do |syllogism| validconclusion = syllogism.getConclusion if (validconclusion.isUnique?(inputconclusions)) uniquevalidsyllogisms << syllogism end end return uniquevalidsyllogisms end |
#reduceToUniqueSet ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/catlogic/premise_collection.rb', line 146 def reduceToUniqueSet unique_knownconclusions = [] @collection.each do |conclusion| if unique_knownconclusions.count == 0 unique_knownconclusions << conclusion elsif conclusion.isUnique?(unique_knownconclusions) unique_knownconclusions << conclusion end end return unique_knownconclusions end |