From fc4df2e72a75507e7786a5cf7fe54b7cf06a9d57 Mon Sep 17 00:00:00 2001 From: Till Schallau <9063061+tillschallau@users.noreply.github.com> Date: Tue, 13 Feb 2024 08:48:33 +0100 Subject: [PATCH 1/4] Replace old JVM Target with jvmToolchain (#35) --- .../kotlin/tools.aqua.stars.kotlin-conventions.gradle.kts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/buildSrc/src/main/kotlin/tools.aqua.stars.kotlin-conventions.gradle.kts b/buildSrc/src/main/kotlin/tools.aqua.stars.kotlin-conventions.gradle.kts index ac61e3e4..9a7da9ee 100644 --- a/buildSrc/src/main/kotlin/tools.aqua.stars.kotlin-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/tools.aqua.stars.kotlin-conventions.gradle.kts @@ -76,10 +76,4 @@ tasks.test { testLogging { events(FAILED, PASSED, SKIPPED) } } -kotlin.target.compilations.all { - kotlinOptions { - jvmTarget = "11" - // allWarningsAsErrors = true - freeCompilerArgs = listOf("-Xjsr305=strict", "-Xjvm-default=all") - } -} +kotlin { jvmToolchain(17) } From 9515a90d2bb598ec197fbc86ba4ceb2c313760b5 Mon Sep 17 00:00:00 2001 From: Till Schallau <9063061+tillschallau@users.noreply.github.com> Date: Tue, 13 Feb 2024 08:51:20 +0100 Subject: [PATCH 2/4] Clarify KDoc of FailedMonitorsMetric (#37) --- .../metrics/postEvaluation/FailedMonitorsMetric.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/stars-core/src/main/kotlin/tools/aqua/stars/core/metric/metrics/postEvaluation/FailedMonitorsMetric.kt b/stars-core/src/main/kotlin/tools/aqua/stars/core/metric/metrics/postEvaluation/FailedMonitorsMetric.kt index 729b9149..985dd405 100644 --- a/stars-core/src/main/kotlin/tools/aqua/stars/core/metric/metrics/postEvaluation/FailedMonitorsMetric.kt +++ b/stars-core/src/main/kotlin/tools/aqua/stars/core/metric/metrics/postEvaluation/FailedMonitorsMetric.kt @@ -22,17 +22,19 @@ import tools.aqua.stars.core.metric.metrics.evaluation.ValidTSCInstancesPerProje import tools.aqua.stars.core.metric.providers.Loggable import tools.aqua.stars.core.metric.providers.PostEvaluationMetricProvider import tools.aqua.stars.core.tsc.TSCMonitorResult +import tools.aqua.stars.core.tsc.node.TSCNode import tools.aqua.stars.core.tsc.projection.TSCProjection import tools.aqua.stars.core.types.EntityType import tools.aqua.stars.core.types.SegmentType import tools.aqua.stars.core.types.TickDataType /** - * This metric implements the [PostEvaluationMetricProvider] and tracks the number of failed - * monitors. + * This metric implements the [PostEvaluationMetricProvider] and tracks the formulas specified as + * [TSCNode.monitorFunction]s that evaluate to 'false'. * - * This class implements the [Loggable] interface. It logs and prints the count of missing Monitors - * for each [TSCProjection]. It logs the missing [TSCMonitorResult]s for each [TSCProjection]. + * This class implements the [Loggable] interface. It logs and prints the count and names of all + * failing [TSCNode.monitorFunction]s for each [TSCProjection]. It logs the failing + * [TSCMonitorResult]s for each [TSCProjection]. */ @Suppress("unused") class FailedMonitorsMetric< From 5d4f0632672b694d918675a1d7bdca209975187c Mon Sep 17 00:00:00 2001 From: Till Schallau <9063061+tillschallau@users.noreply.github.com> Date: Tue, 13 Feb 2024 08:51:50 +0100 Subject: [PATCH 3/4] Remove all existing ego flags when useEveryVehicleAsEgo is set (#36) --- .../tools/aqua/stars/importer/carla/runSegmentation.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/stars-importer-carla/src/main/kotlin/tools/aqua/stars/importer/carla/runSegmentation.kt b/stars-importer-carla/src/main/kotlin/tools/aqua/stars/importer/carla/runSegmentation.kt index 85e96aed..00e0a60b 100644 --- a/stars-importer-carla/src/main/kotlin/tools/aqua/stars/importer/carla/runSegmentation.kt +++ b/stars-importer-carla/src/main/kotlin/tools/aqua/stars/importer/carla/runSegmentation.kt @@ -131,6 +131,13 @@ fun convertJsonData( } val egoTickData = checkNotNull(referenceTickData).map { it.clone() } + // Remove all existing ego flags when useEveryVehicleAsEgo is set + if (useEveryVehicleAsEgo) { + egoTickData.forEach { tickData -> + tickData.actors.filterIsInstance().forEach { it.egoVehicle = false } + } + } + // Set egoVehicle flag for each TickData var isTickWithoutEgo = false egoTickData.forEach { tickData -> From dd566378d931827bdbe905c737b7eb014e408498 Mon Sep 17 00:00:00 2001 From: Till Schallau <9063061+tillschallau@users.noreply.github.com> Date: Tue, 13 Feb 2024 09:24:26 +0100 Subject: [PATCH 4/4] Add previous operator for two entities (#38) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add previous operator for two entities * Unified KDoc. --------- Co-authored-by: Dominik Mäckel --- .../aqua/stars/logic/kcmftbl/previous.kt | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/stars-logic-kcmftbl/src/main/kotlin/tools/aqua/stars/logic/kcmftbl/previous.kt b/stars-logic-kcmftbl/src/main/kotlin/tools/aqua/stars/logic/kcmftbl/previous.kt index 9df94854..c8d3fad8 100644 --- a/stars-logic-kcmftbl/src/main/kotlin/tools/aqua/stars/logic/kcmftbl/previous.kt +++ b/stars-logic-kcmftbl/src/main/kotlin/tools/aqua/stars/logic/kcmftbl/previous.kt @@ -75,3 +75,47 @@ fun , T : TickDataType, S : SegmentType if (entity::class.isInstance(previousEntity)) phi(entity::class.cast(previousEntity)) else false }) + +/** + * CMFTBL implementation of the previous operator for two entities. + * + * @param E1 [EntityType] + * 1. + * @param E2 [EntityType] + * 2. + * @param E [EntityType]. + * @param T [TickDataType]. + * @param S [SegmentType]. + * @param entity1 Current [EntityType] + * 1. + * @param entity2 Current [EntityType] + * 2. + * @param interval Observation interval. + * @param phi Predicate. + */ +fun < + E1 : E, + E2 : E, + E : EntityType, + T : TickDataType, + S : SegmentType> previous( + entity1: E1, + entity2: E2, + interval: Pair = Pair(0.0, Double.MAX_VALUE), + phi: (E1, E2) -> Boolean +): Boolean { + require(entity1.tickData == entity2.tickData) { + "the two entities provided as argument are not from same tick" + } + return previous( + entity1.tickData, + interval, + phi = { td -> + val previousEntity1 = td.entity(entity1.id) + val previousEntity2 = td.entity(entity2.id) + if (entity1::class.isInstance(previousEntity1) && + entity2::class.isInstance(previousEntity2)) + phi(entity1::class.cast(previousEntity1), entity2::class.cast(previousEntity2)) + else false + }) +}