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

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:



40
41
42
43
44
45
46
# File 'lib/axiom/function/proposition.rb', line 40

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

Instance Method Details

#callBoolean

Evaluate the proposition

Examples:

proposition.call  # => true or false

Returns:

  • (Boolean)


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

def call(*)
  self.class.call
end

#inverseProposition

Return the inverse proposition

Examples:

inverse = proposition.inverse

Returns:



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

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)


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

def rename(_aliases)
  self
end

#typeClass<Attribute::Boolean>

Return the type returned from #call

Returns:



91
92
93
# File 'lib/axiom/function/proposition.rb', line 91

def type
  Attribute::Boolean
end