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