Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
colibrics
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Terraform modules
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
pub
colibrics
Commits
e83e3838
Commit
e83e3838
authored
2 years ago
by
Hichem R. A.
Committed by
Hichem R. A.
2 years ago
Browse files
Options
Downloads
Patches
Plain Diff
[LRA] Bump to ocplib-simplex.0.5
parent
b5076539
No related branches found
No related tags found
1 merge request
!32
Update ocplib-simplex, some fixes
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
colibri2.opam
+1
-1
1 addition, 1 deletion
colibri2.opam
colibri2/theories/LRA/simplex.ml
+19
-17
19 additions, 17 deletions
colibri2/theories/LRA/simplex.ml
dune-project
+1
-1
1 addition, 1 deletion
dune-project
with
21 additions
and
19 deletions
colibri2.opam
+
1
−
1
View file @
e83e3838
...
@@ -36,7 +36,7 @@ depends: [
...
@@ -36,7 +36,7 @@ depends: [
"farith"
"farith"
"ounit2" {>= "2.2.4" & with-test}
"ounit2" {>= "2.2.4" & with-test}
"ocaml" {>= "4.12"}
"ocaml" {>= "4.12"}
"ocplib-simplex" {= "0.
4
"}
"ocplib-simplex" {
>
= "0.
5
"}
"odoc" {with-doc}
"odoc" {with-doc}
]
]
build: [
build: [
...
...
This diff is collapsed.
Click to expand it.
colibri2/theories/LRA/simplex.ml
+
19
−
17
View file @
e83e3838
...
@@ -57,6 +57,7 @@ module Rat = struct
...
@@ -57,6 +57,7 @@ module Rat = struct
let
mult
=
A
.
mul
let
mult
=
A
.
mul
let
minus
=
A
.
neg
let
minus
=
A
.
neg
let
is_m_one
v
=
A
.
equal
v
m_one
let
is_m_one
v
=
A
.
equal
v
m_one
let
ceiling
=
ceil
end
end
module
Sim
=
OcplibSimplex
.
Basic
.
Make
(
Var
)
(
Rat
)
(
Ex
)
module
Sim
=
OcplibSimplex
.
Basic
.
Make
(
Var
)
(
Rat
)
(
Ex
)
...
@@ -211,19 +212,19 @@ let of_bound_sup = function
...
@@ -211,19 +212,19 @@ let of_bound_sup = function
|
No
->
None
|
No
->
None
|
Large
q
->
|
Large
q
->
assert
(
A
.
is_real
q
);
assert
(
A
.
is_real
q
);
Some
(
q
,
A
.
zero
)
Some
Sim
.
Core
.{
bvalue
=
R2
.
of_r
q
;
explanation
=
()
}
|
Strict
q
->
|
Strict
q
->
assert
(
A
.
is_real
q
);
assert
(
A
.
is_real
q
);
Some
(
q
,
A
.
minus_one
)
Some
Sim
.
Core
.{
bvalue
=
R2
.
upper
q
;
explanation
=
()
}
let
of_bound_inf
=
function
let
of_bound_inf
=
function
|
No
->
None
|
No
->
None
|
Large
q
->
|
Large
q
->
assert
(
A
.
is_real
q
);
assert
(
A
.
is_real
q
);
Some
(
q
,
A
.
zero
)
Some
Sim
.
Core
.{
bvalue
=
R2
.
of_r
q
;
explanation
=
()
}
|
Strict
q
->
|
Strict
q
->
assert
(
A
.
is_real
q
);
assert
(
A
.
is_real
q
);
Some
(
q
,
A
.
one
)
Some
Sim
.
Core
.{
bvalue
=
R2
.
lower
q
;
explanation
=
()
}
let
find_equalities
d
vars
(
env
:
Sim
.
Core
.
t
)
(
s
:
Sim
.
Core
.
solution
Lazy
.
t
)
=
let
find_equalities
d
vars
(
env
:
Sim
.
Core
.
t
)
(
s
:
Sim
.
Core
.
solution
Lazy
.
t
)
=
(* Env must be sat *)
(* Env must be sat *)
...
@@ -281,7 +282,7 @@ let find_equalities d vars (env : Sim.Core.t) (s : Sim.Core.solution Lazy.t) =
...
@@ -281,7 +282,7 @@ let find_equalities d vars (env : Sim.Core.t) (s : Sim.Core.solution Lazy.t) =
let
p'
=
Polynome
.
of_list
A
.
zero
[
(
a
,
A
.
one
);
(
b
,
A
.
minus_one
)
]
in
let
p'
=
Polynome
.
of_list
A
.
zero
[
(
a
,
A
.
one
);
(
b
,
A
.
minus_one
)
]
in
let
n
=
Dom_polynome
.
node_of_polynome
d
p'
in
let
n
=
Dom_polynome
.
node_of_polynome
d
p'
in
let
env'
,
_
=
let
env'
,
_
=
Sim
.
Assert
.
poly
env
p
n
(
of_bound_inf
(
Large
(
A
.
of_int
2
)))
()
None
()
Sim
.
Assert
.
poly
env
p
?
min
:
(
of_bound_inf
(
Large
(
A
.
of_int
2
)))
n
in
in
let
env'
=
Sim
.
Solve
.
solve
env'
in
let
env'
=
Sim
.
Solve
.
solve
env'
in
let
s
=
let
s
=
...
@@ -294,9 +295,10 @@ let find_equalities d vars (env : Sim.Core.t) (s : Sim.Core.solution Lazy.t) =
...
@@ -294,9 +295,10 @@ let find_equalities d vars (env : Sim.Core.t) (s : Sim.Core.solution Lazy.t) =
|
Sim
.
Core
.
Max
(
m
,
s
)
->
|
Sim
.
Core
.
Max
(
m
,
s
)
->
let
m
=
Lazy
.
force
m
in
let
m
=
Lazy
.
force
m
in
(* Debug.dprintf2 debug "Max %a" A.pp m.max_v; *)
(* Debug.dprintf2 debug "Max %a" A.pp m.max_v; *)
(
if
m
.
is_le
then
Delta
.
add_le
else
Delta
.
add_lt
)
d
a
m
.
max_v
b
;
(
if
m
.
is_le
then
Delta
.
add_le
else
Delta
.
add_lt
)
d
a
m
.
max_v
.
bvalue
.
v
b
;
let
notdistinct
=
let
notdistinct
=
if
is_int
then
A
.
lt
(
A
.
abs
m
.
max_v
)
A
.
one
else
A
.
equal
m
.
max_v
A
.
zero
if
is_int
then
A
.
lt
(
A
.
abs
m
.
max_v
.
bvalue
.
v
)
A
.
one
else
A
.
equal
m
.
max_v
.
bvalue
.
v
A
.
zero
in
in
if
notdistinct
then
(
`NotDistinct
,
env
,
s
)
else
(
`Distinct
,
env
,
s
)
if
notdistinct
then
(
`NotDistinct
,
env
,
s
)
else
(
`Distinct
,
env
,
s
)
in
in
...
@@ -341,28 +343,28 @@ let update_domains d env =
...
@@ -341,28 +343,28 @@ let update_domains d env =
if
Egraph
.
is_registered
d
n
then
if
Egraph
.
is_registered
d
n
then
let
inf
=
let
inf
=
Base
.
Option
.
map
Base
.
Option
.
map
~
f
:
(
fun
(
q1
,
q2
)
->
~
f
:
(
fun
{
bvalue
=
{
v
;
offset
};
_
}
->
let
s
=
A
.
sign
q2
in
let
s
=
A
.
sign
offset
in
let
b
=
let
b
=
if
s
=
0
then
Bound
.
Large
if
s
=
0
then
Bound
.
Large
else
if
s
>
0
then
Strict
else
if
s
>
0
then
Strict
else
assert
false
else
assert
false
(* Why? *)
(* Why? *)
in
in
(
q1
,
b
))
(
v
,
b
))
v
.
mini
v
.
mini
in
in
let
sup
=
let
sup
=
Base
.
Option
.
map
Base
.
Option
.
map
~
f
:
(
fun
(
q1
,
q2
)
->
~
f
:
(
fun
{
bvalue
=
{
v
;
offset
};
_
}
->
let
s
=
A
.
sign
q2
in
let
s
=
A
.
sign
offset
in
let
b
=
let
b
=
if
s
=
0
then
Bound
.
Large
if
s
=
0
then
Bound
.
Large
else
if
s
<
0
then
Strict
else
if
s
<
0
then
Strict
else
assert
false
else
assert
false
(* Why? *)
(* Why? *)
in
in
(
q1
,
b
))
(
v
,
b
))
v
.
maxi
v
.
maxi
in
in
let
v
=
Dom_interval
.
D
.
from_convexe_hull
(
inf
,
sup
)
in
let
v
=
Dom_interval
.
D
.
from_convexe_hull
(
inf
,
sup
)
in
...
@@ -380,7 +382,7 @@ let simplex (d : Egraph.wt) =
...
@@ -380,7 +382,7 @@ let simplex (d : Egraph.wt) =
Datastructure
.
Push
.
fold
comparisons
d
~
f
:
(
make_equations
d
)
Datastructure
.
Push
.
fold
comparisons
d
~
f
:
(
make_equations
d
)
~
init
:
(
Polynome
.
H
.
create
10
,
Node
.
S
.
empty
)
~
init
:
(
Polynome
.
H
.
create
10
,
Node
.
S
.
empty
)
in
in
let
env
=
Sim
.
Core
.
empty
~
is_int
:
false
~
check_invs
:
false
~
debug
:
0
in
let
env
=
Sim
.
Core
.
empty
~
is_int
:
false
~
check_invs
:
false
in
let
of_poly
(
p
:
Polynome
.
t
)
=
let
of_poly
(
p
:
Polynome
.
t
)
=
Node
.
M
.
fold
Node
.
M
.
fold
(
fun
n
r
acc
->
fst
(
Sim
.
Core
.
P
.
accumulate
n
r
acc
))
(
fun
n
r
acc
->
fst
(
Sim
.
Core
.
P
.
accumulate
n
r
acc
))
...
@@ -400,7 +402,7 @@ let simplex (d : Egraph.wt) =
...
@@ -400,7 +402,7 @@ let simplex (d : Egraph.wt) =
(
conv
inf
,
conv
sup
)
(
conv
inf
,
conv
sup
)
in
in
let
env
,
_
=
let
env
,
_
=
Sim
.
Assert
.
var
env
v
(
of_bound_inf
inf
)
()
(
of_bound_sup
sup
)
()
Sim
.
Assert
.
var
env
v
?
min
:
(
of_bound_inf
inf
)
?
max
:
(
of_bound_sup
sup
)
in
in
env
env
in
in
...
@@ -415,7 +417,7 @@ let simplex (d : Egraph.wt) =
...
@@ -415,7 +417,7 @@ let simplex (d : Egraph.wt) =
assert
(
A
.
equal
q
A
.
one
);
assert
(
A
.
equal
q
A
.
one
);
let
inf
=
of_bound_inf
eq
.
inf
in
let
inf
=
of_bound_inf
eq
.
inf
in
let
sup
=
of_bound_sup
eq
.
sup
in
let
sup
=
of_bound_sup
eq
.
sup
in
let
env
,
_
=
Sim
.
Assert
.
var
env
n
inf
()
sup
()
in
let
env
,
_
=
Sim
.
Assert
.
var
env
n
?
min
:
inf
?
max
:
sup
in
(
env
,
vars
))
(
env
,
vars
))
else
else
let
inf
=
of_bound_inf
eq
.
inf
in
let
inf
=
of_bound_inf
eq
.
inf
in
...
@@ -423,7 +425,7 @@ let simplex (d : Egraph.wt) =
...
@@ -423,7 +425,7 @@ let simplex (d : Egraph.wt) =
let
p
=
Polynome
.
of_map
A
.
zero
eq
.
p
in
let
p
=
Polynome
.
of_map
A
.
zero
eq
.
p
in
let
n
=
Dom_polynome
.
node_of_polynome
d
p
in
let
n
=
Dom_polynome
.
node_of_polynome
d
p
in
let
vars
=
Node
.
S
.
add
n
vars
in
let
vars
=
Node
.
S
.
add
n
vars
in
let
env
,
_
=
Sim
.
Assert
.
poly
env
(
of_poly
p
)
n
inf
()
sup
()
in
let
env
,
_
=
Sim
.
Assert
.
poly
env
(
of_poly
p
)
n
?
min
:
inf
?
max
:
sup
in
(
env
,
vars
)
(
env
,
vars
)
in
in
let
env
,
vars
=
Polynome
.
H
.
fold
add_eqs
eqs
(
env
,
vars
)
in
let
env
,
vars
=
Polynome
.
H
.
fold
add_eqs
eqs
(
env
,
vars
)
in
...
...
This diff is collapsed.
Click to expand it.
dune-project
+
1
−
1
View file @
e83e3838
...
@@ -78,6 +78,6 @@
...
@@ -78,6 +78,6 @@
"farith"
"farith"
("ounit2" (and (>= "2.2.4") :with-test))
("ounit2" (and (>= "2.2.4") :with-test))
("ocaml" (>= "4.12"))
("ocaml" (>= "4.12"))
("ocplib-simplex" (= "0.
4
"))
("ocplib-simplex" (
>
= "0.
5
"))
)
)
)
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment