class Satre::Atom
A propositional ‘atomic’ value
Attributes
value[R]
Public Class Methods
new(value)
click to toggle source
# File lib/satre/formula/propositional_logic/atom.rb, line 11 def initialize(value) @value = value.dup.freeze end
Public Instance Methods
atoms()
click to toggle source
# File lib/satre/formula/propositional_logic/atom.rb, line 39 def atoms [value.to_s.to_sym] end
eval(valudation)
click to toggle source
# File lib/satre/formula/propositional_logic/atom.rb, line 27 def eval(valudation) fail(Error, 'valudation must be a hash') unless valudation.is_a?(Hash) fail(Error, 'all validations must be booleans') unless valudation.values.all?{|b|!!b == b} valudation = valudation.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo} fail(Error, "valudation for Atom #{value} not given") unless valudation.keys.include?(to_s.to_sym) valudation[to_s.to_sym] end
holds?(domain, func, predicate, valudation)
click to toggle source
# File lib/satre/formula/propositional_logic/atom.rb, line 15 def holds?(domain, func, predicate, valudation) fail(OperationExceprion, 'Atomic value must be a relation') unless value.is_a?(Relation) value.holds?(domain, func, predicate, valudation) end
to_s()
click to toggle source
# File lib/satre/formula/propositional_logic/atom.rb, line 35 def to_s value.to_s end
wellformed?(sig)
click to toggle source
A predicate p(x_1,…,x_n) is well-formed if
(a) each term x_1,...,x_n is well-formed (b) there is a pair (q, m) in signature sig where q = p and n = m
# File lib/satre/formula/propositional_logic/atom.rb, line 23 def wellformed?(sig) @value.wellformed?(sig) end