Class: Catlogic::PremisePair

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(major, minor) ⇒ PremisePair

Returns a new instance of PremisePair.



6
7
8
9
# File 'lib/catlogic/premise_pair.rb', line 6

def initialize(major, minor)
  @major = major
  @minor = minor
end

Instance Attribute Details

#majorObject (readonly)

Returns the value of attribute major.



4
5
6
# File 'lib/catlogic/premise_pair.rb', line 4

def major
  @major
end

#minorObject (readonly)

Returns the value of attribute minor.



4
5
6
# File 'lib/catlogic/premise_pair.rb', line 4

def minor
  @minor
end

Instance Method Details

#majortermObject



35
36
37
38
39
40
41
42
# File 'lib/catlogic/premise_pair.rb', line 35

def majorterm
  if @major.subject.label == self.middle.label
    majorterm = @major.predicate
  else
    majorterm = @major.subject
  end
  majorterm
end

#middleObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/catlogic/premise_pair.rb', line 11

def middle
  termarray = [@major.subject.label, @major.predicate.label, @minor.subject.label, @minor.predicate.label]
  middle = nil
  if self.three_term_pair?
    termarray.detect do |term|
      if termarray.count(term) == 2
        middle = Term.new(term)
      end
    end
  else
    middle = "Error: this is not a three term syllogism"
  end
  return middle
end

#minortermObject



43
44
45
46
47
48
49
50
# File 'lib/catlogic/premise_pair.rb', line 43

def minorterm
  if @minor.subject.label == self.middle.label
    minorterm = @minor.predicate
  else
    minorterm = @minor.subject
  end
  minorterm
end

#possible_conclusionsObject

still need a test for this



53
54
55
56
57
58
59
60
61
# File 'lib/catlogic/premise_pair.rb', line 53

def possible_conclusions
  possible_conclusions = [
      Proposition.new(Quantity.new("universal"), self.minorterm, Quality.new("affirmative"), self.majorterm, true),
      Proposition.new(Quantity.new("universal"), self.minorterm, Quality.new("negative"), self.majorterm, true),
      Proposition.new(Quantity.new("particular"), self.minorterm, Quality.new("affirmative"), self.majorterm, true),
      Proposition.new(Quantity.new("particular"), self.minorterm, Quality.new("negative"), self.majorterm, true)
  ]
  return possible_conclusions
end

#three_term_pair?Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
32
33
# File 'lib/catlogic/premise_pair.rb', line 26

def three_term_pair?
  termarray = [@major.subject.label, @major.predicate.label, @minor.subject.label, @minor.predicate.label]
  if termarray.uniq.size == 3
    answer = true
  else
    answer = false
  end
end