Concurrent Constraint Conditional-Branching Timed Interactive Scores
Mauricio Toro, Myriam Desainte-Catherine

TL;DR
This paper introduces a formal model for multimedia interactive scenarios with conditional branching, using ntcc calculus, enabling real-time interaction with declarative constraints.
Contribution
It extends Interactive Scores to include conditional branching within a timed framework using ntcc, and demonstrates real-time prototype implementation.
Findings
Prototype in Ntccrt achieved acceptable real-time response.
Declarative representation of conditions and constraints.
Enhanced expressiveness for multimedia scenario modeling.
Abstract
Multimedia scenarios have multimedia content and interactive events associated with computer programs. Interactive Scores (IS) is a formalism to represent such scenarios by temporal objects, temporal relations (TRs) and interactive events. IS describe TRs, but IS cannot represent TRs together with conditional branching. We propose a model for conditional branching timed IS in the Non-deterministic Timed Concurrent Constraint (ntcc) calculus. We ran a prototype of our model in Ntccrt (a real-time capable interpreter for ntcc) and the response time was acceptable for real-time interaction. An advantage of ntcc over Max/MSP or Petri Nets is that conditions and global constraints are represented declaratively.
| Agent | Meaning |
|---|---|
| tell | Adds to the current store |
| when do | If holds now run |
| local in | Runs with local variable |
| Parallel composition | |
| next | Runs at the next time-unit |
| unless next | Unless holds, next run |
| when do | Chooses s.t. holds |
| Delays P indefinitely | |
| ! | Executes P each time-unit |
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsMultimedia Communication and Technology · Model-Driven Software Engineering Techniques · Mobile Agent-Based Network Management
Concurrent Constraint Conditional-Branching Timed Interactive Scores
Mauricio Toroa*∗* , Myriam Desainte-Catherineb,
a* Universidad EAFIT, Colombia*
b*LaBRI, Université de Bordeaux, France * ∗Corresponding author. Email: mtoro [at] eafit.edu.co
Abstract
Multimedia scenarios have multimedia content and interactive events associated with computer programs. Interactive Scores (IS) is a formalism to represent such scenarios by temporal objects, temporal relations (TRs) and interactive events. IS describe TRs, but IS cannot represent TRs together with conditional branching. We propose a model for conditional branching timed IS in the Non-deterministic Timed Concurrent Constraint (ntcc) calculus. We ran a prototype of our model in Ntccrt (a real-time capable interpreter for ntcc) and the response time was acceptable for real-time interaction. An advantage of ntcc over Max/MSP or Petri Nets is that conditions and global constraints are represented declaratively.
1 Introduction
Interactive multimedia deals with the design of scenarios where multimedia content and interactive events can be associated with computer programs. Designers usually create multimedia for their scenarios, then they bind them to external interactive events or programs. Max/MSP and Pure Data (Pd) [21] are often used to program interactive scenarios. However, we claim for the need of a general model to (i) control synthesis based on human gestures and to (ii) declare relations among multimedia objects (e.g., partial-order relations for their execution).
Interactive Scores (IS) is a formalism for the design of scenarios represented by temporal objects (TOs), temporal relations (TRs) and interactive events. Examples of TOs are videos and sounds. TOs can be triggered by interactive events (usually launched by the user) and several TOs can be active simultaneously. A TO can contain other TOs. The hierarchy allows us to control the start or end of a TO by controlling the start or end of its parent. Moreover, TRs provide a partial order for the execution of the TOs: TRs can be used to express precedence between objects.
IS have been subject of study since the beginning of the century [9], [12]. IS were originally developed for interactive music scores. Recently, the model was extended by Allombert, Desainte-Catherine, Larralde and Assayag in [5]. Hence IS can describe any kind of TOs, Allombert et al.’s model has inspired two applications: iScore [2] to compose and perform Electroacoustic music and Virage [4] to control live spectacles and interactive museums.
IS are successful to describe TRs, but IS have not been used to represent TRs together with conditional branching. Conditional branching is used in programming to describe control structures such as if/else and switch/case. It provides a mechanism to choose the state of a program depending on a condition and its current state.
Using conditional branching, a designer can create scenarios with loops and choices (as in programming). The user and the system can take decisions during performance with the degree of freedom described by the designer –while the system maintains the TRs of the scenario.
The designer can express under which conditions a loop ends; for instance, when the user changes the value of a certain variable, the loop stops; or the system non-deter- ministically chooses to stop.
Unfortunately, there is neither a theoretical model nor a special-purpose application to support conditional branching in interactive multimedia. In this work, we propose a model for conditional-branching timed IS in the Non-deterministic Timed Concurrent Constraint (ntcc) [14] calculus. In our model we combine TRs, conditional branching and discrete interactive events in a single model. We ran a prototype of the model over Ntccrt [34], a real-time capable interpreter for ntcc.
In a previous work [36], we showed how we can represent a multimedia installation with loops and choice111http://www.gmea.net/activite/creation/2007_2008/pPerez.htm, and the pure timed IS model [5] into our model.
1.1 Related work on interactive multimedia
A similar approach to ours was followed by Olarte and Rueda in [15]. They propose a model for IS in a calculus similar to ntcc; however, they only modeled TRs. They verified critical properties on the system. The key point of their model is that the user can change the hierarchical structure of the score during performance.
Another system dealing with a hierarchical structure is Maquettes of OpenMusic [10]. However, OpenMusic is a software for composition and not real-time interaction.
Another kind of systems capable of real-time interaction are score following systems (see [11]). Such systems track the performance of a real instrument and they may play multimedia associated to certain notes of the piece. However, to use these systems it is necessary to play a real instrument; whereas to use IS, the user only has to control some parameters of the piece, such as the start and end dates of the TOs.
A model for multimedia interaction that does not require a real instrument uses Hidden Markov Models to model probabilistic installations [8]. The system tracks human motion and it responds to human performance with chords and pitches depending on the knowledge of previous training. However, the system requires intensive training and it is not a tool for composition.
In the domain of composition of interactive music, there are applications such as Ableton Live222http://www.ableton.com/live/. Using Live, a composer can write loops and a musician can control different parameters of the piece during performance. Live is commonly used for Electronic and Electroacoustic music. Unfortunately, the means of interaction and the synchronization patterns provided by Live are limited.
1.1.1 Formalisms for Interactive Multimedia
To handle complex synchronization patterns and to predict the behavior of interactive scenarios, formalisms such as ntcc and Hierarchical Time Stream Petri Networks (HTSPN) [24] and have been used to model IS [3, 5].
In HTSPN we can express a variety of TRs, but it is not easy to represent global constraints (e.g., the number of TOs playing simultaneously). Instead, ntcc synchronizes processes through a common constraint store, thus global constraints are explicitly represented in such store. We chose ntcc because we can easily represent time, constraints, choice, and we can verify the model.
Another formalism for defining declaratively partial orders of musical processes and audio is Tempo [22]. However, Tempo does not allow us to express choice (when multiple conditions hold), simultaneity and weak time-outs (e.g., perform an action if the condition cannot be deduced). A key aspect is that there is a real-time capable interpreter and automatic verification for Tempo.
At present, there is not an automatic verifier for ntcc. In the declarative view, ntcc processes can be interpreted as linear temporal logic formulae. Ntcc includes an inference system in this logic to verify properties of ntcc models. This inference procedure was proved to be of exponential time complexity [46]. Nevertheless, we believe practical automatic verification could be envisioned for useful subsets of ntcc via model checking (see [13]).
Automated verification for IS will provide information about the correctness of the system to computer scientists. It will also provide important properties about the scenario to its designers and users. It will be possible to verify the absence of deadlocks, and also that certain TOs will be played during performance. This kind of properties cannot be verified in applications with no formal semantics.
1.2 Structure of the paper
The remainder of this paper is structured as follows. Section 2 explains ntcc and Ntccrt. Section 3 states our model for conditional-branching timed IS. Section 4 shows the ntcc definitions of our model. Section 5 explains our implementation using Pd and Ntccrt. Finally, section 6 gives some concluding remarks and future work.
2 The ntcc process calculus
A family of process calculi is Concurrent Constraint Programming (ccp) [23], where a system is modeled in terms of variables and constraints over some variables. The constraints are contained in a common store. There are also agents that reason about the system variables, based on partial information (by the means of constraints).
Formally, ccp is based upon the idea of a constraint system (CS). A constraint system includes a set of (basic) constraints and a relation (i.e., entailment relation ) to deduce a constraint with the information supplied by other constraints.
A ccp system usually includes several CSs for different variable types. There are CSs for variable types such as sets, trees, graphs and natural numbers. A CS providing arithmetic relations over natural numbers is known as Finite Domain (FD). As an example, using a FD CS, we can deduce from the constraints and .
Although we can choose an appropriate CS to model any problem, in ccp it is not possible to delete nor change information accumulated in the store. For that reason it is difficult to perceive a notion of discrete time, useful to model reactive systems communicating with an external environment (e.g., users, lights, sensors and speakers).
Ntcc introduces to ccp the notion of discrete time as a sequence of time units. Each time unit starts with a store (possibly empty) supplied by the environment, and ntcc executes all the processes scheduled for that time unit. In contrast to ccp, in ntcc we can model variables changing values over time. A variable can take different values at each time unit. To model that in ccp, we have to create a new variable each time we change the value of .
Process calculi has been applied to the modeling of interactive music systems [39, 45, 33, 44, 6, 40, 34, 16, 31, 27, 29, 32, 7, 38, 28, 35, 37, 26] and ecological systems [41, 19, 43, 20, 42].
2.1 Ntcc in multimedia interaction
In this section we give some examples on how the computational agents of ntcc can be used with a FD CS. A summary of the agents semantics can be found in Table 1.
- •
Using tell it is possible to add constraints to the store such as , which means that is an integer between 60 and 100.
- •
When can be used to describe how the system reacts to different events; for instance, when do adds the constraint to the current store as soon as the pitch sequence C, E, G has been played.
- •
Parallel composition () makes it possible to represent concurrent processes; for instance, tell when do tell tells the store that is 52 and concurrently assigns the instrument to one, since is in the desired interval (see fig. 1).
- •
Next is useful when we want to model variables changing over time; for instance, when do next tell means that if is equal to 60 in the current time unit, it will be different from 60 in the next time unit.
- •
Unless is useful to model systems reacting when a condition is not satisfied or when the condition cannot be deduced from the store; for instance, unless next tell reacts when is false or when cannot be deduced from the store (e.g., was not played in the current time unit).
- •
Star (*****) can be used to delay the end of a process indefinitely, but not forever; for instance, . Note that to model Interactive Scores we do not use the star agent.
- •
Bang (!) executes a certain process every time unit after its execution; for instance, tell .
- •
Sum () is used to model non-deterministic choices; for instance, when do tell chooses a note among those played previously that belongs to the C major chord.
In ntcc, recursion can be defined (see [46]) with the form , where is the process name and is restricted to call at most once and such call must be within the scope of a next. The reason of using next is that ntcc does not allow recursion within a time unit.
The reader should not confuse a simple definition with a recursive definition; for instance, is a simple definition where the values of and are replaced statically, like a macro in a programming language. Instead, a recursive definition such as is like a function in a programming language.
2.2 Ntccrt: A real-time capable interpreter for ntcc
In the current version of Ntccrt, we can write a ntcc model on either Lisp, Openmusic or C++. For a complete implementation of Interactive Scores, it will be necessary to produce automatically the corresponding ntcc model based on a graphical interface similar to Virage.
To execute a ntcc model it is not necessary to develop an interface because Ntccrt programs can be compiled into stand-alone programs or as external objects (i.e., a binary plugins) for Pd or Max (see fig. 2).
We can use the message passing API provided by Pd and Max to communicate any object with the Ntccrt external. We can also control all the available objects for audio and video processing defined in those languages using Ntccrt. To synchronize those objects, Ntccrt provides an important part of Gecode’s constraints [25].
Ntccrt uses Gecode as its constraint solving library. Contraint solving libraries can be used to solve combinatory problems such as planning systems optimal delivery of packages [1]; however, they can also be used for constriant propagation. Gecode was carefully designed to support efficiently the Finite Domain (FD) constraint system. Ntccrt relies on propagation of FD constraints.
3 Conditional branching timed IS
Points and intervals build up Interactive Scores (IS), thus a score333We still use the term score for historical reasons. (i.e., the specification of a scenario) is defined by a tuple , where is a set of points and is a set of intervals. A temporal object is just a type of interval.
3.1 Points
Intuitively, a point is a predecessor of if there is a relation before . Analogically, a point is a successor of if there is a relation before .
A Point is defined by , where and represent the behavior of the point. Behavior defines whether the point waits until all its predecessors transfer the control to it –Wait for All (WA)– or it only waits for the first of them –Wait for the First (WF)–. Behavior defines whether the point transfers the control to all its successors which conditions hold –No CHoice (NCH)– or it chooses one of them –CHoice (CH)–.
Note that we do not include the set of dates of the point in previous definition. Beurivé et al. argued in [9] that the edition of a hierarchical representation of music using a relative time model requires less variable updates than using an absolute time model. We argue that it is also true during the performance of Interactive Scores. Moreover, in our model it is not easy to know the set of all possible dates a priori because they depend on the choices that the user makes during performance.
3.2 Intervals: TCRs and TOs
An interval before intuitively means that the system waits a certain time to transfer the control from to if the condition in the interval holds. In addition, it executes a process throughout its duration. An interval also has a nominal duration that may change during the performance. The nominal duration is computed during the edition of the scenario using constraint programming (see [3]. Formally, an interval is a tuple composed by {itemize*}
a start point
an end point
a condition
a duration
an interpretation for the condition
a local constraint
a process
parameters for the process
children
local variables
It is not practical to include all those elements explicitly; thus, we have identified two types of intervals. timed conditional relations (TCRs) have a condition and an interpretation , but they do not have children, their local constraint is true, and their process is 444 is a process that does nothing.. Temporal objects (TOs) may have children, local variables and a local constraint, but their condition is true, and their interpretation is (i.e., when the condition is true, it transfers the control from to ).
To have a coherent score, we must define a TCR between the start point of each father and the start point of at least one of its children. However, it is not required to connect a child to the end point of its father. Furthermore, in our model we may define multiple TCRs and TOs between two points. This does not introduce an incoherence in the model because the behavior of those intervals (as any interval) depends on the behavior of the points and the parameters of the interval.
3.2.1 Timed Conditional Relations (TCRs)
A timed conditional relation (TCR) is defined by , where and are the points involved in the relation. The condition determines whether the control jumps from to (i.e., the control is transferred from to ). The interpretation of is . There are two possible values for : (i) when means that if holds, the control jumps to ; and (ii) unless means that if does not hold or its value cannot be deduced from the environment (e.g., and ), the control jumps to .
A duration is flexible if it can take any value, rigid if it takes values between two fixed integers and semi-rigid if it takes values greater than a fixed integer. In our model, we always respect flexible durations. Our model is based upon transferring the control from one point to another. For that reason, it is not always possible to respect rigid and semirigid durations; for instance, when a point waits for an event or when it is followed by a choice.
3.2.2 Temporal objects (TOs)
A temporal object (TO) is defined by where is a point that starts a new instance of and ends such instance. A constraint is attached to , it contains local information for and its children. The duration is . A process which executes throughout the duration of is . The list of parameters for the process is . The set of TOs embedded in is , which are called children of . Finally, represents the local variables defined for the TO that can be used by ’s children, process and local constraint.
3.3 Example: A loop controlled by a condition
The following example (see fig. 3) describes a score with a loop. During the execution, the system plays a silence of one second. After the silence, it plays the sound during three seconds and simultaneously it turns on the lights for one second. After the sound , it plays a silence of one second, then it plays video . If the variable becomes true, it ends the scenario after playing the video ; otherwise, it jumps back to the beginning of the first silence after playing the video .
To define the score of this scenario, we define a local boolean variable in , and we use it as the condition for some TCRs. Note that the silence between and lasts one second in the score, but during execution it is longer because of the behavior of the points.
The points have the following behavior. The end point of () is enabled for choice, and the other points transfer the control to all their successors. The start point of () waits for all its predecessors to transfer the control to it, and all the other points wait for the first predecessor that transfers the control to them.
Formally, the points are defined
As an example, Waits for the first predecessor (WF) and makes a choice (CH).
The TOs are defined by
As an example, is composed by points and , it has a flexible duration, its process is silence, its children are , and and its local variable is .
In what follows we present the TCRs
As an example, the first one is a TCR between points and , its condition is true, its interpretation is and its duration is one.
Finally, is the set of intervals composed by the TOs and the TCRs and is the score.
3.4 Limitations: Rigid durations and choice
In some cases (e.g., fig. 3), we can respect rigid durations of TOs during performance. Unfortunately, there is not a generic way to compute the value of a rigid duration in a score with conditional branching. The problem is that choices do not allow us to predict the duration of a TO’s successor; therefore, it is not possible to determinate a priori the duration of all the TOs.
Figure 4 shows a scenario where we cannot respect rigid durations. , and have fixed durations, but can take different values between and . Since there is no way to predict whether or will be chosen after the execution of , we cannot compute a coherent duration for before the choice.
4 Our ntcc model of IS
In this section we define our ntcc model. We define processes for some combinations of the behaviors of a point. The definition of an interval can be used for both timed conditional relations and temporal objects. To represent intervals we create a graph with the predecessors and successors of each point using the variables and . For simplicity, we do not include hierarchy, we only model the interpretation , we can only declare a single interval between two points, and we can only execute a single instance of an interval at the same time.
4.1 Points: Three combinations of behaviors
We only include three type of points: points that choose among their successors (), points that transfer the control to all their successors (), and points that wait for all their predecessors to transfer the control to them (). The first two types of points wait for the first predecessor that transfers the control to them to be active.
Points are modeled using Finite Domain constraints; for instance, to know if at least one point has transferred the control to the point , we ask to the store if the boolean or () constraint applied to the relation can be deduced from the store (where is the set of identifiers for each point).
When all the expected predecessors transfer the control to the point , we say that the point is active (i.e., holds). Analogaly, when a point transfers the control to a point , we add the constraint
.
In order to represent the choice between points and , we use the variable in the process. Note that is equivalent to , and is equivalent to .
whenever do (tell
when do tell ()
+when do tell ())
The following definition uses the agent to transfer the control to all the successors of the point . The agent represents the parallel composition in a compact way.
tell
\|$$\prod_{j\in P} when do
tell ())
Using the definition , we define the two points that transfer the control to all its successors.
whenever do
To wait for all the predecessors, we ask the store if the constraint holds.
whenever do
4.2 Intervals: TCRs and TOs
Intervals are modeled by two recursive definitions. These definitions model both TOs and TCRs because intervals only change the value of an variable, thus they only control the start and end of their processes.
Process waits until at least one point transfers the control to its start point , and at least one point has been chosen by another point to transfer the control to its destination . When such conditions hold, it waits until the duration of the interval is over555nextd is a process next nested times ()., then it transfers the control from point to . It also adds a constraint on the corresponding set of predecessors and successors.
!(tell () tell ())
whenever
do(
nextd(tell ))
adds the constraint until the time unit after the point becomes active. This definition maintains the coherence of points.
unless next
tell ())
4.3 The example 3.3 on ntcc
The example presented on figure 3 can be easily modeled in ntcc. is a process representing a user that tells to the store that is not true during the first time units, then it tells that is true. Note that an advantage of ntcc is that the constraint can be easily replaced by more complex ones; for instance, it can be replaced by . Constraint can be, for instance, “there are only three active points at this moment in the score” (i.e., ).
when do tell
unless next tell
next
tell ()
5 Implementation in Ntccrt and Pd
We implemented the previous example in Ntccrt and Pure Data (Pd) (fig. 5). We replaced the process with a user input for the variable . We generated a Ntccrt external (i.e., a binary plugin) for Pd with our ntcc model.
The external has two inputs: one for the clock ticks and one for the value of . The input for the clock ticks can be connected to a metronome object to have a fixed duration for every time unit during the performance. The reader can find a discussion of executing time units with fixed durations in [34].
The Ntccrt external outputs a boolean value for each point, indicating whether it is active or not. Using such values, we can control the start and end of , and , which are processes defined in Pd.
5.1 Results: Performance and usability of Ntccrt
We built automatically Interactive Scores (IS) with a number of points666The exact number of points is . and relations in the order of , with from two to ten (see fig. 6). We ran each score 100 times as a stand-alone program. The duration of a time unit is determined by the time taken by Ntccrt to calculate the output, not by an external clock. The tests were performed on an iMac 2.6 GHz with 2 GB of RAM under Mac OS 10.5.7. It was compiled with GCC 4.2 and liked to Gecode 3.2.2.
The authors of the Continuator [18] argue that a multimedia interaction system with a response time less than 30 ms is able to interact in real-time with even a very fast guitar jazz player. Therefore, our results (fig. 7) are acceptable for real-time interaction with a guitarist for up to 1000 points (around 500 TOs). We conjecture that a response time of 20 ms is appropriate to interact with a very fast percussionist. In that case, we can have up to 400 TOs.
5.1.1 Usability of Ntccrt
We found out intuitive to write ntcc models in Ntccrt, to someone familiar with ntcc, because it provides a Lisp interface with a syntax similar to ntcc; for instance,
is written as
(defproc PredecessorsWait (i j) (unlessp (v=? (ActivePoint i) j) (||(call PredecessorsWait i j) (tell= (ArrivedPoint j i) 1))))
It is slightly harder to write the same definition in C++
class predecessorsWait:public proc{ public: AskBody* predecessorsWait::operator()( Space* h, vector<int> intparameters, vector<variable *> variableparameters) {return unless(eq(ActivePoint[i][j]), parallel(call(PredecessorWait,i,j), tellEqual(ArrivedPoint[i][j],1)));}};
6 Concluding remarks
We developed a model for multimedia interaction with con- ditional-branching and temporal relations based on points and intervals. We implemented it using Ntccrt and Pure Data (Pd). We conclude from performance results that our prototype is compatible with real-time interaction for a reasonable amount of points and relations. An existing implementation of Interactive Scores model is also capable of real-time and it can easy respect rigid durations, but such model does not support loops nor choice.
For simplicity, in our prototype we do not include hierarchy, we only model the interpretation , we can only declare a single interval between two points, we can preserve rigid durations only in a few cases , and we can only execute a single instance of an interval at the same time.
An advantage of ntcc with respect to previous models of Interactive Scores, Pd, Max and Petri Nets is representing declarative conditions by the means of constraints. Complex conditions, in particular those with an unknown number of parameters, are difficult to model in Max or Pd. To model generic conditions in Max or Pd, we would have to define each condition either in a new patch or in a predefined library. In Petri nets, we would have to define a net for each condition.
6.1 Future work
Ntccrt is not yet an interface for composers and designers of multimedia scenarios. For them is much more intuitive an interface such as Virage [4]. A graphical interface for our model should provide the means to specify the score as done in Example 3.3
Once we have the graphical interface, we plan to model audio processes in ntcc and replace them in the implementation by Faust programs [17] which also have formal semantics. Using Faust, we can gain efficiency and preserve the formal properties of our model (see [30] for a description of this idea).
7 Acknowledgements
We want to acknowledge Joseph Larralde and Camilo Rueda for their valuable comments on this model, and Andrés Porras for his editing contributions.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1[1] M. Agudelo-Toro, C. Patiño-Forero, and M. Toro. Planning system for deliveries in Medellín. Ar Xiv e-prints , Nov. 2016.
- 2[2] A. Allombert, G. Assayag, and M. Desainte-Catherine. Iscore: a system for writing interaction. In Proc. of DIMEA ’08 , pages 360–367, New York, NY, USA, 2008. ACM.
- 3[3] A. Allombert, G. Assayag, M. Desainte-Catherine, and C. Rueda. Concurrent constraint models for interactive scores. In Proc. of SMC ’06 , May 2006.
- 4[4] A. Allombert, P. Baltazar, R. Marczak, M. Desainte-Catherine, and L. Garnier. Designing an interactive intermedia sequencer from users requirements and theoretical background. In Proc. of ICMC 2010 , 2010.
- 5[5] A. Allombert, M. Desainte-Catherine, J. Larralde, and G. Assayag. A system of interactive scores based on qualitative and quantitative temporal constraints. In Proc. of Artech 2008 , 2008.
- 6[6] A. Allombert, M. Desainte-Catherine, and M. Toro. Modeling temporal constrains for a system of interactive score. In G. Assayag and C. Truchet, editors, Constraint Programming in Music , chapter 1, pages 1–23. Wiley, 2011.
- 7[7] J. Aranda, G. Assayag, C. Olarte, J. A. Pérez, C. Rueda, M. Toro, and F. D. Valencia. An overview of FORCES: an INRIA project on declarative formalisms for emergent systems. In P. M. Hill and D. S. Warren, editors, Logic Programming, 25th International Conference, ICLP 2009, Pasadena, CA, USA, July 14-17, 2009. Proceedings , volume 5649 of Lecture Notes in Computer Science , pages 509–513. Springer, 2009.
- 8[8] C. G. Baltera, S. B. Smith, and J. A. Flanklin. Probabilistic interactive installations. In Proc. of FLAIRS Conference ’07 , pages 553–558, 2007.
