Constant   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 10
Duplicated Lines 0 %
Metric Value
dl 0
loc 10
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A variables() 0 3 1
A to_cnf() 0 3 1
1
require 'singleton'
2
3
module PropLogic
4
  class Constant < Variable
5
    def variables
6
      []
7
    end
8
9
    def to_cnf
10
      self
11
    end
12
13
  end
14
15
  class TrueConstant < Constant
16
    include Singleton
17
    def to_s(*)
18
      'true'
19
    end
20
21
    def assign(trues, falses, variables = nil)
22
      if falses.include?(self)
23
        raise ArgumentError, 'Contradicted assignment'
24
      end
25
      self
26
    end
27
28
  end
29
30
  class FalseConstant < Constant
31
    include Singleton
32
    def to_s(*)
33
      'false'
34
    end
35
    def assign(trues, falses, variables = nil)
36
      if trues.include?(self)
37
        raise ArgumentError, 'Contradicted assignment'
38
      end
39
      self
40
    end
41
  end
42
43
  True = TrueConstant.instance.freeze
44
  False = FalseConstant.instance.freeze
45
end
46