8>=      !"#$%&'()*+,-./0123456789:;<Safe=A data type for handlers.>Default action.?Ignore the signal.@>Handle the signal in a new thread when the signal is received.ALike @(, but only handle the first such signal.B%An operating system specific handler.C8A data type for signals. This can be extended as needed.DControl-C event.E-TERM signal (POSIX) or Close event (Windows).FFInstall a handler for the given signal. The old handler is returned. GmRun a block of code with a given signal handler. The previous handler is restored when the block terminates.HMap an abstract C to a POSIX specific I.JMap a = to a POSIX specific handler.KPOSIX implementation of F.=>?@ABCDEFGHJK =>?@ACDEFG=>?@ABCDEFGHJKSafe9;<=?[LThe L type class is used to implement functions that have a variable number of arguments. It provides a family of type isomorphisms fun "E args -> res,where Gfun = a1 -> a2 -> ... -> an -> res, args = (a1, (a2, (..., (an, ())))).M"Multiple curry: map a function (a [sub 1], (a[sub 2], ( &, ())) ! b to its curried form a [sub 1] ! a[sub 2] ! & ! b.N"Multiple uncurry: map a function a [sub 1] ! a[sub 2] ! & ! b to its uncurried form (a [sub 1], (a[sub 2], ( &, ())) ! b.O$Often a low-level function, such as  qcdata_zip and qcdata_promote, throws an error because of a failure of some low-level condition, such as "list too short". To produce error messages that are meaningful to user-level code, these functions do not have a hard-coded error message. Instead, they input a stub error message.FA meaningful error message typically consists of at least three parts:^the name of the user-level function where the error occurred, for example: "reverse_generic";swhat the function was doing when the error occurred, for example: "operation not permitted in reversible circuit";Ka specific low-level reason for the error, for example: "dynamic lifting".|Thus, a meaningful error message may be: "reverse_generic: operation not permitted in reversible circuit: dynamic lifting".The problem is that the three pieces of information are not usually present in the same place. The user-level function is often a wrapper function that performs several different mid-level operations (e.g., transforming, reversing). The mid-level function knows what operation was being performed when the error occurred, but often calls a lower-level function to do the actual work (e.g., encapsulating).Therefore, a stub error message is a function that inputs some lower-level reason for a failure (example: "list too short") and translates this into a higher-level error message (example: "qterm: shape of parameter does not data: list too short").Sometimes, the stub error message may also ignore the low-level message and completely replace it by a higher-level one. For example, a function that implements integers as bit lists may wish to report a problem with integers, rather than a problem with the underlying lists.P The type P a b# consists of isomorphisms between a and b, i.e. pairs (f,g ) such that g.f == id :: a -> a, f.g == id :: b -> b. As with e.g. Haskell s Q class, it is not possible in general to guarantee that the intended laws hold; it is the programmer s responsibility to ensure this.Under the hood, P and R= are in fact the same; they differ just in the API exposed. R The type R a b witnesses the fact that a and bL are the same type. In other words, this type is non-empty if and only if a = bh. This property is not guaranteed by the type system, but by the API, via the fact that the operators  relexivity, S, and T are the only exposed constructors for this type. The implementation of this type is deliberately hidden, as this is the only way to guarantee its defining property.Identity types are useful in certain situations. For example, they can be used to define a data type which is polymorphic in some type variable xC, and which has certain constructors that are only available when x7 is a particular type. For example, in the declaration Gdata ExampleType x = Constructor1 x | Constructor2 x (Identity x Bool), Constructor1 is available for all x, but  Constructor2 is only available when x = U.VThe identity monad. Using m = V2 gives useful special cases of monadic functions.WkA string buffer holds a string that is optimized for fast concatenation. Note that this is an instance of X , and hence X operations (in particular Y]) can be applied to string buffers. The following functions are synonyms of the respective X- functions, and are provided for convenience.X{The type of bidirectional lists. This is similar to [a], but optimized for fast concatenation and appending on both sides.Z-The type of bit vectors. True = 1, False = 0.[A [ is just like an \E, except that it supports some additional efficient operations: to find the smallest unused key, to find the set of all keys ever used in the past, and to reserve a set of keys so that they will not be allocated. Moreover, it keeps track of the highest key ever used (whether or not it is still used in the current map).]3Apply a function to a specified position in a list.^7Overwrite an element at a specified position in a list._$Check whether a list has duplicates.`` string character replacement$: Replace the first occurrence of  character in string by  replacement.a$Insert the elements of a list in an b (cf. c).d%Insert the given key-value pair in a e`, but only if the given key is not already present. If the key is present, keep the old value.f Take two \s m [sub 1] and m[sub 2], and form a new \ whose domain is that of m[sub 2], and whose value at k is the pair (m [sub 1] ! k, m [sub 2] ! k$). It is an error if the domain of m)[sub 2] is not a subset of the domain of m[sub 1].g Take two \'s with the same domain, and form a new \Y whose values are pairs. It is an error if the two inputs don't have identical domains.hLike gE, but also takes an error message to use in case of domain mismatch.i%Map a function over all values in an \.jMonadic version of i(. Map a function over all values in an \.kDelete a key from the [.lDelete a list of keys from a [.m#Insert a new key-value pair in the [. n(Insert a list of key-value pairs in the [.o"Look up the value at a key in the [ . Return p if not found.q&Check whether the given key is in the [.r The empty [.s!Return the first free key in the [%, but without actually using it yet.tReturn the next k unused keys in the [', but without actually using them yet.u Convert a [ to an \.v*Return the smallest key never used in the [.w,Return the set of all keys ever used in the [.x A wire is dirty& if it is touched but currently free. yReserve a key in the [. If the key is not free, do nothing. The key must have been used before; for example, this is the case if it was returned by x.zReserve a set of keys in the [. For any keys that are not free, do nothing. All keys must have been used before; for example, this is the case if they were returned by x.{Unreserve a key in the [. If the key is currently used, do nothing. The key must have been reserved before, and (therefore) must have been used before.| Unreserve a list of keys in the [. If any key is currently used, do nothing. All keys must have been reserved before, and (therefore) must have been used before.}Make an exact copy of the [, except that the set of touched wires is initially set to the set of used wires. In other words, we mark all free and reserved wires as untouched.~Like H, but also pass a loop counter to the function being iterated. Example: )loop_with_index 3 x f = f 2 (f 1 (f 0 x))Monadic version of ~. Thus,  loop_with_indexM 3 x0 fwill do the following: ?do x1 <- f 0 x0 x2 <- f 1 x1 x3 <- f 2 x2 return x3Iterate a function n times. Example: loop 3 x f = f (f (f x))Monadic version of .A right-to-left version of T: Evaluate each action in the sequence from right to left, and collect the results.Same as , but ignore the result.A "strict" version of C, i.e., raises an error when the lists are not of the same length.Like F, but also takes an explicit error message to use in case of failure.A "right strict" version of K, i.e., raises an error when the left list is shorter than the right one.  A version of F that also takes an explicit error message to use in case of failure.A "strict" version of C, i.e., raises an error when the lists are not of the same length.A "right strict" version of J, i.e., raises an error when the right list is shorter than the left one.A right-to-left version of zipWithMr, which is also "right strict", i.e., raises an error when the right list is shorter than the left one. Example: -zipRightWithM f [a,b] [x,y] = [f a x, f b y],computed right-to-left.Same as  zipRightWithM, but ignore the result.FFold over two lists with state, and do it right-to-left. For example, 'foldRightPairM (w0, [1,2,3], [a,b,c]) fwill do the following: Mdo w1 <- f (w0, 3, c) w2 <- f (w1, 2, b) w3 <- f (w2, 1, a) return w3Like , but ignore the final result.3Combine right-to-left zipping and folding. Example: fold_right_zip f (w0, [a,b,c], [x,y,z]) = (w3, [a',b',c']) where f (w0,c,z) = (w1,c') f (w1,b,y) = (w2,b') f (w2,a,x) = (w3,a')Monadic version of .A "for" loop. Counts from a to b in increments of s.Standard notation:  6for i = a to b by s do commands end forOur notation: &for a b s $ \i -> do commands endforrMark the end of a "for"-loop. This command actually does nothing, but can be used to make the loop look prettier.FIterate a parameter over a list of values. It can be used as follows: Rforeach [1,2,3,4] $ \n -> do <<<loop body depending on the parameter n>>> endfor.The loop body will get executed once for each n " {1,2,3,4}.+Every monad is a functor. Input a function f : a ! b and output m f : m a ! m b.?Remove an outer application of a monad from a monadic function.Take two functions f : a ! b and g : c ! d, and return f " g : a " c ! c " d.Monadic version of .Take two functions f : a ! b and g : c ! d, and return f g : a c ! c d.Monadic version of mappair.A version of the  function that returns an .Convert an integer to a bit vector. The first argument is the length in bits, and the second argument the integer to be converted. The conversion is big-headian (or equivalently, little-tailian), i.e., the head of the list holds the integer's most significant digit.Convert an integer to a bit vector. The first argument is the length in bits, and the second argument the integer to be converted. The conversion is little-headian (or equivalently, big-tailian), i.e., the head of the list holds the integer's least significant digit.Convert a bit vector to an integer. The conversion is big-headian (or equivalently, little-tailian), i.e., the head of the list holds the integer's most significant digit. This function is unsigned, i.e., the integer returned is "e 0.+Convert a bit vector to an integer, signed.#Exclusive or operation on booleans.&Exclusive or operation on bit vectors.+A general list-to-string function. Example: ;string_of_list "{" ", " "}" "{}" show [1,2,3] = "{1, 2, 3}" b s: if b =  , return s;, else the empty string. This function is for convenience.Convert a List to a X. Convert a X to a List.YFast concatenation of Xs or string buffers. The empty X.Concatenate a list of Blists.$Convert a string to a string buffer.$Convert a string buffer to a string.The empty string buffer.%Concatenate a list of string buffers.Witness the fact that a=a.SWitness the fact that a=b implies b=a.TWitness the fact that a=b and b=c implies a=c.The identity function  : a ! b, provided that a and b are the same type."Map forwards along an isomorphism.#Map backwards along an isomorphism.jLMNOPRVWXZ[]^_`adfghijklmnoqrstuvwxyz{|}~YSTVLMNORVWXZ[]^_`adghijklmnoqrstuvxz|}~YSTaLMNOPRVWXZ[]^_`adfghijklmnoqrstuvwxyz{|}~YSTSafeyExit with an error message after a command line error. This also outputs information on where to find command line help.(Parse a string to an integer, or return p on failure.0Parse a string to a list of integers, or return p on failure.Parse a string to a  , or return p on failure.In an association list, find the key that best matches the given string. If one key matches exactly, return the corresponding key-value pair. Otherwise, return a list of all key-value pairs whose key have the given string as a prefix. This list could be of length 0 (no match), 1 (unique match), or greater (ambiguous key). Note: the keys in the association list must be lower case. The input string is converted to lower case as well, resulting in case-insensitive matching.Pretty-print a list of possible values for a parameter. The first argument is the name of the parameter, and the second argument is its enumeration.None:Available output formats.!Encapsulated PostScript graphics./Portable Document Format. One circuit per page.!PostScript. One circuit per page.%A textual representation of circuits.TDon't print anything, but preview directly on screen (requires the external program acroread). Print statistics on gate counts.$Annotated gate counts of circuits. Gate counts of circuits. A data type analogous to &, but with extra annotations, e.g. a ,, for use in the computation of gate counts.[A data type representing equivalence classes of basic gates, for the output of gatecounts.vAn abbreviated representation of the controls of a gate: the number of positive and negative controls, respectively.A @ is a map from wire id's to pairs of a wiretype and a starting x -coordinate.7A data type that holds all the customizable parameters. The RenderFormat to use. The color of the background. 3The color of the foreground (e.g. wires and gates).  Line width./Gap for double line representing classical bit.&Radius of dots for "controlled" gates.Radius of oplus for "not" gate.Horizontal column width.3Difference between width of box and width of label.Height of labelled box.*Width and height of "cross" for swap gate.Vertical shift for text labels.Width of "bar" bar.Height of "bar" bar.Width of "D" symbol.Height of "D" symbol.Maximal width of a gate label.Maximal width of a wire label.Maximal width of a wire number. Font to use for labels on gates.Font to use for comments.Color to use for comments. Font to use for labels.!Color to use for labels."Font to use for numbers.#Color to use for numbers.$;Whether to label each subroutine call with shape parametersDetermine whether a named gate is self-inverse. The kind of a gate is uniquely determined by its name, and the number of input wires and generalized controls.For now, we only recognize X, Y, Z, H, "not", "swap", and WR as self-inverse; it is not currently possible for user code to extend this list.]Given a map of wiretypes, and a gate, update the wiretype in the map if the gate changes it. Convert a  to the string in the format "name ", shape "x".Generate an ASCII representation of a control. As controls are stored as untyped wires, we can lookup the wiretype in the current map and annotate the control if it's classical.7Generate an ASCII representation of a list of controls.3Generate an ASCII representation of a NoControlFlag2Generate an ASCII representation of a single gate.0Generate an ASCII representation of a gate list./Generate an ASCII representation of a wiretype.6Generate an ASCII representation of a type assignment.UGenerate an ASCII representation of an arity, preceded by a title (input or output).]Generate an ASCII representation of an ordered arity, preceded by a title (input or output).IGenerate an ASCII representation of a low-level ordered quantum circuit.@Generate an ASCII representation of a low-level quantum circuit.%GGenerate an ASCII representation of a low-level boxed quantum circuit.7Generate an ASCII representation of a named subroutine.~Write a prompt to get input from the user. Since the prompt doesn't include a newline, the output must be flushed explicitly.&Interactively read a bit (either 0 or 1) from standard input. This is intended for interactive user input, so it skips white space until a 0 or 1 is encountered. In case the first non-whitespace character isn't 0 or 1 or #I, the rest of the line is ignored and the user is prompted to try again.However, this also works for non-interactive input, so that the input can be redirected from a file. In this case, the characters 0 and 1 and whitespace, including newlines, can be interspersed freely. '#<' starts a comment that extends until the end of the line. &Embed a read-write computation in the  monad, by writing gates to the terminal and interactively querying the user (or a file on stdin) for dynamic liftings. We also update a M while doing so, to collect any subroutines that are defined along the way.'Interactively output a  to standard output. This supports dynamic lifting by prompting the user for bit values when a dynamic lifting operation is encountered. Effectively the user is asked to behave like a quantum device.The color white.The color black.ZA RenderFormat consisting of some default parameters, along with the given RenderFormat.(The default PDF Style.)The default EPS Style.*The default PS Style..Escape special characters in a string literal. Convert a  to the string in the format "name, shape x".Pre-processing: figure out the x -column of each gate. Returns (n,xgs) where xgs is a list of (, ) pairs, and n is the rightmost x0-coordinate of the circuit. Here we start from x0 and use constant step xoff taken from the .$Figure out how a gate at coordinate x affects the current . Return a pair (term, new ), where term is the ( of wires terminated by this gate, and new is the outgoing  of this gate. x0 y0 x1 y1: Draw a line from (x0, y0) to (x1, y1/). In case of a zero-length line, draw nothing. x y : Draw a filled control dot at (x,y). x y!: Draw an empty control dot at (x,y). x y: Draw a "not" gate at (x,y). x y+: Draw a cross (swap gate component) at (x,y). x y: Draw an init term bar at (x,y/). x y: Draw a dterm bar at (x,y). name x y: Draw an "init" gate at (x,y), with state name. name x y: Draw a "term" gate at (x,y), with state name. name x y: Draw a "dterm" gate at (x,y), with state name. name inv x y!: draw a named box centered at (x,y). If inv = 5, append an "inverse" symbol to the end of the name. name x y): draw a global phase gate centered at (x,y). name x y": draw a named oval centered at (x,y). name x y": draw an empty box centered at (x,y), big enough to hold name. center s x y mP: draw the given string vertically, with the top of the string near the given y-coordinate. If center==, center it at the x3-coordinate, else move it just to the left of the x -coordinate. m/ is the maximum height allowed for the comment. center s x y7: draw the given label just above the given point. If center==, center it at the x4-coordinate, else move it just to the right of the x -coordinate.&Render the number at the given point (x,y). If the boolean argument is !, put the number to the right of x, else to the left. Render a horizontal wire from x -coordinates oldx to x , using t" as the type and figuring out the y-coordinate from ys and w>. Append to the given string. If the parameters are invalid (w not in ys), throw an error.BRender a bunch of horizontal wires from their repective starting  to x.GFormat a floating point number in concise form, with limited accuracy. x ys ws c^: Render the line connecting all the box components and all the control dots of some gate.  Parameters: x is the current x -coordinate, ys is an indexed array of y-coordinates, ws% is the set of wires for boxes, and c is a list of controls. x ys y c: Render the line connecting all control dots of the given controls, as well as a floating "global phase" gate located just below (x, y).  Parameters: x is the current x -coordinate, ys is an indexed array of y-coordinates, y is the yB-coordinate of the wire where the floating gate is attached, and c is a list of controls. x ys c2: Render the control dots for the given controls. x ys name inv wires: Render the boxes for an n-ary gate of the given name, potentially inverted, at the given list of wires+. The first two arguments are the current x%-coordinate and an indexed array of y -coordinates. x ys wires namesC: Render the boxes for multiple generalized controls at the given wires, using the given namesX. We take special care of the fact that generalized controls may be used non-linearly.    x ys wiresN: Render the boxes for multiple (numbered) generalized controls at the given wires. :Number a list of wires in increasing order, at the given x(-coordinate. If the boolean argument is #, put the numbers to the right of x, else to the left.  Render gate g at x -coordinate x and y-coordinates as given by ys , which is a map from wires to y-coordinates. Returns a pair (s,t?) of draw actions for background and foreground, respectively. 5Render the gates in the circuit. The parameters are: xarity: the ! of the currently pending wires. xgs/: the list of gates, paired with pre-computed x-coordinates. ys$: a map from wires to pre-computed y-coordinates. x: the right-most x4-coordinate where the final wires will be drawn to. maxh": the maximal height of comments. -PostScript definitions of various parameters.VPostScript definitions for various drawing subroutines. The subroutines provided are: <x0 y0 x1 y1 line : draw a line from (x0,y0) to (x1,y1) x0 y0 x1 y1 dashedline : draw a dashed line from (x0,y0) to (x1,y1) x y h w rect : draw a rectangle of dimensions w x h centered at (x,y) x y h w oval : draw an oval of dimensions w x h centered at (x,y) x y dot : draw a filled dot at (x,y) x y circ : draw an empty dot at (x,y) x y oplus : draw a "not" gate at (x,y) x y cross : draw a cross ("swap" gate component) at (x,y) x y bar : draw an init/term bar at (x,y) x y dbar : draw a dterm bar at (x,y) name x y box : draw an empty box at (x,y), big enough to fit name name x y gate : draw a named box at (x,y) name x y circgate : draw a named round box at (x,y) name x y gphase : draw a global phase gate (x,y) b x y init : draw an "init" gate at (x,y), with state b b x y term : draw a "term" gate at (x,y), with state b b x y dterm : draw a "dterm" gate at (x,y), with state b string x y m b comment : draw a vertical comment at (x,y), with max height m and baseline adjustment b string x y clabel : draw a wire label at (x,y), x-centered string x y rlabel : draw a wire label at (x,y), right of x string x y lnumber : draw a numbered input at (x,y) string x y rnumber : draw a numbered output at (x,y) name ocirc: Render the circuit ocirc on a single page.BThe rendering takes place in the following user coordinate system:[image coord.png]9Render a low-level boxed quantum circuit as a graphical G. If there are subroutines, each of them is placed on a separate page.+;Render a low-level dynamic quantum circuit as a graphical . If there are subroutines, each of them is placed on a separate page. If the circuit uses dynamic lifting, an error is produced.Print a representation of a low-level quantum circuit, in the requested graphics format, directly to standard output. If there are boxed subcircuits, each of them is placed on a separate page.Print a representation of a low-level dynamic quantum circuit, in the requested graphics format, directly to standard output. If there are boxed subcircuits, each of them is placed on a separate page. If the circuit uses dynamic lifting, an error is produced. zoom pdffile(: Call a system-specific PDF viewer on pdffile file. The zoomE argument is out of 100 and may or may not be ignored by the viewer.Display a document directly in Acrobat Reader. This may not be portable. It requires the external program "acroread" to be installed.Display a document directly in Acrobat Reader. This may not be portable. It requires the external program "acroread" to be installed.,Display the circuit directly in Acrobat Reader. This may not be portable. It requires the external program "acroread" to be installed.Display a low-level dynamic quantum circuit directly in Acrobat Reader. This may not be portable. It requires the external program "acroread" to be installed. If the circuit uses dynamic lifting, an error is produced.OFrom a list of controls, extract the number of positive and negative controls.,Convenience constant for uncontrolled gates.Forget the annotations of an jAdd controls to an annotated gate type, or throw an error message if it is not controllable; unless its * is set, in which case leave it unchanged.KReverse an annotated gate type, of throw an error if it is not reversible. Set the  of an annotated gate type to .Helper function for ': append a formatted arity to a string.8Convert a given low-level gate to an annotated gate type /Convert a gate type to a human-readable string.!Given the (annotated) gatecount of a circuit, return the gatecount of the reverse circuit, or throw an error if any component is not reversible."Given the (annotated) gatecount of a circuit, return the gatecount of the same circuit with controls added, or throw an error if any component is not controllable.#+Set the ncf of all gates in a gatecount to .$(Remove the annotations from a gatecount.%GInput a list of items and output a map from items to counts. Example: 7count ['a', 'b', 'a'] = Map.fromList [('a',2), ('b',1)]&rCount the number of gates of each type in a circuit, with annotations, treating subroutine calls as atomic gates.'`Count the number of gates of each type in a circuit, treating subroutine calls as atomic gates.( Given an  describing a subroutine call (possibly repeated), and a gate count for the subroutine itself, return the gatecount of the subroutine call.T(This may be the reverse of the original subroutine, may have controls added, etc.))eGiven a circuit and gatecounts for its subroutines, give an (aggregated) gatecount for the circuit.*#Give the aggregate gate count of a +V; that is, the the total count of basic gates once all subroutines are fully inlined.,LCount by how much a low-level gate changes the number of wires in the arity.-:Find the maximum number of wires used simultaneously in a +%, assuming all subroutines inlined. .eGiven a circuit and gatecounts for its subroutines, give an (aggregated) gatecount for the circuit./;Print a gate count, as a table of integers and gate types. 0LPrint the simple gate count, plus summary information, for a simple circuit.-Print gate counts for a boxed circuit: first the simple gate count for each subroutine separately, then the aggregated count for the whole circuit.1)Print gate counts for a named subroutine.2Print gate counts for a static R. The circuit may not use any dynamic lifting, or else an error will be produced..fA mapping from lower-case strings (to be used, e.g., with command line options) to available formats./XPrint a low-level quantum circuit directly to the IO monad, using the specified format.0@Print a document to the requested format, which must be one of , , , or .1Like 0, but also takes a 3 data structure.4Like 2&, but also takes a stub error message.2^Print a circuit generating function to the specified format; this requires a shape parameter.3EPrint a circuit generating function to the specified format. Unlike 2M, this can be applied to a circuit-generating function in curried form with n arguments, for any n >= 0. It then requires n shape parameters.}The type of this heavily overloaded function is difficult to read. In more readable form, it has all of the following types: print_generic :: Format -> Circ qa -> IO () print_generic :: (QCData qa) => Format -> (qa -> Circ qb) -> a -> IO () print_generic :: (QCData qa, QCData qb) => Format -> (qa -> qb -> Circ qc) -> a -> b -> IO () and so forth.4Like 3N, but only works at simple types, and therefore requires no shape parameters.5678  !"#$9%&'()*     +, !"#$%&'()*,-./0-12./0142345  !"#$%&'()*+,-./012345%'&-+,  !"#$()*./01234s5678  !"#$9%&'()*     +, !"#$%&'()*,-./0-12./014234:       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNGOPQRSTUVWXYZ[\]^_`abcdefghijklemnemopeqrstuvwxyz{|VW}~VVVV\]VWUY_ad\]\]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI+quipper-rendering-0.8-KLDZmpN47CGd1ZwclBYeUQuipper.PrintingLibraries.PortableSignalsLibraries.AuxiliaryLibraries.CommandLineFormatEPSPDFPSASCIIPreview GateCount CustomStyle FormatStyle renderformatbackgroundcolorforegroundcolor linewidthcoffs dotradius oplusradiusxoffgatepad gateheight crossradius stringbasebarwidth barheightdwidthdheightmaxgatelabelwidth maxlabelwidthmaxnumberwidthgatefont commentfont commentcolor labelfont labelcolor numberfont numbercolorsubroutineshapeascii_of_bcircuitgetBitprint_dbcircuit_asciipdfepspsrender_dbcircuitpreview_bcircuitprint_gatecounts_bcircuit format_enumprint_dbcircuitprint_of_documentprint_of_document_custom print_unary print_generic print_simple$fShowFormatStyle $fEqGatetype $fOrdGatetype$fShowGatetype$fEqAnnGatetype$fOrdAnnGatetype$fShowAnnGatetype $fShowFormatHandlerDefaultIgnoreCatch CatchOnce OSHandlerSignal InterruptCloseinstallHandler with_handlerossignal unix-2.7.2.0System.Posix.Signals oshandlerinstallHandler_posixCurrymcurrymuncurryErrMsg IsomorphismbaseGHC.BaseMonadIdentitysymmetry transitivityghc-prim GHC.TypesBoolIdStrbufBList+++BoollistXIntMapcontainers-0.5.7.1Data.IntMap.BaseIntMapapplyAt overwriteAthas_duplicates substituteintset_insertsData.IntSet.BaseIntSetinsert map_provide Data.Map.BaseMapintmap_zipright intmap_zipintmap_zip_errmsg intmap_map intmap_mapMxintmap_deletexintmap_deletesxintmap_insertxintmap_insertsxintmap_lookupNothingxintmap_member xintmap_emptyxintmap_freshkeyxintmap_freshkeysxintmap_to_intmap xintmap_sizexintmap_touched xintmap_dirtyxintmap_reservexintmap_reservesxintmap_unreservexintmap_unreservesxintmap_makecleanloop_with_indexlooploop_with_indexMloopMsequence_rightData.Traversablesequencesequence_right_ zip_strictGHC.Listzipzip_strict_errmsgzip_rightstrictzip_rightstrict_errmsgzipWith_strictzipWithzipWith_rightstrictzipRightWithRightStrictMzipRightWithRightStrictM_foldRightPairMfoldRightPairM_fold_right_zipfold_right_zipMforendforforeachmmap monad_join1 map_either map_eitherMmap_pair map_pairM int_ceilingGHC.Realceiling integer-gmpGHC.Integer.TypeIntegerboollist_of_int_bhboollist_of_int_lhint_of_boollist_unsigned_bhint_of_boollist_signed_bhbool_xor boollist_xorstring_of_listoptionalTrue blist_of_list list_of_blist blist_empty blist_concatstrbuf_of_stringstring_of_strbuf strbuf_empty strbuf_concat reflexivityidentityid iso_forwards iso_backwardsgetIdgetBList$fCurry(->)(,)res $fCurryb()b$fShowIdentity $fFunctorId$fApplicativeId $fMonadId $fShowBList $fShowXIntMapoptfail parse_intparse_list_int parse_doubleDouble match_enum show_enum AnnGatecount Gatecount AnnGatetypeGatetype+quipper-core-0.8.0.1-4HSxtYThLSyLLcMWuO0mPAQuipper.Circuit NoControlFlag ControlTypeXarity self_inversetrack_wiretypeascii_of_boxidBoxIdascii_render_controlascii_render_controlsascii_render_nocontrolflagascii_render_gateascii_render_gatelistascii_render_wiretypeascii_render_typeasascii_render_arityascii_render_oarityascii_of_ocircuitascii_of_circuitascii_of_subroutinepromptrun_readwrite_asciiIO Namespace DBCircuitwhiteblack defaultStyle ps_escapestring_of_boxidassign_x_coordinatesGate)easyrender-0.1.1.2-8HmDiNW7JFQ69pCkCI5OnNGraphics.EasyRender.InternalX update_xarity render_line render_dot render_circle render_not render_swap render_bar render_dbar render_init render_term render_dtermrender_namedgaterender_gphasegaterender_circgaterender_blankgaterender_comment render_label render_number render_typeas render_xaritydshowrender_controlwirerender_controlwire_floatrender_controldotsrender_multi_gaterender_multi_named_ctrlrender_multi_genctrlrender_ordering render_gate render_gates ps_parametersps_subroutinespage_of_ocircuitrender_bcircuitDocumentprint_bcircuit_formatprint_dbcircuit_formatsystem_pdf_viewerpreview_documentpreview_document_custompreview_dbcircuit controltype nocontrolsunannotate_gatetypeadd_controls_gatetypereverse_gatetypeset_ncf_gatetype with_aritygatetypestring_of_gatetypereverse_gatecountadd_controls_gatecountset_ncf_gatecountunannotate_gatecountcountanngatecount_of_circuitgatecount_of_circuitgatecount_of_subroutine_call$anngatecount_of_circuit_with_sub_cts aggregate_gatecounts_of_bcircuitBCircuitgate_wires_changeaggregate_maxwires_of_bcircuit%maxwires_of_circuit_with_sub_maxwiresprint_gatecountprint_gatecounts_circuitprint_gatecounts_subroutineprint_gatecounts_dbcircuitCustom print_errmsgAnnGatetypeSubroutineGatetypeSubroutine WireTypeMap