Class: PremiseCollection

Inherits:
Object
  • Object
show all
Defined in:
lib/catlogic/premise_collection.rb

Instance Method Summary collapse

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

#displayAllValidSyllogismsObject



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

#displayInferredTruthsObject



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

#displayLoopedInferredTruthsObject



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

#displayUniqueSyllogismsObject



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

#getAllInferredTruthsObject

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

#getAllValidSyllogismsObject



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

#getNumberOfInferredTruthsObject



202
203
204
# File 'lib/catlogic/premise_collection.rb', line 202

def getNumberOfInferredTruths
  self.getUniqueInferredTruths.count
end

#getNumberOfInputTruthsObject



205
206
207
# File 'lib/catlogic/premise_collection.rb', line 205

def getNumberOfInputTruths
  @collection.count
end

#getRatioInputToInferredObject



208
209
210
# File 'lib/catlogic/premise_collection.rb', line 208

def getRatioInputToInferred
  self.getNumberOfInferredTruths / self.getNumberOfInputTruths
end

#getUniqueInferredTruthsObject



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

#getUniqueValidSyllogismsObject



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

#reduceToUniqueSetObject



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