Skip to main content
. 2020 Aug 10;6:e288. doi: 10.7717/peerj-cs.288
1. for each l in [maxLevel..0] do
2. for each i in [0..M.funConditions[l].length] do
3. if checkCondition(M.funConditions[l][i]) == true do
4. elementPairs = cartesianProduct(CurrentM.Elements[l], TargetM.Elements[l])
5. for each j in [0..elementPairs.length]
6. if profTransition(M.vzLinkingFun[l][i](elementPairs[j].first, elementPairs[j].second)=true do
7. M.AchievedFrom[l] = add(M.AchievedFrom[l], elementPairs[j].first)
8. M.AchievedTo[l] = add(M.AchievedTo[l], elementPairs[j].first)
9. M.AchievedWith[l] = add(M.AchievedWith[l], M.vzLinkingFun[l][i])
10. M.AchivedWhile[l] = add(M.AchivedWhile[l], checkCondition[l][i])
11. remove(M.NonProven[l+1], elementPairs[j].second)
12. else
13. M.NonProven[l]= add(M.NonProven[l], elementPairs[j].second)
14. end
15. if M.NonProven[l].length != 0 && maxLevel != 0 do
16. FindAchievableElements(maxLevel-1, M, CurrentM, TargetM)
17. end
18. return M