class Satre::Imp

Attributes

antendence[R]
consequence[R]

Public Class Methods

new(antendence, consequence) click to toggle source
# File lib/satre/formula/propositional_logic/imp.rb, line 8
def initialize(antendence, consequence)
  fail(ArgumentError, "Argument must be a Formula p:#{p}") unless antendence.is_a?(Formula)
  fail(ArgumentError, "Argument must be a Formula q:#{q}") unless consequence.is_a?(Formula)
  @antendence = antendence.dup.freeze
  @consequence = consequence.dup.freeze
end

Public Instance Methods

atoms() click to toggle source
# File lib/satre/formula/propositional_logic/imp.rb, line 33
def atoms
  atoms = antendence.atoms + consequence.atoms
  atoms.uniq || []
end
eval(valudation) click to toggle source
# File lib/satre/formula/propositional_logic/imp.rb, line 29
def eval(valudation)
  (! antendence.eval(valudation)) || (consequence.eval(valudation))
end
holds?(domain, func, pred, valudation) click to toggle source

| Imp(p,q) -> not(holds m v p) or (holds m v q)

# File lib/satre/formula/propositional_logic/imp.rb, line 25
def holds?(domain, func, pred, valudation)
  (! antendence.holds?(domain, func, pred, valudation)) || (consequence.holds?(domain, func, pred, valudation))
end
to_s() click to toggle source
# File lib/satre/formula/propositional_logic/imp.rb, line 15
def to_s
  "(#{antendence} → #{consequence})"
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/imp.rb, line 20
def wellformed?(sig)
  antendence.wellformed?(sig) && consequence.wellformed?(sig)
end