Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
7ebad31
feat(solver): introduce `Evaluable` trait to construct values from a
arbimo Mar 27, 2026
ef647ee
chore(planning): have `Operation` be generic on its parameter type.
arbimo Mar 27, 2026
60d3c4c
chore(planning): provind an Encoding structure to allow reconstructin…
arbimo Mar 27, 2026
0c7cb65
chore(solver): consistently set `QCst` to `Ratio<IntCst>`
arbimo Mar 30, 2026
e5ed14a
fix(timelines): make sure we respect optionality of the constraint
arbimo Mar 30, 2026
b6d13bc
chore(solver): Generalize optimization API to support assumptions.
arbimo Mar 30, 2026
5962691
chore(solver): implement `Evaluable` for `LinearSum`
arbimo Mar 30, 2026
d65eb02
chore(solver): Implement `BoolExpr` for `LinearLeq`
arbimo Mar 30, 2026
ca1a38a
chore(planx): add span information to goals
arbimo Mar 30, 2026
cd43f64
feat(timelines): add optimization interface to explanable solver.
arbimo Mar 30, 2026
e06703a
feat(ape): optimization of plan-length + explanations of unsat
arbimo Mar 30, 2026
342ed1a
feat(ape): provide explanations of plan invalidity
arbimo Mar 30, 2026
a89a391
feat(ape): Allow relaxing timings in plan optimization.
arbimo Mar 31, 2026
b487d71
optim(timelines): add broad-phase filtering for finding overlapping
arbimo Mar 31, 2026
3520490
chore(timelines): use generic `Dom` trait instead of ad-hoc closure.
arbimo Mar 31, 2026
9b6f64a
chore(solver): simplify and generalize `EqMax` constraint decomposition.
arbimo Mar 31, 2026
3071915
feat(ape): add makespan objective to plan optimization
arbimo Mar 31, 2026
ebc12b0
doc(ape): add documentation for plan optimization
arbimo Mar 31, 2026
8574aa4
chore(ape): make validation output less verbose by default
arbimo Mar 31, 2026
08941e7
chore(ape): improve error messages on unsupported syntax
arbimo Mar 31, 2026
1241802
chore(timelines): All state variables use integers to represent their
arbimo Apr 1, 2026
23b1977
chore(timelines): make sure we only use closed world assumption for
arbimo Apr 1, 2026
9cd2a4f
chore(ape): provide better error messages for effects.
arbimo Apr 1, 2026
bd54446
wip(ape): initial support for simple numeric planning
arbimo Apr 2, 2026
547bb8e
chore(timelines): Add primitive effect printing for debugging
arbimo Apr 2, 2026
977b08c
chore(ape): add general expression reification
arbimo Apr 2, 2026
5d4bdc7
wip(ape): Initial support for linear sum in conditions
arbimo Apr 7, 2026
c0bc020
chore(solver): simplify `BoolExpr` trait.
arbimo Apr 7, 2026
d140f23
chore(solver): use `Conjunction` for scopes instead of ad-hoc smallvec
arbimo Apr 7, 2026
fb50820
feat(solver): provide `element` constraint + `IntExpr` abstraction.
arbimo Apr 8, 2026
16c524e
fix(ape): use the metric defined in the domain as the default when
arbimo Apr 8, 2026
278e5f9
chore(solver): add more informative `Debug` for `Lits` and `NFLinearLeq`
arbimo Apr 8, 2026
2c6eade
chore(solver,timelines): add debugging utilities (solution assertion +
arbimo Apr 8, 2026
949b791
chore(planx): support parsing the `:disjunctive-preconditions` feature
arbimo Apr 8, 2026
d800c5d
fix(ape): ensure action args are printed in the original order
arbimo Apr 8, 2026
c9a7909
fix(ape): enforce horizon to be placed after all effects/actions.
arbimo Apr 8, 2026
b526c68
chore(ape): partial implementation for non-constant increase
arbimo Apr 9, 2026
990dec7
chore(solver): rename `NFLinearTerm` to `ScaledVar`
arbimo Apr 9, 2026
0af90f0
chore(timelines): Expose type alias for integer terms and expressions.
arbimo Apr 9, 2026
325d8c4
chore(solver): new implementations for linear sums and terms.
arbimo Apr 9, 2026
54a5381
feat(ape): add the `find-problem` command.
arbimo Apr 10, 2026
b3fcda9
feat(ape): Add a CLI option to specify an expected objective value in
arbimo Apr 10, 2026
279424f
ci(ape): add integration tests for `ape-validate`
arbimo Apr 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/aries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ jobs:
run: ./ci/sat.py debug
- name: Scheduler testing
run: ./ci/scheduling.py
- name: APE validator
run: ./ci/ape-val.sh
- name: GG solving
run: ./ci/gg.py
- name: PDDL Solving (PDDL & HDDL)
Expand Down
3 changes: 3 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ tokio = { default-features = false, version = "1.49.0", features = [
"macros",
] }
tokio-stream = { default-features = false, version = "0.1" }
tracing = { version = "0.1", features = ["release_max_level_debug"] }
tracing = { version = "0.1", features = ["release_max_level_info"] }
tracing-subscriber = "0.3"
transitive = "1.2.0"
vec_map = "0.8"
Expand Down
6 changes: 3 additions & 3 deletions aries_fzn/src/aries/constraint/abs.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::IVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinEq;
Expand Down Expand Up @@ -40,11 +40,11 @@ impl<Lbl: Label> Post<Lbl> for Abs {
let plus_a = self.a;

let sum = vec![
NFLinearSumItem {
ScaledVar {
var: plus_a.into(),
factor: 1,
},
NFLinearSumItem {
ScaledVar {
var: minus_a.into(),
factor: 1,
},
Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_eq.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinGe;
Expand All @@ -13,16 +13,16 @@ use crate::aries::constraint::LinLe;
/// where `v[i]` are variables, `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinEq {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
b: IntCst,
}

impl LinEq {
pub fn new(sum: Vec<NFLinearSumItem>, b: IntCst) -> Self {
pub fn new(sum: Vec<ScaledVar>, b: IntCst) -> Self {
Self { sum, b }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_eq_half.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinGeHalf;
Expand All @@ -16,17 +16,17 @@ use crate::aries::constraint::LinLeHalf;
/// `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinEqHalf {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
b: IntCst,
r: BVar,
}

impl LinEqHalf {
pub fn new(sum: Vec<NFLinearSumItem>, b: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, b: IntCst, r: BVar) -> Self {
Self { sum, b, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_eq_reif.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::AndReif;
Expand All @@ -17,17 +17,17 @@ use crate::aries::constraint::LinLeReif;
/// `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinEqReif {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
b: IntCst,
r: BVar,
}

impl LinEqReif {
pub fn new(sum: Vec<NFLinearSumItem>, b: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, b: IntCst, r: BVar) -> Self {
Self { sum, b, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
10 changes: 5 additions & 5 deletions aries_fzn/src/aries/constraint/lin_ge.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinLe;
Expand All @@ -12,16 +12,16 @@ use crate::aries::constraint::LinLe;
/// where `v[i]` are variables, `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinGe {
items: Vec<NFLinearSumItem>,
items: Vec<ScaledVar>,
lb: IntCst,
}

impl LinGe {
pub fn new(items: Vec<NFLinearSumItem>, lb: IntCst) -> Self {
pub fn new(items: Vec<ScaledVar>, lb: IntCst) -> Self {
Self { items, lb }
}

pub fn items(&self) -> &Vec<NFLinearSumItem> {
pub fn items(&self) -> &Vec<ScaledVar> {
&self.items
}

Expand All @@ -32,7 +32,7 @@ impl LinGe {

impl<Lbl: Label> Post<Lbl> for LinGe {
fn post(&self, model: &mut Model<Lbl>) {
let minus = |i: &NFLinearSumItem| NFLinearSumItem {
let minus = |i: &ScaledVar| ScaledVar {
var: i.var,
factor: -i.factor,
};
Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_ge_half.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinLeHalf;
Expand All @@ -15,17 +15,17 @@ use crate::aries::constraint::LinLeHalf;
/// `lb` and `c[i]` constants.
#[derive(Debug)]
pub struct LinGeHalf {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
lb: IntCst,
r: BVar,
}

impl LinGeHalf {
pub fn new(sum: Vec<NFLinearSumItem>, lb: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, lb: IntCst, r: BVar) -> Self {
Self { sum, lb, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_ge_reif.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinLeReif;
Expand All @@ -15,17 +15,17 @@ use crate::aries::constraint::LinLeReif;
/// `lb` and `c[i]` constants.
#[derive(Debug)]
pub struct LinGeReif {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
lb: IntCst,
r: BVar,
}

impl LinGeReif {
pub fn new(sum: Vec<NFLinearSumItem>, lb: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, lb: IntCst, r: BVar) -> Self {
Self { sum, lb, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_le.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::linear::NFLinearLeq;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;
use aries::reif::ReifExpr;

use crate::aries::Post;
Expand All @@ -13,16 +13,16 @@ use crate::aries::Post;
/// where `v[i]` are variables, `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinLe {
items: Vec<NFLinearSumItem>,
items: Vec<ScaledVar>,
ub: IntCst,
}

impl LinLe {
pub fn new(items: Vec<NFLinearSumItem>, ub: IntCst) -> Self {
pub fn new(items: Vec<ScaledVar>, ub: IntCst) -> Self {
Self { items, ub }
}

pub fn items(&self) -> &Vec<NFLinearSumItem> {
pub fn items(&self) -> &Vec<ScaledVar> {
&self.items
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_le_half.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use aries::model::lang::BVar;
use aries::model::lang::IVar;
use aries::model::lang::linear::LinearSum;
use aries::model::lang::linear::LinearTerm;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;

Expand All @@ -17,17 +17,17 @@ use crate::aries::Post;
/// `ub` and `c[i]` constants.
#[derive(Debug)]
pub struct LinLeHalf {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
ub: IntCst,
r: BVar,
}

impl LinLeHalf {
pub fn new(sum: Vec<NFLinearSumItem>, ub: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, ub: IntCst, r: BVar) -> Self {
Self { sum, ub, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_le_reif.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinGeHalf;
Expand All @@ -17,17 +17,17 @@ use crate::aries::constraint::Ne;
/// `ub` and `c[i]` constants.
#[derive(Debug)]
pub struct LinLeReif {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
ub: IntCst,
r: BVar,
}

impl LinLeReif {
pub fn new(sum: Vec<NFLinearSumItem>, ub: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, ub: IntCst, r: BVar) -> Self {
Self { sum, ub, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_ne.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use aries::model::Model;
use aries::model::lang::IVar;
use aries::model::lang::linear::LinearSum;
use aries::model::lang::linear::LinearTerm;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;

Expand All @@ -14,16 +14,16 @@ use crate::aries::Post;
/// where `v[i]` are variables, `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinNe {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
b: IntCst,
}

impl LinNe {
pub fn new(sum: Vec<NFLinearSumItem>, b: IntCst) -> Self {
pub fn new(sum: Vec<ScaledVar>, b: IntCst) -> Self {
Self { sum, b }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
8 changes: 4 additions & 4 deletions aries_fzn/src/aries/constraint/lin_ne_reif.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use aries::core::IntCst;
use aries::model::Label;
use aries::model::Model;
use aries::model::lang::BVar;
use aries::model::lang::linear::NFLinearSumItem;
use aries::model::lang::linear::ScaledVar;

use crate::aries::Post;
use crate::aries::constraint::LinGeReif;
Expand All @@ -17,17 +17,17 @@ use crate::aries::constraint::OrReif;
/// `b` and `c[i]` constants.
#[derive(Debug)]
pub struct LinNeReif {
sum: Vec<NFLinearSumItem>,
sum: Vec<ScaledVar>,
b: IntCst,
r: BVar,
}

impl LinNeReif {
pub fn new(sum: Vec<NFLinearSumItem>, b: IntCst, r: BVar) -> Self {
pub fn new(sum: Vec<ScaledVar>, b: IntCst, r: BVar) -> Self {
Self { sum, b, r }
}

pub fn sum(&self) -> &Vec<NFLinearSumItem> {
pub fn sum(&self) -> &Vec<ScaledVar> {
&self.sum
}

Expand Down
Loading
Loading