class Satre::Or

Attributes

left_disjunct[R]
right_disjunct[R]

Public Class Methods

new(left_disjunct, right_disjunct) click to toggle source
# File lib/satre/formula/propositional_logic/or.rb, line 8
def initialize(left_disjunct, right_disjunct)
  fail(ArgumentError, 'Argument must be a Formula') unless left_disjunct.is_a?(Formula)
  fail(ArgumentError, 'Argument must be a Formula') unless right_disjunct.is_a?(Formula)
  @left_disjunct = left_disjunct.dup.freeze
  @right_disjunct = right_disjunct.dup.freeze
end

Public Instance Methods

atoms() click to toggle source
# File lib/satre/formula/propositional_logic/or.rb, line 32
def atoms
  atoms = left_disjunct.atoms + right_disjunct.atoms
  atoms.uniq || []
end
eval(valudation) click to toggle source
# File lib/satre/formula/propositional_logic/or.rb, line 28
def eval(valudation)
  left_disjunct.eval(valudation) or right_disjunct.eval(valudation)
end
holds?(domain, func, pred, valudation) click to toggle source
# File lib/satre/formula/propositional_logic/or.rb, line 19
def holds?(domain, func, pred, valudation)
  left_disjunct.holds?(domain, func, pred, valudation) or right_disjunct.holds?(domain, func, pred, valudation)
end
to_s() click to toggle source
# File lib/satre/formula/propositional_logic/or.rb, line 15
def to_s
  "(#{left_disjunct} ∨ #{right_disjunct})"
end
wellformed?(sig) click to toggle source

p // q is well-formed if p and q are well-formed

# File lib/satre/formula/propositional_logic/or.rb, line 24
def wellformed?(sig)
  left_disjunct.wellformed?(sig) && right_disjunct.wellformed?(sig)
end