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