class Axiom::Function::Proposition

Abstract base class for logical propositions

Public Class Methods

coerce(object) click to toggle source

Coerce a boolean into a proposition

@param [Object] object

@return [Proposition]

returned twhen the object can be coerced into a proposition

@raise [ArgumentError]

raised when the object cannot be coerced into a proposition

@api public

# File lib/axiom/function/proposition.rb, line 37
def self.coerce(object)
  case object
  when Proposition then object
  when true        then Tautology.instance
  when false       then Contradiction.instance
  else
    fail ArgumentError, "Invalid object #{object.inspect}"
  end
end
type() click to toggle source

Return the type returned from call

@example

type = Axiom::Function::Proposition.type  # => Axiom::Types::Boolean

@return [Class<Types::Boolean>]

@api public

# File lib/axiom/function/proposition.rb, line 22
def self.type
  Types::Boolean
end

Public Instance Methods

call(*) click to toggle source

Evaluate the proposition

@example

proposition.call  # => true or false

@return [Boolean]

@api public

# File lib/axiom/function/proposition.rb, line 55
def call(*)
  self.class.call
end
inverse() click to toggle source

Return the inverse proposition

@example

inverse = proposition.inverse

@return [Proposition]

@api public

# File lib/axiom/function/proposition.rb, line 81
def inverse
  self.class.inverse.instance
end
rename(_aliases) click to toggle source

A no-op when receiving rename message

@example

proposition = proposition.rename(aliases)

@param [Algebra::Rename::Aliases] _aliases

@return [self]

@api public

# File lib/axiom/function/proposition.rb, line 69
def rename(_aliases)
  self
end