Class: Axiom::Function::Proposition

Inherits:
Axiom::Function show all
Includes:
AbstractType, 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

.self.new(true) ⇒ Tautology .self.new(false) ⇒ Contradiction

Instantiate a new Proposition

Examples:

using a true value

tautology = Proposition.new(true)

using a false value

contradiction = Proposition.new(false)

Overloads:

  • .self.new(true) ⇒ Tautology

    Return the Tautology singleton instance

    Parameters:

    • args (Array(true))

    Returns:

  • .self.new(false) ⇒ Contradiction

    Return the Contradiction singleton instance

    Parameters:

    • args (Array(false))

    Returns:

Returns:



52
53
54
55
56
57
58
# File 'lib/axiom/function/proposition.rb', line 52

def self.new(*args)
  if args.empty?
    super
  else
    (args.first.equal?(true) ? Tautology : Contradiction).instance
  end
end

.typeClass<Types::Boolean>

Return the type returned from #call

Examples:

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

Returns:

  • (Class<Types::Boolean>)


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

def self.type
  Types::Boolean
end

Instance Method Details

#callBoolean

Evaluate the proposition

Examples:

proposition.call  # => true or false

Returns:

  • (Boolean)


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

def call(*)
  self.class.call
end

#inverseProposition

Return the inverse proposition

Examples:

inverse = proposition.inverse

Returns:



94
95
96
# File 'lib/axiom/function/proposition.rb', line 94

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)


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

def rename(_aliases)
  self
end