Class: Catlogic::PremiseCollection

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(propositionarray) ⇒ PremiseCollection

Returns a new instance of PremiseCollection.



5
6
7
8
# File 'lib/catlogic/premise_collection.rb', line 5

def initialize(propositionarray)
  @initial_propositions = propositionarray
  @unique_propositions = self.unique_set
end

Instance Attribute Details

#initial_propositionsObject (readonly)

Returns the value of attribute initial_propositions.



3
4
5
# File 'lib/catlogic/premise_collection.rb', line 3

def initial_propositions
  @initial_propositions
end

#unique_propositionsObject (readonly)

Returns the value of attribute unique_propositions.



3
4
5
# File 'lib/catlogic/premise_collection.rb', line 3

def unique_propositions
  @unique_propositions
end

Instance Method Details

#at_least_two?Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
# File 'lib/catlogic/premise_collection.rb', line 10

def at_least_two?

  if @unique_propositions.count >= 2
    true
  else
    false
  end
end

#inferred_truths_allObject

next three functions work together first gets all new truths



74
75
76
77
78
79
80
81
# File 'lib/catlogic/premise_collection.rb', line 74

def inferred_truths_all
  inferred_truths_all = []
  validsyllogisms = self.valid_syllogisms
  validsyllogisms.each do |syllogism|
    inferred_truths_all << syllogism.conclusion
  end
  return inferred_truths_all
end

#inferred_truths_newObject

finally it checks the new set against the initial set and removes already know truths



90
91
92
93
94
95
96
97
98
99
# File 'lib/catlogic/premise_collection.rb', line 90

def inferred_truths_new
  inferred_truths_new = []
  inferred_truths_unique = self.inferred_truths_unique
  inferred_truths_unique.each do |proposition|
    if proposition.unique?(@unique_propositions)
      inferred_truths_new << proposition
    end
  end
  return inferred_truths_new
end

#inferred_truths_uniqueObject

next it reduces the inferred set to unique propositions and removes duplicates



83
84
85
86
87
88
# File 'lib/catlogic/premise_collection.rb', line 83

def inferred_truths_unique
  inferred_truths_all = self.inferred_truths_all
  inferredcollection = PremiseCollection.new(inferred_truths_all)
  inferred_truths_unique = inferredcollection.unique_propositions
  return inferred_truths_unique
end

#initial_sizeObject



21
22
23
# File 'lib/catlogic/premise_collection.rb', line 21

def initial_size
  @initial_propositions.count
end

#premise_pairsObject



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/catlogic/premise_collection.rb', line 35

def premise_pairs
  pairs = []
    @unique_propositions.each do |proposition|
      @unique_propositions.each do |secondproposition|
      unless proposition.same_as?(secondproposition)
        pairs << PremisePair.new(proposition, secondproposition)
      end
    end
  end
  return pairs
end

#sizeObject



18
19
20
# File 'lib/catlogic/premise_collection.rb', line 18

def size
  @unique_propositions.count
end

#three_term_premise_pairsObject



46
47
48
49
50
51
52
53
54
55
# File 'lib/catlogic/premise_collection.rb', line 46

def three_term_premise_pairs
  total_pairs = self.premise_pairs
  three_term_pairs = []
  total_pairs.each do |pair|
    if pair.three_term_pair?
      three_term_pairs << pair
    end
  end
  return three_term_pairs
end

#unique_setObject



24
25
26
27
28
29
30
31
32
33
34
# File 'lib/catlogic/premise_collection.rb', line 24

def unique_set
  unique_set = []
  @initial_propositions.each do |conclusion|
    if unique_set.count == 0
      unique_set << conclusion
    elsif conclusion.unique?(unique_set)
      unique_set << conclusion
    end
  end
  return unique_set
end

#valid_syllogismsObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/catlogic/premise_collection.rb', line 57

def valid_syllogisms
  validsyllogisms = []
  three_term_pairs = self.three_term_premise_pairs
  three_term_pairs.each do |pair|
    conclusions = pair.possible_conclusions
    conclusions.each do |conclusion|
      syllogism = Syllogism.new(pair.major, pair.minor, conclusion)
      if syllogism.validity == true
        validsyllogisms << syllogism
      end
    end
  end
  return validsyllogisms
end