diff --git a/conjure_oxide/examples/solver-hello-minion.rs b/conjure_oxide/examples/solver-hello-minion.rs index eb95de6835..dd1a31569e 100644 --- a/conjure_oxide/examples/solver-hello-minion.rs +++ b/conjure_oxide/examples/solver-hello-minion.rs @@ -27,7 +27,7 @@ pub fn main() { let model = get_example_model("div-05").unwrap(); println!( "Input model: \n {} \n", - pretty_expressions_as_top_level(&model.constraints) + pretty_expressions_as_top_level(&model.get_constraints_vec()) ); // TODO: We will have a nicer way to do this in the future @@ -36,7 +36,7 @@ pub fn main() { let model = rewrite_model(&model, &rule_sets).unwrap(); println!( "Rewritten model: \n {} \n", - pretty_expressions_as_top_level(&model.constraints) + pretty_expressions_as_top_level(&model.get_constraints_vec()) ); // To tell the `Solver` type what solver to use, you pass it a `SolverAdaptor`. diff --git a/conjure_oxide/src/utils/essence_parser.rs b/conjure_oxide/src/utils/essence_parser.rs index 66673d792b..3e53515ccb 100644 --- a/conjure_oxide/src/utils/essence_parser.rs +++ b/conjure_oxide/src/utils/essence_parser.rs @@ -39,7 +39,7 @@ pub fn parse_essence_file_native( constraint_vec.push(parse_constraint(constraint, &source_code)); } } - model.constraints.extend(constraint_vec); + model.add_constraints(constraint_vec); } "e_prime_label" => {} _ => { diff --git a/conjure_oxide/tests/generated_tests.rs b/conjure_oxide/tests/generated_tests.rs index ab409cb577..df8c57d7f9 100644 --- a/conjure_oxide/tests/generated_tests.rs +++ b/conjure_oxide/tests/generated_tests.rs @@ -357,7 +357,7 @@ fn check_solutions_stage( } fn assert_vector_operators_have_partially_evaluated(model: &conjure_core::Model) { - for node in model.constraints.universe_bi() { + for node in model.universe_bi() { use conjure_core::ast::Expression::*; match node { Sum(_, ref vec) => assert_constants_leq_one(&node, vec), diff --git a/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-parse.serialised.json index 66d4b95896..3351f0e6ec 100644 --- a/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-parse.serialised.json @@ -1,48 +1,56 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Abs": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Abs": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 1 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-rewrite.serialised.json index 73537a26e4..8e286243bc 100644 --- a/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/0-simple/input.expected-rewrite.serialised.json @@ -1,24 +1,32 @@ { - "constraints": [ - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "x" - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-parse.serialised.json index f828f97c6e..b0e3f14c7c 100644 --- a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-parse.serialised.json @@ -1,79 +1,87 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Abs": [ - { - "clean": false, - "etype": null - }, + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Abs": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] - }, - { - "Abs": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Abs": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json index 24a8bd7870..e5c46129ec 100644 --- a/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/01-simple/input.expected-rewrite.serialised.json @@ -1,102 +1,110 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } } - } - ], - { - "Literal": { - "Int": 10 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ], { - "Literal": { - "Int": 10 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "MachineName": 1 - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-parse.serialised.json index 21d78879f7..1f904f00aa 100644 --- a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-parse.serialised.json @@ -1,95 +1,103 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Abs": [ - { - "clean": false, - "etype": null - }, + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Neg": [ + "Abs": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] } ] - } - ] - }, - { - "Abs": [ - { - "clean": false, - "etype": null }, { - "Neg": [ + "Abs": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json index 24a8bd7870..e5c46129ec 100644 --- a/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/02-neg/input.expected-rewrite.serialised.json @@ -1,102 +1,110 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } } - } - ], - { - "Literal": { - "Int": 10 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ], { - "Literal": { - "Int": 10 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "MachineName": 1 - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-parse.serialised.json index 124db37da6..e99c152bf6 100644 --- a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-parse.serialised.json @@ -1,53 +1,74 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Abs": [ - { - "clean": false, - "etype": null - }, + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Minus": [ + "Abs": [ { "clean": false, "etype": null }, { - "Sum": [ + "Minus": [ { "clean": false, "etype": null }, - [ - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -58,108 +79,95 @@ "etype": null }, { - "Literal": { - "Int": 2 + "Reference": { + "UserName": "y" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null }, { - "Abs": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Abs": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json index aaf5f5b671..4f4349c3bd 100644 --- a/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/03-nested/input.expected-rewrite.serialised.json @@ -1,240 +1,248 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } } - }, - { - "Reference": { - "MachineName": 1 - } - } - ], - { - "Literal": { - "Int": 10 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ], { - "Literal": { - "Int": 10 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ], + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } + ] }, { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 4 - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 4 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "And": [ - { - "clean": false, - "etype": null - }, - [ - { - "FlatWeightedSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": 1 - }, - { - "Int": 1 - }, - { - "Int": -1 - } - ], - [ - { - "Reference": { - "MachineName": 3 - } - }, - { - "Reference": { - "UserName": "y" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], + [ + { + "Reference": { + "MachineName": 3 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 2 + } } - }, - { - "Reference": { - "UserName": "z" - } - } - ], - { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "FlatWeightedSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Int": 1 - }, - { - "Int": 1 - }, - { - "Int": -1 - } - ], - [ - { - "Reference": { - "MachineName": 3 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ], { - "Reference": { - "MachineName": 2 - } + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": -1 + } + ], + [ + { + "Reference": { + "MachineName": 3 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 2 + } + } + ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "MachineName": 3 - } - } - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "MachineName": 4 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 4 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 5, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-parse.serialised.json index bd47b65e01..ce24c5fd38 100644 --- a/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-parse.serialised.json @@ -1,37 +1,24 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Product": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Abs": [ - { - "clean": false, - "etype": null - }, + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { "Atomic": [ { @@ -40,32 +27,53 @@ }, { "Reference": { - "UserName": "x" + "UserName": "y" } } ] + }, + { + "Abs": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-rewrite.serialised.json index 40b464545d..a0fbde3bd1 100644 --- a/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/abs/04-bounds/input.expected-rewrite.serialised.json @@ -1,47 +1,55 @@ { - "constraints": [ - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "FlatAbsEq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "MachineName": 0 - } + "FlatProductEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "FlatAbsEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace-human.txt index 2ee71ea9af..ce30243887 100644 --- a/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace-human.txt @@ -6,6 +6,12 @@ such that +-- + +, + ~~> eval_root ([("Constant", 9001)]) +true + -- Final model: @@ -14,5 +20,5 @@ find x: bool such that - +true diff --git a/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace.json b/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace.json index 1ecbd71e64..8e44a74358 100644 --- a/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/basic/bool/01/bool-01-expected-rule-trace.json @@ -1,3 +1,44 @@ -{ - "Number of rules applied": 0 -} \ No newline at end of file +[ + { + "initial_expression": { + "Root": [ + [], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "eval_root", + "rule_priority": 9001, + "rule_set": { + "name": "Constant" + }, + "transformed_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, + { + "Number of rules applied": 1 + } +] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-parse.serialised.json index e0a4aa53b9..46b6c46904 100644 --- a/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-parse.serialised.json @@ -1,5 +1,13 @@ { - "constraints": [], + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [] + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-rewrite.serialised.json index e0a4aa53b9..88d7c02add 100644 --- a/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/01/bool-01.expected-rewrite.serialised.json @@ -1,5 +1,27 @@ { - "constraints": [], + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] + } + ] + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace-human.txt index 85f15deffa..bcbaedb405 100644 --- a/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace-human.txt @@ -7,6 +7,12 @@ such that +-- + +, + ~~> eval_root ([("Constant", 9001)]) +true + -- Final model: @@ -16,5 +22,5 @@ find y: bool such that - +true diff --git a/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace.json b/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace.json index 1ecbd71e64..8e44a74358 100644 --- a/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/basic/bool/02/bool-02-expected-rule-trace.json @@ -1,3 +1,44 @@ -{ - "Number of rules applied": 0 -} \ No newline at end of file +[ + { + "initial_expression": { + "Root": [ + [], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "eval_root", + "rule_priority": 9001, + "rule_set": { + "name": "Constant" + }, + "transformed_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, + { + "Number of rules applied": 1 + } +] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-parse.serialised.json index c31c6e442c..f4f6a88222 100644 --- a/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-parse.serialised.json @@ -1,5 +1,13 @@ { - "constraints": [], + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [] + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-rewrite.serialised.json index c31c6e442c..61ab8eae6a 100644 --- a/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/02/bool-02.expected-rewrite.serialised.json @@ -1,5 +1,27 @@ { - "constraints": [], + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] + } + ] + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-parse.serialised.json index a025adb859..008502ec9c 100644 --- a/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-rewrite.serialised.json index a025adb859..008502ec9c 100644 --- a/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/03/bool-03.expected-rewrite.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-parse.serialised.json index fced45d17d..9818d83055 100644 --- a/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-parse.serialised.json @@ -1,74 +1,82 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Bool": false - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": false + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-rewrite.serialised.json index 58ece0f0d3..8adeae2889 100644 --- a/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/bool/04/bool-04.expected-rewrite.serialised.json @@ -1,66 +1,74 @@ { - "constraints": [ - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Bool": false - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": false + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/01/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/01/input.expected-parse.serialised.json index 34049a5300..c32ffaa823 100644 --- a/conjure_oxide/tests/integration/basic/div/01/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/01/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "b" + "Literal": { + "Int": 1 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/01/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/01/input.expected-rewrite.serialised.json index f2569d2b11..bfe1a78816 100644 --- a/conjure_oxide/tests/integration/basic/div/01/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/01/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Literal": { - "Int": 1 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "a" + } + }, { "Reference": { "UserName": "b" } + }, + { + "Literal": { + "Int": 1 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/02/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/02/input.expected-parse.serialised.json index 33a89e36f8..a131689ad9 100644 --- a/conjure_oxide/tests/integration/basic/div/02/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/02/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Geq": [ { "clean": false, "etype": null @@ -32,30 +19,51 @@ "etype": null }, { - "Literal": { - "Int": 4 + "Reference": { + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 4 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/02/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/02/input.expected-rewrite.serialised.json index a571cdb635..ab87de5e18 100644 --- a/conjure_oxide/tests/integration/basic/div/02/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/02/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "UserName": "a" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/03/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/03/input.expected-parse.serialised.json index 7d22e64fe9..3042418b13 100644 --- a/conjure_oxide/tests/integration/basic/div/03/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/03/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Literal": { - "Int": 8 + "Int": 2 } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 8 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/03/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/03/input.expected-rewrite.serialised.json index 639ca3bd44..8de26b4f04 100644 --- a/conjure_oxide/tests/integration/basic/div/03/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/03/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 8 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Literal": { + "Int": 8 + } + }, { "Reference": { "UserName": "a" } + }, + { + "Literal": { + "Int": 2 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/04/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/04/input.expected-parse.serialised.json index f57b07088c..543aa1b1a8 100644 --- a/conjure_oxide/tests/integration/basic/div/04/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/04/input.expected-parse.serialised.json @@ -1,32 +1,19 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null @@ -39,21 +26,42 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } @@ -62,8 +70,8 @@ ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/04/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/04/input.expected-rewrite.serialised.json index 3fa507ca9b..f455466b7b 100644 --- a/conjure_oxide/tests/integration/basic/div/04/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/04/input.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/05/div-05.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/05/div-05.expected-parse.serialised.json index 8615a1180b..ed7bf39afa 100644 --- a/conjure_oxide/tests/integration/basic/div/05/div-05.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/05/div-05.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Neq": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/05/div-05.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/05/div-05.expected-rewrite.serialised.json index 78b57c1bb5..4ecf2acb31 100644 --- a/conjure_oxide/tests/integration/basic/div/05/div-05.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/05/div-05.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/06/div-06.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/div/06/div-06.expected-parse.serialised.json index f57b07088c..543aa1b1a8 100644 --- a/conjure_oxide/tests/integration/basic/div/06/div-06.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/06/div-06.expected-parse.serialised.json @@ -1,32 +1,19 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null @@ -39,21 +26,42 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } @@ -62,8 +70,8 @@ ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/div/06/div-06.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/div/06/div-06.expected-rewrite.serialised.json index 3fa507ca9b..f455466b7b 100644 --- a/conjure_oxide/tests/integration/basic/div/06/div-06.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/div/06/div-06.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-parse.serialised.json index e0d95c8a97..9c9d8643ee 100644 --- a/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-rewrite.serialised.json index c92590600b..bfb490089c 100644 --- a/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/01-basic/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-parse.serialised.json index 5cdeaf2d60..af71d3af70 100644 --- a/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-parse.serialised.json @@ -1,204 +1,212 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - } - ] - }, - { - "Geq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Geq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 5 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] } ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 8 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 8 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-rewrite.serialised.json index d67472c4da..5ca950b2fc 100644 --- a/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/02-flattening/input.expected-rewrite.serialised.json @@ -1,220 +1,228 @@ { - "constraints": [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "FlatIneq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 5 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] }, { "Reference": { - "UserName": "y" + "MachineName": 0 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, - { - "And": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, - [ - { - "FlatSumLeq": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Literal": { + "Int": 3 + } } - } - ], - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 - } - } - ], { - "Literal": { - "Int": 3 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Literal": { + "Int": 3 + } + } + ] } ] + ] + }, + { + "Reference": { + "MachineName": 1 } - ] + } ] }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 2 + "Reference": { + "MachineName": 0 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "And": [ + "MinionReify": [ { "clean": false, "etype": null }, - [ - { - "FlatSumLeq": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "y" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Literal": { + "Int": 8 + } } - }, - { - "Reference": { - "UserName": "z" - } - } - ], - { - "Literal": { - "Int": 8 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ], { - "Literal": { - "Int": 8 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Literal": { + "Int": 8 + } + } + ] } ] + ] + }, + { + "Reference": { + "MachineName": 1 } - ] + } ] - }, - { - "Reference": { - "MachineName": 1 - } } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace-human.txt index 20d6fa7f1e..b5a9720eec 100644 --- a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace-human.txt @@ -21,12 +21,28 @@ true -- +true, +Or([(a) -> (z), (z) -> (a)]), +Or([(b) -> (c), (b) -> (Not(c))]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([(a) -> (z), (z) -> (a)]), +Or([(b) -> (c), (b) -> (Not(c))]) + +-- + Or([(a) -> (z), (z) -> (a)]), ~~> partial_evaluator ([("Base", 9000)]) true -- +true, +Or([(b) -> (c), (b) -> (Not(c))]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([(b) -> (c), (b) -> (Not(c))]) + +-- + Or([(b) -> (c), (b) -> (Not(c))]), ~~> partial_evaluator ([("Base", 9000)]) true @@ -44,7 +60,5 @@ find z: bool such that -true, -true, true diff --git a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace.json b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace.json index 7da6ee6f65..fa95cc1cd3 100644 --- a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input-expected-rule-trace.json @@ -53,6 +53,374 @@ ] } }, + { + "initial_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, { "initial_expression": { "Or": [ @@ -151,6 +519,218 @@ ] } }, + { + "initial_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, { "initial_expression": { "Or": [ @@ -258,6 +838,6 @@ } }, { - "Number of rules applied": 3 + "Number of rules applied": 5 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-parse.serialised.json index 8c45b97cfc..80560de429 100644 --- a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-parse.serialised.json @@ -1,179 +1,166 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] }, { - "Atomic": [ + "Or": [ { "clean": false, "etype": null }, - { - "Reference": { - "UserName": "x" - } - } - ] - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + [ { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] }, { - "Not": [ + "Imply": [ { "clean": false, "etype": null @@ -186,19 +173,40 @@ }, { "Reference": { - "UserName": "c" + "UserName": "b" } } ] + }, + { + "Not": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-rewrite.serialised.json index 9205188fc6..af7bdb62a8 100644 --- a/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/03-tautologies/input.expected-rewrite.serialised.json @@ -1,45 +1,27 @@ { - "constraints": [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-parse.serialised.json index 55aea7f210..757e79eea3 100644 --- a/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-parse.serialised.json @@ -1,131 +1,118 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Imply": [ + "Not": [ { "clean": false, "etype": null }, { - "Not": [ + "Imply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Not": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] - }, - { - "Not": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Not": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { - "Not": [ + "Imply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Not": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Not": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Not": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] }, { "Imply": [ @@ -141,33 +128,46 @@ }, { "Reference": { - "UserName": "d" + "UserName": "c" } } ] }, { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "e" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "e" + } + } + ] } ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { "Imply": [ @@ -176,70 +176,78 @@ "etype": null }, { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "h" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] }, { - "Reference": { - "UserName": "f" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "f" + } + } + ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Imply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "h" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] }, { - "Reference": { - "UserName": "g" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-rewrite.serialised.json index 75c1b79602..d3af01b314 100644 --- a/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/implies/04-needs-normalising/input.expected-rewrite.serialised.json @@ -1,111 +1,11 @@ { - "constraints": [ - { - "And": [ - { - "clean": false, - "etype": null - }, - [ - { - "FlatWatchedLiteral": [ - { - "clean": false, - "etype": null - }, - { - "UserName": "x" - }, - { - "Bool": false - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "e" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "UserName": "g" - } - }, - { - "Int": 0 - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { "And": [ { @@ -114,15 +14,16 @@ }, [ { - "Atomic": [ + "FlatWatchedLiteral": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "UserName": "x" + }, + { + "Bool": false } ] }, @@ -134,7 +35,7 @@ }, { "Reference": { - "UserName": "d" + "UserName": "y" } } ] @@ -143,62 +44,169 @@ ] }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionReify": [ + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] + }, { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "e" + } + }, + { + "Int": 0 + } + ] }, { - "And": [ + "FlatIneq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "UserName": "g" + } + }, + { + "Int": 0 + } + ] + }, + { + "MinionReify": [ + { + "clean": false, + "etype": null + }, + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Reference": { - "UserName": "h" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } ] - }, - { - "Atomic": [ + ] + }, + { + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "MinionReify": [ + { + "clean": false, + "etype": null + }, + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] }, { - "Reference": { - "UserName": "f" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "f" + } + } + ] } ] + ] + }, + { + "Reference": { + "MachineName": 1 } - ] + } ] - }, - { - "Reference": { - "MachineName": 1 - } } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-parse.serialised.json index 7d859473da..176013dc5c 100644 --- a/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "A" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Reference": { - "UserName": "b" + "UserName": "A" } } ] }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-rewrite.serialised.json index e5e9406e08..8f10a7b2dd 100644 --- a/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/01-value-bool/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Literal": { - "Int": 2 - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-parse.serialised.json index d6de87842a..a4dfc2f3a9 100644 --- a/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Lt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { - "Reference": { - "UserName": "A" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "A" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-rewrite.serialised.json index 6ba2a04d29..185fa8cff5 100644 --- a/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/02-value-int/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Literal": { - "Int": 2 - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-parse.serialised.json index e880bd2b0e..2d58bcb74c 100644 --- a/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "NotA" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Reference": { - "UserName": "b" + "UserName": "NotA" } } ] }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-rewrite.serialised.json index d7bc666f10..4a5cc88ef7 100644 --- a/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/03-value-expr/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Literal": { - "Int": 2 - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/04-domain/input-expected-rule-trace.json b/conjure_oxide/tests/integration/basic/lettings/04-domain/input-expected-rule-trace.json index 86c3c7f9f5..f0db05485d 100644 --- a/conjure_oxide/tests/integration/basic/lettings/04-domain/input-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/basic/lettings/04-domain/input-expected-rule-trace.json @@ -155,54 +155,64 @@ }, { "initial_expression": { - "Imply": [ - { - "Atomic": [ - { - "Reference": { - "UserName": "x" - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Leq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + "Root": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "x" + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Atomic": [ - { - "Reference": { - "UserName": "y" + ] + }, + { + "Leq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "y" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], { "clean": false, "etype": null @@ -215,54 +225,64 @@ "name": "Base" }, "transformed_expression": { - "Imply": [ - { - "Atomic": [ - { - "Reference": { - "UserName": "x" - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Leq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + "Root": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "x" + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Atomic": [ - { - "Reference": { - "UserName": "y" + ] + }, + { + "Leq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "y" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], { "clean": false, "etype": null diff --git a/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-parse.serialised.json index 34cdf59058..c0e1cc4c14 100644 --- a/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-rewrite.serialised.json index 53f4de1cb6..c8b2f223e0 100644 --- a/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/lettings/04-domain/input.expected-rewrite.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "FlatIneq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 2 + "Reference": { + "UserName": "x" } - }, - { - "Int": 0 } ] - }, - { - "Reference": { - "UserName": "x" - } } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/max/02/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/max/02/input.expected-parse.serialised.json index 0a90ec8c12..ef61619293 100644 --- a/conjure_oxide/tests/integration/basic/max/02/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/max/02/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Max": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Atomic": [ + { + "Max": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/max/02/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/max/02/input.expected-rewrite.serialised.json index dde5ad64b8..9e2f049ccb 100644 --- a/conjure_oxide/tests/integration/basic/max/02/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/max/02/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "a" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/01/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/min/01/input.expected-parse.serialised.json index fae86722f2..e9a835877d 100644 --- a/conjure_oxide/tests/integration/basic/min/01/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/01/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Min": [ + "Geq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/01/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/min/01/input.expected-rewrite.serialised.json index 6810d48642..da993c4ba9 100644 --- a/conjure_oxide/tests/integration/basic/min/01/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/01/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/02/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/min/02/input.expected-parse.serialised.json index a03a4a92b1..f364752c3b 100644 --- a/conjure_oxide/tests/integration/basic/min/02/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/02/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Min": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/02/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/min/02/input.expected-rewrite.serialised.json index 787c8e8f1c..f4c26c2d0a 100644 --- a/conjure_oxide/tests/integration/basic/min/02/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/02/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/03/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/min/03/input.expected-parse.serialised.json index 117aa615bc..d9ffb2d7f7 100644 --- a/conjure_oxide/tests/integration/basic/min/03/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/03/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Min": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/03/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/min/03/input.expected-rewrite.serialised.json index bac036c3c3..4a98992f8b 100644 --- a/conjure_oxide/tests/integration/basic/min/03/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/03/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/04/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/min/04/input.expected-parse.serialised.json index 6c4bfb2ae8..40f08bfe34 100644 --- a/conjure_oxide/tests/integration/basic/min/04/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/04/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Min": [ + "Geq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/04/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/min/04/input.expected-rewrite.serialised.json index da0adb374d..870e98dd81 100644 --- a/conjure_oxide/tests/integration/basic/min/04/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/04/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/05/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/min/05/input.expected-parse.serialised.json index 406552e09b..30de86f906 100644 --- a/conjure_oxide/tests/integration/basic/min/05/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/05/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Min": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/min/05/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/min/05/input.expected-rewrite.serialised.json index 6725ec98a2..e12d9bdcbc 100644 --- a/conjure_oxide/tests/integration/basic/min/05/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/min/05/input.expected-rewrite.serialised.json @@ -1,147 +1,155 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/01/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/01/input.expected-parse.serialised.json index 8647ebd80e..b905eea328 100644 --- a/conjure_oxide/tests/integration/basic/mod/01/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/01/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "b" + "Literal": { + "Int": 1 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/01/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/01/input.expected-rewrite.serialised.json index 00c46f55b9..5532d1ba52 100644 --- a/conjure_oxide/tests/integration/basic/mod/01/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/01/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Literal": { - "Int": 1 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "a" + } + }, { "Reference": { "UserName": "b" } + }, + { + "Literal": { + "Int": 1 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/02/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/02/input.expected-parse.serialised.json index 426e373bc7..2ce35a81ff 100644 --- a/conjure_oxide/tests/integration/basic/mod/02/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/02/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Geq": [ { "clean": false, "etype": null @@ -32,30 +19,51 @@ "etype": null }, { - "Literal": { - "Int": 4 + "Reference": { + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 4 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/02/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/02/input.expected-rewrite.serialised.json index ccf76fc916..7dd258c622 100644 --- a/conjure_oxide/tests/integration/basic/mod/02/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/02/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/03/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/03/input.expected-parse.serialised.json index a70ef1c249..23c3d8c3ed 100644 --- a/conjure_oxide/tests/integration/basic/mod/03/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/03/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Literal": { - "Int": 8 + "Int": 2 } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 8 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/03/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/03/input.expected-rewrite.serialised.json index dbb768aac1..c72801b7b6 100644 --- a/conjure_oxide/tests/integration/basic/mod/03/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/03/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 8 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, + { + "Literal": { + "Int": 8 + } + }, { "Reference": { "UserName": "a" } + }, + { + "Literal": { + "Int": 2 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/04/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/04/input.expected-parse.serialised.json index 4fda3df0e4..24d90e4e51 100644 --- a/conjure_oxide/tests/integration/basic/mod/04/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/04/input.expected-parse.serialised.json @@ -1,32 +1,19 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null @@ -39,21 +26,42 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } @@ -62,8 +70,8 @@ ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/04/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/04/input.expected-rewrite.serialised.json index eeef2460cb..2d140eaa84 100644 --- a/conjure_oxide/tests/integration/basic/mod/04/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/04/input.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-parse.serialised.json index 8933b4afbb..bb8a9df3b8 100644 --- a/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Neq": [ { "clean": false, "etype": null @@ -33,29 +20,50 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-rewrite.serialised.json index eea858bef1..e72be19bab 100644 --- a/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/05/mod-05.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-parse.serialised.json index 4fda3df0e4..24d90e4e51 100644 --- a/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-parse.serialised.json @@ -1,32 +1,19 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null @@ -39,21 +26,42 @@ }, { "Reference": { - "UserName": "b" + "UserName": "a" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } @@ -62,8 +70,8 @@ ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-rewrite.serialised.json index eeef2460cb..2d140eaa84 100644 --- a/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/mod/06/mod-06.expected-rewrite.serialised.json @@ -1,107 +1,115 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + ] }, { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-parse.serialised.json index 402c3a7533..0910a284d3 100644 --- a/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Neg": [ + "Eq": [ { "clean": false, "etype": null @@ -33,16 +20,37 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-rewrite.serialised.json index 223907f803..f357c9ee50 100644 --- a/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/01-negeq/input.expected-rewrite.serialised.json @@ -1,24 +1,32 @@ { - "constraints": [ - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "FlatMinusEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-parse.serialised.json index ac85ea9a0b..0c2d3f3f86 100644 --- a/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-parse.serialised.json @@ -1,36 +1,57 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Neg": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + } + ] + }, { "Atomic": [ { @@ -39,31 +60,18 @@ }, { "Reference": { - "UserName": "y" + "UserName": "z" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-rewrite.serialised.json index 633c7c4daa..f4a40a9b3f 100644 --- a/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/02-nested-neg/input.expected-rewrite.serialised.json @@ -1,91 +1,99 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "z" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "MachineName": 0 + } + }, { "Reference": { "UserName": "z" } + }, + { + "Reference": { + "UserName": "x" + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "y" - } + "FlatMinusEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-parse.serialised.json index 68b7a7c031..f6f99a5cb6 100644 --- a/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-parse.serialised.json @@ -1,59 +1,67 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "UnsafeDiv": [ + "Neg": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } @@ -62,8 +70,8 @@ ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-rewrite.serialised.json index 775f721a84..d3f04d09b2 100644 --- a/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/03-negated-expression/input.expected-rewrite.serialised.json @@ -1,91 +1,99 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "FlatMinusEq": [ { "clean": false, "etype": null }, { "Reference": { - "UserName": "z" + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 0 } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 0 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-parse.serialised.json index bf44333c7f..fc7bc8adb5 100644 --- a/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-parse.serialised.json @@ -1,90 +1,98 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Neg": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "UnsafeDiv": [ + "Neg": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-rewrite.serialised.json index 9997380a36..15e2d524a7 100644 --- a/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/04-negated-expression-nested/input.expected-rewrite.serialised.json @@ -1,148 +1,156 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, { "Reference": { - "UserName": "z" + "MachineName": 0 } - } - ] - }, - { - "Atomic": [ + }, { - "clean": false, - "etype": null + "Reference": { + "UserName": "z" + } }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "x" } } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatMinusEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + ] }, { - "Reference": { - "UserName": "z" - } + "FlatMinusEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-parse.serialised.json index 494f365345..f096c7e229 100644 --- a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-parse.serialised.json @@ -1,36 +1,57 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, - [ - { - "Neg": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + } + ] }, { "Atomic": [ @@ -40,32 +61,19 @@ }, { "Reference": { - "UserName": "y" + "UserName": "z" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] - } - ] + ] + } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json index 68309ec35e..b427f864a7 100644 --- a/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/05-sum/input.expected-rewrite.serialised.json @@ -1,82 +1,90 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatWeightedSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": -1 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "y" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": -1 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "UserName": "x" + } } - }, - { - "Reference": { - "UserName": "z" - } - } - ], - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "FlatWeightedSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Int": -1 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ], { - "Reference": { - "UserName": "x" - } + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": -1 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-parse.serialised.json index 96d1511349..a86ec8d815 100644 --- a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-parse.serialised.json @@ -1,146 +1,154 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neg": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null }, { - "Minus": [ + "Neg": [ { "clean": false, "etype": null }, { - "Sum": [ + "Minus": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] }, { - "Literal": { - "Int": 1 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] + ] + } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json index 6931b12150..c97dd59734 100644 --- a/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/neg/06-sum-nested/input.expected-rewrite.serialised.json @@ -1,130 +1,138 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatWeightedSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": -1 - }, - { - "Int": -1 - }, - { - "Int": 1 - }, - { - "Int": 1 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": -1 + }, + { + "Int": -1 + }, + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Literal": { + "Int": -1 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + } + ], + { + "Reference": { + "UserName": "x" + } } - }, - { - "Literal": { - "Int": -1 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - } - ], - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "FlatWeightedSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Int": -1 - }, - { - "Int": -1 - }, - { - "Int": 1 - }, - { - "Int": 1 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Literal": { - "Int": -1 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - } - ], { - "Reference": { - "UserName": "x" - } + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": -1 + }, + { + "Int": -1 + }, + { + "Int": 1 + }, + { + "Int": 1 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Literal": { + "Int": -1 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + } + ], + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-parse.serialised.json index 8ab57f7342..a0bc79c3e5 100644 --- a/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafePow": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafePow": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "y" + "Literal": { + "Int": 4 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 4 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-rewrite.serialised.json index fb2682455b..ac7f72f225 100644 --- a/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/01-simple/input.expected-rewrite.serialised.json @@ -1,138 +1,146 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionPow": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "MinionPow": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 4 + } + } + ] }, { - "Literal": { - "Int": 4 - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-parse.serialised.json index bd879e87eb..98e455e437 100644 --- a/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafePow": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafePow": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "y" + "Literal": { + "Int": 4 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 4 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-rewrite.serialised.json index 665a7308a2..42483cd8d4 100644 --- a/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/02-exponent-zero/input.expected-rewrite.serialised.json @@ -1,138 +1,146 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionPow": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "MinionPow": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 4 + } + } + ] }, { - "Literal": { - "Int": 4 - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-parse.serialised.json index 15b60dd87d..2b06460f13 100644 --- a/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafePow": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafePow": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "y" + "Literal": { + "Int": 2 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-rewrite.serialised.json index 8ac3225416..59d5a92547 100644 --- a/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/03-negative-exponent/input.expected-rewrite.serialised.json @@ -1,138 +1,146 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionPow": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "MinionPow": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-parse.serialised.json index 7131f70f87..a73cea484c 100644 --- a/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-parse.serialised.json @@ -1,105 +1,113 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafePow": [ + "Eq": [ { "clean": false, "etype": null }, { - "Sum": [ + "UnsafePow": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] - } - ] - ] - }, - { - "UnsafeDiv": [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Sum": [ { "clean": false, "etype": null }, - { - "Reference": { - "UserName": "y" + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } - } + ] ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 4 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 4 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-rewrite.serialised.json index 2c7959fb9e..2c0b510be2 100644 --- a/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/04-flatten/input.expected-rewrite.serialised.json @@ -1,327 +1,335 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionPow": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "MachineName": 1 - } + "MinionPow": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Literal": { + "Int": 4 + } + } + ] }, { - "Literal": { - "Int": 4 - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 2 + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 3 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 3 + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 0 - } + ] }, { - "Reference": { - "MachineName": 4 - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "MachineName": 4 + } + }, + { + "Int": 0 + } + ] } ] - } - ] - ] - }, - { - "And": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "FlatSumLeq": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Reference": { + "MachineName": 0 + } } - } - ], - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 - } - } - ], { - "Reference": { - "MachineName": 0 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + ] }, { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "And": [ - { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Reference": { + "MachineName": 2 + } } - } - ], - { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Literal": { - "Int": 2 - } - } - ], { - "Reference": { - "MachineName": 2 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Reference": { + "MachineName": 2 + } + } + ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "MachineName": 3 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ] }, { - "Reference": { - "MachineName": 4 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "MachineName": 4 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 5, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-parse.serialised.json index ca6318143e..fbab57ce37 100644 --- a/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafePow": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafePow": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -33,29 +54,16 @@ }, { "Reference": { - "UserName": "y" + "UserName": "z" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-rewrite.serialised.json index f1ff16af0a..dd237f7768 100644 --- a/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/pow/05-negative-base/input.expected-rewrite.serialised.json @@ -1,138 +1,146 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionPow": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "MinionPow": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ] }, { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 0 - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-parse.serialised.json index ac37b40648..f5a446219d 100644 --- a/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-parse.serialised.json @@ -1,86 +1,94 @@ { - "constraints": [ - { - "Lt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Product": [ + "Lt": [ { "clean": false, "etype": null }, - [ - { - "Product": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 15 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 15 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-rewrite.serialised.json index a5192828ef..8d4e397085 100644 --- a/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/product/01-simple/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 14 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 14 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "x" - } + "FlatProductEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "FlatProductEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-parse.serialised.json index a74b2d337c..200d0de43a 100644 --- a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-parse.serialised.json @@ -1,122 +1,130 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } - } - ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "e" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "e" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 5 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-rewrite.serialised.json index 8fce02b9cf..f637b908b3 100644 --- a/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/sum/01-deeply-nested/input.expected-rewrite.serialised.json @@ -1,96 +1,104 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "a" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "UserName": "d" + } + }, + { + "Reference": { + "UserName": "e" + } + } + ], + { + "Literal": { + "Int": 5 + } } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "UserName": "d" - } - }, - { - "Reference": { - "UserName": "e" - } - } - ], - { - "Literal": { - "Int": 5 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "UserName": "d" - } - }, - { - "Reference": { - "UserName": "e" - } - } - ], { - "Literal": { - "Int": 5 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "UserName": "d" + } + }, + { + "Reference": { + "UserName": "e" + } + } + ], + { + "Literal": { + "Int": 5 + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-parse.serialised.json index 07be4296a3..bc91e7b4ce 100644 --- a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-parse.serialised.json @@ -1,74 +1,95 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Sum": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] - } - ] + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + } ] }, { @@ -78,30 +99,17 @@ "etype": null }, { - "Reference": { - "UserName": "a" + "Literal": { + "Int": 3 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-rewrite.serialised.json index f6bd88e725..82b206a2c5 100644 --- a/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/sum/02-sum-put-in-aux-var/input.expected-rewrite.serialised.json @@ -1,143 +1,151 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "MachineName": 0 + } + }, { "Reference": { "UserName": "a" } + }, + { + "Literal": { + "Int": 3 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "And": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "FlatSumLeq": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 0 + } } - } - ], - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ], { - "Reference": { - "MachineName": 0 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Reference": { + "MachineName": 0 + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 1, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-parse.serialised.json index 3476d05e36..d62f0e9ec3 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-parse.serialised.json @@ -1,132 +1,140 @@ { - "constraints": [ - { - "Lt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Lt": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Product": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 14 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 14 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-rewrite.serialised.json index fc9085cdbb..cb5905fc8f 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/01-simple-lt/input.expected-rewrite.serialised.json @@ -1,47 +1,55 @@ { - "constraints": [ - { - "FlatWeightedSumLeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": 2 - }, - { - "Int": 3 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 2 + }, + { + "Int": 3 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + } + ], + { + "Literal": { + "Int": 13 + } } - } - ], - { - "Literal": { - "Int": 13 - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-parse.serialised.json index d7c79a4294..f306ef363e 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-parse.serialised.json @@ -1,109 +1,117 @@ { - "constraints": [ - { - "Gt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Gt": [ { "clean": false, "etype": null }, - [ - { - "Product": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 12 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 12 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-rewrite.serialised.json index 2c7b27fb3d..ea5edd8bce 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/02-simple-gt/input.expected-rewrite.serialised.json @@ -1,47 +1,55 @@ { - "constraints": [ - { - "FlatWeightedSumGeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": 2 - }, - { - "Int": 3 - }, - { - "Int": 1 - } - ], - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": -1 + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 2 + }, + { + "Int": 3 + }, + { + "Int": 1 + } + ], + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": -1 + } + } + ], + { + "Literal": { + "Int": 12 + } } - } - ], - { - "Literal": { - "Int": 12 - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-parse.serialised.json index 17e84801bf..8aacb03ab0 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-parse.serialised.json @@ -1,109 +1,117 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Product": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 12 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 12 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json index a7e8c263b2..a47ef87805 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/03-simple-eq/input.expected-rewrite.serialised.json @@ -1,82 +1,90 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatWeightedSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": 2 - }, - { - "Int": 3 - } - ], - [ - { - "Reference": { - "UserName": "x" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 2 + }, + { + "Int": 3 + } + ], + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Literal": { + "Int": 12 + } } - }, - { - "Reference": { - "UserName": "y" - } - } - ], - { - "Literal": { - "Int": 12 - } - } - ] - }, - { - "FlatWeightedSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Int": 2 - }, - { - "Int": 3 - } - ], - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - } - ], { - "Literal": { - "Int": 12 - } + "FlatWeightedSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 2 + }, + { + "Int": 3 + } + ], + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Literal": { + "Int": 12 + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-parse.serialised.json index 8e1bf53d17..f6b2d7fb7f 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-parse.serialised.json @@ -1,219 +1,240 @@ { - "constraints": [ - { - "Lt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Lt": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Product": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 5 - } - } - ] - }, - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Product": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Product": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 1 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null + ] }, { - "Product": [ + "Neg": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ] + ] + } ] } ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Neg": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] + } + ] }, { "Atomic": [ @@ -222,59 +243,25 @@ "etype": null }, { - "Literal": { - "Int": 1 + "Reference": { + "UserName": "y" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] - ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + ] } ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null - }, + ] + }, + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { "Atomic": [ { @@ -282,36 +269,57 @@ "etype": null }, { - "Literal": { - "Int": 5 + "Reference": { + "UserName": "y" } } ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 11 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 11 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-rewrite.serialised.json index 1a87ea8f18..e7cd0dc542 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/04-needs-normalising/input.expected-rewrite.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "FlatWeightedSumLeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Int": 5 - }, - { - "Int": 9 - }, - { - "Int": -3 - }, - { - "Int": -1 - }, - { - "Int": -5 - } - ], - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "y" + "FlatWeightedSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Int": 5 + }, + { + "Int": 9 + }, + { + "Int": -3 + }, + { + "Int": -1 + }, + { + "Int": -5 + } + ], + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Literal": { + "Int": 10 + } } - } - ], - { - "Literal": { - "Int": 10 - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json index 97df11dd88..d4c78787f1 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-parse.serialised.json @@ -1,253 +1,240 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Product": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] - }, - { - "Atomic": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Product": [ + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Product": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null + ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "e" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "e" + } + } + ] }, { - "Reference": { - "UserName": "f" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "f" + } + } + ] } ] } ] - } - ] - ] - }, - { - "Product": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 6 - } - } - ] - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, + { + "Product": [ + { + "clean": false, + "etype": null + }, + [ { "Atomic": [ { @@ -255,118 +242,139 @@ "etype": null }, { - "Reference": { - "UserName": "g" + "Literal": { + "Int": 6 } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "h" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null + ] }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] } ] - } - ] - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null + ] }, { - "UnsafeDiv": [ + "Neg": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "g" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + } + ] }, { - "Reference": { - "UserName": "h" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] } ] } ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 18 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 18 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json index b9a8d5a587..1325fd2953 100644 --- a/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/basic/weighted-sum/05-flattening/input.expected-rewrite.serialised.json @@ -1,283 +1,291 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatWeightedSumLeq": [ - { - "clean": false, - "etype": null - }, - [ - { - "Int": 2 - }, - { - "Int": 2 - }, - { - "Int": 3 - }, - { - "Int": 1 - }, - { - "Int": 6 - }, - { - "Int": -1 - }, - { - "Int": -1 - } - ], - [ - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "MachineName": 2 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "MachineName": 3 - } - } - ], - { - "Literal": { - "Int": 18 - } - } - ] - }, - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "FlatWeightedSumLeq": [ { "clean": false, "etype": null }, - { - "Reference": { - "UserName": "h" + [ + { + "Int": 2 + }, + { + "Int": 2 + }, + { + "Int": 3 + }, + { + "Int": 1 + }, + { + "Int": 6 + }, + { + "Int": -1 + }, + { + "Int": -1 } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + ], + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ], { "Literal": { - "Int": 0 + "Int": 18 } } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "h" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "f" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "h" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "f" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatProductEq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } - }, - { - "Reference": { - "UserName": "c" - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "e" - } - }, - { - "Reference": { - "UserName": "f" - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "g" - } - }, - { - "Reference": { - "UserName": "h" - } - }, - { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null + "FlatProductEq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + }, + { + "Reference": { + "UserName": "c" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "g" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "e" + } + }, + { + "Reference": { + "UserName": "f" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "UserName": "h" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + }, + { + "Reference": { + "UserName": "h" + } + }, + { + "Reference": { + "MachineName": 2 + } + } + ] }, { - "Reference": { - "MachineName": 3 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "g" + } + }, + { + "Reference": { + "UserName": "h" + } + }, + { + "Reference": { + "MachineName": 3 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 4, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-parse.serialised.json index b40db42799..b44b305fa7 100644 --- a/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-parse.serialised.json @@ -1,15 +1,23 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [] + "Or": [ + { + "clean": false, + "etype": null + }, + [] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-rewrite.serialised.json index 74d75a81f2..f3fadebd26 100644 --- a/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/bugs/issue-336-empty-or-should-be-false/input.expected-rewrite.serialised.json @@ -1,19 +1,27 @@ { - "constraints": [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Literal": { - "Bool": false - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": false + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-parse.serialised.json index 952ccde867..6fef761c9f 100644 --- a/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-parse.serialised.json @@ -1,86 +1,94 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Min": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-rewrite.serialised.json index 84ca277661..346f820c71 100644 --- a/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/bugs/sm600-non-terminating-min/input.expected-rewrite.serialised.json @@ -1,151 +1,159 @@ { - "constraints": [ - { - "FlatSumLeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 6 + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 6 + } + } + ], + { + "Literal": { + "Int": 10 + } } - } - ], - { - "Literal": { - "Int": 10 - } - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "MachineName": 0 - } - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-parse.serialised.json index bfc1170714..befd307f96 100644 --- a/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-parse.serialised.json @@ -1,86 +1,94 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Min": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 5 - } - } - ] - }, - { - "Atomic": [ + "Min": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] }, { - "Literal": { - "Int": 7 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 7 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-rewrite.serialised.json index 9a75a5488b..1d1ce07ea7 100644 --- a/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/bugs/yb33-min-of-constants-parses-as-nothing/input.expected-rewrite.serialised.json @@ -1,31 +1,39 @@ { - "constraints": [ - { - "FlatSumLeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Literal": { - "Int": 5 - } - }, - { - "Reference": { - "UserName": "c" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Literal": { + "Int": 5 + } + }, + { + "Reference": { + "UserName": "c" + } + } + ], + { + "Literal": { + "Int": 10 + } } - } - ], - { - "Literal": { - "Int": 10 - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-parse.serialised.json index cd2b7294c3..97d7387e34 100644 --- a/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-parse.serialised.json @@ -1,53 +1,30 @@ { - "constraints": [ - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Not": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { "Atomic": [ @@ -57,102 +34,133 @@ }, { "Reference": { - "UserName": "c" + "UserName": "b" } } ] } ] - }, - { - "And": [ + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" + "Not": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } } - } - ] - }, - { - "Atomic": [ + ] + } + ] + }, + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" } - ] - }, - { - "Atomic": [ + } + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-rewrite.serialised.json index 6b9c50c34f..aca24afb28 100644 --- a/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/bool/literals-to-wlit-1/input.expected-rewrite.serialised.json @@ -1,175 +1,183 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "And": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Or": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatWatchedLiteral": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatWatchedLiteral": [ + { + "clean": false, + "etype": null + }, + { + "UserName": "c" + }, + { + "Bool": false + } + ] }, { - "UserName": "c" - }, - { - "Bool": false + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "FlatWatchedLiteral": [ - { - "clean": false, - "etype": null - }, - { - "UserName": "c" - }, - { - "Bool": false - } - ] - }, - { - "Atomic": [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "FlatWatchedLiteral": [ + { + "clean": false, + "etype": null + }, + { + "UserName": "c" + }, + { + "Bool": false + } + ] }, { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] } ] - } - ] + ] + } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" } - ] - }, - { - "Atomic": [ + } + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-parse.serialised.json index b00fbcff5b..bacbfcda82 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-parse.serialised.json @@ -1,132 +1,140 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 20 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 20 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 5 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 100 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 100 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-rewrite.serialised.json index 58c4a3c9f9..9be747c4e5 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-01-add/input.expected-rewrite.serialised.json @@ -1,76 +1,84 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 35 + } + } + ], + { + "Literal": { + "Int": 100 + } } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 35 - } - } - ], - { - "Literal": { - "Int": 100 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 35 - } - } - ], { - "Literal": { - "Int": 100 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 35 + } + } + ], + { + "Literal": { + "Int": 100 + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace-human.txt index 0387a9b64a..ae52c7e3f2 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace-human.txt @@ -18,6 +18,15 @@ true -- +Or([Or([a, b]), false]), +true, +And([c, true]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([Or([a, b]), false]), +And([c, true]) + +-- + Or([Or([a, b]), false]), ~~> partial_evaluator ([("Base", 9000)]) Or([Or([a, b])]) @@ -51,6 +60,5 @@ find c: bool such that Or([a, b]), -true, c diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace.json index 79041ad1f6..7d9f0b7ae8 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input-expected-rule-trace.json @@ -91,6 +91,236 @@ ] } }, + { + "initial_expression": { + "Root": [ + [ + { + "And": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": false + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "And": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": false + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, { "initial_expression": { "Or": [ @@ -402,6 +632,6 @@ } }, { - "Number of rules applied": 5 + "Number of rules applied": 6 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-parse.serialised.json index 026438cb70..2d71eaa670 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-parse.serialised.json @@ -1,173 +1,181 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Or": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": false - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": false + } + } + ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "AllDiff": [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "AllDiff": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] }, { - "Literal": { - "Int": 1 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ] - ] - }, - { - "And": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-rewrite.serialised.json index efa029f5ae..dda43ea8bd 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-02-or-and/input.expected-rewrite.serialised.json @@ -1,68 +1,63 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-parse.serialised.json index b00fbcff5b..bacbfcda82 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-parse.serialised.json @@ -1,132 +1,140 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Sum": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 20 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 20 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 5 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 5 + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 100 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 100 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-rewrite.serialised.json index 58c4a3c9f9..9be747c4e5 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-add/input.expected-rewrite.serialised.json @@ -1,76 +1,84 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 35 + } + } + ], + { + "Literal": { + "Int": 100 + } } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 35 - } - } - ], - { - "Literal": { - "Int": 100 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 35 - } - } - ], { - "Literal": { - "Int": 100 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 35 + } + } + ], + { + "Literal": { + "Int": 100 + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace-human.txt index 0387a9b64a..ae52c7e3f2 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace-human.txt @@ -18,6 +18,15 @@ true -- +Or([Or([a, b]), false]), +true, +And([c, true]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([Or([a, b]), false]), +And([c, true]) + +-- + Or([Or([a, b]), false]), ~~> partial_evaluator ([("Base", 9000)]) Or([Or([a, b])]) @@ -51,6 +60,5 @@ find c: bool such that Or([a, b]), -true, c diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace.json index 79041ad1f6..7d9f0b7ae8 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input-expected-rule-trace.json @@ -91,6 +91,236 @@ ] } }, + { + "initial_expression": { + "Root": [ + [ + { + "And": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": false + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "And": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": false + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, { "initial_expression": { "Or": [ @@ -402,6 +632,6 @@ } }, { - "Number of rules applied": 5 + "Number of rules applied": 6 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-parse.serialised.json index 026438cb70..2d71eaa670 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-parse.serialised.json @@ -1,173 +1,181 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Or": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": false - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": false + } + } + ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "AllDiff": [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "AllDiff": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] }, { - "Literal": { - "Int": 1 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ] - ] - }, - { - "And": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] - }, - { - "Atomic": [ + { + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] }, { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-rewrite.serialised.json index efa029f5ae..dda43ea8bd 100644 --- a/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/partial-eval-or-and/input.expected-rewrite.serialised.json @@ -1,68 +1,63 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-parse.serialised.json index a5c5a6f5c4..9ef3a81487 100644 --- a/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-parse.serialised.json @@ -1,120 +1,128 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 4 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 4 + } + } + ] } ] - } - ] - }, - { - "Geq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Geq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-rewrite.serialised.json index 8da693e0ae..463ee88072 100644 --- a/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/eprime-minion/xyz/input.expected-rewrite.serialised.json @@ -1,97 +1,105 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "a" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + } + ], + { + "Literal": { + "Int": 4 + } } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - } - ], - { - "Literal": { - "Int": 4 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - } - ], { - "Literal": { - "Int": 4 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + } + ], + { + "Literal": { + "Int": 4 + } + } + ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "a" - } + ] }, { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/experiment/works/max2/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/experiment/works/max2/input.expected-parse.serialised.json index 2508115c1c..75684bbd29 100644 --- a/conjure_oxide/tests/integration/experiment/works/max2/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/experiment/works/max2/input.expected-parse.serialised.json @@ -1,143 +1,151 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Max": [ + "Geq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ + { + "Max": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, - [ - { - "Max": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Max": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 1 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] - } - ] + ] + } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/experiment/works/max2/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/experiment/works/max2/input.expected-rewrite.serialised.json index 0363b6c3c4..1fac641baf 100644 --- a/conjure_oxide/tests/integration/experiment/works/max2/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/experiment/works/max2/input.expected-rewrite.serialised.json @@ -1,327 +1,335 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ - { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 1 - } - } - ], - { - "Reference": { - "UserName": "x" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 1 - } - } - ], - { - "Reference": { - "UserName": "x" - } + }, + { + "Reference": { + "MachineName": 0 } - ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "MachineName": 0 - } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "FlatSumLeq": [ { "clean": false, "etype": null }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 1 + } + } + ], { "Reference": { - "MachineName": 0 + "UserName": "x" } } ] }, { - "Atomic": [ + "FlatSumGeq": [ { "clean": false, "etype": null }, + [ + { + "Reference": { + "MachineName": 0 + } + }, + { + "Literal": { + "Int": 1 + } + } + ], { "Reference": { - "UserName": "a" + "UserName": "x" } } ] } ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, + ] + }, + { + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] + }, + { + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Int": 0 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Reference": { - "MachineName": 0 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "MachineName": 0 + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Eq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-parse.serialised.json index 7d8d511232..dec23fdf14 100644 --- a/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-rewrite.serialised.json index 7d8d511232..dec23fdf14 100644 --- a/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/diseq/input.expected-rewrite.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-parse.serialised.json index fe8a875a1a..7963531a2d 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "y" + "Literal": { + "Int": 5 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 5 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-rewrite.serialised.json index 7254b71d1d..d438d73a7e 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-01-simple/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 5 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "x" + } + }, { "Reference": { "UserName": "y" } + }, + { + "Literal": { + "Int": 5 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-parse.serialised.json index b833e25ed3..a524338fad 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -33,29 +54,16 @@ }, { "Reference": { - "UserName": "y" + "UserName": "z" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-rewrite.serialised.json index 86fcb1b49e..5f3267e26e 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-02-zero/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "x" + } + }, { "Reference": { "UserName": "y" } + }, + { + "Reference": { + "UserName": "z" + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-parse.serialised.json index b6823d2900..d956d31db2 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-parse.serialised.json @@ -1,30 +1,17 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeDiv": [ { @@ -39,44 +26,65 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-rewrite.serialised.json index 36d8e6affe..a9cf69436d 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-03-nested/input.expected-rewrite.serialised.json @@ -1,153 +1,161 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionDivEqUndefZero": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 10 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, { "Reference": { - "MachineName": 1 + "UserName": "x" } - } - ] - }, - { - "Atomic": [ + }, { - "clean": false, - "etype": null + "Reference": { + "MachineName": 0 + } }, { "Literal": { - "Int": 0 + "Int": 10 } } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + ] }, { - "Reference": { - "UserName": "z" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-parse.serialised.json index 948b95f54e..32028e2751 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-parse.serialised.json @@ -1,30 +1,17 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Neq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeDiv": [ { @@ -39,44 +26,65 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-rewrite.serialised.json index bc63b566d5..a8136b2eb9 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-04-nested-neq/input.expected-rewrite.serialised.json @@ -1,187 +1,195 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } + ] }, { - "Reference": { - "MachineName": 2 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "MachineName": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 2 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 3, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-parse.serialised.json index 3ba871d964..9848dee9d7 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-parse.serialised.json @@ -1,36 +1,23 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeDiv": [ { @@ -45,46 +32,67 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json index d88efedd50..7a899b9747 100644 --- a/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/div_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json @@ -1,153 +1,161 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] }, { - "Atomic": [ + "MinionDivEqUndefZero": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 10 + "Reference": { + "UserName": "y" } - } - ] - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Literal": { - "Int": 0 - } - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { "Reference": { "UserName": "z" } + }, + { + "Literal": { + "Int": 0 + } } ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionDivEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-parse.serialised.json index dd816bc902..03e088f13c 100644 --- a/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-rewrite.serialised.json index dd816bc902..03e088f13c 100644 --- a/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/eq/input.expected-rewrite.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-parse.serialised.json index 701e34e7d1..e07ebbe3dd 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Lt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-rewrite.serialised.json index ff54457d2f..ed06eac792 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-01-strict-less-than/input.expected-rewrite.serialised.json @@ -1,31 +1,39 @@ { - "constraints": [ - { - "FlatSumGeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": -1 + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": -1 + } + } + ], + { + "Reference": { + "UserName": "x" + } } - } - ], - { - "Reference": { - "UserName": "x" - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-parse.serialised.json index 0b02a2ceff..96f12f37c3 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Leq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-rewrite.serialised.json index fec8bc9c0d..70ac744a1b 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-02-leq/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-parse.serialised.json index 9eae94273f..8788e50575 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Leq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" } - ] - }, - { - "Atomic": [ + } + ] + }, + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] - } - ] + ] + } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-rewrite.serialised.json index 41e565524a..14bfb9a56b 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-03-leq-plus-k/input.expected-rewrite.serialised.json @@ -1,31 +1,39 @@ { - "constraints": [ - { - "FlatSumGeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 2 + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": 2 + } + } + ], + { + "Reference": { + "UserName": "x" + } } - } - ], - { - "Reference": { - "UserName": "x" - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-parse.serialised.json index 0ad1e0f829..1b6812767e 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-parse.serialised.json @@ -1,40 +1,48 @@ { - "constraints": [ - { - "Gt": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Gt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-rewrite.serialised.json index 9fdbc10d3d..c86315770e 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-04-strict-greater-than/input.expected-rewrite.serialised.json @@ -1,27 +1,35 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Int": -1 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": -1 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-parse.serialised.json index 0f4ae1f4bf..2d240e389e 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Minus": [ + "Geq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Minus": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] }, @@ -32,8 +53,8 @@ "etype": null }, { - "Literal": { - "Int": 1 + "Reference": { + "UserName": "x" } } ] @@ -41,38 +62,38 @@ ] }, { - "Atomic": [ + "Geq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - } - ] - }, - { - "Geq": [ - { - "clean": false, - "etype": null - }, - { - "Sum": [ - { - "clean": false, - "etype": null - }, - [ - { - "Neg": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] + } + ] }, { "Atomic": [ @@ -81,46 +102,33 @@ "etype": null }, { - "Literal": { - "Int": 1 + "Reference": { + "UserName": "y" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-rewrite.serialised.json index dc3f1b57c2..7c0d692627 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-05-geq-plus-k-wrong-order/input.expected-rewrite.serialised.json @@ -1,48 +1,56 @@ { - "constraints": [ - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Int": -1 - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Reference": { - "UserName": "y" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": -1 + } + ] }, { - "Int": -1 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Int": -1 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-parse.serialised.json index 3633ca1d86..8950518e94 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-parse.serialised.json @@ -1,26 +1,13 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Minus": [ + "Leq": [ { "clean": false, "etype": null @@ -33,59 +20,93 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "Minus": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] } ] } ] - } - ] - }, - { - "Leq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Leq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Sum": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, - [ - { - "Neg": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 1 + } + } + ] + } + ] }, { "Atomic": [ @@ -94,33 +115,20 @@ "etype": null }, { - "Literal": { - "Int": 1 + "Reference": { + "UserName": "y" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - } - ] - } - ] + ] + } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-rewrite.serialised.json index 2e3a094597..cdb968a6e4 100644 --- a/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/ineq-06-leq-plus-k-wrong-order/input.expected-rewrite.serialised.json @@ -1,56 +1,64 @@ { - "constraints": [ - { - "FlatSumGeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": -1 + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "y" + } + }, + { + "Literal": { + "Int": -1 + } + } + ], + { + "Reference": { + "UserName": "x" + } } - } - ], - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Literal": { - "Int": -1 - } - }, - { - "Reference": { - "UserName": "y" - } - } - ], { - "Reference": { - "UserName": "x" - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Literal": { + "Int": -1 + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Reference": { + "UserName": "x" + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-parse.serialised.json index d9f31b421a..936b042007 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -32,30 +53,17 @@ "etype": null }, { - "Reference": { - "UserName": "y" + "Literal": { + "Int": 3 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-rewrite.serialised.json index 04f4843b11..7a776dd104 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-01-simple/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "x" + } + }, { "Reference": { "UserName": "y" } + }, + { + "Literal": { + "Int": 3 + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-parse.serialised.json index cf385053ab..d61284b24f 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "x" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] }, @@ -33,29 +54,16 @@ }, { "Reference": { - "UserName": "y" + "UserName": "z" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-rewrite.serialised.json index c81a9d838c..31d5c15fae 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-02-zero/input.expected-rewrite.serialised.json @@ -1,73 +1,81 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "x" + } + }, { "Reference": { "UserName": "y" } + }, + { + "Reference": { + "UserName": "z" + } } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-parse.serialised.json index 499bf5b46d..b212d0cc7b 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-parse.serialised.json @@ -1,30 +1,17 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeMod": [ { @@ -39,44 +26,65 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-rewrite.serialised.json index 4dba6c04ba..21edccc300 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-03-nested/input.expected-rewrite.serialised.json @@ -1,153 +1,161 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "MinionModuloEqUndefZero": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "MachineName": 0 - } - }, - { - "Literal": { - "Int": 3 - } - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, { "Reference": { - "MachineName": 1 + "UserName": "x" } - } - ] - }, - { - "Atomic": [ + }, { - "clean": false, - "etype": null + "Reference": { + "MachineName": 0 + } }, { "Literal": { - "Int": 0 + "Int": 3 } } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + ] }, { - "Reference": { - "UserName": "z" - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-parse.serialised.json index af631bf842..7e1a83e1aa 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-parse.serialised.json @@ -1,30 +1,17 @@ { - "constraints": [ - { - "Neq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeMod": [ + "Neq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeMod": [ { @@ -39,44 +26,65 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-rewrite.serialised.json index 28cb8b5b66..3cf0ef4199 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-04-nested-neq/input.expected-rewrite.serialised.json @@ -1,187 +1,195 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] - } - ] - }, - { - "Neq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } + ] }, { - "Reference": { - "MachineName": 2 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 2 + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "UserName": "z" - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] }, { - "Reference": { - "MachineName": 2 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 2 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 3, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-parse.serialised.json index 1d4d80e33d..c1cd1f3b82 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-parse.serialised.json @@ -1,36 +1,23 @@ { - "constraints": [ - { - "Not": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Not": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, { "UnsafeMod": [ { @@ -45,46 +32,67 @@ }, { "Reference": { - "UserName": "y" + "UserName": "x" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json index c9628aa6f5..ce19dc2c1c 100644 --- a/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/modulo_undefzero-05-nested-noteq/input.expected-rewrite.serialised.json @@ -1,153 +1,161 @@ { - "constraints": [ - { - "Or": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Neq": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "Neq": [ { "clean": false, "etype": null }, { - "Reference": { - "MachineName": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] } ] }, { - "Atomic": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 + "Reference": { + "UserName": "y" } - } - ] - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } - }, - { - "Literal": { - "Int": 0 - } - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null }, { "Reference": { "UserName": "z" } + }, + { + "Literal": { + "Int": 0 + } } ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "MachineName": 1 - } - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "y" - } - }, - { - "Reference": { - "UserName": "z" - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "MachineName": 1 + } + }, + { + "Reference": { + "MachineName": 0 + } + } + ] }, { - "Reference": { - "MachineName": 1 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + }, + { + "Reference": { + "UserName": "z" + } + }, + { + "Reference": { + "MachineName": 1 + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 2, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-parse.serialised.json index 181054e2a5..4e8798729b 100644 --- a/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Geq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Geq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-rewrite.serialised.json index 3810031f4e..5e2b5403af 100644 --- a/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/sumgeq/input.expected-rewrite.serialised.json @@ -1,31 +1,39 @@ { - "constraints": [ - { - "FlatSumGeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Reference": { + "UserName": "z" + } } - } - ], - { - "Reference": { - "UserName": "z" - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-parse.serialised.json index 924adb7063..9d013636b4 100644 --- a/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-parse.serialised.json @@ -1,63 +1,71 @@ { - "constraints": [ - { - "Leq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Leq": [ { "clean": false, "etype": null }, - [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "x" + } + } + ] }, { - "Reference": { - "UserName": "y" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "y" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "z" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-rewrite.serialised.json index d039f2dd34..5bed070a84 100644 --- a/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/minion_constraints/sumleq/input.expected-rewrite.serialised.json @@ -1,31 +1,39 @@ { - "constraints": [ - { - "FlatSumLeq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "x" - } - }, - { - "Reference": { - "UserName": "y" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "x" + } + }, + { + "Reference": { + "UserName": "y" + } + } + ], + { + "Reference": { + "UserName": "z" + } } - } - ], - { - "Reference": { - "UserName": "z" - } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace-human.txt index 3dbeebd8dc..f46112d198 100644 --- a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace-human.txt @@ -40,18 +40,99 @@ true -- +true, +Or([(a) -> (z), (z) -> (a)]), +Or([(b) -> (c), (b) -> (Not(c))]), +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([(a) -> (z), (z) -> (a)]), +Or([(b) -> (c), (b) -> (Not(c))]), +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]) + +-- + Or([(a) -> (z), (z) -> (a)]), ~~> partial_evaluator ([("Base", 9000)]) true -- +true, +Or([(b) -> (c), (b) -> (Not(c))]), +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), + ~~> partial_evaluator ([("Base", 9000)]) +Or([(b) -> (c), (b) -> (Not(c))]), +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]) + +-- + Or([(b) -> (c), (b) -> (Not(c))]), ~~> partial_evaluator ([("Base", 9000)]) true -- +true, +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), + ~~> partial_evaluator ([("Base", 9000)]) +((l = 10)) -> ((l = 10)), +Or([((n < 6)) -> ((m % 2 = 0)), ((m % 2 = 0)) -> ((n < 6))]), +Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), +(o = n), +(d = (n < 6)), +(p = m % 2), +Or([((o < 6)) -> ((p = 0)), ((m % 2 = 0)) -> (d)]), +Or([Or([Or([((o < 6)) -> ((p = 0)), a]), b]), ((m % 2 = 0)) -> (d)]), +Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]), +Or([Or([Or([((UnsafeDiv(q, 2) = r)) -> ((n < 6)), a]), b]), ((UnsafeDiv(q, 2) = r)) -> (Not((n < 6)))]) + +-- + Or([Or([Or([((n < 6)) -> ((m % 2 = 0)), a]), b]), ((m % 2 = 0)) -> ((n < 6))]), ~~> normalise_associative_commutative ([("Base", 8900)]) Or([((n < 6)) -> ((m % 2 = 0)), a, b, ((m % 2 = 0)) -> ((n < 6))]) @@ -1152,9 +1233,6 @@ find __14: bool such that -true, -true, -true, ReifyImply((l = 10), __0), Or([ReifyImply(ModEq(m, 2, 0), __1), ReifyImply(Ineq(n, 5, 0), __2)]), Or([ReifyImply(ModEq(m, 2, 0), __3), a, b, ReifyImply(Ineq(n, 5, 0), __4)]), diff --git a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace.json b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace.json index 34656738e2..b58467990e 100644 --- a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input-expected-rule-trace.json @@ -55,15 +55,28 @@ }, { "initial_expression": { - "Or": [ + "Root": [ [ { - "Imply": [ + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ { "Atomic": [ { "Reference": { - "UserName": "a" + "UserName": "d" } }, { @@ -73,11 +86,32 @@ ] }, { - "Atomic": [ + "Lt": [ { - "Reference": { - "UserName": "z" - } + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] }, { "clean": false, @@ -92,12 +126,12 @@ ] }, { - "Imply": [ + "Eq": [ { "Atomic": [ { "Reference": { - "UserName": "a" + "UserName": "n" } }, { @@ -110,7 +144,7 @@ "Atomic": [ { "Reference": { - "UserName": "z" + "UserName": "o" } }, { @@ -124,44 +158,14 @@ "etype": null } ] - } - ], - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "partial_evaluator", - "rule_priority": 9000, - "rule_set": { - "name": "Base" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Or": [ - [ + }, { - "Imply": [ + "Eq": [ { "Atomic": [ { "Reference": { - "UserName": "b" + "UserName": "p" } }, { @@ -171,11 +175,32 @@ ] }, { - "Atomic": [ + "UnsafeMod": [ { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] }, { "clean": false, @@ -192,11 +217,32 @@ { "Imply": [ { - "Atomic": [ + "Eq": [ { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] }, { "clean": false, @@ -205,12 +251,25 @@ ] }, { - "Not": [ + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, { "Atomic": [ { "Reference": { - "UserName": "c" + "UserName": "l" } }, { @@ -230,26 +289,9671 @@ "etype": null } ] - } - ], - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "partial_evaluator", - "rule_priority": 9000, - "rule_set": { - "name": "Base" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, + { + "initial_expression": { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "z" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + } + }, + { + "initial_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + }, + { + "initial_expression": { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "c" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + } + }, + { + "initial_expression": { + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + "rule_name": "partial_evaluator", + "rule_priority": 9000, + "rule_set": { + "name": "Base" + }, + "transformed_expression": { + "Root": [ + [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 10 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "l" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "d" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "p" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "o" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 0 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "m" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Not": [ + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "b" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Or": [ + [ + { + "Atomic": [ + { + "Reference": { + "UserName": "a" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Imply": [ + { + "Eq": [ + { + "Atomic": [ + { + "Reference": { + "UserName": "r" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "q" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Lt": [ + { + "Atomic": [ + { + "Literal": { + "Int": 6 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Reference": { + "UserName": "n" + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], + { + "clean": false, + "etype": null + } + ] + } + ], { "clean": false, "etype": null @@ -19580,6 +29284,6 @@ } }, { - "Number of rules applied": 173 + "Number of rules applied": 176 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-parse.serialised.json index 3cb6c45860..977ccc8d74 100644 --- a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-parse.serialised.json @@ -1,211 +1,13 @@ { - "constraints": [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "x" - } - } - ] - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "z" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - } - ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "Not": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "c" - } - } - ] - } - ] - } - ] - } - ] - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Imply": [ { "clean": false, "etype": null @@ -218,7 +20,7 @@ }, { "Reference": { - "UserName": "l" + "UserName": "x" } } ] @@ -230,8 +32,8 @@ "etype": null }, { - "Literal": { - "Int": 10 + "Reference": { + "UserName": "x" } } ] @@ -239,56 +41,14 @@ ] }, { - "Eq": [ + "Or": [ { "clean": false, "etype": null }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "l" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 10 - } - } - ] - } - ] - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null @@ -301,7 +61,7 @@ }, { "Reference": { - "UserName": "n" + "UserName": "a" } } ] @@ -313,8 +73,8 @@ "etype": null }, { - "Literal": { - "Int": 6 + "Reference": { + "UserName": "z" } } ] @@ -322,42 +82,21 @@ ] }, { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "m" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] + "Reference": { + "UserName": "z" + } } ] }, @@ -368,8 +107,8 @@ "etype": null }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "a" } } ] @@ -377,50 +116,31 @@ ] } ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "m" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 - } - } - ] + "Reference": { + "UserName": "b" + } } ] }, @@ -431,8 +151,8 @@ "etype": null }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "c" } } ] @@ -440,7 +160,7 @@ ] }, { - "Lt": [ + "Imply": [ { "clean": false, "etype": null @@ -453,100 +173,346 @@ }, { "Reference": { - "UserName": "n" + "UserName": "b" } } ] }, { - "Atomic": [ + "Not": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] } ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ + { + "Imply": [ + { + "clean": false, + "etype": null + }, + { + "Eq": [ { - "Or": [ + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "l" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] + } + ] + }, + { + "Eq": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ { "clean": false, "etype": null }, - [ + { + "Reference": { + "UserName": "l" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] + } + ] + } + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ + { + "Imply": [ + { + "clean": false, + "etype": null + }, + { + "Lt": [ { - "Imply": [ + "clean": false, + "etype": null + }, + { + "Atomic": [ { "clean": false, "etype": null }, { - "Lt": [ + "Reference": { + "UserName": "n" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] + } + ] + }, + { + "Eq": [ + { + "clean": false, + "etype": null + }, + { + "UnsafeMod": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "n" - } - } - ] + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 6 - } - } - ] + "Literal": { + "Int": 2 + } } ] + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null }, { - "Eq": [ + "Literal": { + "Int": 0 + } + } + ] + } + ] + } + ] + }, + { + "Imply": [ + { + "clean": false, + "etype": null + }, + { + "Eq": [ + { + "clean": false, + "etype": null + }, + { + "UnsafeMod": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] + } + ] + }, + { + "Lt": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] + } + ] + } + ] + } + ] + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ + { + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Lt": [ { "clean": false, "etype": null @@ -559,7 +525,7 @@ }, { "Reference": { - "UserName": "m" + "UserName": "n" } } ] @@ -572,7 +538,7 @@ }, { "Literal": { - "Int": 2 + "Int": 6 } } ] @@ -580,19 +546,137 @@ ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 0 - } + "UnsafeMod": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] + } + ] + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] + } + ] + ] + }, + { + "Imply": [ + { + "clean": false, + "etype": null + }, + { + "Eq": [ + { + "clean": false, + "etype": null + }, + { + "UnsafeMod": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -603,45 +687,16 @@ "etype": null }, { - "Reference": { - "UserName": "a" + "Literal": { + "Int": 0 } } ] } ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "UnsafeMod": [ + "Lt": [ { "clean": false, "etype": null @@ -654,7 +709,7 @@ }, { "Reference": { - "UserName": "m" + "UserName": "n" } } ] @@ -667,122 +722,20 @@ }, { "Literal": { - "Int": 2 + "Int": 6 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 0 - } - } - ] - } - ] - }, - { - "Lt": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "n" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 6 - } - } - ] } ] } ] - } - ] - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "o" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "n" - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } - } ] }, { - "Lt": [ + "Eq": [ { "clean": false, "etype": null @@ -795,7 +748,7 @@ }, { "Reference": { - "UserName": "n" + "UserName": "o" } } ] @@ -807,37 +760,71 @@ "etype": null }, { - "Literal": { - "Int": 6 + "Reference": { + "UserName": "n" } } ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "p" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "d" + } + } + ] + }, + { + "Lt": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] + } + ] } ] }, { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null @@ -850,139 +837,173 @@ }, { "Reference": { - "UserName": "m" + "UserName": "p" } } ] }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "o" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "o" + } + } + ] }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "p" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "p" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null }, { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -994,7 +1015,7 @@ }, { "Literal": { - "Int": 2 + "Int": 0 } } ] @@ -1008,189 +1029,189 @@ "etype": null }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "d" } } ] } ] - }, + } + ] + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Atomic": [ + "Or": [ { "clean": false, "etype": null }, - { - "Reference": { - "UserName": "d" - } - } - ] - } - ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "Or": [ + [ { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Lt": [ + "Imply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "o" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "o" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "p" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] } ] }, { - "Eq": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "p" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 0 - } - } - ] + "Reference": { + "UserName": "a" + } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null + ] }, { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -1202,7 +1223,7 @@ }, { "Literal": { - "Int": 2 + "Int": 0 } } ] @@ -1216,67 +1237,67 @@ "etype": null }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "d" } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "d" - } - } - ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -1286,80 +1307,17 @@ "clean": false, "etype": null }, - { - "Literal": { - "Int": 2 - } - } - ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "r" - } - } - ] - } - ] - }, - { - "Lt": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "n" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 6 - } + { + "Reference": { + "UserName": "r" + } + } + ] } ] - } - ] - } - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "UnsafeDiv": [ + "Lt": [ { "clean": false, "etype": null @@ -1372,7 +1330,7 @@ }, { "Reference": { - "UserName": "q" + "UserName": "n" } } ] @@ -1385,40 +1343,61 @@ }, { "Literal": { - "Int": 2 + "Int": 6 } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "r" - } - } - ] } ] }, { - "Not": [ + "Imply": [ { "clean": false, "etype": null }, { - "Lt": [ + "Eq": [ { "clean": false, "etype": null }, + { + "UnsafeDiv": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] + }, { "Atomic": [ { @@ -1427,21 +1406,50 @@ }, { "Reference": { - "UserName": "n" + "UserName": "r" } } ] + } + ] + }, + { + "Not": [ + { + "clean": false, + "etype": null }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] } @@ -1450,59 +1458,72 @@ ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Or": [ + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Or": [ + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Imply": [ - { - "clean": false, - "etype": null - }, + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -1513,8 +1534,8 @@ "etype": null }, { - "Literal": { - "Int": 2 + "Reference": { + "UserName": "r" } } ] @@ -1522,116 +1543,116 @@ ] }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "r" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] } ] }, { - "Lt": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "n" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 6 - } - } - ] + "Reference": { + "UserName": "a" + } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - } - ] - ] - }, - { - "Imply": [ - { - "clean": false, - "etype": null + ] }, { - "Eq": [ + "Imply": [ { "clean": false, "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -1642,8 +1663,8 @@ "etype": null }, { - "Literal": { - "Int": 2 + "Reference": { + "UserName": "r" } } ] @@ -1651,55 +1672,42 @@ ] }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "r" - } - } - ] - } - ] - }, - { - "Not": [ - { - "clean": false, - "etype": null - }, - { - "Lt": [ + "Not": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Lt": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] }, { - "Literal": { - "Int": 6 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 6 + } + } + ] } ] } @@ -1708,11 +1716,11 @@ ] } ] - } - ] + ] + } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-rewrite.serialised.json index da691953e6..6c474d1e69 100644 --- a/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/optimisations/implies-tautologies-cse/input.expected-rewrite.serialised.json @@ -1,562 +1,492 @@ { - "constraints": [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "l" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "l" + } + } + ] }, { - "Literal": { - "Int": 10 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] + }, + { + "Reference": { + "MachineName": 0 + } } ] }, { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "MinionModuloEqUndefZero": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] }, { - "Literal": { - "Int": 0 + "Reference": { + "MachineName": 1 } } ] }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 2 } - }, - { - "Int": 0 } ] - }, - { - "Reference": { - "MachineName": 2 - } } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "MinionModuloEqUndefZero": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] }, { - "Literal": { - "Int": 2 + "Reference": { + "MachineName": 3 } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null }, { - "Literal": { - "Int": 0 + "Reference": { + "UserName": "a" } } ] }, { - "Reference": { - "MachineName": 3 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "Atomic": [ { "clean": false, "etype": null }, { "Reference": { - "UserName": "n" + "UserName": "b" } + } + ] + }, + { + "MinionReifyImply": [ + { + "clean": false, + "etype": null }, { - "Literal": { - "Int": 5 - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Int": 0 + "Reference": { + "MachineName": 4 + } } ] - }, - { - "Reference": { - "MachineName": 4 - } } ] - } - ] - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null + ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "o" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "o" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + } + ] } ] }, { - "Atomic": [ + "MinionReify": [ { "clean": false, "etype": null }, + { + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] + }, { "Reference": { - "UserName": "n" + "UserName": "d" } } ] - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null }, { - "FlatIneq": [ + "MinionModuloEqUndefZero": [ { "clean": false, "etype": null }, { "Reference": { - "UserName": "n" + "UserName": "m" } }, { "Literal": { - "Int": 5 + "Int": 2 } }, { - "Int": 0 + "Reference": { + "UserName": "p" + } } ] }, { - "Reference": { - "UserName": "d" - } - } - ] - }, - { - "MinionModuloEqUndefZero": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Reference": { - "UserName": "p" - } - } - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "p" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "p" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] + }, + { + "Reference": { + "MachineName": 5 + } } ] }, { - "Reference": { - "MachineName": 5 - } - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 6 - } - }, - { - "Reference": { - "UserName": "d" - } - }, - { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "MachineName": 6 + } + }, + { + "Reference": { + "UserName": "d" + } + }, + { + "Int": 0 + } + ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "Eq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "p" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "p" + } + } + ] }, { - "Literal": { - "Int": 0 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 0 + } + } + ] } ] + }, + { + "Reference": { + "MachineName": 7 + } } ] }, { - "Reference": { - "MachineName": 7 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "MachineName": 8 - } - }, - { - "Reference": { - "UserName": "d" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Int": 0 - } - ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null - }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { "FlatIneq": [ @@ -566,693 +496,732 @@ }, { "Reference": { - "UserName": "n" + "MachineName": 8 } }, { - "Literal": { - "Int": 5 + "Reference": { + "UserName": "d" } }, { "Int": 0 } ] - }, - { - "Reference": { - "MachineName": 9 - } } ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + ] + }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "FlatWatchedLiteral": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "MachineName": 11 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Bool": false + "Reference": { + "MachineName": 9 + } } ] }, { - "Reference": { - "MachineName": 10 - } + "MinionReifyImply": [ + { + "clean": false, + "etype": null + }, + { + "FlatWatchedLiteral": [ + { + "clean": false, + "etype": null + }, + { + "MachineName": 11 + }, + { + "Bool": false + } + ] + }, + { + "Reference": { + "MachineName": 10 + } + } + ] } ] - } - ] - ] - }, - { - "Or": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null - }, + { + "Or": [ + { + "clean": false, + "etype": null + }, + [ { - "FlatIneq": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 12 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 12 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } - } - ] - }, - { - "MinionReifyImply": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] }, { - "FlatWatchedLiteral": [ + "MinionReifyImply": [ { "clean": false, "etype": null }, { - "MachineName": 14 + "FlatWatchedLiteral": [ + { + "clean": false, + "etype": null + }, + { + "MachineName": 14 + }, + { + "Bool": false + } + ] }, { - "Bool": false + "Reference": { + "MachineName": 13 + } } ] - }, - { - "Reference": { - "MachineName": 13 - } } ] - } - ] - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null + ] }, { - "Eq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "l" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "l" + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 10 + } + } + ] } ] }, { - "Atomic": [ + "Reference": { + "MachineName": 0 + } + } + ] + }, + { + "MinionReify": [ + { + "clean": false, + "etype": null + }, + { + "FlatIneq": [ { "clean": false, "etype": null }, + { + "Reference": { + "UserName": "n" + } + }, { "Literal": { - "Int": 10 + "Int": 5 } + }, + { + "Int": 0 } ] - } - ] - }, - { - "Reference": { - "MachineName": 0 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null }, { "Reference": { - "UserName": "n" + "MachineName": 1 } - }, - { - "Literal": { - "Int": 5 - } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 1 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionModuloEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] }, { - "Literal": { - "Int": 0 + "Reference": { + "MachineName": 2 } } ] }, { - "Reference": { - "MachineName": 2 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 3 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 3 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionModuloEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] }, { - "Literal": { - "Int": 0 + "Reference": { + "MachineName": 4 } } ] }, { - "Reference": { - "MachineName": 4 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "o" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "o" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 5 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 5 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionModuloEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, + { + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] + }, { "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } - }, - { - "Literal": { - "Int": 0 + "MachineName": 6 } } ] }, { - "Reference": { - "MachineName": 6 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "o" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "o" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 7 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 7 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionModuloEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "m" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionModuloEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "m" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Literal": { + "Int": 0 + } + } + ] }, { - "Literal": { - "Int": 0 + "Reference": { + "MachineName": 8 } } ] }, { - "Reference": { - "MachineName": 8 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionDivEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "UserName": "r" + } + } + ] }, { "Reference": { - "UserName": "r" + "MachineName": 9 } } ] }, { - "Reference": { - "MachineName": 9 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionDivEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "UserName": "r" + } + } + ] }, { "Reference": { - "UserName": "r" + "MachineName": 10 } } ] }, { - "Reference": { - "MachineName": 10 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 11 } - }, - { - "Int": 0 } ] }, { - "Reference": { - "MachineName": 11 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionDivEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "UserName": "r" + } + } + ] }, { "Reference": { - "UserName": "r" + "MachineName": 12 } } ] }, { - "Reference": { - "MachineName": 12 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "MinionDivEqUndefZero": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "q" - } - }, - { - "Literal": { - "Int": 2 - } + "MinionDivEqUndefZero": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "q" + } + }, + { + "Literal": { + "Int": 2 + } + }, + { + "Reference": { + "UserName": "r" + } + } + ] }, { "Reference": { - "UserName": "r" + "MachineName": 13 } } ] }, { - "Reference": { - "MachineName": 13 - } - } - ] - }, - { - "MinionReify": [ - { - "clean": false, - "etype": null - }, - { - "FlatIneq": [ + "MinionReify": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "n" - } + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "n" + } + }, + { + "Literal": { + "Int": 5 + } + }, + { + "Int": 0 + } + ] }, { - "Literal": { - "Int": 5 + "Reference": { + "MachineName": 14 } - }, - { - "Int": 0 } ] - }, - { - "Reference": { - "MachineName": 14 - } } ] - } - ], + ] + }, "symbols": { "next_machine_name": 15, "table": [ diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace-human.txt index 6e31571147..1be1f9d60e 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace-human.txt @@ -15,50 +15,16 @@ true -- -(UnsafeDiv(3, 2) = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(-(3), 2) = -(2)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(3, -(2)) = -(2)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(-(3), -(2)) = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(3 % 2 = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(3 % -(2) = -(1)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(-(3) % 2 = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(-(3) % -(2) = -(1)), - ~~> apply_eval_constant ([("Constant", 9001)]) +(UnsafeDiv(3, 2) = 1), +(UnsafeDiv(-(3), 2) = -(2)), +(UnsafeDiv(3, -(2)) = -(2)), +(UnsafeDiv(-(3), -(2)) = 1), +(3 % 2 = 1), +(3 % -(2) = -(1)), +(-(3) % 2 = 1), +(-(3) % -(2) = -(1)), +true, + ~~> eval_root ([("Constant", 9001)]) true -- @@ -68,13 +34,5 @@ Final model: such that -true, -true, -true, -true, -true, -true, -true, -true, true diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace.json b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace.json index 5903f8c6d3..ba7727e826 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar-expected-rule-trace.json @@ -1,693 +1,586 @@ [ { "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 - } - }, - { - "clean": false, - "etype": null + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true } - ] - }, - { - "Atomic": [ - { - "Literal": { - "Int": 3 + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "UnsafeDiv": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeMod": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], { "clean": false, "etype": null } ] }, - "rule_name": "apply_eval_constant", + "rule_name": "eval_root", "rule_priority": 9001, "rule_set": { "name": "Constant" }, "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] } - }, + ], { "clean": false, "etype": null @@ -696,6 +589,6 @@ } }, { - "Number of rules applied": 8 + "Number of rules applied": 1 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-parse.serialised.json b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-parse.serialised.json index fa10bb1950..776b6f37f0 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -33,7 +54,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -41,38 +62,38 @@ ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, - { - "Neg": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, { "Atomic": [ { @@ -81,7 +102,7 @@ }, { "Literal": { - "Int": 3 + "Int": 2 } } ] @@ -89,65 +110,73 @@ ] }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } - } - ] - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] } ] }, @@ -175,11 +204,61 @@ ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, + { + "UnsafeDiv": [ + { + "clean": false, + "etype": null + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] + } + ] + }, { "Atomic": [ { @@ -188,29 +267,21 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Neg": [ + "UnsafeMod": [ { "clean": false, "etype": null @@ -227,14 +298,6 @@ } } ] - } - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null }, { "Atomic": [ @@ -250,48 +313,6 @@ ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 3 - } - } - ] }, { "Atomic": [ @@ -301,7 +322,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -309,42 +330,50 @@ ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] } ] }, @@ -362,7 +391,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -372,45 +401,37 @@ ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Neg": [ - { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] }, { "Atomic": [ @@ -420,7 +441,7 @@ }, { "Literal": { - "Int": 3 + "Int": 2 } } ] @@ -435,7 +456,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -443,48 +464,56 @@ ] }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ + "Eq": [ { "clean": false, "etype": null }, { - "Neg": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } @@ -504,7 +533,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -514,42 +543,21 @@ ] }, { - "Neg": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] + "Literal": { + "Bool": true + } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [] diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-rewrite.serialised.json index 94851c76b2..2477dc8c6b 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod-novar/divide-mod-novar.expected-rewrite.serialised.json @@ -1,123 +1,27 @@ { - "constraints": [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - } - ], + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] + } + ] + ] + }, "symbols": { "next_machine_name": 0, "table": [] diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace-human.txt b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace-human.txt index 98e0eb8bf1..9d29848475 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace-human.txt +++ b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace-human.txt @@ -16,50 +16,16 @@ true -- -(UnsafeDiv(3, 2) = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(-(3), 2) = -(2)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(3, -(2)) = -(2)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(UnsafeDiv(-(3), -(2)) = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(3 % 2 = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(3 % -(2) = -(1)), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(-(3) % 2 = 1), - ~~> apply_eval_constant ([("Constant", 9001)]) -true - --- - -(-(3) % -(2) = -(1)), - ~~> apply_eval_constant ([("Constant", 9001)]) +(UnsafeDiv(3, 2) = 1), +(UnsafeDiv(-(3), 2) = -(2)), +(UnsafeDiv(3, -(2)) = -(2)), +(UnsafeDiv(-(3), -(2)) = 1), +(3 % 2 = 1), +(3 % -(2) = -(1)), +(-(3) % 2 = 1), +(-(3) % -(2) = -(1)), +true, + ~~> eval_root ([("Constant", 9001)]) true -- @@ -70,13 +36,5 @@ find x: int(1..1) such that -true, -true, -true, -true, -true, -true, -true, -true, true diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace.json b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace.json index 5903f8c6d3..ba7727e826 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod-expected-rule-trace.json @@ -1,693 +1,586 @@ [ { "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 - } - }, - { - "clean": false, - "etype": null + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true } - ] - }, - { - "Atomic": [ - { - "Literal": { - "Int": 3 + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "UnsafeDiv": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeDiv": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 - } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "UnsafeMod": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 1 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "UnsafeMod": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - "rule_name": "apply_eval_constant", - "rule_priority": 9001, - "rule_set": { - "name": "Constant" - }, - "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true - } - }, - { - "clean": false, - "etype": null - } - ] - } - }, - { - "initial_expression": { - "Eq": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 1 + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "UnsafeMod": [ - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 2 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "Eq": [ + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "Neg": [ - { - "Atomic": [ - { - "Literal": { - "Int": 3 + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "UnsafeDiv": [ + { + "Atomic": [ + { + "Literal": { + "Int": 3 + } + }, + { + "clean": false, + "etype": null } - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, - { - "clean": false, - "etype": null - } - ] - }, + ] + }, + { + "Neg": [ + { + "Atomic": [ + { + "Literal": { + "Int": 2 + } + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + }, + { + "clean": false, + "etype": null + } + ] + } + ], { "clean": false, "etype": null } ] }, - "rule_name": "apply_eval_constant", + "rule_name": "eval_root", "rule_priority": 9001, "rule_set": { "name": "Constant" }, "transformed_expression": { - "Atomic": [ - { - "Literal": { - "Bool": true + "Root": [ + [ + { + "Atomic": [ + { + "Literal": { + "Bool": true + } + }, + { + "clean": false, + "etype": null + } + ] } - }, + ], { "clean": false, "etype": null @@ -696,6 +589,6 @@ } }, { - "Number of rules applied": 8 + "Number of rules applied": 1 } ] \ No newline at end of file diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-parse.serialised.json b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-parse.serialised.json index 864f5dcb8b..e1ca91c72f 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-parse.serialised.json @@ -1,27 +1,48 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] }, @@ -33,7 +54,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -41,38 +62,38 @@ ] }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Neg": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, { "Atomic": [ { @@ -81,7 +102,7 @@ }, { "Literal": { - "Int": 3 + "Int": 2 } } ] @@ -89,65 +110,73 @@ ] }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeDiv": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 2 - } - } - ] - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeDiv": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] }, { - "Literal": { - "Int": 3 - } + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] } ] }, @@ -175,11 +204,61 @@ ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, + { + "UnsafeDiv": [ + { + "clean": false, + "etype": null + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] + } + ] + }, { "Atomic": [ { @@ -188,29 +267,21 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] } ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null }, { - "UnsafeDiv": [ + "Eq": [ { "clean": false, "etype": null }, { - "Neg": [ + "UnsafeMod": [ { "clean": false, "etype": null @@ -227,14 +298,6 @@ } } ] - } - ] - }, - { - "Neg": [ - { - "clean": false, - "etype": null }, { "Atomic": [ @@ -250,35 +313,6 @@ ] } ] - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null }, { "Atomic": [ @@ -288,20 +322,7 @@ }, { "Literal": { - "Int": 3 - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -309,42 +330,50 @@ ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] + } + ] } ] }, @@ -362,7 +391,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -372,45 +401,37 @@ ] }, { - "Neg": [ + "Eq": [ { "clean": false, "etype": null }, { - "Atomic": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Neg": [ - { - "clean": false, - "etype": null + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] }, { "Atomic": [ @@ -420,7 +441,7 @@ }, { "Literal": { - "Int": 3 + "Int": 2 } } ] @@ -435,7 +456,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -443,48 +464,56 @@ ] }, { - "Atomic": [ + "Eq": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 1 - } - } - ] - } - ] - }, - { - "Eq": [ - { - "clean": false, - "etype": null - }, - { - "UnsafeMod": [ - { - "clean": false, - "etype": null - }, - { - "Neg": [ + "UnsafeMod": [ { "clean": false, "etype": null }, { - "Atomic": [ + "Neg": [ { "clean": false, "etype": null }, { - "Literal": { - "Int": 3 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 3 + } + } + ] + } + ] + }, + { + "Neg": [ + { + "clean": false, + "etype": null + }, + { + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 2 + } + } + ] } ] } @@ -504,7 +533,7 @@ }, { "Literal": { - "Int": 2 + "Int": 1 } } ] @@ -514,42 +543,21 @@ ] }, { - "Neg": [ + "Atomic": [ { "clean": false, "etype": null }, { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Int": 1 - } - } - ] + "Literal": { + "Bool": true + } } ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-rewrite.serialised.json index 0cdbfd0feb..9513c4f118 100644 --- a/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/savilerow/divide-mod/divide-mod.expected-rewrite.serialised.json @@ -1,123 +1,27 @@ { - "constraints": [ - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Literal": { - "Bool": true - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Literal": { - "Bool": true - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Bool": true + } + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/xyz/input.expected-parse.serialised.json b/conjure_oxide/tests/integration/xyz/input.expected-parse.serialised.json index a5c5a6f5c4..9ef3a81487 100644 --- a/conjure_oxide/tests/integration/xyz/input.expected-parse.serialised.json +++ b/conjure_oxide/tests/integration/xyz/input.expected-parse.serialised.json @@ -1,120 +1,128 @@ { - "constraints": [ - { - "Eq": [ - { - "clean": false, - "etype": null - }, + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "Sum": [ + "Eq": [ { "clean": false, "etype": null }, - [ - { - "Sum": [ + { + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Atomic": [ + "Sum": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "a" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - } - ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Reference": { - "UserName": "c" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "c" + } + } + ] } ] - } - ] - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + ] }, { - "Literal": { - "Int": 4 - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Literal": { + "Int": 4 + } + } + ] } ] - } - ] - }, - { - "Geq": [ - { - "clean": false, - "etype": null }, { - "Atomic": [ + "Geq": [ { "clean": false, "etype": null }, { - "Reference": { - "UserName": "a" - } - } - ] - }, - { - "Atomic": [ - { - "clean": false, - "etype": null + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "a" + } + } + ] }, { - "Reference": { - "UserName": "b" - } + "Atomic": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + } + ] } ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/integration/xyz/input.expected-rewrite.serialised.json b/conjure_oxide/tests/integration/xyz/input.expected-rewrite.serialised.json index 8da693e0ae..463ee88072 100644 --- a/conjure_oxide/tests/integration/xyz/input.expected-rewrite.serialised.json +++ b/conjure_oxide/tests/integration/xyz/input.expected-rewrite.serialised.json @@ -1,97 +1,105 @@ { - "constraints": [ - { - "And": [ + "constraints": { + "Root": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "FlatSumLeq": [ + "And": [ + { + "clean": false, + "etype": null + }, + [ { - "clean": false, - "etype": null - }, - [ - { - "Reference": { - "UserName": "a" + "FlatSumLeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + } + ], + { + "Literal": { + "Int": 4 + } } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - } - ], - { - "Literal": { - "Int": 4 - } - } - ] - }, - { - "FlatSumGeq": [ - { - "clean": false, - "etype": null + ] }, - [ - { - "Reference": { - "UserName": "a" - } - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "c" - } - } - ], { - "Literal": { - "Int": 4 - } + "FlatSumGeq": [ + { + "clean": false, + "etype": null + }, + [ + { + "Reference": { + "UserName": "a" + } + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "c" + } + } + ], + { + "Literal": { + "Int": 4 + } + } + ] } ] - } - ] - ] - }, - { - "FlatIneq": [ - { - "clean": false, - "etype": null - }, - { - "Reference": { - "UserName": "b" - } - }, - { - "Reference": { - "UserName": "a" - } + ] }, { - "Int": 0 + "FlatIneq": [ + { + "clean": false, + "etype": null + }, + { + "Reference": { + "UserName": "b" + } + }, + { + "Reference": { + "UserName": "a" + } + }, + { + "Int": 0 + } + ] } ] - } - ], + ] + }, "symbols": { "next_machine_name": 0, "table": [ diff --git a/conjure_oxide/tests/rewrite_tests.rs b/conjure_oxide/tests/rewrite_tests.rs index f6f17b7448..95f7ceafaf 100644 --- a/conjure_oxide/tests/rewrite_tests.rs +++ b/conjure_oxide/tests/rewrite_tests.rs @@ -1,12 +1,13 @@ use std::collections::VecDeque; use std::process::exit; +use conjure_core::rule_engine::rewrite_naive; use conjure_core::solver::SolverFamily; use conjure_core::{rule_engine::get_all_rules, rules::eval_constant}; use conjure_oxide::{ ast::*, get_rule_by_name, - rule_engine::{resolve_rule_sets, rewrite_model}, + rule_engine::resolve_rule_sets, solver::{adaptors, Solver}, Metadata, Model, Rule, }; @@ -656,12 +657,13 @@ fn rewrite_solve_xyz() { }; // Apply rewrite function to the nested expression - let rewritten_expr = rewrite_model( + let rewritten_expr = rewrite_naive( &Model::new(SymbolTable::new(), vec![nested_expr], Default::default()), &rule_sets, + true, ) .unwrap() - .constraints; + .get_constraints_vec(); // Check if the expression is in its simplest form diff --git a/crates/conjure_core/src/ast/expressions.rs b/crates/conjure_core/src/ast/expressions.rs index 14721564e9..4ccf52d5f3 100644 --- a/crates/conjure_core/src/ast/expressions.rs +++ b/crates/conjure_core/src/ast/expressions.rs @@ -9,7 +9,7 @@ use uniplate::derive::Uniplate; use uniplate::{Biplate, Uniplate as _}; use crate::ast::literals::Literal; -use crate::ast::pretty::pretty_vec; +use crate::ast::pretty::{pretty_expressions_as_top_level, pretty_vec}; use crate::ast::symbol_table::{Name, SymbolTable}; use crate::ast::Atom; use crate::ast::ReturnType; @@ -30,6 +30,9 @@ use super::{Domain, Range}; #[biplate(to=Name)] #[biplate(to=Vec)] pub enum Expression { + /// The top of the model + Root(Metadata, Vec), + /// An expression representing "A is valid as long as B is true" /// Turns into a conjunction when it reaches a boolean context Bubble(Metadata, Box, Box), @@ -410,6 +413,7 @@ impl Expression { ) } + Expression::Root(_, _) => None, Expression::Bubble(_, _, _) => None, Expression::AuxDeclaration(_, _, _) => Some(Domain::BoolDomain), Expression::And(_, _) => Some(Domain::BoolDomain), @@ -502,6 +506,7 @@ impl Expression { pub fn return_type(&self) -> Option { match self { + Expression::Root(_, _) => Some(ReturnType::Bool), Expression::Atomic(_, Atom::Literal(Literal::Int(_))) => Some(ReturnType::Int), Expression::Atomic(_, Atom::Literal(Literal::Bool(_))) => Some(ReturnType::Bool), Expression::Atomic(_, Atom::Reference(_)) => None, @@ -608,6 +613,9 @@ impl Display for Expression { // TODO: (flm8) this will change once we implement a parser (two-way conversion) fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { match &self { + Expression::Root(_, exprs) => { + write!(f, "{}", pretty_expressions_as_top_level(exprs)) + } Expression::Atomic(_, atom) => atom.fmt(f), Expression::Abs(_, a) => write!(f, "|{}|", a), Expression::Sum(_, expressions) => { diff --git a/crates/conjure_core/src/model.rs b/crates/conjure_core/src/model.rs index 0d74f5dc97..d52d2e866c 100644 --- a/crates/conjure_core/src/model.rs +++ b/crates/conjure_core/src/model.rs @@ -7,12 +7,14 @@ use serde::{Deserialize, Serialize}; use uniplate::{Biplate, Tree, Uniplate}; use crate::ast::{DecisionVariable, Domain, Expression, Name, SymbolTable}; +use crate::bug; use crate::context::Context; use crate::ast::pretty::{ pretty_domain_letting_declaration, pretty_expressions_as_top_level, pretty_value_letting_declaration, pretty_variable_declaration, }; +use crate::metadata::Metadata; /// Represents a computational model containing variables, constraints, and a shared context. /// @@ -37,7 +39,8 @@ use crate::ast::pretty::{ #[derive(Derivative, Clone, Debug, Serialize, Deserialize)] #[derivative(PartialEq, Eq)] pub struct Model { - pub constraints: Vec, + /// Top level constraints. This should be a `Expression::Root`. + constraints: Box, symbols: SymbolTable, @@ -55,7 +58,7 @@ impl Model { ) -> Model { Model { symbols, - constraints, + constraints: Box::new(Expression::Root(Metadata::new(), constraints)), context, } } @@ -95,15 +98,19 @@ impl Model { } pub fn get_constraints_vec(&self) -> Vec { - self.constraints.clone() + match *self.constraints { + Expression::Root(_, ref exprs) => exprs.clone(), + ref e => { + bug!( + "get_constraints_vec: unexpected top level expression, {} ", + e + ); + } + } } pub fn set_constraints(&mut self, constraints: Vec) { - if constraints.is_empty() { - self.constraints = Vec::new(); - } else { - self.constraints = constraints; - } + self.constraints = Box::new(Expression::Root(Metadata::new(), constraints)); } pub fn set_context(&mut self, context: Arc>>) { @@ -111,7 +118,7 @@ impl Model { } pub fn add_constraint(&mut self, expression: Expression) { - // ToDo (gs248) - there is no checking whatsoever + // TODO (gs248): there is no checking whatsoever // We need to properly validate the expression but this is just for testing let mut constraints = self.get_constraints_vec(); constraints.push(expression); @@ -162,7 +169,7 @@ impl Biplate for Model { let mut self3 = self2.clone(); self3.symbols = (symtab_ctx)(fields[0].clone()); - self3.constraints = (constraints_ctx)(fields[1].clone()); + self3.constraints = Box::new((constraints_ctx)(fields[1].clone())); self3 }); @@ -198,7 +205,11 @@ impl Display for Model { writeln!(f, "\nsuch that\n")?; - writeln!(f, "{}", pretty_expressions_as_top_level(&self.constraints))?; + writeln!( + f, + "{}", + pretty_expressions_as_top_level(&self.get_constraints_vec()) + )?; Ok(()) } diff --git a/crates/conjure_core/src/rule_engine/rewrite.rs b/crates/conjure_core/src/rule_engine/rewrite.rs index 2877e04223..d27759990b 100644 --- a/crates/conjure_core/src/rule_engine/rewrite.rs +++ b/crates/conjure_core/src/rule_engine/rewrite.rs @@ -119,16 +119,16 @@ pub fn rewrite_model<'a>( //the while loop is exited when None is returned implying the sub-expression is clean let mut i: usize = 0; - while i < new_model.constraints.len() { + while i < new_model.get_constraints_vec().len() { while let Some(step) = rewrite_iteration( - &new_model.constraints[i], + &new_model.get_constraints_vec()[i], &new_model, &rules, apply_optimizations, &mut stats, ) { debug_assert!(is_vec_bool(&step.new_top)); // All new_top expressions should be boolean - new_model.constraints[i] = step.new_expression.clone(); + new_model.get_constraints_vec()[i] = step.new_expression.clone(); step.apply(&mut new_model); // Apply side-effects (e.g., symbol table updates) } diff --git a/crates/conjure_core/src/rule_engine/rule.rs b/crates/conjure_core/src/rule_engine/rule.rs index 2afa8ecc9f..616232a310 100644 --- a/crates/conjure_core/src/rule_engine/rule.rs +++ b/crates/conjure_core/src/rule_engine/rule.rs @@ -101,7 +101,7 @@ impl Reduction { /// Applies side-effects (e.g. symbol table updates) pub fn apply(self, model: &mut Model) { model.extend_sym_table(self.symbols); // Add new assignments to the symbol table - model.constraints.extend(self.new_top.clone()); + model.add_constraints(self.new_top.clone()); } /// Gets symbols added by this reduction diff --git a/crates/conjure_core/src/rules/base.rs b/crates/conjure_core/src/rules/base.rs index 555edf9980..989d2d3e5c 100644 --- a/crates/conjure_core/src/rules/base.rs +++ b/crates/conjure_core/src/rules/base.rs @@ -28,6 +28,7 @@ fn remove_empty_expression(expr: &Expr, _: &Model) -> ApplicationResult { if matches!( expr, Atomic(_, _) + | Root(_, _) | FlatIneq(_, _, _, _) | FlatMinusEq(_, _, _) | FlatSumGeq(_, _, _) diff --git a/crates/conjure_core/src/rules/constant_eval.rs b/crates/conjure_core/src/rules/constant_eval.rs index 262c9db5f6..bb71791957 100644 --- a/crates/conjure_core/src/rules/constant_eval.rs +++ b/crates/conjure_core/src/rules/constant_eval.rs @@ -3,7 +3,8 @@ use std::collections::HashSet; use conjure_core::ast::{Atom, Expression as Expr, Literal as Lit}; use conjure_core::metadata::Metadata; use conjure_core::rule_engine::{ - register_rule, register_rule_set, ApplicationError, ApplicationResult, Reduction, + register_rule, register_rule_set, ApplicationError, ApplicationError::RuleNotApplicable, + ApplicationResult, Reduction, }; use conjure_core::Model; use itertools::izip; @@ -41,6 +42,9 @@ pub fn eval_constant(expr: &Expr) -> Option { Expr::Not(_, expr) => un_op::(|e| !e, expr).map(Lit::Bool), Expr::And(_, exprs) => vec_op::(|e| e.iter().all(|&e| e), exprs).map(Lit::Bool), + // this is done elsewhere instead - root should return a new root with a literal inside it, + // not a literal + Expr::Root(_, _) => None, Expr::Or(_, exprs) => vec_op::(|e| e.iter().any(|&e| e), exprs).map(Lit::Bool), Expr::Imply(_, box1, box2) => { let a: &Atom = (&**box1).try_into().ok()?; @@ -281,6 +285,36 @@ pub fn eval_constant(expr: &Expr) -> Option { } } +/// Evaluate the root expression. +/// +/// This returns either Expr::Root([true]) or Expr::Root([false]). +#[register_rule(("Constant", 9001))] +fn eval_root(expr: &Expr, _: &Model) -> ApplicationResult { + // this is its own rule not part of apply_eval_constant, because root should return a new root + // with a literal inside it, not just a literal + + let Expr::Root(_, exprs) = expr else { + return Err(RuleNotApplicable); + }; + + match exprs.len() { + 0 => Ok(Reduction::pure(Expr::Root( + Metadata::new(), + vec![true.into()], + ))), + 1 => Err(RuleNotApplicable), + _ => { + let lit = + vec_op::(|e| e.iter().all(|&e| e), exprs).ok_or(RuleNotApplicable)?; + + Ok(Reduction::pure(Expr::Root( + Metadata::new(), + vec![lit.into()], + ))) + } + } +} + fn un_op(f: fn(T) -> A, a: &Expr) -> Option where T: TryFrom, diff --git a/crates/conjure_core/src/rules/partial_eval.rs b/crates/conjure_core/src/rules/partial_eval.rs index 7fef7a763f..4c6f714968 100644 --- a/crates/conjure_core/src/rules/partial_eval.rs +++ b/crates/conjure_core/src/rules/partial_eval.rs @@ -1,7 +1,8 @@ -use std::collections::HashSet; +use std::collections::{HashSet, VecDeque}; use conjure_macros::register_rule; use itertools::iproduct; +use uniplate::Biplate; use crate::rule_engine::{ApplicationResult, Reduction}; use crate::Model; @@ -189,7 +190,7 @@ fn partial_evaluator(expr: &Expr, _: &Model) -> ApplicationResult { Ok(Reduction::pure(Or(m, new_terms))) } - And(m, vec) => { + And(_, vec) => { let mut new_vec: Vec = Vec::new(); let mut has_const: bool = false; for expr in vec { @@ -209,7 +210,44 @@ fn partial_evaluator(expr: &Expr, _: &Model) -> ApplicationResult { if !has_const { Err(RuleNotApplicable) } else { - Ok(Reduction::pure(And(m, new_vec))) + Ok(Reduction::pure( + expr.with_children_bi(VecDeque::from([new_vec])), + )) + } + } + + // similar to And, but booleans are returned wrapped in Root. + Root(_, vec) => { + // root([true]) / root([false]) are already evaluated + if vec.len() < 2 { + return Err(RuleNotApplicable); + } + + let mut new_vec: Vec = Vec::new(); + let mut has_const: bool = false; + for expr in vec { + if let Expr::Atomic(_, Atom::Literal(Bool(x))) = expr { + has_const = true; + if !x { + return Ok(Reduction::pure(Root( + Metadata::new(), + vec![Atomic(Default::default(), Atom::Literal(Bool(false)))], + ))); + } + } else { + new_vec.push(expr); + } + } + + if !has_const { + Err(RuleNotApplicable) + } else { + if new_vec.is_empty() { + new_vec.push(true.into()); + } + Ok(Reduction::pure( + expr.with_children_bi(VecDeque::from([new_vec])), + )) } } Imply(_m, x, y) => {