Class: Axiom::Function::Proposition

Inherits:
Axiom::Function show all
Includes:
Connective::Conjunction::Methods, Connective::Disjunction::Methods, Connective::Negation::Methods, Singleton
Defined in:
lib/axiom/function/proposition.rb,
lib/axiom/function/proposition/tautology.rb,
lib/axiom/function/proposition/contradiction.rb

Overview

Abstract base class for logical propositions

Direct Known Subclasses

Contradiction, Tautology

Defined Under Namespace

Classes: Contradiction, Tautology

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Connective::Conjunction::Methods

#and

Methods included from Aliasable

#inheritable_alias

Methods included from Connective::Disjunction::Methods

#or

Methods included from Connective::Negation::Methods

#not

Methods inherited from Axiom::Function

extract_value, rename_attributes, #type

Methods included from Visitable

#accept

Class Method Details

.coerce(object) ⇒ Proposition

Coerce a boolean into a proposition

Parameters:

  • object (Object)

Returns:

  • (Proposition)

    returned twhen the object can be coerced into a proposition

Raises:

  • (ArgumentError)

    raised when the object cannot be coerced into a proposition



37
38
39
40
41
42
43
44
45
# 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

.typeClass<Types::Boolean>

Return the type returned from #call

Examples:

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

Returns:

  • (Class<Types::Boolean>)


22
23
24
# File 'lib/axiom/function/proposition.rb', line 22

def self.type
  Types::Boolean
end

Instance Method Details

#callBoolean

Evaluate the proposition

Examples:

proposition.call  # => true or false

Returns:

  • (Boolean)


55
56
57
# File 'lib/axiom/function/proposition.rb', line 55

def call(*)
  self.class.call
end

#inverseProposition

Return the inverse proposition

Examples:

inverse = proposition.inverse

Returns:



81
82
83
# File 'lib/axiom/function/proposition.rb', line 81

def inverse
  self.class.inverse.instance
end

#rename(_aliases) ⇒ self

A no-op when receiving #rename message

Examples:

proposition = proposition.rename(aliases)

Parameters:

Returns:

  • (self)


69
70
71
# File 'lib/axiom/function/proposition.rb', line 69

def rename(_aliases)
  self
end