Îõ³h*6È4úÖ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTU0.2.0.0(c) Michael Szvetits, 2020BSD3 (see the file LICENSE)typedbyte@qualified.namestableportable Safe-InferredH propeller.Represents a potential change of a cell value. propeller>Indicates that a cell value has been changed to the new value a. propellerÆIndicates that a cell value did not change, i.e. needs no propagation. propellerØIndicates that a new cell value contradicts the one that is already stored in the cell.(c) Michael Szvetits, 2024BSD3 (see the file LICENSE)typedbyte@qualified.namestableportable Safe-Inferred~- propellerÌRepresents possible errors that may occur when modifying or using a network. propeller&The specified cell could not be found. propeller,The specified connection could not be found. propeller&The specified did not produce a value. propellerÖThe old value of the specified cell is incompatible with a new value propagated to it.  propellerÝThe specified cell propagated a value to itself (directly or indirectly), leading to a cycle.  propellerWhen connecting cells, the  1 defines the initial behaviour of the connection.  propellerÐThe connection immediately starts to propagate data between the connected cells.  propellerËThe connection is established, but no initial data propagation takes place.  propellerÀNetwork modifications and data propagations are captured by the   monad. propellerøApplies modifications captured by the propagator monad to a network, thus producing a new network if no error occurred. propellerÎA network consists of cells and connections which propagate data between them. propeller;Represents a unique identification of a network connection. propeller5Represents a unique identification of a network cell.V propeller2Represents a network cell holding a value of type a. propellerRepresents an empty network. propellerŽConstructs a new cell with a given initial value and a function which defines how to react if a new value is about to be written to the cell. propeller#Reads the value of a specific cell. propellerøWrites a new value to a specific cell and starts to propagate potential changes through the network of connected cells. propeller×Removes a cell from the network. This also removes all connections related to the cell. propeller?If the content of a cell is an accumulation of multiple values [b], and every value b itself can be used as content a. for the cell, then we can write every value bÙ one after another to the cell and check if the network converges to a successful state.—As a result, we can enumerate all possible combinations of valid values for a given set of cells. This is often used in constraint solving algorithms.ÃThis function does not perform any permanent network modifications. propelleróConnects a source cell to a target cell in order to propagate changes from the source to the target. The returned + can be used to remove the connection via &. propellerSame as , but discards the returned . propeller‡Connects and synchronizes two cells, i.e. new values are propagated from the source to the target cell, and vice versa. Short form of  W W. propellerSame as , but discards the returned s. propellerÄConnects and synchronizes two cells using two translation functions f and gË, i.e. new values are propagated from the source to the target cell using f, and vice versa using g. propellerSame as , but discards the returned s. propeller÷Connects two source cells to a target cell in order to propagate changes from the sources to the target. The returned + can be used to remove the connection via &. propellerSame as , but discards the returned .  propellerûConnects several source cells to a target cell in order to propagate changes from the sources to the target. The returned + can be used to remove the connection via &.! propellerSame as  , but discards the returned ." propellerüConnects a source cells to several target cells in order to propagate changes from the source to the targets. The returned + can be used to remove the connection via &.# propellerSame as ", but discards the returned .$ propellerƒConnects several source cells to several target cells in order to propagate changes from the sources to the targets. The returned + can be used to remove the connection via &.% propellerSame as $, but discards the returned .& propeller&Removes a connection from the network.' propeller plus s a b c= connects three cells using the following propagation schema:a + b is propagated to c if a or b changes.c - b is propagated to a if b or c changes.c - a is propagated to b if a or c changes.( propeller minus s a b c= connects three cells using the following propagation schema:a - b is propagated to c if a or b changes.b + c is propagated to a if b or c changes.a - c is propagated to b if a or c changes.) propeller times s a b c= connects three cells using the following propagation schema:a * b is propagated to c if a or b changes.* propellertimesWith divOp s a b c= connects three cells using the following propagation schema:a * b is propagated to c if a or b changes. divOp c b is propagated to a if b or c changes. divOp c a is propagated to b if a or c changes.+ propeller abs s a b; connects two cells using the following propagation schema:|a| is propagated to b if a changes., propellerabsWith inv s a b; connects two cells using the following propagation schema:|a| is propagated to b if a changes.inv b is propagated to a if b changes.- propeller negate s a b; connects two cells using the following propagation schema:-a is propagated to b if a changes.-b is propagated to a if b changes.. propeller signum s a b; connects two cells using the following propagation schema:Prelude.signum a is propagated to b if a changes./ propellersignumWith inv s a b; connects two cells using the following propagation schema:Prelude.signum a is propagated to b if a changes.inv b is propagated to a if b changes. propellerThe initial value of the cell. propellerøA function that describes how to join an existing cell value with a new one that the cell has received via propagation. propeller1The identification of the newly constructed cell.0    !"#$%&'()*+,-./0    !"#$%&'()*+,-./(c) Michael Szvetits, 2024BSD3 (see the file LICENSE)typedbyte@qualified.namestableportable Safe-Inferred4Â? propeller+The type of a cell holding a value of type a. The type parameter sß serves to keep the internal states of different cell networks separate from each other (see X for details).@ propellerÖThe result of a propagation which allows to rollback changes and inspect its success.A propellerÜAn action that reverts all cell changes of a propagation (both direct and transitive ones).B propellerYÔ if the propagation was successful (i.e., it did not lead to a cell change that is  ), otherwise Z.ÉNote that unsuccessful propagations are not automatically reverted. Use A to do this.C propellerŽConstructs a new cell with a given initial value and a function which defines how to react if a new value is about to be written to the cell.D propeller#Reads the value of a specific cell.E propellerøWrites a new value to a specific cell and starts to propagate potential changes through the network of connected cells.F propelleråConnects a source cell to a target cell in order to propagate changes from the source to the target.äNote that newly connected cells do not start to propagate changes immediately after wiring up. Use I or J to do this.G propeller‡Connects and synchronizes two cells, i.e. new values are propagated from the source to the target cell, and vice versa. Short form of H [ [.äNote that newly connected cells do not start to propagate changes immediately after wiring up. Use I or J to do this.H propellerÄConnects and synchronizes two cells using two translation functions f and gË, i.e. new values are propagated from the source to the target cell using f, and vice versa using g.äNote that newly connected cells do not start to propagate changes immediately after wiring up. Use I or J to do this.I propeller•Propagates the value of a specific cell to its connected cells in a transitive manner. The propagation ends if no more cell changes occur or if an " cell value change is encountered.J propeller—Propagates the values of specific cells to their connected cells in a transitive manner. The propagation ends if no more cell changes occur or if an " cell value change is encountered.K propellerIf the content of a Cell s a' is an accumulation of multiple values [b], and every value b itself can be used as content a. for the cell, then we can write every value bÙ one after another to the cell and check if the network converges to a successful state.—As a result, we can enumerate all possible combinations of valid values for a given set of cells. This is often used in constraint solving algorithms.L propeller plus a b c= connects three cells using the following propagation schema:a + b is propagated to c if a or b changes.c - b is propagated to a if b or c changes.c - a is propagated to b if a or c changes.M propeller minus a b c= connects three cells using the following propagation schema:a - b is propagated to c if a or b changes.b + c is propagated to a if b or c changes.a - c is propagated to b if a or c changes.N propeller times a b c= connects three cells using the following propagation schema:a * b is propagated to c if a or b changes.O propellertimesWith divOp a b c= connects three cells using the following propagation schema:a * b is propagated to c if a or b changes. divOp c b is propagated to a if b or c changes. divOp c a is propagated to b if a or c changes.P propellerabs a b; connects two cells using the following propagation schema:|a| is propagated to b if a changes.Q propellerabsWith inv a b; connects two cells using the following propagation schema:|a| is propagated to b if a changes.inv b is propagated to a if b changes.R propeller negate a b; connects two cells using the following propagation schema:-a is propagated to b if a changes.-b is propagated to a if b changes.S propeller signum a b; connects two cells using the following propagation schema:Prelude.signum a is propagated to b if a changes.T propellersignumWith inv a b; connects two cells using the following propagation schema:Prelude.signum a is propagated to b if a changes.inv b is propagated to a if b changes.C propellerThe initial value of the cell. propellerýA function that describes how to join an existing cell value with a new one that the cell has received via propagation. propellerThe newly constructed cell.F propellerThe source cell. propellerThe target cell. propellerøA function that describes how the value for the target cell is constructed, based on the value of the source cell. propeller2Note that no propagation takes place (i.e., no @ is returned).K propellerÁA function which extracts testable values from a cell content. propellerãA function which translates a testable value into a value which can be written back to the cell. propeller5The set of cells for which the values are enumerated. propeller2Returns all valid assignments for the given cells.@AB?CDEKFGHIJLMNOPQRST@AB?CDEKFGHIJLMNOPQRSTÜ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG!HI,-./01234JDKLMKNOPQRPQSKTUÖ(propeller-0.2.0.0-Jnvp0zpe3J1CUPwonmYg5RData.PropagatorData.Propagator.ST propellerData.Propagator.ChangeChangeChanged Unchanged IncompatibleError InvalidCellInvalidConnect NoPropagationConflictCycle ConnectStateLiveIdle Propagator runPropagatorNetwork ConnectKeyCellKeyemptycellreadCell writeCell removeCelllabelconnectconnect_syncsync_syncWith syncWith_combinecombine_ combineMany combineMany_ distribute distribute_ manyToMany manyToMany_ disconnectplusminustimes timesWithabsabsWithnegatesignum signumWith$fMonadPropagator$fApplicativePropagator$fFunctorPropagator $fEqError $fOrdError $fShowError$fEqConnectState$fOrdConnectState$fShowConnectState$fEqConnectKey$fOrdConnectKey$fShowConnectKey $fEqCellKey $fOrdCellKey $fShowCellKeyCell Propagationundo succeeded propagate propagateMany$fEqCellbase GHC.MaybeJustGHC.STSTghc-prim GHC.TypesTrueFalseGHC.Baseid