Skip to content

Commit

Permalink
Merge pull request #271 from lixitrixi/bubble-exprs
Browse files Browse the repository at this point in the history
Bubble exprs
  • Loading branch information
ozgurakgun authored Apr 11, 2024
2 parents 27dc2da + 473221e commit bbcc5b2
Show file tree
Hide file tree
Showing 41 changed files with 2,114 additions and 1,635 deletions.
5 changes: 4 additions & 1 deletion conjure_oxide/tests/generated_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,10 @@ fn integration_test(path: &str, essence_base: &str) -> Result<(), Box<dyn Error>
assert_eq!(model, expected_model);

// Stage 2: Rewrite the model using the rule engine and check that the result is as expected
let rule_sets = resolve_rule_sets(SolverFamily::Minion, &vec!["Constant".to_string()])?;
let rule_sets = resolve_rule_sets(
SolverFamily::Minion,
&vec!["Constant".to_string(), "Bubble".to_string()],
)?;
let model = rewrite_model(&model, &rule_sets)?;
if verbose {
println!("Rewritten model: {:#?}", model)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,31 +1,29 @@
{
"constraints": {
"AllDiff": [
"Neq": [
{
"clean": false
},
[
{
"Reference": [
{
"clean": false
},
{
"UserName": "x"
}
]
},
{
"Reference": [
{
"clean": false
},
{
"UserName": "y"
}
]
}
]
{
"Reference": [
{
"clean": false
},
{
"UserName": "x"
}
]
},
{
"Reference": [
{
"clean": false
},
{
"UserName": "y"
}
]
}
]
},
"next_var": 0,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
[
{
"a": 1,
"b": 1
"MachineName(0)": 1,
"UserName(a)": 1,
"UserName(b)": 1
},
{
"a": 2,
"b": 2
"MachineName(0)": 1,
"UserName(a)": 2,
"UserName(b)": 2
},
{
"a": 3,
"b": 2
"MachineName(0)": 1,
"UserName(a)": 3,
"UserName(b)": 2
},
{
"a": 3,
"b": 3
"MachineName(0)": 1,
"UserName(a)": 3,
"UserName(b)": 3
}
]
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@
"constraints": {
"Eq": [
{
"dirtyclean": false
"clean": false
},
{
"Div": [
"UnsafeDiv": [
{
"dirtyclean": false
"clean": false
},
{
"Reference": [
{
"dirtyclean": false
"clean": false
},
{
"UserName": "a"
Expand All @@ -22,7 +22,7 @@
{
"Reference": [
{
"dirtyclean": false
"clean": false
},
{
"UserName": "b"
Expand All @@ -34,7 +34,7 @@
{
"Constant": [
{
"dirtyclean": false
"clean": false
},
{
"Int": 1
Expand All @@ -43,6 +43,7 @@
}
]
},
"next_var": 0,
"variables": [
[
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,45 @@
"constraints": {
"And": [
{
"dirtyclean": false
"clean": false
},
[
{
"DivEq": [
"Eq": [
{
"dirtyclean": false
"clean": false
},
{
"Reference": [
{
"dirtyclean": false
"clean": false
},
{
"UserName": "a"
"MachineName": 0
}
]
},
{
"Constant": [
{
"clean": false
},
{
"Int": 1
}
]
}
]
},
{
"Neq": [
{
"clean": false
},
{
"Reference": [
{
"dirtyclean": false
"clean": false
},
{
"UserName": "b"
Expand All @@ -33,48 +50,74 @@
{
"Constant": [
{
"dirtyclean": false
"clean": false
},
{
"Int": 1
"Int": 0
}
]
}
]
},
{
"AllDiff": [
"DivEq": [
{
"clean": false
},
{
"dirtyclean": false
"Reference": [
{
"clean": false
},
{
"UserName": "a"
}
]
},
{
"Reference": [
{
"clean": false
},
{
"UserName": "b"
}
]
},
[
{
"Reference": [
{
"dirtyclean": false
},
{
"UserName": "b"
}
]
},
{
"Constant": [
{
"dirtyclean": false
},
{
"Int": 0
}
]
}
]
{
"Reference": [
{
"clean": false
},
{
"MachineName": 0
}
]
}
]
}
]
]
},
"next_var": 1,
"variables": [
[
{
"MachineName": 0
},
{
"domain": {
"IntDomain": [
{
"Bounded": [
0,
3
]
}
]
}
}
],
[
{
"UserName": "a"
Expand Down
2 changes: 2 additions & 0 deletions conjure_oxide/tests/integration/basic/div/02/input.essence
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
find a : int(0..3)
such that a >= 4 / 2 $ should be simplified to constant
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
[
{
"UserName(a)": 2
},
{
"UserName(a)": 3
}
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"constraints": {
"Geq": [
{
"clean": false
},
{
"Reference": [
{
"clean": false
},
{
"UserName": "a"
}
]
},
{
"UnsafeDiv": [
{
"clean": false
},
{
"Constant": [
{
"clean": false
},
{
"Int": 4
}
]
},
{
"Constant": [
{
"clean": false
},
{
"Int": 2
}
]
}
]
}
]
},
"next_var": 0,
"variables": [
[
{
"UserName": "a"
},
{
"domain": {
"IntDomain": [
{
"Bounded": [
0,
3
]
}
]
}
}
]
]
}
Loading

0 comments on commit bbcc5b2

Please sign in to comment.