Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SAT_Solver
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SHASHIJ GUPTA
SAT_Solver
Commits
b8cf48d7
You need to sign in or sign up before continuing.
Commit
b8cf48d7
authored
Sep 27, 2018
by
SHASHIJ GUPTA
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
first commit
parents
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
153 additions
and
0 deletions
+153
-0
compiled/drracket/errortrace/utilities_rkt.dep
compiled/drracket/errortrace/utilities_rkt.dep
+1
-0
compiled/drracket/errortrace/utilities_rkt.zo
compiled/drracket/errortrace/utilities_rkt.zo
+0
-0
satSolver.rkt
satSolver.rkt
+118
-0
utilities.rkt
utilities.rkt
+34
-0
No files found.
compiled/drracket/errortrace/utilities_rkt.dep
0 → 100644
View file @
b8cf48d7
("6.7" ("3f903c0eef72a9a3c4c7c8896f665f4779aa9928" . "1aa655e6eb6939157a1d592ba709ec77c7425ded") (collects #"errortrace" #"errortrace-key.rkt") (collects #"racket" #"main.rkt") (collects #"racket" #"runtime-config.rkt"))
compiled/drracket/errortrace/utilities_rkt.zo
0 → 100644
View file @
b8cf48d7
File added
satSolver.rkt
0 → 100644
View file @
b8cf48d7
#
lang
racket
(
require
"utilities.rkt"
)
(
define
assign
#
hash
())
(
define
unitexp
0
)
(
define
(
unitfinder
exp
)
(
cond
[(
And?
exp
)
(
or
(
unitfinder
(
And-x
exp
))
(
unitfinder
(
And-y
exp
)))]
[(
Or?
exp
)
#f
]
[(
Const?
exp
)
#f
]
[
else
(
begin
(
set!
unitexp
exp
)
#t
)]))
(
define
(
removeunit
exp
unit
)
(
define
(
helper1
rem
ex
)
(
cond
[(
And?
ex
)
(
if
(
or
(
equal?
rem
(
And-x
ex
))
(
equal?
rem
(
And-y
ex
)))
(
Const
#f
)
(
And
(
helper1
rem
(
And-x
ex
))
(
helper1
rem
(
And-y
ex
))))]
[(
Or?
ex
)
(
cond
[(
equal?
rem
(
Or-x
ex
))
(
helper1
rem
(
Or-y
ex
))]
[(
equal?
rem
(
Or-y
ex
))
(
Or-x
ex
)]
[
else
(
Or
(
Or-x
ex
)
(
helper1
rem
(
Or-y
ex
)))])]
[(
equal?
rem
ex
)
(
Const
#f
)]
[
else
ex
]))
(
define
(
helper2
rem
ex
)
(
cond
[(
Const?
ex
)
ex
]
[(
And?
ex
)
(
cond
[(
found?
rem
(
And-x
ex
))
(
helper2
rem
(
And-y
ex
))]
[(
found?
rem
(
And-y
ex
))
(
helper2
rem
(
And-x
ex
))]
[
else
(
And
(
And-x
ex
)
(
helper2
rem
(
And-y
ex
)))])]
[(
found?
rem
ex
)
(
Const
#t
)]
[
else
ex
]))
(
cond
[(
Not?
unit
)
(
helper2
unit
(
helper1
(
Not-e
unit
)
exp
)
)]
[
else
(
helper2
unit
(
helper1
(
Not
unit
)
exp
)
)]))
(
define
(
found?
rem
ex
)
(
cond
[(
Or?
ex
)
(
if
(
equal?
rem
(
Or-x
ex
))
#t
(
found?
rem
(
Or-y
ex
)))]
[(
equal?
ex
rem
)
#t
]
[
else
#f
]))
(
define
alpha
#t
)
(
define
find-var
0
)
(
define
(
parse-finder
ex
var
)
(
cond
[(
And?
ex
)
(
or
(
parse-finder
(
And-x
ex
)
var
)
(
parse-finder
(
And-y
ex
)
var
))]
[(
Or?
ex
)
(
or
(
parse-finder
(
Or-x
ex
)
var
)
(
parse-finder
(
Or-y
ex
)
var
))]
[(
Var?
ex
)
(
if
(
equal?
ex
var
)
#t
#f
)]
[(
Not?
ex
)
(
if
(
equal?
ex
var
)
#t
#f
)]
[
else
#f
]))
(
define
(
linear-removal
lis
ex
)
(
define
(
finder
e
)
(
cond
[(
And?
e
)
(
or
(
finder
(
And-x
e
))
(
finder
(
And-y
e
)))]
[(
Or?
e
)
(
or
(
finder
(
Or-x
e
))
(
finder
(
Or-y
e
)))]
[(
Var?
e
)
(
if
(
list-finder
lis
e
)
#f
(
if
(
parse-finder
ex
(
Not
e
))
(
begin
(
set!
lis
(
append
(
list
e
(
Not
e
))
lis
))
#f
)
(
begin
(
set!
find-var
e
)
(
set!
assign
(
dict-set
assign
(
Var-lit
e
)
#t
))
(
set!
lis
(
append
(
list
e
(
Not
e
))
lis
))
#t
)))]
[(
Not?
e
)
(
if
(
list-finder
lis
e
)
#f
(
if
(
parse-finder
ex
(
Not-e
e
))
(
begin
(
set!
lis
(
append
(
list
e
(
Not-e
e
))
lis
))
#f
)
(
begin
(
set!
find-var
e
)
(
set!
assign
(
dict-set
assign
(
Var-lit
(
Not-e
e
))
#f
))
(
set!
lis
(
append
(
list
e
(
Not-e
e
))
lis
))
#t
)))]
[
else
#f
]))
(
define
(
helper
e
)
(
cond
[(
And?
e
)
(
cond
[(
found?
find-var
(
And-x
e
))
(
helper
(
And-y
e
))]
[(
found?
find-var
(
And-y
e
))
(
helper
(
And-x
e
))]
[
else
(
And
(
And-x
e
)
(
helper
(
And-y
e
)))])]
[(
equal?
e
find-var
)
(
Const
#t
)]
[
else
e
]))
(
if
(
finder
ex
)
(
linear-removal
lis
(
helper
ex
))
ex
))
(
define
(
list-finder
l
a
)
(
if
(
null?
l
)
#f
(
if
(
equal?
(
car
l
)
a
)
#t
(
list-finder
(
cdr
l
)
a
))))
(
define
last-var
0
)
(
define
(
last-finder
exp
)
(
cond
[(
And?
exp
)
(
or
(
last-finder
(
And-x
exp
))
(
last-finder
(
And-y
exp
)))]
[(
Or?
exp
)
(
or
(
last-finder
(
Or-x
exp
))
(
last-finder
(
Or-y
exp
)))]
[(
or
(
Var?
exp
)
(
Not?
exp
))
(
begin
(
set!
last-var
exp
)
#t
)]
[
else
#f
]))
(
define
(
remove-const
exp
)
(
cond
[(
And?
exp
)
(
if
(
Const?
(
And-x
exp
))
(
if
(
equal?
(
And-x
exp
)
(
Const
#f
))
(
Const
#f
)
(
remove-const
(
And-y
exp
)))
(
And
(
remove-const
(
And-x
exp
))
(
remove-const
(
And-y
exp
))))]
[(
Or?
exp
)
(
if
(
found?
(
Const
#t
)
exp
)
(
Const
#t
)
(
const
#f
))]
[
else
exp
]))
(
define
(
dpll
parseexp
)
(
define
(
dpll1
parseexp
)
(
cond
[(
Const?
parseexp
)
(
if
(
Const-bool
parseexp
)
(
Const-bool
parseexp
)
#f
)]
[(
Var?
parseexp
)
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
parseexp
)
#t
))
(
set!
alpha
#t
)
#t
)]
[(
Not?
parseexp
)
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
(
Not-e
parseexp
))
#f
))
(
set!
alpha
#t
)
#t
)]
[(
unitfinder
parseexp
)
(
let*
[(
unit
unitexp
)]
(
cond
[
(
Var?
unit
)
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
unit
)
#t
))
(
set!
alpha
#t
)
(
dpll1
(
removeunit
parseexp
unit
)))]
[
else
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
(
Not-e
unit
))
#f
))
(
set!
alpha
#t
)
(
dpll1
(
removeunit
parseexp
unit
)))]))]
[
alpha
(
begin
(
set!
alpha
#f
)
(
dpll1
(
linear-removal
'
()
parseexp
)))]
[(
last-finder
parseexp
)
(
begin
(
set!
alpha
#t
)
(
let*
[(
a
last-var
)]
(
cond
[
(
dpll1
(
removeunit
parseexp
a
))
(
if
(
Var?
a
)
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
a
)
#t
))
#t
)
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
(
Not-e
a
))
#f
))
#t
))]
[(
Var?
a
)
(
if
(
dpll1
(
removeunit
parseexp
(
Not
a
)))
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
a
)
#f
))
#t
)
#f
)]
[
else
(
if
(
dpll1
(
removeunit
parseexp
(
Not-e
a
)))
(
begin
(
set!
assign
(
dict-set
assign
(
Var-lit
(
Not-e
a
))
#t
))
#t
)
#f
)]
)))]
[
else
(
dpll1
(
remove-const
parseexp
))]))
(
begin
(
set!
assign
#
hash
())
(
let*
[(
x
(
dpll1
parseexp
))]
(
if
x
#t
(
begin
(
set!
assign
#
hash
())
#f
)))))
\ No newline at end of file
utilities.rkt
0 → 100644
View file @
b8cf48d7
#
lang
racket
(
provide
(
all-defined-out
))
; Type for respresenting clauses
(
struct
Var
(
lit
)
#:transparent
)
(
struct
And
(
x
y
)
#:transparent
)
(
struct
Or
(
x
y
)
#:transparent
)
(
struct
Not
(
e
)
#:transparent
)
(
struct
Const
(
bool
)
#:transparent
)
; Parses a (list 1 -2) into (Or (Var 1) (Not (Var 2)))
(
define
(
parseSubExp
ls
)
(
cond
[(
null?
ls
)
(
error
"Given an empty sub-expression"
)]
[(
null?
(
cdr
ls
))
(
parseNeg
(
car
ls
))]
[
else
(
Or
(
parseNeg
(
car
ls
))
(
parseSubExp
(
cdr
ls
)))]))
; Parses i to (Var i) and -i to (Not (Var i))
(
define
(
parseNeg
num
)
(
if
(
<
num
0
)
(
Not
(
Var
(
*
num
-1
)))
(
Var
num
)))
; Parses full list
; Ex. (list '( 1 2) '(-3 2)) into
; (And (Or (Var 1) (Var 2)) (Or (Not (Var 3)) (Var 2)))
(
define
(
parseExp
es
)
(
cond
[(
null?
es
)
(
error
"Given empty list of expressions"
)]
[(
null?
(
cdr
es
))
(
parseSubExp
(
car
es
))]
[
else
(
And
(
parseSubExp
(
car
es
))
(
parseExp
(
cdr
es
)))]))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment