Class: ADSL::FOL::Equiv
Instance Method Summary collapse
-
#initialize(*subformulae) ⇒ Equiv
constructor
A new instance of Equiv.
- #resolve_spass ⇒ Object
Constructor Details
#initialize(*subformulae) ⇒ Equiv
Returns a new instance of Equiv.
154 155 156 157 |
# File 'lib/adsl/fol/first_order_logic.rb', line 154 def initialize(*subformulae) @subformulae = subformulae.flatten raise ArgumentError, "At least two subformulae required" if @subformulae.length < 2 end |
Instance Method Details
#resolve_spass ⇒ Object
159 160 161 162 163 164 165 166 167 168 169 |
# File 'lib/adsl/fol/first_order_logic.rb', line 159 def resolve_spass subformulae = @subformulae.map{ |sub| sub.resolve_spass } return subformulae.first if subformulae.length == 1 return And.new(subformulae).resolve_spass if subformulae.include? 'true' return Not.new(subformulae).resolve_spass if subformulae.include? 'false' combinations = [] (subformulae.length-1).times do |index| combinations << "equiv(#{subformulae[index]}, #{subformulae[index+1]})" end return And.new(combinations).resolve_spass end |