1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 package org.sat4j.minisat.constraints.cnf;
31
32 import org.sat4j.core.LiteralsUtils;
33 import org.sat4j.minisat.core.Constr;
34 import org.sat4j.minisat.core.ILits;
35 import org.sat4j.specs.IVecInt;
36 import org.sat4j.specs.UnitPropagationListener;
37
38
39
40
41
42
43 public class UnitClause implements Constr {
44
45 protected final int literal;
46 protected double activity;
47
48 public UnitClause(int value) {
49 this.literal = value;
50 }
51
52 public void assertConstraint(UnitPropagationListener s) {
53 s.enqueue(this.literal, this);
54 }
55
56 public void assertConstraintIfNeeded(UnitPropagationListener s) {
57 assertConstraint(s);
58 }
59
60 public void calcReason(int p, IVecInt outReason) {
61 if (p == ILits.UNDEFINED) {
62 outReason.push(LiteralsUtils.neg(this.literal));
63 }
64 }
65
66 public double getActivity() {
67 return activity;
68 }
69
70 public void incActivity(double claInc) {
71
72 }
73
74 public void setActivity(double claInc) {
75 activity = claInc;
76 }
77
78 public boolean locked() {
79 throw new UnsupportedOperationException();
80 }
81
82 public void register() {
83 throw new UnsupportedOperationException();
84 }
85
86 public void remove(UnitPropagationListener upl) {
87 upl.unset(this.literal);
88 }
89
90 public void rescaleBy(double d) {
91 throw new UnsupportedOperationException();
92 }
93
94 public void setLearnt() {
95 throw new UnsupportedOperationException();
96 }
97
98 public boolean simplify() {
99 return false;
100 }
101
102 public boolean propagate(UnitPropagationListener s, int p) {
103 throw new UnsupportedOperationException();
104 }
105
106 public int get(int i) {
107 if (i > 0) {
108 throw new IllegalArgumentException();
109 }
110 return this.literal;
111 }
112
113 public boolean learnt() {
114 return false;
115 }
116
117 public int size() {
118 return 1;
119 }
120
121 public void forwardActivity(double claInc) {
122
123 }
124
125 @Override
126 public String toString() {
127 return Lits.toString(this.literal);
128 }
129
130 public boolean canBePropagatedMultipleTimes() {
131 return false;
132 }
133
134 public void calcReasonOnTheFly(int p, IVecInt trail, IVecInt outReason) {
135 calcReason(p, outReason);
136 }
137 }