diff --git a/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc.rs b/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc.rs index 31088acc5b0615d0729a690f416a34bd01fc9045..62cc67ae559c84aaea3a7f074b831ae0e7d7a552 100644 --- a/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc.rs +++ b/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::bboolean::BBoolean; use btypes::binteger::BInteger; use btypes::brelation::BRelation; @@ -12,9 +14,9 @@ use btypes::btuple::BTuple; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum T1state { - T1_EN, - T1_CALC, - T1_SEND, + T1_EN, + T1_CALC, + T1_SEND, T1_WAIT } impl T1state { @@ -27,19 +29,19 @@ impl Default for T1state { } impl fmt::Display for T1state { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - T1state::T1_EN => write!(f, "T1_EN"), - T1state::T1_CALC => write!(f, "T1_CALC"), - T1state::T1_SEND => write!(f, "T1_SEND"), - T1state::T1_WAIT => write!(f, "T1_WAIT"), - } + match *self { + T1state::T1_EN => write!(f, "T1_EN"), + T1state::T1_CALC => write!(f, "T1_CALC"), + T1state::T1_SEND => write!(f, "T1_SEND"), + T1state::T1_WAIT => write!(f, "T1_WAIT"), + } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum T2mode { - T2MODE_SENSE, - T2MODE_TRANSMIT, + T2MODE_SENSE, + T2MODE_TRANSMIT, T2MODE_RELEASE } impl T2mode { @@ -52,22 +54,22 @@ impl Default for T2mode { } impl fmt::Display for T2mode { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - T2mode::T2MODE_SENSE => write!(f, "T2MODE_SENSE"), - T2mode::T2MODE_TRANSMIT => write!(f, "T2MODE_TRANSMIT"), - T2mode::T2MODE_RELEASE => write!(f, "T2MODE_RELEASE"), - } + match *self { + T2mode::T2MODE_SENSE => write!(f, "T2MODE_SENSE"), + T2mode::T2MODE_TRANSMIT => write!(f, "T2MODE_TRANSMIT"), + T2mode::T2MODE_RELEASE => write!(f, "T2MODE_RELEASE"), + } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum T2state { - T2_EN, - T2_RCV, - T2_PROC, - T2_CALC, - T2_SEND, - T2_WAIT, + T2_EN, + T2_RCV, + T2_PROC, + T2_CALC, + T2_SEND, + T2_WAIT, T2_RELEASE } impl T2state { @@ -80,25 +82,25 @@ impl Default for T2state { } impl fmt::Display for T2state { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - T2state::T2_EN => write!(f, "T2_EN"), - T2state::T2_RCV => write!(f, "T2_RCV"), - T2state::T2_PROC => write!(f, "T2_PROC"), - T2state::T2_CALC => write!(f, "T2_CALC"), - T2state::T2_SEND => write!(f, "T2_SEND"), - T2state::T2_WAIT => write!(f, "T2_WAIT"), - T2state::T2_RELEASE => write!(f, "T2_RELEASE"), - } + match *self { + T2state::T2_EN => write!(f, "T2_EN"), + T2state::T2_RCV => write!(f, "T2_RCV"), + T2state::T2_PROC => write!(f, "T2_PROC"), + T2state::T2_CALC => write!(f, "T2_CALC"), + T2state::T2_SEND => write!(f, "T2_SEND"), + T2state::T2_WAIT => write!(f, "T2_WAIT"), + T2state::T2_RELEASE => write!(f, "T2_RELEASE"), + } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum T3state { - T3_READY, - T3_WRITE, - T3_RELEASE, - T3_READ, - T3_PROC, + T3_READY, + T3_WRITE, + T3_RELEASE, + T3_READ, + T3_PROC, T3_WAIT } impl T3state { @@ -111,18 +113,18 @@ impl Default for T3state { } impl fmt::Display for T3state { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - T3state::T3_READY => write!(f, "T3_READY"), - T3state::T3_WRITE => write!(f, "T3_WRITE"), - T3state::T3_RELEASE => write!(f, "T3_RELEASE"), - T3state::T3_READ => write!(f, "T3_READ"), - T3state::T3_PROC => write!(f, "T3_PROC"), - T3state::T3_WAIT => write!(f, "T3_WAIT"), - } + match *self { + T3state::T3_READY => write!(f, "T3_READY"), + T3state::T3_WRITE => write!(f, "T3_WRITE"), + T3state::T3_RELEASE => write!(f, "T3_RELEASE"), + T3state::T3_READ => write!(f, "T3_READ"), + T3state::T3_PROC => write!(f, "T3_PROC"), + T3state::T3_WAIT => write!(f, "T3_WAIT"), + } } } -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct CAN_BUS_tlc { BUSpriority: BInteger, BUSvalue: BInteger, @@ -149,6 +151,32 @@ pub struct CAN_BUS_tlc { _T3state: BSet<T3state>, } +impl fmt::Display for CAN_BUS_tlc { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "CAN_BUS_tlc: (".to_owned(); + result += &format!("_get_BUSpriority: {}, ", self._get_BUSpriority()); + result += &format!("_get_BUSvalue: {}, ", self._get_BUSvalue()); + result += &format!("_get_BUSwrite: {}, ", self._get_BUSwrite()); + result += &format!("_get_T1_state: {}, ", self._get_T1_state()); + result += &format!("_get_T1_timer: {}, ", self._get_T1_timer()); + result += &format!("_get_T1_writevalue: {}, ", self._get_T1_writevalue()); + result += &format!("_get_T2_mode: {}, ", self._get_T2_mode()); + result += &format!("_get_T2_readpriority: {}, ", self._get_T2_readpriority()); + result += &format!("_get_T2_readvalue: {}, ", self._get_T2_readvalue()); + result += &format!("_get_T2_state: {}, ", self._get_T2_state()); + result += &format!("_get_T2_timer: {}, ", self._get_T2_timer()); + result += &format!("_get_T2_writevalue: {}, ", self._get_T2_writevalue()); + result += &format!("_get_T2v: {}, ", self._get_T2v()); + result += &format!("_get_T3_enabled: {}, ", self._get_T3_enabled()); + result += &format!("_get_T3_evaluated: {}, ", self._get_T3_evaluated()); + result += &format!("_get_T3_readpriority: {}, ", self._get_T3_readpriority()); + result += &format!("_get_T3_readvalue: {}, ", self._get_T3_readvalue()); + result += &format!("_get_T3_state: {}, ", self._get_T3_state()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl CAN_BUS_tlc { pub fn new() -> CAN_BUS_tlc { @@ -158,6 +186,11 @@ impl CAN_BUS_tlc { return m; } fn init(&mut self) { + self._T1state = BSet::new(vec![T1state::T1_EN, T1state::T1_CALC, T1state::T1_SEND, T1state::T1_WAIT]); + self._T2mode = BSet::new(vec![T2mode::T2MODE_SENSE, T2mode::T2MODE_TRANSMIT, T2mode::T2MODE_RELEASE]); + self._T2state = BSet::new(vec![T2state::T2_EN, T2state::T2_RCV, T2state::T2_PROC, T2state::T2_CALC, T2state::T2_SEND, T2state::T2_WAIT, T2state::T2_RELEASE]); + self._T3state = BSet::new(vec![T3state::T3_READY, T3state::T3_WRITE, T3state::T3_RELEASE, T3state::T3_READ, T3state::T3_PROC, T3state::T3_WAIT]); + self.NATSET = BSet::<BInteger>::interval(&BInteger::new(0), &BInteger::new(5)); self.T2v = BInteger::new(0); self.T3_evaluated = BBoolean::new(true); self.T3_enabled = BBoolean::new(true); @@ -176,215 +209,251 @@ impl CAN_BUS_tlc { self.BUSvalue = BInteger::new(0); self.BUSpriority = BInteger::new(0); self.T2_mode = T2mode::T2MODE_SENSE; - self._T1state = BSet::new(vec![T1state::T1_EN, T1state::T1_CALC, T1state::T1_SEND, T1state::T1_WAIT]); - self._T2mode = BSet::new(vec![T2mode::T2MODE_SENSE, T2mode::T2MODE_TRANSMIT, T2mode::T2MODE_RELEASE]); - self._T2state = BSet::new(vec![T2state::T2_EN, T2state::T2_RCV, T2state::T2_PROC, T2state::T2_CALC, T2state::T2_SEND, T2state::T2_WAIT, T2state::T2_RELEASE]); - self._T3state = BSet::new(vec![T3state::T3_READY, T3state::T3_WRITE, T3state::T3_RELEASE, T3state::T3_READ, T3state::T3_PROC, T3state::T3_WAIT]); - self.NATSET = BSet::<BInteger>::interval(&BInteger::new(0), &BInteger::new(5)); } - pub fn get_NATSET(&self) -> BSet<BInteger> { + pub fn _get_NATSET(&self) -> BSet<BInteger> { return self.NATSET.clone(); } - pub fn get_BUSpriority(&self) -> BInteger { + pub fn _get_BUSpriority(&self) -> BInteger { return self.BUSpriority.clone(); } - pub fn get_BUSvalue(&self) -> BInteger { + pub fn _get_BUSvalue(&self) -> BInteger { return self.BUSvalue.clone(); } - pub fn get_BUSwrite(&self) -> BRelation<BInteger, BInteger> { + pub fn _get_BUSwrite(&self) -> BRelation<BInteger, BInteger> { return self.BUSwrite.clone(); } - pub fn get_T1_state(&self) -> T1state { + pub fn _get_T1_state(&self) -> T1state { return self.T1_state.clone(); } - pub fn get_T1_timer(&self) -> BInteger { + pub fn _get_T1_timer(&self) -> BInteger { return self.T1_timer.clone(); } - pub fn get_T1_writevalue(&self) -> BInteger { + pub fn _get_T1_writevalue(&self) -> BInteger { return self.T1_writevalue.clone(); } - pub fn get_T2_mode(&self) -> T2mode { + pub fn _get_T2_mode(&self) -> T2mode { return self.T2_mode.clone(); } - pub fn get_T2_readpriority(&self) -> BInteger { + pub fn _get_T2_readpriority(&self) -> BInteger { return self.T2_readpriority.clone(); } - pub fn get_T2_readvalue(&self) -> BInteger { + pub fn _get_T2_readvalue(&self) -> BInteger { return self.T2_readvalue.clone(); } - pub fn get_T2_state(&self) -> T2state { + pub fn _get_T2_state(&self) -> T2state { return self.T2_state.clone(); } - pub fn get_T2_timer(&self) -> BInteger { + pub fn _get_T2_timer(&self) -> BInteger { return self.T2_timer.clone(); } - pub fn get_T2_writevalue(&self) -> BInteger { + pub fn _get_T2_writevalue(&self) -> BInteger { return self.T2_writevalue.clone(); } - pub fn get_T2v(&self) -> BInteger { + pub fn _get_T2v(&self) -> BInteger { return self.T2v.clone(); } - pub fn get_T3_enabled(&self) -> BBoolean { + pub fn _get_T3_enabled(&self) -> BBoolean { return self.T3_enabled.clone(); } - pub fn get_T3_evaluated(&self) -> BBoolean { + pub fn _get_T3_evaluated(&self) -> BBoolean { return self.T3_evaluated.clone(); } - pub fn get_T3_readpriority(&self) -> BInteger { + pub fn _get_T3_readpriority(&self) -> BInteger { return self.T3_readpriority.clone(); } - pub fn get_T3_readvalue(&self) -> BInteger { + pub fn _get_T3_readvalue(&self) -> BInteger { return self.T3_readvalue.clone(); } - pub fn get_T3_state(&self) -> T3state { + pub fn _get_T3_state(&self) -> T3state { return self.T3_state.clone(); } - pub fn get__T1state(&self) -> BSet<T1state> { + pub fn _get__T1state(&self) -> BSet<T1state> { return self._T1state.clone(); } - pub fn get__T2mode(&self) -> BSet<T2mode> { + pub fn _get__T2mode(&self) -> BSet<T2mode> { return self._T2mode.clone(); } - pub fn get__T2state(&self) -> BSet<T2state> { + pub fn _get__T2state(&self) -> BSet<T2state> { return self._T2state.clone(); } - pub fn get__T3state(&self) -> BSet<T3state> { + pub fn _get__T3state(&self) -> BSet<T3state> { return self._T3state.clone(); } pub fn T1Evaluate(&mut self) -> () { + //pre_assert self.T1_timer = BInteger::new(0); self.T1_state = T1state::T1_CALC; + } pub fn T1Calculate(&mut self, mut p: BInteger) -> () { + //pre_assert self.T1_writevalue = p; self.T1_state = T1state::T1_SEND; + } pub fn T1SendResult(&mut self, mut ppriority: BInteger, mut pv: BInteger) -> () { + //pre_assert let mut _ld_BUSwrite = self.BUSwrite.clone(); self.BUSwrite = _ld_BUSwrite._override(&BRelation::new(vec![BTuple::from_refs(&ppriority, &pv)])).clone().clone(); self.T1_state = T1state::T1_WAIT; + } pub fn T1Wait(&mut self, mut pt: BInteger) -> () { + //pre_assert self.T1_timer = pt; self.T1_state = T1state::T1_EN; + } pub fn T2Evaluate(&mut self) -> () { + //pre_assert self.T2_timer = BInteger::new(0); self.T2_state = T2state::T2_RCV; + } pub fn T2ReadBus(&mut self, mut ppriority: BInteger, mut pv: BInteger) -> () { + //pre_assert self.T2_readvalue = pv; self.T2_readpriority = ppriority; self.T2_state = T2state::T2_PROC; + } pub fn T2Reset(&mut self) -> () { + //pre_assert let mut _ld_T2v = self.T2v.clone(); self.T2_writevalue = _ld_T2v; self.T2v = BInteger::new(0); self.T2_state = T2state::T2_SEND; self.T2_mode = T2mode::T2MODE_TRANSMIT; + } pub fn T2Complete(&mut self) -> () { + //pre_assert self.T2_state = T2state::T2_RELEASE; self.T2_mode = T2mode::T2MODE_SENSE; + } pub fn T2ReleaseBus(&mut self, mut ppriority: BInteger) -> () { + //pre_assert let mut _ld_BUSwrite = self.BUSwrite.clone(); - self.BUSwrite = _ld_BUSwrite.domainSubstraction(&BSet::new(vec![ppriority])).clone().clone(); + self.BUSwrite = _ld_BUSwrite.domainSubstraction(&BSet::new(vec![ppriority.clone()])).clone().clone(); self.T2_state = T2state::T2_WAIT; + } pub fn T2Calculate(&mut self) -> () { + //pre_assert self.T2v = self.T2_readvalue; self.T2_state = T2state::T2_WAIT; + } pub fn T2WriteBus(&mut self, mut ppriority: BInteger, mut pv: BInteger) -> () { + //pre_assert let mut _ld_BUSwrite = self.BUSwrite.clone(); self.BUSwrite = _ld_BUSwrite._override(&BRelation::new(vec![BTuple::from_refs(&ppriority, &pv)])).clone().clone(); self.T2_state = T2state::T2_WAIT; + } pub fn T2Wait(&mut self, mut pt: BInteger) -> () { + //pre_assert self.T2_timer = pt; self.T2_state = T2state::T2_EN; + } pub fn T3Initiate(&mut self) -> () { + //pre_assert self.T3_state = T3state::T3_WRITE; self.T3_enabled = BBoolean::new(false); + } pub fn T3Evaluate(&mut self) -> () { + //pre_assert self.T3_state = T3state::T3_READ; + } pub fn T3writebus(&mut self, mut ppriority: BInteger, mut pv: BInteger) -> () { + //pre_assert let mut _ld_BUSwrite = self.BUSwrite.clone(); self.BUSwrite = _ld_BUSwrite._override(&BRelation::new(vec![BTuple::from_refs(&ppriority, &pv)])).clone().clone(); self.T3_state = T3state::T3_WAIT; + } pub fn T3Read(&mut self, mut ppriority: BInteger, mut pv: BInteger) -> () { + //pre_assert self.T3_readvalue = pv; self.T3_readpriority = ppriority; self.T3_state = T3state::T3_PROC; + } pub fn T3Poll(&mut self) -> () { + //pre_assert self.T3_state = T3state::T3_WAIT; + } pub fn T3ReleaseBus(&mut self, mut ppriority: BInteger) -> () { + //pre_assert let mut _ld_BUSwrite = self.BUSwrite.clone(); - self.BUSwrite = _ld_BUSwrite.domainSubstraction(&BSet::new(vec![ppriority])).clone().clone(); + self.BUSwrite = _ld_BUSwrite.domainSubstraction(&BSet::new(vec![ppriority.clone()])).clone().clone(); self.T3_state = T3state::T3_RELEASE; + } pub fn T3Wait(&mut self) -> () { + //pre_assert self.T3_state = T3state::T3_READY; self.T3_evaluated = BBoolean::new(true); + } pub fn T3ReEnableWait(&mut self) -> () { + //pre_assert self.T3_state = T3state::T3_READY; self.T3_evaluated = BBoolean::new(true); self.T3_enabled = BBoolean::new(true); + } pub fn Update(&mut self, mut pmax: BInteger) -> () { + //pre_assert let mut _ld_T1_timer = self.T1_timer.clone(); let mut _ld_T2_timer = self.T2_timer.clone(); self.BUSvalue = self.BUSwrite.functionCall(&pmax); diff --git a/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc_exec.rs b/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc_exec.rs index 73c436304e506c64131b87c184dcb34df6055c20..71f62247e3b3fdcef740cf0f42f881e14b8177ab 100644 --- a/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc_exec.rs +++ b/benchmarks/execution/Rust_Primitives/CAN_BUS_tlc_exec.rs @@ -1,19 +1,30 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; mod CAN_BUS_tlc; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct CAN_BUS_tlc_exec { counter: BInteger, _CAN_BUS_tlc: CAN_BUS_tlc::CAN_BUS_tlc, } +impl fmt::Display for CAN_BUS_tlc_exec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "CAN_BUS_tlc_exec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl CAN_BUS_tlc_exec { pub fn new() -> CAN_BUS_tlc_exec { @@ -27,7 +38,7 @@ impl CAN_BUS_tlc_exec { self._CAN_BUS_tlc = CAN_BUS_tlc::CAN_BUS_tlc::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic.rs b/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic.rs index 339667893bf3354cf3780f6e44f9b8e492498a33..4a76b168d759289f4f904b6b3a5e4247a67f53f1 100644 --- a/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic.rs +++ b/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::bboolean::BBoolean; use btypes::binteger::BInteger; use btypes::bset::BSet; @@ -10,9 +12,9 @@ use btypes::bobject::BObject; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum RSset { - RSnone, - RSpos, - RSneg, + RSnone, + RSpos, + RSneg, RSequal } impl RSset { @@ -25,19 +27,19 @@ impl Default for RSset { } impl fmt::Display for RSset { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - RSset::RSnone => write!(f, "RSnone"), - RSset::RSpos => write!(f, "RSpos"), - RSset::RSneg => write!(f, "RSneg"), - RSset::RSequal => write!(f, "RSequal"), - } + match *self { + RSset::RSnone => write!(f, "RSnone"), + RSset::RSpos => write!(f, "RSpos"), + RSset::RSneg => write!(f, "RSneg"), + RSset::RSequal => write!(f, "RSequal"), + } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum ODset { - ODnone, - ODclose, + ODnone, + ODclose, ODveryclose } impl ODset { @@ -50,15 +52,15 @@ impl Default for ODset { } impl fmt::Display for ODset { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - ODset::ODnone => write!(f, "ODnone"), - ODset::ODclose => write!(f, "ODclose"), - ODset::ODveryclose => write!(f, "ODveryclose"), - } + match *self { + ODset::ODnone => write!(f, "ODnone"), + ODset::ODclose => write!(f, "ODclose"), + ODset::ODveryclose => write!(f, "ODveryclose"), + } } } -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Cruise_finite1_deterministic { CruiseAllowed: BBoolean, CruiseActive: BBoolean, @@ -79,6 +81,29 @@ pub struct Cruise_finite1_deterministic { _ODset: BSet<ODset>, } +impl fmt::Display for Cruise_finite1_deterministic { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Cruise_finite1_deterministic: (".to_owned(); + result += &format!("_get_CruiseAllowed: {}, ", self._get_CruiseAllowed()); + result += &format!("_get_CruiseActive: {}, ", self._get_CruiseActive()); + result += &format!("_get_VehicleAtCruiseSpeed: {}, ", self._get_VehicleAtCruiseSpeed()); + result += &format!("_get_VehicleCanKeepSpeed: {}, ", self._get_VehicleCanKeepSpeed()); + result += &format!("_get_VehicleTryKeepSpeed: {}, ", self._get_VehicleTryKeepSpeed()); + result += &format!("_get_SpeedAboveMax: {}, ", self._get_SpeedAboveMax()); + result += &format!("_get_VehicleTryKeepTimeGap: {}, ", self._get_VehicleTryKeepTimeGap()); + result += &format!("_get_CruiseSpeedAtMax: {}, ", self._get_CruiseSpeedAtMax()); + result += &format!("_get_ObstaclePresent: {}, ", self._get_ObstaclePresent()); + result += &format!("_get_ObstacleDistance: {}, ", self._get_ObstacleDistance()); + result += &format!("_get_ObstacleRelativeSpeed: {}, ", self._get_ObstacleRelativeSpeed()); + result += &format!("_get_ObstacleStatusJustChanged: {}, ", self._get_ObstacleStatusJustChanged()); + result += &format!("_get_CCInitialisationInProgress: {}, ", self._get_CCInitialisationInProgress()); + result += &format!("_get_CruiseSpeedChangeInProgress: {}, ", self._get_CruiseSpeedChangeInProgress()); + result += &format!("_get_NumberOfSetCruise: {}, ", self._get_NumberOfSetCruise()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Cruise_finite1_deterministic { pub fn new() -> Cruise_finite1_deterministic { @@ -88,6 +113,8 @@ impl Cruise_finite1_deterministic { return m; } fn init(&mut self) { + self._RSset = BSet::new(vec![RSset::RSnone, RSset::RSpos, RSset::RSneg, RSset::RSequal]); + self._ODset = BSet::new(vec![ODset::ODnone, ODset::ODclose, ODset::ODveryclose]); self.CruiseAllowed = BBoolean::new(false); self.CruiseActive = BBoolean::new(false); self.VehicleAtCruiseSpeed = BBoolean::new(false); @@ -103,75 +130,73 @@ impl Cruise_finite1_deterministic { self.CruiseSpeedChangeInProgress = BBoolean::new(false); self.ObstaclePresent = BBoolean::new(false); self.ObstacleRelativeSpeed = RSset::RSnone; - self._RSset = BSet::new(vec![RSset::RSnone, RSset::RSpos, RSset::RSneg, RSset::RSequal]); - self._ODset = BSet::new(vec![ODset::ODnone, ODset::ODclose, ODset::ODveryclose]); } - pub fn get_CruiseAllowed(&self) -> BBoolean { + pub fn _get_CruiseAllowed(&self) -> BBoolean { return self.CruiseAllowed.clone(); } - pub fn get_CruiseActive(&self) -> BBoolean { + pub fn _get_CruiseActive(&self) -> BBoolean { return self.CruiseActive.clone(); } - pub fn get_VehicleAtCruiseSpeed(&self) -> BBoolean { + pub fn _get_VehicleAtCruiseSpeed(&self) -> BBoolean { return self.VehicleAtCruiseSpeed.clone(); } - pub fn get_VehicleCanKeepSpeed(&self) -> BBoolean { + pub fn _get_VehicleCanKeepSpeed(&self) -> BBoolean { return self.VehicleCanKeepSpeed.clone(); } - pub fn get_VehicleTryKeepSpeed(&self) -> BBoolean { + pub fn _get_VehicleTryKeepSpeed(&self) -> BBoolean { return self.VehicleTryKeepSpeed.clone(); } - pub fn get_SpeedAboveMax(&self) -> BBoolean { + pub fn _get_SpeedAboveMax(&self) -> BBoolean { return self.SpeedAboveMax.clone(); } - pub fn get_VehicleTryKeepTimeGap(&self) -> BBoolean { + pub fn _get_VehicleTryKeepTimeGap(&self) -> BBoolean { return self.VehicleTryKeepTimeGap.clone(); } - pub fn get_CruiseSpeedAtMax(&self) -> BBoolean { + pub fn _get_CruiseSpeedAtMax(&self) -> BBoolean { return self.CruiseSpeedAtMax.clone(); } - pub fn get_ObstaclePresent(&self) -> BBoolean { + pub fn _get_ObstaclePresent(&self) -> BBoolean { return self.ObstaclePresent.clone(); } - pub fn get_ObstacleDistance(&self) -> ODset { + pub fn _get_ObstacleDistance(&self) -> ODset { return self.ObstacleDistance.clone(); } - pub fn get_ObstacleRelativeSpeed(&self) -> RSset { + pub fn _get_ObstacleRelativeSpeed(&self) -> RSset { return self.ObstacleRelativeSpeed.clone(); } - pub fn get_ObstacleStatusJustChanged(&self) -> BBoolean { + pub fn _get_ObstacleStatusJustChanged(&self) -> BBoolean { return self.ObstacleStatusJustChanged.clone(); } - pub fn get_CCInitialisationInProgress(&self) -> BBoolean { + pub fn _get_CCInitialisationInProgress(&self) -> BBoolean { return self.CCInitialisationInProgress.clone(); } - pub fn get_CruiseSpeedChangeInProgress(&self) -> BBoolean { + pub fn _get_CruiseSpeedChangeInProgress(&self) -> BBoolean { return self.CruiseSpeedChangeInProgress.clone(); } - pub fn get_NumberOfSetCruise(&self) -> BInteger { + pub fn _get_NumberOfSetCruise(&self) -> BInteger { return self.NumberOfSetCruise.clone(); } - pub fn get__RSset(&self) -> BSet<RSset> { + pub fn _get__RSset(&self) -> BSet<RSset> { return self._RSset.clone(); } - pub fn get__ODset(&self) -> BSet<ODset> { + pub fn _get__ODset(&self) -> BSet<ODset> { return self._ODset.clone(); } @@ -203,6 +228,7 @@ impl Cruise_finite1_deterministic { } pub fn SetCruiseSpeed(&mut self, mut vcks: BBoolean, mut csam: BBoolean) -> () { + //pre_assert if (self.CruiseAllowed.equal(&BBoolean::new(true))).booleanValue() { let mut _ld_NumberOfSetCruise = self.NumberOfSetCruise.clone(); let mut _ld_CruiseActive = self.CruiseActive.clone(); @@ -222,23 +248,26 @@ impl Cruise_finite1_deterministic { } if (_ld_NumberOfSetCruise.less(&BInteger::new(1))).booleanValue() { self.NumberOfSetCruise = _ld_NumberOfSetCruise.plus(&BInteger::new(1)); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } + } pub fn CCInitialisationFinished(&mut self, mut vtks: BBoolean, mut vtktg: BBoolean) -> () { + //pre_assert if (self.CCInitialisationInProgress.equal(&BBoolean::new(true))).booleanValue() { self.VehicleTryKeepTimeGap = vtktg; self.VehicleTryKeepSpeed = vtks; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } + } pub fn CCInitialisationDelayFinished(&mut self) -> () { - if (self.CCInitialisationInProgress.equal(&BBoolean::new(true)).and(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).or(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))).or(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))).or(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODnone).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true))))).booleanValue() { + if ((((((self.CCInitialisationInProgress.equal(&BBoolean::new(true)) && (((self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)) || self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))) || self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))) || self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))) && self.ObstacleDistance.equal(&ODset::ODnone).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue()))).booleanValue() { self.CCInitialisationInProgress = BBoolean::new(true); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -246,7 +275,7 @@ impl Cruise_finite1_deterministic { } pub fn CruiseSpeedChangeFinished(&mut self, mut vtks: BBoolean, mut vtktg: BBoolean) -> () { - if (butils::BOOL.elementOf(&vtks).and(&butils::BOOL.elementOf(&vtktg)).and(&vtks.equal(&BBoolean::new(true)).or(&vtktg.equal(&BBoolean::new(true))).or(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))).or(&self.CCInitialisationInProgress.equal(&BBoolean::new(true)))).and(&self.ObstaclePresent.equal(&BBoolean::new(false)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleDistance.equal(&ODset::ODnone).implies(&vtks.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&vtktg.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&vtktg.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&vtks.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSequal).and(&self.ObstacleDistance.equal(&ODset::ODnone)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSneg).and(&self.ObstacleDistance.equal(&ODset::ODnone)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).implies(&vtktg.equal(&BBoolean::new(false))))).booleanValue() { + if ((((((((((((*butils::BOOL).elementOf(&vtks) && (*butils::BOOL).elementOf(&vtktg)) && (((vtks.equal(&BBoolean::new(true)) || vtktg.equal(&BBoolean::new(true))) || self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))) || self.CCInitialisationInProgress.equal(&BBoolean::new(true)))) && self.ObstaclePresent.equal(&BBoolean::new(false)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && self.ObstacleDistance.equal(&ODset::ODnone).implies(|| vtks.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| vtktg.equal(&BBoolean::new(true)).booleanValue())) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| vtktg.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| vtks.equal(&BBoolean::new(true)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSequal) && self.ObstacleDistance.equal(&ODset::ODnone)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSneg) && self.ObstacleDistance.equal(&ODset::ODnone)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue()))).booleanValue() { if (self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true))).booleanValue() { self.VehicleTryKeepTimeGap = vtktg; self.VehicleTryKeepSpeed = vtks; @@ -259,7 +288,7 @@ impl Cruise_finite1_deterministic { } pub fn CruiseSpeedChangeDelayFinished(&mut self) -> () { - if (self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)).and(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).or(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))).or(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))).or(&self.CCInitialisationInProgress.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODnone).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).and(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true))))).booleanValue() { + if ((((((self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)) && (((self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)) || self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))) || self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))) || self.CCInitialisationInProgress.equal(&BBoolean::new(true)))) && self.ObstacleDistance.equal(&ODset::ODnone).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)) && self.ObstacleStatusJustChanged.equal(&BBoolean::new(false))) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue()))).booleanValue() { self.CruiseSpeedChangeInProgress = BBoolean::new(true); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -293,7 +322,7 @@ impl Cruise_finite1_deterministic { } pub fn ExternalForcesBecomesNormal(&mut self) -> () { - if (self.CruiseActive.equal(&BBoolean::new(true)).and(&self.VehicleCanKeepSpeed.equal(&BBoolean::new(false)))).booleanValue() { + if ((self.CruiseActive.equal(&BBoolean::new(true)) && self.VehicleCanKeepSpeed.equal(&BBoolean::new(false)))).booleanValue() { self.VehicleCanKeepSpeed = BBoolean::new(true); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -301,7 +330,7 @@ impl Cruise_finite1_deterministic { } pub fn VehicleLeavesCruiseSpeed(&mut self) -> () { - if (self.VehicleAtCruiseSpeed.equal(&BBoolean::new(true)).and(&self.VehicleCanKeepSpeed.equal(&BBoolean::new(false)).and(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)))).or(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(false)))).booleanValue() { + if (((self.VehicleAtCruiseSpeed.equal(&BBoolean::new(true)) && (self.VehicleCanKeepSpeed.equal(&BBoolean::new(false)) && self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)))) || self.VehicleTryKeepSpeed.equal(&BBoolean::new(false)))).booleanValue() { self.VehicleAtCruiseSpeed = BBoolean::new(false); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -309,7 +338,7 @@ impl Cruise_finite1_deterministic { } pub fn VehicleReachesCruiseSpeed(&mut self) -> () { - if (self.CruiseActive.equal(&BBoolean::new(true)).and(&self.VehicleAtCruiseSpeed.equal(&BBoolean::new(false))).and(&self.SpeedAboveMax.equal(&BBoolean::new(false)))).booleanValue() { + if (((self.CruiseActive.equal(&BBoolean::new(true)) && self.VehicleAtCruiseSpeed.equal(&BBoolean::new(false))) && self.SpeedAboveMax.equal(&BBoolean::new(false)))).booleanValue() { self.VehicleAtCruiseSpeed = BBoolean::new(true); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -317,7 +346,7 @@ impl Cruise_finite1_deterministic { } pub fn VehicleExceedsMaxCruiseSpeed(&mut self) -> () { - if (self.SpeedAboveMax.equal(&BBoolean::new(false)).and(&self.CruiseActive.equal(&BBoolean::new(false)).or(&self.VehicleCanKeepSpeed.equal(&BBoolean::new(false))).or(&self.ObstacleStatusJustChanged.equal(&BBoolean::new(false)).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).not()))).booleanValue() { + if ((self.SpeedAboveMax.equal(&BBoolean::new(false)) && ((self.CruiseActive.equal(&BBoolean::new(false)) || self.VehicleCanKeepSpeed.equal(&BBoolean::new(false))) || ((self.ObstacleStatusJustChanged.equal(&BBoolean::new(false)) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).not()))).booleanValue() { self.SpeedAboveMax = BBoolean::new(true); self.VehicleAtCruiseSpeed = BBoolean::new(false); } else { @@ -328,16 +357,16 @@ impl Cruise_finite1_deterministic { pub fn VehicleFallsBelowMaxCruiseSpeed(&mut self) -> () { if (self.SpeedAboveMax.equal(&BBoolean::new(true))).booleanValue() { self.SpeedAboveMax = BBoolean::new(false); - if (self.CruiseActive.equal(&BBoolean::new(true)).and(&self.CruiseSpeedAtMax.equal(&BBoolean::new(true)))).booleanValue() { + if ((self.CruiseActive.equal(&BBoolean::new(true)) && self.CruiseSpeedAtMax.equal(&BBoolean::new(true)))).booleanValue() { self.VehicleAtCruiseSpeed = BBoolean::new(true); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } } pub fn ObstacleDistanceBecomesVeryClose(&mut self) -> () { - if (self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSneg))).booleanValue() { + if ((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.equal(&RSset::RSneg))).booleanValue() { self.ObstacleDistance = ODset::ODveryclose; self.ObstacleStatusJustChanged = BBoolean::new(true); } else { @@ -346,19 +375,19 @@ impl Cruise_finite1_deterministic { } pub fn ObstacleDistanceBecomesClose(&mut self) -> () { - if (self.ObstaclePresent.equal(&BBoolean::new(true)).and(&self.CruiseActive.equal(&BBoolean::new(true))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos)).or(&self.ObstacleDistance.equal(&ODset::ODnone).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSneg))))).booleanValue() { + if (((self.ObstaclePresent.equal(&BBoolean::new(true)) && self.CruiseActive.equal(&BBoolean::new(true))) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.ObstacleRelativeSpeed.equal(&RSset::RSpos)) || (self.ObstacleDistance.equal(&ODset::ODnone) && self.ObstacleRelativeSpeed.equal(&RSset::RSneg))))).booleanValue() { self.ObstacleDistance = ODset::ODclose; self.ObstacleStatusJustChanged = BBoolean::new(true); if (self.ObstacleRelativeSpeed.equal(&RSset::RSpos)).booleanValue() { self.VehicleTryKeepTimeGap = BBoolean::new(false); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } } pub fn ObstacleDistanceBecomesBig(&mut self) -> () { - if (self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos))).booleanValue() { + if ((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.equal(&RSset::RSpos))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); self.ObstacleDistance = ODset::ODnone; self.VehicleTryKeepTimeGap = BBoolean::new(false); @@ -368,14 +397,14 @@ impl Cruise_finite1_deterministic { } pub fn ObstacleStartsTravelFaster(&mut self) -> () { - if (self.ObstaclePresent.equal(&BBoolean::new(true)).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSequal))).booleanValue() { + if ((self.ObstaclePresent.equal(&BBoolean::new(true)) && self.ObstacleRelativeSpeed.equal(&RSset::RSequal))).booleanValue() { self.ObstacleRelativeSpeed = RSset::RSpos; if (self.CruiseActive.equal(&BBoolean::new(true))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); - } + } if (self.ObstacleDistance.unequal(&ODset::ODveryclose)).booleanValue() { self.VehicleTryKeepTimeGap = BBoolean::new(false); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } @@ -386,7 +415,7 @@ impl Cruise_finite1_deterministic { self.ObstacleRelativeSpeed = RSset::RSequal; if (self.CruiseActive.equal(&BBoolean::new(true))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } @@ -397,7 +426,7 @@ impl Cruise_finite1_deterministic { self.ObstacleRelativeSpeed = RSset::RSneg; if (self.CruiseActive.equal(&BBoolean::new(true))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } @@ -408,14 +437,15 @@ impl Cruise_finite1_deterministic { self.ObstacleRelativeSpeed = RSset::RSequal; if (self.CruiseActive.equal(&BBoolean::new(true))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); - } + } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } } pub fn ObstacleAppearsWhenCruiseActive(&mut self, mut ors: RSset, mut od: ODset) -> () { - if (self.ObstaclePresent.equal(&BBoolean::new(false)).and(&self.CruiseActive.equal(&BBoolean::new(true)))).booleanValue() { + //pre_assert + if ((self.ObstaclePresent.equal(&BBoolean::new(false)) && self.CruiseActive.equal(&BBoolean::new(true)))).booleanValue() { self.ObstaclePresent = BBoolean::new(true); self.ObstacleStatusJustChanged = BBoolean::new(true); self.ObstacleRelativeSpeed = ors; @@ -426,7 +456,8 @@ impl Cruise_finite1_deterministic { } pub fn ObstacleAppearsWhenCruiseInactive(&mut self, mut ors: RSset) -> () { - if (self.ObstaclePresent.equal(&BBoolean::new(false)).and(&self.CruiseActive.equal(&BBoolean::new(false)))).booleanValue() { + //pre_assert + if ((self.ObstaclePresent.equal(&BBoolean::new(false)) && self.CruiseActive.equal(&BBoolean::new(false)))).booleanValue() { self.ObstaclePresent = BBoolean::new(true); self.ObstacleRelativeSpeed = ors; self.ObstacleDistance = ODset::ODnone; @@ -441,7 +472,7 @@ impl Cruise_finite1_deterministic { self.ObstacleRelativeSpeed = RSset::RSnone; if (self.CruiseActive.equal(&BBoolean::new(true))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(true); - } + } self.ObstacleDistance = ODset::ODnone; self.VehicleTryKeepTimeGap = BBoolean::new(false); } else { @@ -450,7 +481,7 @@ impl Cruise_finite1_deterministic { } pub fn VehicleManageObstacle(&mut self, mut vtks: BBoolean, mut vtktg: BBoolean) -> () { - if (butils::BOOL.elementOf(&vtks).and(&butils::BOOL.elementOf(&vtktg)).and(&vtks.equal(&BBoolean::new(true)).or(&vtktg.equal(&BBoolean::new(true))).or(&self.CCInitialisationInProgress.equal(&BBoolean::new(true))).or(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))).and(&self.ObstaclePresent.equal(&BBoolean::new(false)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleDistance.equal(&ODset::ODnone).implies(&vtks.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&vtktg.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&vtktg.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&vtks.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSequal).and(&self.ObstacleDistance.equal(&ODset::ODnone)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSneg).and(&self.ObstacleDistance.equal(&ODset::ODnone)).implies(&vtktg.equal(&BBoolean::new(false)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).implies(&vtktg.equal(&BBoolean::new(false))))).booleanValue() { + if ((((((((((((*butils::BOOL).elementOf(&vtks) && (*butils::BOOL).elementOf(&vtktg)) && (((vtks.equal(&BBoolean::new(true)) || vtktg.equal(&BBoolean::new(true))) || self.CCInitialisationInProgress.equal(&BBoolean::new(true))) || self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))) && self.ObstaclePresent.equal(&BBoolean::new(false)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && self.ObstacleDistance.equal(&ODset::ODnone).implies(|| vtks.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| vtktg.equal(&BBoolean::new(true)).booleanValue())) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| vtktg.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| vtks.equal(&BBoolean::new(true)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSequal) && self.ObstacleDistance.equal(&ODset::ODnone)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSneg) && self.ObstacleDistance.equal(&ODset::ODnone)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue())) && (self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)).implies(|| vtktg.equal(&BBoolean::new(false)).booleanValue()))).booleanValue() { if (self.ObstacleStatusJustChanged.equal(&BBoolean::new(true))).booleanValue() { self.VehicleTryKeepTimeGap = vtktg; self.VehicleTryKeepSpeed = vtks; @@ -463,7 +494,7 @@ impl Cruise_finite1_deterministic { } pub fn ObstacleBecomesOld(&mut self) -> () { - if (self.ObstacleStatusJustChanged.equal(&BBoolean::new(true)).and(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).or(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))).or(&self.CCInitialisationInProgress.equal(&BBoolean::new(true))).or(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODnone).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODclose).and(&self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleDistance.equal(&ODset::ODveryclose).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)))).and(&self.ObstacleRelativeSpeed.equal(&RSset::RSpos).and(&self.ObstacleDistance.unequal(&ODset::ODveryclose)).and(&self.CCInitialisationInProgress.equal(&BBoolean::new(false))).and(&self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(&self.VehicleTryKeepSpeed.equal(&BBoolean::new(true))))).booleanValue() { + if ((((((self.ObstacleStatusJustChanged.equal(&BBoolean::new(true)) && (((self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)) || self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true))) || self.CCInitialisationInProgress.equal(&BBoolean::new(true))) || self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(true)))) && self.ObstacleDistance.equal(&ODset::ODnone).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleDistance.equal(&ODset::ODclose) && self.ObstacleRelativeSpeed.unequal(&RSset::RSpos)) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && ((self.ObstacleDistance.equal(&ODset::ODveryclose) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepTimeGap.equal(&BBoolean::new(true)).booleanValue())) && (((self.ObstacleRelativeSpeed.equal(&RSset::RSpos) && self.ObstacleDistance.unequal(&ODset::ODveryclose)) && self.CCInitialisationInProgress.equal(&BBoolean::new(false))) && self.CruiseSpeedChangeInProgress.equal(&BBoolean::new(false))).implies(|| self.VehicleTryKeepSpeed.equal(&BBoolean::new(true)).booleanValue()))).booleanValue() { self.ObstacleStatusJustChanged = BBoolean::new(false); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); diff --git a/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic_exec.rs b/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic_exec.rs index 12ca1fe5b0387f03203be95113ae0b1b2c1c5f93..acae0bf504e16f67b38b3b7444c4ed05bdeb094a 100644 --- a/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic_exec.rs +++ b/benchmarks/execution/Rust_Primitives/Cruise_finite1_deterministic_exec.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; use btypes::bobject::BObject; @@ -9,12 +11,21 @@ mod Cruise_finite1_deterministic; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Cruise_finite1_deterministic_exec { counter: BInteger, _Cruise_finite1_deterministic: Cruise_finite1_deterministic::Cruise_finite1_deterministic, } +impl fmt::Display for Cruise_finite1_deterministic_exec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Cruise_finite1_deterministic_exec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Cruise_finite1_deterministic_exec { pub fn new() -> Cruise_finite1_deterministic_exec { @@ -28,7 +39,7 @@ impl Cruise_finite1_deterministic_exec { self._Cruise_finite1_deterministic = Cruise_finite1_deterministic::Cruise_finite1_deterministic::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/Lift.rs b/benchmarks/execution/Rust_Primitives/Lift.rs index d8971ceb5ef8627dad6f7c9d22322e6e8bdcfef9..67cc96450ad6aeeba7c858a1bf0f1dcbfe387866 100644 --- a/benchmarks/execution/Rust_Primitives/Lift.rs +++ b/benchmarks/execution/Rust_Primitives/Lift.rs @@ -1,16 +1,28 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; +use btypes::bboolean::BBoolean; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Lift { floor: BInteger, } +impl fmt::Display for Lift { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Lift: (".to_owned(); + result += &format!("_get_floor: {}, ", self._get_floor()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Lift { pub fn new() -> Lift { @@ -23,16 +35,21 @@ impl Lift { self.floor = BInteger::new(0); } - pub fn get_floor(&self) -> BInteger { + pub fn _get_floor(&self) -> BInteger { return self.floor.clone(); } pub fn inc(&mut self) -> () { + //pre_assert self.floor = self.floor.plus(&BInteger::new(1)); + } pub fn dec(&mut self) -> () { + //pre_assert self.floor = self.floor.minus(&BInteger::new(1)); + } } + diff --git a/benchmarks/execution/Rust_Primitives/LiftExec.rs b/benchmarks/execution/Rust_Primitives/LiftExec.rs index 0006c0f8ae6cac0e9414691bdeda25aa7e63cb4d..d74efb4a7edee631a6737f2b953d2b76f9d6bb56 100644 --- a/benchmarks/execution/Rust_Primitives/LiftExec.rs +++ b/benchmarks/execution/Rust_Primitives/LiftExec.rs @@ -1,19 +1,30 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; mod Lift; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct LiftExec { counter: BInteger, _Lift: Lift::Lift, } +impl fmt::Display for LiftExec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "LiftExec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl LiftExec { pub fn new() -> LiftExec { @@ -27,7 +38,7 @@ impl LiftExec { self._Lift = Lift::Lift::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/Makefile b/benchmarks/execution/Rust_Primitives/Makefile index cae4c35665d0404a62edd8c5fd42b20cbbbb2b3b..8b76abf51080d10e494182b526b63e93bd158a18 100644 --- a/benchmarks/execution/Rust_Primitives/Makefile +++ b/benchmarks/execution/Rust_Primitives/Makefile @@ -6,7 +6,7 @@ all: CAN_BUS_tlc_exec Cruise_finite1_deterministic_exec LiftExec scheduler_deter OUTPUT ?= runtimes.txt -CARGO_PROJ_PATH=../../btypes_primitives/src/main/rust/bmachine +CARGO_PROJ_PATH=../../../btypes_primitives/src/main/rust/bmachine CARGO_BUILD=cargo build --release --manifest-path $(CARGO_PROJ_PATH)/Cargo.toml %.main : %.rs @@ -21,6 +21,10 @@ CARGO_BUILD=cargo build --release --manifest-path $(CARGO_PROJ_PATH)/Cargo.toml % : clean %.cp $(CARGO_BUILD) /usr/bin/time -f "$(*) %E %M" -ao $(OUTPUT) $(CARGO_PROJ_PATH)/target/release/bmachine + /usr/bin/time -f "$(*) %E %M" -ao $(OUTPUT) $(CARGO_PROJ_PATH)/target/release/bmachine + /usr/bin/time -f "$(*) %E %M" -ao $(OUTPUT) $(CARGO_PROJ_PATH)/target/release/bmachine + /usr/bin/time -f "$(*) %E %M" -ao $(OUTPUT) $(CARGO_PROJ_PATH)/target/release/bmachine + /usr/bin/time -f "$(*) %E %M" -ao $(OUTPUT) $(CARGO_PROJ_PATH)/target/release/bmachine clean: rm -f $(CARGO_PROJ_PATH)/src/*.rs \ No newline at end of file diff --git a/benchmarks/execution/Rust_Primitives/Sieve.rs b/benchmarks/execution/Rust_Primitives/Sieve.rs index c5fb680740a2d6999ccbc3c8bbb896db7e400433..e6ca8dfd0a77bba9f7cfed70fc87a4cfff43ad32 100644 --- a/benchmarks/execution/Rust_Primitives/Sieve.rs +++ b/benchmarks/execution/Rust_Primitives/Sieve.rs @@ -1,20 +1,33 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; use btypes::bset::BSet; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Sieve { numbers: BSet<BInteger>, cur: BInteger, limit: BInteger, } +impl fmt::Display for Sieve { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Sieve: (".to_owned(); + result += &format!("_get_numbers: {}, ", self._get_numbers()); + result += &format!("_get_cur: {}, ", self._get_cur()); + result += &format!("_get_limit: {}, ", self._get_limit()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Sieve { pub fn new() -> Sieve { @@ -29,32 +42,32 @@ impl Sieve { self.limit = BInteger::new(2000000); } - pub fn get_numbers(&self) -> BSet<BInteger> { + pub fn _get_numbers(&self) -> BSet<BInteger> { return self.numbers.clone(); } - pub fn get_cur(&self) -> BInteger { + pub fn _get_cur(&self) -> BInteger { return self.cur.clone(); } - pub fn get_limit(&self) -> BInteger { + pub fn _get_limit(&self) -> BInteger { return self.limit.clone(); } pub fn ComputeNumberOfPrimes(&mut self) -> BInteger { let mut res: Option<BInteger> = Option::None; - while (self.cur.greater(&BInteger::new(1)).and(&self.cur.multiply(&self.cur).lessEqual(&self.limit))).booleanValue() { + while ((self.cur.greater(&BInteger::new(1)) && self.cur.multiply(&self.cur).lessEqual(&self.limit))).booleanValue() { if (self.numbers.elementOf(&self.cur)).booleanValue() { let mut n: Option<BInteger> = Option::None; let mut set: Option<BSet<BInteger>> = Option::None; n = Option::Some(self.cur); - set = Option::Some(BSet::new(vec![]).clone()).clone(); + set = Option::Some(BSet::<BInteger>::new(vec![]).clone()).clone(); while (n.unwrap().lessEqual(&self.limit.divide(&self.cur))).booleanValue() { - set = Option::Some(set.unwrap()._union(&BSet::new(vec![self.cur.multiply(&n.unwrap())])).clone()).clone(); + set = Option::Some(set.unwrap()._union(&BSet::new(vec![self.cur.multiply(&n.unwrap()).clone()])).clone()).clone(); n = Option::Some(n.unwrap().plus(&BInteger::new(1))); } self.numbers = self.numbers.difference(&set.unwrap()).clone().clone(); - } + } self.cur = self.cur.plus(&BInteger::new(1)); } res = Option::Some(self.numbers.card()); diff --git a/benchmarks/execution/Rust_Primitives/TrafficLight.rs b/benchmarks/execution/Rust_Primitives/TrafficLight.rs index 16221c23f968b270c70cf80ae83051cdd1b7f8a8..824ce24811cd9678eecbf28ac865f64317c57f8c 100644 --- a/benchmarks/execution/Rust_Primitives/TrafficLight.rs +++ b/benchmarks/execution/Rust_Primitives/TrafficLight.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::bboolean::BBoolean; use btypes::bset::BSet; use btypes::bobject::BObject; @@ -9,9 +11,9 @@ use btypes::bobject::BObject; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum colors { - red, - redyellow, - yellow, + red, + redyellow, + yellow, green } impl colors { @@ -24,22 +26,32 @@ impl Default for colors { } impl fmt::Display for colors { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - colors::red => write!(f, "red"), - colors::redyellow => write!(f, "redyellow"), - colors::yellow => write!(f, "yellow"), - colors::green => write!(f, "green"), - } + match *self { + colors::red => write!(f, "red"), + colors::redyellow => write!(f, "redyellow"), + colors::yellow => write!(f, "yellow"), + colors::green => write!(f, "green"), + } } } -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct TrafficLight { tl_cars: colors, tl_peds: colors, _colors: BSet<colors>, } +impl fmt::Display for TrafficLight { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "TrafficLight: (".to_owned(); + result += &format!("_get_tl_cars: {}, ", self._get_tl_cars()); + result += &format!("_get_tl_peds: {}, ", self._get_tl_peds()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl TrafficLight { pub fn new() -> TrafficLight { @@ -49,25 +61,25 @@ impl TrafficLight { return m; } fn init(&mut self) { + self._colors = BSet::new(vec![colors::red, colors::redyellow, colors::yellow, colors::green]); self.tl_cars = colors::red; self.tl_peds = colors::red; - self._colors = BSet::new(vec![colors::red, colors::redyellow, colors::yellow, colors::green]); } - pub fn get_tl_cars(&self) -> colors { + pub fn _get_tl_cars(&self) -> colors { return self.tl_cars.clone(); } - pub fn get_tl_peds(&self) -> colors { + pub fn _get_tl_peds(&self) -> colors { return self.tl_peds.clone(); } - pub fn get__colors(&self) -> BSet<colors> { + pub fn _get__colors(&self) -> BSet<colors> { return self._colors.clone(); } pub fn cars_ry(&mut self) -> () { - if (self.tl_cars.equal(&colors::red).and(&self.tl_peds.equal(&colors::red))).booleanValue() { + if ((self.tl_cars.equal(&colors::red) && self.tl_peds.equal(&colors::red))).booleanValue() { self.tl_cars = colors::redyellow; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -75,7 +87,7 @@ impl TrafficLight { } pub fn cars_y(&mut self) -> () { - if (self.tl_cars.equal(&colors::green).and(&self.tl_peds.equal(&colors::red))).booleanValue() { + if ((self.tl_cars.equal(&colors::green) && self.tl_peds.equal(&colors::red))).booleanValue() { self.tl_cars = colors::yellow; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -83,7 +95,7 @@ impl TrafficLight { } pub fn cars_g(&mut self) -> () { - if (self.tl_cars.equal(&colors::redyellow).and(&self.tl_peds.equal(&colors::red))).booleanValue() { + if ((self.tl_cars.equal(&colors::redyellow) && self.tl_peds.equal(&colors::red))).booleanValue() { self.tl_cars = colors::green; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -91,7 +103,7 @@ impl TrafficLight { } pub fn cars_r(&mut self) -> () { - if (self.tl_cars.equal(&colors::yellow).and(&self.tl_peds.equal(&colors::red))).booleanValue() { + if ((self.tl_cars.equal(&colors::yellow) && self.tl_peds.equal(&colors::red))).booleanValue() { self.tl_cars = colors::red; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -99,7 +111,7 @@ impl TrafficLight { } pub fn peds_r(&mut self) -> () { - if (self.tl_peds.equal(&colors::green).and(&self.tl_cars.equal(&colors::red))).booleanValue() { + if ((self.tl_peds.equal(&colors::green) && self.tl_cars.equal(&colors::red))).booleanValue() { self.tl_peds = colors::red; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -107,7 +119,7 @@ impl TrafficLight { } pub fn peds_g(&mut self) -> () { - if (self.tl_peds.equal(&colors::red).and(&self.tl_cars.equal(&colors::red))).booleanValue() { + if ((self.tl_peds.equal(&colors::red) && self.tl_cars.equal(&colors::red))).booleanValue() { self.tl_peds = colors::green; } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -115,3 +127,4 @@ impl TrafficLight { } } + diff --git a/benchmarks/execution/Rust_Primitives/TrafficLightExec.rs b/benchmarks/execution/Rust_Primitives/TrafficLightExec.rs index 12771e03e72a7c4334a171249f7ebbc261cceedf..cce369309e770f1e9c0e4d0da217741c07579b6d 100644 --- a/benchmarks/execution/Rust_Primitives/TrafficLightExec.rs +++ b/benchmarks/execution/Rust_Primitives/TrafficLightExec.rs @@ -1,19 +1,30 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; mod TrafficLight; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct TrafficLightExec { counter: BInteger, _TrafficLight: TrafficLight::TrafficLight, } +impl fmt::Display for TrafficLightExec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "TrafficLightExec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl TrafficLightExec { pub fn new() -> TrafficLightExec { @@ -27,7 +38,7 @@ impl TrafficLightExec { self._TrafficLight = TrafficLight::TrafficLight::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic.rs b/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic.rs index 56f4f48ee4c80c3ec062f1952e3d971d5d20e4af..a7916cbfec373d35e8e863683efa3b250a1a51bd 100644 --- a/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic.rs +++ b/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::bboolean::BBoolean; use btypes::brelation::BRelation; use btypes::bset::BSet; @@ -11,19 +13,19 @@ use btypes::btuple::BTuple; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum BLOCKS { - A, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, + A, + B, + C, + D, + E, + F, + G, + H, + I, + J, + K, + L, + M, N } impl BLOCKS { @@ -36,36 +38,36 @@ impl Default for BLOCKS { } impl fmt::Display for BLOCKS { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - BLOCKS::A => write!(f, "A"), - BLOCKS::B => write!(f, "B"), - BLOCKS::C => write!(f, "C"), - BLOCKS::D => write!(f, "D"), - BLOCKS::E => write!(f, "E"), - BLOCKS::F => write!(f, "F"), - BLOCKS::G => write!(f, "G"), - BLOCKS::H => write!(f, "H"), - BLOCKS::I => write!(f, "I"), - BLOCKS::J => write!(f, "J"), - BLOCKS::K => write!(f, "K"), - BLOCKS::L => write!(f, "L"), - BLOCKS::M => write!(f, "M"), - BLOCKS::N => write!(f, "N"), - } + match *self { + BLOCKS::A => write!(f, "A"), + BLOCKS::B => write!(f, "B"), + BLOCKS::C => write!(f, "C"), + BLOCKS::D => write!(f, "D"), + BLOCKS::E => write!(f, "E"), + BLOCKS::F => write!(f, "F"), + BLOCKS::G => write!(f, "G"), + BLOCKS::H => write!(f, "H"), + BLOCKS::I => write!(f, "I"), + BLOCKS::J => write!(f, "J"), + BLOCKS::K => write!(f, "K"), + BLOCKS::L => write!(f, "L"), + BLOCKS::M => write!(f, "M"), + BLOCKS::N => write!(f, "N"), + } } } #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum ROUTES { - R1, - R2, - R3, - R4, - R5, - R6, - R7, - R8, - R9, + R1, + R2, + R3, + R4, + R5, + R6, + R7, + R8, + R9, R10 } impl ROUTES { @@ -78,22 +80,22 @@ impl Default for ROUTES { } impl fmt::Display for ROUTES { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - ROUTES::R1 => write!(f, "R1"), - ROUTES::R2 => write!(f, "R2"), - ROUTES::R3 => write!(f, "R3"), - ROUTES::R4 => write!(f, "R4"), - ROUTES::R5 => write!(f, "R5"), - ROUTES::R6 => write!(f, "R6"), - ROUTES::R7 => write!(f, "R7"), - ROUTES::R8 => write!(f, "R8"), - ROUTES::R9 => write!(f, "R9"), - ROUTES::R10 => write!(f, "R10"), - } + match *self { + ROUTES::R1 => write!(f, "R1"), + ROUTES::R2 => write!(f, "R2"), + ROUTES::R3 => write!(f, "R3"), + ROUTES::R4 => write!(f, "R4"), + ROUTES::R5 => write!(f, "R5"), + ROUTES::R6 => write!(f, "R6"), + ROUTES::R7 => write!(f, "R7"), + ROUTES::R8 => write!(f, "R8"), + ROUTES::R9 => write!(f, "R9"), + ROUTES::R10 => write!(f, "R10"), + } } } -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Train_1_beebook_deterministic { LBT: BSet<BLOCKS>, TRK: BRelation<BLOCKS, BLOCKS>, @@ -110,6 +112,21 @@ pub struct Train_1_beebook_deterministic { _ROUTES: BSet<ROUTES>, } +impl fmt::Display for Train_1_beebook_deterministic { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Train_1_beebook_deterministic: (".to_owned(); + result += &format!("_get_LBT: {}, ", self._get_LBT()); + result += &format!("_get_TRK: {}, ", self._get_TRK()); + result += &format!("_get_frm: {}, ", self._get_frm()); + result += &format!("_get_OCC: {}, ", self._get_OCC()); + result += &format!("_get_resbl: {}, ", self._get_resbl()); + result += &format!("_get_resrt: {}, ", self._get_resrt()); + result += &format!("_get_rsrtbl: {}, ", self._get_rsrtbl()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Train_1_beebook_deterministic { pub fn new() -> Train_1_beebook_deterministic { @@ -119,137 +136,155 @@ impl Train_1_beebook_deterministic { return m; } fn init(&mut self) { - self.resrt = BSet::new(vec![]).clone().clone(); - self.resbl = BSet::new(vec![]).clone().clone(); - self.rsrtbl = BRelation::new(vec![]).clone().clone(); - self.OCC = BSet::new(vec![]).clone().clone(); - self.TRK = BRelation::new(vec![]).clone().clone(); - self.frm = BSet::new(vec![]).clone().clone(); - self.LBT = BSet::new(vec![]).clone().clone(); self._BLOCKS = BSet::new(vec![BLOCKS::A, BLOCKS::B, BLOCKS::C, BLOCKS::D, BLOCKS::E, BLOCKS::F, BLOCKS::G, BLOCKS::H, BLOCKS::I, BLOCKS::J, BLOCKS::K, BLOCKS::L, BLOCKS::M, BLOCKS::N]); self._ROUTES = BSet::new(vec![ROUTES::R1, ROUTES::R2, ROUTES::R3, ROUTES::R4, ROUTES::R5, ROUTES::R6, ROUTES::R7, ROUTES::R8, ROUTES::R9, ROUTES::R10]); + self.nxt = BRelation::new(vec![BTuple::from_refs(&ROUTES::R1, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::C)])), BTuple::from_refs(&ROUTES::R2, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::E), BTuple::from_refs(&BLOCKS::E, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::G)])), BTuple::from_refs(&ROUTES::R3, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::N)])), BTuple::from_refs(&ROUTES::R4, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::M, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::G)])), BTuple::from_refs(&ROUTES::R5, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::M, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::N)])), BTuple::from_refs(&ROUTES::R6, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::C, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R7, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::G, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::E), BTuple::from_refs(&BLOCKS::E, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R8, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::N, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R9, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::G, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::M)])), BTuple::from_refs(&ROUTES::R10, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::N, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::M)]))]); self.fst = BRelation::new(vec![BTuple::from_refs(&ROUTES::R1, &BLOCKS::L), BTuple::from_refs(&ROUTES::R2, &BLOCKS::L), BTuple::from_refs(&ROUTES::R3, &BLOCKS::L), BTuple::from_refs(&ROUTES::R4, &BLOCKS::M), BTuple::from_refs(&ROUTES::R5, &BLOCKS::M), BTuple::from_refs(&ROUTES::R6, &BLOCKS::C), BTuple::from_refs(&ROUTES::R7, &BLOCKS::G), BTuple::from_refs(&ROUTES::R8, &BLOCKS::N), BTuple::from_refs(&ROUTES::R9, &BLOCKS::G), BTuple::from_refs(&ROUTES::R10, &BLOCKS::N)]); self.lst = BRelation::new(vec![BTuple::from_refs(&ROUTES::R1, &BLOCKS::C), BTuple::from_refs(&ROUTES::R2, &BLOCKS::G), BTuple::from_refs(&ROUTES::R3, &BLOCKS::N), BTuple::from_refs(&ROUTES::R4, &BLOCKS::G), BTuple::from_refs(&ROUTES::R5, &BLOCKS::N), BTuple::from_refs(&ROUTES::R6, &BLOCKS::L), BTuple::from_refs(&ROUTES::R7, &BLOCKS::L), BTuple::from_refs(&ROUTES::R8, &BLOCKS::L), BTuple::from_refs(&ROUTES::R9, &BLOCKS::M), BTuple::from_refs(&ROUTES::R10, &BLOCKS::M)]); - self.nxt = BRelation::new(vec![BTuple::from_refs(&ROUTES::R1, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::C)])), BTuple::from_refs(&ROUTES::R2, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::E), BTuple::from_refs(&BLOCKS::E, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::G)])), BTuple::from_refs(&ROUTES::R3, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::L, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::N)])), BTuple::from_refs(&ROUTES::R4, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::M, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::G)])), BTuple::from_refs(&ROUTES::R5, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::M, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::N)])), BTuple::from_refs(&ROUTES::R6, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::C, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R7, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::G, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::E), BTuple::from_refs(&BLOCKS::E, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R8, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::N, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::D), BTuple::from_refs(&BLOCKS::D, &BLOCKS::B), BTuple::from_refs(&BLOCKS::B, &BLOCKS::A), BTuple::from_refs(&BLOCKS::A, &BLOCKS::L)])), BTuple::from_refs(&ROUTES::R9, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::G, &BLOCKS::F), BTuple::from_refs(&BLOCKS::F, &BLOCKS::K), BTuple::from_refs(&BLOCKS::K, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::M)])), BTuple::from_refs(&ROUTES::R10, &BRelation::new(vec![BTuple::from_refs(&BLOCKS::N, &BLOCKS::J), BTuple::from_refs(&BLOCKS::J, &BLOCKS::I), BTuple::from_refs(&BLOCKS::I, &BLOCKS::H), BTuple::from_refs(&BLOCKS::H, &BLOCKS::M)]))]); let mut _ic_set_0 = BRelation::<BLOCKS, ROUTES>::new(vec![]); for _ic_b_1 in self._BLOCKS.clone().iter().cloned() { for _ic_r_1 in self._ROUTES.clone().iter().cloned() { - if (self.nxt.domain().elementOf(&_ic_r_1).and(&self.nxt.functionCall(&_ic_r_1).domain().elementOf(&_ic_b_1).or(&self.nxt.functionCall(&_ic_r_1).range().elementOf(&_ic_b_1)))).booleanValue() { + //set_comprehension_predicate + if ((self.nxt.domain().elementOf(&_ic_r_1) && (self.nxt.functionCall(&_ic_r_1).domain().elementOf(&_ic_b_1) || self.nxt.functionCall(&_ic_r_1).range().elementOf(&_ic_b_1)))).booleanValue() { _ic_set_0 = _ic_set_0._union(&BRelation::<BLOCKS, ROUTES>::new(vec![BTuple::from_refs(&_ic_b_1, &_ic_r_1)])); } } } self.rtbl = _ic_set_0; + self.resrt = BSet::<ROUTES>::new(vec![]).clone().clone(); + self.resbl = BSet::<BLOCKS>::new(vec![]).clone().clone(); + self.rsrtbl = BRelation::<BLOCKS, ROUTES>::new(vec![]).clone().clone(); + self.OCC = BSet::<BLOCKS>::new(vec![]).clone().clone(); + self.TRK = BRelation::<BLOCKS, BLOCKS>::new(vec![]).clone().clone(); + self.frm = BSet::<ROUTES>::new(vec![]).clone().clone(); + self.LBT = BSet::<BLOCKS>::new(vec![]).clone().clone(); } - pub fn get_fst(&self) -> BRelation<ROUTES, BLOCKS> { + pub fn _get_fst(&self) -> BRelation<ROUTES, BLOCKS> { return self.fst.clone(); } - pub fn get_lst(&self) -> BRelation<ROUTES, BLOCKS> { + pub fn _get_lst(&self) -> BRelation<ROUTES, BLOCKS> { return self.lst.clone(); } - pub fn get_nxt(&self) -> BRelation<ROUTES, BRelation<BLOCKS, BLOCKS>> { + pub fn _get_nxt(&self) -> BRelation<ROUTES, BRelation<BLOCKS, BLOCKS>> { return self.nxt.clone(); } - pub fn get_rtbl(&self) -> BRelation<BLOCKS, ROUTES> { + pub fn _get_rtbl(&self) -> BRelation<BLOCKS, ROUTES> { return self.rtbl.clone(); } - pub fn get_LBT(&self) -> BSet<BLOCKS> { + pub fn _get_LBT(&self) -> BSet<BLOCKS> { return self.LBT.clone(); } - pub fn get_TRK(&self) -> BRelation<BLOCKS, BLOCKS> { + pub fn _get_TRK(&self) -> BRelation<BLOCKS, BLOCKS> { return self.TRK.clone(); } - pub fn get_frm(&self) -> BSet<ROUTES> { + pub fn _get_frm(&self) -> BSet<ROUTES> { return self.frm.clone(); } - pub fn get_OCC(&self) -> BSet<BLOCKS> { + pub fn _get_OCC(&self) -> BSet<BLOCKS> { return self.OCC.clone(); } - pub fn get_resbl(&self) -> BSet<BLOCKS> { + pub fn _get_resbl(&self) -> BSet<BLOCKS> { return self.resbl.clone(); } - pub fn get_resrt(&self) -> BSet<ROUTES> { + pub fn _get_resrt(&self) -> BSet<ROUTES> { return self.resrt.clone(); } - pub fn get_rsrtbl(&self) -> BRelation<BLOCKS, ROUTES> { + pub fn _get_rsrtbl(&self) -> BRelation<BLOCKS, ROUTES> { return self.rsrtbl.clone(); } - pub fn get__BLOCKS(&self) -> BSet<BLOCKS> { + pub fn _get__BLOCKS(&self) -> BSet<BLOCKS> { return self._BLOCKS.clone(); } - pub fn get__ROUTES(&self) -> BSet<ROUTES> { + pub fn _get__ROUTES(&self) -> BSet<ROUTES> { return self._ROUTES.clone(); } pub fn route_reservation(&mut self, mut r: ROUTES) -> () { + //pre_assert let mut _ld_resrt = self.resrt.clone(); let mut _ld_rsrtbl = self.rsrtbl.clone(); let mut _ld_resbl = self.resbl.clone(); - self.resrt = _ld_resrt._union(&BSet::new(vec![r])).clone().clone(); - self.rsrtbl = _ld_rsrtbl._union(&self.rtbl.rangeRestriction(&BSet::new(vec![r]))).clone().clone(); - self.resbl = _ld_resbl._union(&self.rtbl.inverse().relationImage(&BSet::new(vec![r]))).clone().clone(); + self.resrt = _ld_resrt._union(&BSet::new(vec![r.clone()])).clone().clone(); + self.rsrtbl = _ld_rsrtbl._union(&self.rtbl.rangeRestriction(&BSet::new(vec![r.clone()]))).clone().clone(); + self.resbl = _ld_resbl._union(&self.rtbl.inverse().relationImage(&BSet::new(vec![r.clone()]))).clone().clone(); + } pub fn route_freeing(&mut self, mut r: ROUTES) -> () { + //pre_assert let mut _ld_frm = self.frm.clone(); let mut _ld_resrt = self.resrt.clone(); - self.resrt = _ld_resrt.difference(&BSet::new(vec![r])).clone().clone(); - self.frm = _ld_frm.difference(&BSet::new(vec![r])).clone().clone(); + self.resrt = _ld_resrt.difference(&BSet::new(vec![r.clone()])).clone().clone(); + self.frm = _ld_frm.difference(&BSet::new(vec![r.clone()])).clone().clone(); + } pub fn FRONT_MOVE_1(&mut self, mut r: ROUTES) -> () { + //pre_assert let mut _ld_OCC = self.OCC.clone(); let mut _ld_LBT = self.LBT.clone(); - self.OCC = _ld_OCC._union(&BSet::new(vec![self.fst.functionCall(&r)])).clone().clone(); - self.LBT = _ld_LBT._union(&BSet::new(vec![self.fst.functionCall(&r)])).clone().clone(); + self.OCC = _ld_OCC._union(&BSet::new(vec![self.fst.functionCall(&r).clone()])).clone().clone(); + self.LBT = _ld_LBT._union(&BSet::new(vec![self.fst.functionCall(&r).clone()])).clone().clone(); + } pub fn FRONT_MOVE_2(&mut self, mut b: BLOCKS) -> () { - self.OCC = self.OCC._union(&BSet::new(vec![self.TRK.functionCall(&b)])).clone().clone(); + //pre_assert + self.OCC = self.OCC._union(&BSet::new(vec![self.TRK.functionCall(&b).clone()])).clone().clone(); + } pub fn BACK_MOVE_1(&mut self, mut b: BLOCKS) -> () { + //pre_assert let mut _ld_rsrtbl = self.rsrtbl.clone(); let mut _ld_resbl = self.resbl.clone(); let mut _ld_OCC = self.OCC.clone(); let mut _ld_LBT = self.LBT.clone(); - self.OCC = _ld_OCC.difference(&BSet::new(vec![b])).clone().clone(); - self.rsrtbl = _ld_rsrtbl.domainSubstraction(&BSet::new(vec![b])).clone().clone(); - self.resbl = _ld_resbl.difference(&BSet::new(vec![b])).clone().clone(); - self.LBT = _ld_LBT.difference(&BSet::new(vec![b])).clone().clone(); + self.OCC = _ld_OCC.difference(&BSet::new(vec![b.clone()])).clone().clone(); + self.rsrtbl = _ld_rsrtbl.domainSubstraction(&BSet::new(vec![b.clone()])).clone().clone(); + self.resbl = _ld_resbl.difference(&BSet::new(vec![b.clone()])).clone().clone(); + self.LBT = _ld_LBT.difference(&BSet::new(vec![b.clone()])).clone().clone(); + } pub fn BACK_MOVE_2(&mut self, mut b: BLOCKS) -> () { + //pre_assert let mut _ld_rsrtbl = self.rsrtbl.clone(); let mut _ld_resbl = self.resbl.clone(); let mut _ld_OCC = self.OCC.clone(); let mut _ld_LBT = self.LBT.clone(); - self.OCC = _ld_OCC.difference(&BSet::new(vec![b])).clone().clone(); - self.rsrtbl = _ld_rsrtbl.domainSubstraction(&BSet::new(vec![b])).clone().clone(); - self.resbl = _ld_resbl.difference(&BSet::new(vec![b])).clone().clone(); - self.LBT = _ld_LBT.difference(&BSet::new(vec![b]))._union(&BSet::new(vec![self.TRK.functionCall(&b)])).clone().clone(); + self.OCC = _ld_OCC.difference(&BSet::new(vec![b.clone()])).clone().clone(); + self.rsrtbl = _ld_rsrtbl.domainSubstraction(&BSet::new(vec![b.clone()])).clone().clone(); + self.resbl = _ld_resbl.difference(&BSet::new(vec![b.clone()])).clone().clone(); + self.LBT = _ld_LBT.difference(&BSet::new(vec![b.clone()]))._union(&BSet::new(vec![self.TRK.functionCall(&b).clone()])).clone().clone(); + } pub fn point_positionning(&mut self, mut r: ROUTES) -> () { + //pre_assert self.TRK = self.TRK.domainSubstraction(&self.nxt.functionCall(&r).domain()).rangeSubstraction(&self.nxt.functionCall(&r).range())._union(&self.nxt.functionCall(&r)).clone().clone(); + } pub fn route_formation(&mut self, mut r: ROUTES) -> () { - self.frm = self.frm._union(&BSet::new(vec![r])).clone().clone(); + //pre_assert + self.frm = self.frm._union(&BSet::new(vec![r.clone()])).clone().clone(); + } } + diff --git a/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic_exec.rs b/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic_exec.rs index 64fb16febc0568de40f4dd8529cf4ecddd59e3b7..7deb42e649369aabfb017beac09d8993602fb772 100644 --- a/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic_exec.rs +++ b/benchmarks/execution/Rust_Primitives/Train_1_beebook_deterministic_exec.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; use btypes::bobject::BObject; @@ -9,12 +11,21 @@ mod Train_1_beebook_deterministic; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct Train_1_beebook_deterministic_exec { counter: BInteger, _Train_1_beebook_deterministic: Train_1_beebook_deterministic::Train_1_beebook_deterministic, } +impl fmt::Display for Train_1_beebook_deterministic_exec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "Train_1_beebook_deterministic_exec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl Train_1_beebook_deterministic_exec { pub fn new() -> Train_1_beebook_deterministic_exec { @@ -28,7 +39,7 @@ impl Train_1_beebook_deterministic_exec { self._Train_1_beebook_deterministic = Train_1_beebook_deterministic::Train_1_beebook_deterministic::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/scheduler_deterministic.rs b/benchmarks/execution/Rust_Primitives/scheduler_deterministic.rs index 34b71f0f10e76b263a91a805af319cad308d0e34..18149493b7d6b20dc5e4ea9aa8f2c4432350b9b0 100644 --- a/benchmarks/execution/Rust_Primitives/scheduler_deterministic.rs +++ b/benchmarks/execution/Rust_Primitives/scheduler_deterministic.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::bboolean::BBoolean; use btypes::bset::BSet; use btypes::bobject::BObject; @@ -9,8 +11,8 @@ use btypes::bobject::BObject; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub enum PID { - process1, - process2, + process1, + process2, process3 } impl PID { @@ -23,15 +25,15 @@ impl Default for PID { } impl fmt::Display for PID { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - match *self { - PID::process1 => write!(f, "process1"), - PID::process2 => write!(f, "process2"), - PID::process3 => write!(f, "process3"), - } + match *self { + PID::process1 => write!(f, "process1"), + PID::process2 => write!(f, "process2"), + PID::process3 => write!(f, "process3"), + } } } -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct scheduler_deterministic { active: BSet<PID>, _ready: BSet<PID>, @@ -39,6 +41,17 @@ pub struct scheduler_deterministic { _PID: BSet<PID>, } +impl fmt::Display for scheduler_deterministic { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "scheduler_deterministic: (".to_owned(); + result += &format!("_get_active: {}, ", self._get_active()); + result += &format!("_get__ready: {}, ", self._get__ready()); + result += &format!("_get_waiting: {}, ", self._get_waiting()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl scheduler_deterministic { pub fn new() -> scheduler_deterministic { @@ -48,31 +61,31 @@ impl scheduler_deterministic { return m; } fn init(&mut self) { - self.active = BSet::new(vec![]).clone().clone(); - self._ready = BSet::new(vec![]).clone().clone(); - self.waiting = BSet::new(vec![]).clone().clone(); self._PID = BSet::new(vec![PID::process1, PID::process2, PID::process3]); + self.active = BSet::<PID>::new(vec![]).clone().clone(); + self._ready = BSet::<PID>::new(vec![]).clone().clone(); + self.waiting = BSet::<PID>::new(vec![]).clone().clone(); } - pub fn get_active(&self) -> BSet<PID> { + pub fn _get_active(&self) -> BSet<PID> { return self.active.clone(); } - pub fn get__ready(&self) -> BSet<PID> { + pub fn _get__ready(&self) -> BSet<PID> { return self._ready.clone(); } - pub fn get_waiting(&self) -> BSet<PID> { + pub fn _get_waiting(&self) -> BSet<PID> { return self.waiting.clone(); } - pub fn get__PID(&self) -> BSet<PID> { + pub fn _get__PID(&self) -> BSet<PID> { return self._PID.clone(); } pub fn _new(&mut self, mut pp: PID) -> () { - if (self._PID.elementOf(&pp).and(&self.active.notElementOf(&pp)).and(&self._ready._union(&self.waiting).notElementOf(&pp))).booleanValue() { - self.waiting = self.waiting._union(&BSet::new(vec![pp])).clone().clone(); + if (((self._PID.elementOf(&pp) && self.active.notElementOf(&pp)) && self._ready._union(&self.waiting).notElementOf(&pp))).booleanValue() { + self.waiting = self.waiting._union(&BSet::new(vec![pp.clone()])).clone().clone(); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } @@ -80,7 +93,7 @@ impl scheduler_deterministic { pub fn del(&mut self, mut pp: PID) -> () { if (self.waiting.elementOf(&pp)).booleanValue() { - self.waiting = self.waiting.difference(&BSet::new(vec![pp])).clone().clone(); + self.waiting = self.waiting.difference(&BSet::new(vec![pp.clone()])).clone().clone(); } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); } @@ -88,11 +101,11 @@ impl scheduler_deterministic { pub fn ready(&mut self, mut rr: PID) -> () { if (self.waiting.elementOf(&rr)).booleanValue() { - self.waiting = self.waiting.difference(&BSet::new(vec![rr])).clone().clone(); - if (self.active.equal(&BSet::new(vec![]))).booleanValue() { - self.active = BSet::new(vec![rr]).clone().clone(); + self.waiting = self.waiting.difference(&BSet::new(vec![rr.clone()])).clone().clone(); + if (self.active.equal(&BSet::<PID>::new(vec![]))).booleanValue() { + self.active = BSet::new(vec![rr.clone()]).clone().clone(); } else { - self._ready = self._ready._union(&BSet::new(vec![rr])).clone().clone(); + self._ready = self._ready._union(&BSet::new(vec![rr.clone()])).clone().clone(); } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); @@ -100,13 +113,14 @@ impl scheduler_deterministic { } pub fn swap(&mut self, mut pp: PID) -> () { - if (self.active.unequal(&BSet::new(vec![]))).booleanValue() { + //pre_assert + if (self.active.unequal(&BSet::<PID>::new(vec![]))).booleanValue() { self.waiting = self.waiting._union(&self.active).clone().clone(); - if (self._ready.equal(&BSet::new(vec![]))).booleanValue() { - self.active = BSet::new(vec![]).clone().clone(); + if (self._ready.equal(&BSet::<PID>::new(vec![]))).booleanValue() { + self.active = BSet::<PID>::new(vec![]).clone().clone(); } else { - self.active = BSet::new(vec![pp]).clone().clone(); - self._ready = self._ready.difference(&BSet::new(vec![pp])).clone().clone(); + self.active = BSet::new(vec![pp.clone()]).clone().clone(); + self._ready = self._ready.difference(&BSet::new(vec![pp.clone()])).clone().clone(); } } else { panic!("ERROR: called SELECT-function with incompatible parameters!"); diff --git a/benchmarks/execution/Rust_Primitives/scheduler_deterministic_exec.rs b/benchmarks/execution/Rust_Primitives/scheduler_deterministic_exec.rs index 06e9c4cc8794a8a3d2e90f044ba717203119b4d1..8cd310ebb9b3612d18dbcb4648615a8de3b99960 100644 --- a/benchmarks/execution/Rust_Primitives/scheduler_deterministic_exec.rs +++ b/benchmarks/execution/Rust_Primitives/scheduler_deterministic_exec.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; use btypes::bobject::BObject; @@ -9,12 +11,21 @@ mod scheduler_deterministic; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct scheduler_deterministic_exec { counter: BInteger, _scheduler_deterministic: scheduler_deterministic::scheduler_deterministic, } +impl fmt::Display for scheduler_deterministic_exec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "scheduler_deterministic_exec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl scheduler_deterministic_exec { pub fn new() -> scheduler_deterministic_exec { @@ -28,7 +39,7 @@ impl scheduler_deterministic_exec { self._scheduler_deterministic = scheduler_deterministic::scheduler_deterministic::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } diff --git a/benchmarks/execution/Rust_Primitives/sort_m2_data1000.rs b/benchmarks/execution/Rust_Primitives/sort_m2_data1000.rs index c9ad06338ba1b19164552418a69b80d59dff58f0..3bc4f4489924957d8604da055713b4c8a68372f8 100644 --- a/benchmarks/execution/Rust_Primitives/sort_m2_data1000.rs +++ b/benchmarks/execution/Rust_Primitives/sort_m2_data1000.rs @@ -1,7 +1,9 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; use btypes::brelation::BRelation; @@ -10,7 +12,7 @@ use btypes::btuple::BTuple; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct sort_m2_data1000 { j: BInteger, k: BInteger, @@ -20,6 +22,18 @@ pub struct sort_m2_data1000 { n: BInteger, } +impl fmt::Display for sort_m2_data1000 { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "sort_m2_data1000: (".to_owned(); + result += &format!("_get_j: {}, ", self._get_j()); + result += &format!("_get_k: {}, ", self._get_k()); + result += &format!("_get_l: {}, ", self._get_l()); + result += &format!("_get_g: {}, ", self._get_g()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl sort_m2_data1000 { pub fn new() -> sort_m2_data1000 { @@ -32,7 +46,8 @@ impl sort_m2_data1000 { self.n = BInteger::new(1000); let mut _ic_set_0 = BRelation::<BInteger, BInteger>::new(vec![]); for _ic_i_1 in BSet::<BInteger>::interval(&BInteger::new(1), &self.n).clone().iter().cloned() { - _ic_set_0 = _ic_set_0._union(&BRelation::<BInteger, BInteger>::new(vec![BTuple::new(_ic_i_1, BInteger::new(15000).minus(&_ic_i_1))])); + //lambda_expression + _ic_set_0 = _ic_set_0._union(&BRelation::<BInteger, BInteger>::new(vec![BTuple::new(_ic_i_1.clone(), BInteger::new(15000).minus(&_ic_i_1))])); } self.f = _ic_set_0; @@ -42,32 +57,32 @@ impl sort_m2_data1000 { self.j = BInteger::new(1); } - pub fn get_f(&self) -> BRelation<BInteger, BInteger> { + pub fn _get_f(&self) -> BRelation<BInteger, BInteger> { return self.f.clone(); } - pub fn get_n(&self) -> BInteger { + pub fn _get_n(&self) -> BInteger { return self.n.clone(); } - pub fn get_j(&self) -> BInteger { + pub fn _get_j(&self) -> BInteger { return self.j.clone(); } - pub fn get_k(&self) -> BInteger { + pub fn _get_k(&self) -> BInteger { return self.k.clone(); } - pub fn get_l(&self) -> BInteger { + pub fn _get_l(&self) -> BInteger { return self.l.clone(); } - pub fn get_g(&self) -> BRelation<BInteger, BInteger> { + pub fn _get_g(&self) -> BRelation<BInteger, BInteger> { return self.g.clone(); } pub fn progress(&mut self) -> () { - if (self.k.unequal(&self.n).and(&self.j.equal(&self.n))).booleanValue() { + if ((self.k.unequal(&self.n) && self.j.equal(&self.n))).booleanValue() { let mut _ld_g = self.g.clone(); let mut _ld_k = self.k.clone(); let mut _ld_l = self.l.clone(); @@ -81,7 +96,7 @@ impl sort_m2_data1000 { } pub fn prog1(&mut self) -> () { - if (self.k.unequal(&self.n).and(&self.j.unequal(&self.n)).and(&self.g.functionCall(&self.l).lessEqual(&self.g.functionCall(&self.j.plus(&BInteger::new(1)))))).booleanValue() { + if (((self.k.unequal(&self.n) && self.j.unequal(&self.n)) && self.g.functionCall(&self.l).lessEqual(&self.g.functionCall(&self.j.plus(&BInteger::new(1)))))).booleanValue() { let mut _ld_j = self.j.clone(); let mut _ld_l = self.l.clone(); self.l = _ld_l; @@ -92,7 +107,7 @@ impl sort_m2_data1000 { } pub fn prog2(&mut self) -> () { - if (self.k.unequal(&self.n).and(&self.j.unequal(&self.n)).and(&self.g.functionCall(&self.l).greater(&self.g.functionCall(&self.j.plus(&BInteger::new(1)))))).booleanValue() { + if (((self.k.unequal(&self.n) && self.j.unequal(&self.n)) && self.g.functionCall(&self.l).greater(&self.g.functionCall(&self.j.plus(&BInteger::new(1)))))).booleanValue() { let mut _ld_j = self.j.clone(); self.j = _ld_j.plus(&BInteger::new(1)); self.l = _ld_j.plus(&BInteger::new(1)); @@ -109,3 +124,4 @@ impl sort_m2_data1000 { } } + diff --git a/benchmarks/execution/Rust_Primitives/sort_m2_data1000_exec.rs b/benchmarks/execution/Rust_Primitives/sort_m2_data1000_exec.rs index dd63f06a210d4e75151922c9e4fe0f2f820da7b8..12b8dbf488514d92e157f08ea317bb49021290cd 100644 --- a/benchmarks/execution/Rust_Primitives/sort_m2_data1000_exec.rs +++ b/benchmarks/execution/Rust_Primitives/sort_m2_data1000_exec.rs @@ -1,20 +1,32 @@ -#![ allow( dead_code, unused_imports, unused_mut, non_snake_case, non_camel_case_types, unused_assignments ) ] +#![ allow( dead_code, unused, non_snake_case, non_camel_case_types, unused_assignments ) ] use std::fmt; use rand::{thread_rng, Rng}; use btypes::butils; +use btypes::bobject; +use btypes::bboolean::{IntoBool, BBooleanT}; use btypes::binteger::BInteger; use btypes::bboolean::BBoolean; mod sort_m2_data1000; -#[derive(Default, Debug)] +#[derive(Clone, Default, Debug, Hash, PartialEq, Eq)] pub struct sort_m2_data1000_exec { counter: BInteger, sorted: BInteger, _sort_m2_data1000: sort_m2_data1000::sort_m2_data1000, } +impl fmt::Display for sort_m2_data1000_exec { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut result = "sort_m2_data1000_exec: (".to_owned(); + result += &format!("_get_counter: {}, ", self._get_counter()); + result += &format!("_get_sorted: {}, ", self._get_sorted()); + result = result + ")"; + return write!(f, "{}", result); + } +} + impl sort_m2_data1000_exec { pub fn new() -> sort_m2_data1000_exec { @@ -29,11 +41,11 @@ impl sort_m2_data1000_exec { self._sort_m2_data1000 = sort_m2_data1000::sort_m2_data1000::new(); } - pub fn get_counter(&self) -> BInteger { + pub fn _get_counter(&self) -> BInteger { return self.counter.clone(); } - pub fn get_sorted(&self) -> BInteger { + pub fn _get_sorted(&self) -> BInteger { return self.sorted.clone(); }