Added tests for SAS parser.
This commit is contained in:
parent
fb04b5fb11
commit
16b8b4c833
@ -13,3 +13,6 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
add_subdirectory(apps)
|
add_subdirectory(apps)
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
add_subdirectory(tests)
|
||||||
|
endif(BUILD_TESTS)
|
||||||
|
23
tests/CMakeLists.txt
Normal file
23
tests/CMakeLists.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
set(target tests)
|
||||||
|
|
||||||
|
file(GLOB core_sources "*.cpp")
|
||||||
|
|
||||||
|
find_package(GTest)
|
||||||
|
|
||||||
|
INCLUDE_DIRECTORIES(
|
||||||
|
${GTEST_INCLUDE_DIRS}
|
||||||
|
${Boost_INCLUDE_DIRS}
|
||||||
|
${PROJECT_SOURCE_DIR}/include
|
||||||
|
)
|
||||||
|
|
||||||
|
set(libraries
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${GTEST_BOTH_LIBRARIES}
|
||||||
|
plasp
|
||||||
|
)
|
||||||
|
|
||||||
|
file(COPY data DESTINATION ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
add_executable(${target} ${core_sources})
|
||||||
|
target_link_libraries(${target} ${libraries})
|
||||||
|
GTEST_ADD_TESTS(tests "" ${core_sources})
|
104
tests/TestSASParser.cpp
Normal file
104
tests/TestSASParser.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include <gtest/gtest.h>
|
||||||
|
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
#include <plasp/sas/Description.h>
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
class SASParserTests : public ::testing::Test
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
SASParserTests()
|
||||||
|
: m_philosophersTestFile(readFile("data/philosophers.sas"))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::stringstream readFile(const std::string &path)
|
||||||
|
{
|
||||||
|
std::ifstream fileStream(path, std::ios::in);
|
||||||
|
|
||||||
|
std::stringstream outputStream;
|
||||||
|
|
||||||
|
if (!fileStream.is_open())
|
||||||
|
throw std::runtime_error("Could not open file \"" + path + "\"");
|
||||||
|
|
||||||
|
outputStream << fileStream.rdbuf();
|
||||||
|
|
||||||
|
return outputStream;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::stringstream m_philosophersTestFile;
|
||||||
|
};
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
TEST_F(SASParserTests, ParseValidSASFile)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const auto description = plasp::sas::Description::fromStream(m_philosophersTestFile);
|
||||||
|
|
||||||
|
ASSERT_FALSE(description.usesActionCosts());
|
||||||
|
|
||||||
|
ASSERT_EQ(description.variables().size(), 37);
|
||||||
|
ASSERT_EQ(description.variables()[0].axiomLayer, -1);
|
||||||
|
ASSERT_EQ(description.variables()[36].axiomLayer, -1);
|
||||||
|
|
||||||
|
ASSERT_EQ(description.mutexGroups().size(), 8);
|
||||||
|
ASSERT_EQ(description.mutexGroups()[0].facts.size(), 9);
|
||||||
|
ASSERT_EQ(&description.mutexGroups()[0].facts[0].value, &description.variables()[0].values[0]);
|
||||||
|
ASSERT_EQ(description.mutexGroups()[7].facts.size(), 2);
|
||||||
|
ASSERT_EQ(&description.mutexGroups()[7].facts[1].value, &description.variables()[34].values[1]);
|
||||||
|
|
||||||
|
ASSERT_EQ(description.initialStateFacts().size(), 37);
|
||||||
|
ASSERT_EQ(&description.initialStateFacts()[0].value, &description.variables()[0].values[8]);
|
||||||
|
ASSERT_EQ(&description.initialStateFacts()[36].value, &description.variables()[36].values[1]);
|
||||||
|
|
||||||
|
ASSERT_EQ(description.goalFacts().size(), 2);
|
||||||
|
ASSERT_EQ(&description.goalFacts()[0].value, &description.variables()[6].values[0]);
|
||||||
|
ASSERT_EQ(&description.goalFacts()[1].value, &description.variables()[7].values[0]);
|
||||||
|
|
||||||
|
ASSERT_EQ(description.operators().size(), 34);
|
||||||
|
ASSERT_EQ(description.operators()[0].preconditions.size(), 3);
|
||||||
|
ASSERT_EQ(&description.operators()[0].preconditions[0].value, &description.variables()[4].values[4]);
|
||||||
|
ASSERT_EQ(&description.operators()[0].preconditions[1].value, &description.variables()[16].values[1]);
|
||||||
|
ASSERT_EQ(&description.operators()[0].preconditions[2].value, &description.variables()[0].values[8]);
|
||||||
|
ASSERT_EQ(description.operators()[0].effects.size(), 1);
|
||||||
|
ASSERT_EQ(description.operators()[0].effects[0].conditions.size(), 0);
|
||||||
|
ASSERT_EQ(&description.operators()[0].effects[0].postcondition.value, &description.variables()[0].values[0]);
|
||||||
|
ASSERT_EQ(description.operators()[33].preconditions.size(), 2);
|
||||||
|
ASSERT_EQ(&description.operators()[33].preconditions[0].value, &description.variables()[1].values[3]);
|
||||||
|
ASSERT_EQ(&description.operators()[33].preconditions[1].value, &description.variables()[2].values[2]);
|
||||||
|
ASSERT_EQ(description.operators()[33].effects.size(), 3);
|
||||||
|
ASSERT_EQ(description.operators()[33].effects[0].conditions.size(), 0);
|
||||||
|
ASSERT_EQ(&description.operators()[33].effects[0].postcondition.value, &description.variables()[1].values[7]);
|
||||||
|
ASSERT_EQ(&description.operators()[33].effects[2].postcondition.value, &description.variables()[35].values[0]);
|
||||||
|
|
||||||
|
ASSERT_EQ(description.axiomRules().size(), 33);
|
||||||
|
ASSERT_EQ(description.axiomRules()[0].conditions.size(), 4);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[0].conditions[0].value, &description.variables()[0].values[0]);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[0].conditions[2].value, &description.variables()[27].values[0]);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[0].conditions[3].value, &description.variables()[8].values[1]);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[0].postcondition.value, &description.variables()[8].values[0]);
|
||||||
|
ASSERT_EQ(description.axiomRules()[32].conditions.size(), 2);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[32].conditions[0].value, &description.variables()[15].values[0]);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[32].conditions[1].value, &description.variables()[25].values[0]);
|
||||||
|
ASSERT_EQ(&description.axiomRules()[32].postcondition.value, &description.variables()[25].values[1]);
|
||||||
|
}
|
||||||
|
catch (const std::exception &e)
|
||||||
|
{
|
||||||
|
FAIL() << e.what();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
::testing::InitGoogleTest(&argc, argv);
|
||||||
|
return RUN_ALL_TESTS();
|
||||||
|
}
|
915
tests/data/philosophers.sas
Normal file
915
tests/data/philosophers.sas
Normal file
@ -0,0 +1,915 @@
|
|||||||
|
begin_version
|
||||||
|
3
|
||||||
|
end_version
|
||||||
|
begin_metric
|
||||||
|
0
|
||||||
|
end_metric
|
||||||
|
37
|
||||||
|
begin_variable
|
||||||
|
var0
|
||||||
|
-1
|
||||||
|
9
|
||||||
|
Atom activate(philosopher-0, forks--pid-rfork)
|
||||||
|
Atom activate(philosopher-0, forks--pid-wfork)
|
||||||
|
Atom activate(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||||
|
Atom activate(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||||
|
Atom enabled(philosopher-0, forks--pid-rfork)
|
||||||
|
Atom enabled(philosopher-0, forks--pid-wfork)
|
||||||
|
Atom enabled(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||||
|
Atom enabled(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||||
|
Atom pending(philosopher-0)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var1
|
||||||
|
-1
|
||||||
|
9
|
||||||
|
Atom activate(philosopher-1, forks--pid-rfork)
|
||||||
|
Atom activate(philosopher-1, forks--pid-wfork)
|
||||||
|
Atom activate(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||||
|
Atom activate(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||||
|
Atom enabled(philosopher-1, forks--pid-rfork)
|
||||||
|
Atom enabled(philosopher-1, forks--pid-wfork)
|
||||||
|
Atom enabled(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||||
|
Atom enabled(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||||
|
Atom pending(philosopher-1)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var2
|
||||||
|
-1
|
||||||
|
3
|
||||||
|
Atom advance-head(forks-0-)
|
||||||
|
Atom advance-tail(forks-0-)
|
||||||
|
Atom settled(forks-0-)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var3
|
||||||
|
-1
|
||||||
|
3
|
||||||
|
Atom advance-head(forks-1-)
|
||||||
|
Atom advance-tail(forks-1-)
|
||||||
|
Atom settled(forks-1-)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var4
|
||||||
|
-1
|
||||||
|
5
|
||||||
|
Atom at-process(philosopher-0, state-1)
|
||||||
|
Atom at-process(philosopher-0, state-3)
|
||||||
|
Atom at-process(philosopher-0, state-4)
|
||||||
|
Atom at-process(philosopher-0, state-5)
|
||||||
|
Atom at-process(philosopher-0, state-6)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var5
|
||||||
|
-1
|
||||||
|
5
|
||||||
|
Atom at-process(philosopher-1, state-1)
|
||||||
|
Atom at-process(philosopher-1, state-3)
|
||||||
|
Atom at-process(philosopher-1, state-4)
|
||||||
|
Atom at-process(philosopher-1, state-5)
|
||||||
|
Atom at-process(philosopher-1, state-6)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var6
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked(philosopher-0)
|
||||||
|
NegatedAtom blocked(philosopher-0)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var7
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked(philosopher-1)
|
||||||
|
NegatedAtom blocked(philosopher-1)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var8
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-0, forks--pid-rfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-0, forks--pid-rfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var9
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-0, forks--pid-wfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-0, forks--pid-wfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var10
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-0, forks-__-pidp1__2_-rfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var11
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-0, forks-__-pidp1__2_-wfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var12
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-1, forks--pid-rfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-1, forks--pid-rfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var13
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-1, forks--pid-wfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-1, forks--pid-wfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var14
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-1, forks-__-pidp1__2_-rfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var15
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom blocked-trans(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||||
|
NegatedAtom blocked-trans(philosopher-1, forks-__-pidp1__2_-wfork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var16
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@0()
|
||||||
|
NegatedAtom new-axiom@0()
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var17
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-0, philosopher, state-1)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-1)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var18
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-0, philosopher, state-3)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-3)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var19
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-0, philosopher, state-4)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-4)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var20
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-0, philosopher, state-5)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-5)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var21
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-0, philosopher, state-6)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-0, philosopher, state-6)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var22
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-1, philosopher, state-1)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-1)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var23
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-1, philosopher, state-3)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-3)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var24
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-1, philosopher, state-4)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-4)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var25
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-1, philosopher, state-5)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-5)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var26
|
||||||
|
0
|
||||||
|
2
|
||||||
|
Atom new-axiom@1(philosopher-1, philosopher, state-6)
|
||||||
|
NegatedAtom new-axiom@1(philosopher-1, philosopher, state-6)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var27
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-head-msg(forks-0-, empty)
|
||||||
|
NegatedAtom queue-head-msg(forks-0-, empty)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var28
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-head-msg(forks-0-, fork)
|
||||||
|
NegatedAtom queue-head-msg(forks-0-, fork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var29
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-head-msg(forks-1-, empty)
|
||||||
|
NegatedAtom queue-head-msg(forks-1-, empty)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var30
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-head-msg(forks-1-, fork)
|
||||||
|
NegatedAtom queue-head-msg(forks-1-, fork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var31
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-msg(forks-0-, qs-0, fork)
|
||||||
|
NegatedAtom queue-msg(forks-0-, qs-0, fork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var32
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-msg(forks-1-, qs-0, fork)
|
||||||
|
NegatedAtom queue-msg(forks-1-, qs-0, fork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var33
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-size(forks-0-, one)
|
||||||
|
Atom queue-size(forks-0-, zero)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var34
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-size(forks-1-, one)
|
||||||
|
Atom queue-size(forks-1-, zero)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var35
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-tail-msg(forks-0-, fork)
|
||||||
|
NegatedAtom queue-tail-msg(forks-0-, fork)
|
||||||
|
end_variable
|
||||||
|
begin_variable
|
||||||
|
var36
|
||||||
|
-1
|
||||||
|
2
|
||||||
|
Atom queue-tail-msg(forks-1-, fork)
|
||||||
|
NegatedAtom queue-tail-msg(forks-1-, fork)
|
||||||
|
end_variable
|
||||||
|
8
|
||||||
|
begin_mutex_group
|
||||||
|
9
|
||||||
|
0 0
|
||||||
|
0 1
|
||||||
|
0 2
|
||||||
|
0 3
|
||||||
|
0 4
|
||||||
|
0 5
|
||||||
|
0 6
|
||||||
|
0 7
|
||||||
|
0 8
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
9
|
||||||
|
1 0
|
||||||
|
1 1
|
||||||
|
1 2
|
||||||
|
1 3
|
||||||
|
1 4
|
||||||
|
1 5
|
||||||
|
1 6
|
||||||
|
1 7
|
||||||
|
1 8
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
3
|
||||||
|
2 0
|
||||||
|
2 1
|
||||||
|
2 2
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
3
|
||||||
|
3 0
|
||||||
|
3 1
|
||||||
|
3 2
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
5
|
||||||
|
4 0
|
||||||
|
4 1
|
||||||
|
4 2
|
||||||
|
4 3
|
||||||
|
4 4
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
5
|
||||||
|
5 0
|
||||||
|
5 1
|
||||||
|
5 2
|
||||||
|
5 3
|
||||||
|
5 4
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
2
|
||||||
|
33 0
|
||||||
|
33 1
|
||||||
|
end_mutex_group
|
||||||
|
begin_mutex_group
|
||||||
|
2
|
||||||
|
34 0
|
||||||
|
34 1
|
||||||
|
end_mutex_group
|
||||||
|
begin_state
|
||||||
|
8
|
||||||
|
8
|
||||||
|
2
|
||||||
|
2
|
||||||
|
0
|
||||||
|
0
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
0
|
||||||
|
1
|
||||||
|
0
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
end_state
|
||||||
|
begin_goal
|
||||||
|
2
|
||||||
|
6 0
|
||||||
|
7 0
|
||||||
|
end_goal
|
||||||
|
34
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-0 philosopher forks--pid-rfork state-6 state-3
|
||||||
|
2
|
||||||
|
4 4
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 0 8 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-0 philosopher forks--pid-wfork state-1 state-6
|
||||||
|
2
|
||||||
|
4 0
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 0 8 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-0 philosopher forks--pid-wfork state-4 state-5
|
||||||
|
2
|
||||||
|
4 2
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 0 8 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-0 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||||
|
2
|
||||||
|
4 1
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 0 8 2
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-0 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||||
|
2
|
||||||
|
4 3
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 0 8 3
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-1 philosopher forks--pid-rfork state-6 state-3
|
||||||
|
2
|
||||||
|
5 4
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 1 8 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-1 philosopher forks--pid-wfork state-1 state-6
|
||||||
|
2
|
||||||
|
5 0
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 1 8 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-1 philosopher forks--pid-wfork state-4 state-5
|
||||||
|
2
|
||||||
|
5 2
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 1 8 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-1 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||||
|
2
|
||||||
|
5 1
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 1 8 2
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
activate-trans philosopher-1 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||||
|
2
|
||||||
|
5 3
|
||||||
|
16 1
|
||||||
|
1
|
||||||
|
0 1 8 3
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-empty-queue-tail forks-0- queue-1 qs-0 qs-0 fork empty zero one
|
||||||
|
1
|
||||||
|
35 0
|
||||||
|
5
|
||||||
|
0 2 1 2
|
||||||
|
0 27 0 1
|
||||||
|
0 28 -1 0
|
||||||
|
0 31 -1 0
|
||||||
|
0 33 1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-empty-queue-tail forks-0- queue-1 qs-0 qs-0 fork fork zero one
|
||||||
|
2
|
||||||
|
28 0
|
||||||
|
35 0
|
||||||
|
3
|
||||||
|
0 2 1 2
|
||||||
|
0 31 -1 0
|
||||||
|
0 33 1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-empty-queue-tail forks-1- queue-1 qs-0 qs-0 fork empty zero one
|
||||||
|
1
|
||||||
|
36 0
|
||||||
|
5
|
||||||
|
0 3 1 2
|
||||||
|
0 29 0 1
|
||||||
|
0 30 -1 0
|
||||||
|
0 32 -1 0
|
||||||
|
0 34 1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-empty-queue-tail forks-1- queue-1 qs-0 qs-0 fork fork zero one
|
||||||
|
2
|
||||||
|
30 0
|
||||||
|
36 0
|
||||||
|
3
|
||||||
|
0 3 1 2
|
||||||
|
0 32 -1 0
|
||||||
|
0 34 1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-queue-head forks-0- queue-1 qs-0 qs-0 fork one zero
|
||||||
|
1
|
||||||
|
31 0
|
||||||
|
3
|
||||||
|
0 2 0 2
|
||||||
|
0 28 -1 0
|
||||||
|
0 33 0 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
advance-queue-head forks-1- queue-1 qs-0 qs-0 fork one zero
|
||||||
|
1
|
||||||
|
32 0
|
||||||
|
3
|
||||||
|
0 3 0 2
|
||||||
|
0 30 -1 0
|
||||||
|
0 34 0 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-0 philosopher forks--pid-rfork state-6 state-3
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 0 4 8
|
||||||
|
0 4 4 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-0 philosopher forks--pid-wfork state-1 state-6
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 0 5 8
|
||||||
|
0 4 0 4
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-0 philosopher forks--pid-wfork state-4 state-5
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 0 5 8
|
||||||
|
0 4 2 3
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-0 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 0 6 8
|
||||||
|
0 4 1 2
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-0 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 0 7 8
|
||||||
|
0 4 3 4
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-1 philosopher forks--pid-rfork state-6 state-3
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 1 4 8
|
||||||
|
0 5 4 1
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-1 philosopher forks--pid-wfork state-1 state-6
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 1 5 8
|
||||||
|
0 5 0 4
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-1 philosopher forks--pid-wfork state-4 state-5
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 1 5 8
|
||||||
|
0 5 2 3
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-1 philosopher forks-__-pidp1__2_-rfork state-3 state-4
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 1 6 8
|
||||||
|
0 5 1 2
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
perform-trans philosopher-1 philosopher forks-__-pidp1__2_-wfork state-5 state-6
|
||||||
|
1
|
||||||
|
16 1
|
||||||
|
2
|
||||||
|
0 1 7 8
|
||||||
|
0 5 3 4
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-read philosopher-0 forks--pid-rfork forks-0- fork
|
||||||
|
1
|
||||||
|
28 0
|
||||||
|
2
|
||||||
|
0 0 0 4
|
||||||
|
0 2 2 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-read philosopher-0 forks-__-pidp1__2_-rfork forks-1- fork
|
||||||
|
1
|
||||||
|
30 0
|
||||||
|
2
|
||||||
|
0 0 2 6
|
||||||
|
0 3 2 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-read philosopher-1 forks--pid-rfork forks-1- fork
|
||||||
|
1
|
||||||
|
30 0
|
||||||
|
2
|
||||||
|
0 1 0 4
|
||||||
|
0 3 2 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-read philosopher-1 forks-__-pidp1__2_-rfork forks-0- fork
|
||||||
|
1
|
||||||
|
28 0
|
||||||
|
2
|
||||||
|
0 1 2 6
|
||||||
|
0 2 2 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-write philosopher-0 forks--pid-wfork forks-0- fork
|
||||||
|
0
|
||||||
|
3
|
||||||
|
0 0 1 5
|
||||||
|
0 2 2 1
|
||||||
|
0 35 -1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-write philosopher-0 forks-__-pidp1__2_-wfork forks-1- fork
|
||||||
|
0
|
||||||
|
3
|
||||||
|
0 0 3 7
|
||||||
|
0 3 2 1
|
||||||
|
0 36 -1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-write philosopher-1 forks--pid-wfork forks-1- fork
|
||||||
|
0
|
||||||
|
3
|
||||||
|
0 1 1 5
|
||||||
|
0 3 2 1
|
||||||
|
0 36 -1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
begin_operator
|
||||||
|
queue-write philosopher-1 forks-__-pidp1__2_-wfork forks-0- fork
|
||||||
|
0
|
||||||
|
3
|
||||||
|
0 1 3 7
|
||||||
|
0 2 2 1
|
||||||
|
0 35 -1 0
|
||||||
|
1
|
||||||
|
end_operator
|
||||||
|
33
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 0
|
||||||
|
2 2
|
||||||
|
27 0
|
||||||
|
8 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 0
|
||||||
|
2 2
|
||||||
|
33 1
|
||||||
|
8 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 1
|
||||||
|
2 2
|
||||||
|
33 0
|
||||||
|
9 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 2
|
||||||
|
3 2
|
||||||
|
29 0
|
||||||
|
10 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 2
|
||||||
|
3 2
|
||||||
|
34 1
|
||||||
|
10 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
0 3
|
||||||
|
3 2
|
||||||
|
34 0
|
||||||
|
11 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 0
|
||||||
|
3 2
|
||||||
|
29 0
|
||||||
|
12 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 0
|
||||||
|
3 2
|
||||||
|
34 1
|
||||||
|
12 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 1
|
||||||
|
3 2
|
||||||
|
34 0
|
||||||
|
13 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 2
|
||||||
|
2 2
|
||||||
|
27 0
|
||||||
|
14 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 2
|
||||||
|
2 2
|
||||||
|
33 1
|
||||||
|
14 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
3
|
||||||
|
1 3
|
||||||
|
2 2
|
||||||
|
33 0
|
||||||
|
15 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
2 2
|
||||||
|
3 2
|
||||||
|
16 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
4 0
|
||||||
|
17 1
|
||||||
|
6 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
4 1
|
||||||
|
18 1
|
||||||
|
6 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
4 2
|
||||||
|
19 1
|
||||||
|
6 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
4 3
|
||||||
|
20 1
|
||||||
|
6 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
4 4
|
||||||
|
21 1
|
||||||
|
6 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
5 0
|
||||||
|
22 1
|
||||||
|
7 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
5 1
|
||||||
|
23 1
|
||||||
|
7 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
5 2
|
||||||
|
24 1
|
||||||
|
7 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
5 3
|
||||||
|
25 1
|
||||||
|
7 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
2
|
||||||
|
5 4
|
||||||
|
26 1
|
||||||
|
7 1 0
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
8 0
|
||||||
|
21 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
9 0
|
||||||
|
17 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
9 0
|
||||||
|
19 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
10 0
|
||||||
|
18 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
11 0
|
||||||
|
20 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
12 0
|
||||||
|
26 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
13 0
|
||||||
|
22 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
13 0
|
||||||
|
24 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
14 0
|
||||||
|
23 0 1
|
||||||
|
end_rule
|
||||||
|
begin_rule
|
||||||
|
1
|
||||||
|
15 0
|
||||||
|
25 0 1
|
||||||
|
end_rule
|
Reference in New Issue
Block a user