cohomCalg-0.32/000077500000000000000000000000001322050713700133325ustar00rootroot00000000000000cohomCalg-0.32/.gitignore000066400000000000000000000001441322050713700153210ustar00rootroot00000000000000# Compiled Object files *.slo *.lo *.o *.obj # Precompiled Headers *.gch *.pch *.ipch .vs/ /build/cohomCalg-0.32/LICENSE000066400000000000000000001045051322050713700143440ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {one line to give the program's name and a brief idea of what it does.} Copyright (C) {year} {name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: {project} Copyright (C) {year} {fullname} This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . cohomCalg-0.32/Makefile000066400000000000000000000036361322050713700150020ustar00rootroot00000000000000######################################################################### # # # Makefile for the cohomCalg application (including modified PolyLib) # # # ######################################################################### # compilers & flags CC := g++ CFLAGS := -O3 LD := g++ # Note: (1) If you want to enforce 32-bit or 64-bit compilation, # add "-m32" or "-m64" to both CFLAGS and LDFLAGS. # (2) If you want to enforce a static linking of all libraries # (i.e. include everything into one binary), add "-static" to LDFLAGS # global defs DEFS := -DPOLYLIB_BITS=64 # directories COHOMCALG_SRC_DIR := source POLYLIB_SRC_DIR := source/polylib_mod BUILD_DIR := build/polylib_mod build # source and object files COHOMCALG_SRC := $(foreach sdir,$(COHOMCALG_SRC_DIR),$(wildcard $(sdir)/*.cpp)) COHOMCALG_OBJ := $(patsubst source/%.cpp,build/%.o,$(COHOMCALG_SRC)) POLYLIB_SRC := $(foreach sdir,$(POLYLIB_SRC_DIR),$(wildcard $(sdir)/*.c)) POLYLIB_OBJ := $(patsubst source/%.c,build/%.o,$(POLYLIB_SRC)) INCLUDES := $(addprefix -I,$(COHOMCALG_SRC_DIR) $(POLYLIB_SRC_DIR)) vpath %.c $(POLYLIB_SRC_DIR) vpath %.cpp $(COHOMCALG_SRC_DIR) # macros for .c/.cpp dirs define make-goal-cpp $1/%.o: %.cpp $(CC) $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CXXFLAGS) -c $$< -o $$@ endef define make-goal-c $1/%.o: %.c $(CC) $(INCLUDES) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c $$< -o $$@ endef .PHONY: all checkdirs clean all: checkdirs bin/cohomcalg bin/cohomcalg: $(COHOMCALG_OBJ) $(POLYLIB_OBJ) $(LD) $^ $(LDFLAGS) -lpthread -o $@ #-static -lsource/polylib-5.22.5/.libs/libpolylib64.a checkdirs: $(BUILD_DIR) $(BUILD_DIR): @mkdir -p $@ clean: @rm -rf $(BUILD_DIR) $(eval $(call make-goal-c, build/polylib_mod)) $(eval $(call make-goal-cpp, build)) cohomCalg-0.32/Proper Citation.txt000066400000000000000000000075171322050713700171070ustar00rootroot00000000000000Dear reader, if you used cohomCalg in your work and would like to properly cite the program in your paper, please use one of the following two BibTeX source codes: Use \cite{cohomCalg:Implementation} at the appropiate place of your TeX file ------------------------------- +----------------------+ "Fancy" BibTeX entry: <-| Use this if possible | ===================== +----------------------+ @Misc{cohomCalg:Implementation, title = "{\fontfamily{put}\bfseries\footnotesize\selectfont cohomCalg} package", howpublished = "Download link", url = "https://github.com/BenjaminJurke/cohomCalg", note = "High-performance line bundle cohomology computation based on \cite{CohomOfLineBundles:Algorithm}", year = "2010" } @Article{CohomOfLineBundles:Algorithm, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: A Computational Algorithm}", publisher = "AIP", year = "2010", journal = "J.~Math.~Phys.", volume = "51", number = "10", eid = "103525", numpages = "15", pages = "103525", doi = "10.1063/1.3501132", eprint = "1003.5217", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1003.5217;%%" } This one uses a different font for the cohomCalg application name. Note that the usage of the font 'put' might cause problems on some older (La)TeX distributions. On a halfway reasonable modern machine it should give you no trouble. Standard BibTeX entry: ====================== @Misc{cohomCalg:Implementation, title = "cohomCalg package", howpublished = "Download link", url = "https://github.com/BenjaminJurke/cohomCalg", note = "High-performance line bundle cohomology computation based on \cite{CohomOfLineBundles:Algorithm}", year = "2010" } @Article{CohomOfLineBundles:Algorithm, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: A Computational Algorithm}", publisher = "AIP", year = "2010", journal = "J.~Math.~Phys.", volume = "51", number = "10", eid = "103525", numpages = "15", pages = "103525", doi = "10.1063/1.3501132", eprint = "1003.5217", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1003.5217;%%" } Choose what best suits your needs. Furthermore, if you want to cite the Proof paper of the algorithm or the Applications paper, you can use the following BibTeX entries: Additional BibTeX entries: ========================== @Article{CohomOfLineBundles:Proof, author = "Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: Proof of the Algorithm}", publisher = "AIP", year = "2010", journal = "J.~Math.~Phys.", volume = "51", number = "10", eid = "103520", numpages = "11", pages = "103520", doi = "10.1063/1.3501135", eprint = "1006.2392", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1006.2392;%%" } @article{CohomOfLineBundles:Applications, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: Applications}", year = "2010", note = "* Temporary entry *", journal = "submitted to JHEP", eprint = "1010.3717", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1010.3717;%%" } Best regards, the authorscohomCalg-0.32/README.md000066400000000000000000000144241322050713700146160ustar00rootroot00000000000000# cohomCalg [![GitHub release](https://img.shields.io/github/release/BenjaminJurke/cohomCalg.svg)](https://github.com/BenjaminJurke/cohomCalg/releases) [![GitHub issues](https://img.shields.io/github/issues/BenjaminJurke/cohomCalg.svg)](https://github.com/BenjaminJurke/cohomCalg/issues) [![GitHub license](https://img.shields.io/badge/license-GPL%203-lightgrey.svg)](https://raw.githubusercontent.com/BenjaminJurke/cohomCalg/master/LICENSE) > ![cohomCalg logo with Koszul extension](https://raw.githubusercontent.com/BenjaminJurke/cohomCalg/master/cohomCalg_koszul_logo.png) > A software package for computation of sheaf cohomologies > for line bundles on toric varieties. **Authors:** [Ralph Blumenhagen](http://wwwth.mpp.mpg.de/members/blumenha/), [Benjamin Jurke](https://benjaminjurke.com), Thorsten Rahn, Helmut Roschy # Project history The algorithm for the computation of sheaf cohomologies for line bundles on toric varieties presented in [arXiv:1003.5217 [hep-th]](http://arxiv.org/abs/1003.5217) *"Cohomology of Line Bundles: A Computational Algorithm"* has been implemented in a convenient and high-performance C/C++ application called **cohomCalg**. The optional **cohomCalg Koszul** extension serves as a Mathematica 7 frontend and allows for the easy computation of hypersurface and complete intersection cohomologies, following the material presented in [arXiv:1010.3717 [hep-th]](http://arxiv.org/abs/1010.3717). About three months after the initial conjecture's preprint release, a proof of the algorithm was presented in [arXiv:1006.2392 [hep-th]](http://arxiv.org/abs/1006.2392), which also clarifies much of the underlying mathematical structures. At the same time an independant proof was developed in [arXiv:1006.0780 [math.AG]](http://arxiv.org/abs/1006.0780) - published in fact a few days earlier - which utilized alternative methods. The [full background story](https://benjaminjurke.com/academia-and-research/cohomcalg/) can be found here along with some simple examples. The source code is freely available under the GNU GPL v3 license terms. Furthermore, the implementation makes use of The Polyhedral Library (or [PolyLib](http://icps.u-strasbg.fr/polylib/) for short), which is available here under the same license. # Documentation A full documentation and several example input files are included in the cohomCalg download package, see "[manual.pdf](https://github.com/BenjaminJurke/cohomCalg/blob/master/manual.pdf)". Furthermore, you can [eMail us](mailto:mail@benjaminjurke.com?subject=cohomCalg) for technical support or other related questions. For ease of use the package includes pre-compiled binaries for Microsoft Windows both in 32- and 64-bit versions, with the latter being considerably faster. # Changelog * **v0.32** (December 26, 2017): Replaced TinyThread++ by C++11 std::thread, Intel C++ 18.0 Windows binaries. * **v0.31d** (January 16, 2017): Several minor updates and corrections. * **v0.31c** (January 14, 2017): Minor update due to GCC 6.2 compatibility issues, recompiled Windows binaries. * **v0.31b** (April 18, 2012): Minor bugfix due to GCC 4.6 compatibility issues. * **v0.31** (May 25, 2011): Multi-core support, new vector bundle routines, overall improvements. * **v0.21** (October 18, 2010): cohomCalg Koszul extension added! * **v0.13** (July 23, 2010): Integration mode added, see command line option `--integrated` in manual. * **v0.12** (June 25, 2010): Several minor bugfixes and improvements. * **v0.11** (May 4, 2010): Original public release of the cohomCalg implementation. * **v0.04** (March 29, 2010): Original public release of the Mathematica 7 script, which is still available [here](https://github.com/BenjaminJurke/cohomCalg/tree/master/old/cohomcalg-script-v004). # Known bugs & Shortcomings Certain invalid input data is at the moment not safely handled by the PolyLib. For the moment, the crash situation is circumvented in a Quick&Dirty manner. In such cases you will see a message like `Counting of the rationoms errorneous - is your input geometry valid?` in those cases, which caused the original release version to crash. So far, all such cases could be traced back to bad input data. Further implementation-related shortcomings are explained in the manual. # License & Proper Citation As mentioned, the entire package is published under the GNU GPL v3 License, as required by the included PolyLib. This means that any derivative work also has to be published under the GPL v3 License or an equivalent license. The package contains a small text file "Proper Citation.txt" providing a BibTeX entry for cohomCalg, which you can use if you use the program in your work. Or you can simply **Copy&Paste the following BibTeX snippet** provided for convenience: ```tex @Article{Blumenhagen:2010pv, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: A Computational Algorithm}", journal = "J. Math. Phys.", volume = "51", pages = "103525", issue = "10", year = "2010", doi = "10.1063/1.3501132", eprint = "1003.5217", archivePrefix = "arXiv", primaryClass = "hep-th"} @Misc{cohomCalg:Implementation, title = "{cohomCalg package}", howpublished = "Download link", url = "https://github.com/BenjaminJurke/cohomCalg", note = "High-performance line bundle cohomology computation based on \cite{Blumenhagen:2010pv}", year = "2010"} ```` # Related Links In order to derive the Stanley-Reisner ideal, which is a required input for the program, you may want to take a look at [TOPCOM](http://www.rambau.wm.uni-bayreuth.de/TOPCOM/), which can also enumerate all possible fans for a given set of vertices. The Maple script package [SCHUBERT](http://stromme.uib.no/schubert/) can be used to compute intersection numbers and further geometrical quantities of toric varieties. Furthermore, there is the package [PALP](http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html) which is useful for computing invariants of hypersurfaces, Mori cone vectors etc. You may also want to take a look at the [SAGE Library](http://www.sagemath.org/) of freely available mathematical software. The [Macaulay2](http://www.math.uiuc.edu/Macaulay2/) software, which allows similar computations, was heavily used during the development process.cohomCalg-0.32/bin/000077500000000000000000000000001322050713700141025ustar00rootroot00000000000000cohomCalg-0.32/bin/CP2.in000066400000000000000000000016111322050713700150150ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Example input file for cohomCalg % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This file contains the geometry data of the CP^2 projective space % % The vertices and GLSM charges: vertex u1 = ( -1, -1 ) | PIC: H | GLSM: ( 1 ); vertex u2 = ( 1, 0 ) | GLSM: ( 1 ); vertex u3 = ( 0, 1 ) | GLSM: ( 1 ); % The Stanley-Reisner ideal: srideal [u1*u2*u3]; % Computation time for this example is quasi-instantaneous, % so turn off intermediate files: monomialfile off; % And finally the requested line bundle cohomologies: ambientcohom O( 0 ); ambientcohom O( -1 ); ambientcohom O( -2 ); ambientcohom O( -3 ); ambientcohom O( -4 ); ambientcohom O( -6 ); ambientcohom O( -8 ); ambientcohom O(-10 ); ambientcohom O(-12 ); ambientcohom O(-14 ); ambientcohom O(-16 );cohomCalg-0.32/bin/P31SU7.in000066400000000000000000000053171322050713700153420ustar00rootroot00000000000000% Input file for the ralfsalg program... % % Part 1: Specify the vertex name and the GLSM charges % ======= % In order to simplify the transition from "the toric triangulizer" % you can also specify the actual vertex data and select coordinate % Picard generators - this information will simply be ignored but is % of course subject to a syntax check. This allows for easy copy&paste % from our other app... % NOTE THE SYNTAX CHANGE IN COMPARISON TO THE OLD INPUT FORMAT!!! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vertex y = ( 0, 0, 0, 0, 1) | GLSM: ( 0, 3, 0, 1, 1, 0, 1, 0, 1); vertex x = ( 0, 0, 0, 1, 0) | GLSM: ( 0, 2, 0, 1, 0, 1, 0, 1, 0); vertex z = ( 0, 0, 0, -2, -3) | PIC: F | GLSM: (-4, 1, 2, 0, 0, 0, 0, 0, 0); vertex v1 = ( 0, 0, 1, 0, 0) | GLSM: (1, 0, -1, 0, 0, 0, 0, 0, 0); vertex v2 = ( 0, 1, 0, 0, 0) | GLSM: (1, 0, 0, 0, 0, 0, 0, 0, 0); vertex v3 = ( 1, 0, 0, 0, 0) | GLSM: (1, 0, 0, 0, 0, 0, 0, 0, 0); vertex v4 = ( -1, -1, -1, -8,-12) | PIC: H | GLSM: (1, 0, 0, 0, 0, 0, 0, 0, 0); vertex s1 = ( 0, 0, -1, -4, -6) | GLSM: (0, 0, -1, 1, 0, 0, 0, 0, 0); % SU(5) vertex s2 = ( 0, 0, -1, -3, -5) | GLSM: (0, 0, 0, -1, 1, 0, 0, 0, 0); vertex s3 = ( 0, 0, -1, -3, -4) | GLSM: (0, 0, 0, 0, -1, 1, 0, 0, 0); vertex s4 = ( 0, 0, -1, -2, -4) | GLSM: (0, 0, 0, 0, 0, -1, 1, 0, 0); vertex s5 = ( 0, 0, -1, -2, -3) | GLSM: (0, 0, 0, 0, 0, 0, -1, 1, 0); vertex s6 = ( 0, 0, -1, -1, -3) | GLSM: (0, 0, 0, 0, 0, 0, 0, -1, 1); vertex s7 = ( 0, 0, -1, -1, -2) | GLSM: (0, 0, 0, 0, 0, 0, 0, 0, -1); % Part 2: Specify the Stanley-Reisner ideal, which is to be investigated % ======= % Simply specify the Stanley-Reisner ideal of the triangulation of % interest. Input format is simply the output format of the great % toric triangulizer. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% srideal [y*s2, y*s4, y*s6, x*z, x*s1, x*s2, x*s3, x*s4, x*s5, z*s3, z*s5, z*s7, v1*s1, v1*s2, v1*s3, v1*s4, v1*s5, v1*s7, s1*s4, s1*s5, s1*s6, s1*s7, s2*s5, s2*s6, s2*s7, s3*s6, s3*s7, s5*s6, v2*v3*v4]; % Part 3: Specify the ambient space line bundle % ======= % Provide the line bundle with respect to the charges implied % by the choice of GLSM charges assigned to the vertices. % NOTE THE CHARACTER 'O' IN FRONT OF THE CHARGE VECTOR %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% monomialfile off; ambientcohom O(0,0,0,0,0,0,0,0,0);cohomCalg-0.32/bin/P31SU8.in000066400000000000000000000015761322050713700153460ustar00rootroot00000000000000% Input file for the ralfsalg program... % vertex y|GLSM:(0,3,0,1,1,0,1,0,1,0); vertex x|GLSM:(0,2,0,1,0,1,0,1,0,1); vertex z|GLSM:(-4,1,2,0,0,0,0,0,0,0); vertex v1|GLSM:(1,0,-1,0,0,0,0,0,0,0); vertex v2|GLSM:(1,0,0,0,0,0,0,0,0,0); vertex v3|GLSM:(1,0,0,0,0,0,0,0,0,0); vertex v4|GLSM:(1,0,0,0,0,0,0,0,0,0); vertex s1|GLSM:(0,0,-1,1,0,0,0,0,0,0); vertex s2|GLSM:(0,0,0,-1,1,0,0,0,0,0); vertex s3|GLSM:(0,0,0,0,-1,1,0,0,0,0); vertex s4|GLSM:(0,0,0,0,0,-1,1,0,0,0); vertex s5|GLSM:(0,0,0,0,0,0,-1,1,0,0); vertex s6|GLSM:(0,0,0,0,0,0,0,-1,1,0); vertex s7|GLSM:(0,0,0,0,0,0,0,0,-1,1); vertex s8|GLSM:(0,0,0,0,0,0,0,0,0,-1); srideal [s1*y,s2*y,s4*y,s6*y,x*z,s1*x,s2*x,s3*x,s4*x,s5*x,s6*x,s7*x,s4*z,s5*z,s6*z,s7*z,s8*z,s1*v1,s3*v1,s5*v1,s7*v1,s1*s4,s1*s5,s1*s6,s1*s7,s1*s8,s2*s5,s2*s6,s2*s7,s2*s8,s3*s6,s3*s7,s3*s8,s4*s8,s5*s6,s5*s8,s8*v1*y,s2*s3*z,v2*v3*v4]; ambientcohom O(0,0,0,0,0,0,0,0,0,0);cohomCalg-0.32/bin/Quintic.in000066400000000000000000000015701322050713700160510ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Example input file for cohomCalg % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This file contains the geometry data of the del-Pezzo-3 surface, which % corresponds to the triple blowup of the CP^2 projective space % % The vertices and GLSM charges: vertex u1 = ( -1, -1, -1, -1 ) | PIC: H | GLSM: ( 1 ); vertex u2 = ( 1, 0, 0, 0 ) | GLSM: ( 1 ); vertex u3 = ( 0, 1, 0, 0 ) | GLSM: ( 1 ); vertex u4 = ( 0, 0, 1, 0 ) | GLSM: ( 1 ); vertex u5 = ( 0, 0, 0, 1 ) | GLSM: ( 1 ); % The Stanley-Reisner ideal: srideal [u1*u2*u3*u4*u5]; % Computation time for this example is quasi-instantaneous, % so turn off intermediate files: monomialfile off; % And finally the requested line bundle cohomologies: ambientcohom O( -3 ); ambientcohom O( 2 );cohomCalg-0.32/bin/WCP11114.in000066400000000000000000000013031322050713700154500ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Example input file for cohomCalg % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This file contains the geometry data of the weightes projective % space WCP^4 with coordinate weights 1,1,1,1,4. % % The vertices and GLSM charges: vertex u1 | GLSM: ( 1 ); vertex u2 | GLSM: ( 1 ); vertex u3 | GLSM: ( 1 ); vertex u4 | GLSM: ( 1 ); vertex u5 | GLSM: ( 4 ); % The Stanley-Reisner ideal: srideal [u1*u2*u3*u4*u5]; % Computation time for this example is quasi-instantaneous, % so turn off intermediate files: monomialfile off; % And finally the requested line bundle cohomologies: ambientcohom O(-8); ambientcohom O(0);cohomCalg-0.32/bin/cohomCalg Koszul extension v0.3.nb000066400000000000000000035663111322050713700222520ustar00rootroot00000000000000(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 7.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 977935, 21028] NotebookOptionsPosition[ 976022, 20967] NotebookOutlinePosition[ 976399, 20983] CellTagsIndexPosition[ 976356, 20980] WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", " ", RowBox[{"--", RowBox[{"--", " ", RowBox[{"cohomCalg", " ", "++"}]}]}]}], "Koszul", " ", "extension", " ", "v0", RowBox[{ RowBox[{ RowBox[{".31", " ", "--"}], "--"}], " ", "--"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", " ", RowBox[{"author", ":", " ", RowBox[{"Thorsten", " ", RowBox[{ "Rahn", " ", "--"}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", " ", "Comments"}], ",", " ", RowBox[{"bugs", " ", "and", " ", RowBox[{"questions", ":", " ", RowBox[{"thorsten", ".", RowBox[{"rahn", "@", "gmail"}], ".", RowBox[{"com", " ", "--"}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", " ", "author"}], " ", RowBox[{"cohomCalg", ":", " ", RowBox[{"Benjamin", " ", RowBox[{ "Jurke", " ", "--"}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ "--", " ", "mail"}], "@", "bjurke"}], ".", RowBox[{ "net", " ", "--"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", " ", "related"}], " ", "to", " ", "and", " ", "presented", " ", "in", " ", RowBox[{"arXiv", ":", RowBox[{ "1010.3717", " ", "--"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", " ", "Ralph"}], " ", "Blumenhagen"}], ",", " ", RowBox[{"Benjamin", " ", "Jurke"}], ",", " ", RowBox[{"Thorsten", " ", "Rahn"}], ",", " ", RowBox[{"Helmut", " ", RowBox[{"Roschy", " ", "--"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "--", " \ ", "--"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"Input", " ", "required"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Pleas", " ", "fill", " ", "in", " ", "the", " ", "Location", " ", "of", " ", "cohomCalg", " ", "executable"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ "For", " ", "instance", " ", "on", " ", "a", " ", "Windows", " ", "computer", " ", "type", " ", "something", " ", RowBox[{"like", ":", " ", "\[IndentingNewLine]", "cohomCalgPath"}]}], "=", "\"\\""}], ";", "\[IndentingNewLine]", RowBox[{ "If", " ", "your", " ", "Mathematica", " ", "notebook", " ", "is", " ", "in", " ", "the", " ", "same", " ", "directory", " ", "as", " ", "the", " ", "cohomCalg", " ", "executible", " ", "than", " ", "use", " ", "the", " ", "default", " ", "input"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", "Default", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"cohomCalgPath", "=", RowBox[{"NotebookDirectory", "[", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Pleas", " ", "fill", " ", "in", " ", "the", " ", "name", " ", "of", " ", "the", " ", "executable", " ", RowBox[{"e", ".", "g", ".", " ", "\"\\""}], " ", "for", " ", "Windows", " ", "and", " ", "\"\<./cohomcalg\>\"", " ", "for", " ", "Linux"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Default", " ", "for", " ", "Windows"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"cohomCalgExecutable", "=", "\"\\""}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"End", " ", "of", " ", "Input"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Setting", " ", "directory"}], "..."}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"SetDirectory", "[", "cohomCalgPath", "]"}], ";"}], "\n", RowBox[{"(*", RowBox[{ "Generate", " ", "temp", " ", "file", " ", "for", " ", "more", " ", "efficent", " ", "calculations"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"TempFile", "=", RowBox[{"FileNameJoin", "[", RowBox[{"StringJoin", "[", RowBox[{"{", "\"\\"", "}"}], "]"}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"stream1", "=", RowBox[{"OpenWrite", "[", "TempFile", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Close", "[", "stream1", "]"}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "This", " ", "file", " ", "contains", " ", "the", " ", "monomial", " ", "data", " ", "and", " ", "is", " ", "deleted", " ", "once", " ", "you", " ", "choose", " ", "a", " ", "different", " ", "ambient", " ", "space"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"MonomFile", "=", RowBox[{"StringJoin", "[", RowBox[{"TempFile", ",", "\"\<.monoms\>\""}], "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"ResetGlobalVariables", ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Global", " ", "Variables"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}]}], ";", " ", RowBox[{"(*", RowBox[{ "Contains", " ", "the", " ", "number", " ", "of", " ", "line", " ", "bundles", " ", "calculated", " ", "and", " ", "needed", " ", "for", " ", "statistics"}], "*)"}], "\[IndentingNewLine]", RowBox[{"LineBundleList", "=", RowBox[{"{", RowBox[{"{", "\"\\"", "}"}], "}"}]}], ";", " ", RowBox[{"(*", RowBox[{ "Contains", " ", "all", " ", "line", " ", "bundles", " ", "and", " ", "their", " ", "cohomologies", " ", "that", " ", "have", " ", "been", " ", "calculated", " ", "as", " ", "long", " ", "as", " ", "you", " ", RowBox[{"don", "'"}], "t", " ", "change", " ", "the", " ", "ambient", " ", "space"}], "*)"}], "\[IndentingNewLine]", RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", RowBox[{"(*", RowBox[{ "Contains", " ", "all", " ", "line", " ", "bundles", " ", "and", " ", "their", " ", "cohomologies", " ", "for", " ", "a", " ", "specific", " ", "subvariety", " ", "that", " ", "have", " ", "been", " ", "calculated", " ", "as", " ", "long", " ", "as", " ", "you", " ", "dont", " ", "change", " ", "the", " ", "ambient", " ", "space"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", " ", RowBox[{"(*", RowBox[{ "Index", " ", "used", " ", "to", " ", "mark", " ", "the", " ", "parameters", " ", "that", " ", "appear", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequences"}], "*)"}], "\[IndentingNewLine]", RowBox[{"SearchForTwisted", "=", "0"}], ";", " ", RowBox[{"(*", RowBox[{ RowBox[{"If", " ", "on"}], ",", RowBox[{ "it", " ", "tells", " ", "you", " ", "if", " ", "there", " ", "are", " ", "linebundle", " ", "cohomology", " ", "contibutions", " ", "that", " ", "are", " ", "not", " ", RowBox[{"h", "^", "0"}], " ", "or", " ", RowBox[{"h", "^", "n"}], " ", "and", " ", "marks", " ", "them", " ", "in", " ", "the", " ", "final", " ", "result"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "0"}], ";", " ", RowBox[{"(*", RowBox[{ RowBox[{"If", " ", "on"}], ",", " ", RowBox[{ "all", " ", "long", " ", "exact", " ", "sequences", " ", "are", " ", "printed", " ", "explicitly"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"LESFontSize", "=", "18"}], ";", "\[IndentingNewLine]", RowBox[{"cohomCalgLogo", "=", GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 x/8Bt81LZw== "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag["Byte", ColorSpace -> "RGB", Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculation", " ", "of", " ", "bundles", " ", "of", " ", "line", " ", "bundles"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"BundleNumber", "=", "1000"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", " ", RowBox[{"ResetGlobalVariables", ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ClearLineBundles", ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "i", "}"}], ",", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", RowBox[{"LineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}]}]}], "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "Usefull", " ", "additional", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"WPS", " ", "Generator"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"WP", "[", "Eqrel_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "Vars", "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Vars", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"StringJoin", "[", RowBox[{ RowBox[{"ToString", "[", "x", "]"}], ",", RowBox[{"ToString", "[", "#", "]"}]}], "]"}], "&"}], ",", RowBox[{"Length", "[", "Eqrel", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"Vars", ",", RowBox[{"{", "Vars", "}"}], ",", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"{", "#", "}"}], "&"}], ",", "Eqrel"}], "]"}]}], "}"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Products", " ", "of", " ", "WPS", " ", "Generator"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"PWPS", "[", RowBox[{"Eqrels_", ",", RowBox[{"Projective_:", "\"\\""}]}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", RowBox[{"Vars", "=", RowBox[{"{", "}"}]}], ",", RowBox[{"SR", "=", RowBox[{"{", "}"}]}], ",", RowBox[{"Counter", "=", "1"}], ",", "EqrelsOut"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"Projective", "\[Equal]", "\"\\""}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Eqrels", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Vars", "=", RowBox[{"Join", "[", RowBox[{"Vars", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "i", "]"}], ",", RowBox[{"ToString", "[", "#", "]"}]}], "]"}], "&"}], ",", RowBox[{"Eqrels", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"SR", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "i", "]"}], ",", RowBox[{"ToString", "[", "#", "]"}]}], "]"}], "&"}], ",", RowBox[{"Eqrels", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"EqrelsOut", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", "[", "Vars", "]"}], ",", RowBox[{"Length", "[", "Eqrels", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "Eqrels", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Eqrels", "[", RowBox[{"[", "i", "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"EqrelsOut", "[", RowBox[{"[", RowBox[{"Counter", ",", RowBox[{ RowBox[{"Length", "[", "Eqrels", "]"}], "+", "1", "-", "i"}]}], "]"}], "]"}], "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"Counter", "++"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"Vars", ",", "SR", ",", "EqrelsOut"}], "}"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Hyper", " ", "surface", " ", "generator"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CYHyperSurface", "[", "Variety_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", RowBox[{"Hypersurface", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", RowBox[{"Variety", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], "]"}]}]}], "}"}], ",", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Variety", "[", RowBox[{"[", "3", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", RowBox[{"Hypersurface", "=", RowBox[{"Hypersurface", "+", RowBox[{"Variety", "[", RowBox[{"[", RowBox[{"3", ",", "i"}], "]"}], "]"}]}]}]}], "]"}], ";", RowBox[{"Return", "[", "Hypersurface", "]"}]}]}], "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Convers", " ", "the", " ", "Triangulizer", " ", "integrated", " ", "output", " ", "to", " ", "cohomCalg", " ", "input"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"TriangulizerTocohomCalg", "[", "TriangulizerData_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", RowBox[{"cohomCalgInput", "=", RowBox[{"{", "}"}]}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{ RowBox[{"Length", "[", "TriangulizerData", "]"}], "-", "4"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"cohomCalgInput", ",", RowBox[{"{", RowBox[{ RowBox[{"TriangulizerData", "[", RowBox[{"[", "2", "]"}], "]"}], ",", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"Variables", "[", "#", "]"}], "&"}], ",", RowBox[{"TriangulizerData", "[", RowBox[{"[", RowBox[{ RowBox[{"4", "+", "i"}], ",", "2"}], "]"}], "]"}]}], "]"}], ",", RowBox[{"TriangulizerData", "[", RowBox[{"[", RowBox[{"4", ",", RowBox[{"2", ";;", RowBox[{"Length", "[", RowBox[{"TriangulizerData", "[", RowBox[{"[", "4", "]"}], "]"}], "]"}]}]}], "]"}], "]"}]}], "}"}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "cohomCalgInput", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "Usefull", " ", "additional", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Simple", " ", "check", " ", "whether", " ", "the", " ", "input", " ", "data", " ", "is", " ", "typed", " ", "in", " ", "correctly", " ", "in", " ", "the", " ", "right", " ", "form"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace_", ",", "ComplInters_", ",", "Type_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "NumberOfCharges", ",", "CalculationStop"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Return", "[", RowBox[{"{", RowBox[{"True", ",", "\"\<\>\""}], "}"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ "CalculationStop", "=", "\"\<---> Calculation canceled <---\>\""}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "cohomCalg", " ", "executable", " ", "in", " ", "the", " ", "correct", " ", RowBox[{"directory", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"FileExistsQ", "[", "cohomCalgExecutable", "]"}]}], ",", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"StringJoin", "[", RowBox[{"cohomCalgPath", ",", "cohomCalgExecutable"}], "]"}], ",", "\"\<\\\" not found. Check cohomCalgPath and \ cohomCalgExecutable variables.\>\""}], "]"}], ";", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Correct", " ", "number", " ", "of", " ", "entries", " ", "in", " ", RowBox[{"Ambientspace", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "AmbientSpace", "]"}], "\[NotEqual]", "3"}], ",", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Correct", " ", "number", " ", "of", " ", RowBox[{"coordinates", " ", "/", " ", "GLSM"}], " ", RowBox[{"relations", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "\[NotEqual]", RowBox[{"AmbientSpace", "[", RowBox[{"[", "3", "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"NumberOfCharges", "=", RowBox[{"Length", " ", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "3", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "i"}], "]"}], "]"}], "]"}], "\[NotEqual]", "NumberOfCharges"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{ RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], "]"}]}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Correct", " ", "\"\\"", " ", RowBox[{"specification", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Type", "\[NotEqual]", "\"\\""}], " ", "&&", " ", RowBox[{"Type", "\[NotEqual]", " ", "\"\\""}], " ", "&&", " ", RowBox[{"Type", "\[NotEqual]", " ", "\"\\""}], " ", "&&", " ", RowBox[{"Type", "\[NotEqual]", " ", "\"\\""}], " ", "&&", " ", RowBox[{"Type", "\[NotEqual]", "\"\\""}], " ", "&&", " ", RowBox[{"Type", "\[NotEqual]", "\"\\""}], "&&", RowBox[{"Type", "\[NotEqual]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "Type", ",", "\"\<\\\" is not one of the valid types \\\"Calabi-Yau\\\", \ \\\"Kahler\\\", \\\"Complex\\\", \\\"Stable\\\" or \\\"Unknown\\\".\\n \ Calculation continued with type \\\"Unknown\\\"...\>\""}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Correct", " ", "structure", " ", "of", " ", "the", " ", "list", " ", "of", " ", "divisors", " ", "specifying", " ", "the", " ", "complete", " ", RowBox[{"intersection", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "It", " ", "is", " ", "either", " ", "empty", " ", "or", " ", "of", " ", "depth", " ", "3"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ComplInters", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Depth", "[", "ComplInters", "]"}], "\[NotEqual]", " ", "3"}], ",", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Number", " ", "of", " ", "charges", " ", "of", " ", "all", " ", "divisors", " ", "of", " ", "the", " ", "complete", " ", "intersection", " ", RowBox[{"correct", "?"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "ComplInters", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"ComplInters", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}], "\[NotEqual]", "NumberOfCharges"}], ",", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"False", ",", "CalculationStop"}], "}"}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"True", ",", "\"\<\>\""}], "}"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Generates", " ", "the", " ", "matrix", " ", "reflected", " ", "at", " ", "the", " ", "counter", " ", "diagonal"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"CounterTranspose", "[", "Matrix_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "n", ",", "tempmatrix"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tempmatrix", "=", " ", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", " ", "[", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{"1", ",", "All"}], "]"}], "]"}], "]"}], ",", RowBox[{"Length", " ", "[", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{"All", ",", "1"}], "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"n", "=", RowBox[{"Length", "[", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{"1", ",", "All"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{"1", ",", "All"}], "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{"1", ",", "All"}], "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tempmatrix", "[", RowBox[{"[", RowBox[{"i", ",", "j"}], "]"}], "]"}], "=", RowBox[{"Matrix", "[", RowBox[{"[", RowBox[{ RowBox[{"n", "+", "1", "-", "j"}], ",", RowBox[{"n", "+", "1", "-", "i"}]}], "]"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "tempmatrix", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Three", " ", "small", " ", "routines", " ", "that", " ", "convert", " ", "the", " ", "Mathematica", " ", "input", " ", "to", " ", "the", " ", "proper", " ", "input", " ", "format", " ", "of", " ", "the", " ", RowBox[{"C", "++"}], " ", "implementation", " ", "of", " ", "cohomCalg"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Converts", " ", "the", " ", "variety", " ", "specifications", " ", "to", " ", "the", " ", "proper", " ", "string", " ", "needed", " ", "by", " ", "cohomCalg"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ConvertMathematicaToCppInput", "[", "Variety_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "StringVariety"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StringVariety", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Variety", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StringVariety", "=", RowBox[{"StringJoin", "[", RowBox[{"StringVariety", ",", "\"\\"", ",", RowBox[{"ToString", "[", RowBox[{"Variety", "[", RowBox[{"[", RowBox[{"1", ",", "i"}], "]"}], "]"}], "]"}], ",", "\"\<|GLSM:(\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"Variety", "[", RowBox[{"[", RowBox[{"3", ",", "i"}], "]"}], "]"}], "]"}], ",", "\"\<);\>\""}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"StringVariety", "=", RowBox[{"StringJoin", "[", RowBox[{"StringVariety", ",", "\"\< srideal [\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"ReconvertSR", "[", RowBox[{"Variety", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], "]"}], ",", "\"\<];\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "StringVariety", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Converts", " ", "a", " ", "list", " ", "to", " ", "as", " ", "string", " ", "without", " ", "the", " ", "brackets"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListToStringWithoutBracket", "[", "list_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "StringList"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StringList", "=", RowBox[{"ToString", "[", RowBox[{"list", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "list", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StringList", "=", RowBox[{"StringJoin", "[", RowBox[{"StringList", ",", "\"\<,\>\"", ",", RowBox[{"ToString", "[", RowBox[{"list", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "StringList", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Converts", " ", "the", " ", "SR", " ", "ideal", " ", "into", " ", "the", " ", "correct", " ", "cohomCalg", " ", "input", " ", "string"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ReconvertSR", "[", "SR_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "StringSR", ",", "ListStringSR"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ListStringSR", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "SR", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"ListStringSR", ",", RowBox[{"ToString", "[", RowBox[{"SR", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "2"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"SR", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListStringSR", "[", RowBox[{"[", "i", "]"}], "]"}], "=", RowBox[{"StringJoin", "[", RowBox[{ RowBox[{"ListStringSR", "[", RowBox[{"[", "i", "]"}], "]"}], ",", "\"\<*\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"ListStringSR", "[", RowBox[{"[", "i", "]"}], "]"}], "=", RowBox[{"StringJoin", "[", RowBox[{ RowBox[{"ListStringSR", "[", RowBox[{"[", "i", "]"}], "]"}], ",", RowBox[{"ToString", "[", RowBox[{"SR", "[", RowBox[{"[", RowBox[{"i", ",", "j"}], "]"}], "]"}], "]"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "ListStringSR", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CalculateListOfLineBundles", "[", RowBox[{ "AmbientSpace_", ",", "LineBundleCollector_", ",", "NumberOfLineBundles_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "Output", ",", "LineBundleCohom", ",", "LineBundles", ",", "PositionAmbientInList"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[NotEqual]", " ", "AmbientSpace"}], ",", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}], "]"}], ";", " ", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", "1", "]"}], "]"}], "\[NotEqual]", " ", "AmbientSpace"}], ",", RowBox[{ RowBox[{"LineBundleList", "=", RowBox[{"{", "AmbientSpace", "}"}]}], ";", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}]}], "]"}], ";"}], " ", "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"PositionAmbientInList", "=", RowBox[{"Position", "[", RowBox[{"LineBundleList", ",", "AmbientSpace", ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[NotEqual]", "AmbientSpace"}], ",", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"PositionAmbientInList", "\[Equal]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"PrependTo", "[", RowBox[{"LineBundleList", ",", RowBox[{"{", "AmbientSpace", "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", " ", "\[IndentingNewLine]", RowBox[{"PositionAmbientInList", "=", RowBox[{ RowBox[{"Position", "[", RowBox[{"LineBundleList", ",", "AmbientSpace", ",", RowBox[{"{", "2", "}"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}], ",", RowBox[{"i", "=", RowBox[{"i", "+", "NumberOfLineBundles"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "i", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"i", "+", "NumberOfLineBundles"}], ">", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Output", "=", RowBox[{"ReadList", "[", RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientSpace", ",", RowBox[{"LineBundleCollector", "[", RowBox[{"[", RowBox[{"i", ";;", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}], "]"}], "]"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LineBundles", "=", RowBox[{"LineBundleCollector", "[", RowBox[{"[", RowBox[{"i", ";;", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}], "]"}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "+", RowBox[{"Mod", "[", RowBox[{ RowBox[{"Length", "[", "LineBundleCollector", "]"}], ",", "NumberOfLineBundles"}], "]"}]}]}], ";"}], "*)"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Output", "=", RowBox[{"ReadList", "[", RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientSpace", ",", RowBox[{"LineBundleCollector", "[", RowBox[{"[", RowBox[{"i", ";;", RowBox[{"i", "+", "NumberOfLineBundles", "-", "1"}]}], "]"}], "]"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LineBundles", "=", RowBox[{"LineBundleCollector", "[", RowBox[{"[", RowBox[{"i", ";;", RowBox[{"i", "+", "NumberOfLineBundles", "-", "1"}]}], "]"}], "]"}]}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "+", "NumberOfLineBundles"}]}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientSpace", ",", RowBox[{"LineBundleCollector", "[", RowBox[{"[", RowBox[{"i", ";;", RowBox[{"i", "+", "NumberOfLineBundles", "-", "1"}]}], "]"}], "]"}]}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Output", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "2"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Output", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"{", RowBox[{ RowBox[{"LineBundles", "[", RowBox[{"[", RowBox[{"j", "-", "1"}], "]"}], "]"}], ",", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "j", ",", "1"}], "]"}], "]"}]}], "}"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", "PositionAmbientInList", "]"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"LineBundles", "[", RowBox[{"[", RowBox[{"j", "-", "1"}], "]"}], "]"}], ",", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "j", ",", "1"}], "]"}], "]"}]}], "}"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", " ", ",", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "1"}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"LineBundleCohom", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"False", "&"}], ",", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "+", "1"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"out", "=", RowBox[{"StringJoin", "[", RowBox[{"\"\<---> \>\"", ",", RowBox[{"ToString", "[", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\< different linebundle cohomologies calculated via \ --cohomCalc-- <---\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"NotebookDelete", "[", "temp", "]"}], ";", "\[IndentingNewLine]", RowBox[{"temp", "=", RowBox[{"PrintTemporary", "[", "out", "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "that", " ", "puts", " ", "calculated", " ", "line", " ", "bundles", " ", "in", " ", "a", " ", "list", " ", "for", " ", "later", " ", "use", " ", "of", " ", "the", " ", "same", " ", "ambient", " ", "variety"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace_", ",", "LineBundle_"}], RowBox[{"(*", RowBox[{",", RowBox[{"EquivariantCalculation_:", "False"}]}], "*)"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "PositionLinebundleInList", ",", "LineBundleCohom", ",", "SearchSucceeded", ",", "TwistedPositions", ",", "NumberArray", ",", "Output", ",", "SplitedResult", ",", "DenominatorElement", ",", "CohomologyPosition", ",", "CohomologyFactor", ",", "SplitContriubution", ",", "PositionAmbientInList"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "LineBundleList", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "if", " ", "calculations", " ", "have", " ", "been", " ", "performed", " ", "before"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"PositionAmbientInList", "=", RowBox[{"Position", "[", RowBox[{"LineBundleList", ",", "AmbientSpace", ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[NotEqual]", "AmbientSpace"}], ",", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"PositionAmbientInList", "\[Equal]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"PrependTo", "[", RowBox[{"LineBundleList", ",", RowBox[{"{", "AmbientSpace", "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FileExistsQ", "[", "MonomFile", "]"}], ",", RowBox[{"DeleteFile", "[", "MonomFile", "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", " ", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PositionAmbientInList", "=", RowBox[{ RowBox[{"Position", "[", RowBox[{"LineBundleList", ",", "AmbientSpace", ",", RowBox[{"{", "2", "}"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PositionLinebundleInList", "=", RowBox[{"Position", "[", RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", "PositionAmbientInList", "]"}], "]"}], ",", "LineBundle", ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"PositionLinebundleInList", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "++"}], ";", "\[IndentingNewLine]", RowBox[{"LineBundleCohom", "=", RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", "PositionAmbientInList", "]"}], "]"}], "[", RowBox[{"[", RowBox[{ RowBox[{"PositionLinebundleInList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "2"}], "]"}], "]"}]}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "++"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "++"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientSpace", ",", "LineBundle"}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "3", "]"}], "]"}], "++"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Output", "=", RowBox[{"ReadList", "[", RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientSpace", ",", RowBox[{"{", "LineBundle", "}"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Output", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{ RowBox[{"ToExpression", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "#"}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "&"}], ",", "DenominatorElement"}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", RowBox[{"LineBundleCohom", "=", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "1"}], "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", " ", ",", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "1"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LineBundleCohom", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"False", "&"}], ",", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "+", "1"}]}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"EquivariantCalculation", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"SplitedResult", "=", RowBox[{"{", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", "LineBundleCohom", "]"}]}], "]"}], ",", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", "LineBundleCohom", "]"}]}], "]"}]}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "2"}], "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"DenominatorElement", "=", RowBox[{"Variables", "[", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "2", ",", "i", ",", "2"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "DenominatorElement", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CohomologyPosition", "=", RowBox[{ RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "2", ",", "i", ",", "1"}], "]"}], "]"}], "+", "1"}]}], ";", "\[IndentingNewLine]", RowBox[{"CohomologyFactor", "=", RowBox[{ RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "2", ",", "i", ",", "2"}], "]"}], "]"}], "/", RowBox[{"Product", "[", RowBox[{ RowBox[{"DenominatorElement", "[", RowBox[{"[", "j", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", "DenominatorElement", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"DenominatorElement", "=", RowBox[{"Variables", "[", RowBox[{"Output", "[", RowBox[{"[", RowBox[{"1", ",", "2", ",", "2"}], "]"}], "]"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"SplitContriubution", "=", RowBox[{"InvariantAndNonivariantParts", "[", RowBox[{ "LineBundle", ",", "DenominatorElement", ",", "AmbientSpace", ",", "ZnAction"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SplitedResult", "[", RowBox[{"[", RowBox[{"1", ",", "CohomologyPosition"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SplitedResult", "[", RowBox[{"[", RowBox[{"1", ",", "CohomologyPosition"}], "]"}], "]"}], "+", RowBox[{"SplitContriubution", "[", RowBox[{"[", "1", "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SplitedResult", "[", RowBox[{"[", RowBox[{"2", ",", "CohomologyPosition"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SplitedResult", "[", RowBox[{"[", RowBox[{"2", ",", "CohomologyPosition"}], "]"}], "]"}], "+", RowBox[{"SplitContriubution", "[", RowBox[{"[", "2", "]"}], "]"}]}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "SplitedResult", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Return", "[", RowBox[{"{", RowBox[{"LineBundleCohom", ",", "SplitedResult"}], "}"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"SplitedResult", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{ RowBox[{"LineBundleList", "[", RowBox[{"[", "PositionAmbientInList", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"LineBundle", ",", "LineBundleCohom"}], "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"out", "=", RowBox[{"StringJoin", "[", RowBox[{"\"\<---> \>\"", ",", RowBox[{"ToString", "[", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\< different linebundle cohomologies calculated via \ --cohomCalc-- <---\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"NotebookDelete", "[", "temp", "]"}], ";", "\[IndentingNewLine]", RowBox[{"temp", "=", RowBox[{"PrintTemporary", "[", "out", "]"}]}]}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "else", " ", "if", " ", "collecotor", " ", "is", " ", "turned", " ", RowBox[{"on", ":"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"LineBundleCollector", ",", "LineBundle"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "+", "1"}]}], "]"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Keep", " ", "in", " ", "mind", " ", "from", " ", "which", " ", "part", " ", "of", " ", "the", " ", "cohomology", " ", "of", " ", "the", " ", "line", " ", "bundle", " ", "on", " ", "the", " ", "ambient", " ", "space", " ", "the", " ", "contribution", " ", "comes", " ", "by", " ", "multiplying", " ", "with", " ", "the", " ", "corresponding", " ", "power", " ", "of", " ", "Pi"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwisted", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "LineBundleCohom", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"LineBundleCohom", "[", RowBox[{"[", "i", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCohom", "[", RowBox[{"[", "i", "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"Pi", ",", RowBox[{"i", "-", "1"}]}], "]"}]}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "LineBundleCohom", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Subroutine", ":", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"Generates", " ", "the", " ", "expression", " ", "u1"}], "\[GreaterEqual]", "0"}], " ", "&&", " ", RowBox[{"u2", "\[GreaterEqual]", "0"}], " ", "&&", " ", RowBox[{"u3", "\[GreaterEqual]", "0"}], " ", "&&"}], " ", "..."}], " ", "from", " ", "a", " ", "given", " ", "set", " ", "of", " ", "coordinates", " ", RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "..."}], "}"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListElementsLargerEqZero", "[", "list_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "temp"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"list", "\[NotEqual]", " ", RowBox[{"{", "}"}]}], ",", RowBox[{"temp", "=", RowBox[{ RowBox[{"list", "[", RowBox[{"[", "1", "]"}], "]"}], "\[GreaterEqual]", " ", "0"}]}], ",", RowBox[{"Return", "[", RowBox[{"{", "}"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "list", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"temp", "=", RowBox[{"temp", " ", "&&", " ", RowBox[{ RowBox[{"list", "[", RowBox[{"[", "i", "]"}], "]"}], "\[GreaterEqual]", " ", "0"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "temp", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Main", " ", "counting", " ", RowBox[{"routing", ":", " ", RowBox[{ "It", " ", "generates", " ", "the", " ", "matrix", " ", "m"}]}]}], ",", " ", RowBox[{ RowBox[{ "the", " ", "constant", " ", "vector", " ", "b", " ", "and", " ", "solves", " ", "the", " ", "linear", " ", "equations", " ", RowBox[{"m", ".", "x"}]}], "=", RowBox[{ "b", " ", "for", " ", "non", " ", "negative", " ", "integers"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"InvariantAndNonivariantParts", "[", RowBox[{ "LineBundle_", ",", "DenominatorElement_", ",", "AmbientSpace_", ",", "ZnAction_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "b", ",", "m", ",", "ConvertedElement", ",", "equrel", ",", "coordinates", ",", "ResultMonomials", ",", "SignVector", ",", "Monomials", ",", "ActionOnMonomials", ",", "DenominatorMonomial", ",", "ActionDenominatorMonomial", ",", "ModifiedMonomials", ",", "ModifiedActionOnMonomials", ",", "Invariant", ",", "NonInvariant"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ "convert", " ", "a", " ", "set", " ", "of", " ", "coordinates", " ", "into", " ", "their", " ", "positions", " ", "in", " ", "the", " ", "coordinate"}], "-", "list"}], ",", " ", RowBox[{ RowBox[{"e", ".", "g", ".", " ", RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}]}], " ", "\[Rule]", " ", RowBox[{"{", RowBox[{"1", ",", "2"}], "}"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ConvertedElement", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{ RowBox[{"ToExpression", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "#"}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "&"}], ",", "DenominatorElement"}], "]"}]}], ";", RowBox[{"(*", RowBox[{ RowBox[{ "ConvertDenominatiorElement", "[", "DenominatorElement", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"coordinates", "=", RowBox[{"ToExpression", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"equrel", "=", RowBox[{"Transpose", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "3", "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"m", "=", "equrel"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "equrel", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"equrel", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"MemberQ", "[", RowBox[{"ConvertedElement", ",", "j"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], "=", RowBox[{"-", RowBox[{ RowBox[{"equrel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], " ", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], "=", RowBox[{ RowBox[{"equrel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"b", "=", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "#", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "ConvertedElement"}], "}"}]}], "]"}]}], "&"}], ",", RowBox[{"Length", "[", "LineBundle", "]"}]}], "]"}], "+", "LineBundle"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"MatrixForm", "[", RowBox[{ RowBox[{"m", ".", "coordinates"}], "==", "b"}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ResultMonomials", "=", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"m", ".", "coordinates"}], "==", "b"}], "&&", RowBox[{"ListElementsLargerEqZero", "[", "coordinates", "]"}]}], ",", "coordinates", ",", "Integers"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ResultMonomials", "=", RowBox[{"BooleanConvert", "[", RowBox[{"ResultMonomials", "||", RowBox[{"{", "\"\\"", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Checker", "=", "ResultMonomials"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"ResultMonomials", "=", RowBox[{"Sort", "[", RowBox[{"ResultMonomials", ",", "1"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ResultMonomials", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"Sort", "[", "#", "]"}], "&"}], ",", "ResultMonomials"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ "DenominatorElement", ",", "\"\<,\>\"", ",", "ConvertedElement"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"SignVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"1", "&"}], ",", RowBox[{"Length", "[", "coordinates", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"SignVector", "[", RowBox[{"[", "ConvertedElement", "]"}], "]"}], "=", RowBox[{"-", "1"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "SignVector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "ResultMonomials", "]"}], "\[Equal]", "2"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Monomials", "=", RowBox[{"{", RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ",", "a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"(", RowBox[{ RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ",", "a", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "a", "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"ZnActionAppliesToVariables", "=", RowBox[{"{", "1", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"ZnAction", "=", RowBox[{"{", RowBox[{"-", SubscriptBox["x", "1"]}], "}"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ActionOnMonomials", "=", RowBox[{"{", RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"ZnAction", "[", RowBox[{"[", RowBox[{ RowBox[{"Position", "[", RowBox[{"coordinates", ",", RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ",", "a", ",", "1"}], "]"}], "]"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}], "]"}], ")"}], "^", RowBox[{"(", RowBox[{ RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ",", "a", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "a", "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "}"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Monomials", "=", RowBox[{"Map", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"(", RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "a", "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "&"}], ",", RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{ RowBox[{"Length", "[", "ResultMonomials", "]"}], "-", "1"}]}], "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Monomials", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"ZnActionAppliesToVariables", "=", RowBox[{"{", "1", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"ZnAction", "=", RowBox[{"{", RowBox[{"-", SubscriptBox["x", "1"]}], "}"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"ActionOnMonomials", "=", RowBox[{"Map", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "/", RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "ZnActionAppliesToVariables"}], "}"}]}], "]"}]}], "**)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"ZnAction", "[", RowBox[{"[", "a", "]"}], "]"}], "^", RowBox[{"(", RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "a", "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"a", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{"#", "&"}], ",", RowBox[{"Length", "[", "coordinates", "]"}]}], "]"}]}], "}"}]}], "]"}], "&"}], ",", RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{ RowBox[{"Length", "[", "ResultMonomials", "]"}], "-", "1"}]}], "]"}], "]"}]}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ActionOnMonomials", "=", RowBox[{"Map", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "/", RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}], "^", RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "ZnActionAppliesToVariables"}], "}"}]}], "]"}]}], "**)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"Product", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"ZnAction", "[", RowBox[{"[", RowBox[{ RowBox[{"Position", "[", RowBox[{"coordinates", ",", RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "1"}], "]"}], "]"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}], "]"}], ")"}], "^", RowBox[{"(", RowBox[{ RowBox[{"#", "[", RowBox[{"[", RowBox[{"a", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "a", "]"}], "]"}]}], ")"}]}], ",", RowBox[{"{", RowBox[{"a", ",", "1", ",", RowBox[{"Length", "[", RowBox[{"ResultMonomials", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "}"}]}], "]"}], "&"}], ",", RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{ RowBox[{"Length", "[", "ResultMonomials", "]"}], "-", "1"}]}], "]"}], "]"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{ RowBox[{"ZnAction", "[", RowBox[{"[", "1", "]"}], "]"}], "*", RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"8", ",", "1", ",", "1"}], "]"}], "]"}]}], ",", "\"\<^\>\"", ",", RowBox[{"(", RowBox[{ RowBox[{"ResultMonomials", "[", RowBox[{"[", RowBox[{"8", ",", "1", ",", "2"}], "]"}], "]"}], "*", RowBox[{"SignVector", "[", RowBox[{"[", "1", "]"}], "]"}]}], ")"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ "Monomials", ",", "\"\<\\n\>\"", ",", "ActionOnMonomials"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "We", " ", "still", " ", "need", " ", "to", " ", "take", " ", "the", " ", "denominator", " ", "element", " ", "into", " ", "account"}], "*)"}], "\[IndentingNewLine]", RowBox[{"DenominatorMonomial", "=", RowBox[{"Product", "[", RowBox[{ RowBox[{"DenominatorElement", "[", RowBox[{"[", "i", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "DenominatorElement", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Perform", " ", "the", " ", "action", " ", "on", " ", "the", " ", "denominator", " ", "element"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ActionDenominatorMonomial", "=", RowBox[{"Product", "[", RowBox[{ RowBox[{"ZnAction", "[", RowBox[{"[", RowBox[{ RowBox[{"Position", "[", RowBox[{"coordinates", ",", RowBox[{"DenominatorElement", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "DenominatorElement", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"Monomials", ",", "\"\<\\n\>\""}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Monomials", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Monomials", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"#", "/", "DenominatorMonomial"}], "&"}], ",", "Monomials"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Monomials", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ActionOnMonomials", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"#", "/", "ActionDenominatorMonomial"}], "&"}], ",", "ActionOnMonomials"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "ActionOnMonomials"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ModifiedMonomials", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"Monomials", "[", RowBox[{"[", "#", "]"}], "]"}], "&"}], ",", RowBox[{"Length", "[", "Monomials", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ModifiedActionOnMonomials", "=", RowBox[{"Flatten", "[", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"ActionOnMonomials", "[", RowBox[{"[", "#", "]"}], "]"}], "&"}], ",", RowBox[{"Length", "[", "ActionOnMonomials", "]"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"Length", "[", "ModifiedActionOnMonomials", "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"ModifiedMonomials", "-", "ModifiedActionOnMonomials"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Invariant", "=", RowBox[{"Count", "[", RowBox[{ RowBox[{"ModifiedMonomials", "-", "ModifiedActionOnMonomials"}], ",", "0"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"=", RowBox[{"Count", "[", RowBox[{ RowBox[{"ModifiedMonomials", "-", "ModifiedActionOnMonomials"}], ",", "0"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"NonInvariant", "=", RowBox[{ RowBox[{"Length", "[", "ModifiedMonomials", "]"}], "-", "Invariant"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "DenominatorMonomial", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"Verbose6", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "LineBundle", ",", "\"\< Denominator: \>\"", ",", "DenominatorElement"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "ResultMonomials"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "ModifiedMonomials", ",", "\"\<\\n Action Laurent monomials: \>\"", ",", "ModifiedActionOnMonomials", ",", "\"\<\\n Monoms-ActionMonoms: \>\"", ",", RowBox[{ "ModifiedMonomials", "-", "ModifiedActionOnMonomials"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "ModifiedMonomials", ",", "\"\\"", ",", "ModifiedActionOnMonomials", ",", "\"\< Monoms-ActionMonoms: \>\"", ",", RowBox[{ "ModifiedMonomials", "-", "ModifiedActionOnMonomials"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Representatives", "=", "ModifiedMonomials"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "EquivariantCalculation", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "Invariant", ",", "\"\< and non-invariant = \>\"", ",", "NonInvariant"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"Invariant", ",", "NonInvariant"}], "}"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Interface", " ", "to", " ", "the", " ", "cohomCalg", " ", RowBox[{"C", "++"}], " ", RowBox[{"Implementation", ".", " ", "In"}], " ", "and", " ", "output", " ", "are", " ", "the", " ", "same", " ", "as", " ", "in", " ", "the", " ", "first", " ", "Mathematica", " ", "implementation", " ", "of", " ", "cohomCalg"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"LineBundleCohomologyOf", "[", RowBox[{"AmbientSpace_", ",", "LineBundle_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "i", "}"}], ",", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", "LineBundle"}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Generates", " ", "the", " ", "requested", " ", "command", " ", "for", " ", "a", " ", "given", " ", "variety", " ", "and", " ", "line", " ", "bundle"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"GenerateRequestCommand", "[", RowBox[{"AmbientVariety_", ",", "LineBundles_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "command", ",", "StringAmbientVariety", ",", "StingLineBundle"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StringAmbientVariety", "=", " ", RowBox[{ "ConvertMathematicaToCppInput", "[", "AmbientVariety", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"command", "=", RowBox[{"StringJoin", "[", RowBox[{ "\"\\"", ",", "cohomCalgExecutable", ",", "\"\< --integrated --in=\\\" \>\"", ",", "StringAmbientVariety"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", "LineBundles", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StingLineBundle", "=", RowBox[{"ToString", "[", RowBox[{"LineBundles", "[", RowBox[{"[", RowBox[{"j", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"LineBundles", "[", RowBox[{"[", "j", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"StingLineBundle", "=", RowBox[{"StringJoin", "[", RowBox[{"StingLineBundle", ",", "\"\<,\>\"", ",", RowBox[{"ToString", "[", RowBox[{"LineBundles", "[", RowBox[{"[", RowBox[{"j", ",", "i"}], "]"}], "]"}], "]"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"command", "=", RowBox[{"StringJoin", "[", RowBox[{ "command", ",", "\"\< ambientcohom O(\>\"", ",", "StingLineBundle", ",", "\"\<); \>\""}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"command", "=", RowBox[{"StringJoin", "[", RowBox[{"command", ",", "\"\<\\\" \>\"", ",", "TempFile"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "command", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "From", " ", "a", " ", "short", " ", "exact", " ", "sequence", " ", "of", " ", "bundles", " ", "one", " ", "can", " ", "obtain", " ", "a", " ", "long", " ", "exact", " ", "in", " ", RowBox[{"cohomology", ".", " ", "This"}], " ", "routine", " ", "serves", " ", "to", " ", "calculate", " ", "the", " ", "third", " ", "cohomology", " ", "vector", " ", "of", " ", "such", " ", "a", " ", RowBox[{"scenario", ".", " ", "The"}], " ", "input", " ", "data", " ", "are", " ", "the", " ", "two", " ", "given", " ", "vectors", " ", "in", " ", "the", " ", "correct", " ", "order", " ", "as", " ", "well", " ", "as", " ", "the", " ", "position", " ", "of", " ", "the", " ", "third", " ", "requested", " ", RowBox[{"vector", ".", " ", "The"}], " ", "fourth", " ", "variable", " ", "is", " ", "the", " ", "dimension", " ", "of", " ", "the", " ", "requested", " ", "cohomology", " ", "vector", " ", "and", " ", "in", " ", "the", " ", "last", " ", "one", " ", "one", " ", "can", " ", "include", " ", "known", " ", "data", " ", "from", " ", "the", " ", "requested", " ", "cohomology", " ", RowBox[{"vector", ".", " ", "For"}], " ", "instance", " ", "if", " ", "one", " ", "knows", " ", "that", " ", "the", " ", "first", " ", "entry", " ", "of", " ", "that", " ", "vector", " ", "is", " ", "zero", " ", "one", " ", "can", " ", "type", " ", RowBox[{ RowBox[{"{", RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], "}"}], ".", " ", "If"}], " ", "nothing", " ", "is", " ", "known", " ", "one", " ", "needs", " ", "to", " ", "type", " ", RowBox[{ RowBox[{"{", "}"}], ".", " ", "The"}], " ", "routine", " ", "returns", " ", "the", " ", "most", " ", "general", " ", "result", " ", "one", " ", "can", " ", "get"}], ",", " ", RowBox[{ "only", " ", "using", " ", "that", " ", "the", " ", "long", " ", "sequence", " ", "is", " ", "exact", " ", "and", " ", "without", " ", "taking", " ", "into", " ", "account", " ", "how", " ", "the", " ", "maps", " ", "look", " ", RowBox[{"like", "."}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ThirdVectorFromLongExactSequence", "[", RowBox[{ "CohomVector1_", ",", "CohomVector2_", ",", "RequestedVectorPosition_", ",", "RequestedVectorDimension_", ",", "Retrictions_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "i", "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Only", " ", "resolve", " ", "sequences", " ", "if", " ", "program", " ", "does", " ", "not", " ", "collect", " ", "line", " ", "bundles"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"ThirdVectorFromLongExactSequenceLabeled", "[", RowBox[{ RowBox[{"{", RowBox[{"CohomVector1", ",", "\"\\""}], "}"}], ",", RowBox[{"{", RowBox[{"CohomVector2", ",", "\"\\""}], "}"}], ",", "\"\\"", ",", "RequestedVectorPosition", ",", "RequestedVectorDimension", ",", "Retrictions"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "else", " ", "if", " ", "line", " ", "bundles", " ", "are", " ", "only", " ", "collected"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", " ", "[", "CohomVector1", "]"}]}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Here", " ", "we", " ", "can", " ", "add", " ", "labels", " ", "to", " ", "the", " ", "column"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ThirdVectorFromLongExactSequenceLabeled", "[", RowBox[{ RowBox[{"{", RowBox[{"CohomVector1_", ",", "Label1_"}], "}"}], ",", RowBox[{"{", RowBox[{"CohomVector2_", ",", "Label2_"}], "}"}], ",", "Label3_", ",", "RequestedVectorPosition_", ",", "RequestedVectorDimension_", ",", "Retrictions_"}], "]"}], ":=", "\[IndentingNewLine]", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "EquationsToSolve", ",", "TempAltersum", ",", "LongExactSequence", ",", "PositionList", ",", "SolutionVector", ",", "Solution", ",", "ParameterVector", ",", "WorkingVector", ",", "LongExactSequenceTable", ",", "SolutionTable", ",", "Labels"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Only", " ", "resolve", " ", "sequences", " ", "if", " ", "program", " ", "does", " ", "not", " ", "collect", " ", "line", " ", "bundles"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Vector", " ", "of", " ", "parameters", " ", "that", " ", "will", " ", "be", " ", "constraint", " ", "by", " ", "altering", " ", "sums", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "The", " ", "index", " ", "grows", " ", "with", " ", "every", " ", "request", " ", "in", " ", "order", " ", "avoid", " ", "using", " ", "the", " ", "same", " ", "parameters", " ", "in", " ", "different", " ", "tasks"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ParameterVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["A", RowBox[{"Index", "+", "#", "-", "1"}]], "&"}], ",", RowBox[{"Length", " ", "[", "CohomVector1", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "This", " ", "vector", " ", "is", " ", "for", " ", "working", " ", "and", " ", "has", " ", "therefore", " ", "the", " ", "same", " ", "length", " ", "of", " ", "all", " ", "the", " ", "other", " ", "vectors", " ", RowBox[{"involved", ".", " ", "It"}], " ", "will", " ", "be", " ", "solved", " ", "for", " ", "the", " ", RowBox[{"h", "^"}], "*", " ", "and", " ", "be", " ", "returned", " ", "afterwards"}], "*)"}], "\[IndentingNewLine]", RowBox[{"WorkingVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["h", RowBox[{"#", "-", "1"}]], "&"}], ",", RowBox[{"Length", " ", "[", "CohomVector1", "]"}]}], "]"}]}], ";", " ", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Put", " ", "parameters"}], ",", " ", RowBox[{ "higher", " ", "than", " ", "the", " ", "requested", " ", "dimension"}], ",", " ", RowBox[{"to", " ", "zero"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", RowBox[{"RequestedVectorDimension", "+", "2"}]}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "CohomVector1", "]"}]}], ",", RowBox[{"i", "++"}], ",", RowBox[{ RowBox[{"ParameterVector", "[", RowBox[{"[", "i", "]"}], "]"}], "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Takes", " ", "the", " ", "parts", " ", "of", " ", "the", " ", "result", " ", "that", " ", "are", " ", "already", " ", "known", " ", "into", " ", "account"}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Retrictions", "]"}]}], ",", RowBox[{"i", "++"}], ",", RowBox[{ RowBox[{"ParameterVector", "[", RowBox[{"[", RowBox[{"Retrictions", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "=", RowBox[{"Retrictions", "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Put", " ", "the", " ", "requested", " ", "vector", " ", "in", " ", "the", " ", "right", " ", "position", " ", "of", " ", "the", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"RequestedVectorPosition", "\[Equal]", "1"}], ",", RowBox[{ RowBox[{"LongExactSequence", "=", RowBox[{"Transpose", "[", RowBox[{"{", RowBox[{ "ParameterVector", ",", "CohomVector1", ",", "CohomVector2"}], "}"}], "]"}]}], ";", RowBox[{"Labels", "=", RowBox[{"{", RowBox[{"Label3", ",", "Label1", ",", "Label2"}], "}"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"RequestedVectorPosition", "\[Equal]", "2"}], ",", RowBox[{ RowBox[{"LongExactSequence", "=", RowBox[{"Transpose", "[", RowBox[{"{", RowBox[{ "CohomVector1", ",", "ParameterVector", ",", "CohomVector2"}], "}"}], "]"}]}], ";", RowBox[{"Labels", "=", RowBox[{"{", RowBox[{"Label1", ",", "Label3", ",", "Label2"}], "}"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"RequestedVectorPosition", "\[Equal]", "3"}], ",", RowBox[{ RowBox[{"LongExactSequence", "=", RowBox[{"Transpose", "[", RowBox[{"{", RowBox[{ "CohomVector1", ",", "CohomVector2", ",", "ParameterVector"}], "}"}], "]"}]}], ";", RowBox[{"Labels", "=", RowBox[{"{", RowBox[{"Label1", ",", "Label2", ",", "Label3"}], "}"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"EquationsToSolve", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"TempAltersum", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "List", " ", "of", " ", "positions", " ", "of", " ", "zeros", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"PositionList", "=", RowBox[{"Position", "[", RowBox[{"LongExactSequence", ",", "0"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Go", " ", "through", " ", "the", " ", "long", " ", "exact", " ", "sequence", " ", "and", " ", "collect", " ", "shorter", " ", "exact", " ", "sequences", " ", "between", " ", "their", " ", "zero", " ", "entries"}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "LongExactSequence", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", RowBox[{"LongExactSequence", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"TempAltersum", "=", RowBox[{"TempAltersum", "+", RowBox[{ RowBox[{"Power", "[", RowBox[{ RowBox[{"-", "1"}], ",", RowBox[{"i", "+", "j"}]}], "]"}], "*", RowBox[{"LongExactSequence", "[", RowBox[{"[", RowBox[{"i", ",", "j"}], "]"}], "]"}]}]}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"MemberQ", "[", RowBox[{"PositionList", ",", RowBox[{"{", RowBox[{"i", ",", "j"}], "}"}]}], "]"}], "||", RowBox[{"(", RowBox[{ RowBox[{"i", "\[Equal]", RowBox[{"Length", "[", "LongExactSequence", "]"}]}], "&&", " ", RowBox[{"j", "\[Equal]", " ", RowBox[{"Length", "[", RowBox[{"LongExactSequence", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}]}], ")"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"LongExactSequence", "[", RowBox[{"[", RowBox[{"i", ",", "j"}], "]"}], "]"}], "\[NotEqual]", " ", "0"}], ","}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"EquationsToSolve", ",", RowBox[{"{", "TempAltersum", "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"TempAltersum", "=", "0"}]}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Solutions", " ", "of", " ", "the", " ", "equations"}], ",", " ", RowBox[{ "given", " ", "by", " ", "exact", " ", "sequences", " ", "between", " ", "zeros", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Solution", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"WorkingVector", " ", "-", " ", "ParameterVector"}], "\[Equal]", "0"}], "&&", " ", RowBox[{"EquationsToSolve", "\[Equal]", "0"}]}], ",", "WorkingVector"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"WorkingVector", "-", "ParameterVector"}], "\[Equal]", "0"}], "&&", RowBox[{"EquationsToSolve", "\[Equal]", "0"}]}], ",", "WorkingVector"}], "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Solution", "\[Equal]", RowBox[{"{", "False", "}"}]}], ",", RowBox[{ RowBox[{"Print", "[", "\"\<\!\(\* StyleBox[\"xxxxxxx\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"LongExactSequence\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"is\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"inconsistent\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"-\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"Results\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"may\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"not\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"be\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"trustworthy\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"xxxxxxx\", FontColor->RGBColor[1, 0, 0]]\)\>\"", "]"}], ";", RowBox[{"Solution", "=", RowBox[{"{", "}"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "Solution", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"WorkingVector", "=", RowBox[{"Flatten", "[", RowBox[{"WorkingVector", "/.", "Solution"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Index", "=", RowBox[{"Index", "+", RowBox[{"Length", " ", "[", "CohomVector1", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{",", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Extended", " ", "Search", " ", "for", " ", "twisted"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{"LongExactSequence", ",", "Pi"}], "]"}], "\[Equal]", RowBox[{"{", "}"}]}], "&&", RowBox[{"VerboseSearchForTwisted", "\[Equal]", "True"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", " ", "requested"}], ",", " ", RowBox[{ "the", " ", "long", " ", "exact", " ", "sequence", " ", "is", " ", "printed", " ", "before", " ", "calculation"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", " ", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[NotEqual]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"MatrixForm", "[", "\[IndentingNewLine]", RowBox[{"Transpose", "[", RowBox[{"{", RowBox[{ RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{"Labels", "[", RowBox[{"[", "1", "]"}], "]"}], "}"}], ",", RowBox[{ RowBox[{"Transpose", "[", "LongExactSequence", "]"}], "[", RowBox[{"[", "1", "]"}], "]"}]}], "]"}], ",", RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{"Labels", "[", RowBox[{"[", "2", "]"}], "]"}], "}"}], ",", RowBox[{ RowBox[{"Transpose", "[", "LongExactSequence", "]"}], "[", RowBox[{"[", "2", "]"}], "]"}]}], "]"}], ",", RowBox[{"Join", "[", RowBox[{ RowBox[{"{", RowBox[{"Labels", "[", RowBox[{"[", "3", "]"}], "]"}], "}"}], ",", RowBox[{ RowBox[{"Transpose", "[", "LongExactSequence", "]"}], "[", RowBox[{"[", "3", "]"}], "]"}]}], "]"}]}], "}"}], "]"}], "]"}], ",", "\[IndentingNewLine]", "\"\< --> \>\"", ",", RowBox[{"Labels", "[", RowBox[{"[", "RequestedVectorPosition", "]"}], "]"}], ",", "\"\< = \>\"", " ", ",", RowBox[{"MatrixForm", "[", "WorkingVector", "]"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LongExactSequenceTable", "=", "\[IndentingNewLine]", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{"LongExactSequence", ",", "Labels"}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"SolutionTable", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "WorkingVector", "}"}], "]"}], ",", RowBox[{"{", RowBox[{"Labels", "[", RowBox[{"[", "RequestedVectorPosition", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"LongExactSequenceTable", ",", RowBox[{"Style", "[", RowBox[{"\"\< \[DoubleLongRightArrow] \>\"", ",", RowBox[{"FontSize", "\[Rule]", "30"}]}], "]"}], ",", "SolutionTable"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Extended", " ", "Search", " ", "for", " ", "twisted"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{"LongExactSequence", ",", "Pi"}], "]"}], "\[Equal]", RowBox[{"{", "}"}]}], "&&", RowBox[{"VerboseSearchForTwisted", "\[Equal]", "True"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "1"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "WorkingVector", "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "else", " ", "if", " ", "line", " ", "bundles", " ", "are", " ", "only", " ", "collected"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", " ", "[", "CohomVector1", "]"}]}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "Start", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace_", ",", "ComplInters_", ",", "LineBundle_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", "}"}], ",", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"ListOrKoszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "LineBundle"}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "that", " ", "uses", " ", "the", " ", "Koszul", " ", "complex", " ", "in", " ", "order", " ", "to", " ", "calculate", " ", "the", " ", "cohomology", " ", "of", " ", "a", " ", "line", " ", "bundle", " ", "of", " ", "a", " ", "complete", " ", "intersection", " ", "via", " ", "line", " ", "bundles", " ", "of", " ", "the", " ", "ambient", " ", RowBox[{"variety", ".", " ", "Input"}], " ", "data", " ", "are", " ", "the", " ", "ambient", " ", "variety", " ", "the", " ", "complete", " ", "intersection", " ", "divisors", " ", "and", " ", "the", " ", "line", " ", "bundle"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ListOrKoszul", "[", RowBox[{"AmbientSpace_", ",", "ComplInters_", ",", "LineBundle_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "DimAmbientSpace", ",", "DimComplInters", ",", "CalculatedLineBundles", ",", "SubVarLineBundleCohom", ",", "PositionLinebundleInList", ",", "NumberOfLineBundlesNeededTmp"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"KoszuledLineBundleList", "[", RowBox[{"[", "1", "]"}], "]"}], "\[NotEqual]", " ", RowBox[{"{", RowBox[{"AmbientSpace", ",", "ComplInters"}], "}"}]}], ",", RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", RowBox[{"AmbientSpace", ",", "ComplInters"}], "}"}], "}"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"PositionLinebundleInList", "=", RowBox[{"Position", "[", RowBox[{"KoszuledLineBundleList", ",", "LineBundle", ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"PositionLinebundleInList", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "++"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"KoszuledLineBundleList", "[", RowBox[{"[", RowBox[{ RowBox[{"PositionLinebundleInList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "2"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"KoszuledLineBundleList", "[", RowBox[{"[", RowBox[{"PositionLinebundleInList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "+", RowBox[{"KoszuledLineBundleList", "[", RowBox[{"[", RowBox[{ RowBox[{"PositionLinebundleInList", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "3"}], "]"}], "]"}]}]}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", " ", "ComplInts", " ", "is", " ", "empty"}], ",", " ", RowBox[{ "the", " ", "routine", " ", "returns", " ", "simply", " ", "the", " ", "cohomology", " ", "of", " ", "the", " ", "line", " ", "bundle", " ", "on", " ", "the", " ", "ambient", " ", "variety"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"ComplInters", "\[Equal]", RowBox[{"{", "}"}]}], ",", RowBox[{"Return", "[", RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", "LineBundle"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"NumberOfLineBundlesNeededTmp", "=", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", "1"}], ",", RowBox[{"Print", "[", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], ",", "\"\< Koszul Sequences: The following linebundles are \ calculated\>\""}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CalculatedLineBundles", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Start", " ", "the", " ", "recursion"}], "*)"}], "\[IndentingNewLine]", RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"RecursivKoszul", "[", RowBox[{ "ComplInters", ",", "DimAmbientSpace", ",", "LineBundle", ",", "AmbientSpace", ",", "CalculatedLineBundles", ",", "1"}], RowBox[{"(*", "RecursionNumber", "*)"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", "1"}], ",", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", RowBox[{"SubvarietyResult", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";", RowBox[{"Print", "[", "\"\< \>\"", "]"}]}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"NumberOfLineBundlesNeededTmp", "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "-", "NumberOfLineBundlesNeededTmp"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "NumberOfLineBundlesNeededTmp", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwisted", "\[Equal]", "2"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "A"}], "]"}], "]"}], "\[NotEqual]", "0"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "This", " ", "vector", " ", "is", " ", "for", " ", "working", " ", "and", " ", "has", " ", "therefore", " ", "the", " ", "same", " ", "length", " ", "of", " ", "all", " ", "the", " ", "other", " ", "vectors", " ", RowBox[{"involved", ".", " ", "It"}], " ", "will", " ", "be", " ", "solved", " ", "for", " ", "the", " ", RowBox[{"h", "^"}], "*", " ", "and", " ", "be", " ", "returned", " ", "afterwards"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"WorkingVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["h", RowBox[{"#", "-", "1"}]], "&"}], ",", RowBox[{ "Length", " ", "[", "SubVarLineBundleCohom", "]"}]}], "]"}]}], ";", " ", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Solutions", " ", "of", " ", "the", " ", "equations"}], ",", " ", RowBox[{ "given", " ", "by", " ", "exact", " ", "sequences", " ", "between", " ", "zeros", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Solution", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{ "WorkingVector", " ", "-", " ", "ParameterVector"}], "\[Equal]", "0"}], "&&", " ", RowBox[{"EquationsToSolve", "\[Equal]", "0"}]}], ",", "WorkingVector"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"WorkingVector", "-", "SubVarLineBundleCohom"}], "\[Equal]", "0"}], "&&", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"2", ";;", "3"}], "]"}], "]"}], "\[Equal]", "0"}]}], ",", "WorkingVector"}], "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "SubVarLineBundleCohom", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "A"}], "]"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "Subscript"}], "]"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"Delete", "[", RowBox[{"SubVarLineBundleCohom", ",", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "A"}], "]"}]}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Positions", "=", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "A"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"SubVarLineBundleCohom", "/.", RowBox[{"Subscript", "\[Rule]", "Sum"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"SubVarLineBundleCohom", "/.", RowBox[{"A", "\[Rule]", "0"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "SubVarLineBundleCohom", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"2", ";;", "3"}], "]"}], "]"}], "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"#", "+", "1"}], "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"E", ",", "1"}], RowBox[{"(*", RowBox[{"#", "-", "1"}], "*)"}], "]"}]}], "&"}], ",", "2"}], RowBox[{"(*", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}], "*)"}], "]"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"Flatten", "[", RowBox[{"WorkingVector", "/.", "Solution"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "Positions", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Index", "++"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"Positions", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"Positions", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "+", SubscriptBox["A", "Index"]}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"Positions", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"Positions", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], "+", SubscriptBox["A", "Index"]}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"2", ";;", "3"}], "]"}], "]"}], "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"#", "+", "1"}], "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"E", ",", "#"}], "]"}]}], "&"}], ",", "2"}], RowBox[{"(*", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}], "*)"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwisted", "\[Equal]", "2"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Positions", "=", RowBox[{"Position", "[", RowBox[{"SubVarLineBundleCohom", ",", "Pi"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"2", ";;", "2"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"2", ";;", "2"}], "]"}], "]"}], "/.", RowBox[{"Pi", "\[Rule]", "E"}]}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"DimComplInters", ";;", "DimComplInters"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"DimComplInters", ";;", "DimComplInters"}], "]"}], "]"}], "/.", RowBox[{"Pi", "\[Rule]", RowBox[{"E", "^", "I"}]}]}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", "#", "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"E", ",", RowBox[{"#", "-", "1"}]}], "]"}]}], "&"}], ",", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", "#", "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"E", ",", RowBox[{"#", "-", "1"}]}], "]"}]}], "&"}], ",", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}]}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", RowBox[{"1", ";;", "2"}], "]"}], "]"}], "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", "#", "]"}], "]"}], "&"}], ",", "2"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SubVarLineBundleCohom", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", "#", "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{"E", ",", RowBox[{"#", "-", "1"}]}], "]"}]}], "&"}], ",", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"KoszuledLineBundleList", ",", RowBox[{"{", RowBox[{ "LineBundle", ",", "SubVarLineBundleCohom", ",", "NumberOfLineBundlesNeededTmp"}], "}"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "check", " ", "holomorphic", " ", "euler", " ", "characteristic"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"CheckEuler", "&&", RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"linebdldivisor", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"LineBundle", "[", RowBox[{"[", "i", "]"}], "]"}], "*", RowBox[{"PicardGenerator", "[", RowBox[{"[", "i", "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "LineBundle", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", "linebdldivisor", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"linebdldivisor", "=", RowBox[{"ConvertDivisorsToPicardGenerators", "[", RowBox[{"AmbientSpace", ",", "LineBundle"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "linebdldivisor", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"cohomCalgEuler", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"SubVarLineBundleCohom", "[", RowBox[{"[", "i", "]"}], "]"}], "*", RowBox[{"Power", "[", RowBox[{ RowBox[{"-", "1"}], ",", RowBox[{"i", "-", "1"}]}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "SubVarLineBundleCohom", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"TrueEuler", "=", RowBox[{"OutputLineBdlData", "[", RowBox[{ "\"\\"", ",", "subvarch", ",", "restrictedrules", ",", "subvardim", ",", "linebdldivisor"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "TrueEuler", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "SubVarLineBundleCohom", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "cohomCalgEuler", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"IsCalabiYau", "[", "subvarch", "]"}]}], ",", RowBox[{ "Print", "[", "\"\\"", "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"subvareulerchar", "=", RowBox[{"EulerChar", "[", RowBox[{"subvarch", ",", "restrictedrules"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "subvareulerchar", ",", "\"\< = \>\"", ",", RowBox[{"N", "[", "subvareulerchar", "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"CoordinateAnalysis", "[", RowBox[{ RowBox[{"coordinates", "~", "Join", "~", "addbasedivname"}], ",", RowBox[{"edgevals", "~", "Join", "~", "addbasedivisor"}], ",", "subvarch", ",", "restrictedrules", ",", "picardgens", ",", "subvardim", ",", "1"}], "]"}], ";"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"TrueEuler", "-", "cohomCalgEuler"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"TrueEuler", "-", "cohomCalgEuler"}], "\[NotEqual]", "0"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "aaaaaaaaaaaaaaa", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"If", "[", RowBox[{"TrackValue", ",", RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "eqns", ",", "\"\< Line Bundle: \>\"", ",", "linebdldivisor", ",", "\"\< = \>\"", ",", "\"\< - Discrepancy in holomorphic Euler characteristic \ observed: \\n cohomCalg: \>\"", ",", "cohomCalgEuler", ",", "\"\< Index Theorem: \>\"", ",", "TrueEuler"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"TrackValue", "=", "False"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Return", "[", "SubVarLineBundleCohom", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "to", " ", "convert", " ", "the", " ", "divisor", " ", "charges", " ", "in", " ", "a", " ", "base", " ", "that", " ", "the", " ", "holomorphic", " ", "euler", " ", "routine", " ", "can", " ", "understand"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"GeneratePicardGenerators", "[", "AmbientSpace_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "Picards", ",", "ToricDivisor", ",", "Picard", ",", "Sol", ",", RowBox[{"PicardGenerators", "=", RowBox[{"{", "}"}]}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ToricDivisor", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"ToricDivisor", "[", RowBox[{"[", "i", "]"}], "]"}], "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"Picards", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["Picard", "#"], "&"}], ",", RowBox[{"Length", " ", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Sol", "=", RowBox[{"FindInstance", "[", RowBox[{ RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"Picards", "[", RowBox[{"[", "i", "]"}], "]"}], "*", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "i"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "Picards", "]"}]}], "}"}]}], "]"}], "\[Equal]", "ToricDivisor"}], ",", "Picards", ",", "Integers"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"PicardGenerators", ",", RowBox[{"ConvertCoordsToDivClasses", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"Picards", "/.", "Sol"}], ")"}], "[", RowBox[{"[", "1", "]"}], "]"}], ".", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}]}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "PicardGenerators", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "to", " ", "convert", " ", "the", " ", "divisor", " ", "charges", " ", "in", " ", "a", " ", "base", " ", "that", " ", "the", " ", "holomorphic", " ", "euler", " ", "routine", " ", "can", " ", "understand"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ConvertDivisorsToPicardGenerators", "[", RowBox[{"AmbientSpace_", ",", "LineBundle_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "Sol", ",", "Picards", ",", "Picard", ",", "PicardRep"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Picards", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"Picard", ",", "#"}], "]"}], "&"}], ",", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Sol", "=", RowBox[{"FindInstance", "[", RowBox[{ RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"Picards", "[", RowBox[{"[", "i", "]"}], "]"}], "*", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "i"}], "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "Picards", "]"}]}], "}"}]}], "]"}], "\[Equal]", "LineBundle"}], ",", "Picards", ",", "Integers"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PicardRep", "=", RowBox[{"ConvertCoordsToDivClasses", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"Picards", "/.", "Sol"}], ")"}], "[", RowBox[{"[", "1", "]"}], "]"}], ".", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "PicardRep", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Since", " ", "the", " ", "number", " ", "of", " ", "exact", " ", "sequences", " ", "depends", " ", "on", " ", "the", " ", "number", " ", "of", " ", "intersecting", " ", "hypersurfaces"}], ",", " ", RowBox[{"we", " ", "use", " ", "a", " ", "recursion"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"RecursivKoszul", "[", RowBox[{ "ComplInters_", ",", "Dim_", ",", "LineBundle_", ",", "AmbientSpace_", ",", "CalculatedLineBundles_", ",", "RecursionNumber_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "DimAmbientSpace", ",", "DimComplInters", ",", "IntermediateLineBundleCohom", ",", "IntermediateLineBundle", ",", "IntermediateLineBundleLabel", ",", "FinalLineBundleCohom", ",", "FinalLineBundle", ",", "FinalLineBundleLable", ",", "IntermediateSet", ",", "ThirdLabel", ",", "FinalSet", ",", "CalculatedLineBundlesTMP", ",", "IntermediateLineBundleCohomArray", ",", "LastLabel", ",", "SecondLabel", ",", "CurrentDim"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"CalculatedLineBundlesTMP", "=", "CalculatedLineBundles"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Test", " ", "if", " ", "we", " ", "arrived", " ", "at", " ", "the", " ", "firs", " ", "exact", " ", "sequence", " ", "from", " ", "equation", " ", RowBox[{"(", "...", ")"}], " ", RowBox[{"in", " ", "[", "...", "]"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"RecursionNumber", "\[Equal]", RowBox[{"Length", "[", "ComplInters", "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "The", " ", "FinalSet", " ", "is", " ", "simply", " ", "the", " ", "direct", " ", "sum", " ", "over", " ", "all", " ", "hypersurfaces", " ", "from", " ", "which", " ", "we", " ", "have", " ", "to", " ", "take", " ", "cohomology"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"FinalSet", "=", RowBox[{"Subsets", "[", RowBox[{"ComplInters", ",", RowBox[{"{", "RecursionNumber", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"FinalLineBundleCohom", "=", "\[IndentingNewLine]", RowBox[{"Sum", "[", RowBox[{ RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"FinalSet", "[", RowBox[{"[", RowBox[{"j", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"FinalSet", "[", RowBox[{"[", "j", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "FinalSet", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "This", " ", "intermediate", " ", "set", " ", "correspond", " ", "the", " ", "second", " ", "part", " ", "of", " ", "the", " ", "firs", " ", "exact", " ", "sequence", " ", "from", " ", "equation", " ", RowBox[{"(", "...", ")"}], " ", RowBox[{"in", " ", "[", "...", "]"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"IntermediateSet", "=", RowBox[{"Subsets", "[", RowBox[{"ComplInters", ",", RowBox[{"{", RowBox[{"RecursionNumber", "-", "1"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleCohomArray", "=", RowBox[{"Array", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"IntermediateSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}], ",", RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"IntermediateSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}]}], "]"}]}], "}"}], "&"}], ",", RowBox[{"Length", "[", "IntermediateSet", "]"}]}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Keep", " ", "calculated", " ", "LineBundles", " ", "in", " ", "mind", " ", "in", " ", "order", " ", "to", " ", "print", " ", "them", " ", "at", " ", "the", " ", "end", " ", "if", " ", "requested"}], "*)"}], "\[IndentingNewLine]", RowBox[{"AppendTo", "[", "\[IndentingNewLine]", RowBox[{"CalculatedLineBundlesTMP", ",", "\[IndentingNewLine]", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\< h_X(\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\<) = (\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], ",", "\"\<)\>\""}], "]"}], "&"}], ",", RowBox[{"IntermediateLineBundleCohomArray", "/.", RowBox[{"Pi", "\[Rule]", "1"}]}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleCohom", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateLineBundleCohomArray", "[", RowBox[{"[", RowBox[{"j", ",", "2"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{ "Length", "[", "IntermediateLineBundleCohomArray", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Labels", " ", "for", " ", "the", " ", "long", " ", "exact", " ", "sequences"}], "*)"}], "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleLabel", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"FinalLineBundleLable", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"IntermediateLineBundle", "=", RowBox[{"IntermediateLineBundleCohomArray", "[", RowBox[{"[", RowBox[{"All", ",", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleLabel", "=", RowBox[{"GenerateSequenceLabelExtended", "[", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", " ", "\"\<\>\""}], "}"}], ",", "IntermediateLineBundle", ",", "\"\\"", ",", "FancyOutput", ",", "3"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Same", " ", "for", " ", "the", " ", "other", " ", "label"}], "*)"}], "\[IndentingNewLine]", RowBox[{"FinalLineBundle", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"FinalSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"FinalSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}], "&"}], ",", RowBox[{"Length", "[", "FinalSet", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"FinalLineBundleLable", "=", RowBox[{"GenerateSequenceLabelExtended", "[", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", "\"\<\>\""}], "}"}], ",", "FinalLineBundle", ",", "\"\\"", ",", "FancyOutput", ",", "3"}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Print", " ", "the", " ", "line", " ", "bundle", " ", "cohomologies", " ", "in", " ", "the", " ", "direct", " ", "sums"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", "1"}], " ", "&&", " ", RowBox[{ RowBox[{"Length", "[", RowBox[{"DeleteDuplicates", "[", RowBox[{"Flatten", "[", "CalculatedLineBundlesTMP", "]"}], "]"}], "]"}], ">", "1"}]}], ",", RowBox[{"Print", "[", "\[IndentingNewLine]", RowBox[{ "\"\\"", ",", "\[IndentingNewLine]", RowBox[{"Flatten", "[", "CalculatedLineBundlesTMP", "]"}], ",", "\"\<\\n\>\""}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calcuating", " ", "the", " ", "last", " ", "missing", " ", "column", " ", "in", " ", "the", " ", "first", " ", "exact", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "\[NotEqual]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"CurrentDim", "=", "Dim"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"LastLabel", "=", " ", RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalI]\>\"", ",", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber", "+", "1"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"LastLabel", "=", " ", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber", "+", "1"}], "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"CurrentDim", "=", "DimComplInters"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"LastLabel", "=", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"LastLabel", "=", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], ",", "\"\<) \>\""}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"FinalLineBundleCohom", ",", "FinalLineBundleLable"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "IntermediateLineBundleCohom", ",", "IntermediateLineBundleLabel"}], "}"}], ",", "\[IndentingNewLine]", "LastLabel", ",", "3", ",", "CurrentDim", ",", RowBox[{"{", "}"}]}], "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "If", " ", "the", " ", "first", " ", "exact", " ", "squence", " ", "is", " ", "not", " ", "jet", " ", "reached", " ", "we", " ", "end", " ", "up", " ", "here"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "The", " ", "second", " ", "part", " ", "of", " ", "the", " ", "corresponding", " ", "short", " ", "exact", " ", "sequence", " ", "depends", " ", "on", " ", "in", " ", "which", " ", "row", " ", "of", " ", RowBox[{"(", "...", ")"}], " ", RowBox[{"in", " ", "[", "...", "]"}], " ", "we", " ", "are", " ", "and", " ", "therefore", " ", "on", " ", "the", " ", "RecursionNumber"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"IntermediateSet", "=", RowBox[{"Subsets", "[", RowBox[{"ComplInters", ",", RowBox[{"{", RowBox[{"RecursionNumber", "-", "1"}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleCohomArray", "=", RowBox[{"Array", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"IntermediateSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}], ",", RowBox[{"ListOrLineBundleCohomologyOf", "[", RowBox[{"AmbientSpace", ",", RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"IntermediateSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}]}], "]"}]}], "}"}], "&"}], ",", RowBox[{"Length", "[", "IntermediateSet", "]"}]}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleCohom", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateLineBundleCohomArray", "[", RowBox[{"[", RowBox[{"j", ",", "2"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{ "Length", "[", "IntermediateLineBundleCohomArray", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Creat", " ", "labels", " ", "for", " ", "the", " ", "long", " ", "exact", " ", "sequences", " ", "as", " ", "above"}], "*)"}], "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleLabel", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLongExactSequences", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"IntermediateLineBundle", "=", RowBox[{"Array", "[", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"IntermediateSet", "[", RowBox[{"[", RowBox[{"#", ",", "i"}], "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", RowBox[{"IntermediateSet", "[", RowBox[{"[", "#", "]"}], "]"}], "]"}]}], "}"}]}], "]"}]}], "+", "LineBundle"}], "&"}], ",", RowBox[{"Length", "[", "IntermediateSet", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"IntermediateLineBundleLabel", "=", RowBox[{"GenerateSequenceLabelExtended", "[", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", "\"\<\>\""}], "}"}], ",", "IntermediateLineBundle", ",", "\"\\"", ",", "FancyOutput", ",", "3"}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Only", " ", "for", " ", "the", " ", "last", " ", "row", " ", "in", " ", RowBox[{"(", "...", ")"}], " ", RowBox[{"from", " ", "[", "...", "]"}], " ", "we", " ", "have", " ", "a", " ", "different", " ", "labeling"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"RecursionNumber", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"CurrentDim", "=", "DimComplInters"}], ";", "\[IndentingNewLine]", RowBox[{"ThirdLabel", "=", RowBox[{"GenerateSequenceLabelExtended", "[", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", "\"\<\>\""}], "}"}], ",", RowBox[{"{", "LineBundle", "}"}], ",", "\"\\"", ",", "FancyOutput", ",", "3"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], ",", "\"\<) \>\""}], "]"}], ","}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"CurrentDim", "=", "Dim"}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", "\[IndentingNewLine]", RowBox[{"CalculatedLineBundlesTMP", ",", "\[IndentingNewLine]", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\< O_X(\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\<) = (\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], ",", "\"\<)\>\""}], "]"}], "&"}], ",", RowBox[{"IntermediateLineBundleCohomArray", "/.", RowBox[{"Pi", "\[Rule]", "1"}]}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"ThirdLabel", "=", " ", RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalI]\>\"", ",", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber", "+", "1"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"ThirdLabel", "=", " ", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber", "+", "1"}], "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"SecondLabel", "=", " ", RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalI]\>\"", ",", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"SecondLabel", "=", " ", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber"}], "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Start", " ", "of", " ", "the", " ", "recursion", " ", "of", " ", "this", " ", "routine", " ", "with", " ", "date", " ", "for", " ", "the", " ", "next", " ", "row", " ", "counted", " ", "from", " ", "the", " ", "bottom", " ", "to", " ", "the", " ", "top", " ", "in", " ", RowBox[{"(", "...", ")"}], " ", RowBox[{"from", " ", "[", "...", "]"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", "\[IndentingNewLine]", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"RecursivKoszul", "[", RowBox[{ "ComplInters", ",", "DimAmbientSpace", ",", "LineBundle", ",", "AmbientSpace", ",", "CalculatedLineBundlesTMP", ",", RowBox[{"RecursionNumber", "+", "1"}]}], "]"}], ",", "\[IndentingNewLine]", "SecondLabel"}], RowBox[{"(*", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "-", "RecursionNumber"}], "]"}], ",", "\"\<)\>\""}], "]"}], "*)"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "IntermediateLineBundleCohom", ",", "IntermediateLineBundleLabel"}], "}"}], ",", "\[IndentingNewLine]", "ThirdLabel", ",", "\[IndentingNewLine]", "3", ",", "CurrentDim", ",", RowBox[{"{", "}"}]}], "]"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "that", " ", "generates", " ", "the", " ", "labels", " ", "for", " ", "the", " ", "long", " ", "exact", " ", "sequences"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Make", " ", "\\\\", "oplus", " ", "commutative"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"SetAttributes", "[", RowBox[{"CirclePlus", ",", "Flat"}], "]"}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "As", " ", "Input", " ", "is", " ", "first", " ", "the", " ", "heading", " ", "in", " ", "both", " ", "versions"}], ",", " ", RowBox[{ "then", " ", "the", " ", "line", " ", "bundle", " ", "list", " ", "the", " ", "letter", " ", "for", " ", "the", " ", RowBox[{"variety", ".", " ", "HeadingsOption"}], " ", "is", " ", "for", " ", "the", " ", "choice", " ", "of", " ", "the", " ", "heading", " ", "one", " ", "wants", " ", "to", " ", "have"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"GenerateSequenceLabelExtended", "[", RowBox[{ "Heading_", ",", "InList_", ",", "Variety_", ",", "Fancy_", ",", "HeadingsOption_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "FancyInList", ",", "DirectSum", ",", "ListWithMulitCounting", ",", "PositionTmp"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ListWithMulitCounting", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"InList", "\[Equal]", RowBox[{"{", "}"}]}], ",", RowBox[{"DirectSum", "=", "\"\<\>\""}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "InList", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"PositionTmp", "=", RowBox[{"Position", "[", RowBox[{"ListWithMulitCounting", ",", RowBox[{"InList", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"PositionTmp", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "PositionTmp", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ListWithMulitCounting", "[", RowBox[{"[", RowBox[{ RowBox[{"PositionTmp", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], ",", "2"}], "]"}], "]"}], "++"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"ListWithMulitCounting", ",", RowBox[{"{", RowBox[{ RowBox[{"InList", "[", RowBox[{"[", "i", "]"}], "]"}], ",", "1"}], "}"}]}], "]"}]}], "\[IndentingNewLine]", "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Fancy", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"FancyInList", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "ListWithMulitCounting", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"ListWithMulitCounting", "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}], "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"FancyInList", ",", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\< \[ScriptCapitalO]\>\"", ",", "Variety"}], "]"}], "[", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"ListWithMulitCounting", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"FancyInList", ",", RowBox[{"Superscript", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\< \[ScriptCapitalO]\>\"", ",", "Variety"}], "]"}], "[", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"ListWithMulitCounting", "[", RowBox[{"[", RowBox[{"i", ",", "1"}], "]"}], "]"}], "]"}], "]"}], ",", RowBox[{"CirclePlus", "[", RowBox[{"\"\<\>\"", ",", RowBox[{"ListWithMulitCounting", "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}]}], "]"}]}], "]"}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"DirectSum", "=", RowBox[{"FancyInList", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "FancyInList", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"DirectSum", "=", RowBox[{"CirclePlus", "[", RowBox[{"DirectSum", ",", RowBox[{"FancyInList", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"DirectSum", "=", RowBox[{"StringJoin", "[", RowBox[{"\"\< O_\>\"", ",", "Variety", ",", "\"\<(\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"InList", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\<)\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"j", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "InList", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"StringLength", "[", "DirectSum", "]"}], "\[GreaterEqual]", RowBox[{"j", "*", "40"}]}], ",", RowBox[{ RowBox[{"DirectSum", "=", RowBox[{"StringJoin", "[", RowBox[{"DirectSum", ",", "\"\<\\n\>\""}], "]"}]}], ";", RowBox[{"j", "++"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DirectSum", "=", RowBox[{"StringJoin", "[", RowBox[{"DirectSum", ",", RowBox[{"StringJoin", "[", RowBox[{ "\"\< + O_\>\"", ",", "Variety", ",", "\"\<(\>\"", ",", RowBox[{"ListToStringWithoutBracket", "[", RowBox[{"InList", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}], ",", "\"\<)\>\""}], "]"}]}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"StringJoin", "[", RowBox[{"DirectSum", ",", "\"\< \>\""}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "=", " ", RowBox[{ "0", " ", "only", " ", "returns", " ", "the", " ", "standard", " ", "text", " ", "heading", " ", "back"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"HeadingsOption", "\[Equal]", "0"}], ",", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"Style", "[", RowBox[{ RowBox[{"Heading", "[", RowBox[{"[", RowBox[{"2", "-", "Fancy"}], "]"}], "]"}], ",", RowBox[{"FontSize", "\[Rule]", "LESFontSize"}]}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "=", " ", RowBox[{ "1", " ", "returns", " ", "the", " ", "standard", " ", "text", " ", "Heading", " ", "together", " ", "with", " ", "the", " ", "list", " ", "of", " ", "line", " ", "bundles", " ", "corresponding", " ", "to", " ", "InList"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"HeadingsOption", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"InList", "\[Equal]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"TableForm", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", RowBox[{"Style", "[", RowBox[{ RowBox[{"Heading", "[", RowBox[{"[", RowBox[{"2", "-", "Fancy"}], "]"}], "]"}], ",", RowBox[{"FontSize", "\[Rule]", "LESFontSize"}]}], "]"}], ",", "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"TableAlignments", "\[Rule]", "Center"}], ",", RowBox[{"TableSpacing", "\[Rule]", RowBox[{"{", "1", "}"}]}]}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"TableForm", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"Heading", "[", RowBox[{"[", RowBox[{"2", "-", "Fancy"}], "]"}], "]"}], ",", RowBox[{"FontSize", "\[Rule]", "LESFontSize"}]}], "]"}], ",", "DirectSum"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"TableAlignments", "\[Rule]", "Center"}], ",", RowBox[{"TableSpacing", "\[Rule]", RowBox[{"{", "3", "}"}]}]}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "=", " ", RowBox[{ "2", " ", "returns", " ", "the", " ", "standard", " ", "text", " ", "heading", " ", "together", " ", "with", " ", "the", " ", "a", " ", "space", " ", "above", " ", "and", " ", "underneath"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"HeadingsOption", "\[Equal]", "2"}], ",", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"TableForm", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"\"\<\>\"", ",", RowBox[{"Style", "[", RowBox[{ RowBox[{"Heading", "[", RowBox[{"[", RowBox[{"2", "-", "Fancy"}], "]"}], "]"}], ",", RowBox[{"FontSize", "\[Rule]", "LESFontSize"}]}], "]"}], ",", "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"TableAlignments", "\[Rule]", "Center"}], ",", RowBox[{"TableSpacing", "\[Rule]", RowBox[{"{", "1", "}"}]}]}], "]"}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "=", " ", RowBox[{ "2", " ", "only", " ", "returns", " ", "the", " ", "list", " ", "of", " ", "line", " ", "bundles", " ", "corresponding", " ", "to", " ", "InList"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"HeadingsOption", "\[Equal]", "3"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Return", "[", "DirectSum", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Main", " ", "routine"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CohomologyOf", "[", RowBox[{"BundleType_", ",", "AmbientSpace_", ",", "ComplIntersIn_", ",", RowBox[{"Optional1_:", "\"\\""}], ",", RowBox[{"Optional2_:", "\"\\""}], ",", RowBox[{"Optional3_:", "\"\\""}], ",", RowBox[{"Optional4_:", "\"\\""}], ",", RowBox[{"Optional4_:", "\"\\""}]}], "]"}], ":=", RowBox[{"Module", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "VerboseLevel", ",", RowBox[{"FancyOutput", "=", "1"}], ",", "EarlyTime", ",", "PossibleOptionalInputs", ",", RowBox[{"Type", "=", "\"\\""}], ",", RowBox[{"VerboseLevelIn", "=", "\"\\""}], ",", RowBox[{"FancyOutputIn", "=", "\"\\""}], ",", RowBox[{"SearchForTwistedIn", "=", "0"}], ",", "OptionalInput", ",", "SFT"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "List", " ", "of", " ", "lists", " ", "of", " ", "possible", " ", "optional", " ", "input", " ", "strings"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"EarlyTime", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PossibleOptionalInputs", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "\"\\"", ",", "\"\\"", ",", "\"\\""}], "}"}], ",", " ", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "\"\\"", ",", "\"\\"", ",", "\"\\"", ",", "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", "\"\\"", "}"}]}], "\[IndentingNewLine]", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"OptionalInput", "=", RowBox[{"{", RowBox[{ "Optional1", ",", "Optional2", ",", "Optional3", ",", "Optional4"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Collect", " ", "the", " ", "optional", " ", "input"}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", "4"}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"OptionalInput", "[", RowBox[{"[", "i", "]"}], "]"}], "\[Equal]", "\"\\""}], ",", RowBox[{"i", "=", "5"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"ToUpperCase", "[", "PossibleOptionalInputs", "]"}], ",", "\"\<,\>\"", ",", RowBox[{"ToUpperCase", "[", RowBox[{"OptionalInput", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{ RowBox[{ "ToUpperCase", "[", "PossibleOptionalInputs", "]"}], ",", RowBox[{"ToUpperCase", "[", RowBox[{"OptionalInput", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], "]"}], "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpPosition", "=", RowBox[{"Position", "[", RowBox[{ RowBox[{ "ToUpperCase", "[", "PossibleOptionalInputs", "]"}], ",", RowBox[{"ToUpperCase", "[", RowBox[{"OptionalInput", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "tmpPosition", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[Equal]", "1"}], ",", RowBox[{"Type", "=", RowBox[{"PossibleOptionalInputs", "[", RowBox[{"[", RowBox[{"1", ",", RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}]}], "]"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[Equal]", "2"}], ",", RowBox[{"VerboseLevelIn", "=", RowBox[{"PossibleOptionalInputs", "[", RowBox[{"[", RowBox[{"2", ",", RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}]}], "]"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[Equal]", "3"}], ",", RowBox[{"FancyOutputIn", "=", RowBox[{"PossibleOptionalInputs", "[", RowBox[{"[", RowBox[{"3", ",", RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}]}], "]"}], "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "1"}], "]"}], "]"}], "\[Equal]", "4"}], ",", RowBox[{"SearchForTwistedIn", "=", RowBox[{"ToExpression", "[", RowBox[{"PossibleOptionalInputs", "[", RowBox[{"[", RowBox[{"4", ",", RowBox[{"tmpPosition", "[", RowBox[{"[", RowBox[{"1", ",", "2"}], "]"}], "]"}]}], "]"}], "]"}], "]"}]}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\<~~~~~~~~Error: \\\"\>\"", ",", RowBox[{"OptionalInput", "[", RowBox[{"[", "i", "]"}], "]"}], ",", "\"\<\\\" is not a valid optional input string. \ cohomCalg ++Koszul extension will IGNORE it and continue......\>\""}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ "Type", ",", "\"\< \>\"", ",", "VerboseLevelIn", ",", "\"\< \>\"", ",", "FancyOutputIn", ",", "\"\< \>\"", ",", "SearchForTwistedIn"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutputIn", "\[Equal]", "\"\\""}], ",", RowBox[{"FancyOutput", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", RowBox[{"-", "1"}]}], ",", RowBox[{"i", "\[LessEqual]", "10"}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"ToUpperCase", "[", "VerboseLevelIn", "]"}], ",", "\"\<\[Equal]\>\"", ",", RowBox[{"ToUpperCase", "[", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "i", "]"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"ToUpperCase", "[", "VerboseLevelIn", "]"}], "\[Equal]", RowBox[{"ToUpperCase", "[", RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "i", "]"}]}], "]"}], "]"}]}], ",", RowBox[{ RowBox[{"VerboseLevel", "=", "i"}], ";", RowBox[{"i", "=", "12"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"i", "\[Equal]", "11"}], ",", RowBox[{ RowBox[{ "Print", "[", "\"\\"", "]"}], ";", RowBox[{"Return", "[", "]"}], ";"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "ComplIntersIn", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "=", "0"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ "BundleType", "\[NotEqual]", "\"\\""}], "&&", RowBox[{ "BundleType", "\[NotEqual]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Start", " ", "the", " ", "full", " ", "program", " ", "once", " ", "in", " ", "order", " ", "to", " ", "collect", " ", "line", " ", "bundles"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCollector", "=", RowBox[{"{", "True", "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"StartCohomologyOf", "[", RowBox[{ "False", ",", "BundleType", ",", "AmbientSpace", ",", "ComplIntersIn", ",", "Type", ",", RowBox[{"(*", "\"\\"", "*)"}], RowBox[{"-", "1"}], ",", RowBox[{"(*", "FancyOutput", "*)"}], "0", ",", RowBox[{"(*", "\"\\"", "*)"}], "0", ",", "EarlyTime"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculate", " ", "all", " ", "collected", " ", "line", " ", "bundles"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "LineBundleCollector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"LineBundleCollector", "=", RowBox[{"DeleteDuplicates", "[", "LineBundleCollector", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "LineBundleCollector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "LineBundleCollector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"LineBundleCollector", "=", RowBox[{"Delete", "[", RowBox[{"LineBundleCollector", ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "LineBundleCollector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "=", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "3", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "3", "]"}], "]"}], "+", RowBox[{"Length", "[", "LineBundleCollector", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "4", "]"}], "]"}], "=", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "4", "]"}], "]"}], "+", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "=", "0"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"CalculateListOfLineBundles", "[", RowBox[{ "AmbientSpace", ",", "LineBundleCollector", ",", "BundleNumber"}], "]"}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "LineBundleCollector", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"LineBundleCollector", "=", RowBox[{"{", "False", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Start", " ", "program", " ", "again", " ", "in", " ", "order", " ", "to", " ", "calculate", " ", "sequences"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"StartCohomologyOf", "[", RowBox[{ "False", ",", "BundleType", ",", "AmbientSpace", ",", "ComplIntersIn", ",", "Type", ",", "VerboseLevel", ",", "FancyOutput", ",", "SearchForTwistedIn", ",", "EarlyTime"}], "]"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"StartCohomologyOf", "[", RowBox[{ "HodgeCalculation_", ",", "BundleType_", ",", "AmbientSpace_", ",", "ComplIntersIn_", ",", "Type_", ",", "VerboseLevel_", ",", "FancyOutputIn_", ",", "SearchForTwistedIn_", ",", RowBox[{"EarlyTime_:", "0"}]}], "]"}], ":=", RowBox[{"Module", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "r", ",", "V", ",", "ReturnCohomology", ",", "PrintCohomology", ",", RowBox[{"(*", RowBox[{"EarlyTime", ","}], "*)"}], "LateTime", ",", "DimComplInters", ",", "DimAmbientSpace", ",", "ComplInters", ",", "VectorBundleCharges", ",", "VectorBundleConstraints", ",", "CheckData", ",", "ShowKoszul", ",", "ShowLES", ",", "LineBundle", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivariant", " ", "Line", " ", "Bundle"}], "*)"}], "ReturnCohomologyPlus", ",", "ReturnCohomologyMinus", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Lambda", "^", "0"}], " ", "tangent", " ", "bundle", " ", "variables"}], "*)"}], "Lambda0CotangentBundleCohomology", ",", "CalabiYauRestrictions", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Other", " ", "Monad", " ", "Bundle"}], "*)"}], "DualExactMonadBundleCohomology", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Monad", " ", "bundle", " ", "variables"}], "*)"}], "AuxiliaryBundle", ",", "CotangentBundelCohomology", ",", "EulerBundles11", ",", "EulerBundles12", ",", "Vector1", ",", "Vector2", ",", "LabelEuler11", ",", "LabelEuler12", ",", "LabelEuler13", ",", "Euler21Array", ",", "Euler21", ",", "LabelEuler21", ",", "LabelEuler23", ",", "VbConstrString", ",", "VbChargesString", ",", "nV", ",", "rV", ",", "ShowSpecialLES", ",", "HeadingsOption", ",", "VBr", ",", "lV", ",", "Euler11Label", ",", "Euler12Label", ",", "Euler13Label", ",", "ODiDjSubsets", ",", "ODiDjArray", ",", "ODiDj", ",", "ODiDjLabel", ",", "Vector2Label", ",", "AuxiliaryBundleQ1Label", ",", "AuxiliaryBundleQ1", ",", "Lambda2AuxiliaryBundleLabel", ",", "Lambda2AuxiliaryBundle", ",", "OSmSimDk", ",", "OSmSimDkSubsets", ",", "OSmSimDkArray", ",", "Vector2Array", ",", "OSmSimDkLabel", ",", "TensorProductAuxiliaryBundleLabel", ",", "TensorProductAuxiliaryBundle", ",", "OSmSimSj", ",", "OSmSimSjArray", ",", "OSmSimSjLabel", ",", "TensorProductOmega1Label", ",", "TensorProductOmega1", ",", "OSmSimSj2", ",", "OSmSimSj2Array", ",", "OSmSimSj2Label", ",", "AuxBundleQ2Label", ",", "AuxBundleQ2", ",", "Lambda2OmegaLabel", ",", "Lambda2Omega", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Tangent", " ", "bundle", " ", "variables"}], "*)"}], "TangentBundelCohomology", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Hodge", " ", "diamond", " ", "variables"}], "*)"}], "RowZero", ",", "RowOne", ",", "RowTwo", ",", "ParameterMatrix", ",", "WorkingMatrix", ",", "WorkingVector", ",", "Solution", ",", "ResultMatrix", ",", "BettiVector", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"End", " ", "monad", " ", "bundle"}], "*)"}], "OSmMi", ",", "OSNrmMi", ",", "OSNrmMiArray", ",", "OSmMiLabel", ",", "OSNrmMiLabel", ",", "VBrOSMiArray", ",", "ExOSmMiLabel", ",", "ExOSmMi", ",", "OSmNr", ",", "OSmNrLabel", ",", "rOSxEdualLabel", ",", "rOSxEdual", ",", "OSNrmNr", ",", " ", "VBrOSNr", ",", "OSNrmNrArray", ",", "VBrOSNrArray", ",", "OSNrmNrLabel", ",", "VBrOSNrLabel", ",", "OSNrxEdualLabel", ",", "OSNrxEdual", ",", "OSmNrMi", ",", "VBrOSMi", ",", "OSmNrMiLabel", ",", "VBrOSMiLabel", ",", "OSMixEdualLabel", ",", "OSMixEdual", ",", "Vector1Label", ",", "OSMixVdualLabel", ",", "OSMixVdual", ",", "ExEdualLabel", ",", "ExEdual", ",", "EdualxE", ",", "ParameterVector", ",", "ExEdualSFT", ",", "ExVdualLabel", ",", "ExVdual", ",", "VxVdualLabel", ",", "VxVdual", ",", "Stats"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"FancyOutput", "=", "FancyOutputIn"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwistedIn", "\[Equal]", "3"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"SearchForTwisted", "=", "1"}], ";", RowBox[{"VerboseSearchForTwisted", "=", "True"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"SearchForTwisted", "=", "SearchForTwistedIn"}], ";", RowBox[{"VerboseSearchForTwisted", "=", "False"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ComplInters", "=", "ComplIntersIn"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowKoszul", "=", RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", "3"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "4"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "5"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "10"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLES", "=", RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", "1"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "2"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "4"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "5"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", "2"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "5"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "9"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "10"}]}], ",", RowBox[{"HeadingsOption", "=", "1"}], ",", RowBox[{"HeadingsOption", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Special", " ", "verbose", " ", "for", " ", "showing", " ", "the", " ", "critical", " ", "sequences", " ", "in", " ", "EndV"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ShowSpecialLES", "=", RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", "8"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "9"}], "||", RowBox[{"VerboseLevel", "\[Equal]", "10"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Resest", " ", "of", " ", "the", " ", "counter", " ", "if", " ", "there", " ", "is", " ", "no", " ", "hogde", " ", "diamond", " ", "calculation", " ", "going", " ", "on"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "EquivariantCalculation", "=", "\"\\""}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "\[NotEqual]", "3"}], ",", RowBox[{ RowBox[{ "Print", "[", "\"\\"", " ", "]"}], ";", RowBox[{"Return", "[", "]"}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"LineBundle", "=", RowBox[{"ComplInters", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ComplInters", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"The", " ", "Z_n", " ", "action"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ZnAction", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "3", "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", "6"}], ",", RowBox[{"Verbose6", "=", "True"}], ",", RowBox[{"Verbose6", "=", "False"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "ClearLineBundles", ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"EquivariantCalculation", "=", "True"}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomologyPlus", "=", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "LineBundle"}], "]"}], "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"EquivariantCalculation", "=", "False"}], ";", "\[IndentingNewLine]", "ClearLineBundles", ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"FullResult", "=", RowBox[{"CohomologyOf", "[", RowBox[{"\"\\"", ",", "AmbientSpace", ",", RowBox[{"{", RowBox[{"ComplInters", ",", "LineBundle"}], "}"}], ",", "\"\\""}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomologyMinus", "=", RowBox[{"FullResult", "-", "ReturnCohomologyPlus"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"{", RowBox[{"ReturnCohomologyPlus", ",", "ReturnCohomologyMinus"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"TableForm", "[", RowBox[{ RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomologyPlus", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\\"", ",", "\"\<+\>\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomologyMinus", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\\"", ",", "\"\<-\>\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}], "\[IndentingNewLine]", "}"}], ",", RowBox[{"TableDirections", "\[Rule]", "Row"}]}], "\[IndentingNewLine]", "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"LineBundle", "=", RowBox[{"ComplInters", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ComplInters", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "LineBundle"}], "]"}], "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ "ListToStringWithoutBracket", "[", "LineBundle", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Distinguish", " ", "between", " ", "monad", " ", "bundles", " ", "and", " ", "the", " ", "tangent", " ", RowBox[{"bundle", ".", " ", "Lambda1CoTM"}], " ", "and", " ", "CoTM", " ", "are", " ", "of", " ", "course", " ", "the", " ", "same"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Tangent", " ", "bundle", " ", "calculation"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"VectorBundleCharges", "=", RowBox[{"AmbientSpace", "[", RowBox[{"[", "3", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VectorBundleConstraints", "=", "ComplInters"}], ";", "\[IndentingNewLine]", RowBox[{"VBr", "=", "r"}], ";", "\[IndentingNewLine]", RowBox[{"VbConstrString", "=", "\"\\""}], ";", RowBox[{"lV", "=", "\"\\""}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", RowBox[{ RowBox[{"V", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", "\"\\""}], ";", RowBox[{"rV", "=", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], " ", RowBox[{ RowBox[{"V", "=", "\"\\""}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", "\"\\""}], ";", RowBox[{"rV", "=", "\"\\""}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Monad", " ", "bundle", " ", "calculation"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ComplInters", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VectorBundleCharges", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VectorBundleConstraints", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "3", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBr", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "4", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VbConstrString", "=", "\"\\""}], ";", RowBox[{"lV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", RowBox[{ RowBox[{"V", "=", "\"\\""}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}], ";", RowBox[{"rV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"V", "=", "\"\\""}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", "\"\\""}], ";", RowBox[{"rV", "=", "\"\\""}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Monad", " ", "bundle", " ", "calculation"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", RowBox[{"\"\\"", "BundleType"}], "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ComplInters", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VectorBundleCharges", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VectorBundleConstraints", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "3", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"VBr", "=", RowBox[{"ComplIntersIn", "[", RowBox[{"[", "4", "]"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"VBr", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"VbConstrString", "=", "\"\\""}], ";", RowBox[{"lV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", RowBox[{ RowBox[{"V", "=", "\"\\""}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}], ";", RowBox[{"rV", "=", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"V", "=", "\"\\""}], ";", RowBox[{"VbChargesString", "=", "\"\\""}], ";", RowBox[{"nV", "=", "\"\\""}], ";", RowBox[{"rV", "=", "\"\\""}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Initialize", " ", "variables", " ", "for", " ", "holomorphic", " ", "euler", " ", "check"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"!", "HodgeCalculation"}], "&&", "CheckEuler", "&&", RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"eqns", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"ConvertDivisorsToPicardGenerators", "[", RowBox[{"AmbientSpace", ",", "#"}], "]"}], "&"}], ",", "ComplInters"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"subvar", "=", RowBox[{"Apply", "[", RowBox[{"Times", ",", "eqns"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"subvardim", "=", RowBox[{"ambientdimension", "-", RowBox[{"TotalPolyDegree", "[", "subvar", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"TEMPrestrictedintz", "=", RowBox[{ "PrintTemporary", "[", "\"\\"", "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"restrictedrulz", "=", RowBox[{"ComputeRestrictedIntz", "[", RowBox[{ "rule", ",", "picardgens", ",", "ambientdimension", ",", "subvar"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"restrictedrules", ":=", RowBox[{"restrictedrulz", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Clear", "[", "TEMPrestrictedintz", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "subvardim", ",", "\"\<-dimensional subvariety is given by: \>\"", ",", "subvar", ",", "\"\<\nThe restricted intersection numbers on it are: \>\"", ",", "restrictedrules"}], "]"}], ";", "\n", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"restrictedrulz", "[", RowBox[{"[", "1", "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"TEMPambientchernclass", "=", RowBox[{ "PrintTemporary", "[", "\"\\"", "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ambientchernclass", "=", RowBox[{"FastAmbientTotalChernClassFromCoords", "[", RowBox[{"edgevals", ",", "ambientdimension"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ambientterms", "=", RowBox[{"Length", "[", RowBox[{"MonomialList", "[", "ambientchernclass", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Clear", "[", "TEMPambientchernclass", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ "\"\\"", ",", "ambientterms", ",", "\"\< monomial terms.\>\""}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"subvarch", "=", RowBox[{"SubvarietyChernClasses", "[", RowBox[{"ambientchernclass", ",", "eqns", ",", "subvardim"}], "]"}]}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"OutputChernClassList", "[", RowBox[{"subvarch", ",", "\"\\""}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }], " ", "calculation", " ", "of", " ", "the", " ", "O_S", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ "BundleType", "\[Equal]", "\"\\""}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "if", " ", "the", " ", "Hodge", " ", "diamond", " ", "is", " ", "calculated"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Calculate", " ", "O_S"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Lambda0CotangentBundleCohomology", "=", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], "]"}], "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ "ReturnCohomology", "=", "Lambda0CotangentBundleCohomology"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "0"}], "]"}], "[", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}], "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ , " ", "calculation", " ", "of", " ", "the", " ", "O_S", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "exact", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Reset", " ", "list", " ", "of", " ", "calculated", " ", "line", " ", "bundle", " ", "cohomologie", " ", "of", " ", "the", " ", "subvariety"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"Index", "=", "1"}]}], " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles11", "=", "VectorBundleCharges"}], ";", "\[IndentingNewLine]", RowBox[{"Euler21Array", "=", "VectorBundleConstraints"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Vector1", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"EulerBundles11", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler21", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", "DimAmbientSpace"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler21", "=", RowBox[{"Euler21", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Euler21Array", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "Euler21Array", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler21", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbConstrString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i O_S[-\>\"", ",", "VbConstrString", ",", "\"\<_i]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "Euler21Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler11", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbChargesString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_k O_S[-\>\"", ",", "VbChargesString", ",", "\"\<_k]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "EulerBundles11", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DualExactMonadBundleCohomology", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Vector1", ",", "LabelEuler11"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Euler21", ",", "LabelEuler21"}], "}"}], ",", "\[IndentingNewLine]", "\"\\"", ",", "\[IndentingNewLine]", "1", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"DualExactMonadBundleCohomology", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "exact", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "Lambda", " ", "2", " ", "of", " ", "the", " ", "exact", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Reset", " ", "list", " ", "of", " ", "calculated", " ", "line", " ", "bundle", " ", "cohomologie", " ", "of", " ", "the", " ", "subvariety"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Sequence", " ", "3"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimDkArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"OSmSimDkArray", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSmSimDk", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}], "+", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"OSmSimSj", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSjArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSj", "=", RowBox[{"OSmSimSj", "+", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"OSmSimSjArray", ",", RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimDkLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "+", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\<\[Rho]\>\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i\\\\oplus_k O_S(-\>\"", ",", "VbConstrString", ",", "\"\<_j-\>\"", ",", "VbChargesString", ",", "\"\<_k)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimDkArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "+", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_{i,j} O_S(-\>\"", ",", "VbConstrString", ",", "\"\<_i-\>\"", ",", "VbConstrString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimSjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{ RowBox[{"ShowLongExactSequences", "=", "0"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"VTensorLineBundleSum", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmSimDk", ",", "OSmSimDkLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSmSimSj", ",", "OSmSimSjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"\"\\"", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "]"}]}], ",", "\[IndentingNewLine]", "1", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Sequence", " ", "2"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSj", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSjArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "<", "i"}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSj", "=", RowBox[{"OSmSimSj", "+", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"OSmSimSjArray", ",", RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSDiDj", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSDiDjArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "<", "i"}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSDiDj", "=", RowBox[{"OSDiDj", "+", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"+", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"OSDiDjArray", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "+", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "+", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i\\\\oplus_j O_S(-\>\"", ",", "VbConstrString", ",", "\"\<_i-\>\"", ",", "VbConstrString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimSjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSDiDjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]<\[Rho]'\>\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\<\[Rho]\>\""}], "]"}], "+", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\<\[Rho]'\>\""}], "]"}]}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_{\\rho,\\rho'} O_S(\>\"", ",", "VbChargesString", ",", "\"\<_\\rho+\>\"", ",", "VbChargesString", ",", "\"\<_\\rho')\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSDiDjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{ RowBox[{"ShowLongExactSequences", "=", "0"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Q1AuxBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSDiDj", ",", "OSDiDjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSmSimSj", ",", "OSmSimSjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "1"}], "]"}], ",", "\[IndentingNewLine]", "1", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Sequence", " ", "1"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Lambda2DualExactMonadBundleCohomology", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Q1AuxBundle", ",", "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"VTensorLineBundleSum", ",", RowBox[{"\"\\"", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "]"}]}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "2"}], "]"}], "[", "V", "]"}], ",", "\[IndentingNewLine]", "1", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"Lambda2DualExactMonadBundleCohomology", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "\"\<2\>\""}], "]"}], "[", "V", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "Lambda", " ", "2", " ", "of", " ", "the", " ", "exact", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "exact", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Reset", " ", "list", " ", "of", " ", "calculated", " ", "line", " ", "bundle", " ", "cohomologie", " ", "of", " ", "the", " ", "subvariety"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles11", "=", RowBox[{"-", "VectorBundleCharges"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler21Array", "=", RowBox[{"-", "VectorBundleConstraints"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Vector1", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"EulerBundles11", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler21", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Euler21Array", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "Euler21Array", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler21", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbConstrString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i O_S[-\>\"", ",", "VbConstrString", ",", "\"\<_i]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "Euler21Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler11", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbChargesString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_k O_S[-\>\"", ",", "VbChargesString", ",", "\"\<_k]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "EulerBundles11", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DualExactMonadBundleCohomology", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Euler21", ",", "LabelEuler21"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector1", ",", "LabelEuler11"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]V\>\"", ",", "\"\<*\>\""}], "]"}], ",", "\[IndentingNewLine]", "3", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"DualExactMonadBundleCohomology", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "exact", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Reset", " ", "list", " ", "of", " ", "calculated", " ", "line", " ", "bundle", " ", "cohomologie", " ", "of", " ", "the", " ", "subvariety"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles11", "=", RowBox[{"-", "VectorBundleCharges"}]}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles12", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Vector1", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"EulerBundles11", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"VBr", "*", RowBox[{"Koszul", "[", RowBox[{ "AmbientSpace", ",", "ComplInters", ",", "EulerBundles12"}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler11", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbChargesString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_k O_S[-\>\"", ",", "VbChargesString", ",", "\"\<_k]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "EulerBundles11", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler12", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "rV", "]"}], ",", "\"\\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler13", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalE]\>\"", ",", "\"\\"", ",", "\"\<\[Star]\>\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AuxiliaryBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Vector1", ",", "LabelEuler11"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "LabelEuler12"}], "}"}], ",", "\[IndentingNewLine]", "LabelEuler13", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"For", " ", "a", " ", "Calabi"}], "-", "Yau"}], ",", " ", RowBox[{ "the", " ", "following", " ", "constraints", " ", "hold"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Type", "\[Equal]", "\"\\""}], "||", RowBox[{"Type", "\[Equal]", "\"\\""}]}], ")"}], "&&", RowBox[{"DimComplInters", "\[GreaterEqual]", "2"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"DimComplInters", "+", "1"}], ",", "0"}], "}"}]}], "}"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", "}"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Sum", " ", "over", " ", "this", " ", "line", " ", "bundlelist", " ", "in", " ", "the", " ", "the", " ", "euler", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Euler21Array", "=", RowBox[{"-", "VectorBundleConstraints"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Generate", " ", "zero", " ", "vector", " ", "first", " ", "in", " ", "order", " ", "to", " ", "avoid", " ", "errors", " ", "calculating", " ", "ambienbt", " ", "space", " ", "cohomology"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Euler21", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler21", "=", RowBox[{"Euler21", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Euler21Array", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "Euler21Array", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler21", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbConstrString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i O_S[-\>\"", ",", "VbConstrString", ",", "\"\<_i]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "Euler21Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler23", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[CapitalOmega]\>\"", ",", "\"\\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"CotangentBundelCohomology", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Euler21", ",", "LabelEuler21"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"AuxiliaryBundle", ",", "LabelEuler13"}], "}"}], ",", "\[IndentingNewLine]", "LabelEuler23", ",", "\[IndentingNewLine]", "3", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"CotangentBundelCohomology", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", RowBox[{"Lambda", "^", "2"}], " ", "of", " ", "the", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ "BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{ "BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], RowBox[{"Index", "=", "1"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", "r"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"EulerBundles11", "=", RowBox[{"-", "VectorBundleCharges"}]}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles12", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Vector1", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"EulerBundles11", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"VBr", "*", RowBox[{"Koszul", "[", RowBox[{ "AmbientSpace", ",", "ComplInters", ",", "EulerBundles12"}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Euler11Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<-\>\"", ",", "VbChargesString"}], "]"}], ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_k O_S[-\>\"", ",", "VbChargesString", ",", "\"\<_k]\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "EulerBundles11", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler12Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "rV", "]"}], ",", "\"\<)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Euler13Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalE]\>\"", ",", "\"\\"", ",", "\"\<\[Star]\>\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AuxiliaryBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Vector1", ",", "Euler11Label"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "Euler12Label"}], "}"}], ",", "\[IndentingNewLine]", "Euler13Label", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "0"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ODiDjSubsets", "=", RowBox[{"Subsets", "[", RowBox[{ RowBox[{"Join", "[", RowBox[{"VectorBundleCharges", ",", "VectorBundleCharges"}], "]"}], ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ODiDjArray", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}]}], "-", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}]}], "&"}], ",", "ODiDjSubsets"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"ODiDj", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"j", "-", "1"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{ RowBox[{"Binomial", "[", RowBox[{"r", ",", "2"}], "]"}], "*", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ "ShowLES", ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"ODiDjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\\""}], "]"}]}], "-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\\""}], "]"}]}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_{i\"", ",", "VbChargesString", ",", "\"\<_i-\>\"", ",", "VbChargesString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "ODiDjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Vector2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\[CirclePlus]\>\"", RowBox[{"MatrixForm", "[", RowBox[{"{", RowBox[{ RowBox[{"{", "rV", "}"}], ",", RowBox[{"{", "2", "}"}]}], "}"}], "]"}]}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "rV", "]"}], ",", "\"\< over 2)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AuxiliaryBundleQ1Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalQ]\>\"", ",", "\"\<1\>\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{ RowBox[{"ShowLongExactSequences", "=", "0"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AuxiliaryBundleQ1", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"ODiDj", ",", "ODiDjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "Vector2Label"}], "}"}], ",", "\[IndentingNewLine]", "AuxiliaryBundleQ1Label", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AuxiliaryBundleQ1Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalQ]\>\"", ",", "\"\<1\>\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "0"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalE]\>\"", ",", "\"\\"", ",", "\"\<*\>\""}], "]"}], ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\<(E_S^* )^\\\\oplus(\>\"", ",", RowBox[{"ToString", "[", "rV", "]"}], ",", "\"\<)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "0"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Lambda2AuxiliaryBundleLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "2"}], "]"}], "[", RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalE]\>\"", ",", "\"\\"", ",", "\"\<*\>\""}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "0"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Lambda2AuxiliaryBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"AuxiliaryBundleQ1", ",", "AuxiliaryBundleQ1Label"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"VBr", "*", "AuxiliaryBundle"}], ",", "Vector2Label"}], "}"}], ",", "\[IndentingNewLine]", "Lambda2AuxiliaryBundleLabel", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimDkSubsets", "=", RowBox[{"Tuples", "[", RowBox[{"{", RowBox[{ "VectorBundleConstraints", ",", "VectorBundleCharges"}], "}"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimDkArray", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}]}], "-", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}]}], "&"}], ",", "OSmSimDkSubsets"}], "]"}]}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], RowBox[{ RowBox[{"OSmSimDkArray", "=", RowBox[{"-", "VectorBundleCharges"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimDk", "=", RowBox[{"OSmSimDk", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"OSmSimDk", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"OSmSimDkArray", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "OSmSimDkArray", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Generate", " ", "zero", " ", "vector", " ", "first", " ", "in", " ", "order", " ", "to", " ", "avoid", " ", "errors", " ", "calculating", " ", "ambienbt", " ", "space", " ", "cohomology"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"Vector2", "+", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"OSmSimDkSubsets", "=", RowBox[{"Subsets", "[", RowBox[{ RowBox[{"Join", "[", RowBox[{ "VectorBundleConstraints", ",", "VectorBundleCharges"}], "]"}], ",", RowBox[{"{", "2", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimDkArray", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"#", "[", RowBox[{"[", "1", "]"}], "]"}]}], "-", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}]}], "&"}], ",", "OSmSimDkSubsets"}], "]"}]}], ";"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Vector2Array", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"-", "VectorBundleConstraints"}], "&"}], ",", "r"}], "]"}], ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSmSimDkLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i\\\\oplus_k O_S(-\>\"", ",", "VbConstrString", ",", "\"\<_j-\>\"", ",", "VbChargesString", ",", "\"\<_k)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimDkArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Superscript", "[", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}], ")"}], ",", "\"\<\[CirclePlus]r\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "Vector2Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"TensorProductAuxiliaryBundleLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"\"\<\[ScriptCapitalE]\>\"", "\[CircleTimes]", RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}]}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\\"", ",", "VbConstrString", ",", "\"\<_i)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{ RowBox[{"ShowLongExactSequences", "=", "0"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"TensorProductAuxiliaryBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmSimDk", ",", "OSmSimDkLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "Vector2Label"}], "}"}], ",", "\[IndentingNewLine]", "TensorProductAuxiliaryBundleLabel", ",", "\[IndentingNewLine]", "1", ",", "5", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Taking", " ", "Calabi"}], "-", RowBox[{ "Yau", " ", "constraints", " ", "on", " ", "the", " ", "Hodge", " ", "diamond", " ", "into", " ", "account"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Type", "\[Equal]", "\"\\""}], "||", RowBox[{"Type", "\[Equal]", "\"\\""}]}], ")"}], "&&", RowBox[{"DimComplInters", "\[GreaterEqual]", "3"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"DimComplInters", "+", "1"}], ",", "0"}], "}"}]}], "}"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", "}"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSj", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSjArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSj", "=", RowBox[{"OSmSimSj", "+", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"OSmSimSjArray", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "VbConstrString"}], "]"}], "[", RowBox[{ RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_{i,j} O_S(-\>\"", ",", "VbConstrString", ",", "\"\<_i-\>\"", ",", "VbConstrString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimSjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"TensorProductOmega1Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[CapitalOmega]\>\"", ",", "1"}], "]"}], "\[CircleTimes]", RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}]}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\\"", ",", "VbConstrString", ",", "\"\<_i)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{ RowBox[{"ShowLongExactSequences", "=", "0"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"TensorProductOmega1", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmSimSj", ",", "OSmSimSjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "TensorProductAuxiliaryBundle", ",", "TensorProductAuxiliaryBundleLabel"}], "}"}], ",", "\[IndentingNewLine]", "TensorProductOmega1Label", ",", "\[IndentingNewLine]", "3", ",", "5", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSj2", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSmSimSj2Array", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "<", " ", "i"}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSj2", "=", RowBox[{"OSmSimSj2", "+", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"OSmSimSj2Array", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmSimSj2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Style", "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[CirclePlus]\>\"", ",", "\"\\""}], "]"}], RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_{i\"", ",", "VbConstrString", ",", "\"\<_i-\>\"", ",", "VbConstrString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSmSimSj2Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AuxBundleQ2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalQ]\>\"", ",", "2"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AuxBundleQ2", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmSimSj2", ",", "OSmSimSj2Label"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "TensorProductOmega1", ",", "TensorProductOmega1Label"}], "}"}], ",", "\[IndentingNewLine]", "AuxBundleQ2Label", ",", "\[IndentingNewLine]", "2", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AuxBundleQ2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalQ]\>\"", ",", "2"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "0"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Lambda2OmegaLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "2"}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"\"\<\[CapitalOmega]\>\"", ",", "\"\\""}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "0"}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Lambda2Omega", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"AuxBundleQ2", ",", "AuxBundleQ2Label"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ "Lambda2AuxiliaryBundle", ",", "Lambda2AuxiliaryBundleLabel"}], "}"}], ",", "\[IndentingNewLine]", "Lambda2OmegaLabel", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", "CalabiYauRestrictions"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"Lambda2Omega", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\<\[CapitalLambda]\>\"", ",", "2"}], "]"}], "[", " ", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}], " ", "]"}], "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", RowBox[{"Lambda", "^", "2"}], " ", "of", " ", "the", " ", "dual", " ", "monad", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "tangent", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Vector1", "=", RowBox[{"VBr", "*", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"EulerBundles11", "=", "VectorBundleCharges"}], ";", "\[IndentingNewLine]", RowBox[{"EulerBundles12", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler11", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\\\\oplus_k O_S[D_k]\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "EulerBundles11", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler12", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\[CirclePlus]\>\"", "rV"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler13", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalE]\>\"", ",", "\"\\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"AuxiliaryBundle", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"Vector1", ",", "LabelEuler12"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "LabelEuler11"}], "}"}], ",", "\[IndentingNewLine]", "LabelEuler13", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Taking", " ", "Calabi"}], "-", RowBox[{ "Yau", " ", "constraints", " ", "on", " ", "the", " ", "Hodge", " ", "diamond", " ", "into", " ", "account"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Type", "\[Equal]", "\"\\""}], "||", RowBox[{"Type", "\[Equal]", "\"\\""}]}], ")"}], "&&", RowBox[{"DimComplInters", "\[GreaterEqual]", "2"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"DimComplInters", "+", "1"}], ",", "0"}], "}"}]}], "}"}]}], ",", RowBox[{"CalabiYauRestrictions", "=", RowBox[{"{", "}"}]}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{"Vector2", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", "arbeitarbeit", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Sum", " ", "over", " ", "this", " ", "line", " ", "bundlelist", " ", "in", " ", "the", " ", "the", " ", "euler", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Euler21Array", "=", "VectorBundleConstraints"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"LabelEuler21", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", " ", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"\"\\"", ",", "\"\\""}], "]"}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\\\\oplus_i O_S[S_i]\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "Euler21Array", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"LabelEuler23", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{"V", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ RowBox[{"ToString", "[", "V", "]"}], ",", "\"\<_S\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"TangentBundelCohomology", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"AuxiliaryBundle", ",", "LabelEuler13"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "LabelEuler21"}], "}"}], ",", "\[IndentingNewLine]", "LabelEuler23", ",", "\[IndentingNewLine]", "1", ",", "\[IndentingNewLine]", "DimComplInters", ",", "CalabiYauRestrictions"}], "\[IndentingNewLine]", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"TangentBundelCohomology", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", " ", "V", " ", "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "tangent", " ", "bundle", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"cohomology", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "Start"}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "the", " ", "full", " ", "Hodge", " ", "diamond", " ", "using", " ", RowBox[{"Lambda", "^", "0"}], " ", RowBox[{"Lambda", "^", "1"}], " ", "and", " ", RowBox[{"Lambda", "^", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"2", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"EarlyTime", "=", RowBox[{"DateList", "[", "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", " ", RowBox[{"(*", RowBox[{ "Index", " ", "is", " ", "an", " ", "index", " ", "for", " ", "the", " ", "\"\\"", " ", "in", " ", "the", " ", "cohomology", " ", "vector"}], "*)"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Vector", " ", "of", " ", "parameters", " ", "which", " ", "will", " ", "be", " ", "constraint", " ", "by", " ", "altering", " ", "sums", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"RowZero", "=", RowBox[{"StartCohomologyOf", "[", RowBox[{"(*", "HodgeCalculation", "*)"}], RowBox[{ "True", ",", "\"\\"", ",", "AmbientSpace", ",", "ComplInters", ",", "Type", ",", "VerboseLevel", ",", "FancyOutput", ",", "SearchForTwistedIn"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"RowOne", "=", RowBox[{"StartCohomologyOf", "[", RowBox[{"(*", "HodgeCalculation", "*)"}], RowBox[{ "True", ",", "\"\\"", ",", "AmbientSpace", ",", "ComplInters", ",", "Type", ",", "VerboseLevel", ",", "FancyOutput", ",", "SearchForTwistedIn"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"RowTwo", "=", RowBox[{"StartCohomologyOf", "[", RowBox[{"(*", "HodgeCalculation", "*)"}], RowBox[{ "True", ",", "\"\\"", ",", "AmbientSpace", ",", "ComplInters", ",", "Type", ",", "VerboseLevel", ",", "FancyOutput", ",", "SearchForTwistedIn"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ParameterMatrix", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["B", RowBox[{ RowBox[{"Index", "+", "#1", "-", "1"}], ",", RowBox[{"Index", "+", "#2", "-", "1"}]}]], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", " ", "[", "RowZero", "]"}], ",", RowBox[{"Length", " ", "[", "RowZero", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"WorkingMatrix", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["X", RowBox[{ RowBox[{"Index", "+", "#1", "-", "1"}], ",", RowBox[{"Index", "+", "#2", "-", "1"}]}]], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", " ", "[", "RowZero", "]"}], ",", RowBox[{"Length", " ", "[", "RowZero", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"ParameterMatrix", "[", RowBox[{"[", "1", "]"}], "]"}], "=", "RowZero"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"ParameterMatrix", "[", RowBox[{"[", "2", "]"}], "]"}], "=", "RowOne"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"ParameterMatrix", "[", RowBox[{"[", "3", "]"}], "]"}], "=", "RowTwo"}], ";", "\[IndentingNewLine]", RowBox[{"WorkingVector", "=", RowBox[{"Flatten", "[", "WorkingMatrix", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "In", " ", "case", " ", "that", " ", "only", " ", "the", " ", "line", " ", "bundkes", " ", "are", " ", "collected"}], ",", " ", RowBox[{ "nothing", " ", "more", " ", "has", " ", "to", " ", "be", " ", "done", " ", "here"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}], ",", RowBox[{"Return", "[", "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Solutions", " ", "of", " ", "the", " ", "equations"}], ",", " ", RowBox[{ "given", " ", "by", " ", "exact", " ", "sequences", " ", "between", " ", "zeros", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Solution", "=", RowBox[{"Solve", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"WorkingVector", " ", "-", " ", "ParameterVector"}], "\[Equal]", "0"}], "&&", " ", RowBox[{"EquationsToSolve", "\[Equal]", "0"}]}], ",", "WorkingVector"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{"WorkingVector", "-", "ParameterVector"}], "\[Equal]", "0"}], RowBox[{"(*", RowBox[{"&&", RowBox[{"EquationsToSolve", "\[Equal]", "0"}]}], "*)"}], ",", "WorkingVector"}], "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"DimComplInters", "\[Equal]", "4"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{"WorkingMatrix", "\[Equal]", "ParameterMatrix"}], " ", "&&", " ", "\[IndentingNewLine]", RowBox[{ RowBox[{"CounterTranspose", "[", "ParameterMatrix", "]"}], "\[Equal]", " ", "ParameterMatrix"}], " ", "&&", "\[IndentingNewLine]", RowBox[{ RowBox[{"Transpose", "[", "ParameterMatrix", "]"}], " ", "\[Equal]", " ", "ParameterMatrix"}]}], " ", ",", "WorkingVector"}], "\[IndentingNewLine]", "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{"WorkingMatrix", "\[Equal]", "ParameterMatrix"}], " ", "&&", " ", "\[IndentingNewLine]", RowBox[{ RowBox[{"CounterTranspose", "[", "ParameterMatrix", "]"}], "\[Equal]", " ", "ParameterMatrix"}], " ", "&&", "\[IndentingNewLine]", RowBox[{ RowBox[{"Transpose", "[", "ParameterMatrix", "]"}], " ", "\[Equal]", " ", "ParameterMatrix"}]}], " ", ",", "WorkingVector"}], "\[IndentingNewLine]", "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"(", RowBox[{ RowBox[{"Solution", "\[Equal]", RowBox[{"{", "}"}]}], "||", " ", RowBox[{"Solution", "\[Equal]", RowBox[{"{", "False", "}"}]}]}], ")"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Solution", "\[Equal]", RowBox[{"{", "False", "}"}]}], ",", RowBox[{"Return", "[", "\"\\"", "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Solution", "\[Equal]", RowBox[{"{", "}"}]}], ",", RowBox[{"Return", "[", "\"\\"", "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "ResultMatrix", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ResultMatrix", "=", RowBox[{"Transpose", "[", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"WorkingMatrix", "/.", "Solution"}], ",", "1"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"BettiVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{ RowBox[{"2", "*", RowBox[{"Length", "[", "ResultMatrix", "]"}]}], "-", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", "ResultMatrix", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"ResultMatrix", "[", RowBox[{"[", "j", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"BettiVector", "[", RowBox[{"[", RowBox[{"j", "+", "i", "-", "1"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"BettiVector", "[", RowBox[{"[", RowBox[{"j", "+", "i", "-", "1"}], "]"}], "]"}], "+", RowBox[{"ResultMatrix", "[", RowBox[{"[", RowBox[{"j", ",", "i"}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ReturnCohomology", "=", RowBox[{"{", RowBox[{ RowBox[{"MatrixForm", "[", "ResultMatrix", "]"}], ",", RowBox[{"MatrixForm", "[", "BettiVector", "]"}]}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"TableForm", "[", RowBox[{ RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Hodge", " ", "Diamond"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Rotate", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"Grid", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"Table", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"Rotate", "[", RowBox[{ RowBox[{"ResultMatrix", "[", RowBox[{"[", RowBox[{"i", ",", "j"}], "]"}], "]"}], ",", RowBox[{"45", "\[Degree]"}]}], "]"}], "\[IndentingNewLine]", ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", " ", "[", "RowZero", "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", " ", "[", "RowZero", "]"}]}], "}"}]}], "]"}], "\[IndentingNewLine]", ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", "Automatic", ",", RowBox[{"Flatten", "[", RowBox[{"Table", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"i", ",", " ", "j"}], "}"}], " ", "->", " ", RowBox[{"If", "[", RowBox[{ RowBox[{"EvenQ", "[", RowBox[{"Plus", " ", "@@", " ", RowBox[{"Floor", "[", RowBox[{"{", RowBox[{ RowBox[{"i", " ", "-", " ", "1"}], ",", " ", RowBox[{"j", " ", "-", " ", "1"}]}], "}"}], "]"}]}], "]"}], ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}], ",", " ", "White"}], "]"}]}], ",", " ", RowBox[{"{", RowBox[{"i", ",", " ", RowBox[{"DimComplInters", "+", "1"}]}], "}"}], ",", " ", RowBox[{"{", RowBox[{"j", ",", " ", RowBox[{"DimComplInters", "+", "1"}]}], "}"}]}], "]"}], "]"}]}], "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], "\[IndentingNewLine]", RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}], ",", RowBox[{ RowBox[{"-", "45"}], "\[Degree]"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Betti", " ", "Numbers"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "BettiVector", "}"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Euler", " ", "character"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Graphics", "[", "{"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"EdgeForm", "[", "Thick", "]"}], ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}], ",", RowBox[{"Disk", "[", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}], ",", "100"}], "]"}]}], "}"}]}], "\[IndentingNewLine]", "}"}], ","}], "*)"}], "\[IndentingNewLine]", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"{", RowBox[{"{", RowBox[{"Style", "[", RowBox[{ RowBox[{"StringJoin", "[", RowBox[{"\"\<\[Chi] = \>\"", ",", RowBox[{"ToString", "[", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"-", "1"}], ")"}], "^", RowBox[{"(", RowBox[{"k", "-", "1"}], ")"}]}], "*", RowBox[{"BettiVector", "[", RowBox[{"[", "k", "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"k", ",", "1", ",", RowBox[{"Length", "[", "BettiVector", "]"}]}], "}"}]}], "]"}], "]"}]}], "]"}], " ", ",", RowBox[{"FontSize", "\[Rule]", "15"}]}], "]"}], "}"}], "}"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], ",", RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}]}], "]"}]}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"}", "]"}], "*)"}], "\[IndentingNewLine]", "}"}], ",", RowBox[{"TableDirections", "\[Rule]", "Row"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"else", " ", "standard", " ", "output"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"ReturnCohomology", "=", RowBox[{"{", RowBox[{ RowBox[{"MatrixForm", "[", "ResultMatrix", "]"}], ",", RowBox[{"MatrixForm", "[", "BettiVector", "]"}]}], "}"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", "End"}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", " ", "the", " ", "full", " ", "Hodge", " ", "diamond", " ", "using", " ", RowBox[{"Lambda", "^", "0"}], " ", RowBox[{"Lambda", "^", "1"}], " ", "and", " ", RowBox[{"Lambda", "^", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"2", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{ "-", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "calculation", " ", "of", " ", "EndV", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"Cohomology", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], "||", RowBox[{"BundleType", "\[Equal]", "\"\\""}]}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{" ", "a", ")"}], " ", "Epsilon", " ", "otimes", " ", "O_S", RowBox[{"(", RowBox[{"-", "Mi"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"E", " ", "x", " ", "OSmMi"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", " ", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"OSmMi", "=", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{"OSmMi", "=", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], "]"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"OSNrmMi", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], RowBox[{"OSNrmMi", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLES", "||", "ShowSpecialLES"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSNrmMiArray", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"OSNrmMiArray", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"OSNrmMiArray", "=", "VectorBundleCharges"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSmMiLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Superscript", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}], ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"-", "VectorBundleConstraints"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSNrmMiLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]=1\>\"", ",", "nV"}], "]"}], RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\<\[Rho]\>\""}], "]"}], "-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSNrmMiArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ExOSmMiLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "\"\<\[ScriptCapitalE]\[CircleTimes]\>\"", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\<\>\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", "ExOSmMiPart1Label", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"SpecialEndBundle", ",", "\[IndentingNewLine]", RowBox[{"SpecialConstraint", "=", RowBox[{"{", RowBox[{"{", RowBox[{"3", ",", "0"}], "}"}], "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"SpecialConstraint", "=", RowBox[{"{", "}"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"ExOSmMi", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"r", "*", "oplus", " ", "O_S", RowBox[{"(", RowBox[{"-", "S_i"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmMi", ",", "OSmMiLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"D_rho", "-", "S_i"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSNrmMi", ",", "OSNrmMiLabel"}], "}"}], ",", "\[IndentingNewLine]", "ExOSmMiLabel", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", "SpecialConstraint"}], "]"}]}], ";", RowBox[{"(*", RowBox[{ RowBox[{"Constraint", " ", "valid"}], ",", " ", RowBox[{"if", " ", "f", " ", "injective"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"ExOSmMi", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Test", " ", "the", " ", "dual"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"EdualxOSS", "=", RowBox[{ "ThirdVectorFromLongExactSequence", "[", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"D_rho", "-", "S_i"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"r", "*", "oplus", " ", "O_S", RowBox[{"(", RowBox[{"-", "S_i"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}], ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"EdualxOSS", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{" ", "b", ")"}], " ", "r", "*", "O_S", " ", "otimes", " ", "Epsilon", "*"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"rOS", " ", "x", " ", "Edual"}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"-", "D_rho"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"OSmNr", "=", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"r", "*", "O_S"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Vector2", "=", RowBox[{ RowBox[{"VBr", "^", "2"}], "*", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmNrLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]=1\>\"", ",", "nV"}], "]"}], RowBox[{"Superscript", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", " ", "\"\<\[Rho]\>\""}], "]"}]}], "]"}], ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_r O_S(-\>\"", ",", "VbChargesString", ",", "\"\<_r)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"-", "VectorBundleCharges"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Vector2Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", RowBox[{"rV", "^", "2"}]}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{ "StringJoin", "[", "\"\\"", "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"rOSxEdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[ScriptCapitalO]\>\"", ",", "\"\\"", ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}], RowBox[{"Superscript", "[", RowBox[{ "\"\<\[CircleTimes] \[ScriptCapitalE]\>\"", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"rOSxEdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmNr", ",", "OSmNrLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"Vector2", ",", "Vector2Label"}], "}"}], ",", "\[IndentingNewLine]", "rOSxEdualLabel", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"rOSxEdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{" ", "c", ")"}], " ", "oplus", " ", "O_S", RowBox[{"(", "D_rho", ")"}], " ", "otimes", " ", "Epsilon", "*"}], " ", "*)"}], " ", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"OSDr", " ", "x", " ", "Edual"}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSNrmNr", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSNr", "=", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLES", "||", "ShowSpecialLES"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSNrmNrArray", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "#1", "]"}], "]"}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "#2", "]"}], "]"}]}], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", "[", "VectorBundleCharges", "]"}], ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSNrArray", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{"VectorBundleCharges", "&"}], ",", "VBr"}], "]"}], ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSNrmNrLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho],\[Rho]'=1\>\"", ",", "nV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", " ", "\"\<\[Rho]'\>\""}], "]"}], "-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", " ", "\"\<\[Rho]\>\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_r1,r2 O_S(\>\"", ",", "VbChargesString", ",", "\"\<_r1)-\>\"", ",", "VbChargesString", ",", "\"\<_r2)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSNrmNrArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSNrLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]'=1\>\"", ",", "nV"}], "]"}], RowBox[{"Superscript", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", " ", "\"\<\[Rho]'\>\""}], "]"}], "]"}], ",", RowBox[{"\"\<\>\"", "\[CirclePlus]", "rV"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{ "StringJoin", "[", "\"\\"", "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "VBrOSNrArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSNrxEdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]=1\>\"", ",", "nV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", "\"\<\[Rho]\>\""}], "]"}], "]"}], "]"}], "\[CircleTimes]", " ", RowBox[{"Superscript", "[", RowBox[{"\"\<\[ScriptCapitalE]\>\"", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSNrxEdual", "=", "\[IndentingNewLine]", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"D_i", "-", "D_j"}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSNrmNr", ",", "OSNrmNrLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"oplus", " ", "O_S", RowBox[{"(", "D_rho", ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"{", RowBox[{"VBrOSNr", ",", "VBrOSNrLabel"}], "}"}], ",", "\[IndentingNewLine]", "OSNrxEdualLabel", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "alternative", " ", "way", " ", "of", " ", "computation"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"OSDrxEdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"OSDrxEdual", "=", "\[IndentingNewLine]", RowBox[{"Sum", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{ "ThirdVectorFromLongExactSequence", "[", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"D_i", "-", "D_j"}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"oplus", " ", "O_S", RowBox[{"(", "D_rho", ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"VBr", "*", RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}], "\[IndentingNewLine]", ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";", "\[IndentingNewLine]", " ", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"OSDrxEdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Test", " ", "the", " ", "dual"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmDrxE", "=", RowBox[{ "ThirdVectorFromLongExactSequence", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"oplus", " ", "O_S", RowBox[{"(", "D_rho", ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{"D_i", "-", "D_j"}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"OSmDrxE", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{" ", "d", ")"}], " ", "oplus", " ", "O_S", RowBox[{"(", "S_i", ")"}], " ", "otimes", " ", "Epsilon", "*"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"OSSi", " ", "x", " ", "Edual"}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Actually", " ", "not", " ", "needed"}], ",", " ", RowBox[{"since", " ", "Serre", " ", "duality"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwisted", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"oplus", " ", "O_S", RowBox[{"(", RowBox[{ RowBox[{"-", "N_rho"}], "+", "M_i"}], ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"OSmNrMi", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}], "+", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"OSmNrMi", "=", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "i", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"r", "*", "oplus", " ", "O_S", RowBox[{"(", "M_i", ")"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"VBrOSMi", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSMi", "=", RowBox[{"VBrOSMi", "+", RowBox[{"VBr", "*", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ShowLES", "||", "ShowSpecialLES"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{"OSNrmNrArray", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "#1", "]"}], "]"}], "-", RowBox[{"VectorBundleCharges", "[", RowBox[{"[", "#2", "]"}], "]"}]}], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", "[", "VectorBundleConstraints", "]"}], ",", RowBox[{"Length", "[", "VectorBundleCharges", "]"}]}], "}"}]}], "]"}], ",", "1"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], RowBox[{ RowBox[{"OSNrmNrArray", "=", RowBox[{"-", "VectorBundleCharges"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSMiArray", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{"VectorBundleConstraints", "&"}], ",", "VBr"}], "]"}], ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSmNrMiLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\<\[Rho]=1\>\"", ",", "nV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", " ", "\"\\""}], "]"}], "-", RowBox[{"Subscript", "[", RowBox[{"VbChargesString", ",", " ", "\"\<\[Rho]\>\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_r\\\\oplus_i O_S(\>\"", ",", "VbChargesString", ",", "\"\<_r)-\>\"", ",", "VbConstrString", ",", "\"\<_i)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSNrmNrArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"VBrOSMiLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{"Superscript", "[", RowBox[{ RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", " ", "\"\\""}], "]"}], "]"}], ",", RowBox[{"\"\<\[CirclePlus]\>\"", "rV"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", "\"\<\>\"", "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "VBrOSMiArray", RowBox[{"(*", "VBrOSNrArray", "*)"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSMixEdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "]"}], "]"}], "\[CircleTimes]", " ", RowBox[{"Superscript", "[", RowBox[{"\"\<\[ScriptCapitalE]\>\"", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSMixEdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSmNrMi", ",", "OSmNrMiLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"VBrOSMi", ",", "VBrOSMiLabel"}], "}"}], ",", "\[IndentingNewLine]", "OSMixEdualLabel", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", RowBox[{"(*", RowBox[{"{", RowBox[{"2", ",", "0"}], "}"}], "*)"}], "}"}]}], "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"OSMixEdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Else", " ", "use", " ", "Serre", " ", "duality"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"In", " ", "fact", " ", "d"}], ")"}], " ", "is", " ", "a"}], ")"}], " ", "dual"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"OSMixEdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "]"}], "]"}], "\[CircleTimes]", " ", RowBox[{"Superscript", "[", RowBox[{"\"\<\[ScriptCapitalE]\>\"", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSMixEdual", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"ExOSmMi", "[", RowBox[{"[", RowBox[{"DimComplInters", "+", "2", "-", "#"}], "]"}], "]"}], "&"}], ",", RowBox[{"DimComplInters", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "ComplInters", "]"}]}], ",", RowBox[{"i", "++"}], ",", RowBox[{"AppendTo", "[", RowBox[{"OSMixEdual", ",", "0"}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{"OSMixEdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"delta", ")"}], " ", "oplus", " ", "O_S", RowBox[{"(", "S_i", ")"}], " ", "otimes", " ", "Vdual"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"ODSi", " ", "v", " ", "Vdual"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowKoszul", ",", RowBox[{"ShowLongExactSequences", "=", "1"}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Error", " ", "not", " ", "yet", " ", "corrected"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSSimSj", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"DimAmbientSpace", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSSimSj", "=", RowBox[{"OSSimSj", "+", RowBox[{"Sum", "[", RowBox[{ RowBox[{"Sum", "[", RowBox[{ RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "i", "]"}], "]"}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"OSSimSjArray", "=", RowBox[{"Flatten", "[", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "#1", "]"}], "]"}], "-", RowBox[{"VectorBundleConstraints", "[", RowBox[{"[", "#2", "]"}], "]"}]}], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Length", "[", "VectorBundleConstraints", "]"}], ",", RowBox[{"Length", "[", "VectorBundleConstraints", "]"}]}], "}"}]}], "]"}], ",", "1"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Vector1", "=", RowBox[{ RowBox[{ RowBox[{"Length", "[", "ComplInters", "]"}], "^", "2"}], RowBox[{"Koszul", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", "r"}], "]"}]}], "]"}]}]}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Vector1Label", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"OSSimSjLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", " ", "\"\\""}], "]"}], "-", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", " ", "\"\\""}], "]"}]}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ "\"\<\\\\oplus_i,j O_S(\>\"", ",", "VbConstrString", ",", "\"\<_i)-\>\"", ",", "VbConstrString", ",", "\"\<_j)\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], "OSSimSjArray", ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"OSMixVdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ RowBox[{"Subsuperscript", "[", RowBox[{ "\"\<\[CirclePlus]\>\"", ",", "\"\\"", ",", "lV"}], "]"}], "[", RowBox[{ RowBox[{"Subscript", "[", RowBox[{"\"\<\[ScriptCapitalO]\>\"", ",", "\"\\""}], "]"}], "[", RowBox[{"Subscript", "[", RowBox[{"VbConstrString", ",", "\"\\""}], "]"}], "]"}], "]"}], "\[CircleTimes]", " ", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "V", "]"}], ",", "\"\<*\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"OSMixVdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"OSSimSj", ",", "OSSimSjLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSMixEdual", ",", "OSMixEdualLabel"}], "}"}], ",", "\[IndentingNewLine]", "OSMixVdualLabel", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", RowBox[{"{", RowBox[{"(*", RowBox[{"{", RowBox[{"2", ",", "0"}], "}"}], "*)"}], "}"}]}], "]"}]}], ";", RowBox[{"(*", RowBox[{"Constraint", " ", "for", " ", "testing"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "OSMixVdual"}], " ", "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "gamma", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ExEdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"\"\<\[ScriptCapitalE]\>\"", "\[CircleTimes]", RowBox[{"Superscript", "[", RowBox[{"\"\<\[ScriptCapitalE]\>\"", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], "\"\\""}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Index", "++"}], ";", "\[IndentingNewLine]", RowBox[{"ExEdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"rOSxEdual", ",", "rOSxEdualLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSNrxEdual", ",", "OSNrxEdualLabel"}], "}"}], ",", "\[IndentingNewLine]", "ExEdualLabel", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", RowBox[{"{", "}"}]}], "]"}]}], ";", RowBox[{"(*", RowBox[{"Constraint", " ", "for", " ", "testing"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"SearchForTwisted", "\[Equal]", "0"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "ExEdual"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"EdualxE", "=", RowBox[{"{", RowBox[{ RowBox[{"ExEdual", "[", RowBox[{"[", "4", "]"}], "]"}], ",", RowBox[{"ExEdual", "[", RowBox[{"[", "3", "]"}], "]"}], ",", RowBox[{"ExEdual", "[", RowBox[{"[", "2", "]"}], "]"}], ",", RowBox[{"ExEdual", "[", RowBox[{"[", "1", "]"}], "]"}], ",", "0", ",", "0"}], "}"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"EdualxE", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{"0", "&"}], ",", RowBox[{"Length", "[", "ExEdual", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"DimComplInters", "+", "1"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"EdualxE", "[", RowBox[{"[", "i", "]"}], "]"}], "=", RowBox[{"ExEdual", "[", RowBox[{"[", RowBox[{"DimComplInters", "+", "1", "-", RowBox[{"(", RowBox[{"i", "-", "1"}], ")"}]}], "]"}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "EdualxE"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Use", " ", "Serre", " ", "dualit"}], ",", " ", RowBox[{ RowBox[{"namely", " ", RowBox[{"h", "^", "p"}], RowBox[{"(", "ExEdual", ")"}]}], "=", RowBox[{ RowBox[{"h", "^", "n"}], "-", RowBox[{"p", RowBox[{"(", "EdualxE", ")"}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Vector", " ", "of", " ", "parameters", " ", "which", " ", "will", " ", "be", " ", "constraint", " ", "by", " ", "altering", " ", "sums", " ", "in", " ", "the", " ", "long", " ", "exact", " ", "sequence"}], "*)"}], "\[IndentingNewLine]", RowBox[{"ParameterVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["A1", RowBox[{"#", "-", "1"}]], "&"}], ",", RowBox[{"Length", " ", "[", "EdualxE", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "This", " ", "vector", " ", "is", " ", "for", " ", "working", " ", "and", " ", "has", " ", "therefore", " ", "the", " ", "same", " ", "length", " ", "of", " ", "all", " ", "the", " ", "other", " ", "vec4tors", " ", "involved"}], "*)"}], "\[IndentingNewLine]", RowBox[{"WorkingVector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ SubscriptBox["h1", RowBox[{"#", "-", "1"}]], "&"}], ",", RowBox[{"Length", " ", "[", "EdualxE", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ExEdualSFT", "=", RowBox[{"ExEdual", "/.", RowBox[{"Pi", "\[Rule]", "1"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Only", " ", "resolve", " ", "sequences", " ", "if", " ", "program", " ", "does", " ", "not", " ", "collect", " ", "line", " ", "bundles"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"!", RowBox[{"LineBundleCollector", "[", RowBox[{"[", "1", "]"}], "]"}]}], "&&", RowBox[{"VectorBundleConstraints", "\[NotEqual]", RowBox[{"{", "}"}]}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Solution", "=", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"WorkingVector", " ", "-", "ExEdualSFT"}], "\[Equal]", "0"}], "&&", " ", RowBox[{"EdualxE", "\[Equal]", "ExEdualSFT"}]}], ",", "WorkingVector"}], "]"}], "}"}], "/.", RowBox[{ RowBox[{"(", RowBox[{"y__", "&&", "z__"}], ")"}], "\[RuleDelayed]", RowBox[{"{", RowBox[{"y", ",", "z"}], "}"}]}]}], "/.", RowBox[{ RowBox[{"(", RowBox[{"x_", "\[Equal]", "y_"}], ")"}], "\[RuleDelayed]", RowBox[{"(", RowBox[{"x", "\[Rule]", "y"}], ")"}]}]}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"Solution", "\[Equal]", RowBox[{"{", "False", "}"}]}], ",", RowBox[{ RowBox[{"Print", "[", "\"\<\!\(\* StyleBox[\"xxxxxxx\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"Solution\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"of\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"EndV\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"is\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"inconsistent\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"with\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"Serre\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"Duality\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"-\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"Results\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"may\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"not\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"be\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"trustworthy\", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\" \", FontColor->RGBColor[1, 0, 0]]\)\!\(\* StyleBox[\"xxxxxxx\", FontColor->RGBColor[1, 0, 0]]\)\>\"", "]"}], ";", RowBox[{"Solution", "=", RowBox[{"{", "}"}]}]}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"If", "[", RowBox[{ RowBox[{"Solution", "\[NotEqual]", RowBox[{"{", "False", "}"}]}], ","}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"WorkingVector", "=", RowBox[{"Flatten", "[", RowBox[{"WorkingVector", "/.", "Solution"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ExEdual", "=", "WorkingVector"}], ";"}]}], RowBox[{"(*", "else", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "beta", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ExVdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"\"\<\[ScriptCapitalE]\>\"", "\[CircleTimes]", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{"\"\\"", ",", RowBox[{"ToString", "[", "V", "]"}], ",", "\"\<*\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ExVdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"ExOSmMi", ",", "ExOSmMiLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"ExEdual", ",", "ExEdualLabel"}], "}"}], ",", "\[IndentingNewLine]", "ExVdualLabel", ",", "\[IndentingNewLine]", "3", ",", "DimComplInters", ",", RowBox[{"{", RowBox[{"(*", RowBox[{"{", RowBox[{"2", ",", "0"}], "}"}], "*)"}], "}"}]}], "]"}]}], ";", RowBox[{"(*", RowBox[{"Constraint", " ", "for", " ", "testing"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "ExVdual"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "alpha", "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"ShowLES", ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"VxVdualLabel", "=", RowBox[{ "GenerateSequenceLabelExtended", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Fancy"}], "*)"}], RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"V", "\[CircleTimes]", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Heading", " ", "Standard"}], "*)"}], RowBox[{"StringJoin", "[", RowBox[{ RowBox[{"ToString", "[", "V", "]"}], ",", "\"\< x \>\"", ",", RowBox[{"ToString", "[", "V", "]"}], ",", "\"\<*\>\""}], "]"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "InList", "*)"}], RowBox[{"{", "}"}], ",", RowBox[{"(*", "Variety", "*)"}], "\"\\"", ",", RowBox[{"(*", "Fancy", "*)"}], "FancyOutput", ",", RowBox[{"(*", "HeadingsOption", "*)"}], "HeadingsOption"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"ShowLongExactSequences", "=", "1"}]}], ",", RowBox[{"ShowLongExactSequences", "=", "0"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"VxVdual", "=", RowBox[{ "ThirdVectorFromLongExactSequenceLabeled", "[", "\[IndentingNewLine]", RowBox[{ RowBox[{"{", RowBox[{"ExVdual", ",", "ExVdualLabel"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"{", RowBox[{"OSMixVdual", ",", "OSMixVdualLabel"}], "}"}], ",", "\[IndentingNewLine]", "VxVdualLabel", ",", "\[IndentingNewLine]", "1", ",", "DimComplInters", ",", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"DimComplInters", "+", "1"}], ",", "1"}], "}"}]}], "}"}]}], "]"}]}], ";", RowBox[{"(*", RowBox[{ RowBox[{ "condition", " ", "that", " ", "the", " ", "bundle", " ", "is", " ", "stable", " ", "is", " ", "included", " ", "meaning", " ", RowBox[{"h", "^", "0"}]}], "=", RowBox[{ RowBox[{"h", "^", "dim"}], "=", "1"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{"\"\\"", ",", "VxVdual"}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"ReturnCohomology", "=", RowBox[{"VxVdual", "[", RowBox[{"[", RowBox[{"1", ";;", RowBox[{"DimComplInters", "+", "1"}]}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"PrintCohomology", "=", RowBox[{"Text", "@", RowBox[{"Grid", "[", RowBox[{ RowBox[{"Prepend", "[", RowBox[{ RowBox[{"Transpose", "[", RowBox[{"{", "ReturnCohomology", "}"}], "]"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[Bullet]\>\""}], "]"}], "[", " ", RowBox[{"V", "\[CircleTimes]", RowBox[{"Superscript", "[", RowBox[{"V", ",", "\"\<*\>\""}], "]"}]}], " ", "]"}], "}"}]}], "]"}], ",", RowBox[{"Background", "\[Rule]", RowBox[{"{", RowBox[{"None", ",", RowBox[{"{", RowBox[{ RowBox[{"Lighter", "[", RowBox[{"Yellow", ",", ".9"}], "]"}], ",", RowBox[{"{", RowBox[{"White", ",", RowBox[{"Lighter", "[", RowBox[{ RowBox[{"Blend", "[", RowBox[{"{", RowBox[{"Blue", ",", "Green"}], "}"}], "]"}], ",", ".8"}], "]"}]}], "}"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Dividers", "\[Rule]", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", RowBox[{"Lighter", "[", RowBox[{"Gray", ",", ".5"}], "]"}], "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}], ",", RowBox[{"{", RowBox[{ RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}], ",", RowBox[{"{", "False", "}"}], ",", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], "}"}]}], "}"}]}], ",", RowBox[{"Alignment", "\[Rule]", RowBox[{"{", "Center", "}"}]}], ",", RowBox[{"(*", RowBox[{ RowBox[{"ItemSize", "\[Rule]", RowBox[{"{", RowBox[{"{", RowBox[{"10", ",", "3", ",", "5", ",", "5"}], "}"}], "}"}]}], ","}], "*)"}], RowBox[{"Frame", "\[Rule]", RowBox[{"Darker", "[", RowBox[{"Gray", ",", ".6"}], "]"}]}], ",", RowBox[{"ItemStyle", "\[Rule]", "14"}], ",", RowBox[{"Spacings", "\[Rule]", RowBox[{"{", RowBox[{"Automatic", ",", ".8"}], "}"}]}]}], "]"}]}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Implement", " ", "the", " ", "spectral", " ", "sequence", " ", "from", " ", RowBox[{"(", RowBox[{"0", ",", "2"}], ")"}], " ", "elephant", " ", "paper"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"BundleType", "\[Equal]", "\"\\""}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"KoszuledLineBundleList", "=", RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "for", " ", "correct", " ", "input", " ", "data"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CheckData", "=", RowBox[{"CheckInputData", "[", RowBox[{"AmbientSpace", ",", "ComplInters", ",", "Type"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"CheckData", "[", RowBox[{"[", "1", "]"}], "]"}]}], ",", RowBox[{"Return", "[", RowBox[{"CheckData", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"Index", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"LineBundleCounter", "=", RowBox[{"{", RowBox[{"0", ",", "0"}], "}"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"DimAmbientSpace", "=", RowBox[{ RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"DimComplInters", "=", RowBox[{"DimAmbientSpace", "-", RowBox[{"Length", "[", "ComplInters", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"r", "=", RowBox[{"Length", "[", RowBox[{"AmbientSpace", "[", RowBox[{"[", RowBox[{"3", ",", "1"}], "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", "]"}]}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"ReturnCohomology", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"!", "HodgeCalculation"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"VerboseLevel", "\[Equal]", RowBox[{"-", "1"}]}], ",", RowBox[{"Return", "[", "ReturnCohomology", "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LateTime", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Stats", "=", RowBox[{"StringJoin", "[", RowBox[{ "\"\\"", ",", "BundleType", ",", "\"\< cohomology done:\\n\>\"", ",", "\[IndentingNewLine]", "\"\<-----------------------------------------------\\n\>\"", ",", "\[IndentingNewLine]", "\"\\"", ",", " ", RowBox[{"ToString", "[", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], ",", "\"\<\\n\>\"", ",", "\[IndentingNewLine]", "\"\\"", " ", ",", RowBox[{"ToString", "[", RowBox[{"LineBundleCounter", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], ",", "\"\<\\n\>\"", ",", "\[IndentingNewLine]", "\"\\"", ",", RowBox[{"ToString", "[", RowBox[{"Round", "[", RowBox[{ RowBox[{ RowBox[{"AbsoluteTime", "[", "LateTime", "]"}], "-", RowBox[{"AbsoluteTime", "[", "EarlyTime", "]"}]}], ",", "0.001"}], "]"}], "]"}], ",", "\"\< seconds\>\""}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"PrintCohomology", "=", RowBox[{"Style", "[", RowBox[{"PrintCohomology", ",", RowBox[{"FontSize", "\[Rule]", "LESFontSize"}]}], "]"}]}], ";"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"TableForm", "[", RowBox[{ RowBox[{"{", RowBox[{ "cohomCalgLogo", ",", "Stats", ",", "PrintCohomology"}], "}"}], ",", RowBox[{"TableDirections", "\[Rule]", "Row"}], ",", RowBox[{"TableAlignments", "\[Rule]", "Center"}]}], "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", "Stats", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"FancyOutput", "\[Equal]", "1"}], ",", RowBox[{"Return", "[", "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "ReturnCohomology", "]"}], ";"}], "\[IndentingNewLine]", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "In", " ", "case", " ", "the", " ", "typed", " ", "bundle", " ", "is", " ", "not", " ", "in", " ", "list"}], "*)"}], "\[IndentingNewLine]", RowBox[{ "Return", "[", "\"\\"", "]"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]"}]}]], "Input", CellChangeTimes->{{3.494564186367008*^9, 3.4945642784034214`*^9}, { 3.494564379742478*^9, 3.494564645349058*^9}, {3.4945646801645927`*^9, 3.4945647132236013`*^9}, {3.494564801907463*^9, 3.494564802162467*^9}, { 3.4945652612090335`*^9, 3.4945653456378307`*^9}, {3.4945653791808453`*^9, 3.494565501682727*^9}, {3.4945655364632616`*^9, 3.494565584293996*^9}, { 3.4945658211576347`*^9, 3.4945658688608675`*^9}, {3.4945659543746805`*^9, 3.4945659587447476`*^9}, {3.494566035150921*^9, 3.494566084831684*^9}, { 3.494566119317214*^9, 3.4945662270463686`*^9}, {3.494566262221909*^9, 3.4945664445647097`*^9}, {3.4945665402961802`*^9, 3.494566629737554*^9}, { 3.494566684493395*^9, 3.4945667353791766`*^9}, {3.4945668851214767`*^9, 3.4945669338872256`*^9}, {3.4945671407654033`*^9, 3.4945671650907764`*^9}, {3.4945672117539935`*^9, 3.494567212121499*^9}, { 3.494567362623811*^9, 3.494567476453059*^9}, {3.4945675163386717`*^9, 3.4945675342189465`*^9}, {3.494567607410071*^9, 3.494567710091648*^9}, { 3.494567754039823*^9, 3.494567792972921*^9}, {3.4945678323360257`*^9, 3.4945679629855323`*^9}, {3.494568000038602*^9, 3.4945680349741383`*^9}, { 3.494568172863756*^9, 3.494568314218427*^9}, {3.4945683472514343`*^9, 3.4945683620916624`*^9}, {3.494568502048812*^9, 3.4945687477500863`*^9}, { 3.4945688146511135`*^9, 3.4945688818196454`*^9}, {3.494568924762805*^9, 3.494568984148717*^9}, {3.4945691676590357`*^9, 3.4945693456842704`*^9}, { 3.494569514424362*^9, 3.4945695397197504`*^9}, {3.4945698868600826`*^9, 3.494569973533914*^9}, {3.494570035824871*^9, 3.494570038987419*^9}, 3.494570129201305*^9, {3.4945727223111343`*^9, 3.494572834200353*^9}, { 3.4945728729809484`*^9, 3.494572874093466*^9}, {3.494572910316522*^9, 3.4945729131415653`*^9}, {3.494572948194604*^9, 3.4945729583247595`*^9}, { 3.4945730287658415`*^9, 3.494573073191524*^9}, {3.4945731086570687`*^9, 3.4945731443751173`*^9}, {3.494573211926155*^9, 3.494573212321161*^9}, 3.4945732637794514`*^9, {3.4945733753461647`*^9, 3.494573441922188*^9}, { 3.4945735837768664`*^9, 3.4945737206939697`*^9}, {3.494573828565626*^9, 3.494573859321099*^9}, {3.494573929129671*^9, 3.4945739584201207`*^9}, { 3.4945739908056183`*^9, 3.4945740004732666`*^9}, {3.4945740666042824`*^9, 3.4945741047448683`*^9}, {3.494574198561309*^9, 3.494574206193927*^9}, { 3.494574247089555*^9, 3.494574340733493*^9}, {3.4945743712939625`*^9, 3.494574409294546*^9}, {3.4945744574527855`*^9, 3.494574537084009*^9}, { 3.4945746142501945`*^9, 3.494574617310241*^9}, {3.4945747491097655`*^9, 3.4945747501097813`*^9}, {3.49457486528405*^9, 3.4945748856268625`*^9}, { 3.4945752169444513`*^9, 3.494575308943364*^9}, {3.4945753430713887`*^9, 3.4945753651767282`*^9}, {3.4945754173425293`*^9, 3.4945755899251804`*^9}, {3.494575654608674*^9, 3.494575671338931*^9}, { 3.4945757042469363`*^9, 3.494575755727727*^9}, {3.494575786580701*^9, 3.494575791625778*^9}, {3.4945760149417086`*^9, 3.4945760607099113`*^9}, { 3.494576181896773*^9, 3.4945761920644293`*^9}, {3.494576306183682*^9, 3.494576351354376*^9}, {3.49457644668084*^9, 3.494576499024144*^9}, { 3.494576738220318*^9, 3.4945767634407053`*^9}, {3.4945771087160087`*^9, 3.4945771166361303`*^9}, {3.4945774325409822`*^9, 3.4945774334959974`*^9}, {3.494577775231246*^9, 3.4945777871639295`*^9}, { 3.494577829569581*^9, 3.4945778685826797`*^9}, {3.4945779312911434`*^9, 3.4945779667891884`*^9}, {3.4945779997246943`*^9, 3.49457808930107*^9}, 3.494578119566535*^9, {3.4945781507895145`*^9, 3.49457827743396*^9}, { 3.4945783186320925`*^9, 3.4945783189895983`*^9}, {3.4945848104951115`*^9, 3.4945848112751236`*^9}, {3.4945848970439405`*^9, 3.494584989047854*^9}, { 3.494585054268856*^9, 3.4945852061361885`*^9}, 3.4945852612770357`*^9, { 3.4945853501033998`*^9, 3.494585440137283*^9}, {3.4945854783378696`*^9, 3.4945854837879534`*^9}, {3.494585530778675*^9, 3.4945856352377796`*^9}, { 3.4945863363110476`*^9, 3.494586388156844*^9}, {3.4945864406101494`*^9, 3.4945864653780303`*^9}, {3.4945865141012783`*^9, 3.49458651616131*^9}, 3.4945865644270515`*^9, {3.4945867646901274`*^9, 3.494586770847722*^9}, { 3.49458680260571*^9, 3.494586836688733*^9}, {3.4945868714892683`*^9, 3.494587037124312*^9}, {3.4945870836950274`*^9, 3.494587123723142*^9}, { 3.494587295075774*^9, 3.4945873837621365`*^9}, {3.4945874164576387`*^9, 3.494587522309264*^9}, {3.4945875568372946`*^9, 3.4945875571547995`*^9}, { 3.4945875917853317`*^9, 3.4945876054155407`*^9}, {3.4945876524162626`*^9, 3.4945876693090224`*^9}, {3.494587911492742*^9, 3.4945879171803293`*^9}, { 3.4945882466053896`*^9, 3.494588246772892*^9}, 3.4945891593819094`*^9, { 3.4945898749379005`*^9, 3.494589883178027*^9}, 3.494589925306174*^9, { 3.49458997128438*^9, 3.4945900452855167`*^9}, {3.4945900952812843`*^9, 3.4945901851801653`*^9}, {3.4945902411235247`*^9, 3.4945904921548805`*^9}, {3.4945905262879047`*^9, 3.4945907073181853`*^9}, 3.49459073758115*^9, {3.4945909154338818`*^9, 3.494590926266548*^9}, { 3.494590962382103*^9, 3.494590982574913*^9}, {3.4945910915315866`*^9, 3.494591100026717*^9}, {3.494591279191969*^9, 3.494591323650152*^9}, { 3.4945913570031643`*^9, 3.4945914433194904`*^9}, {3.4945914872826653`*^9, 3.494591490712718*^9}, {3.494591522010699*^9, 3.4945915289508057`*^9}, { 3.494591588706723*^9, 3.4945917890848007`*^9}, {3.4945918525732765`*^9, 3.4945919067541084`*^9}, {3.494592440198843*^9, 3.4945924418688684`*^9}, { 3.4945924866520567`*^9, 3.4945926060238895`*^9}, {3.4945927601737576`*^9, 3.49459283126985*^9}, {3.494592879818095*^9, 3.4945929030034513`*^9}, { 3.4945929842621994`*^9, 3.4945930111651125`*^9}, {3.494593043323107*^9, 3.4945930449556313`*^9}, {3.494594639060117*^9, 3.494594690123401*^9}, { 3.4945947371091228`*^9, 3.4945947402016706`*^9}, 3.4945949221169643`*^9, { 3.4945949672976584`*^9, 3.4945950350836997`*^9}, {3.494595136955264*^9, 3.4945951795459185`*^9}, {3.4945955450860395`*^9, 3.4945955478810825`*^9}, {3.4945956218747187`*^9, 3.4945956661753993`*^9}, {3.494595826435361*^9, 3.494595827145372*^9}, { 3.494596198353574*^9, 3.494596227169016*^9}, {3.4945963333206463`*^9, 3.494596343685806*^9}, {3.494596860333741*^9, 3.4945969174271183`*^9}, { 3.4945969523326545`*^9, 3.4945969714004474`*^9}, {3.4945970062434826`*^9, 3.494597013101088*^9}, {3.4945971091150627`*^9, 3.4945971226477704`*^9}, { 3.494597306728098*^9, 3.494597323615857*^9}, {3.49459737978172*^9, 3.494597442662686*^9}, {3.4945975974625635`*^9, 3.494597605985194*^9}, { 3.494597637085672*^9, 3.494597694486554*^9}, {3.494597737909721*^9, 3.4945977649601364`*^9}, {3.49459801977905*^9, 3.4945980409643755`*^9}, 3.494598267300352*^9, {3.494598311116025*^9, 3.4945983208361745`*^9}, { 3.4945985193017225`*^9, 3.4945986118431444`*^9}, {3.4945986472836885`*^9, 3.4945987004145045`*^9}, {3.4945987517127924`*^9, 3.4945987661705146`*^9}, {3.4945988736671658`*^9, 3.4945988888948994`*^9}, {3.494598929883029*^9, 3.4945990205794225`*^9}, { 3.4945990666776304`*^9, 3.4945990734677343`*^9}, 3.494599695659791*^9, 3.494599737125428*^9, {3.4946018548424625`*^9, 3.494601868802677*^9}, 3.4946019444263387`*^9, {3.494602286904099*^9, 3.4946022913541675`*^9}, { 3.494603155047434*^9, 3.494603211665803*^9}, {3.494670388238613*^9, 3.494670588511689*^9}, 3.4946713388007135`*^9, {3.494671390789012*^9, 3.494671391124017*^9}, {3.4946717623947196`*^9, 3.4946717627722254`*^9}, { 3.494672103439958*^9, 3.4946721054199886`*^9}, {3.494672437757593*^9, 3.494672513681259*^9}, {3.4946726351856256`*^9, 3.494672643410752*^9}, { 3.494672709171762*^9, 3.4946727653926253`*^9}, {3.4946728070032644`*^9, 3.494672807148267*^9}, {3.4946729187249804`*^9, 3.494672955195541*^9}, { 3.494674630711276*^9, 3.494674674459448*^9}, {3.4948450907616673`*^9, 3.4948451029563403`*^9}, {3.4949082171368966`*^9, 3.4949082317196207`*^9}, 3.4949082790453477`*^9, {3.4949084394753113`*^9, 3.4949084616506524`*^9}, { 3.4949086086554103`*^9, 3.4949086374333525`*^9}, {3.4949095546049395`*^9, 3.4949095634025745`*^9}, {3.494909596623085*^9, 3.4949096135633454`*^9}, { 3.494909643956312*^9, 3.4949096712542315`*^9}, {3.494909760783107*^9, 3.4949099411708775`*^9}, {3.4949100537626066`*^9, 3.4949100538776083`*^9}, {3.494910598450973*^9, 3.4949109178958797`*^9}, { 3.494910953218922*^9, 3.494910989911986*^9}, {3.4949110563805065`*^9, 3.494911115921421*^9}, {3.4949112209530344`*^9, 3.4949112989442325`*^9}, { 3.4949113386948433`*^9, 3.494911343642419*^9}, {3.494911548323063*^9, 3.4949116335843725`*^9}, {3.494911687525201*^9, 3.4949117115830708`*^9}, { 3.4949118201097374`*^9, 3.49491182026474*^9}, {3.4949118790856433`*^9, 3.4949119007159758`*^9}, {3.4949120439431753`*^9, 3.4949121167492933`*^9}, {3.494912242391224*^9, 3.4949122755717335`*^9}, { 3.49491233263511*^9, 3.494912354372944*^9}, {3.4949123923685274`*^9, 3.4949124051562233`*^9}, {3.494912459897064*^9, 3.4949124711672373`*^9}, { 3.4949125332106905`*^9, 3.494912618739504*^9}, {3.494912662940183*^9, 3.4949126632301874`*^9}, {3.4949129236591873`*^9, 3.494912980787565*^9}, { 3.4949130125230527`*^9, 3.494913197135888*^9}, {3.4949158830371428`*^9, 3.4949158889347334`*^9}, {3.495199799686078*^9, 3.4951998622326555`*^9}, 3.495200034610515*^9, {3.4952000878015575`*^9, 3.495200092844846*^9}, { 3.4952930930740404`*^9, 3.4952931942978263`*^9}, {3.49529334060669*^9, 3.4952933482306256`*^9}, {3.4952934452071695`*^9, 3.4952935343037605`*^9}, {3.4952936439390264`*^9, 3.495293657946827*^9}, { 3.4952937370053463`*^9, 3.4952937497995777`*^9}, {3.495293842031851*^9, 3.4952938541305428`*^9}, {3.4952939047184353`*^9, 3.4952939527431803`*^9}, {3.4955233367999935`*^9, 3.4955233390186186`*^9}, {3.4959649429225464`*^9, 3.495964959297431*^9}, { 3.4959663558774333`*^9, 3.4959664475650806`*^9}, {3.496034630975721*^9, 3.496034857231413*^9}, {3.496034895637003*^9, 3.4960349841683626`*^9}, { 3.4960350182513857`*^9, 3.4960351169754024`*^9}, {3.4963976716537895`*^9, 3.4963976761513586`*^9}, {3.4964084250814595`*^9, 3.496408426868987*^9}, { 3.4964104070144014`*^9, 3.4964104220396323`*^9}, {3.496410455815151*^9, 3.496410488995661*^9}, {3.4964671998153706`*^9, 3.496467319304706*^9}, { 3.496467361032847*^9, 3.4964673693904753`*^9}, {3.496467701460576*^9, 3.496467701835582*^9}, {3.4964677501963243`*^9, 3.496467809877241*^9}, { 3.4964681577875853`*^9, 3.4964682452364283`*^9}, {3.49646830330232*^9, 3.4964683795809917`*^9}, {3.4964686331373863`*^9, 3.4964686825806456`*^9}, {3.4964687335339284`*^9, 3.496468902521524*^9}, { 3.4964689634799604`*^9, 3.4964690673265553`*^9}, {3.4964691093947015`*^9, 3.4964691329975643`*^9}, {3.4964691633330297`*^9, 3.4964691903234444`*^9}, {3.4964692310090694`*^9, 3.4964693442808094`*^9}, {3.4964693877114763`*^9, 3.4964693957591*^9}, { 3.4964694512274523`*^9, 3.496469452489971*^9}, {3.49646950904084*^9, 3.496469513778413*^9}, {3.4964696450379286`*^9, 3.496469759247183*^9}, { 3.496469801885338*^9, 3.4964698619512606`*^9}, {3.49646989250673*^9, 3.496470007168491*^9}, {3.49647008715722*^9, 3.49647011646267*^9}, { 3.4964701749635687`*^9, 3.496470317738261*^9}, {3.496470348041227*^9, 3.496470359273899*^9}, {3.4964704065771255`*^9, 3.49647051163124*^9}, { 3.4964705557419167`*^9, 3.4964706078252172`*^9}, 3.4964706670161257`*^9, 3.4964707174869013`*^9, {3.4964707495148935`*^9, 3.4964707516624265`*^9}, { 3.4964711355433226`*^9, 3.496471146248487*^9}, {3.4964711922866945`*^9, 3.4964711996093063`*^9}, {3.496471241622452*^9, 3.496471297980818*^9}, { 3.4964715302443852`*^9, 3.496471550259692*^9}, {3.4964715989454403`*^9, 3.496471788263348*^9}, {3.496471879269746*^9, 3.496471904835139*^9}, { 3.4964720536524243`*^9, 3.4964720689551597`*^9}, {3.4964721500314045`*^9, 3.496472151158922*^9}, 3.4964722252725606`*^9, {3.4964722643206606`*^9, 3.496472278235874*^9}, {3.496472439865857*^9, 3.496472492119159*^9}, { 3.4964725227371297`*^9, 3.496472523617143*^9}, {3.4964725655952883`*^9, 3.4964725665328026`*^9}, {3.4964726145510397`*^9, 3.496472615121049*^9}, { 3.496472654131648*^9, 3.496472694427267*^9}, 3.4964727746984997`*^9, { 3.49647282746681*^9, 3.496472829871847*^9}, {3.4964728618198376`*^9, 3.496472962806389*^9}, {3.4964732305580015`*^9, 3.4964732392431345`*^9}, { 3.496473363730047*^9, 3.496473366120084*^9}, {3.4964734033481555`*^9, 3.4964734112807775`*^9}, {3.4964735607680736`*^9, 3.4964735800533695`*^9}, {3.496473660359603*^9, 3.496473673559806*^9}, { 3.496473707827832*^9, 3.4964737137779236`*^9}, {3.4964737558960705`*^9, 3.4964737658312235`*^9}, {3.4964738023292837`*^9, 3.496473868055293*^9}, { 3.496474139584464*^9, 3.4964741719049606`*^9}, {3.4964742552512407`*^9, 3.496474290444281*^9}, {3.4964744588018675`*^9, 3.496474488622325*^9}, { 3.4964745623484573`*^9, 3.496474562598461*^9}, {3.4964746411271677`*^9, 3.4964746413371706`*^9}, {3.496474696793022*^9, 3.496474816614863*^9}, 3.4964748788808193`*^9, {3.496475023973048*^9, 3.496475111739396*^9}, { 3.49647526434424*^9, 3.4964752646317444`*^9}, {3.49647532812772*^9, 3.496475328262722*^9}, {3.4964754282142572`*^9, 3.496475428456761*^9}, { 3.496475471704925*^9, 3.4964754719774294`*^9}, {3.4964755939343023`*^9, 3.4964756133971014`*^9}, {3.496475668847953*^9, 3.496475715011162*^9}, { 3.496475955579857*^9, 3.496476006020632*^9}, {3.496476276512287*^9, 3.496476285927431*^9}, {3.496476326268051*^9, 3.4964763275505705`*^9}, 3.496476391714056*^9, {3.49647649352312*^9, 3.4964764974906807`*^9}, { 3.496476528293654*^9, 3.4964767810675364`*^9}, {3.496476871873931*^9, 3.4964770595993147`*^9}, {3.4964770907647934`*^9, 3.496477136702999*^9}, { 3.496477199041456*^9, 3.4964772199467773`*^9}, {3.496477251819767*^9, 3.4964773668740344`*^9}, 3.496477467800585*^9, {3.496477588097432*^9, 3.496477602805158*^9}, {3.496477692594037*^9, 3.4964776984566274`*^9}, { 3.496477746292362*^9, 3.496477821736021*^9}, {3.49647786331166*^9, 3.4964778646716805`*^9}, 3.4964779050523005`*^9, {3.4964779552080708`*^9, 3.4964779887185855`*^9}, {3.496478024074129*^9, 3.496478051704553*^9}, { 3.496478097797761*^9, 3.496478605228055*^9}, {3.4964786736166058`*^9, 3.496478696354455*^9}, {3.4964787286124506`*^9, 3.4964789467808013`*^9}, { 3.4964789959365563`*^9, 3.496479014526842*^9}, {3.496479074117757*^9, 3.496479135833705*^9}, {3.4964792389277887`*^9, 3.496479255430542*^9}, { 3.4964795331798086`*^9, 3.496479614403556*^9}, {3.496479763495846*^9, 3.496479788796234*^9}, 3.4964800963859587`*^9, {3.4964804022131567`*^9, 3.496480416270872*^9}, {3.4964804664691434`*^9, 3.4964804680116673`*^9}, { 3.496480523192515*^9, 3.496480525425049*^9}, {3.4965693684749217`*^9, 3.496569380560107*^9}, {3.4965694291133533`*^9, 3.496569457758793*^9}, { 3.496578544493724*^9, 3.496578557753748*^9}, {3.4971709852081842`*^9, 3.4971709996834064`*^9}, {3.4971712596423993`*^9, 3.4971712620649366`*^9}, {3.4971715098537426`*^9, 3.4971715281690235`*^9}, {3.4971715587544937`*^9, 3.4971715817623467`*^9}, {3.497171682561395*^9, 3.497171716671919*^9}, { 3.4971721827925797`*^9, 3.497172206207939*^9}, {3.497172247751077*^9, 3.497172260751277*^9}, {3.497172382010639*^9, 3.4971723878882294`*^9}, { 3.4971724658144264`*^9, 3.497172468401966*^9}, {3.497173927773884*^9, 3.497173965364461*^9}, {3.4971856452939587`*^9, 3.497185672484376*^9}, { 3.4971858676623735`*^9, 3.4971858690148945`*^9}, {3.4971859980028768`*^9, 3.4971860203207197`*^9}, {3.4971860823216715`*^9, 3.497186181885701*^9}, { 3.497186582551855*^9, 3.497186615662364*^9}, {3.4971866868309565`*^9, 3.4971867143588796`*^9}, {3.497186782354924*^9, 3.4971867987151756`*^9}, { 3.497197113327794*^9, 3.4971971247782145`*^9}, {3.497197235476009*^9, 3.497197243650423*^9}, {3.4971972821200905`*^9, 3.4971973143965473`*^9}, { 3.4971973533030157`*^9, 3.497197462503207*^9}, 3.497197646708331*^9, { 3.497197716331253*^9, 3.4971977339592843`*^9}, {3.497198174285658*^9, 3.497198243534179*^9}, {3.4971983448407574`*^9, 3.4971983468063602`*^9}, { 3.4971984076776676`*^9, 3.497198441982128*^9}, {3.4971985500903177`*^9, 3.4971985689039507`*^9}, 3.497198635391268*^9, {3.4971987516114717`*^9, 3.497198898251729*^9}, {3.497199845563393*^9, 3.497199880382654*^9}, { 3.497200195706008*^9, 3.497200214675641*^9}, {3.4972002897429733`*^9, 3.497200292270178*^9}, {3.497200469548889*^9, 3.497200472824895*^9}, { 3.497200617702349*^9, 3.4972006577476196`*^9}, {3.4972023047517123`*^9, 3.497202315468931*^9}, {3.4972023524565964`*^9, 3.4972025741329856`*^9}, { 3.497202610153449*^9, 3.497202663973543*^9}, 3.4972026964528008`*^9, 3.49720273592087*^9, {3.4972027938125715`*^9, 3.4972027972133775`*^9}, { 3.4972028929819455`*^9, 3.4972029112183776`*^9}, {3.4972031281679587`*^9, 3.4972031489627953`*^9}, {3.4972032003804855`*^9, 3.497203354461956*^9}, { 3.497203849778426*^9, 3.49720389756131*^9}, {3.497204064559603*^9, 3.497204160172171*^9}, {3.4972042008726425`*^9, 3.4972042287810917`*^9}, { 3.497204389289774*^9, 3.4972044074794054`*^9}, {3.4972044598174973`*^9, 3.4972045798285084`*^9}, {3.4972046335082026`*^9, 3.4972047215703573`*^9}, {3.4972047633004303`*^9, 3.4972047639088316`*^9}, 3.4972047977920914`*^9, {3.4972048327673526`*^9, 3.4972050079400606`*^9}, { 3.497205048156931*^9, 3.4972052254512424`*^9}, {3.4972052819077415`*^9, 3.4972053007993746`*^9}, {3.497205703077281*^9, 3.4972057706566*^9}, { 3.4972058278307004`*^9, 3.49720591854486*^9}, {3.497205955828925*^9, 3.4972060386806707`*^9}, {3.4972060997079782`*^9, 3.497206127008026*^9}, { 3.497206164182891*^9, 3.4972061753369107`*^9}, {3.497206224586197*^9, 3.497206357545231*^9}, {3.497206397652901*^9, 3.4972066279561057`*^9}, 3.4972068826109533`*^9, {3.4972070561456575`*^9, 3.497207126454981*^9}, { 3.4972071704938583`*^9, 3.4972072861212616`*^9}, {3.4972073244193287`*^9, 3.497207328428536*^9}, {3.4972074195014963`*^9, 3.497207447409945*^9}, { 3.4972392398445053`*^9, 3.4972392940702*^9}, {3.4972395964331408`*^9, 3.4972396099508486`*^9}, {3.4972477570557656`*^9, 3.4972478024239626`*^9}, {3.4972481098936853`*^9, 3.4972481100511875`*^9}, {3.4972481414966707`*^9, 3.497248154921877*^9}, { 3.4991755551070433`*^9, 3.4991755744198775`*^9}, {3.4992536013260293`*^9, 3.4992536891650534`*^9}, {3.4992577324724197`*^9, 3.4992577411934075`*^9}, {3.4992579909734783`*^9, 3.4992579941166553`*^9}, 3.4992642732971144`*^9, 3.49932915551068*^9, {3.4994009170952415`*^9, 3.4994009374444056`*^9}, {3.4994009840380707`*^9, 3.4994009958457456`*^9}, {3.4994900164154353`*^9, 3.4994900282306166`*^9}, {3.4994900633761563`*^9, 3.4994900720787897`*^9}, {3.4994901439048934`*^9, 3.499490209235897*^9}, { 3.499490285567069*^9, 3.4994903275527143`*^9}, 3.4994903708108788`*^9, { 3.4994904107789927`*^9, 3.499490411811508*^9}, {3.499490535163403*^9, 3.4994905653438663`*^9}, {3.499490610304557*^9, 3.4994906339624205`*^9}, { 3.499490664262886*^9, 3.4994906775955906`*^9}, {3.499490768309484*^9, 3.499490892646394*^9}, {3.499490946362219*^9, 3.4994910581764364`*^9}, { 3.499491092446963*^9, 3.4994911335650945`*^9}, {3.499491180513315*^9, 3.499491286607445*^9}, {3.4994913961516275`*^9, 3.49949139629413*^9}, { 3.4994914312771673`*^9, 3.4994914707702737`*^9}, {3.499491517725995*^9, 3.4994915703918037`*^9}, {3.499491652923072*^9, 3.4994916530880737`*^9}, { 3.499492962668189*^9, 3.49949297573339*^9}, {3.499493180649037*^9, 3.4994931830415735`*^9}, {3.499493424527783*^9, 3.4994934265978146`*^9}, { 3.5000298872391157`*^9, 3.500030095959821*^9}, {3.500030195741354*^9, 3.5000302481121583`*^9}, {3.500030574723176*^9, 3.500030575198183*^9}, { 3.5000338453519154`*^9, 3.500033868794775*^9}, 3.500034160956763*^9, { 3.5000342916682725`*^9, 3.500034293128295*^9}, {3.5000344483206787`*^9, 3.500034461755885*^9}, {3.50003449464639*^9, 3.5000345227468214`*^9}, { 3.500034562559933*^9, 3.5000345643699613`*^9}, {3.500266219366851*^9, 3.5002662497968936`*^9}, {3.5002663204733973`*^9, 3.5002663210433984`*^9}, {3.5008302812192497`*^9, 3.5008302896568794`*^9}, {3.5008305412860856`*^9, 3.5008305451761456`*^9}, {3.5013437711688814`*^9, 3.5013437733589153`*^9}, {3.5013438245572014`*^9, 3.501343839649933*^9}, { 3.5018203194284096`*^9, 3.501820363654487*^9}, {3.5037546552493696`*^9, 3.5037546899903564`*^9}, {3.504002689209214*^9, 3.5040026964326277`*^9}, 3.5040032642201033`*^9, {3.504003945404065*^9, 3.5040039755167875`*^9}, { 3.5040048577952504`*^9, 3.5040048633175664`*^9}, {3.5040055391892242`*^9, 3.5040055406093054`*^9}, {3.5040056647704067`*^9, 3.504005709089942*^9}, { 3.504005762946022*^9, 3.50400578807646*^9}, {3.504617844090088*^9, 3.504617849957678*^9}, {3.5046179696745167`*^9, 3.5046180355805287`*^9}, { 3.504618071846086*^9, 3.5046180789411945`*^9}, {3.504618131279499*^9, 3.5046181326245193`*^9}, {3.5048742676336136`*^9, 3.5048742756520276`*^9}, {3.504874398954644*^9, 3.504874439857916*^9}, { 3.504874517483652*^9, 3.5048746201162324`*^9}, {3.5048748531962423`*^9, 3.5048748559886465`*^9}, {3.5048750264189463`*^9, 3.504875257236952*^9}, { 3.504875288889407*^9, 3.5048752901998096`*^9}, {3.504946414475636*^9, 3.5049464198457184`*^9}, 3.5049464810366583`*^9, {3.504946511814631*^9, 3.5049468967105427`*^9}, {3.5049574384040856`*^9, 3.50495744062912*^9}, 3.50495771604335*^9, {3.504957753943932*^9, 3.504957754583942*^9}, { 3.504958409804006*^9, 3.5049584481145945`*^9}, {3.504964423743168*^9, 3.5049644261432047`*^9}, {3.504964548667587*^9, 3.5049645544501753`*^9}, 3.5049645962033167`*^9, 3.5049646561542377`*^9, {3.5049646921572905`*^9, 3.504964703514965*^9}, {3.504964773091034*^9, 3.5049647846187105`*^9}, { 3.50496496166893*^9, 3.504965039837631*^9}, {3.504965087705866*^9, 3.5049650972285123`*^9}, {3.5049652049926677`*^9, 3.504965208507722*^9}, { 3.505031607608143*^9, 3.5050316297913823`*^9}, {3.5050317422987795`*^9, 3.505031761143613*^9}, {3.5050362602851152`*^9, 3.505036298707983*^9}, { 3.505036431074215*^9, 3.505036434225421*^9}, {3.505036470479884*^9, 3.5050364774686966`*^9}, {3.5050365632532473`*^9, 3.5050365910836964`*^9}, {3.505036777114023*^9, 3.50503683229132*^9}, { 3.505036863787775*^9, 3.505036919339473*^9}, {3.5050370164652433`*^9, 3.5050370175728455`*^9}, 3.5050370998005896`*^9, {3.5051326295136633`*^9, 3.505132637268782*^9}, {3.5051328939402246`*^9, 3.505132897877785*^9}, { 3.505140855971093*^9, 3.505140858244223*^9}, {3.5052062221779766`*^9, 3.505206223572998*^9}, {3.5052081478265553`*^9, 3.5052081482715626`*^9}, { 3.505213161148559*^9, 3.5052131641461053`*^9}, {3.50521501409202*^9, 3.50521501605205*^9}, {3.5052185868055816`*^9, 3.5052185884123845`*^9}, { 3.5058041402447157`*^9, 3.505804212503849*^9}, {3.5066584461725526`*^9, 3.5066584638053236`*^9}, {3.506710701963045*^9, 3.506710719114957*^9}, 3.506710792508896*^9, 3.506710837645336*^9, 3.5067111147083874`*^9, { 3.506934493572076*^9, 3.5069347338482666`*^9}, {3.5069347831965246`*^9, 3.5069349735344477`*^9}, {3.506935014365075*^9, 3.5069351479521265`*^9}, { 3.506935214638151*^9, 3.506935318272243*^9}, {3.5069353903708506`*^9, 3.506935415818741*^9}, {3.50693546195195*^9, 3.5069355027425766`*^9}, { 3.5069356098542213`*^9, 3.5069356998156033`*^9}, {3.506935747968843*^9, 3.506935791659514*^9}, {3.506935824077512*^9, 3.506935852132943*^9}, { 3.5069360926166368`*^9, 3.5069361285721893`*^9}, {3.506936163737729*^9, 3.5069361867130823`*^9}, {3.507033234877143*^9, 3.507033247156829*^9}, { 3.507454767408944*^9, 3.50745477010999*^9}, {3.508844792485417*^9, 3.5088447941145077`*^9}, {3.50884549870623*^9, 3.5088455003503237`*^9}, { 3.508845850765969*^9, 3.508845852497068*^9}, {3.509882440964101*^9, 3.50988244157411*^9}, 3.509882475232127*^9, {3.509882752613888*^9, 3.5098827586739807`*^9}, {3.5098828259775143`*^9, 3.509882865475621*^9}, { 3.509882898303625*^9, 3.509882944441834*^9}, {3.509883006065281*^9, 3.5098830738538218`*^9}, {3.509883349218051*^9, 3.5098833686383495`*^9}, { 3.5098834115340085`*^9, 3.5098834130990324`*^9}, {3.509883483815119*^9, 3.5098834882351866`*^9}, {3.5110015067440615`*^9, 3.511001508555108*^9}, { 3.51100158751742*^9, 3.5110016136428022`*^9}, {3.511001712978046*^9, 3.511001714012105*^9}, {3.5110018961237087`*^9, 3.511001996277759*^9}, { 3.5110029927223525`*^9, 3.51100304855243*^9}, {3.51100334102284*^9, 3.511003368282878*^9}, {3.511003457493003*^9, 3.5110035084730744`*^9}, { 3.511003716073365*^9, 3.511003718313368*^9}, {3.511003851213554*^9, 3.5110038542235584`*^9}, {3.511003915633644*^9, 3.511004000343763*^9}, { 3.5110040378438153`*^9, 3.5110040520738354`*^9}, {3.511004129613944*^9, 3.5110041435139637`*^9}, {3.5110041844940205`*^9, 3.511004215414064*^9}, { 3.511004251714115*^9, 3.511004317724207*^9}, {3.5110043688142786`*^9, 3.5110044993744617`*^9}, {3.511004551434534*^9, 3.511004563804552*^9}, { 3.511004656854682*^9, 3.5110047374847946`*^9}, {3.5110048370449343`*^9, 3.511004934775071*^9}, {3.5110050951952953`*^9, 3.5110051094953156`*^9}, { 3.511005310395597*^9, 3.511005313165601*^9}, {3.5110053550756598`*^9, 3.5110053979457197`*^9}, {3.511005475365828*^9, 3.5110055280859017`*^9}, { 3.511005632516048*^9, 3.5110057078261538`*^9}, {3.5110072741783466`*^9, 3.5110072779383516`*^9}, {3.511007685378922*^9, 3.5110077212689724`*^9}, { 3.511007878969193*^9, 3.5110079191792493`*^9}, {3.5110079544292984`*^9, 3.511007977489331*^9}, {3.51100806956946*^9, 3.511008163969592*^9}, { 3.5110083080197935`*^9, 3.5110083779198914`*^9}, {3.511008417309947*^9, 3.5110084265599594`*^9}, {3.5110086577202835`*^9, 3.5110086763503094`*^9}, {3.51100973848291*^9, 3.5110097727747145`*^9}, { 3.5110098362490664`*^9, 3.511009843209076*^9}, {3.511010319479742*^9, 3.51101041768988*^9}, 3.511010472549957*^9, {3.5110105623800826`*^9, 3.5110105663600883`*^9}, {3.511010618530161*^9, 3.511010775400381*^9}, { 3.5110108988305535`*^9, 3.511010902560559*^9}, {3.5110109396006107`*^9, 3.511010971500655*^9}, {3.5110110724307966`*^9, 3.511011126720873*^9}, { 3.5110111930409656`*^9, 3.5110112244310093`*^9}, {3.5110113022911186`*^9, 3.511011302801119*^9}, {3.511011365771207*^9, 3.511011393381246*^9}, { 3.511011453941331*^9, 3.5110115100414095`*^9}, 3.5110116920516644`*^9, { 3.511011940486884*^9, 3.5110119448221292`*^9}, {3.511011994617594*^9, 3.5110120044401426`*^9}, {3.511012080629075*^9, 3.511012082500161*^9}, { 3.511012121059245*^9, 3.511012128830667*^9}, {3.511012166958786*^9, 3.511012212882163*^9}, {3.511012271412155*^9, 3.5110123435328693`*^9}, { 3.5110123763535814`*^9, 3.511012378273682*^9}, 3.5110126803061805`*^9, 3.511012712254999*^9, {3.5110127442088213`*^9, 3.511012760719763*^9}, { 3.5110128126296153`*^9, 3.5110128164778333`*^9}, {3.5110128659203157`*^9, 3.511012946051538*^9}, {3.5110130130181217`*^9, 3.511013013572153*^9}, { 3.5110130732983017`*^9, 3.511013111357359*^9}, {3.511013151946506*^9, 3.511013381532558*^9}, {3.5110134459779415`*^9, 3.5110135464461317`*^9}, { 3.51106114701947*^9, 3.511061149800625*^9}, {3.5110613465759783`*^9, 3.5110613944694486`*^9}, {3.511061440181493*^9, 3.5110614704850545`*^9}, { 3.5110615210985627`*^9, 3.511061526236844*^9}, 3.511061558098258*^9, { 3.511061591695918*^9, 3.5110616110608716`*^9}, {3.511061989666014*^9, 3.511061993610235*^9}, {3.511062340120555*^9, 3.511062388296983*^9}, { 3.5110624479310927`*^9, 3.511062448362116*^9}, {3.5110624978498397`*^9, 3.511062504466199*^9}, {3.511062556140991*^9, 3.511062565088437*^9}, { 3.511062604512573*^9, 3.5110626075747395`*^9}, {3.5110626528901873`*^9, 3.511062667623926*^9}, {3.511062697926592*^9, 3.511062753361617*^9}, { 3.511062820190066*^9, 3.511062826918389*^9}, {3.5110628620841913`*^9, 3.5110628636952267`*^9}, {3.5110629169988112`*^9, 3.511062922586093*^9}, { 3.5110630898895597`*^9, 3.5110632646827707`*^9}, {3.5110632974435005`*^9, 3.511063302832794*^9}, {3.5110633695483565`*^9, 3.511063370800426*^9}, { 3.511063451100695*^9, 3.511063495724876*^9}, {3.5110637884913826`*^9, 3.511063803660043*^9}, {3.511063873148844*^9, 3.5110640764546566`*^9}, { 3.5110641815563154`*^9, 3.511064202504424*^9}, {3.5110647832925715`*^9, 3.511064821422436*^9}, {3.511064921571967*^9, 3.5110649360185485`*^9}, { 3.511064996928259*^9, 3.5110650049396567`*^9}, {3.511065099405573*^9, 3.5110651006426387`*^9}, {3.511065994419841*^9, 3.5110660262063975`*^9}, { 3.51106607787613*^9, 3.5110661048055677`*^9}, {3.51106649929416*^9, 3.5110665167559233`*^9}, {3.5110665484686627`*^9, 3.5110665507957687`*^9}, {3.511172244418274*^9, 3.511172248121951*^9}, { 3.511271908764759*^9, 3.51127193923153*^9}, {3.51127208321529*^9, 3.511272083720522*^9}, {3.511565808007309*^9, 3.511565808697657*^9}, { 3.511569569426435*^9, 3.5115696197142553`*^9}, {3.511569654192127*^9, 3.5115697487537823`*^9}, {3.511569795449917*^9, 3.511569850957343*^9}, { 3.511569923132441*^9, 3.511569951395474*^9}, {3.51156999548802*^9, 3.511570025528118*^9}, {3.5115700637195597`*^9, 3.511570073904407*^9}, { 3.511570168672711*^9, 3.5115701693987703`*^9}, {3.5115702807084827`*^9, 3.511570316590618*^9}, {3.5115704477843018`*^9, 3.511570476196438*^9}, { 3.511570552700333*^9, 3.511570553230348*^9}, 3.51157063096492*^9, { 3.511570666389208*^9, 3.511570774206258*^9}, {3.511570993350141*^9, 3.5115710237636013`*^9}, {3.511571103990329*^9, 3.511571162496532*^9}, { 3.511572086109956*^9, 3.511572146676022*^9}, {3.511572183045375*^9, 3.511572257307208*^9}, {3.511572299767131*^9, 3.511572375637422*^9}, { 3.511572416928104*^9, 3.511572419314937*^9}, {3.511572486265936*^9, 3.511572583881239*^9}, {3.511572618822775*^9, 3.511572689803976*^9}, { 3.511572767592095*^9, 3.5115728119230328`*^9}, {3.511572871649499*^9, 3.511572895587339*^9}, {3.5115730011645927`*^9, 3.511573026097403*^9}, { 3.511573066203947*^9, 3.511573067304315*^9}, {3.511573113877461*^9, 3.511573242895504*^9}, {3.511573305600724*^9, 3.51157335345014*^9}, { 3.511573386011435*^9, 3.511573561876066*^9}, {3.5115736599338083`*^9, 3.511573662654211*^9}, {3.511573711434733*^9, 3.511573751413858*^9}, { 3.511573781831065*^9, 3.51157392147996*^9}, 3.5115740070097723`*^9, { 3.511574212562232*^9, 3.5115742129202347`*^9}, {3.511574274727949*^9, 3.511574280021936*^9}, 3.5115743749539347`*^9, {3.511574415917098*^9, 3.511574464721508*^9}, {3.511574495347294*^9, 3.511574520897386*^9}, { 3.511574689987166*^9, 3.511574776272705*^9}, {3.511574816873637*^9, 3.511574817403084*^9}, {3.51157498137286*^9, 3.511575156047468*^9}, { 3.5115751964917107`*^9, 3.511575198900426*^9}, {3.511575350363538*^9, 3.511575555593355*^9}, {3.511575616557596*^9, 3.511575633552223*^9}, { 3.511576888459629*^9, 3.511576889966991*^9}, 3.511576989102373*^9, { 3.5115770318903923`*^9, 3.511577062921318*^9}, {3.511577368930789*^9, 3.511577371083705*^9}, {3.511577460369273*^9, 3.511577494820312*^9}, { 3.511577526181963*^9, 3.511577526455387*^9}, {3.511577717003029*^9, 3.5115777213185453`*^9}, {3.511578270455791*^9, 3.5115782729715242`*^9}, { 3.51157840262752*^9, 3.511578541902854*^9}, {3.511578714861066*^9, 3.51157876536448*^9}, {3.51157887221317*^9, 3.5115788771774406`*^9}, { 3.5115790303651457`*^9, 3.5115790556972427`*^9}, {3.511579156723892*^9, 3.5115791701499777`*^9}, {3.51157921893115*^9, 3.511579221228541*^9}, { 3.511579285102229*^9, 3.511579305130121*^9}, {3.511579344955781*^9, 3.511579379395681*^9}, {3.511579421236561*^9, 3.511579450907959*^9}, { 3.511579561498485*^9, 3.511579572718912*^9}, {3.5115796269685707`*^9, 3.5115796338366537`*^9}, {3.511580847659837*^9, 3.511580873120615*^9}, { 3.511580915835846*^9, 3.511580919902371*^9}, {3.5115816878978662`*^9, 3.511581688428644*^9}, {3.511582856351969*^9, 3.511582856868593*^9}, { 3.5115829041735353`*^9, 3.511582906339797*^9}, {3.51158294705807*^9, 3.51158297157174*^9}, {3.5115830077792807`*^9, 3.511583062314706*^9}, { 3.511583119294093*^9, 3.511583121819322*^9}, {3.511583313640383*^9, 3.511583315186756*^9}, {3.51158347123316*^9, 3.511583475211149*^9}, { 3.511583644213854*^9, 3.511583686150361*^9}, {3.511583751353818*^9, 3.511583752318672*^9}, {3.511583783519195*^9, 3.511583786007965*^9}, { 3.5115838775052557`*^9, 3.511583885555779*^9}, {3.511584258739705*^9, 3.511584306321041*^9}, {3.511584375992516*^9, 3.511584386560573*^9}, { 3.51158441729983*^9, 3.5115845110850067`*^9}, {3.5115847214753437`*^9, 3.511584800314794*^9}, {3.511584918172578*^9, 3.511584950825096*^9}, { 3.511584985277034*^9, 3.511585037502613*^9}, {3.5115852159855423`*^9, 3.5115853415474653`*^9}, 3.5115855989769173`*^9, {3.51158563344634*^9, 3.5115856573936443`*^9}, {3.511585736994277*^9, 3.511585825610362*^9}, { 3.511585855972082*^9, 3.511585857089963*^9}, {3.51158592507406*^9, 3.5115859299605827`*^9}, {3.5116635375555763`*^9, 3.511663542112832*^9}, { 3.5116637135998745`*^9, 3.511663810086876*^9}, {3.511663875984352*^9, 3.5116640039521723`*^9}, {3.511664225043025*^9, 3.5116642279471846`*^9}, { 3.511664441079901*^9, 3.5116644452391324`*^9}, {3.511664596725973*^9, 3.51166459939712*^9}, {3.5116647738017793`*^9, 3.5116648181581273`*^9}, { 3.5116648859136915`*^9, 3.5116648934341087`*^9}, {3.511665000825681*^9, 3.511665072246451*^9}, {3.5116651070073395`*^9, 3.5116651112805805`*^9}, { 3.5116657032633343`*^9, 3.5116657606823263`*^9}, {3.5116658131452217`*^9, 3.511665828287017*^9}, {3.51166585903161*^9, 3.51166586535896*^9}, { 3.511665934165434*^9, 3.5116659728614974`*^9}, {3.5116660605052524`*^9, 3.511666128214638*^9}, {3.511666217234174*^9, 3.5116662652634954`*^9}, { 3.5116664704268975`*^9, 3.5116665100059924`*^9}, {3.511666541227724*^9, 3.5116665767876434`*^9}, {3.5116666108094535`*^9, 3.511666631787611*^9}, { 3.5116666747737093`*^9, 3.511666680808985*^9}, {3.511666748298635*^9, 3.5116667809223948`*^9}, {3.5116668252485647`*^9, 3.511666831791846*^9}, { 3.511666883938591*^9, 3.511666907968902*^9}, {3.5116669395584936`*^9, 3.511667024533824*^9}, 3.5116670581295834`*^9, {3.511667118510785*^9, 3.5116671348646917`*^9}, {3.511667286578107*^9, 3.5116673735577745`*^9}, { 3.511667407788561*^9, 3.51166742541146*^9}, {3.5116674730240064`*^9, 3.511667607792083*^9}, {3.5116676868783793`*^9, 3.511667688828463*^9}, { 3.511673077470591*^9, 3.511673081159802*^9}, {3.5116731198449144`*^9, 3.5116731511345167`*^9}, {3.5116732067815657`*^9, 3.5116732169371347`*^9}, {3.5116749981248374`*^9, 3.511675013504859*^9}, { 3.5116750753649454`*^9, 3.511675077084948*^9}, {3.5116751381650333`*^9, 3.5116751802250924`*^9}, {3.5116752190751467`*^9, 3.5116752208751493`*^9}, {3.5116752568251996`*^9, 3.5116752581852016`*^9}, {3.5116753380253134`*^9, 3.5116753728453617`*^9}, {3.51167540704541*^9, 3.5116754301254425`*^9}, { 3.511675576155647*^9, 3.511675688435804*^9}, {3.511675798995959*^9, 3.5116759195961275`*^9}, {3.5116761097063937`*^9, 3.5116761137663994`*^9}, {3.5116761725564814`*^9, 3.5116762570165997`*^9}, {3.511676303666665*^9, 3.5116763405067167`*^9}, { 3.511681259553603*^9, 3.511681276973628*^9}, 3.5116813260636964`*^9, { 3.511681502323943*^9, 3.5116815035839453`*^9}, {3.5116815839040575`*^9, 3.5116816641641703`*^9}, {3.5116818409344177`*^9, 3.5116818502544303`*^9}, {3.5116819342245483`*^9, 3.511681999264639*^9}, { 3.5116820317946844`*^9, 3.511682076384747*^9}, {3.5116821678948755`*^9, 3.5116821694348774`*^9}, {3.5116823497251296`*^9, 3.5116823511451316`*^9}, {3.511682403085204*^9, 3.5116824716053004`*^9}, 3.511682510895355*^9, {3.5118455901833553`*^9, 3.511845595726325*^9}, { 3.511858890787636*^9, 3.5118590674866056`*^9}, {3.511860993156707*^9, 3.51186100615145*^9}, {3.511861036365487*^9, 3.5118610387728167`*^9}, { 3.5118610815394983`*^9, 3.51186111251075*^9}, {3.5118611541510763`*^9, 3.511861249590407*^9}, {3.511861458076782*^9, 3.511861468617045*^9}, { 3.511861774223838*^9, 3.5118618965126343`*^9}, {3.511861932307558*^9, 3.51186196621896*^9}, {3.511862034020035*^9, 3.511862038787088*^9}, 3.511862194902397*^9, {3.511862421080845*^9, 3.511862431021949*^9}, { 3.5118624649943457`*^9, 3.511862489737117*^9}, {3.51186255069094*^9, 3.511862614899295*^9}, {3.511862714667211*^9, 3.511862715643731*^9}, { 3.511862835831882*^9, 3.5118628389154387`*^9}, {3.5118628981312838`*^9, 3.511862951114829*^9}, {3.511862996589364*^9, 3.5118630568626947`*^9}, { 3.511863153001515*^9, 3.511863153795837*^9}, {3.5118632402715178`*^9, 3.511863269877688*^9}, {3.511863374852501*^9, 3.5118633770073233`*^9}, { 3.511863424591301*^9, 3.511863460924378*^9}, {3.512109072912484*^9, 3.512109075860258*^9}, {3.512109289989172*^9, 3.5121093115880213`*^9}, { 3.512110599521616*^9, 3.512110693394589*^9}, {3.5121107425394*^9, 3.51211074416171*^9}, {3.512111082428775*^9, 3.512111101342493*^9}, { 3.512113671223727*^9, 3.5121136714151297`*^9}, {3.512114410964555*^9, 3.5121145070948553`*^9}, {3.51211495442605*^9, 3.512114955927062*^9}, { 3.512115071322362*^9, 3.512115177108346*^9}, {3.512115608671404*^9, 3.5121156448850613`*^9}, {3.51211568847372*^9, 3.512115709837913*^9}, { 3.5121186325158043`*^9, 3.5121186582767897`*^9}, 3.512118728846529*^9, { 3.512119588479059*^9, 3.51211960182804*^9}, {3.512119632582161*^9, 3.512119669366653*^9}, 3.5121197330832644`*^9, {3.512119801293982*^9, 3.512119861794209*^9}, {3.512120167144313*^9, 3.512120170636683*^9}, { 3.512120278947403*^9, 3.512120282313807*^9}, {3.5121204321840687`*^9, 3.512120571617463*^9}, {3.512120646121501*^9, 3.512120652186022*^9}, { 3.512120711862122*^9, 3.512120731224412*^9}, {3.5121208777446127`*^9, 3.512120917369357*^9}, {3.512120972056535*^9, 3.512120972734692*^9}, { 3.512131481151491*^9, 3.512131504441371*^9}, {3.512131643106271*^9, 3.512131825081512*^9}, {3.512131869660059*^9, 3.512131907425046*^9}, { 3.512132842304906*^9, 3.512132861592134*^9}, {3.5121329531373043`*^9, 3.512132973222994*^9}, {3.512133203671443*^9, 3.512133223891098*^9}, { 3.512133289755788*^9, 3.512133293807819*^9}, {3.512133324157598*^9, 3.512133329851606*^9}, {3.512133380140245*^9, 3.512133460622756*^9}, { 3.51213358162464*^9, 3.5121335854926147`*^9}, {3.51213365742632*^9, 3.512133680448542*^9}, {3.512133795894202*^9, 3.512133834648745*^9}, { 3.5121340028879137`*^9, 3.5121340762482224`*^9}, {3.512134107751395*^9, 3.512134148129799*^9}, {3.512134203180162*^9, 3.51213420607904*^9}, { 3.512134364047502*^9, 3.512134365987685*^9}, {3.512134402734951*^9, 3.512134415695882*^9}, 3.512134451891376*^9, {3.512217955153799*^9, 3.5122180070399446`*^9}, {3.5122184242196827`*^9, 3.512218455428528*^9}, { 3.5122185273632517`*^9, 3.512218556802277*^9}, {3.512218633219166*^9, 3.5122187019103537`*^9}, {3.512218788340414*^9, 3.512218796673621*^9}, { 3.5122188272566833`*^9, 3.5122188514199743`*^9}, {3.512218893399119*^9, 3.5122189246550407`*^9}, {3.512218979079504*^9, 3.512218993750237*^9}, { 3.5122191513706837`*^9, 3.512219160288467*^9}, {3.512219223795315*^9, 3.512219249711974*^9}, {3.512219346642619*^9, 3.5122194166473827`*^9}, 3.512219480948308*^9, {3.512219567644516*^9, 3.512219568366939*^9}, { 3.5122196969552803`*^9, 3.5122197079009533`*^9}, {3.512219790617588*^9, 3.512219814135326*^9}, 3.512219852290358*^9, {3.5133541585249205`*^9, 3.513354161731104*^9}, {3.5133542678321724`*^9, 3.5133542879423227`*^9}, { 3.513354543449937*^9, 3.513354543923964*^9}, {3.5133545845842896`*^9, 3.5133545850493164`*^9}, 3.5133547741411314`*^9, {3.513354809165135*^9, 3.513354812377319*^9}, {3.513355058082372*^9, 3.5133550710591145`*^9}, { 3.5133556701293793`*^9, 3.513355712569807*^9}, {3.5133558570330696`*^9, 3.513355858996182*^9}, 3.513355893107133*^9, {3.513356264246361*^9, 3.5133562731398697`*^9}, {3.513359314742839*^9, 3.513359368097891*^9}, { 3.513359447091409*^9, 3.513359452055693*^9}, {3.513359522585727*^9, 3.5133595499382915`*^9}, {3.5133596076255913`*^9, 3.5133596923304358`*^9}, {3.513359728995533*^9, 3.513359801350672*^9}, { 3.513360893378132*^9, 3.5133609777909603`*^9}, {3.5133610463558817`*^9, 3.513361058094553*^9}, {3.5133611605874157`*^9, 3.513361162677535*^9}, { 3.5133611956704226`*^9, 3.513361206161022*^9}, {3.5133612380258446`*^9, 3.513361277943128*^9}, {3.5133617603197184`*^9, 3.513361771515359*^9}, { 3.5133621753624573`*^9, 3.5133621759254894`*^9}, {3.513362248687651*^9, 3.5133623532246304`*^9}, {3.5133623878526115`*^9, 3.5133624692202654`*^9}, {3.5133625187130957`*^9, 3.5133626537148175`*^9}, {3.513362709489008*^9, 3.513362713107215*^9}, { 3.5133628741974287`*^9, 3.5133629757192354`*^9}, 3.5133630183266726`*^9, { 3.513363053293672*^9, 3.5133630631392355`*^9}, {3.5133631522513323`*^9, 3.513363162651927*^9}, {3.5133631953807993`*^9, 3.513363227179618*^9}, { 3.5133632610175533`*^9, 3.5133632624596357`*^9}, {3.5133633145596156`*^9, 3.513363347246485*^9}, {3.513363479097027*^9, 3.5133634914487333`*^9}, { 3.5133635494390497`*^9, 3.5133635513361588`*^9}, {3.513363593878592*^9, 3.513363620469113*^9}, {3.5133640021469436`*^9, 3.5133640238711863`*^9}, { 3.5133641131082897`*^9, 3.5133642229655733`*^9}, {3.513365331826997*^9, 3.5133653367222767`*^9}, {3.5133653679750643`*^9, 3.513365413168649*^9}, { 3.5133654902080555`*^9, 3.513365495157339*^9}, {3.5133655740548515`*^9, 3.5133655790521374`*^9}, {3.5133656636689773`*^9, 3.5133656913895626`*^9}, {3.513365906130845*^9, 3.513365958016813*^9}, { 3.5133660024243526`*^9, 3.513366021310433*^9}, {3.513366082850953*^9, 3.5133661122116327`*^9}, {3.5133662568249035`*^9, 3.513366260561117*^9}, { 3.513366355516548*^9, 3.513366421033296*^9}, {3.513366947856428*^9, 3.513366978041155*^9}, {3.513367043276886*^9, 3.513367048446182*^9}, { 3.5133670802149987`*^9, 3.5133670812430573`*^9}, {3.513367312882307*^9, 3.5133673908177643`*^9}, {3.5133683805463734`*^9, 3.5133683851286354`*^9}, {3.513368421642724*^9, 3.513368444563035*^9}, { 3.5133684827022166`*^9, 3.513368490048637*^9}, {3.513368546711878*^9, 3.513368549091014*^9}, {3.5133689812937346`*^9, 3.5133689925033755`*^9}, { 3.5133690264923196`*^9, 3.5133690282424192`*^9}, {3.5133696554382935`*^9, 3.5133696821148195`*^9}, {3.5133697211600523`*^9, 3.513369777482274*^9}, { 3.5133699484810543`*^9, 3.5133699803378763`*^9}, {3.513370024400397*^9, 3.513370033391911*^9}, {3.5133702146492786`*^9, 3.513370220934638*^9}, { 3.5133702535725045`*^9, 3.51337028217214*^9}, {3.513370359165544*^9, 3.5133703734153595`*^9}, {3.5133708515307055`*^9, 3.513370857407042*^9}, { 3.5133709387196927`*^9, 3.513371014934052*^9}, {3.5133710586535525`*^9, 3.513371063367822*^9}, 3.5133732729732046`*^9, {3.5134045834868937`*^9, 3.5134046456564493`*^9}, {3.5134048698682737`*^9, 3.5134050938130827`*^9}, {3.513405171288514*^9, 3.513405226302661*^9}, { 3.513405310981504*^9, 3.5134053513298116`*^9}, {3.513405480383193*^9, 3.513405516202242*^9}, {3.513405697355603*^9, 3.5134057538158326`*^9}, { 3.5134099109099426`*^9, 3.5134099518232822`*^9}, {3.5134099844121466`*^9, 3.51340998989746*^9}, {3.5134101971163125`*^9, 3.513410202562624*^9}, 3.51341105289526*^9, {3.5134110909804387`*^9, 3.513411117522957*^9}, { 3.5134111493077745`*^9, 3.513411150017815*^9}, {3.513411221723917*^9, 3.513411222172942*^9}, 3.513411308934905*^9, {3.5134113632290106`*^9, 3.513411374707667*^9}, {3.513411427695698*^9, 3.5134114696160955`*^9}, { 3.513411503832052*^9, 3.5134115136566143`*^9}, {3.5134116086240463`*^9, 3.5134116354295793`*^9}, {3.513411751442215*^9, 3.5134117824029856`*^9}, { 3.5134124818829937`*^9, 3.5134124897654448`*^9}, {3.5134126575350404`*^9, 3.513412677546185*^9}, {3.5134127328423476`*^9, 3.5134128390994253`*^9}, { 3.513413553334277*^9, 3.513413567532089*^9}, {3.513413611475603*^9, 3.513413677115357*^9}, 3.5134138331472816`*^9, {3.513498741947325*^9, 3.513498758320262*^9}, {3.51349887192476*^9, 3.513498919931505*^9}, { 3.5134989893944783`*^9, 3.513499015278959*^9}, {3.513501993230288*^9, 3.513502021365897*^9}, {3.5135022056274366`*^9, 3.5135022267046423`*^9}, { 3.513502298892771*^9, 3.51350232108504*^9}, {3.5135023690977864`*^9, 3.5135023749081187`*^9}, {3.513502546360925*^9, 3.5135025731194553`*^9}, { 3.5135026217092347`*^9, 3.5135026855108843`*^9}, {3.5135029218924046`*^9, 3.5135029440966744`*^9}, {3.5135030313906674`*^9, 3.513503031915697*^9}, { 3.51350308843193*^9, 3.513503155614773*^9}, {3.513503423211078*^9, 3.5135034375779*^9}, {3.513503475119047*^9, 3.513503486500698*^9}, { 3.513504810486426*^9, 3.5135048123265314`*^9}, {3.5135050408686028`*^9, 3.513505050325144*^9}, {3.51350523174652*^9, 3.5135052406320286`*^9}, { 3.5135053475631447`*^9, 3.5135053515533733`*^9}, {3.5135053854883137`*^9, 3.513505410007716*^9}, {3.5135054664949474`*^9, 3.5135055108684855`*^9}, { 3.5135056535126443`*^9, 3.5135056892886906`*^9}, {3.5135058353470445`*^9, 3.5135058363181*^9}, {3.5135058724481664`*^9, 3.513505896620549*^9}, { 3.513505930117465*^9, 3.513505936605836*^9}, {3.5135067894096136`*^9, 3.513506838227406*^9}, {3.5135068798417864`*^9, 3.5135069162848706`*^9}, 3.513508883500389*^9, {3.513528148869445*^9, 3.513528164575343*^9}, { 3.514522276171303*^9, 3.514522285337827*^9}, {3.514608195193141*^9, 3.5146082607756567`*^9}, {3.5146106414309754`*^9, 3.5146106460173836`*^9}, {3.5146378731339073`*^9, 3.5146378788392334`*^9}, {3.514637911423097*^9, 3.5146380284267893`*^9}, { 3.514638065771926*^9, 3.514638069765154*^9}, {3.514638107859333*^9, 3.514638108433366*^9}, {3.5146381460805187`*^9, 3.51463819487531*^9}, { 3.514638255972804*^9, 3.514638259441003*^9}, {3.5146382923198833`*^9, 3.51463833124911*^9}, {3.514638394786744*^9, 3.514638397226884*^9}, { 3.514639015435243*^9, 3.514639032615226*^9}, {3.514639134499053*^9, 3.5146391540731726`*^9}, {3.514639209304332*^9, 3.51463921241951*^9}, { 3.5146444024823647`*^9, 3.514644415794126*^9}, {3.514798582223886*^9, 3.514798632495433*^9}, {3.514798669140382*^9, 3.514798741712791*^9}, { 3.514798808491165*^9, 3.5147988832729683`*^9}, {3.5147996043798532`*^9, 3.514799663521353*^9}, {3.514799721413253*^9, 3.51479974806131*^9}, { 3.5147998899280033`*^9, 3.514799895657929*^9}, {3.514799953607873*^9, 3.514799959858663*^9}, {3.514800040638089*^9, 3.514800045870973*^9}, { 3.514800147887328*^9, 3.514800168328457*^9}, {3.5148005634556103`*^9, 3.514800575721077*^9}, {3.514800703865267*^9, 3.514800714041728*^9}, { 3.514800748571167*^9, 3.514800796611837*^9}, {3.514801378096434*^9, 3.5148014423242397`*^9}, {3.5148014740450163`*^9, 3.51480147721733*^9}, { 3.514801510050754*^9, 3.5148015121306753`*^9}, 3.514801567407507*^9, { 3.5148016819026613`*^9, 3.514801692347425*^9}, {3.514803148503026*^9, 3.514803208409225*^9}, {3.514803320223831*^9, 3.514803322579348*^9}, { 3.514870301412828*^9, 3.5148703260547733`*^9}, {3.514870362413271*^9, 3.514870365907133*^9}, {3.514870700362814*^9, 3.514870701110677*^9}, { 3.5148744309862328`*^9, 3.5148744517614803`*^9}, {3.5148839437634535`*^9, 3.5148839481517043`*^9}, {3.515163497011083*^9, 3.5151636037161865`*^9}, 3.515163762484267*^9, {3.515163856330635*^9, 3.5151638825421343`*^9}, { 3.5151639377542925`*^9, 3.5151639874221334`*^9}, 3.5151640466135187`*^9, { 3.5151640962423573`*^9, 3.515164097039403*^9}, {3.515164153656641*^9, 3.515164186933544*^9}, {3.515164470729777*^9, 3.5151644722268624`*^9}, { 3.5151647468405695`*^9, 3.515164809029126*^9}, {3.515165156512001*^9, 3.515165157038031*^9}, {3.5151657238104486`*^9, 3.5151657242984767`*^9}, { 3.515165786631042*^9, 3.5151658103874006`*^9}, 3.515166033897185*^9, { 3.515166082184947*^9, 3.515166114442792*^9}, {3.5151661509678807`*^9, 3.515166329257078*^9}, {3.5151664020342407`*^9, 3.515166413715909*^9}, { 3.515166512947585*^9, 3.5151665679697323`*^9}, {3.515166660524026*^9, 3.5151666622401237`*^9}, {3.515166703131463*^9, 3.515166710285872*^9}, { 3.515166749015087*^9, 3.5151667561334944`*^9}, {3.515166787475287*^9, 3.5151668224152856`*^9}, {3.515166942486153*^9, 3.515166970898778*^9}, { 3.515167373070781*^9, 3.5151674716834216`*^9}, {3.5151675570073013`*^9, 3.5151675585823917`*^9}, {3.5151675887191153`*^9, 3.5151676145045905`*^9}, {3.515167772001599*^9, 3.5151677805440874`*^9}, { 3.5151678108598213`*^9, 3.51516783602326*^9}, {3.515167886204131*^9, 3.515167887193187*^9}, {3.515168067970527*^9, 3.515168074052875*^9}, { 3.5151682113447275`*^9, 3.515168225097514*^9}, 3.515169554623559*^9, { 3.515169598363061*^9, 3.515169670819205*^9}, {3.515169878768099*^9, 3.51516991393511*^9}, {3.515170148328517*^9, 3.5151701697327414`*^9}, { 3.5151703767135797`*^9, 3.5151704397381845`*^9}, {3.515170558004949*^9, 3.5151706907655425`*^9}, {3.515170770863124*^9, 3.5151708794783363`*^9}, { 3.515171053003261*^9, 3.515171120001093*^9}, 3.5151711786954503`*^9, { 3.515171255350835*^9, 3.515171302555535*^9}, 3.5151713615049067`*^9, { 3.515171991478939*^9, 3.5151720115390863`*^9}, {3.5151720867483883`*^9, 3.5151720959489145`*^9}, {3.5151721948045683`*^9, 3.5151722326137314`*^9}, {3.51517318614927*^9, 3.515173195373798*^9}, { 3.515173234067011*^9, 3.5151732396173286`*^9}, {3.515173349575618*^9, 3.5151733589771557`*^9}, {3.5151733966483097`*^9, 3.515173413044248*^9}, { 3.515173471020564*^9, 3.5151734943118963`*^9}, {3.515173669618923*^9, 3.5151736737791615`*^9}, {3.51517382254767*^9, 3.515173825566843*^9}, { 3.5151738988880367`*^9, 3.5151739622066584`*^9}, {3.5151740092043467`*^9, 3.5151740205369945`*^9}, {3.5151742794008007`*^9, 3.515174280115842*^9}, { 3.515174498263319*^9, 3.515174510823037*^9}, {3.5151745431358852`*^9, 3.515174545298009*^9}, 3.515174589510538*^9, {3.5151746866570945`*^9, 3.5151746979307394`*^9}, {3.5151751069621344`*^9, 3.515175116203663*^9}, { 3.5151751786132326`*^9, 3.515175183727525*^9}, {3.51517523067321*^9, 3.5151752863183928`*^9}, {3.5151753957036495`*^9, 3.5151755164835577`*^9}, {3.5151756001093407`*^9, 3.515175745124635*^9}, { 3.5151757841748686`*^9, 3.515176048794004*^9}, {3.5151761320757675`*^9, 3.5151761874419346`*^9}, {3.515176282512372*^9, 3.5151763013594503`*^9}, { 3.5151763714194574`*^9, 3.515176412588812*^9}, {3.515176952146673*^9, 3.5151769586260433`*^9}, {3.515177016318343*^9, 3.5151771361551976`*^9}, { 3.515177315440452*^9, 3.515177353634637*^9}, {3.5151774169182563`*^9, 3.515177453138328*^9}, {3.5151775037062206`*^9, 3.5151775140458117`*^9}, { 3.515177583236769*^9, 3.5151775948364325`*^9}, {3.515177652959757*^9, 3.515177660017161*^9}, {3.515177700776492*^9, 3.5151777118721266`*^9}, { 3.5151777697204356`*^9, 3.5151777837582383`*^9}, {3.5151778629787693`*^9, 3.5151780061459584`*^9}, {3.515178069918606*^9, 3.515178103008498*^9}, { 3.515178149123136*^9, 3.515178155325491*^9}, 3.5151781909875307`*^9, { 3.515178232296893*^9, 3.5151782408953853`*^9}, {3.5151782774614763`*^9, 3.5151782889631343`*^9}, {3.5151783823774776`*^9, 3.5151783952072115`*^9}, {3.5151784423609085`*^9, 3.5151784465891504`*^9}, {3.515178589652333*^9, 3.5151785923144855`*^9}, { 3.5151786454735255`*^9, 3.515178646053559*^9}, {3.5151787593950415`*^9, 3.5151787625672235`*^9}, {3.5151787933789854`*^9, 3.515178810558968*^9}, { 3.5151788520563416`*^9, 3.515178855961565*^9}, 3.5152237224919653`*^9, { 3.5152255031348124`*^9, 3.515225509447173*^9}, {3.515225671225426*^9, 3.5152257637807198`*^9}, {3.515225925968997*^9, 3.515225983585292*^9}, { 3.5152260261517267`*^9, 3.515226029782934*^9}, {3.5152260609407167`*^9, 3.515226249264488*^9}, {3.5152264135978875`*^9, 3.515226456803359*^9}, { 3.515226522182098*^9, 3.515226539611095*^9}, {3.5152265787383327`*^9, 3.5152265842416477`*^9}, {3.5152266449801216`*^9, 3.515226674169791*^9}, { 3.5152267179742966`*^9, 3.515226726906808*^9}, {3.515226757771573*^9, 3.515226773241458*^9}, {3.515228027974224*^9, 3.5152282386702757`*^9}, 3.515228284846917*^9, {3.51522835693904*^9, 3.515228358180111*^9}, { 3.5152284968570433`*^9, 3.5152284992931824`*^9}}], Cell[BoxData[ RowBox[{"\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"Ambient", " ", "geometry", " ", "data"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"P111113", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", "Coordinates", "*)"}], RowBox[{ RowBox[{"{", RowBox[{ "x1", ",", "x2", ",", "x3", ",", "x4", ",", "x5", ",", "x6", ",", "x7"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Stanley", " ", "Reisner"}], "*)"}], RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"Variables", "[", "#", "]"}], "&"}], ",", RowBox[{"{", RowBox[{ RowBox[{"x1", "*", "x6"}], ",", RowBox[{"x2", "*", "x3", "*", "x4", "*", "x5", "*", "x7"}]}], "}"}]}], "]"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivalence", " ", "Relations"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "3"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], " ", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ "(*", " \ ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], " "}]}]], "Input", CellChangeTimes->{{3.494670616774623*^9, 3.4946706566877365`*^9}, { 3.4946706908382607`*^9, 3.494671187848395*^9}, {3.4946712260739822`*^9, 3.494671276549757*^9}, {3.494671398419129*^9, 3.494671409376797*^9}, 3.494671736851827*^9, {3.4946730289391737`*^9, 3.494673038364318*^9}, { 3.494673090132613*^9, 3.494673117960541*^9}, {3.494673233069809*^9, 3.494673322708686*^9}, {3.494673360886772*^9, 3.494673362399295*^9}, { 3.4946734579857635`*^9, 3.49467350397147*^9}, {3.4946735393595133`*^9, 3.4946735404720306`*^9}, {3.4946736185182295`*^9, 3.4946736198857503`*^9}, {3.4946736555662985`*^9, 3.4946736940293894`*^9}, {3.4946740439997644`*^9, 3.494674050429863*^9}, { 3.494674527507191*^9, 3.4946745390348682`*^9}, {3.495197000827993*^9, 3.4951970354729743`*^9}, {3.4951971500575285`*^9, 3.4951971594140635`*^9}, {3.496035360371641*^9, 3.4960353626716766`*^9}, { 3.496393963619335*^9, 3.4963939828671308`*^9}, {3.4963940137301044`*^9, 3.496394018942685*^9}, {3.4963940881837482`*^9, 3.4963940944513445`*^9}, { 3.496399978016715*^9, 3.496399983634301*^9}, {3.4964105361613855`*^9, 3.496410536843896*^9}, {3.4964111405306683`*^9, 3.4964112330070887`*^9}, { 3.4964113750892715`*^9, 3.496411401497177*^9}, {3.496411440265272*^9, 3.4964115265015965`*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ "(*", " ", "Examples", " ", "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\n", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{ "Additional", " ", "Data", " ", "for", " ", "a", " ", "monad", " ", "bundle"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CompleteIntersection", "=", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "4"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "4"}], "}"}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"BundleConstraints", "=", RowBox[{"{", RowBox[{"{", RowBox[{"1", ",", "5"}], "}"}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"BundleCharges", "=", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "2"}], "}"}]}], "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Vr", "=", "2"}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "Example"}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"1", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Calculate", " ", "the", " ", "line", " ", "bundle", " ", "O_S", RowBox[{"(", RowBox[{"2", ",", "8"}], ")"}]}], ",", " ", RowBox[{ "where", " ", "S", " ", "is", " ", "the", " ", "complete", " ", "intersection"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"CohomologyOf", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Bundle", " ", "specification"}], "*)"}], " ", RowBox[{"\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", "AmbientSpace", "*)"}], "P111113", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Remaining", " ", RowBox[{"Data", ":", " ", "CompleteIntersection"}]}], ",", " ", "LineBundleCharges"}], "*)"}], RowBox[{"{", RowBox[{"CompleteIntersection", ",", RowBox[{"{", RowBox[{"2", ",", "8"}], "}"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "Type", "*)"}], "\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Optional", ":", " ", RowBox[{"Verbose", " ", "Level"}]}], "*)"}], "\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Optional", ":", " ", RowBox[{"Output", " ", "Type"}]}], "*)"}], "\"\\""}], "\[IndentingNewLine]", "]"}], ";"}]}]}]], "Input", CellChangeTimes->{{3.494670616774623*^9, 3.4946706566877365`*^9}, { 3.4946706908382607`*^9, 3.494671187848395*^9}, {3.4946712260739822`*^9, 3.494671276549757*^9}, {3.494671398419129*^9, 3.494671409376797*^9}, 3.494671736851827*^9, {3.4946730289391737`*^9, 3.494673038364318*^9}, { 3.494673090132613*^9, 3.494673117960541*^9}, {3.494673233069809*^9, 3.494673322708686*^9}, {3.494673360886772*^9, 3.494673362399295*^9}, { 3.4946734579857635`*^9, 3.49467350397147*^9}, {3.4946735393595133`*^9, 3.4946735404720306`*^9}, {3.4946736185182295`*^9, 3.4946736198857503`*^9}, {3.4946736555662985`*^9, 3.4946736940293894`*^9}, {3.4946740439997644`*^9, 3.494674050429863*^9}, { 3.494674527507191*^9, 3.4946745390348682`*^9}, {3.495197000827993*^9, 3.4951970354729743`*^9}, {3.4951971500575285`*^9, 3.4951971594140635`*^9}, {3.496035360371641*^9, 3.4960353626716766`*^9}, { 3.496393963619335*^9, 3.4963939828671308`*^9}, {3.4963940137301044`*^9, 3.496394018942685*^9}, {3.4963940881837482`*^9, 3.4963940944513445`*^9}, { 3.496399978016715*^9, 3.496399983634301*^9}, {3.4964105361613855`*^9, 3.496410536843896*^9}, {3.4964111405306683`*^9, 3.496411216749339*^9}, { 3.496411504701262*^9, 3.4964115054137726`*^9}, {3.496411563644667*^9, 3.4964115655446963`*^9}, 3.4964754530446386`*^9, {3.4964803174993553`*^9, 3.496480327397007*^9}, {3.5079243550448413`*^9, 3.5079243567409143`*^9}, { 3.511674818284586*^9, 3.511674819834588*^9}, {3.511860793485775*^9, 3.511860795033902*^9}, {3.515224696571679*^9, 3.515224698523791*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"{", RowBox[{"{", RowBox[{"1", ",", "1"}], "}"}], "}"}]], "Print", CellChangeTimes->{ 3.511674804624566*^9, 3.511858743597471*^9, {3.5118607830133247`*^9, 3.511860795774675*^9}, 3.5119464833143463`*^9, 3.513497708722228*^9, 3.514092157990073*^9, 3.5151636425874095`*^9, 3.515224587297429*^9, 3.51522469885681*^9, 3.5152282669598937`*^9}], Cell[BoxData[ RowBox[{"{", RowBox[{"{", RowBox[{"2", ",", "3"}], "}"}], "}"}]], "Print", CellChangeTimes->{ 3.511674804624566*^9, 3.511858743597471*^9, {3.5118607830133247`*^9, 3.511860795774675*^9}, 3.5119464833143463`*^9, 3.513497708722228*^9, 3.514092157990073*^9, 3.5151636425874095`*^9, 3.515224587297429*^9, 3.51522469885681*^9, 3.515228266963894*^9}], Cell[BoxData[ RowBox[{"{", RowBox[{"{", RowBox[{"3", ",", "2"}], "}"}], "}"}]], "Print", CellChangeTimes->{ 3.511674804624566*^9, 3.511858743597471*^9, {3.5118607830133247`*^9, 3.511860795774675*^9}, 3.5119464833143463`*^9, 3.513497708722228*^9, 3.514092157990073*^9, 3.5151636425874095`*^9, 3.515224587297429*^9, 3.51522469885681*^9, 3.5152282669708943`*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{"\<\"Calabi-Yau\"\>", "\[InvisibleSpace]", "\<\" \"\>", "\[InvisibleSpace]", "\<\"Verbose1\"\>", "\[InvisibleSpace]", "\<\" \"\>", "\[InvisibleSpace]", "\<\"NbInterface\"\>", "\[InvisibleSpace]", "\<\" \"\>", "\[InvisibleSpace]", "0"}], SequenceForm["Calabi-Yau", " ", "Verbose1", " ", "NbInterface", " ", 0], Editable->False]], "Print", CellChangeTimes->{ 3.511674804624566*^9, 3.511858743597471*^9, {3.5118607830133247`*^9, 3.511860795774675*^9}, 3.5119464833143463`*^9, 3.513497708722228*^9, 3.514092157990073*^9, 3.5151636425874095`*^9, 3.515224587297429*^9, 3.51522469885681*^9, 3.515228266977895*^9}], Cell[BoxData[ TagBox[ TagBox[GridBox[{ { GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 EB+P8WUIdUh02CYwFUenVtgtzuIQdQDJ9lbH6dvhMKTt7R398IAWWIvDfps1 mccp0KqOHVqkK9ViTtebVgy7c8Oy2RyXR2Azc6y2HXz+2oE9tqZtK3I6pS47 3Sr5oosuevqF51Hd191wQ3xmmopd8g8uwtXHn36KLu289LLLPhz5JZBABnSy M+7s3Gfs5WGv4XF3/+Pey3r0uPqaa5DC1ddeO/TNN4CiO+6++4abbtpRkKMJ egYMGXzt9dfPWbwArsp+uCIffXPr+TbrirXKTcN6zH2Z+bYnM+ZZZhxw1ffc D3s+NPa5Ht/2ZcYNOGdC33PefuKR4XetUL98c/6rzKv3XvzFY8wUROvPjO7N TH2BWTaQSX2DUX7I6Bb0TxZ6D6us6DwuRzioYsFD1KbbFiJbTjVZQn5HJIS2 7y4Ny47to0LssLKOrt6CpmLNnxWgIl+FO+pehSOBFvnECTGItTWekjC0Flev RlWSL/+q5LyjGejpxlTmbKVs0buPrBlxd8aQCze+esOq4X//ZfJXy9/+9+rh d+UOOW/tsNsWD707KTMxUyq6pMsSwvc+/9QcjdAUuEbtv9mN3W646cbn+vWl a4Q//makORqmuxg90/uFCTN/XJ+SiPhQaA89/hj9XgNQui0/G7iiCwa35GRq Q77HniKbPU75dU4yt6ArrtjRZBO00OYcx4RZkQWvDpnTi3nxQeYrAImGPudM 7c3MGMBMHcC89Ujfrx+emj38hmWDmOXvMdnTmN8GMRP6MOP7Md/1Zr556paR Tz41t9896z5+e8VK6eY8j8RhFNtNoKCDBYBK6bYXV5b7o6X4IXUQsqptbKhu qDcGvIAWcBWtrQbq/mKfGHsXGbYQC2D+MsjcEq3KCU21l6mORasf4iAyvrWl qr7OVxrReVwCoy5DxGe3qRHzjH8RWkKriWPQJiyfveHPqfGvXrd23NDNy2dv TozfvGzm2t/GbRl08bqZXyQsnZUvF6YJ+eCrCy+8kO5Weumlly6KW0c3+120 YS0506PHtrxse3V00uxZDNk75XbIqoFDX2HY7S8GjxgGEwl7qvK5wO13sDuR fvP9eGNpMd4CiIWF3ZaXBVzRrdim/f7LfrhiuweNKVzr5mz77CXFn3/l+2nI qH497/us3xVjXmBGPs+M788sepnZ8QbzxWMfPHfP5NmvnD97ELNqMCMfz7Qn MKXfncf7GHp+4CuPTPj46akLnnsnYWlOorQ4V20XWEwar8NWHLCHgwcPIdAR 7F1Dc3OANXnmoK+ptQW40vvdpqAPuALMtN32cD5CmsJfWJ9kPmc7Jw9GkG/U aV0OcAikddNx0lSHg1ZrdX1dIFpq8LrFFrLiFYY4QyzgdE4g+QsvJfV5C5ye dcNv37Jspry0jGzCGQzsVMg3vHhx8s5ERSQMFU311XnnnQd4PPzEYyw73ZQh 5htLQvPZ7fWuvPpqiCVnbcUvSxfhvzfdeisSx5l3Pv2Y7hRx0y03E2c56B0y YjhLYs+TTcxCPni4SBk2NImT56iO0k0gu/NVJ8HqYQo5OmOBzpooLp341u9r hz5R8Mk5RZ8zsi+ZzDcvmvn8K6/887MPezNjhjLrhjE73+6R9e6d2959+I/3 Bkz9oteMMf9ZO+lKyWgm8OUVW1MlMp8N3iUkEzgHAgl0dIgQqapALbe0tZbX 1Wq8zuOFK+r6QWomcgsQclUykdmg97j8pSWVdbXHxfs7kgNPwavVNjaGK8ut Qb/cZoaTCIOYCJuo/os2kUzb0+sWD70jfsl0iZesxBc7rOn8wsX9Lt+Rukni dlDdTq0VSCldxINGYthvUoC6OToV3TfsH/fd9+ZHH9DtakFQ6qD3o5FfTZ4z a9y0KQy77wEeNL9zj8f/PPxQn0EDPx8zCmYUQgtn+g4aOHL8uL9dTPbLmrdm ZSInj8J1P93OZlgv9nq4ip2L3r164lOPLH7pjvjXH3XOvj1per8NH98x5gmm 9/PMd6/dumhQ3/mv95k16l8zplz586xz5v/MzJ/N/DqdmfI5o93IWDf3W5UY ggUUsSOPMqdF7rQeNLiswFKwoqykuhLggY6CG9jQ0txhB1lcVdbXabqtdT0s qFCAmRIBdf0KdSqp1WQJeIvLo/RrSoedq3Acj927d+GJUIyl1ZXO4qDaCbml SRPyQFyZEiHy+RfEPF4whZNLttPpnJZJltMWZNGpxcBVKr8ItQ+DBfffVFY8 c/5c4AdS6rW339QW+5Zt2njrHbdTwIB5evXtna9RgM9vvvVWehJi/usJ3yHN +x74zyU4Lr2UbqnxRK+n9eHApNkzr7z6qph469mrF/KwJWcnot16xx1kA1jW DkoceqlLL3YYxE6TWJ6VM+5fycOZhOHMpGeZhx/8x+uvTtIZHm/kMpOeYQb0 Oi/9rduN7/aQTWa2/sD8Po6ZMYqZ9ikz7S1m8hDmreeYL/sytVOZvOVzC8xu dgB6/1ms+wX6KcNAeakx4JGSZY9GmEIIqrqmRnPIBxsK7oKMVxxxVx6lKbwa sX2FeTtlIpA5VLo9FCipqqwjm/wfU+fnX4UWVfLNlbW1/rIS2ESJxZijkCYW 5SdxC8Glf4G4JE5b11Wf7Ax5W1eYpQm5MLt0porUZQVrgcQSC/N4Ri0MZYFG sXLbZvBMws602OdWcxSSpQlx4CgwKtxDsg9YQS7Sge1L4RUi7JQI6Up/pIZo sKGQ90J2MTUehPTTBFx2dYahQGPalmdbl+yctz44ebyi6JM7jR8z2s+Z6Apm 5483P/jwM9Onnjt9wu0Lv+yb+sq163rfNOah8dr3zq1Yyaj/YCb2ZL54hvmm LzO1DzP7BfLfTx9gNr16Ff/TnitWq/O0NqlTf8ApzfuxOqAVWzQNdEGu1zQ2 QMkXV1VA94LBjuTT5BSoaLAZEgEQlSIoIjv4mQ06j9NbGilnP87V3n7c+hP+ CrR2tcP+gjDDFVF70K+wW4t0akpcUD6FWtURfmNO5rahHuHVIpBdrdguKb5J J3WR87GvRaBBrU/eUch+uEHhdcTOIxpgRvYQDvm05EO3ZAGFBFXArvPVR4J0 A3zyBQEYFEg1bsGWrAw5+70SJAIZj+fiPI1JPrPiIXty4iTwRnfIEdkN6ULL xgwH/hbqTNsLHCuWcrdPnKAa+1B4Ug/dN3f/POKetz+7b9yI52a/8tIPz40e 8+S7o59559teb25+88o1bzGfP8oMe5YZNYRZPJiJH8ZwJjFpo5jVg5ktg294 f4joxwWl2/JtmWKL0GY4RJe7cN8F9bCegBnoC3reVRLW+9yEx45gnT5RUypZ Mq8QEj1TKoStgZixBnyh8jL6KXAiqE46U+137GKnAjY2N1XU1gDtBq8LYj5P JQNr7eAQdqWzIA5h9AGDdUnbZ839fcmGdUvi1s+a9/ua7VsAkkXr18z4/dcM EW95Qtzs+XPzlLL5q1b06dtnWXwcoLVo/dqf5s9dGr8BP6b/9ktCRiqANGnm dMRcsSl+4drV46dNSSzMxXOnzpmNxJdvivt92ZL1STvILvSLF+IqELVySwLi I8Fl8RvwA8/FSaQ2eeaMFZvjl8StGz/1h1VbN9GdPcAnYBU6IxQ/pD7r+qzI F2NKPv/ANOE9bsrzvd7/5OZJ069aOfPCn7568ONX3/uq7yejnv5m4F0zvu15 6YB7z3/wOWbhe4z4I8b3I7OnhtljYRLeeXzB3Ow0kYNvNmaILWsSXQs3eFJ5 1iOfmcxOCevonRB39pceIjL+gtVThVxWTXHJLnMsTXki4WhNdUNz02FnFJ/M gyUu4ifWNNRDzNtDfpXTxjdoYbMArSReYY5Syj3IaDXwA9X94qCBo8aNRQ0i TPhx6idffUlMv1r+3dQf3njnnQ8+/Xhrzk7wyba8rAEDXyzUKlN5hU89+dSk GdNXbdsMAHz+zddjJk4gW3S+MmTeymUsybg++eqL73+cBr4aO3kSoDJv1XL8 /W7KZDxx/NQp73zwPuio/4svsrAhexcsWrem/4ABeO6b7777zXdjFew3dL77 YfKw11+XH2gvR4Q8lWmnzMrz+uLmpIf7MQkfMLMmMnN+ZObOYH6betHY0Q+M fGvY2z3nvPLAxEH/eGnUq5eXTmZKvmcck6+uKnoqP/PPjalWCdm4Rs82LqLc 4GbmKMxHO/p82LkQFFFw2KHPwVGJ3EIoFp5BCzUFmiquiFbX16P62g/4ZcpT fezetauNHfGBcxqMlpr9XoXdArOYISZGPIl1YAm6um2Wgoremrvz96WLl25c D96Yu3xpMicfkum3JYvAJIiQWJA7449fYbxAfcDG3BXLcpXSDSmJ4J9lCXFg FZzJEJItQMFLO/Jz6H62C9auAnGRFdCbNoK+lm+K/2PZkl8WLUCCOP/r4gXA 4easDPpcBKQG9OLkL4v+BFalbpvMZQPqZi+Yd7AFzqhNEfAQcqwZv5Hz2DWS z5jUqZeumHH+r1OYuT8yf85i5s1mpnx3y7gP+k3u+/mWvn0nPNV30L8feLjn 8vi0MoHDDfF/gAS7LcE4liDs3Bwe9o5FVEGWXIwGJbOZTT4PhDGsDKrstKKp 7sduAi7SCwFvoqy6ylsSNnhc8FsLNUoquuB65CplsWXIsdeXkkWUtthvuhUV 3WCWVe/WvZ+G8XRsSIJLsfUL+E2rXtY5uNyRTpeTdBdHObtPF/3umKBDmO3d 5JZsw8t+xYncaDbgt4TdwvQQRAG2SRJ5xr9XqJz4atratTkCHle9c+WOTybM uOC3qcx8cNdPzJxZzAefXvXR86+ueuOSvrfe+uC/Z21IjwhO8IoJui4SOhNS JLGoYEdRPqAFxQv3Sud2usPFpazT13JyexKO5egwi6SPqwGZd0eK9R6XxGoq 0CjTSf884a5shYSuHzzRK39PXIAK4pmMK7e54jKcC1bauEZTsiTAs8CldSg8 4ZFrPh01iokbxQjGnJuzdfQazo8vznxjxpCHZz3NvPPSx7mawIlbMUGLFBKU uHucfHBUplQEREH3at0OVzgUqayoaWigHZ5nBqS6HLt3E7MIjxW2O1xR7iwO 6twONJbCTnThfXeiBemIzyjsZhxP80AXD0JmJ3GsCq9ua56dozeL6ToI2DKr a+mOLa+/cHfhwPNFr/ROEUU0AW+u0f7+8Iylg65YuWJrItdPZdXxhVOsSypN xN+xF1FKsdmgddkdoWBxebSqvu6EDvadnGNXJ7og6dFMKHfJrCboLqh6vDiZ jCHg0v6uMwhdMGGFWlgZI11T03XqlJBsVGJcn2z/5MWVkgF3bZq4mucmPRUy lzFT4pjzE09sN4LojteKic5CIyYP2gleEtEbgiJiEfRqqZVYPXAUmjYaONsx dVpLqaM6uqKrpLLCEyk2+txymwUuCRyTZH4RJGUyj9NBX+wkqNMfYIf2wtQB /eqk4OhvLMu3uOHo0ZMyt35LvndDqlPm+uszQPZDFNojCCpdzEcjhYhKE/FI IzVooMwhbt2weiyiGv+3ELX32N3RRd/c2gK5GK2phjMCJ1fjsoshBrRKgKqj rfE4aHdnEMAOGICljemO+Byyyr7reZlLvzbRmZBpj4HtL2CJ2jvo1UyJAJoc rTJFUIRCI/PwzQa102bxe32lEbhOtY2NHR0I/3uI2veg6Gppba1vaoSTC4sP 6YWWJbeZ+UYtWews4qHdQR6kgsw7ASawnmEajOIqiWuV7quj2HWs+hVbXNky 85F3KcTeHexUoFXCs0Proz1RgFaeWs43aKEu9G6nIxQIRcvKa8i44f8TRHU9 8LJwRlrb24hxbGyIVlcFykrsQT/EAMoH9hEAA7cnsQIMPJYpEaL0Yh0Upz/G IMu35NhTeAdYCsF+SdxQoDUdtjMz9prQTrBu5KO3LDsl8zm0QHh6jdRq0rgc toDfX1pSVlVZ3UBEFFTHmdJ7cCIOvPquGH01N1XV1UIMeEvCloBP63JIKcBU cvjLgBbpuucWpAl5UKRos7H9zE9PjBFhrzMV6Q/cSXUwbdbFzJElxhBOO2Ui 8DYIfDsnn8BJKspXK1AsEotJ47TD3nkiYWjyyrra+qamljYQ1P+iiPqrB6Gv ToA1NDWhlEqqKqAQKIMp7BahSc/RqoAoeNDEi4QJKMqHqECxo5zpzJyus0pO Oa4OAZ7uKIpJJrwIbUeAEBEDRflJfE66RADvBtpJaNLB2dG6wU4+tL5IZQec qL37/0xQhz2ofWwj8h4CrKmqngAMCt8RCpq8bihStFNoiQKNIksmThXyqBO0 o6gghc9BdQB4aOOonf3Y7HQA2/6ZYfcv5ejVMGd4Fxj9vVjicfDfbLIzuZJP qMmoclgNXpc9FICxg0MNOEE+NbW2Unt3lqCO/KAAA4O1trU2NjfXNjRA5IPw QWKQpkYfwRgMpcCoQ0POVcp2SkWpQi5rLvNplyDYLEMsoB/4QPXBrMT2pD1Y OI6w2S9ZPBoZgA/SgSIRD8KbFUsdpARvBdwLEYXXwUtJLSaVw0awFPT7SiJ4 cUjxmob6xpZm1tj9/1LjJ+Rg2yMr8kkfBUisur4+WlMNRxIFDoyZfB6IMdhK scWI1g1zmaciqwLTRXxAK6mD0AjSQAjAHsCGGsxWSFGJILdCdkdKVDqP3aJ5 7w7PLFr43TATOynosh007uWye+cCwEgQySJxEA4cN2QjVcACvqgAEpHNSSEy BkbKkoth9cgmlkat2GxQ2Cwal93k9YCXvCWR4opotLq6qr4Or9zU2oLX33UW Tifm2N2JsTaqxJrJSgEYhdKqSjjXvpKwozhg9nv1HqfKaZPZzKgsvlFXpFPD buYqpSAKuFFgBoI3XmGnDSX8RoGHk7BBgAGZUCrig1UAQtwSCzC1OIOASwiI hqSgq4HYZNzLRShgP0VEvkaE82lsCoAxBBIgVKhVcvUagUkP0ya3mZFJqEez nwDJUxIORstg48pra+DTwYuBW3eWmk7+QTHWTjHW1opaQLuGpaisrSmrqgKb BcpKPJFiezAAp8ngcWlddqXDCrChTkUmPfCGKuZoATkluwJaCm0G4AEDMKk7 pXshxKKIn8YGijQaADMSUybKkktwL1IAcpAaCJOrU4M5BSYdgA1jDbENowa9 bfS6kRlwLDKG7IGRSqsrK2prASToJdi45rbWtrY2+HSUms4i6pQfHVTWDWkg NJgSkABqMFJRDk7wl0bgmzuLg5AuFr/P5HMbvG7wBoyp2mmHQoZJBRKAQECC BkBRgr8kGOkZGYLNjGgKuxVwhdiDCdO5HXqPC9oP4LEF/Y7iIPADQRiMlkIg gVShkarq6moaGpCxxpYW+Cat7W2sfdt1FkNnytGJNDR+UnkgAtQjwAbrSfFW XV9XVVcLdwBqrayqEjYItQ+iC5WXAX6BslL4ofC/EIANaDkS8IM9g0uIgGiI HK6I4kbcDuQgKSQI04zE8QiwEB7XxEKohTARBdFZLvpfO1CZu9k5+buov0lc TsJvbe3EAoHlEIABOAiQysADAswTG1rgltLf9DwiNLdSwBDMsAasjU2qAzwd 6GERdBZD/2+P3Z0U14mFff/b/dg3wqnO/ul1/B+i4VFe "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag[ "Byte", ColorSpace -> "RGB", ImageSize -> {182.62337147700916`, Automatic}, Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}], "\<\"Calculation of LineBundle cohomology \ done:\\n-----------------------------------------------\\nTotal number of \ line bundles: 10\\nNewly computed: 3\\nTotal time needed: \ 0.136 seconds\"\>", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { RowBox[{ TemplateBox[{"\"h\"","\"\[Bullet]\""}, "Superscript"], "[", "\<\"2,8\"\>", "]"}]}, {"487"}, {"0"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Superscript["h", "\[Bullet]"]["2,8"]}, {487}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Center}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableDirections -> Row, TableAlignments -> Center]]]], "Print", CellChangeTimes->{ 3.511674804624566*^9, 3.511858743597471*^9, {3.5118607830133247`*^9, 3.511860795774675*^9}, 3.5119464833143463`*^9, 3.513497708722228*^9, 3.514092157990073*^9, 3.5151636425874095`*^9, 3.515224587297429*^9, 3.51522469885681*^9, 3.5152282670979013`*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "Example"}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"2", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Calculate", " ", "the", " ", "equivariant", " ", "line", " ", "bundle", " ", "O_S", RowBox[{"(", RowBox[{"5", ",", "3"}], ")"}]}], ",", " ", RowBox[{"where", " ", "the", " ", RowBox[{"Z", "^", "2"}], " ", "action", " ", "is", " ", "a", " ", "signflip", " ", "of", " ", "x7"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"CohomologyOf", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Bundle", " ", "specification"}], "*)"}], " ", RowBox[{"\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", "AmbientSpace", "*)"}], "P111113", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Remaining", " ", RowBox[{"Data", ":", " ", "CompleteIntersection"}]}], ",", " ", "LineBundleCharges"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", "}"}], ",", RowBox[{"{", RowBox[{"5", ",", "3"}], "}"}], ",", RowBox[{"{", RowBox[{ "x1", ",", "x2", ",", "x3", ",", "x4", ",", "x5", ",", "x6", ",", RowBox[{"-", "x7"}]}], "}"}]}], "}"}], ",", "\"\\""}], "\[IndentingNewLine]", "]"}]}]], "Input", CellChangeTimes->{{3.515224598415065*^9, 3.5152247311456566`*^9}, { 3.51522503664113*^9, 3.515225043271509*^9}, {3.515225073986266*^9, 3.5152250743432865`*^9}}], Cell[BoxData[ TagBox[ TagBox[GridBox[{ { GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 EB+P8WUIdUh02CYwFUenVtgtzuIQdQDJ9lbH6dvhMKTt7R398IAWWIvDfps1 mccp0KqOHVqkK9ViTtebVgy7c8Oy2RyXR2Azc6y2HXz+2oE9tqZtK3I6pS47 3Sr5oosuevqF51Hd191wQ3xmmopd8g8uwtXHn36KLu289LLLPhz5JZBABnSy M+7s3Gfs5WGv4XF3/+Pey3r0uPqaa5DC1ddeO/TNN4CiO+6++4abbtpRkKMJ egYMGXzt9dfPWbwArsp+uCIffXPr+TbrirXKTcN6zH2Z+bYnM+ZZZhxw1ffc D3s+NPa5Ht/2ZcYNOGdC33PefuKR4XetUL98c/6rzKv3XvzFY8wUROvPjO7N TH2BWTaQSX2DUX7I6Bb0TxZ6D6us6DwuRzioYsFD1KbbFiJbTjVZQn5HJIS2 7y4Ny47to0LssLKOrt6CpmLNnxWgIl+FO+pehSOBFvnECTGItTWekjC0Flev RlWSL/+q5LyjGejpxlTmbKVs0buPrBlxd8aQCze+esOq4X//ZfJXy9/+9+rh d+UOOW/tsNsWD707KTMxUyq6pMsSwvc+/9QcjdAUuEbtv9mN3W646cbn+vWl a4Q//makORqmuxg90/uFCTN/XJ+SiPhQaA89/hj9XgNQui0/G7iiCwa35GRq Q77HniKbPU75dU4yt6ArrtjRZBO00OYcx4RZkQWvDpnTi3nxQeYrAImGPudM 7c3MGMBMHcC89Ujfrx+emj38hmWDmOXvMdnTmN8GMRP6MOP7Md/1Zr556paR Tz41t9896z5+e8VK6eY8j8RhFNtNoKCDBYBK6bYXV5b7o6X4IXUQsqptbKhu qDcGvIAWcBWtrQbq/mKfGHsXGbYQC2D+MsjcEq3KCU21l6mORasf4iAyvrWl qr7OVxrReVwCoy5DxGe3qRHzjH8RWkKriWPQJiyfveHPqfGvXrd23NDNy2dv TozfvGzm2t/GbRl08bqZXyQsnZUvF6YJ+eCrCy+8kO5Weumlly6KW0c3+120 YS0506PHtrxse3V00uxZDNk75XbIqoFDX2HY7S8GjxgGEwl7qvK5wO13sDuR fvP9eGNpMd4CiIWF3ZaXBVzRrdim/f7LfrhiuweNKVzr5mz77CXFn3/l+2nI qH497/us3xVjXmBGPs+M788sepnZ8QbzxWMfPHfP5NmvnD97ELNqMCMfz7Qn MKXfncf7GHp+4CuPTPj46akLnnsnYWlOorQ4V20XWEwar8NWHLCHgwcPIdAR 7F1Dc3OANXnmoK+ptQW40vvdpqAPuALMtN32cD5CmsJfWJ9kPmc7Jw9GkG/U aV0OcAikddNx0lSHg1ZrdX1dIFpq8LrFFrLiFYY4QyzgdE4g+QsvJfV5C5ye dcNv37Jspry0jGzCGQzsVMg3vHhx8s5ERSQMFU311XnnnQd4PPzEYyw73ZQh 5htLQvPZ7fWuvPpqiCVnbcUvSxfhvzfdeisSx5l3Pv2Y7hRx0y03E2c56B0y YjhLYs+TTcxCPni4SBk2NImT56iO0k0gu/NVJ8HqYQo5OmOBzpooLp341u9r hz5R8Mk5RZ8zsi+ZzDcvmvn8K6/887MPezNjhjLrhjE73+6R9e6d2959+I/3 Bkz9oteMMf9ZO+lKyWgm8OUVW1MlMp8N3iUkEzgHAgl0dIgQqapALbe0tZbX 1Wq8zuOFK+r6QWomcgsQclUykdmg97j8pSWVdbXHxfs7kgNPwavVNjaGK8ut Qb/cZoaTCIOYCJuo/os2kUzb0+sWD70jfsl0iZesxBc7rOn8wsX9Lt+Rukni dlDdTq0VSCldxINGYthvUoC6OToV3TfsH/fd9+ZHH9DtakFQ6qD3o5FfTZ4z a9y0KQy77wEeNL9zj8f/PPxQn0EDPx8zCmYUQgtn+g4aOHL8uL9dTPbLmrdm ZSInj8J1P93OZlgv9nq4ip2L3r164lOPLH7pjvjXH3XOvj1per8NH98x5gmm 9/PMd6/dumhQ3/mv95k16l8zplz586xz5v/MzJ/N/DqdmfI5o93IWDf3W5UY ggUUsSOPMqdF7rQeNLiswFKwoqykuhLggY6CG9jQ0txhB1lcVdbXabqtdT0s qFCAmRIBdf0KdSqp1WQJeIvLo/RrSoedq3Acj927d+GJUIyl1ZXO4qDaCbml SRPyQFyZEiHy+RfEPF4whZNLttPpnJZJltMWZNGpxcBVKr8ItQ+DBfffVFY8 c/5c4AdS6rW339QW+5Zt2njrHbdTwIB5evXtna9RgM9vvvVWehJi/usJ3yHN +x74zyU4Lr2UbqnxRK+n9eHApNkzr7z6qph469mrF/KwJWcnot16xx1kA1jW DkoceqlLL3YYxE6TWJ6VM+5fycOZhOHMpGeZhx/8x+uvTtIZHm/kMpOeYQb0 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 "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag[ "Byte", ColorSpace -> "RGB", ImageSize -> {182.62337147700916`, Automatic}, Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}], "\<\"Calculation of EquivariantLineBundle cohomology \ done:\\n-----------------------------------------------\\nTotal number of \ line bundles: 7\\nNewly computed: 2\\nTotal time needed: \ 0.351 seconds\"\>", TagBox[ TagBox[GridBox[{ { InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"h\"\>", "\<\"+\"\>", "\<\"\[Bullet]\ \"\>"], Subsuperscript["h", "+", "\[Bullet]"], Editable->False], "[", "\<\"5,3\"\>", "]"}]}, {"25"}, {"0"}, {"0"}, {"0"}, {"155"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{ "Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Subsuperscript["h", "+", "\[Bullet]"]["5,3"]}, {25}, {0}, { 0}, {0}, {155}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"h\"\>", "\<\"-\"\>", "\<\"\[Bullet]\ \"\>"], Subsuperscript["h", "-", "\[Bullet]"], Editable->False], "[", "\<\"5,3\"\>", "]"}]}, {"11"}, {"0"}, {"0"}, {"0"}, {"250"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{ "Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Subsuperscript["h", "-", "\[Bullet]"]["5,3"]}, {11}, {0}, { 0}, {0}, {250}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[BoxForm`e$, TableDirections -> Row]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Center}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableDirections -> Row, TableAlignments -> Center]]]], "Print", CellChangeTimes->{3.515225075248338*^9}] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[{ RowBox[{"ClearLineBundles", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "Example"}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"3", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculate", " ", "the", " ", "tangent", " ", "bundle", " ", "cohomology"}], "*)"}]}], "\[IndentingNewLine]", RowBox[{"CohomologyOf", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Bundle", " ", "specification"}], "*)"}], " ", RowBox[{"\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", "AmbientSpace", "*)"}], "P111113", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Remaining", " ", RowBox[{"Data", ":", " ", "CompleteIntersection"}]}], "*)"}], "CompleteIntersection", ",", "\[IndentingNewLine]", RowBox[{"(*", "Type", "*)"}], "\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Optional", ":", " ", RowBox[{"Verbose", " ", "Level"}]}], "*)"}], "\"\\"", ",", "\"\\""}], "\[IndentingNewLine]", "]"}]}], "Input", CellChangeTimes->{{3.494673711367155*^9, 3.494673837736596*^9}, { 3.494674395342661*^9, 3.494674408865369*^9}, {3.49467444476342*^9, 3.4946744908791285`*^9}, {3.4946745452574635`*^9, 3.494674551212555*^9}, 3.4960354648432455`*^9, {3.4960356219306583`*^9, 3.4960356225631685`*^9}, { 3.4963966660933447`*^9, 3.49639667687351*^9}, {3.4964003203369727`*^9, 3.4964003377897406`*^9}, {3.496402531578437*^9, 3.496402535350995*^9}, { 3.4964030977171326`*^9, 3.496403098057138*^9}, {3.496403171678269*^9, 3.49640317303329*^9}, {3.496403210353863*^9, 3.4964032595646186`*^9}, 3.496410520328642*^9, {3.496467448661693*^9, 3.496467469114507*^9}, { 3.496480275231206*^9, 3.496480276956232*^9}, {3.513502402466695*^9, 3.513502409842117*^9}, {3.515163668038865*^9, 3.5151636978905725`*^9}, 3.515224735365898*^9}], Cell[BoxData[ RowBox[{"{", RowBox[{"{", "1", "}"}], "}"}]], "Output", CellChangeTimes->{3.5151636984006023`*^9, 3.515224596173937*^9}], Cell[CellGroupData[{ Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>", RowBox[{"\<\"r\"\>", " ", "\<\"\[CirclePlus]\"\>"}]], Subsuperscript["\[ScriptCapitalO]", "S", "r" "\[CirclePlus]"], Editable->False], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]], TagBox[ TagBox[GridBox[{ { StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"k=1\"\>", \ "\<\"n\"\>"], Subsuperscript["\[CirclePlus]", "k=1", "n"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"D\"\>", "\<\"k\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18]}, { RowBox[{ RowBox[{ SubscriptBox["\<\" \[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", "\<\"1,3\"\>", "]"}], "\[CirclePlus]", TemplateBox[{RowBox[{ SubscriptBox["\" \[ScriptCapitalO]\"", "\"S\""], "[", "\"0,1\"", "]"}],RowBox[{"\"\"", "\[CirclePlus]", "5"}]}, "Superscript"], "\[CirclePlus]", RowBox[{ SubscriptBox["\<\" \[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", "\<\"1,0\"\>", "]"}]}]} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[1.2]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {3}]]], TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]]}, {"2", "62", SubscriptBox["A", "49"]}, {"0", "0", SubscriptBox["A", "50"]}, {"0", "0", SubscriptBox["A", "51"]}, { RowBox[{"2", " ", SuperscriptBox["\[Pi]", "5"]}], "0", SubscriptBox["A", "52"]}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ TableForm[{"", Style[ Subsuperscript["\[ScriptCapitalO]", "S", "r" "\[CirclePlus]"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{ Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["D", "k"]]], FontSize -> 18], CirclePlus[ Subscript[" \[ScriptCapitalO]", "S"]["1,3"], Superscript[ Subscript[" \[ScriptCapitalO]", "S"]["0,1"], CirclePlus["", 5]], Subscript[" \[ScriptCapitalO]", "S"]["1,0"]]}, TableAlignments -> Center, TableSpacing -> {3}], TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {2, 62, Subscript[$CellContext`A, 49]}, {0, 0, Subscript[$CellContext`A, 50]}, {0, 0, Subscript[$CellContext`A, 51]}, {2 Pi^5, 0, Subscript[$CellContext`A, 52]}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]]}, {"60"}, {"0"}, { RowBox[{"2", " ", SuperscriptBox["\[Pi]", "5"]}]}, {"0"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {60}, {0}, { 2 Pi^5}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ TableForm[{"", Style[ Subsuperscript["\[ScriptCapitalO]", "S", "r" "\[CirclePlus]"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{ Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["D", "k"]]], FontSize -> 18], CirclePlus[ Subscript[" \[ScriptCapitalO]", "S"]["1,3"], Superscript[ Subscript[" \[ScriptCapitalO]", "S"]["0,1"], CirclePlus["", 5]], Subscript[" \[ScriptCapitalO]", "S"]["1,0"]]}, TableAlignments -> Center, TableSpacing -> {3}], TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {2, 62, Subscript[$CellContext`A, 49]}, {0, 0, Subscript[$CellContext`A, 50]}, {0, 0, Subscript[$CellContext`A, 51]}, {2 Pi^5, 0, Subscript[$CellContext`A, 52]}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {60}, {0}, { 2 Pi^5}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{ 3.4992567740035424`*^9, 3.4994898590430183`*^9, 3.50182039933175*^9, 3.501853400247272*^9, {3.513502402833716*^9, 3.51350241042815*^9}, { 3.5151636568672266`*^9, 3.5151636985976133`*^9}, 3.515224596389949*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ SubscriptBox["\<\"T\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]], TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]], TagBox[ TagBox[GridBox[{ { StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", \ "\<\"l\"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18]}, { TemplateBox[{RowBox[{ SubscriptBox["\" \[ScriptCapitalO]\"", "\"S\""], "[", "\"1,4\"", "]"}],RowBox[{"\"\"", "\[CirclePlus]", "2"}]}, "Superscript"]} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[1.2]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {3}]]]}, {"0", "60", "146"}, { SubscriptBox["A", "68"], "0", "0"}, { SubscriptBox["A", "69"], RowBox[{"2", " ", SuperscriptBox["\[Pi]", "5"]}], "0"}, {"0", "0", "0"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ TableForm[{"", Style[ Subscript["T", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["S", "i"]]], FontSize -> 18], Superscript[ Subscript[" \[ScriptCapitalO]", "S"]["1,4"], CirclePlus["", 2]]}, TableAlignments -> Center, TableSpacing -> {3}]}, {0, 60, 146}, { Subscript[$CellContext`A, 68], 0, 0}, { Subscript[$CellContext`A, 69], 2 Pi^5, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { TagBox[ TagBox[GridBox[{ {"\<\"\"\>"}, { StyleBox[ SubscriptBox["\<\"T\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"\<\"\"\>"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.5599999999999999]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Column], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableAlignments -> Center, TableSpacing -> {1}]]]}, {"0"}, {"86"}, { RowBox[{"2", " ", SuperscriptBox["\[Pi]", "5"]}]}, {"0"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ TableForm[{"", Style[ Subscript["T", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {0}, {86}, {2 Pi^5}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ TableForm[{"", Style[ Subscript["T", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{"", Style[ Subscript["\[ScriptCapitalE]", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}], TableForm[{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["S", "i"]]], FontSize -> 18], Superscript[ Subscript[" \[ScriptCapitalO]", "S"]["1,4"], CirclePlus["", 2]]}, TableAlignments -> Center, TableSpacing -> {3}]}, {0, 60, 146}, { Subscript[$CellContext`A, 68], 0, 0}, { Subscript[$CellContext`A, 69], 2 Pi^5, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ TableForm[{"", Style[ Subscript["T", "S"], FontSize -> 18], ""}, TableAlignments -> Center, TableSpacing -> {1}]}, {0}, {86}, {2 Pi^5}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{ 3.4992567740035424`*^9, 3.4994898590430183`*^9, 3.50182039933175*^9, 3.501853400247272*^9, {3.513502402833716*^9, 3.51350241042815*^9}, { 3.5151636568672266`*^9, 3.5151636985976133`*^9}, 3.515224596472954*^9}], Cell[BoxData[ TagBox[ TagBox[GridBox[{ { GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 EB+P8WUIdUh02CYwFUenVtgtzuIQdQDJ9lbH6dvhMKTt7R398IAWWIvDfps1 mccp0KqOHVqkK9ViTtebVgy7c8Oy2RyXR2Azc6y2HXz+2oE9tqZtK3I6pS47 3Sr5oosuevqF51Hd191wQ3xmmopd8g8uwtXHn36KLu289LLLPhz5JZBABnSy M+7s3Gfs5WGv4XF3/+Pey3r0uPqaa5DC1ddeO/TNN4CiO+6++4abbtpRkKMJ egYMGXzt9dfPWbwArsp+uCIffXPr+TbrirXKTcN6zH2Z+bYnM+ZZZhxw1ffc D3s+NPa5Ht/2ZcYNOGdC33PefuKR4XetUL98c/6rzKv3XvzFY8wUROvPjO7N TH2BWTaQSX2DUX7I6Bb0TxZ6D6us6DwuRzioYsFD1KbbFiJbTjVZQn5HJIS2 7y4Ny47to0LssLKOrt6CpmLNnxWgIl+FO+pehSOBFvnECTGItTWekjC0Flev RlWSL/+q5LyjGejpxlTmbKVs0buPrBlxd8aQCze+esOq4X//ZfJXy9/+9+rh d+UOOW/tsNsWD707KTMxUyq6pMsSwvc+/9QcjdAUuEbtv9mN3W646cbn+vWl a4Q//makORqmuxg90/uFCTN/XJ+SiPhQaA89/hj9XgNQui0/G7iiCwa35GRq Q77HniKbPU75dU4yt6ArrtjRZBO00OYcx4RZkQWvDpnTi3nxQeYrAImGPudM 7c3MGMBMHcC89Ujfrx+emj38hmWDmOXvMdnTmN8GMRP6MOP7Md/1Zr556paR Tz41t9896z5+e8VK6eY8j8RhFNtNoKCDBYBK6bYXV5b7o6X4IXUQsqptbKhu qDcGvIAWcBWtrQbq/mKfGHsXGbYQC2D+MsjcEq3KCU21l6mORasf4iAyvrWl qr7OVxrReVwCoy5DxGe3qRHzjH8RWkKriWPQJiyfveHPqfGvXrd23NDNy2dv TozfvGzm2t/GbRl08bqZXyQsnZUvF6YJ+eCrCy+8kO5Weumlly6KW0c3+120 YS0506PHtrxse3V00uxZDNk75XbIqoFDX2HY7S8GjxgGEwl7qvK5wO13sDuR fvP9eGNpMd4CiIWF3ZaXBVzRrdim/f7LfrhiuweNKVzr5mz77CXFn3/l+2nI qH497/us3xVjXmBGPs+M788sepnZ8QbzxWMfPHfP5NmvnD97ELNqMCMfz7Qn MKXfncf7GHp+4CuPTPj46akLnnsnYWlOorQ4V20XWEwar8NWHLCHgwcPIdAR 7F1Dc3OANXnmoK+ptQW40vvdpqAPuALMtN32cD5CmsJfWJ9kPmc7Jw9GkG/U aV0OcAikddNx0lSHg1ZrdX1dIFpq8LrFFrLiFYY4QyzgdE4g+QsvJfV5C5ye dcNv37Jspry0jGzCGQzsVMg3vHhx8s5ERSQMFU311XnnnQd4PPzEYyw73ZQh 5htLQvPZ7fWuvPpqiCVnbcUvSxfhvzfdeisSx5l3Pv2Y7hRx0y03E2c56B0y YjhLYs+TTcxCPni4SBk2NImT56iO0k0gu/NVJ8HqYQo5OmOBzpooLp341u9r hz5R8Mk5RZ8zsi+ZzDcvmvn8K6/887MPezNjhjLrhjE73+6R9e6d2959+I/3 Bkz9oteMMf9ZO+lKyWgm8OUVW1MlMp8N3iUkEzgHAgl0dIgQqapALbe0tZbX 1Wq8zuOFK+r6QWomcgsQclUykdmg97j8pSWVdbXHxfs7kgNPwavVNjaGK8ut Qb/cZoaTCIOYCJuo/os2kUzb0+sWD70jfsl0iZesxBc7rOn8wsX9Lt+Rukni dlDdTq0VSCldxINGYthvUoC6OToV3TfsH/fd9+ZHH9DtakFQ6qD3o5FfTZ4z a9y0KQy77wEeNL9zj8f/PPxQn0EDPx8zCmYUQgtn+g4aOHL8uL9dTPbLmrdm ZSInj8J1P93OZlgv9nq4ip2L3r164lOPLH7pjvjXH3XOvj1per8NH98x5gmm 9/PMd6/dumhQ3/mv95k16l8zplz586xz5v/MzJ/N/DqdmfI5o93IWDf3W5UY ggUUsSOPMqdF7rQeNLiswFKwoqykuhLggY6CG9jQ0txhB1lcVdbXabqtdT0s qFCAmRIBdf0KdSqp1WQJeIvLo/RrSoedq3Acj927d+GJUIyl1ZXO4qDaCbml SRPyQFyZEiHy+RfEPF4whZNLttPpnJZJltMWZNGpxcBVKr8ItQ+DBfffVFY8 c/5c4AdS6rW339QW+5Zt2njrHbdTwIB5evXtna9RgM9vvvVWehJi/usJ3yHN +x74zyU4Lr2UbqnxRK+n9eHApNkzr7z6qph469mrF/KwJWcnot16xx1kA1jW DkoceqlLL3YYxE6TWJ6VM+5fycOZhOHMpGeZhx/8x+uvTtIZHm/kMpOeYQb0 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 "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag[ "Byte", ColorSpace -> "RGB", ImageSize -> {182.62337147700916`, Automatic}, Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}], "\<\"Calculation of TangentBundle cohomology \ done:\\n-----------------------------------------------\\nTotal number of \ line bundles: 46\\nNewly computed: 13\\nTotal time needed: \ 0.297 seconds\"\>", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { RowBox[{ TemplateBox[{"\"h\"","\"\[Bullet]\""}, "Superscript"], "[", SubscriptBox["\<\"T\"\>", "\<\"S\"\>"], "]"}]}, {"0"}, {"86"}, { RowBox[{"2", " ", SuperscriptBox["\[Pi]", "5"]}]}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Superscript["h", "\[Bullet]"][ Subscript["T", "S"]]}, {0}, {86}, {2 Pi^5}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Center}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableDirections -> Row, TableAlignments -> Center]]]], "Print", CellChangeTimes->{ 3.4992567740035424`*^9, 3.4994898590430183`*^9, 3.50182039933175*^9, 3.501853400247272*^9, {3.513502402833716*^9, 3.51350241042815*^9}, { 3.5151636568672266`*^9, 3.5151636985976133`*^9}, 3.515224596487955*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "Example"}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"4", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Now", " ", "Calaculate", " ", "the", " ", "full", " ", "Hodge", " ", "diamond"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CohomologyOf", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Bundle", " ", "specification"}], "*)"}], " ", RowBox[{"\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", "AmbientSpace", "*)"}], "P111113", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Remaining", " ", RowBox[{"Data", ":", " ", "CompleteIntersection"}]}], ",", " ", RowBox[{"vector", " ", "bundle", " ", "charegs"}], ",", " ", RowBox[{"vectorbundle", " ", "constraints"}]}], "*)"}], "CompleteIntersection", ",", "\[IndentingNewLine]", RowBox[{"(*", "Type", "*)"}], "\"\\"", ",", "\"\\""}], "]"}]}]], "Input", CellChangeTimes->{{3.494674336166752*^9, 3.4946743511119814`*^9}, { 3.4946745553951197`*^9, 3.4946745590526752`*^9}, {3.4960354921786656`*^9, 3.496035498901269*^9}, {3.4964000023870893`*^9, 3.496400021769887*^9}, 3.4964105579267197`*^9, {3.4964674971499376`*^9, 3.496467507370095*^9}, { 3.496474600229039*^9, 3.496474604354103*^9}, {3.4964748371176777`*^9, 3.496474838282696*^9}, 3.515224738055052*^9}], Cell[CellGroupData[{ Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"k=1\"\>", \ "\<\"n\"\>"], Subsuperscript["\[CirclePlus]", "k=1", "n"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"-D\"\>", "\<\"k\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>", RowBox[{"\<\"\"\>", "\[CirclePlus]", "\<\"r\"\>"}]], Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], Editable->False], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "61"], "0", "2"}, { SubscriptBox["A", "62"], "0", "0"}, { SubscriptBox["A", "63"], "0", "0"}, { SubscriptBox["A", "64"], "62", "2"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-D", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 61], 0, 2}, { Subscript[$CellContext`A, 62], 0, 0}, { Subscript[$CellContext`A, 63], 0, 0}, { Subscript[$CellContext`A, 64], 62, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, {"0"}, {"60"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {60}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-D", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 61], 0, 2}, { Subscript[$CellContext`A, 62], 0, 0}, { Subscript[$CellContext`A, 63], 0, 0}, { Subscript[$CellContext`A, 64], 62, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {60}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853425840165*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", \ "\<\"l\"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"-S\"\>", "\<\"i\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18], StyleBox[ SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"0", "0", "0"}, {"0", "2", SubscriptBox["A", "80"]}, {"0", "0", SubscriptBox["A", "81"]}, {"146", "60", "0"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-S", "i"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0, 0, 0}, { 0, 2, Subscript[$CellContext`A, 80]}, {0, 0, Subscript[$CellContext`A, 81]}, {146, 60, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, {"86"}, {"0"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0}, {2}, { 86}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-S", "i"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0, 0, 0}, {0, 2, Subscript[$CellContext`A, 80]}, {0, 0, Subscript[$CellContext`A, 81]}, {146, 60, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0}, {2}, {86}, { 0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853425932667*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"k=1\"\>", \ "\<\"n\"\>"], Subsuperscript["\[CirclePlus]", "k=1", "n"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"-D\"\>", "\<\"k\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>", RowBox[{"\<\"\"\>", "\[CirclePlus]", "\<\"r\"\>"}]], Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], Editable->False], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "133"], "0", "2"}, { SubscriptBox["A", "134"], "0", "0"}, { SubscriptBox["A", "135"], "0", "0"}, { SubscriptBox["A", "136"], "62", "2"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-D", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 133], 0, 2}, { Subscript[$CellContext`A, 134], 0, 0}, { Subscript[$CellContext`A, 135], 0, 0}, { Subscript[$CellContext`A, 136], 62, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, {"0"}, {"60"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {60}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", "n"][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-D", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 133], 0, 2}, { Subscript[$CellContext`A, 134], 0, 0}, { Subscript[$CellContext`A, 135], 0, 0}, { Subscript[$CellContext`A, 136], 62, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {60}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853426005168*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "\<\"1\"\>"], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i", \ "\<\"n\"\>"], Subsuperscript["\[CirclePlus]", "iFalse], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{ RowBox[{"-", SubscriptBox["\<\"D\"\>", "\<\"i\"\>"]}], "-", SubscriptBox["\<\"D\"\>", "\<\"j\"\>"]}], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>", RowBox[{"\<\"\[CirclePlus]\"\>", " ", TagBox[ RowBox[{"(", "\[NoBreak]", GridBox[{ {"\<\"r\"\>"}, {"2"} }, GridBoxAlignment->{ "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], "\[NoBreak]", ")"}], Function[BoxForm`e$, MatrixForm[BoxForm`e$]]]}]], Subsuperscript[ "\[ScriptCapitalO]", "S", "\[CirclePlus]" MatrixForm[{{"r"}, {2}}]], Editable->False], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "187"], "0", "1"}, { SubscriptBox["A", "188"], "1", "0"}, { SubscriptBox["A", "189"], "0", "0"}, { SubscriptBox["A", "190"], "576", "1"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "i 18], Style[ Subsuperscript[ "\[ScriptCapitalO]", "S", "\[CirclePlus]" MatrixForm[{{"r"}, {2}}]], FontSize -> 18]}, { Subscript[$CellContext`A, 187], 0, 1}, { Subscript[$CellContext`A, 188], 1, 0}, { Subscript[$CellContext`A, 189], 0, 0}, { Subscript[$CellContext`A, 190], 576, 1}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "\<\"1\"\>"], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, {"0"}, {"575"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18]}, {0}, {2}, { 0}, {575}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "i 18], Style[ Subsuperscript[ "\[ScriptCapitalO]", "S", "\[CirclePlus]" MatrixForm[{{"r"}, {2}}]], FontSize -> 18]}, { Subscript[$CellContext`A, 187], 0, 1}, { Subscript[$CellContext`A, 188], 1, 0}, { Subscript[$CellContext`A, 189], 0, 0}, { Subscript[$CellContext`A, 190], 576, 1}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18]}, {0}, {2}, { 0}, {575}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.5018534265601764`*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ TemplateBox[{"\"\[CapitalLambda]\"","2"}, "Superscript"], "[", InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", \ "\<\"*\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "*"], Editable->False], "]"}], StripOnInput->False, FontSize->18], StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "\<\"1\"\>"], StripOnInput->False, FontSize->18], StyleBox[ TemplateBox[{RowBox[{"(", InterpretationBox[ SubsuperscriptBox["\"\[ScriptCapitalE]\"", "\"S\"", "\"*\""], Subsuperscript["\[ScriptCapitalE]", "S", "*"], Editable -> False], ")"}],RowBox[{"\"\"", "\[CirclePlus]", "\"r\""}]}, "Superscript"], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "193"], "0", "0"}, { SubscriptBox["A", "194"], "2", "4"}, { SubscriptBox["A", "195"], "0", "0"}, { SubscriptBox["A", "196"], "575", "120"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18], Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18], Style[ Superscript[ Subsuperscript["\[ScriptCapitalE]", "S", "*"], CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 193], 0, 0}, { Subscript[$CellContext`A, 194], 2, 4}, { Subscript[$CellContext`A, 195], 0, 0}, { Subscript[$CellContext`A, 196], 575, 120}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ TemplateBox[{"\"\[CapitalLambda]\"","2"}, "Superscript"], "[", InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", \ "\<\"*\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "*"], Editable->False], "]"}], StripOnInput->False, FontSize->18]}, {"0"}, { RowBox[{ RowBox[{"-", "2"}], "+", SubscriptBox["A", "195"]}]}, { SubscriptBox["A", "195"]}, {"455"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18]}, { 0}, {-2 + Subscript[$CellContext`A, 195]}, { Subscript[$CellContext`A, 195]}, {455}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18], Style[ Subscript["\[ScriptCapitalQ]", "1"], FontSize -> 18], Style[ Superscript[ Subsuperscript["\[ScriptCapitalE]", "S", "*"], CirclePlus["", "r"]], FontSize -> 18]}, { Subscript[$CellContext`A, 193], 0, 0}, { Subscript[$CellContext`A, 194], 2, 4}, { Subscript[$CellContext`A, 195], 0, 0}, { Subscript[$CellContext`A, 196], 575, 120}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18]}, { 0}, {-2 + Subscript[$CellContext`A, 195]}, { Subscript[$CellContext`A, 195]}, {455}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853426592677*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ RowBox[{"\<\"\[ScriptCapitalE]\"\>", "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", \ "\<\"l\"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False], " ", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"k=1\"\>", \ "\<\"n\"\>"], Subsuperscript["\[CirclePlus]", "k=1", "n"], Editable->False], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{ RowBox[{"-", SubscriptBox["\<\"D\"\>", "\<\"k\"\>"]}], "-", SubscriptBox["\<\"S\"\>", "\<\"j\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", \ "\<\"l\"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False], " ", TemplateBox[{RowBox[{ SubscriptBox["\"\[ScriptCapitalO]\"", "\"S\""], "[", RowBox[{"-", SubscriptBox["\"S\"", "\"j\""]}], "]"}],"\"\[CirclePlus]r\""}, "Superscript"]}], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "235"], "0", "0"}, { SubscriptBox["A", "236"], "0", "0"}, { SubscriptBox["A", "237"], "0", "0"}, { SubscriptBox["A", "238"], "2122", "292"}, { SubscriptBox["A", "239"], "0", "0"}, { SubscriptBox["A", "240"], "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18], Style[(Subsuperscript["\[CirclePlus]", "i=1", "l"] Subsuperscript["\[CirclePlus]", "k=1", "n"]) Subscript[ "\[ScriptCapitalO]", "S"][-Subscript["D", "k"] - Subscript[ "S", "j"]], FontSize -> 18], Style[Subsuperscript["\[CirclePlus]", "i=1", "l"] Superscript[ Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "j"]], "\[CirclePlus]r"], FontSize -> 18]}, { Subscript[$CellContext`A, 235], 0, 0}, { Subscript[$CellContext`A, 236], 0, 0}, { Subscript[$CellContext`A, 237], 0, 0}, { Subscript[$CellContext`A, 238], 2122, 292}, { Subscript[$CellContext`A, 239], 0, 0}, { Subscript[$CellContext`A, 240], 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ RowBox[{"\<\"\[ScriptCapitalE]\"\>", "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18]}, {"0"}, {"0"}, {"0"}, { RowBox[{"1830", "+", SubscriptBox["A", "239"]}]}, { SubscriptBox["A", "239"]}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0}, {0}, {0}, {1830 + Subscript[$CellContext`A, 239]}, { Subscript[$CellContext`A, 239]}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18], Style[(Subsuperscript["\[CirclePlus]", "i=1", "l"] Subsuperscript["\[CirclePlus]", "k=1", "n"]) Subscript[ "\[ScriptCapitalO]", "S"][-Subscript["D", "k"] - Subscript[ "S", "j"]], FontSize -> 18], Style[Subsuperscript["\[CirclePlus]", "i=1", "l"] Superscript[ Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "j"]], "\[CirclePlus]r"], FontSize -> 18]}, { Subscript[$CellContext`A, 235], 0, 0}, { Subscript[$CellContext`A, 236], 0, 0}, { Subscript[$CellContext`A, 237], 0, 0}, { Subscript[$CellContext`A, 238], 2122, 292}, { Subscript[$CellContext`A, 239], 0, 0}, { Subscript[$CellContext`A, 240], 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0}, {0}, {0}, {1830 + Subscript[$CellContext`A, 239]}, { Subscript[$CellContext`A, 239]}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.5018534267826796`*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", \ "\<\"l\"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False], " ", RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"j=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "j=1", "l"], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{ RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "-", SubscriptBox["\<\"S\"\>", "\<\"j\"\>"]}], "]"}], "]"}]}], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ RowBox[{"\<\"\[ScriptCapitalE]\"\>", "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ RowBox[{ SubscriptBox["\<\"\[CapitalOmega]\"\>", "1"], "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18]}, {"0", "0", SubscriptBox["A", "253"]}, {"0", "0", SubscriptBox["A", "254"]}, {"0", "0", SubscriptBox["A", "255"]}, {"1948", RowBox[{"1830", "+", SubscriptBox["A", "239"]}], SubscriptBox["A", "256"]}, {"0", SubscriptBox["A", "239"], SubscriptBox["A", "257"]}, {"0", "0", SubscriptBox["A", "258"]} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"] Subsuperscript["\[CirclePlus]", "j=1", "l"][ Subscript[ "\[ScriptCapitalO]", "S"][-Subscript["S", "i"] - Subscript[ "S", "j"]]], FontSize -> 18], Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18], Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0, 0, Subscript[$CellContext`A, 253]}, {0, 0, Subscript[$CellContext`A, 254]}, {0, 0, Subscript[$CellContext`A, 255]}, { 1948, 1830 + Subscript[$CellContext`A, 239], Subscript[$CellContext`A, 256]}, {0, Subscript[$CellContext`A, 239], Subscript[$CellContext`A, 257]}, {0, 0, Subscript[$CellContext`A, 258]}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ RowBox[{ SubscriptBox["\<\"\[CapitalOmega]\"\>", "1"], "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18]}, {"0"}, {"0"}, { RowBox[{"118", "-", SubscriptBox["A", "239"], "+", SubscriptBox["A", "256"]}]}, { SubscriptBox["A", "256"]}, { SubscriptBox["A", "239"]}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0}, {0}, { 118 - Subscript[$CellContext`A, 239] + Subscript[$CellContext`A, 256]}, { Subscript[$CellContext`A, 256]}, { Subscript[$CellContext`A, 239]}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", "l"] Subsuperscript["\[CirclePlus]", "j=1", "l"][ Subscript[ "\[ScriptCapitalO]", "S"][-Subscript["S", "i"] - Subscript[ "S", "j"]]], FontSize -> 18], Style[CircleTimes["\[ScriptCapitalE]", Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18], Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0, 0, Subscript[$CellContext`A, 253]}, {0, 0, Subscript[$CellContext`A, 254]}, {0, 0, Subscript[$CellContext`A, 255]}, { 1948, 1830 + Subscript[$CellContext`A, 239], Subscript[$CellContext`A, 256]}, {0, Subscript[$CellContext`A, 239], Subscript[$CellContext`A, 257]}, {0, 0, Subscript[$CellContext`A, 258]}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0}, {0}, { 118 - Subscript[$CellContext`A, 239] + Subscript[$CellContext`A, 256]}, { Subscript[$CellContext`A, 256]}, { Subscript[$CellContext`A, 239]}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853426862681*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ SubscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i"], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{ RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "-", SubscriptBox["\<\"S\"\>", "\<\"j\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18], StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "2"], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ RowBox[{ SubscriptBox["\<\"\[CapitalOmega]\"\>", "1"], "\[CircleTimes]", InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", "\<\"l\ \"\>"], Subsuperscript["\[CirclePlus]", "i=1", "l"], Editable->False]}], " ", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", RowBox[{"-", SubscriptBox["\<\"S\"\>", "\<\"i\"\>"]}], "]"}]}], StripOnInput->False, FontSize->18]}, {"0", SubscriptBox["A", "259"], "0"}, {"0", SubscriptBox["A", "260"], "0"}, {"0", SubscriptBox["A", "261"], RowBox[{"118", "-", SubscriptBox["A", "239"], "+", SubscriptBox["A", "256"]}]}, {"487", SubscriptBox["A", "262"], SubscriptBox["A", "256"]}, {"0", "0", SubscriptBox["A", "239"]}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Style[ Subscript["\[CirclePlus]", "i 18], Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18], Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0, Subscript[$CellContext`A, 259], 0}, {0, Subscript[$CellContext`A, 260], 0}, {0, Subscript[$CellContext`A, 261], 118 - Subscript[$CellContext`A, 239] + Subscript[$CellContext`A, 256]}, {487, Subscript[$CellContext`A, 262], Subscript[$CellContext`A, 256]}, {0, 0, Subscript[$CellContext`A, 239]}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "2"], StripOnInput->False, FontSize->18]}, {"0"}, {"0"}, { RowBox[{ RowBox[{"-", "369"}], "+", SubscriptBox["A", "262"]}]}, { SubscriptBox["A", "262"]}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18]}, {0}, { 0}, {-369 + Subscript[$CellContext`A, 262]}, { Subscript[$CellContext`A, 262]}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Style[ Subscript["\[CirclePlus]", "i 18], Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18], Style[CircleTimes[ Subscript["\[CapitalOmega]", 1], Subsuperscript["\[CirclePlus]", "i=1", "l"]] Subscript["\[ScriptCapitalO]", "S"][-Subscript["S", "i"]], FontSize -> 18]}, {0, Subscript[$CellContext`A, 259], 0}, {0, Subscript[$CellContext`A, 260], 0}, {0, Subscript[$CellContext`A, 261], 118 - Subscript[$CellContext`A, 239] + Subscript[$CellContext`A, 256]}, {487, Subscript[$CellContext`A, 262], Subscript[$CellContext`A, 256]}, {0, 0, Subscript[$CellContext`A, 239]}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18]}, {0}, { 0}, {-369 + Subscript[$CellContext`A, 262]}, { Subscript[$CellContext`A, 262]}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.5018534268901815`*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[ScriptCapitalQ]\"\>", "2"], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ TemplateBox[{"\"\[CapitalLambda]\"","2"}, "Superscript"], "[", InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", \ "\<\"*\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "*"], Editable->False], "]"}], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ TemplateBox[{"\"\[CapitalLambda]\"","2"}, "Superscript"], "[", SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], "]"}], StripOnInput->False, FontSize->18]}, {"0", "0", "0"}, {"0", RowBox[{ RowBox[{"-", "2"}], "+", SubscriptBox["A", "195"]}], SubscriptBox["A", "266"]}, { RowBox[{ RowBox[{"-", "369"}], "+", SubscriptBox["A", "262"]}], SubscriptBox["A", "195"], SubscriptBox["A", "267"]}, { SubscriptBox["A", "262"], "455", "0"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18], Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18], Style[ Superscript["\[CapitalLambda]", 2][ Subscript["\[CapitalOmega]", "S"]], FontSize -> 18]}, {0, 0, 0}, { 0, -2 + Subscript[$CellContext`A, 195], Subscript[$CellContext`A, 266]}, {-369 + Subscript[$CellContext`A, 262], Subscript[$CellContext`A, 195], Subscript[$CellContext`A, 267]}, { Subscript[$CellContext`A, 262], 455, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ TemplateBox[{"\"\[CapitalLambda]\"","2"}, "Superscript"], "[", SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], "]"}], StripOnInput->False, FontSize->18]}, {"0"}, { RowBox[{"84", "+", SubscriptBox["A", "267"]}]}, { SubscriptBox["A", "267"]}, {"0"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subscript["\[CapitalOmega]", "S"]], FontSize -> 18]}, {0}, { 84 + Subscript[$CellContext`A, 267]}, { Subscript[$CellContext`A, 267]}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subscript["\[ScriptCapitalQ]", 2], FontSize -> 18], Style[ Superscript["\[CapitalLambda]", 2][ Subsuperscript["\[ScriptCapitalE]", "S", "*"]], FontSize -> 18], Style[ Superscript["\[CapitalLambda]", 2][ Subscript["\[CapitalOmega]", "S"]], FontSize -> 18]}, {0, 0, 0}, { 0, -2 + Subscript[$CellContext`A, 195], Subscript[$CellContext`A, 266]}, {-369 + Subscript[$CellContext`A, 262], Subscript[$CellContext`A, 195], Subscript[$CellContext`A, 267]}, { Subscript[$CellContext`A, 262], 455, 0}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Superscript["\[CapitalLambda]", 2][ Subscript["\[CapitalOmega]", "S"]], FontSize -> 18]}, {0}, { 84 + Subscript[$CellContext`A, 267]}, { Subscript[$CellContext`A, 267]}, {0}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.5018534269201818`*^9}], Cell[BoxData[ TagBox[ TagBox[GridBox[{ { GraphicsBox[ TagBox[RasterBox[CompressedData[" 1:eJztXQd4FcXaXvu1YO9dr9579V67YsFCFRREAXvvoiAXBAEBKYIVkN5bSOjp Cek5Ob333vvJOUlOem/A/85OcgiEKv3+7DPkOezOzs7OvPN+7zdt7/r0v8M/ PY9hmHH4J8M/8nvP2eOQx+7du/d0C/Q41Vk7e5ymB4XHrl272nG0kaO1tbWl paW5pRlHE3s0IjQ2NjQ20r/0BzlwmsZAVNzR0oJbcTsSaWcPJLv7LAL/p48O 8LS1o+IBA2Cjrr6+ura2qqa6oroqWllRVlFRUl4eiUaLo6WhstJgaUmgJILg Lwl7I2FfhPz1hosRfOx//QiIUBpBTMQPRcvC0bJIebS0oryssiJaVYlkK2tq 8Ijaujo8q4HFIIs9Arxd7bt2s6g71QVz9jiag0URqg8k0tDYUFNXV1ldDfCg 3ovLSoEHTzjkDAZsfq/J49I57WqbVWkxyUwGiVEn0muFOg1fq+ZrVDyNkqtG UBSpEOR7g1rBJUGJCIgp0Klxl9igQwoKq0ltt+pcdqRs9XudoYAnXIwnAnvh 8mhJBYVcNcEbBVtzU0trC6W4szA7DQ/UC9igvqGhuramvKqypDwaKikBvTgC frPHpXXYFGajSK/hqZVFSjlHKUPgqhRCnVpm1KusZr3TbvV6nEE/bgmUlBRH y0o6mSdaVVVeTUJlTTUC/ltWVVlaWYEI4WgUfOWLFLuCQavPY3A51DaL1KRH sgBeoUKaL5fkyyQFCin+i6fLLUat027yuh1BP/AWKCUPQlJIvKq2hiINRhWc RszoWZidkmP3bhQ+jBoMDYAUiZbBNgEYQBGpXKNeqCWVW6SU8VQKiUGHk0CO L1xcVllZXV8Pm9QGS9Q1vT17du3Z07Jnd9Pu9ob2trr21trWlurW5orWpvKW pvKmBoQoDc2NOFPNXq1ua0HM+l1tjbvbcW/Lnj2t+Lt7d9Ou9vrWlsqG+pKq Sl9JxOL3ghXFBi3ojoBNDrDJeBqV2KgHvwFpzlDQVxImeK4sB8xAaHUNDbCd FGMslZ2F2Qk8YDIgmatqakrLy4MlEVcwYHI7YcUIimChlDJwhcZmcQR8EDxV tbVo/xDQ9N7dLGwAAyCkuLbaVxm1l4bN4aAh5NP43QqPQ+aySZ1WicMispsR hDaTwGpEELJ/BVYDG4xdAxvTJHZYJE6L1GWVu+0qn0sb8BqLA9aSYldFmb+m MtJQW97cCATWAqttLdXNTdG6mmB51B4MqO02vk4NmOVKRaA1mFSlzczCLADr CdMJbqxkqQxuAgiZYKzzdc4ex3js3rUbzba2vg6GCVhyBvwGp11uMgi0ahg1 0JHSbHT4fTBMQFHsrvY9e0A7gFCwptJRFjEW+1Vel9RlE7Fo4Zn1PJMOgcv+ pYFv1h8sCCyGruEQMXldEiQBJy0Goc0ocVrlHrs24DFHQsBbqK462gm2yubG 4qpKWyigsJoh3nKl4jyZmKtRSs0Gg9vpCAX9pSXhcpbH6mrrGxvgfhLxfxZg f+lA2wQ1VVZXhctK3aGA0eWQmfQ8QkpyqUFn8bihw2Es4FnR+OCiiqaGQHWF raRYF/CAfEAmXSG0Fzn7guQkhP1R1wE2QnRKr9MQ8jvKS4K11WXNjQBbaX2t vyJq8ntFRh0Ali0WcpRymdlgBI8Vh4JlpSWVFRXwNQmJEUNJvMuzYuxwB5oh XHLACcIbLKS1WUU6DRe8pFZqrBbwVUNTYyxyQ1trSX2tK1qiC3oBJIoi7imF 0NGCrQP2LCWKHWaYY2M44K6MhmE9W5rKGus90VKlw8pRKwCwPLlEqNdqnHY7 DGVpCcQYBRj8yrMMdsADLQ4ivKK6Csix+7wqi4kP714hk5v0nuIQdGzMP6pr awnVVFpLQiqvU2w3AzldueiUo+W4II1v0cN0Quxpg157NBKoqwbMAtWV1uKg 2GzIJSQm4KqVKrvVGvD5SiORChZgDQAYMZFn6WsPa+/q6usjZWXOANjJItSo ACeZQecJBcHzNE7bnt3ljQ3u8jKt3wPbETNtZzqQjgBj5B1hMeERwBdgeawO 2sxcHBAa9dkSIQJfq9Y4bI5QIFBWCp1fVVcLSm/5/2ofCUE1NUUrK3zFIYPD LtKqOQqp3KgPRML1jR2WDt56uLbKEg4q3PaYUjojsWQ18q1mvs2CvwKL8a9h jL44KFrtc1nLwt6aSm91BQqHAEwsyJEIYSINHpcrHIIjWV4do6//Lz2ueM2G xsaSaJnT74UrB4eOr1aa3M6a+noaoXX3rpK6GmskBMnUYebOYBsHRJlEeplM XaRQ5Eq0IqFJgzN/OcGYbgTAVCzAfDWV4DGV25GvkO4U8TkqucpusQX9lL5q 6utA+/+TxjH2Ru27dtXW1oZKIha3S6zVcORSlcUMt452MbXv2RNtqIM3B84X sHA6Y7G0F1QCi14tTbXo+XYD1549y1i4TKcTyLU8vuWvQ6srwAR7GSziqoya w0GR2bBTzIfIF5v0Rp/HWxKG/8gaR9Z5/N/S9nid2ro62Dij08EqKKneYauq q6NX4dYFqyqgnSAkYm74qYbEcQiwekp5pkEncphyXaJZLt5EF+d7hzzOZVfK NdxjYa3uABNaic7Xky6LUltZRGozZ4mFWWKBgDWOnkgY2p5Kr1Z4jrvPeHQB UTW1dYFwWG+38ZRyvkrpDgWoIN9NCKoeBCV1WfmnAUEJrQhGEdvBLjweoJLo BDJxlkmX4ZVN8yi/96oneZQ/eKQzPXaexSQWGFV/QWsdBmAWg8hmUnqd5pIQ GEzlcebKJRkCLler0rkdbkgvoKuW5S5YxjONu2KGDzoKVs/osAtUCq5C5gz4 8Tp72JG40rpaU3EAHH6aaCfASeIwK1w2tcchc1oldjMZvjmWNG1mqTSTK8x3 KX7zqsZ79QijvbqJHsUEt3aVySyX6MXHi7K6AwyZh5wwhAMQYEqXPVsqArr4 OrXe46SWEbqLqPozZB5FLJPNzc2R0lKLy8lXKUBTnlAQnu8eVpMHqyv1Aa+Q 9e9OB0QJCFMZ5U6rNRQIV1UEK6KhiqjO5wa0jvR2NgXhvkRHutOFidkFKS7l d17Dtz7blz7Hx17bKI/uW7dqkkqZI9VyWffwRL0UW7YdnWCmSEjhtOWw6CKW 0ev2lkSg6uEzNre0tO87BH+6HRRUMHwVVVVOn1eq03BkErPbiZzvYWV5uKZK B0RBRJ02iKIBtGkMeGsaG4LlZZaQv6axvqS6Uum2i46MsoAlqcOi8Tjxdy/L 2awyaVJK+haLaprfPNLvHRcsnu5zjfYZR5qVv/AF2VK94ITiqgNd7F+gSxPw GMNBsdWULuBCd0ktRkvAF4yWVtTWENHV2noaElcsQ3X19f7ikMpkBKJ0dhvt OoDVi9RWG4I+kdV0evaKw/D5y0thFJyRYr3PU1pT1dLWagp4xXZip4josiGY DhYQDSCMVFWagl6Zw0qhBczIjIK0lDXcwnlBC3A1PRDJ9jtHew1jCjibRfxN Iov2+OqrQwa9gBX2QJc24OUbtGn8olyZWOWw2sHSFeXVdcQsnlbTC2lOkKVo ZQUMH6QUQqQ8Sq9WNTVYI6HTR0cdMChdNmAJ5sARDmq9TpAVWNceDsIUAlEw kRBdGq/zYAG3gO4iVRUVdTUstCw0WZHdwuNv25CwxK4a7zN/63Ys95u+Uoln Z2euUWtS+FbryX9TYF7mssEyKt2OHJkY6OLr1Uav21caKa+prm9sPB36Ivbq 84YGXyioMOoLpWK7z4uGj5P1rS2usgiogN9h6089fg6OK3u0ppriStOJK0ck BCUPOgLAwEU4eYgQra2ubqhv29WOHxD/cC1Jylaz1KLYtnVRRtL0gPVPly/H o5mWmjRfzl8ltBlPIlntH0Ssqtf43UKzAYorWyKUW82EuMqjVM+3nzpoUVDh b2VVlc3t4ivlQrUSmN/DmsWS2hqSbavxNEcUDUBCSTXLV5GQ1usCTvDbXhxg +cqEq2Aknc+l87s7An53+a/e7zYHfdD8VQ11kGesyupImW+zqRTbLblj/X6+ t9QqkexIiPtDYeTzrZZT/takx97rUnqc8BZTeRyBXgPiCpSVsIrr1HTR0yeC M8OlJRqzCTRl9XooTdW1NNsixRKH5fSUUgcMsFzesgjy7y4tNgY80dqaptZW g98jtpmEHfrqoOIKAfBTuR1Aoznkh9Hsqvb5VpPYqHDmTPN7JK4Sp0yQyEud J7KdMqbaL9DeVKXXyTfqUriFuTKR2mlzFgdLqyrrGhtaTqJNjC2IA1t6gwGZ Xlskl4bKSulV0JTW7xacITQVC8APOKeyvg6cA8qqbWosrixnzdmR+YMQLQ6L we+G0e+GGdLzoCqYqxb/qZQv1/LmqPkrTwey2uf17WTel9hmhquYKeTBVbQF /eGKKO2FOAnQiq2xrKmtdXg9PIVMotfS6QfN7W3uaInUATV15o3CUGAAWmAt X7TEVVKsJuV8pJ2WB+y/2nvVZs4UFgrkXIffmsvLzpELRUec8sksAanThnaR I5eAuPh6LWxisKy0qq62qYX4iScUVPRHdU2N2ekokkk0Vksr+8TaliZjyA93 +8yiqf0KFuYM6IIhg0CiFvC4pCyyA1d8nlzuChdn83i5CulpiCtaAiAuucte oFYkc/I5aoXe44KfWEmXn6CiT4Dc6gTV7mhFucFuK5CIbD4vvUQkus8tOO2d viMqW3aU8PimCRSR2XdyqSsUyBPy81Vy4WmJq1huobiKdOoUbkGeQqpx2j2R MNyxRjLV+TizVoypyisq9FYLQOUpDtIzxdVVCrfjlJfGGRAMmlyxQAqdf4zD jic+iKwEWjyDNqkoP0cmVjvt7khxBQst0nF6XEGFv2Xl5TqrGa6fL1yMM+27 d3vLy+Qu2/8ATZ3wmrKZUFCmoNcY2NshfzoHahOLDBporRzSLW8DtMo7oXUc cVVRWam3WsFUgdISCipPeZmU7Uw45YVw+gcoN3s4WFlfW15XC+/g9OlnOESg 0OIaNImFeZ2sFa6srWlqbt51bNDa3en/VVZVmez2ArHIHQrhv227d7mipcT1 OwuqI6ogMiodrIjC03REQnqf6/Q3hbEApi3UqpKKCvLkEkDLWxKpALRajqlD noKqvr7e6nJypGK737eHHUT2VkTJAquzoDqyAFzBfw9WlLlLwrCG8JpPfzvY NQBaBRrFjsLcApVM53H6y0qq6+ub/+r8h47Oz6Yml8/HlUu1NgsFla+yHKLu LKiOPMRw5WQHHM8sUHW8gsWYo5AkcvK5WpXB6w6Vky7TvzC1JjZFwV8ckmjV Io2KjtFE6mrkLvtZUB1dpXTF1RHPFTytAu3vzRQLkrkFQqPeGvSVVFXUNzW1 tbcdNa7gAEajanYmVW1jA05WNDWova6zoDr6SjnjcSVgKYtr1CZzC9MFXLnN 7CgOltdWNx7NzAdKVrV1dZBV+WKhO0S6qhrb2/VB/yl/uzMrxMaslS57qCLq Kikmo9K2M0xf7X0dq7FAo0zk5OUppRqX3V9WWt1Q39J2RNaQxmhpbfEGAyK1 Umky4C6YQGe0hM72POVvdwYF6glaQ35LyF9aXRkoL7MWB0wB7+k5jnMkAQDI kokALZ5eY/Z7w5Xl9U2NbW2Ht4asBdzT2QUqqmMtYKS+Vuo82f2f8A4QTnlJ Hksgg7kOi7s0XF5XU9fUWNPYEK2tthb76fTm4/aUk4tSrgHWsCBdyIM1dIZD bLfDYeY80Dkw9Q0NTp+XI5WY3E7WAraRGdEnBVR0OpA64FF4nSm8wu35OWdu 06aB9LQ7rbZwqKW9vba5yRTyy/adoPWXg8RhUfndSt8pULy5SumOwrxCtULn cYbKy2obGloPOQlwN7tpZ7i0VG02FUjFjew6Gk9l+cnRAxRUgNO03355tl/f Hpdf3nvgALnHfgrn6x5jkLhsYq+H5/YIHE65yyW0WPK02gKzhety47wYALOb xY6j5mRgCe0O9ujXZYsHjxj+bL8+UNQnswHical8biq/SGIxOkKB8prqQ1AW Jau6+nqHz1skl9oCpBe0uqVFeVJ8QBQLntJ/8EvnnUe+gkGPJ597lqNXnYmU BczwPZ7teVkbfp+QOn5Q7lcP5n94R97bN2S/eV32Z/cnT3xlw8Ifk3icDKUi lc858mYrZHc0HT3pe5TM1ddeQ0vp+htvSBfxxCfT0zQb8lTybQU5+SqZ1u0M RktrGw9KWTgJAVZSVqa1WihZIZKjvJTMUT/xWaUL2Jdt2ogSi+HqkSef2CkR nNQSO/YXAU35PKli4ZrJ72cNucT4EmMcwBS+xCS/e2fi5w8nfvSvrFcu0vRj dIOYzGGXJ464bdmnzxbZyS5MR1hKMH/D332b6XLccNNNm7MzTnIpkT4HXiEa hdRqAmV1qqwD4WrXrvqGek8wwFPKFWYjztS0tsrdJ7UXVBvyJRUVXHjRRbTE /vPwQ0lF+RLH6TVr99D1LvR6N8avSB5xs2Ew4xnOZL16WcIf47bnpGXr9AVW W57ZkiwUJKz4Ofmt212vMd7XmG0f3Z9n0B259sYjYAfjM9NuvPlmWkrXXn/d msStJ7+UsuXi7QW5HI0SKqu4IlrX2NjWbTyakFV7W7Si3OJ25Qj5oWgpVVYn OausvuJcfMkltMT+9Z9/b83deabgCkwl8nrWLPs5d+C5zuGM83Um8bXrErZv EPs8EpeddluRSQIOqyQY3F7E2THiJs9rzPZ3/56tVohsR8E2SEQT9D7R6xla Sldfc83ShLiTX0qFOlViUf5OiVBus3gi4aq6utZufVl097xgJKIyGwul4ub2 tsZd7SfNDYwF4Cq5qCCGq3/cf9+m7AyJ84SX2HFxTCQe1+bEjXkvned4nbG9 wRQOuWDz+vkyx4EBI/V5N27fyHv5vIy3bsiUiUVHY8Xonh5PPPM0LaUrr756 0YZ1Jx9XPJMOug72RWDUWQK+0urKxpbm/dQ73Z8KRpCvUigtJpwJN9RKDje9 SuayqQJutB0aFF7HwSqI7JDpcagDHk3Ii4AfKJnukQ+Aq6x0idMqtBnhAXU+ xXmILJHlfp0xEdQBt8xtO1hkscNMXfX9KkXmttOs4tJ+mSR1ihcJ7n8VwMjS 6hLeucc5jDG/wRhfZdZ93UekEQrpjjFWg8S5z+oeFIgwFN74bf/EfkwqVPe+ GUB+kDjygOLtXlDdcbVww5ruuGITcSIRBPzoGoGuej52SZajkEK9F6jlOrcz FC0jfaT7mkIo9vLKSpvXA8XuCRcDc7ayyCESRNmi+rbmZk35dc7H34z8aOSX /50yefnmBGRe2m0GKS3/NYnbvv1h4juffYLI38+asSEtGZEBxUPjCopUFw6g 1iDpvx4/7tPR3yzeuJ7c1Q2TeAQKkGvQLIpb9/WEce98+vEno76e9tsvW3Iy kVUZuwdgRyASxQls5KpkPy9ZOHDokI++/opGwHvhUkJm2tipP+C94MhL2ZGX zrtcQOn6lB1jpkzC1T9WLpN1rgUTez3rFk2Xv8RY3mRsbzJ5g89PXDVLatEK rDB/pGkn5mdxdCoaGX+L9OpUbkFaQWb88tmF2r0z3klT9bvhrfy2fMnYaT/8 +MdvcWnJyBvJXmepHhZXpGsr4N4pFS5Yv2b8jGko7YUb1mZKBCzAXGhuaKrb 8qD1+UfFk90LHKZwe2EeTKHCDlNYXF1f19LFK8QPsq1QtMzgtOeKheW1NQ27 dmn8noORFbK3KSuj/5CXyacxu3QL4Hj6hefThVxAq4MQ7Ga84Py1q+5/8AFc 7XHF5VddfTWNee655z7+zNMbUpPwmgfD1X0P/CeRkzdv9QoIrdgjzjnnnGm/ /4I8xO5CPvFElPzkn2ff+fe72aK+6rLLe9D48AIGvDJ4R2Eu6ouWBnwZFPiI 99+9/sYbaZzHn3kKKeiK/UBU30EDu77R+198BlgqPA6Vz4XaeezpJ7te/eb7 8Sp2WXe+1Rb/2eP2YYzpDcb+OrNtxA2FmRsoIMVOWwY3b2Wfv23ZslriIWQr djsyMjat7H9pmqBIFgzE6AhJQQkPeX3EFVdddcVVV/ZgXwEl/MKA/iiHWBs8 BK5QFGga+WrZB19+ftU119DX75Bh1177xdhvocQ+HPnlQ489etHf/vbjH78C ZseCK5RkErcwhc8RW4z2oB/IaW5t2d25GSDcw4aGhmBJRGUx5UqEdS3N0eam g02ygmWZ+tvPl1x6KbL6xofvA/MbM1Ke6PV0rKiffO5ZKCI6ixVt/LW336Tn J8z8sVCr4Jq0yzZvvOdf/6Qn/3bxxRNnz6Q13h1Xt95xxyM9n8Cz7rr3nhgG cFx22WXb8rNjozxSlzVPJev94gBcuvSyy+auXsHRqxHANpdfeUVnqV6D5+JB KP8MEf+2O+/oCo+nnn8OVYzXueTSS66/6cZrrruu69WV2zejWnv16Y22cNMt t1x+xRWxS+dfcMGGtCSFz5UmEaUPvwqIAq4sw5hN7/1TwE8X2C1EAISC4J9t /c/dnpygKCmBhpcXh3PyErcPugh34SolK6D312VLACck+59HHs5VSvEKw97p 6FK48ZabUwVFtMEeAlegu2Ru4V33/J1eGjVxQpZcjDb15HO9mG7Htz9MIhrj GLQlEAKJlcjJ5xm0Jp+7pKqy6wyHXe27ampr/eFiiV5bKJc27Gr311Yf0PNF vaCyaK5uuf22PLUMdQrqAMP/5+GH6Pnb7rqzQKsEweI87As9+eLQIVLWoKMJ 6yPBhJ1pF154Ib107rnnrdqxRcmqpv1wdcEFF/QZ9OKKbZsKdUp4tU8+v7dr 69vJE2n7pV8DifV6vffFp2iDpB/bbjaWhuYsXhC7BVW2oyAXtIaraGjvff5p 7NItt9122513Iv0VWxOKDOosmejxp5+KXX3g0YfR2J/t13ddyg6eWYdquuue e2JXv/purCroTeXmF7x2MeQ6cGV6jUn46EGhNF/odOTJRZuWzlj323cpL52/ eurHm1f8tCUpfsvyn+J/+iJ18EVrfh2XsHRWnlKK+gWKbrjpJprmu599ogn5 UNrJ3L29Lu9/+TmwR53KA+IK5xGh/+CX6fn7H3ogX6NA4WhDvm15WRd1poNG 9Pl/v33sqScn/jTj2CdX7JSJSG8D2WeS9DZAYsUWVkBcVdVUe4tDAo2Sq5LX 7WpzlJd2TwE5R+Vec921NHsDhgxGFdBcQXXkqeUjx48bPGLYnCULiowavOD6 lMTzzz+fRh49+XtojFjPuSbgGfL68FjVPPjYo2Qkwm7eD1f/vP9+VCUu4Sko HAin2C2Dhw8jZWIzofAhRWLnZ8z/I1ZWpKvH6+za0drv5UFSVhEpYXHyc2LZ A+Sg/XKUEtZHMMEgzluzMnYXXnnKbz+j3oFJeBCGSHDiTzP35mTEMGjyNF5B fieuCF+9/y++tEDscUNBrXjtzlWv3c555dy1r926YsQ9c6eMXD38rg3DbuUM PXflsLsWDbsnpTBb7nOlC3mw3bD4sFbrU5PwFlAIMAfUNOB4rn/fQrbBHgxX CBBRPS6/nJ5/vn+/HIVExLZlgUV/970dbeH2u+4EfxJISIW0bI8FVzlKSPfc fJVM7bQHykjHe0y6t7a1VlRVeYqDXKWcr1FVtreaIqEDWUDPzPl/xMoTzNB1 WIoOg5I+ASuhR5QJJHos8uhJ++AKMSG/Y1fPO/+8pZs20s+0ddftnYravjE9 BeKKXnq2b28UMtFvfnf/wS/Fkpo+73dxl03zkI3pc3+LXb32+uvAAAAP0ty0 Mx1WjJ6/78EHtuTuFHR2OECirEveEbvrqeefBdtTohCwbghUSuwqxA/XqMtU yNOGX+Ng7aB9BLMV+oqXKXRYoQQKLZYdXE58/wvit6wtcrr5VnOhzZ6cvnXL S5ds5RQW2W005SK9JmFnOseg1gQ92mI/3gusjhbXNRuADX27A+IKtgNGMMZL T/R6BjwgZnGIeoFt7Wwm18Wlpcjop82OAVG0uMAn2wtzc+QShcPqK43UNNS3 trfFtoUpr6p0hQIwgnytKtrarA/5u4srKKtX3ng99pqgZcTZL2+xbQpQNT07 O+5wfDDyi/1AmCkW9OgiVCbPmUUmxkAeHKifgeIKIj+GK7AQGiOVWPf88x+x dL6bPrUrrpAN0Oa555xLr15y2aXLNsd3x9W99/0riVsQczdw19qk7bE0H32y Z5ZUKOmUc6Di5ZvjY1d79e0Ndcd1uTd+9aztVRZXbzLZL52XvGWZhF2xK3U7 0otyt/RitsQvkfk8ZHjd696ZvnHrC0xyQbYyFIDior4e6SEJeYHhyT//1PPZ XpdedileM1YaMM2pfI7k4Lhi8WN9qlMt3HDTjSm8QqSJyCj8WP/8c/36onEd l1FX4rBoFMAVlIPcZvZEwnAJYwOFLS0twJUzFCiQS3gaVbipHnaqO66Qw2f6 vBArz+HvvdMdV7HHoY66trWBQ1+BBot1mOAurkEDQo5FgDssdphlR4wrgBbv gvho5pBGe9H+xWeSLrhCBNg7+D70KlT9n+tWkV0IuuEKyjyGnP1w9XDPxzPE vJgjj3JY1gVXz/R+AbZAEfSvX/WHZCBjfZMxv8lohzBrJ70hdsPbIiPFeQrx sh8+TOdk09kLIoc1m5e7fOqnuWrFlpTNW1O3EpUIg2U1fj5mNJxBhoi6R8Dh 2/KzYnbwkSd7ErI9OK5I3jyOLTmZsQY74r13YL5hKWJCF6oYXi1I5njhClaD dDVIhTKb2R0prtoXV1EWV4VySaFK7qutUvvd3XEFZob8jpXn088/V6RXH4Cv 2DOI3O/lvebpH/fdh2YYqxp6173/+he9CmkKgU07644QVyhV4EpCKM760OOP xR4EUcoz7SXG/QzrtTdcD2WOiu7OV4fC1ROPZ4gOiqunez9PmNNlyzUaN37y qO01lrLeYNKH9kgtypW4nQL2w0kij4ftLKKlSs7IwpHk/Kzk55kVY18Ver1I AVKNpnn/g5DcchhcAGkvrno+QUZLnYfCFWoNd4Gm3vr4oyvZLh14r9fdcAM8 2Xv++c+Pvxm5Jmk72PV4TXwiM5O1yh2c/J1SkcxqcoX3x1V5VZWrOFikJF8f dldXqH0HwBW0CqxMrDzh+KeRrqq904dQmxDwoFwBK8am/f5LLPIFF14IQYX6 isXkGbUxnoG8gbeOoj5yO8jiSgiTh1x9OXZM7EHXXHstSjVm0fADLN3FFXoW +BEfLa56Hh5XSFPqcW3bmZw16Hzn64SyzEOZdV/3zbHYJF27ZDsDbF+WyRr3 xTPq/szGlb8qi4PIQMyPILaA7fbPFPPBsfQkzDF5NbZnALiKyYyrrgGu1tLs kY8I20y/LF0EzQkf9oUXB8yY9ztQl5CVlq8mva/kC3THbzYdxRX4Kovgyuze D1etrRXVVe5wiKdRZosF9vJSdWeHUtdAZWGs+aCKx/04Bc4R7T1AaaOlfPDV Fy++MhjvTlf3Axix8n/ptVcBNsokSp9zKzzfv5HqRmFOnDUjU8Kn/mAKt/Bv F18cw9WWnI5xZ9R1XHryXlz1epqIUoeFUByv8LIel8Ue9N8pk+HQdbSFkC/m IMDpm73ozwKNgsW/fXN25nmd9Qhc4dViA5EKVpV1xdVOqSCGKyC5qwfaq0/v XKWUmnih2w1ruHPwJfZhjO0tRvUyE/ftoBSxSOTzA0hi9rPRZLKf358qk24Y /aJxMJP96sWJhTmqgLerV9Jn4It4L2NpMdj1gk7w//vhh0gPJFvaKOrHnuxJ z8OLXLBuNS1ziA34EfT8xNkzlX6XoSSEdPThADuq5VF1G7Q6RlwBrvAHURcy Vl91xRV0e2VNtTcSFht0GXyuORI6IK5YFnJPmj0zVqQAwLTff+WZCLPBces9 cACUzDJ4dmwLBXjiM1Iv6SQfVOKsP+dqQ15UOiL0fWkgBRXYBnIU9IhiMUfD y7ckgLTpLZCa2/KzURrIvzka+blLZxQgh5YCEsONsLlzFv0Zu+uyHj2WbNyA ksSDgG1YMZzscXkPtFy47XSBDB70+4qlsdTgIm0vyEZ8+qUGXO3qRd582624 EQ2H6Em7GRU0YMjg2NX/PPwQniJjJxQJLQaxz7spZevWEbdpX2JcrzNQ8snD r1/3y9jtORnpMlmGQpFYmLv+z6nJb9xiG8q4hjEbRj7HsZGZ/Dslwhg19bj8 8j9WLf9pwTxQeozELrjwgjvv+fu81SuMpaEdhbm0O50eX44bg0JAWLopjp4B RFFEMHxwiPAuM/+cC18eCS6MWwstFGvgx44r2s+Qq5Qp7B3+YFunP9jW1lZd WxsojSispnQuR+11abuMkuyXDlrK97Om025helx9zTU33HQTqvX+hx7cmJGi 6oJJRF65bXNXAf9Iz55D33j9LrYv5dGnnkTp5allXJMOBhRl9fLw167sHOiJ NVKQAypu6JtvXNpJlfR4+oXnocmpyUNBASe3331X7Cq8npeHD7v2uutQwn0G vbhkUxwUCxQs6YWTiYa8PjxmbemBLI2dNgWsiCb/6ltvXNDZbUuP+x74T3xm Kl4H4uSJLn4uPeC1bS/IiRlficedKhLE/TQy9Z07uS8x5pcZXX+GM4jJePWy 1KE9MvszvBcY8SCGP4TJ7sPEr50r6RyaRJvtmqtb77xj2Zb4Qa8N7cAV20sM 7fHJqK/3GxGAQP34m6/RkIGZa6+/njnkgXsh4wXsWPmx4wrKCrgqUCtUTtt+ /Vft7e219fXF0TKt0w6+ElkMupDvoDMT2OFdYOCr78Y+37/fY0892fPZZ0a8 9+6ijWSqBlFQ5n3ik4n9Fj0s/hsfvg8kwM2BCXv3809Wbd8ssJIZBTRN/EgX 8mDCxv44ZcyUSV+M/RZt7dPR36AM569dBadjwszpMLvfTp74+X9x6atPvx2F q5tzMmMzAYBnVDra5tA3X0dFP/Dow0+/8NwXY8fAesLAiewd05/wA2YL7idJ 7QeSGgoZSX327SjcK2LN9+Q5P437cSp51pjR5Oq35CrSAXJA+xN/mvndjGnf TJyAuz4c+SX+IsBed52TAL9P5PVkqxSbNq9eP3tk/NiXt418ZvtXT24dOzDh p8/jV/2yeceGrckJcXFLOBpp1/HBuLTk97/84rW330L2iNVzWPDuoyZNeOez T9BwYG6EVgO06JRf53w2ZvRLw17FOz75XC/g7fUP3lufmqgN+dCQb7vzjhh7 H+x473MyMHGE81QPEdKEPOj2Ip1a53YUl0fru2xktIvMFG0oqSg3+Tw5EmG+ QqY93Bo3lDAZU+gYVyXzMQ4xSYaqL9gsMdt3h5hk+odn/+kfIrbzHDERR2hj d74lwLPQZkUv0fEsaq0k3VaBwZIqydQFW+xBaAJ0nsw+c1Ssxv1SE7CKV8IO ibJXXftcJbNcOvp76b1oPuIO/0snOFBOOt4IasrjFHncfJdT5HKKXU6+0y7y uCRel8TtIMHj3K8QYE9J4mQ9RUdvCXkpn4t+QU/Q2YeDvxy9Gg0EBAUDCrwh 5LO9B9aKklXbt1xx1VX3/PMfcCHvvvfe2++6E0hDuPGWm2PzBK68+iqy8OEY tBbygCwlcQuTeRy+kexHWlJV0XUKFqxhY3NTtLrKHgwUqRVp/CKVx3kkT4z1 goo7BgsOHI390oc5Fr/r7XQspnt8WqexOZb7PJHd2lrIXuraVdU9V0eU/84P lJD43aY5CdmciLt/24tSX+c+24d+lpDFhrOk2FUaPpLPhB0w/wcsOiRLh2/A 9mJ2SBTnR02ccPW119x+112gNchC+CNbcjLjM9NgxyF34blQpQEVmrAz7Rhx VahTwQhmiAVii8EW9LHzGVq7zpNpaWmprK2BnpeajcmcfBSF3HUA7/hgsMkQ 8rbnZqFF05eNVQRFCPRMYkEuaWXsGDFr9QgL8Yza5MK8xPwcMSmZjikQYIY8 SMHsTOpQi1nHmaZJo3V8koZNYWtWRoFGKaGL09mTYracY3Ut2vtE4ouJ9qbD /u6M3HGejRDLHo2Zyi3IkYsldE0WW49HLUtAdw6zpzTiKyvp+smA4x5ApABV THwKWBIWdwngcF3YT+UuxC247lhWMnaK9pwchVRut7jDxdX19futyoF0h8QK Rct0bmcGv4gM97gPate6BhR4QnrKotUrM4TcNB4nXyXfKeIDY+u2b8GL5Cll 2VJhQlryknVrcuUS+PhJ7Ng3KgvyeHnc+h152XgKLuEWsutgEalEnPxzxbIs iZBr0CA+YAbcIvEUTj4wDxGVq5AkFeYW6dXzli3B72SyY4CsUKMERBFwS5ZE kKuQshIdqWUV6TW4FwkipIG3C/PwN1PIQ2p4Fl4WeSZfuZIIVm2KT+UWpvOL cPvGlMRN6amALhQOMrZTzM8UkeaTIeAenTPFrqb3lpX4o6WyAxHs8QpwVN/8 8AOKq8suv3xpQpw+EqCLfCEP4MvDkVywfg0lq2Wb449x0BmqAOIqkZOPqtS6 HMFoadfJDDGJ1dDUWFpZYQ34CpWyFG6h2HYo0xYLaPjzli5G+S+LWz9/+dIl 69Yu27Bu7uJFSYV5Urdt8ZpVa7dtWb5xw9L1axEN8Fu7dXNc8o65SxfHpyYj Gskbj4PaRFX+uXwZEDh3yeI1Wzet2Ljhj0ULkdTGlKSl69YuWLl8zdbN85cv ww8ktTE5cUV83MqEjfgvngsAAKJIBI8DyGf+PGdTRipMf0pR/potm1J5hX8u X5qQmjx/GbK3ZkPi9t8XLkDKS9atBnpXb0lYsnb14tWrkBRSWLhqBcCGRyPB +cuWbNmZjjOrNydszkz7bcGfSGHx2tV4dMz1O61wBYZPExTFvO/zL7gAbu/M +XMXb1y/cMPaGfP+eOWNEX+7+OKez/ZauinuGD9aRAXedk5euognMOrMfm9p VWX31aldTGGxzGJKKSpE8z+s8QXwQBdACxr1otWrVm+Oj0vasW77VpzB7YAx qnXdti0ACaoGcAK9oNUvW79u2Yb1iAZgyL1OmEjUFDgBVQY8bM/ZiToF/AAe IGp7ThYqd2V83PrEbahc3LJ1ZwZSA2/gLiAKMNuRm4UMzPzlZ0SDqcLtoE2Z x444qzZtBEkuXrsK9+K/yzeux4/1O7at3rJp7bbNgBm4C5QFUBHyzM3CU3B1 wYrlCWkpKxPiAH5YZDwUcEU2EGdD4jZQn/iIxOfeKjg5uAJOIPvRoOA//vvh h2K9YQzb03jL7bfDfwTGJC6L9OBz/o88ZMnFMIIwH2RkMFzMrsc5wNLUtvb2 2oZ6uIp6jytXJoazILQYDysG6EdwCPJZ8NNpVLQh4C/ekbpUxJOCi8d6NB1X O7/mTKezCjr9CyG78Jlv0nf8YN0xeobeS8asWQLvSJOcMcenJYPQABUwXoFa HnMT9kmZ5qTTqwJaiLSDoGIfREV77Js+NDK9i/xmJ/nEbj98sBqK9B1zwOiX mwCqQHmZ0mUTn+CttuncIZ5Zl8wrjMtIWZeyY2NmapqQi8xTm3jswKYFm8gt gDPI1Wu0bmeoPNrdCMZMYVNzc3lNtSMUEJsMMGSAIjGFh9WZNJ+dU+m6/qaD pHvj0OmdnfK4az5jZbJP/FgcNg8xgd0Zp+PpBDZGLeQZ7X06YMo0MnUN6BnQ aQxO+3mC4m7Z67iL+IxHVPJSp35dkjNLZpG5TLbigCMSilRVlFRX4Yc9HJSe SNaigXpMbK8FWXNBevCO33YERBIrZVvzs0FZEiv5mE7nzPYDr6MHj4GygmWl UO/ZEhFc1L0lf7TvxY5VQULHmjwNsI9ZUiECpaautY+/VKt3dbRjP1AswDlc y0wRv+stMbhSH3Cv198JhlgcXIKAx+1gua5Zoj0Mex9nM0HSE3ySNkV8Q7RN OA5ds9Sl+hAOoFIkDn1ioS25yKb0mJ2REFmK0tKMUFFf6yoplnWZVX7i3MMT FChZJfM5iazzpXE5/GWlHYudD7KjTAdlVYOygqCs5KIC0sH7lxoLXDxomHRB Ub5KJma7FOAGQlhC3sBVhNRBllB3gs65WLQr6Y/FC+EPsrMddMTimPWIw2WJ COXP6rR4iHCRnUyHYHGiFrD00kE+FlgfNe4ltWY2QAiJbEaOTk2bBi4Bljty s+kGvziDREjGdGSGEo+1rYiDx8GYcg3kEuLAE8S7QL/t91D2ufpUvnWnxAIU dSsBQ47CvDXXrg2anOGS8rqa1va21vb2irpaorI6cYVo1FyeScFqyFZIthbk 4K+Y/fJXtLoaZHWILbA6KauBdjjkK2XEi9SqjvbRcJcgdVYlxAM/kDGQ6PDy oLGBK7iHEEIQ89DMkMHxqUmQyvDL0ASypSJEm7d0SVxyIgQzvDP8haJGgI8G /fzH4kVwBCDFgVhgDG4m7gWfgBUBVwh4OHdwGZauXwcVsTkjDf4pzsNfWLU5 ft22zdD50O1Q6UgWAQjBVbh7ifnZ23IykQdcgseHxOF9bGI7T3AvvAzkn3gT G9dDySPnG5J2UJsCVOSpTIviPFwjeHL/QuCZjHNX+9amFGcLA6W15S1tBFcl 1ZXGgIfuqyZx6tOFlrVJTpH9VEPliAN1A3cU5SfzOFBWGrZ7gY4JHno3SEJZ oOvaGlc4JLeZ0/hFEPBHKlY7H43m/+fyZag18A8cKEAIfj1cPziPc5csQn0B M7TPAaibPmd2KpfMmMJJoGXdjq0AAOIvXLl88ZpV+L1k7Wrq7C9YtWLh6pW0 ByCdXwQE4hZAaO7SxXDWgCskvoY4eltUATdwAtr5Zf5cXEK0eUsXgzkB0UVr VgEhbLVakzl5vy38M1sq/H3hn8gqMgN22pC4HYz640+z0niFeNa27J3I/9J1 a36ZPy9DwF24csWGpO17h5gd+iyZeUm8R+rSU2iBxECtJNiM742s+OztRJXP qPM7S2uqYQ21XpfMZZY4iQDLlpkXrPPyzYd3jk6TQH2ZDLGATGBg3UDYtQq2 j33X4bYYpbsV1Tc2RiorzH4PT69J4uRnycRH3tdBIK1TpRYVwF6gauDy5yml EE6wZajZNB4HkMiSCKBzUE2QW7BW1IsEX6Fa8aA8JYmGODCjO8X8HJkYVZ9K eiYFGUIuEkSyeARuJxNW7SZEIL8NGsSHNMJTkBoUEdLBU3AXIuOhBWoFosFb xFO4HVZPk6+W42pyYR5ymE7yQ+LQjlBchVFGBuhDAX6SjoC7X3eizKWPz3D8 scordTnlfneayM43k5M7eJ7v+sZ/2O+JTKUipcij9dvVHofUYc5R2bZyfck8 2+J4d4EWXsyZtGUr5DoZuJEIBUad0esuLo+SL/Ye2WdNSF9Wa2t1fX2grFTr csAabicLeeRHBezYeA1V1HTsA0147xgK9ew6x1kEXcZc2B8dcdjBFxMdc+k4 02VoZu+NHeMvHREgrjpidhmaoW4dfWIsn1TnxxLviNMZP+aB7n1otwE+sA3s 2tS5rsEDZ2+N/3lTun55UpkyYvt5XKH7rRue6Hn36G+np4jLJW6L0G6WB+1L V1t/+DDvh9/DBTpzd2F22gY6GriDk5/E46A5q5w2X2mk+8DNoY/2Xe1EwNfW OIuDchtZIJxYlA99e3Y/5K5B1Ek1wFWRQ/XAk8Pe+/sF6z6+Y86Xc1flRFOG jVW+zTz8wjkfPXqxLHWa0iyVWlRxG/j5H/ZN6/no9j5vb8m08MxH0I1zGgS0 HbB0mpC7nZOXp5bL2I/XRw+5/ePBSAvkBoorqaq0BnxiswEqK4UAVXPK3/H0 CRkiwntQSmSkxuMY8dWAeX3Ok0xmbFOZhSMmivo/NmUE89LzzPfPM/qfGOuk W1Z/+HbcFzevHf6I5tXrQkOvTcw1Co/rxsgnKFDBnCEhsgo+oMhsoDtsN/yl b8axvmErfEPYUFhSPvuVwzSoC4P2lL/pSQt0JrnyQDsjwYmLz3QsivfF5wcF LpcsYBr43ogvH7pVMZHZnczEDe25fMgl37zMfP4CM+V5ZtXLzKpXLp354Y2T P3ts6gf3F73P5Iwdn67yQ+oT0d7RZ3ua9mXBSGWTIZvcTImQb9TpPGRD0ZqG hth846M9du3eBaFV01DvLyvRuZ1FOlUiJz9dxCsynhpoCdn9B5TsfEI6FsbO JzwOAxMHDMRh5Bb2H/LysHfehmLfr78aNJWjcS7bYPl5VMq873PWrF7yxktX DLz3uT9eYdImXfpa36dnvMj8tx/z397MtD7MT4OYOR8yP4y+a8Lof86ezbw3 ikks2iYPBKC4eFar2EE6Vzl6CJjTyzekDiC7yVVuupjPNWg0Lrv36GVV96N9 167mlpbKulpvSQRpcjRkUU866Y4+/tAi8988bpHD2nWjJ5HXIyR7JJJVFTul wj4DX+zVp/eOwlxdsX9J/IZn+/V54plnps/9TXZUEwyOLAC3cWnJDMNccuml +Z1jjjQABslCt0iY5/35nyXjGPXHQM65X7/IvHz/s4P/fsE7D17/+Iu3TezL fNePGd+X+b4/M24wM2Ho46O/fnTJLGbh98ywT5mvJr+mlOYLlPKly9XT5wXj 0h3LN7uSiqxH6x4KWW+oY4Yh+3Wk4wwqpXR7YW6qkLjeSvarqR0dC8fw/cEY tCDPKupq3ZGwmv1Y+Q5AS8Q/vgaRjA6YjSt/HpuYuknstLF1R/ollv34RSYv X+SwSFn2oKPzm3MyC7XKq9kdSB549BG6UYOgcxs6Odz5fScGkwXOHruc3UmG /ne/EDvZCRsTe4sjPiOVLjTYD1dSp2Hp1mDQ0LdqOZP1DrNiMDOlPzN+APPe 43ffdeMNA3qe9+CL54ztz3z29L1jel/85QDmy4d6pX98n/oPJu1DZv5QZtgg ZtD9jGzahSXzb3CNvHr9mJl5Ro/YvtcROCyWYoUmsZsVbrvB79H73Ap2x57j Ai1qAkivAgEVr0gHUFld4RAdBzx2UO1hv5gDedbY0lxeUwO4qhy2Qo0S0EoV FEHGHy8PUWy35Or1qwdesWnBZKmfrNqQuOxpvPx1zzGJyRtlXhfd0vZvF198 7rnnJmSlD2B3dbv9rjtzFBK6xopubLg1N2tN4rZUHofsVkTNpcsG4K1PTdqY kZqrlOJZAAlKLE9FAn5kyUQ8ozZPJcd/6Qz2Ao0SMQHChMy0A+PKbdm4XVKq 7eGOZxb0Z2b0Zr7vA3Y658teNz9x38Nv9mY+6nPBp73uHvX8VUMf7vfdo72k z/5j5ZCLM0YxCwcwkwcyH/dlvnqCyZ/K+BYy9pEMf+R9GzNcEufhrbmoc/Iz BQ9ApfO5wlUVocpy/A2Wl6k9DvHxGF+GUIdEh20CU3F0aoXd4iwOUQeQbG91 nL4dDkPa3t7RDw9ogbU47LdZk3mcAq3q2KFFulIt5nS9acWwOzcsm81xeQQ2 M8dq28Hnrx3YY2vatiKnU+qy062SL7rooqdfeB7Vfd0NN8RnpqnYJf/gIlx9 /Omn6NLOSy+77MORXwIJZEAnO+POzn3GXh72Gh539z/uvaxHj6uvuQYpXH3t tUPffAMouuPuu2+46aYdBTmaoGfAkMHXXn/9nMUL4Krshyvy0Te3nm+zrlir 3DSsx9yXmW97MmOeZcYBV33P/bDnQ2Of6/FtX2bcgHMm9D3n7SceGX7XCvXL N+e/yrx678VfPMZMQbT+zOjezNQXmGUDmdQ3GOWHjG5B/2Sh97DKis7jcoSD KhY8RG26bSGy5VSTJeR3REJo++7SsOzYPirEDivr6OotaCrW/FkBKvJVuKPu VTgSaJFPnBCDWFvjKQlDa3H1alQl+fKvSs47moGebkxlzlbKFr37yJoRd2cM uXDjqzesGv73XyZ/tfztf68eflfukPPWDrtt8dC7kzITM6WiS7osIXzv80/N 0QhNgWvU/pvd2O2Gm258rl9fukb4429GmqNhuovRM71fmDDzx/UpiYgPhfbQ 44/R7zUApdvys4ErumBwS06mNuR77Cmy2eOUX+ckcwu64oodTTZBC23OcUyY FVnw6pA5vZgXH2S+ApBo6HPO1N7MjAHM1AHMW4/0/frhqdnDb1g2iFn+HpM9 jfltEDOhDzO+H/Ndb+abp24Z+eRTc/vds+7jt1eslG7O80gcRrHdBAo6WACo lG57cWW5P1qKH1IHIavaxobqhnpjwAtoAVfR2mqg7i/2ibF3kWELsQDmL4PM LdGqnNBUe5nqWLT6IQ4i41tbqurrfKURncclMOoyRHx2mxoxz/gXoSW0mjgG bcLy2Rv+nBr/6nVrxw3dvHz25sT4zctmrv1t3JZBF6+b+UXC0ln5cmGakA++ uvDCC+lupZdeeumiuHV0s99FG9aSMz16bMvLtldHJ82exZC9U26HrBo49BWG 3f5i8IhhMJGwpyqfC9x+B7sT6TffjzeWFuMtgFhY2G15WcAV3Ypt2u+/7Icr tnvQmMK1bs62z15S/PlXvp+GjOrX877P+l0x5gVm5PPM+P7MopeZHW8wXzz2 wXP3TJ79yvmzBzGrBjPy8Ux7AlP63Xm8j6HnB77yyISPn5664Ll3EpbmJEqL c9V2gcWk8TpsxQF7OHjwEAIdwd41NDcHWJNnDvqaWluAK73fbQr6gCvATNtt D+cjpCn8hfVJ5nO2c/JgBPlGndblAIdAWjcdJ011OGi1VtfXBaKlBq9bbCEr XmGIM8QCTucEkr/wUlKft8DpWTf89i3LZspLy8gmnMHAToV8w4sXJ+9MVETC UNFUX5133nmAx8NPPMay000ZYr6xJDSf3V7vyquvhlhy1lb8snQR/nvTrbci cZx559OP6U4RN91yM3GWg94hI4azJPY82cQs5IOHi5RhQ5M4eY7qKN0Esjtf dRKsHqaQozMW6KyJ4tKJb/2+dugTBZ+cU/Q5I/uSyXzzopnPv/LKPz/7sDcz Ziizbhiz8+0eWe/eue3dh/94b8DUL3rNGPOftZOulIxmAl9esTVVIvPZ4F1C MoFzIJBAR4cIkaoK1HJLW2t5Xa3G6zxeuKKuH6RmIrcAIVclE5kNeo/LX1pS WVd7XLy/IznwFLxabWNjuLLcGvTLbWY4iTCIibCJ6r9oE8m0Pb1u8dA74pdM l3jJSnyxw5rOL1zc7/IdqZskbgfV7dRagZTSRTxoJIb9JgWom6NT0X3D/nHf fW9+9AHdrhYEpQ56Pxr51eQ5s8ZNm8Kw+x7gQfM793j8z8MP9Rk08PMxo2BG IbRwpu+ggSPHj/vbxWS/rHlrViZy8ihc99PtbIb1Yq+Hq9i56N2rJz71yOKX 7oh//VHn7NuTpvfb8PEdY55gej/PfPfarYsG9Z3/ep9Zo/41Y8qVP886Z/7P zPzZzK/TmSmfM9qNjHVzv1WJIVhAETvyKHNa5E7rQYPLCiwFK8pKqisBHugo uIENLc0ddpDFVWV9nabbWtfDggoFmCkRUNevUKeSWk2WgLe4PEq/pnTYuQrH 8di9exeeCMVYWl3pLA6qnZBbmjQhD8SVKREin39BzOMFUzi5ZDudzmmZZDlt QRadWgxcpfKLUPswWHD/TWXFM+fPBX4gpV57+01tsW/Zpo233nE7BQyYp1ff 3vkaBfj85ltvpSch5r+e8B3SvO+B/1yC49JL6ZYaT/R6Wh8OTJo988qrr4qJ t569eiEPW3J2Itqtd9xBNoBl7aDEoZe69GKHQew0ieVZOeP+lTycSRjOTHqW efjBf7z+6iSd4fFGLjPpGWZAr/PS37rd+G4P2WRm6w/M7+OYGaOYaZ8y095i Jg9h3nqO+bIvUzuVyVs+t8DsZgeg95/Ful+gnzIMlJcaAx4pWfZohCmEoKpr ajSHfLCh4C7IeMURd+VRmsKrEdtXmLdTJgKZQ6XbQ4GSqso6ssn/MXV+/lVo USXfXFlb6y8rgU2UWIw5CmliUX4StxBc+heIS+K0dV31yc6Qt3WFWZqQC7NL Z6pIXVawFkgssTCPZ9TCUBZoFCu3bQbPJOxMi31uNUchWZoQB44Co8I9JPuA FeQiHdi+FF4hwk6JkK70R2qIBhsKeS9kF1PjQUg/TcBlV2cYCjSmbXm2dcnO eeuDk8crij650/gxo/2cia5gdv5484MPPzN96rnTJ9y+8Mu+qa9cu673TWMe Gq9979yKlYz6D2ZiT+aLZ5hv+jJT+zCzXyD//fQBZtOrV/E/7blitTpPa5M6 9Qec0rwfqwNasUXTQBfkek1jA5R8cVUFdC8Y7Eg+TU6BigabIREAUSmCIrKD n9mg8zi9pZFy9uNc7e3HrT/hr0BrVzvsLwgzXBG1B/0Ku7VIp6bEBeVTqFUd 4TfmZG4b6hFeLQLZ1YrtkuKbdFIXOR/7WgQa1PrkHYXshxsUXkfsPKIBZmQP 4ZBPSz50SxZQSFAF7DpffSRIN8AnXxCAQYFU4xZsycqQs98rQSKQ8XguztOY 5DMrHrInJ04Cb3SHHJHdkC60bMxw4G+hzrS9wLFiKXf7xAmqsQ+FJ/XQfXP3 zyPuefuz+8aNeG72Ky/98NzoMU++O/qZd77t9ebmN69c8xbz+aPMsGeZUUOY xYOZ+GEMZxKTNopZPZjZMviG94eIflxQui3flim2CG2GQ3S5C/ddUA/rCZiB vqDnXSVhvc9NeOwI1ukTNaWSJfMKIdEzpULYGogZa8AXKi+jnwInguqkM9V+ xy52KmBjc1NFbQ3QbvC6IObzVDKw1g4OYVc6C+IQRh8wWJe0fdbc35dsWLck bv2seb+v2b4FIFm0fs2M33/NEPGWJ8TNnj83Tymbv2pFn759lsXHAVqL1q/9 af7cpfEb8GP6b78kZKQCSJNmTkfMFZviF65dPX7alMTCXDx36pzZSHz5prjf ly1Zn7SD7EK/eCGuAlErtyQgPhJcFr8BP/BcnERqk2fOWLE5fkncuvFTf1i1 dRPd2QN8AlahM0LxQ+qzrs+KfDGm5PMPTBPe46Y83+v9T26eNP2qlTMv/Omr Bz9+9b2v+n4y6ulvBt4149uelw649/wHn2MWvseIP2J8PzJ7apg9FibhnccX zM1OEzn4ZmOG2LIm0bVwgyeVZz3ymcnslLCO3glxZ3/pISLjL1g9Vchl1RSX 7DLH0pQnEo7WVDc0Nx12RvHJPFjiIn5iTUM9xLw95Fc5bXyDFjYL0EriFeYo pdyDjFYDP1DdLw4aOGrcWNQgwoQfp37y1ZfE9Kvl30394Y133vng04+35uwE n2zLyxow8MVCrTKVV/jUk09NmjF91bbNAMDn33w9ZuIEskXnK0PmrVzGkozr k6+++P7HaeCrsZMnASrzVi3H3++mTMYTx0+d8s4H74OO+r/4IgsbsnfBonVr +g8YgOe++e6733w3VsF+Q+e7HyYPe/11+YH2ckTIU5l2yqw8ry9uTnq4H5Pw ATNrIjPnR2buDOa3qReNHf3AyLeGvd1zzisPTBz0j5dGvXp56WSm5HvGMfnq qqKn8jP/3JhqlZCNa/Rs4yLKDW5mjsJ8tKPPh50LQREFhx36HByVyC2EYuEZ tFBToKniimh1fT2qr/2AX6Y81cfuXbva2BEfOKfBaKnZ71XYLTCLGWJixJNY B5agq9tmKajorbk7f1+6eOnG9eCNucuXJnPyIZl+W7IITIIIiQW5M/74FcYL 1AdszF2xLFcp3ZCSCP5ZlhAHVsGZDCHZAhS8tCM/h+5nu2DtKhAXWQG9aSPo a/mm+D+WLfll0QIkiPO/Ll4AHG7OyqDPRUBqQC9O/rLoT2BV6rbJXDagbvaC eQdb4IzaFAEPIcea8Rs5j10j+YxJnXrpihnn/zqFmfsj8+csZt5sZsp3t4z7 oN/kvp9v6dt3wlN9B/37gYd7Lo9PKxM43BD/B0iw2xKMYwnCzs3hYe9YRBVk ycVoUDKb2eTzQBjDyqDKTiua6n7sJuAivRDwJsqqq7wlYYPHBb+1UKOkoguu R65SFluGHHt9KVlEaYv9pltR0Q1mWfVu3ftpGE/HhiS4FFu/gN+06mWdg8sd 6XQ5SXdxlLP7dNHvjgk6hNneTW7JNrzsV5zIjWYDfkvYLUwPQRRgmySRZ/x7 hcqJr6atXZsj4HHVO1fu+GTCjAt+m8rMB3f9xMyZxXzw6VUfPf/qqjcu6Xvr rQ/+e9aG9IjgBK+YoOsioTMhRRKLCnYU5QNaULxwr3RupztcXMo6fS0ntyfh WI4Os0j6uBqQeXekWO9xSaymAo0ynfTPE+7KVkjo+sETvfL3xAWoIJ7JuHKb Ky7DuWCljWs0JUsCPAtcWofCEx655tNRo5i4UYxgzLk5W0ev4fz44sw3Zgx5 eNbTzDsvfZyrCZy4FRO0SCFBibvHyQdHZUpFQBR0r9btcIVDkcqKmoYG2uF5 ZkCqy7F7NzGL8Fhhu8MV5c7ioM7tQGMp7EQX3ncnWpCO+IzCbsbxNA908SBk dhLHqvDqtubZOXqzmK6DgC2zupbu2PL6C3cXDjxf9ErvFFFEE/DmGu3vD89Y OuiKlSu2JnL9VFYdXzjFuqTSRPwdexGlFJsNWpfdEQoWl0er6utO6GDfyTl2 daILkh7NhHKXzGqC7oKqx4uTyRgCLu3vOoPQBRNWqIWVMdI1NV2nTgnJRiXG 9cn2T15cKRlw16aJq3lu0lMhcxkzJY45P/HEdiOI7nitmOgsNGLyoJ3gJRG9 ISgiFkGvllqJ1QNHoWmjgbMdU6e1lDqqoyu6SiorPJFio88tt1ngksAxSeYX QVIm8zgd9MVOgjr9AXZoL0wd0K9OCo7+xrJ8ixuOHj0pc+u35Hs3pDplrr8+ A2Q/RKE9gqDSxXw0UoioNBGPNFKDBsoc4tYNq8ciqvF/C1F7j90dXfTNrS2Q i9GaajgjcHI1LrsYYkCrBKg62hqPg3Z3BgHsgAFY2pjuiM8hq+y7npe59GsT nQmZ9hjY/gKWqL2DXs2UCKDJ0SpTBEUoNDIP32xQO20Wv9dXGoHrVNvY2NGB 8L+HqH0Piq6W1tb6pkY4ubD4kF5oWXKbmW/UksXOIh7aHeRBKsi8E2AC6xmm wSiukrhW6b46il3Hql+xxZUtMx95l0Ls3cFOBVolPDu0PtoTBWjlqeV8gxbq Qu92OkKBULSsvIaMG/4/QVTXAy8LZ6S1vY0Yx8aGaHVVoKzEHvRDDKB8YB8B MHB7EivAwGOZEiFKL9ZBcfpjDLJ8S449hXeApRDsl8QNBVrTYTszY68J7QTr Rj56y7JTMp9DC4Sn10itJo3LYQv4/aUlZVWV1Q1EREF1nCm9ByfiwKvvitFX c1NVXS3EgLckbAn4tC6HlAJMJYe/DGiRrntuQZqQB0WKNhvbz/z0xBgR9jpT kf7AnVQH02ZdzBxZYgzhtFMmAm+DwLdz8gmcpKJ8tQLFIrGYNE477J0nEoYm r6yrrW9qamkDQf0viqi/ehD66gRYQ1MTSqmkqgIKgTKYwm4RmvQcrQqIggdN vEiYgKJ8iAoUO8qZzszpOqvklOPqEODpjqKYZMKL0HYECBExUJSfxOekSwTw bqCdhCYdnB2tG+zkQ+uLVHbAidq7/88EddiD2sc2Iu8hwJqq6gnAoPAdoaDJ 64YiRTuFlijQKLJk4lQhjzpBO4oKUvgcVAeAhzaO2tmPzU4HsO2fGXb/Uo5e DXOGd4HR34slHgf/zSY7kyv5hJqMKofV4HXZQwEYOzjUgBPkU1NrK7V3Zwnq yA8KMDBYa1trY3NzbUMDRD4IHyQGaWr0EYzBUAqMOjTkXKVsp1SUKuSy5jKf dgmCzTLEAvqBD1QfzEpsT9qDheMIm/2SxaORAfggHSgS8SC8WbHUQUrwVsC9 EFF4HbyU1GJSOWwES0G/rySCF4cUr2mob2xpZo3d/y81fkIOtj2yIp/0UYDE quvrozXVcCRR4MCYyeeBGIOtFFuMaN0wl3kqsiowXcQHtJI6CI0gDYQA7AFs qMFshRSVCHIrZHekRKXz2C2a9+7wzKKF3w0zsZOCLttB414uu3cuAIwEkSwS B+HAcUM2UgUs4IsKIBHZnBQiY2CkLLkYVo9sYmnUis0Ghc2icdlNXg94yVsS Ka6IRqurq+rr8MpNrS14/V1n4XRijt2dGGujSqyZrBSAUSitqoRz7SsJO4oD Zr9X73GqnDaZzYzK4ht1RTo17GauUgqigBsFZiB44xV22lDCbxR4OAkbBBiQ CaUiPlgFIMQtsQBTizMIuISAaEgKuhqITca9XIQC9lNE5GtEOJ/GpgAYQyAB QoVaJVevEZj0MG1ymxmZhHo0+wmQPCXhYLQMNq68tgY+HbwYuHVnqenkHxRj 7RRjba2oBbRrWIrK2pqyqiqwWaCsxBMptgcDcJoMHpfWZVc6rAAb6lRk0gNv qGKOFpBTsiugpdBmAB4wAJO6U7oXQiyK+GlsoEijATAjMWWiLLkE9yIFIAep gTC5OjWYU2DSAdgw1hDbMGrQ20avG5kBxyJjyB4YqbS6sqK2FkCCXoKNa25r bWtrg09Hqeksok750UFl3ZAGQoMpAQmgBiMV5eAEf2kEvrmzOAjpYvH7TD63 wesGb8CYqp12KGSYVCABCAQkaAAUJfhLgpGekSHYzIimsFsBV4g9mDCd26H3 uKD9AB5b0O8oDgI/EITBaCkEEkgVGqmqrq6moQEZa2xpgW/S2t7G2rddZzF0 phydSEPjJ5UHIkA9AmywnhRv1fV1VXW1cAeg1sqqKmGDUPsgulB5GeAXKCuF Hwr/CwHYgJYjAT/YM7iECIiGyOGKKG7E7UAOkkKCMM1IHI8AC+FxTSyEWggT URCd5aL/tQOVuZudk7+L+pvE5ST81tZOLBBYDgEYgIMAqQw8IMA8saEFbin9 Tc8jQnMrBQzBDGvA2tikOsDTgR4WQWcx9P/22N1JcZ1Y2Pe/3Y99I5zq7J9e x/8Bt81LZw== "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag[ "Byte", ImageSize -> {182.62337147700916`, Automatic}, ColorSpace -> "RGB", Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}], "\<\"Calculation of HodgeDiamond cohomology \ done:\\n-----------------------------------------------\\nTotal number of \ line bundles: 266\\nNewly computed: 19\\nTotal time needed: \ 1.433 seconds\"\>", TagBox[ TagBox[GridBox[{ { RotationBox[ TagBox[GridBox[{ { RotationBox["1", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["1", BoxRotation->0.7853981633974483]}, { RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["2", BoxRotation->0.7853981633974483], RotationBox["86", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483]}, { RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["86", BoxRotation->0.7853981633974483], RotationBox["2", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483]}, { RotationBox["1", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["0", BoxRotation->0.7853981633974483], RotationBox["1", BoxRotation->0.7853981633974483]} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}, "ItemsIndexed" -> {{1, 1} -> RGBColor[0.8, 0.9, 0.9], {1, 2} -> GrayLevel[1], {1, 3} -> RGBColor[0.8, 0.9, 0.9], {1, 4} -> GrayLevel[1], {2, 1} -> GrayLevel[1], {2, 2} -> RGBColor[0.8, 0.9, 0.9], {2, 3} -> GrayLevel[1], {2, 4} -> RGBColor[0.8, 0.9, 0.9], {3, 1} -> RGBColor[0.8, 0.9, 0.9], {3, 2} -> GrayLevel[1], {3, 3} -> RGBColor[0.8, 0.9, 0.9], {3, 4} -> GrayLevel[1], {4, 1} -> GrayLevel[1], {4, 2} -> RGBColor[0.8, 0.9, 0.9], {4, 3} -> GrayLevel[1], {4, 4} -> RGBColor[0.8, 0.9, 0.9]}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{ "Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"], BoxRotation->-0.7853981633974483], InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ {"1"}, {"0"}, {"2"}, {"174"}, {"2"}, {"0"}, {"1"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[0.8, 0.9, 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.75, 0.75, 0.75], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{ "Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{1}, {0}, {2}, {174}, {2}, {0}, {1}}, Background -> {None, { RGBColor[0.8, 0.9, 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.75, 0.75, 0.75], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox["\<\"\[Chi] = -168\"\>", StripOnInput->False, FontSize->15]} }, AutoDelete->False, GridBoxBackground->{"Columns" -> {{ RGBColor[0.8, 0.9, 0.9]}}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style["\[Chi] = -168", FontSize -> 15]}}, Background -> RGBColor[0.8, 0.9, 0.9], Frame -> RGBColor[0.2, 0.2, 0.2]]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[BoxForm`e$, TableDirections -> Row]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Center}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableDirections -> Row, TableAlignments -> Center]]]], "Print", CellChangeTimes->{3.49925677483359*^9, 3.499489862870577*^9, 3.4994919365249276`*^9, 3.501853426955182*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "Example"}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"5", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculate", " ", "the", " ", "cohomology", " ", "of", " ", "the", " ", "dual", " ", "monad", " ", "bundle"}], "*)"}], "\[IndentingNewLine]", RowBox[{"CohomologyOf", "[", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Bundle", " ", "specification"}], "*)"}], " ", RowBox[{"\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", "AmbientSpace", "*)"}], "P111113", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Remaining", " ", RowBox[{"Data", ":", " ", "CompleteIntersection"}]}], ",", " ", RowBox[{"vector", " ", "bundle", " ", "charegs"}], ",", " ", RowBox[{"vectorbundle", " ", "constraints"}]}], "*)"}], RowBox[{"{", RowBox[{ "CompleteIntersection", ",", "BundleCharges", ",", "BundleConstraints", ",", "Vr"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", "Type", "*)"}], "\"\\"", ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Optional", ":", " ", RowBox[{"Verbose", " ", "Level"}]}], "*)"}], "\"\\""}], "\[IndentingNewLine]", "]"}]}]], "Input", CellChangeTimes->{{3.4946738521443176`*^9, 3.494673939138154*^9}, { 3.4946739847888556`*^9, 3.4946740683976393`*^9}, {3.494674562212724*^9, 3.494674565450274*^9}, {3.4960355094464307`*^9, 3.4960355233741446`*^9}, 3.4963975091687937`*^9, {3.496397613142891*^9, 3.4963976279281178`*^9}, 3.496398911625335*^9, {3.4964004199160023`*^9, 3.496400427933625*^9}, { 3.4964106014023876`*^9, 3.496410602577406*^9}, {3.496467520870302*^9, 3.4964675223278246`*^9}, {3.4964802388781476`*^9, 3.4964802407381763`*^9}, 3.515224741533251*^9}], Cell[CellGroupData[{ Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18], StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"k=1\"\>", SubscriptBox["\<\"n\"\>", "\<\"V\"\>"]], Subsuperscript["\[CirclePlus]", "k=1", Subscript["n", "V"]], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"-N\"\>", "\<\"k\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>", RowBox[{"\<\"\"\>", "\[CirclePlus]", SubscriptBox["\<\"r\"\>", "\<\"V\"\>"]}]], Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", Subscript["r", "V"]]], Editable->False], StripOnInput->False, FontSize->18]}, { SubscriptBox["A", "49"], "0", "2"}, { SubscriptBox["A", "50"], "0", "0"}, { SubscriptBox["A", "51"], "0", "0"}, { SubscriptBox["A", "52"], "31", "2"}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", Subscript["n", "V"]][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-N", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", Subscript["r", "V"]]], FontSize -> 18]}, { Subscript[$CellContext`A, 49], 0, 2}, { Subscript[$CellContext`A, 50], 0, 0}, { Subscript[$CellContext`A, 51], 0, 0}, { Subscript[$CellContext`A, 52], 31, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, {"0"}, {"29"}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {29}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subsuperscript["\[CirclePlus]", "k=1", Subscript["n", "V"]][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-N", "k"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalO]", "S", CirclePlus["", Subscript["r", "V"]]], FontSize -> 18]}, { Subscript[$CellContext`A, 49], 0, 2}, { Subscript[$CellContext`A, 50], 0, 0}, { Subscript[$CellContext`A, 51], 0, 0}, { Subscript[$CellContext`A, 52], 31, 2}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18]}, {0}, {2}, {0}, {29}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.4971723392924833`*^9, 3.499256776841705*^9, 3.4994898706856966`*^9, 3.499491942495019*^9}], Cell[BoxData[ InterpretationBox[ RowBox[{ InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ RowBox[{ InterpretationBox[ SubsuperscriptBox["\<\"\[CirclePlus]\"\>", "\<\"i=1\"\>", SubscriptBox["\<\"l\"\>", "\<\"V\"\>"]], Subsuperscript["\[CirclePlus]", "i=1", Subscript["l", "V"]], Editable->False], "[", RowBox[{ SubscriptBox["\<\"\[ScriptCapitalO]\"\>", "\<\"S\"\>"], "[", SubscriptBox["\<\"-M\"\>", "\<\"i\"\>"], "]"}], "]"}], StripOnInput->False, FontSize->18], StyleBox[ InterpretationBox[ SubsuperscriptBox["\<\"\[ScriptCapitalE]\"\>", "\<\"S\"\>", "\<\"\ \[Star]\"\>"], Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], Editable->False], StripOnInput->False, FontSize->18], StyleBox[ SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"0", "0", SubscriptBox["A", "67"]}, {"0", "2", SubscriptBox["A", "68"]}, {"0", "0", SubscriptBox["A", "69"]}, {"131", "29", SubscriptBox["A", "70"]}, {"0", "0", "0"}, {"0", "0", "0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", Subscript["l", "V"]][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-M", "i"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0, 0, Subscript[$CellContext`A, 67]}, {0, 2, Subscript[$CellContext`A, 68]}, {0, 0, Subscript[$CellContext`A, 69]}, {131, 29, Subscript[$CellContext`A, 70]}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], "\[InvisibleSpace]", StyleBox["\<\" \[DoubleLongRightArrow] \"\>", StripOnInput->False, FontSize->30], "\[InvisibleSpace]", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { StyleBox[ SubscriptBox["\<\"\[CapitalOmega]\"\>", "\<\"S\"\>"], StripOnInput->False, FontSize->18]}, {"0"}, {"2"}, { RowBox[{"102", "+", SubscriptBox["A", "70"]}]}, { SubscriptBox["A", "70"]}, {"0"}, {"0"} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0}, {2}, { 102 + Subscript[$CellContext`A, 70]}, { Subscript[$CellContext`A, 70]}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]}], SequenceForm[ Text[ Grid[{{ Style[ Subsuperscript["\[CirclePlus]", "i=1", Subscript["l", "V"]][ Subscript["\[ScriptCapitalO]", "S"][ Subscript["-M", "i"]]], FontSize -> 18], Style[ Subsuperscript["\[ScriptCapitalE]", "S", "\[Star]"], FontSize -> 18], Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0, 0, Subscript[$CellContext`A, 67]}, {0, 2, Subscript[$CellContext`A, 68]}, {0, 0, Subscript[$CellContext`A, 69]}, {131, 29, Subscript[$CellContext`A, 70]}, {0, 0, 0}, {0, 0, 0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]], Style[" \[DoubleLongRightArrow] ", FontSize -> 30], Text[ Grid[{{ Style[ Subscript["\[CapitalOmega]", "S"], FontSize -> 18]}, {0}, {2}, { 102 + Subscript[$CellContext`A, 70]}, { Subscript[$CellContext`A, 70]}, {0}, {0}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]], Editable->False]], "Print", CellChangeTimes->{3.4971723392924833`*^9, 3.499256776841705*^9, 3.4994898706856966`*^9, 3.49949194251752*^9}], Cell[BoxData[ TagBox[ TagBox[GridBox[{ { GraphicsBox[ TagBox[RasterBox[CompressedData[" 1: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 x/8Bt81LZw== "], {{0, 113}, {200, 0}}, {0, 255}, ColorFunction->RGBColor], BoxForm`ImageTag[ "Byte", ImageSize -> {182.62337147700916`, Automatic}, ColorSpace -> "RGB", Interleaving -> True], Selectable->False], BaseStyle->"ImageGraphics", ImageSize->{182.62337147700916`, Automatic}, ImageSizeRaw->{200, 113}, PlotRange->{{0, 200}, {0, 113}}], "\<\"Calculation of Lambda1DualMonadBundle cohomology \ done:\\n-----------------------------------------------\\nTotal number of \ line bundles: 28\\nNewly computed: 0\\nTotal time needed: \ 0.095 seconds\"\>", InterpretationBox[Cell[BoxData[ TagBox[GridBox[{ { RowBox[{ TemplateBox[{"\"h\"","\"\[Bullet]\""}, "Superscript"], "[", TemplateBox[{"\"V\"","\"*\""}, "Superscript"], "]"}]}, {"0"}, {"2"}, { RowBox[{"102", "+", SubscriptBox["A", "70"]}]}, { SubscriptBox["A", "70"]} }, AutoDelete->False, GridBoxAlignment->{"Columns" -> {{Center}}}, GridBoxBackground->{"Columns" -> {{None}}, "Rows" -> { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, GridBoxDividers->{"Columns" -> { RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, "Rows" -> { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, GridBoxFrame->{ "ColumnsIndexed" -> {{{1, -1}, {1, -1}} -> RGBColor[0.2, 0.2, 0.2]}}, GridBoxItemSize->{ "Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}}, GridBoxItemStyle->{"Columns" -> {{14}}, "Rows" -> {{14}}}, GridBoxSpacings->{"Columns" -> {{Automatic}}, "Rows" -> {{0.8}}}], "Grid"]], "Text", "TR"], Text[ Grid[{{ Superscript["h", "\[Bullet]"][ Superscript["V", "*"]]}, {0}, {2}, { 102 + Subscript[$CellContext`A, 70]}, { Subscript[$CellContext`A, 70]}}, Background -> {None, { RGBColor[1., 1., 0.9], { GrayLevel[1], RGBColor[0.8, 0.9, 0.9]}}}, Dividers -> {{ RGBColor[0.2, 0.2, 0.2], { RGBColor[0.75, 0.75, 0.75]}, RGBColor[0.2, 0.2, 0.2]}, { RGBColor[0.2, 0.2, 0.2], RGBColor[0.2, 0.2, 0.2], {False}, RGBColor[0.2, 0.2, 0.2]}}, Alignment -> {Center}, Frame -> RGBColor[0.2, 0.2, 0.2], ItemStyle -> 14, Spacings -> {Automatic, 0.8}]]]} }, GridBoxAlignment->{ "Columns" -> {{Left}}, "ColumnsIndexed" -> {}, "Rows" -> {{Center}}, "RowsIndexed" -> {}}, GridBoxSpacings->{"Columns" -> { Offset[0.27999999999999997`], { Offset[0.7]}, Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> { Offset[0.2], { Offset[0.4]}, Offset[0.2]}, "RowsIndexed" -> {}}], Row], Function[BoxForm`e$, TableForm[ BoxForm`e$, TableDirections -> Row, TableAlignments -> Center]]]], "Print", CellChangeTimes->{3.4971723392924833`*^9, 3.499256776841705*^9, 3.4994898706856966`*^9, 3.49949194253752*^9}] }, Open ]] }, Open ]] }, WindowSize->{1671, 945}, WindowMargins->{{Automatic, 0}, {Automatic, 0}}, Magnification->1.100000023841858, FrontEndVersion->"8.0 for Microsoft Windows (64-bit) (November 7, 2010)", StyleDefinitions->"Default.nb" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[545, 20, 667660, 14241, 44593, "Input"], Cell[668208, 14263, 10600, 291, 253, "Input"], Cell[CellGroupData[{ Cell[678833, 14558, 9249, 248, 413, "Input"], Cell[CellGroupData[{ Cell[688107, 14810, 382, 8, 24, "Print"], Cell[688492, 14820, 380, 8, 24, "Print"], Cell[688875, 14830, 382, 8, 24, "Print"], Cell[689260, 14840, 681, 12, 24, "Print"], Cell[689944, 14854, 30676, 534, 134, "Print"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[720669, 15394, 2488, 72, 173, "Input"], Cell[723160, 15468, 33948, 612, 185, "Print"] }, Open ]], Cell[CellGroupData[{ Cell[757145, 16085, 2831, 69, 213, "Input"], Cell[759979, 16156, 139, 3, 32, "Output"], Cell[CellGroupData[{ Cell[760143, 16163, 12465, 313, 235, "Print"], Cell[772611, 16478, 11246, 288, 231, "Print"], Cell[783860, 16768, 30774, 537, 138, "Print"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[814683, 17311, 2367, 63, 153, "Input"], Cell[CellGroupData[{ Cell[817075, 17378, 7574, 196, 191, "Print"], Cell[824652, 17576, 6884, 179, 192, "Print"], Cell[831539, 17757, 7586, 196, 191, "Print"], Cell[839128, 17955, 8246, 212, 217, "Print"], Cell[847377, 18169, 7828, 203, 192, "Print"], Cell[855208, 18374, 9816, 240, 195, "Print"], Cell[865027, 18616, 10552, 265, 195, "Print"], Cell[875582, 18883, 8399, 214, 193, "Print"], Cell[883984, 19099, 7752, 201, 192, "Print"], Cell[891739, 19302, 35396, 644, 181, "Print"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[927184, 19952, 2797, 72, 193, "Input"], Cell[CellGroupData[{ Cell[930006, 20028, 7812, 202, 193, "Print"], Cell[937821, 20232, 7424, 191, 195, "Print"], Cell[945248, 20425, 30746, 538, 134, "Print"] }, Open ]] }, Open ]] } ] *) (* End of internal cache information *) cohomCalg-0.32/bin/dP1.in000066400000000000000000000015151322050713700150600ustar00rootroot00000000000000%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Example input file for cohomCalg % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This file contains the geometry data of the del-Pezzo-1 surface, which % corresponds to the single blowup of the CP^2 projective space % % The vertices and GLSM charges: vertex u1 = ( 1, 1 ) | PIC: H | GLSM: ( 1, 0 ); vertex u2 = ( -1, 0 ) | GLSM: ( 1, 0 ); vertex u3 = ( 0, -1 ) | GLSM: ( 1, 1 ); vertex u4 = ( 0, 1 ) | PIC: X | GLSM: ( 0, 1 ); % The Stanley-Reisner ideal: srideal [u1*u2, u3*u4]; % Computation time for this example is quasi-instantaneous, % so turn off intermediate files: monomialfile off; % And finally the requested line bundle cohomologies: ambientcohom O(-1, -2); ambientcohom O(-2, 0); ambientcohom O(-3, -2);cohomCalg-0.32/bin/dP3.in000066400000000000000000000011011322050713700150510ustar00rootroot00000000000000% The vertices and GLSM charges: vertex u1 | GLSM: ( 1, 0, 0, 1 ); vertex u2 | GLSM: ( 1, 0, 1, 0 ); vertex u3 | GLSM: ( 1, 1, 0, 0 ); vertex u4 | GLSM: ( 0, 0, 0, 1 ); vertex u5 | GLSM: ( 0, 0, 1, 0 ); vertex u6 | GLSM: ( 0, 1, 0, 0 ); % The Stanley-Reisner ideal: srideal [u1*u2, u1*u3, u1*u4, u2*u3, u2*u5, u3*u6, u4*u5, u4*u6, u5*u6]; % And finally the requested line bundle cohomologies: ambientcohom O( -2, 0, -2, 0 ); ambientcohom O( -3, 2, -2, -1 ); cohomCalg-0.32/manual/000077500000000000000000000000001322050713700146075ustar00rootroot00000000000000cohomCalg-0.32/manual/latex_source/000077500000000000000000000000001322050713700173045ustar00rootroot00000000000000cohomCalg-0.32/manual/latex_source/img_GPLv3_logo_black.pdf000066400000000000000000002520361322050713700237120ustar00rootroot00000000000000%PDF-1.4 %âãÏÓ 6 0 obj <> endobj xref 6 17 0000000016 00000 n 0000000802 00000 n 0000000879 00000 n 0000001157 00000 n 0000001191 00000 n 0000002460 00000 n 0000003833 00000 n 0000005073 00000 n 0000006412 00000 n 0000007909 00000 n 0000009081 00000 n 0000010319 00000 n 0000011717 00000 n 0000014409 00000 n 0000014486 00000 n 0000014567 00000 n 0000000636 00000 n trailer <]/Prev 86821>> startxref 0 %%EOF 22 0 obj <>stream hÞb``àc``:ɦ½ ¨€ˆY8Åø ˜A”G@€×ÕÃÇT-Æ¥ÞG4qÙ æp­a@š ˆ­€˜•1p3ÔÈ3W é endstream endobj 7 0 obj <> endobj 8 0 obj <>/ExtGState<>/Properties<>>>/Rotate 0/Type/Page>> endobj 9 0 obj [/ICCBased 18 0 R] endobj 10 0 obj <>stream H‰”–Ën&'…_…u$·)Š¢`›)«,¢‚Z‹p¨´iÛàI„ÇnÔìNÞÆ“­ÿOêúnÛMCäNzß·"‰l{¥ò¸S»üÕ¥ãÜ7Ï(z'[:\챓¨¶´:-C£Š4 ÿêˆ3+sg“ååAÕXk-άBh2¶ð _¦Y*ƒœkjPaÈëª;é×,|ž•&(UútA¯¬Ì]fB„Mä}ŽP›‡°ùh%© *=lDë*_áÒ yåHaö:œ†´p–.CàN;:¯š’šìK^”,Q»¬ä^`ª ®ÒPC0™×q;p‡+(ó Á(  " å¨Õ–u  v@ k·x Ôh³ÄÅ‚{/ÛªÃX³ÞóGf[‚×âq§P厲ç}Y2“ÎC¡•ê·Ûá^x2Χ5ÔCïÊ|vN¹ŠXd8úí¸ÕÌè.¨[ƒ¸Ù§­¡¢Û‘g~bgQÄ„]–ÇrxFŒ>©,8 ê<&=LMþiÆ^q̵mÞ“"…¤Lc-Q4~ÎUZ™%‚©è¦HU;°sÇ€2hɃÿòc–<ÌÿøÂ·ŽÑѳŠ7(‚}^Éá€㬹ʄªHô9Å}J¨s@ÞÛ)¼¢:/vš/ül¢„»Ž­ )З‚¢1´uä‹T”Tm[  ÑÓBš «Kœ áy°‚Œu—@·J4±Õ%Ò §L{` ØÜ—T#‚6ÅÂ*å…t)“Š · T£´³JÈS[^ˆL—KÐÐÈÕ¶l1ÐË}šerÇñ¤±¡­ô»È ¥É¥rC”¶Un¨§û¥rS>tKä¦ñ°DnPËõ&²Ás¼{‘9Ðt‹LTÛ"o¼D^—ÈÀîm‹lÕ÷~sÝùU·Ö!L½é!²ŒÇüˆ{Çþ¤Ž ;å rŒÔ‹q=Ä%žÃÎùÀާìk °‘¡‚ÙARÃ]b¹>æøÌàYD÷ì^ #Bù4Ànv}Ý<ïÎ×P-µ1Í<äZëÿÂ@á‰Oûŧψ‹¨ÿò4Ðã@WÇ7 © ½ã±Ajðzð}}A±ó²J¹Vã<³1Î{»gAßfSTÔ4Fø@¼_ý‚\£aŒ*×,Ô–> ogñ‹±7É‘{l’…–øÖÔζÒЋ½F±[L¸2p!¿×ŒÐp=~çÅªŠšDÇ©|«Òß yMú endstream endobj 11 0 obj <>stream H‰TVA¶#) »J] xØlŸ'›Yd¶ýÞÜ~$S$éM÷W ÀÈ’`hë#®»·1íz_šm.9X£‰ÛA I춈zäuK-ñEÖÇõú`mVƒ&øÐšv%òD¡sO ¬œ"D¹ÖuÖ1Š‚º‘ôä\`Ϙ$ké”BYsÕŸ¹!µRŒuYoËüºgÍˤ­˜½.Ó¶üƒÍÚœµRø¸l´Ñ ޹˜”óÔ”¦DÿÙj ‡ ‘\wFçÁoâ@KJapÛ'×Ή}qvnµÉm½é¶޼ÇÞvðè`k(K‚m³ œ Çéëƒ6ûë@àWùáÀ²ŠÓ3l2x5P[,£ŠÞT}-ÂØìrIS)BÁ,ÖmÚઠ9¸ÀDoEМ±‰wÃgЉkKËKÀøp’iØ(„•þs gÏó˿ĉõ‰1Q;Z|̾ߪ€¨ï JGu@c$KQ5¬¹ví<60%øæ·A tTP ³Õ̰· y, ví¨|µgudnðºvÆÀ°¬ˆK¼ågšՊèXxbó¬&ëh{AÀq€ƒæZ€2”ê"&BpÔ(8ÞÔõ…¢%ð‡7·T׿°@qà#´ Ð4]àtV«5ê$Ña‡I”«泺ÐC6£W¿†?}VOvø»·ì6À%O·o~f§Û@²>£ šõóuÿƒ]išöQò¥€‚r¸\GUm­QBðBaŒcvCÀœkào9<¶ÿFS¹Ø¨e›W$"pÞlSêI'æ2Bý‰ÒAN’d¥M˜n›ë9hl=K@-}íÒM¿mÄFŒÊ˜Ýie‹|p–µ;Œ@ôMŒ3†móÜæ¬m+‘’Í ÷S.¨˜$u÷.ª¶a'Mðýâ‡Cü‘ùÉš› a8!CUÒ*nÈvr{X‹W `2[A2cñ@DL±ñóC‰]èjg¹Ó ¹ÕÅÑ×Y|xTz±zZ$ôÜP¬¥r¼Wd½ªVGUŒÎ_4ñnõ‚žR–¶O©4¢í 5^MåJÒË4D è‚uÌ`Ày”Fݪ ò jB¦Žrã‹hT°&Gvu´ÿXŒ9ëV¼Á<ĉ¶Ê“I Å–3òÉj@ŸäúóX÷6¬>r«šÎ°Oˆ¡®`’ó_*ýó6¢®1‡™7xÑágŒ-áG³.×<†¡:QÝl«îE`ß9çúxè‡]7~ÖÁ© ›wµ`ÕÓKŠLD¤Ü¾çú÷º)õ°Ø‚o‰'öŸJ°°X<ÝÙå…ãˆÌUSE•ƒÑŸ‹‰Ø–² °Ç'n‡†wÂîn§(¾aæL³ ¢  WÂUÊÉGнx_$í”6Ð ê£ ]TܺÎÛŠ8È羘¹ÔŠ2±šì¢ÞH¾§;_Fn„îp¤%X¡r“uÊ(°¨R$ñغIf\`oÈæø;zÉókÿÀ)ó›1÷¹Rÿ¡å$÷¼6î€zÐ tÆÔ 4_ù“_xžOŸzÅcAôšY^`*/Dfá«öòòJ¯g Ïw(£Ê‰Q}WMŽê9@UñÑõÜ&7~ßZxuÿƒà©ç©ß› xn±U»‰%ýGÂ7›êÏ ô/ó£¼v©ˆUVÄ›n•­„í8y³ÃìùÁöS›ÐRjù,Ç 5ê5rý/À=ÕKÎ endstream endobj 12 0 obj <>stream H‰\VMÒ$+¼J_à3Dñ<³y‹žíDÌí_&XUÖ¬:’Få'êGÚ*}öÏO-Cûçûù‘!Åí2öÒæÿ¼,¦’¸W%övb)ø×Û2ç ËzŸhSÿ9ÑëȰn‹ÖvD!e¾¯uÝ—·b+ü[Y áš1[SboûÍVÔœ–%’x8N 䡉ûrb©û <Ž€a™¾ˆQzhA]û*ÓôÂ<Ñ'Æá1Qì¸Ói&®c÷nyÂJÓqÅ ¬e,ÂÚ™VÇÉîgâ訊^–®×ÌmA'$_a U^gE3 äèc–Y=ÃвŠáÅGËD*ß]883u¼áÕAåvPÔÛxÁˆ'2•OŽÌvJKoqÀÑ©hдuà£Å·Å"ab±‹4›û‹ˆ°t!U»´Ä"þ·³Ãˆ`ø4”u…Ôà8Šö‘9ÌeŸ fy¦hàÒBËn:à Tüôl?"-Þ‚-À.¬Ñ°éoÇeûM‹ƒ§qʇ%A¶CÀþ`¾ªZtムÎ(œ¼mÈQ>¸¶íÈÏY˜“æ G4ÙŠWwç·íŒ".T³¡0’— „‡uÝ®ïbYvMƒYg¢Ð’e’DÄÄ­þÂ}—ú²@’Û¡q²` ÄpÀ“ÞÆ)nXôoà>BÜ}õ$@·äбŽýш5¨Üéš”eã·¡4CèÎæ#n6›=}ÄnFM.q+›r¨¸F¸7çQÞɸu³¿ å¡n0 êÖQŒ¬¿Ô­†ªÙ©nÄ!”õ¥nDÞ¨ÚK¼È]uòfìpÀ]k>ê¶…¢§ºgÅëQ`‹A 쬀ÄÛ¡=\1íá…Õ×­=¼?1¡ní¡[níѺ3Q¹[|o¡¥ø&'}?Å «{‹Xñ×­­I¬S}Õ¯rx€#ä„,,.K»òbi`!WÙ¯ÉçæGáii`¹$ÙAêo¾[1 Éí0 í0T0àÀŠèþJËïÿ©ž¶˜†€ó¾=ܱbŒ†ê›ù Ìí'lk7rB"ú¹¶äÄ"@I ޶aGZ< »£ï+˜R%ÓuÜ̇¢!½]´oÆ0ªþcQòƒ_;J«X§Ä™™)0$±D—í´W Îê)pz¶nÌ]FkgˆïM¤ÌZ‘8Øß‚2Îåq["›üDpiæ\#_J 0*€µ³ñŸ´LŒi˜µ¤Í²êžß„«rñŒ»FiØEuè$¿vâMèÅå4p÷qRÇ÷S«(œß}ùK c8ÛòNöËð« T‚‰5BþØ‹ºÂôi– "nÝ}Cf؉"ãh$nàªÀbmAvìÔ†!b­ý"#°r"ÿXYÃ0%ƈpò?ðzï1Ì×ÿŠú½Îs¬|_ëMõú?ÈÐk1|#ÅØ-x¡Éޏò-ÔM݆–Ó4g4?LV0¾YzàÃiøÑ=µVÎBÌx^óš‚æˆ×˜®ÂO`@õÆùËC¹˜8j9äÓ› †Á]Bh1Š›õB J÷Ïÿ †(Pl endstream endobj 13 0 obj <>stream H‰dVKr,9¼J] B€$ÎãÍ,ìíDÌí'Tåî÷VvÒHâ“$õòÑöôëåMÇŸіëeMûN¨Ž_G³Ðë †ÞÜôòæc&’å×jèßt÷qão`ir‰4³ Á¢ ûÃÐÅ/Á¢€»á¼x[Û¯ÿ€­=/YmoMÿÑæ—ì¶tÀð±f+h •ë' 3 €Ú‚oÖï„Ó÷ +¥tf¤QýìýΡo·¶P‘2(*ƒHÆ„—¤A-1þ ;˜(z¢‘%sT€0Ÿ`6ˆ5x±oXΊªÀ°}'4˳»×Y‹t_v»ÏX4جßE¡c±(³UÙ¥Ú:ÛPg_Ö”„¨îéRõuj¼µ )ûÒ·F¯&3>° Mò±Ùq-Rb¯Û:Ñà!·þ“Äø' €:øÐj¢„>oîãESÚýièk1¿.3Ø™írÍ÷Áâ¹îÜÚIgå£mPã°ð+ ô—YQ;¸AJºXfê=ÙG–T)ç.ºO#Ú6ÿäêéÑdÃêOº<†WðèœûFx.ðÜ|û¥BJx`.Bt1Öˆò–ôF)7¦=P—JlèN8È!k•÷p>‰ˆ˜Šœc¸AéyUyþ P%»ÄPþ€ä+üõàêXáü8’ó¯ÕÃo²~¥Á<ÉÞu&tüF8ÉÅÕvܗ樨ÕuÑý”¬[žö姆 Ìb;J£9¬”½ \ÍÂS:Õృ¸}tZ…–Å!rdžAv ý"£QÑT>P¨ÆÍû ‘ ´(ä¾ç <êvÕÎ87wv#b$rj, WAqv1«§Œ¥2ø|ŸñuÎ…×øáY¹*Å*2’AAìP[„{‘›?©fh'xT%†âbÖ°kkõ4C1»r$4”ëÌ #|Y]ŸúúÕ&¬"~rØ!9C&qA`<±,ŽÐ áùif~æfOy[„Ì5á.²õÛßû»ìsñå.Äâ_‹êé)JX†Ër#lJ7ë§ÐpàÁ8íòøþë ~!Ò…šõÂߟkLl½x ßùaqaowçèâQD8JFùÔPxEv?¸8(0çc݉ZqOÃ%ýÐo„¤äÃghù9»P@.ˆ'Ü–Íäμ^lìx ЙΠãwoÎÏêü`¥z2ŒëlâL6 endstream endobj 14 0 obj <>stream H‰\–Kvd) D·ò6`H|¤õxÒ×þ§}Cdºìe¢BŸˆÖÜì³·ÜÏÇhñ ¾´Ìà£ïfk?Ÿ¼Åˆ'¬5ž/ ³9Ÿ¢7ëƒån#Ïs¢î,³ùÏÙmÖqã¶ŒçÌ÷¶[?ùo™,½Ë~/ÙÎ9çßËÀm±ð·'ŠžeØ’®ßOŸmŒýËbÄì:4¢¼]ß›œWë|øzþc×:­ãómü#“œÏoSfæoƒ‘ÈÛ õÕâŒÎ1¶vü=–ÑÌt?¡&EKÑÚÚ:U§t.Šï®¤µm»’ÊdÿlK&ëüöS—Ò‰œþÛ4( ÇV[3ʲø»×/Óºk[ËWôç´iÔ|·=fYœD÷åÈpn…‡ÍÖi5µ{7¹&Àùiጃ0p›«ÖYü² ú½p¼Z¾š‰eYY!ÔúQŸ$°oÚ/€ä¬~ n¤HDhàœu´=9ÐÖc‰õ6Ð@›ŸÇäm¢~‰”w¯%ïA@ÙçÙÀôEsWd.L…šåhM2gëBóÎRéª'k§Vx0~€¥ŸjÞY­cÏ¡¨•o*úvš!Õqé’(þo…?KÍ8# á”wµåCÌ¡\_(àÿan=áøK¸Jœ“¡è B>àËtõ–èÔsúd¥è]¾8’b¢Éî¬[Äi£æG¾cÅ ¿´ò#ŠUòAž Œ+ùQQèˇ]µûPl*Q%g딨ñ95w:}E 9ƒ{”/k@”½š»ÜO 8²üg¯> ê]…D1½+è1OáXuŸ(Ý'š'M™è€ð¾è‡À;½nG¸k0ÙCR/¹IÁ÷C¨y/@CÀB«Wû í¿±GUÌf´…!g@[ÔZÀp@²&ZPÚ8 ‰)(irñb0œÊÉâšVj)Æhç9qçœtèž•bôмVVù¤_1ãJ€Ýkbsb}®Vn*‘wÿì… Õ]ÂÛÈW6sTÒ 7Ë ÏÚ±5&û«†$Þ¯o+ ì&é£(<ÚÆ^èJ­3´¢"g|I i±~¶©i¹rT^N Cñh7°<5Ð ž.éY#` Bªz݉€î^ù•KjÉ#4“çxÕÀ Ÿ2BtØŸ/2$4†yCUÐ>µÊY+5ÅÑ®¶’/JèY„2ðQ¢$À˜äˆá ÖEP¢šÒÏC÷Ñ/äTäX8×GéÝèžµ0씜ö§Š´NbïPTºQq{BØrVI«-Tz bl[Á‰Ea·¬Šbh ºÛ%YÔÀ3}ˆY‘ðÒ„!‘£¹ØW=×¶¼ Ì ,¸Õü6µ†ª¡>nšé‰8ôÜ\lYDÐÐkc½òD†¼§8¯©.fIKº^l `ªÚ<–¦ªå¨ÒR¨Ïÿ `UÝ endstream endobj 15 0 obj <>stream H‰¬–ËŽ›7 …_EëVDJÔeÝE×Ey£mží¼?ÐÔÿ=IqÒÀöÑ…—ÃCIª5YIZÍÓ$i•¼æ¯<‹&m%Ï1“˜å"#]iY› ~Ü›yJKjeïî%·Ù}µµÜ¤2¢™Uà‘g÷5÷ž´KÖê°åµÔ7 É¥tF09,é,¹Z†Uñ8g¶²ñ4Ö_d̬£#·ôç/é÷ôw’Tø'£1rÕRÊ Ñ<Š­…ËëKúðëÇ’®¯©àqú§èñ™^¯_҇ߘþë5켤 3Ê*< ‘•ä)UŸh|a¹ Â!]§©bSΦøMÍ Ç¨$ëTG¬s`±©@% Ïö¸Ðáí÷Ra÷Ýȧ}G§ëB Ž ”·{Àšµ¬3ɵn!èd¨Ø´ŒA-wÏ÷Àÿü‘>¥/´—`UŠzOR-%K·MuÃ:Å]Y娨a¾ñp6 … 2«}nc§ØO¬–¬{®œÄ«Æ îæò„´¬°íipmX£æF‘kïæà‘]ÌènüŸÓJ| µ¦÷/ÜKRk8«=òcĸS.¨¡Gæ\hø…®É’õ¯.ž¨Â9åæ…ìЙçêFUâœ|$ÿa‰Ç³øÛýø3Ê‚’”VU{Ö›Îþiµç¤Õ×WÒjOKK¿[Zú_Ò"‚iù½ðNZÊ iõ÷ÒjßHk|%-}NZý´ÆÒ„g®§å—@ãvqõ<--ª/!¿M¼†›OW„®l]­£±uCj¬òÓÝkä*ÇBm{9E3÷¯|P;¸¦[ØÃ ¼ˆ²NÄ+ÊF¼ê¸NÄo6ñâìsû3u\^ Ïo/,-$yÛs úÙ…ä¹Ì¸’yß!ù9|Â5ÊG»:TyPevQ"Iõ龚ÈÈN°uáò;¼B~Ù EÛõê®bœnÕSNçÚcqДÈé Ùywm2úü_^+ºÆ$Z#ØÜl^#àsà¶ße²Õ;£+Å4ö«‹Rý|÷öž¿Ûw>ÒÒ¿ °kU2 endstream endobj 16 0 obj <>stream H‰¤VËŽ#7 üX+R”(žsÈ9È!Ð@’ƒg`þHûáñl2Á``Àî²$>‹¥þ½|/) )²fÕ&c©SF„÷²½”o?ÿÖÊöZZmmñ[ôø.¯Û÷òí,ÿùšV^p2F/7©øžµÈgšlµÏ\é² lñÄ®Eg5›Ek×N°\JÔŠêµ…±:bíµ·^ÄëK+sòÇfÐê¬Ñ¬h«nXuŽ ¨¢Ù„ Ž7bG(:j‡T'š>h@åB©=Vñƒüx²yÆç@M{£.™¥k5-÷¢«"§Ž°Çä&O …X ;"RtàÂp‚¨aMzÈÊì™l€-fÆìöç:Ë"ÁŸ±tORÛ`õƒ«hñbeÝÀÈBØ{åD=S– Ɔ G¥ºê6ì·²êH ‰Ô…žxíBSd½üñSùŸÁÔKÌÖ†–¾.®}–ahBkŒÀ„ž'cóðï“Í"‚a7äŠueeA)RÑO°‘|ŒÿÀ7fã,• õ@1l­ÅÖÜF’°£ñ³Ü´xÕò³•¿ò¨‚ê{Zä´(ˆä^ny`x¡óçû{ GùÞo¢ ¶Z³,M“¦úùéDX¤ È4ÆÀÔäD ¸‚ZIЀ”Ä#N”42ÎÕ± ®€rŠ˜9˜œóËLîXäê9dœï둉Úb\5ùVö$KNÂØqœ³ l“xbÊö!îFäà+\KÙpx4©pNžz†Ç2tÛ}®ÚÝOß2»0’~Œ,üƒÚ0µ†ç¨-Ìßï¤ÚÌc-8Ý7Žl`VÇËÚƒY1Ÿ™5¾Æ¬þ̬ÿ!Ö|O¬þ±ì±ü±äb=ñªgå;áYç endstream endobj 17 0 obj <>stream H‰”–ËŽ7 DEë–E‰z­AVÌ"ÐÈcqm ñ"¿ŸSìî;c$Àï°[-‹U¤v^½§‘ûì©ç2v²’kßéƒå]ûĞݟokÍ}÷ô¡ä9ø©-[k,²Ü†k9Oúü–<šñfåUø­=ÛfåÊÛö3äNßóí}É¥+tXÉs™ëÜ´«[žØzÞ«¥Gúý‡ôKú+Y*ü³ä<ÝK™Éf6ï¥8‡|N_^K:¾&v/Kÿ[½þO_/éãO¼þãkìòYD #Oëغpã§U¿£#2¯°w¿¶J~Ußnó§~[®‘,q›N}²h’˜5:tx½£#<\!€àpç5ZböÚÙ·ÎâGú3MŽŸ©5^.RpÊââ`ÕÉ{P8›ŠKÞ­GðíËîHÁöî5õV¡Ef:´ÅS‡þyU{®~~e”Í62Q¬<žëÈ;æ ¬ù¶À/Ú 9Ô’Ç–OÈ\r¸<8‘j•$Zä Ê·ý¬á·h»L©®žqUŸŽ“ÔBÎøïßÒ¯éË»Zöºr­”Ö£lVjýþ&Ñòozày¾Ò˜Ô«”VÆ™ìV:]ä Žte~½#oÌ@ëó9b/ge‹†K$¡‡TåXâ=y׳ô箃j¬5ñgË+$¡ÆòÐ1NÆEJuG¿=4@ŽúÙ *ºÞ¡|Ö¢©•-ò=9/íÔIóXZе©3Æ®š3y”¤“،Ĕ_ÄM€²°ÂƒC%€!‘ñS“"ôà¥XG0$Ä©Žè›\:ïè±ÇwLòú„‡.*0 ÀÄHQk ^¸[ûÖHU%¾¾TÛx;寙«âMwo±­Œ¶1Z[SD±'ƒò Õ·fÛ"ºlÕFS/¿ÅZÖbC>T¡LÐV÷L¤¥Î}òzNƒ0ÅûîÕa¹¿ÕPè_bð’üËëÿIþõågPjvÿìš>%9ÀÞ@ ‡ ‡¨ ît KJž§P†­’2YjZ0«©Ñlé UC…Σ‡Iêº @ñ˜¡€Ñ[Œ˜Áâ‹{ÁZ"¾“’Èõ² ¯xйC÷˜Ÿ/„5mœólipN -·¤>áq®FÞ–¢WÜ{FÀ*°o1è7#ÊÔ˜ã0h.ÆGss,´c² 0ZŒ9ë*Ò”J–L>stream hÞœ–wTTׇϽwz¡Í0Òz“.0€ô. QfÊà Mlˆ¨@DE €£¡H¬ˆb!(¨`HPb0Ѝ¨dFÖJ|yyïåå÷ǽßÚgïs÷Ù{Ÿµ.$O./– ™'àz8ÓW…Gбýx€¦0Y驾AîÁ@$/7zºÈ ü‹Þ Hü¾eèéO§ƒÿOÒ¬T¾È_ÄælN:KÄù"NʤŠí3"¦Æ$ŠF‰™/JPÄrbŽ[䥟}ÙQÌìd[ÄâœSÙÉl1÷ˆx{†#bÄGÄ\N¦ˆo‹X3I˜Ìñ[ql2‡™Š$¶ 8¬x›ˆ˜Ätñrp¤¸/8æ p²âC¹¤¤fó¹qñº.KnjmÍ {r2“8¡?“•Èä³é.)É©L^6‹gþ,qmé¢"[šZ[Zš™~Q¨ÿºø7%îí"½ øÜ3ˆÖ÷‡í¯üRê`ÌŠj³ë[Ì~:¶ wÿ›æ!$E}k¿ñÅyhây‰RmŒ333¸–‘¸ ¿ë:ü }ñ=#ñv¿—‡îʉe “tqÝX)I)B>==•ÉâÐ ÿ<Äÿ8ð¯óXȉåð9€¢yPÜõßûæƒâ›¦:±8÷Ÿýû®p‰ø‘ÎûçLg ù‹kâk Ѐ$È t!0VÀ87°ø`ֈɀ2A.Ø @Øö‚JPêA#h'@8 .€Ëà:¸ î€`Œƒç`¼óa!2Dä!UH 2€Ì d¹A>P ECqB¹Ð¨*…*¡Z¨ú:]€®BÐ=hš‚~…ÞÃL‚©°2¬ Ã Ø ö†ƒá5pœçÀùðN¸®ƒÁíðø:|ŸÃ³@ˆ QC â‚ø!H,ÂG6 …H9R‡´ ]H/r A¦‘w( Š‚¢£ Q¶(OTŠ…JCm@£*QGQí¨Ô-Ô(jõ MF+¡ Ð6h/ô*t:]€.G7 ÛЗÐwÐãè7 ††ÑÁXa<1á˜Ì:L1æ¦s3€ÃÌb±Xy¬Öë‡ebØì~ì1ì9ì vûGÄ©âÌp‡+Ç5áÎâq¸y¼^ oƒ÷óñÙø|=¾ ?ŽŸ'Htv„`Ba3¡‚ÐB¸DxHxE$Õ‰ÖÄ"—¸‰XAàPð4Ð407°7ˆÔô&Ø9¸$øAˆnˆ0¤;T242´1t.Ì5¬4ld•ñªõ«®‡+„sÃ;#°¡ ³«ÝVï]=iY9´FgMÖš«kÖ&­=%ÅŒ:Ž‹nŠþÀôcÖ1gc¼bªcfX.¬}¬çlGv{ŠcÇ)åLÄÚÅ–ÆNÆÙÅ퉛Šwˆ/Ÿæºp+¹/<jæý$.$…%µ&ã’£“Oñdx‰¼ž•”¬”TƒÔ‚Ô‘4›´½i3|o~C:”¾&½S@ýLõ u…[…£öUo3C3OfIgñ²ú²õ³wdOä¸ç|½µŽµ®;W-wsîèz§õµ  1º7jlÌß8¾ÉcÓÑ͉̈́›È3É+Í{½%lKW¾rþ¦ü±­[› $ øÃÛl·ÕlGmçnïßa¾cÿŽO…ìÂkE&EåEŠYÅ×¾2ýªâ«…±;ûK,KîÂìâíÚí°ûh©tiNéØß=íeô²Â²×{£ö^-_V^³°O¸o¤Â§¢s¿æþ]û?TÆWÞ©r®j­VªÞQ=w€}`ð ãÁ–嚢š÷‡¸‡îÖzÔ¶×iוÆÎ8ü´>´¾÷kÆ× E ðŽŒ <ÚÓhÕØØ¤ÔTÒ 7 ›§ŽE»ùë7-†-µ­´Ö¢ãà¸ðø³o£¿:á}¢û$ãdËwZßU·QÚ Û¡öìö™ŽøŽ‘ÎðÎS+NuwÙvµ}oôý‘Ój§«ÎÈž)9K8›vá\ιÙó©ç§/Ä]ëŽê~pqÕÅÛ==ý—¼/]¹ì~ùb¯Sï¹+vWN_µ¹zêãZÇuËëí}}m?XüÐÖoÙß~ÃêFçMë›]ËÎ: ^¸åzëòm¯Û×לּ302tw8rxä.ûî佤{/ïgÜŸ°é!úaá#©Gå•×ý¨÷cëˆåÈ™Q×Ѿ'AOŒ±Æžÿ”þÓ‡ñü§ä§åª“f“§§Ü§n>[ýlüyêóù邟¥®~¡ûâ»_é›Y53þ’ÿrá×âWò¯Ž¼^öº{Ööñ›ä7ós…oåß}Çx×û>ìýÄ|æ쇊z»>yz¸¼°ð›÷„óû endstream endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <<>> endobj 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj <> endobj 4 0 obj <>stream application/pdf Print Benjamin Jurke 2010-04-30T00:10:48+02:00 2010-04-30T00:10:48+02:00 2010-04-30T00:10:19+02:00 Adobe Illustrator CS4 256 128 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAgAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq8l/Pj885Pyx Ojw2mnRand6n67vFJK0Xpxw8AG+FWryZz92KvJf+h29d/wCpWtf+kqT/AJoxW3f9Dt67/wBSta/9 JUn/ADRitu/6Hb13/qVrX/pKk/5oxW3f9Dt67/1K1r/0lSf80Yrbv+h29d/6la1/6SpP+aMVt3/Q 7eu/9Sta/wDSVJ/zRitu/wCh29d/6la1/wCkqT/mjFbd/wBDt67/ANSta/8ASVJ/zRitu/6Hb13/ AKla1/6SpP8AmjFbd/0O3rv/AFK1r/0lSf8ANGK27/odvXf+pWtf+kqT/mjFbd/0O3rv/UrWv/SV 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 n5a8x6v5a16y13R5zb6jYSCW3k6ivQqw7qykqw7g0xV9p/lv/wA5R/l75otIYNbuo/Lmt0Amgu24 2rtTdork/AF9pCp7b9cCXrmn6ppmpW4udOu4b23Owmt5ElQ/7JCRirWoarpemxetqN5BZQ/78uJE iXandyB3xVgfmX/nIX8odAWQXHmKC9uI+lvp9bxmP8oaENED/rOMVeeXP/OSnnnzdM9j+Vnku5vS SVGqXy1jSvwglEKxIa7gvNTxGKrbX/nHn8x/PF1FqP5tebJpYVb1E0OwYFEJ6ivFYIz2PCNq/wA2 KvbPJ/kLyh5OsPqPlzS4dPiIAlkQcpZCO8srcpHP+scVT/FXYq7FXYq7FXYq7FWmVWUqwDKwoync EHscVQP6A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKtt r/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/ AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36 A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5p xV36A0L/AKttr/yJj/5pxV36A0L/AKttr/yJj/5pxVhvm/8AIP8AKrzW7z6hocVvev1vbEm1lJ/m b06I593U4qwVv+cMPytLEjU9bUE7KLi1oPvtScVVLf8A5w0/KqKTk99rM6/77kuLcL/wluh/HFWa +XvyA/KDQXSS08t2086dJr3neGvjxnaRAfkoxVn8MMMESQwRrFDGAscaAKqqNgABsBiq/FXYq7FX Yq7FXYq7FXYq7FXzv/zl1+Y2v+W7fy7pXl/VbjTL27ee6u3tJGik9KMLHGGZSDxZnfb/ACcVYBp/ kj/nLy/sLa/ttV1Jra7iSeFm1dEJSRQ6kq0wIND0OKvqnyFpmt6Z5M0ax126lvNahtI/0lcTSeq5 uGXlKDJU8grsVBr0GKppDq2lT301hBeQS39uA1xaJIjTRqeheMHkoPuMVUdR8x+XtMlWLUtUtLGV 90juZ44mYHwDspOKo9HR0V0YMjAMrKagg7ggjFUBqXmHy/pciRanqdpYyyCsaXM8cLMK0qodlJ3G Ko6OSOSNZI2DxuAyOpBBBFQQR1BxVdiqWah5o8s6bcfVtR1eysrjb9zcXEUT/F9n4XYHftiqMsr+ xvoBcWNzFdQE0E0LrIhI/wApSRiqBn82eVbe8ayuNZsYbxTxa2kuYVlBBAoULBu/hiqa4q+fP+ci /KP50695y0L/AATPepoxt1jk+qXRto4btZXZppuLpQemyUbfoQN+qr32xhngsreG4mNxPFGiSzkU MjqoDOQP5jviq761bfWPq3rJ9Z48/R5Dnx/m49aYqqYq+YP+ctPzM816J5m0LQfLerXWmSLaPd3f 1KV4mkNxJ6cSvwIrx9BqD/KxVj//ACrv/nMT/q6aj/3GIv8Aqvir6x0Gzu7LQ9Osrydrq8tbWGG5 uZGLvJJHGFeRmbdizCpJxVUtNV0u8nuLezvILme0IW6ihkSR4i1aCRVJKk8T18MVUL3zL5dsLpbO +1Wztbt6cbee4ijkNelEZg2+KpjiqW33mby3p90tpf6rZ2l09ONvPcRRSGoqKI7Bu2KpkCCAQag7 gjFUv1HzF5f0yVYdS1O0spXFUjuJ44mYewdlJxV8p/k95i8w+ef+cjrzUBqV5JoVvPfaiLP6xL6I t1LRWylA3CitJHtTFX1jqWsaTpcIn1O9t7GAmgluZUhQkCp+Jyo6YqqWV/Y31utzY3EV1btULNC6 yISOtGUkYqr4qgINf0KfUH02DUrWXUYq+pZJNG068ag8ow3MUoe2Kuk8waDHqK6ZJqVqmpOaJYtP GJydukRbn3HbFXxd/wA5QapfeZPzsl0nT4ZL+XTYbbTrW0gR5HkkK+u6KifEzc5iu2+2KHqvkL83 P+cidW816Po+qeRotK0WeeOO9u20rUrZIbZd5Csks3poeCkJUUrTY9MUvLfz21PWtf8A+cjGtfLj s+rWM9lYaS6fCUuYwrgg9vTndjyPSlemKs11Py5ff848+Q9X1gasmq+c/NjQ2NrcCJlFqyiSS4lV nZzN9oGrKvxcajqMVeETP5NvvL95q2ta3ql751umZ0gECPb8+fWe5lk9R+S7/Cu3TfCh7L5F/Mvz V+Xn/ON019IWF9qepyWnlT6wpYxwtErSzorbGJHWTgKU59ajAl41LJ5P1DQL7V9d1vVL3zrdu0kU CwrJAWLD4ri5mk5sWFT8K7e+FD6t/wCcQYvMiflhMdU9Uae99I2iiav9xwTmY6/7rMvKlO/LAlKP +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 TChEj259iWxV/9k= uuid:8ef1d6f5-8f17-43dc-807f-5629cc55c9d9 xmp.did:887FE7F0DB53DF11B08A9DD77E16A16F uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf uuid:25309aba-6ddf-a941-9bd2-dd7653570218 xmp.did:F77F117407206811818C85DF6A1A75C3 uuid:5D20892493BFDB11914A8590D31508C8 proof:pdf converted from application/pdf to <unknown> saved xmp.iid:D27F11740720681191099C3B601C4548 2008-04-17T14:19:15+05:30 Adobe Illustrator CS4 / converted from application/pdf to <unknown> converted from application/pdf to <unknown> saved xmp.iid:F97F1174072068118D4ED246B3ADB1C6 2008-05-15T16:23:06-07:00 Adobe Illustrator CS4 / saved xmp.iid:FA7F1174072068118D4ED246B3ADB1C6 2008-05-15T17:10:45-07:00 Adobe Illustrator CS4 / saved xmp.iid:EF7F117407206811A46CA4519D24356B 2008-05-15T22:53:33-07:00 Adobe Illustrator CS4 / saved xmp.iid:F07F117407206811A46CA4519D24356B 2008-05-15T23:07:07-07:00 Adobe Illustrator CS4 / saved xmp.iid:F77F117407206811BDDDFD38D0CF24DD 2008-05-16T10:35:43-07:00 Adobe Illustrator CS4 / converted from application/pdf to <unknown> saved xmp.iid:F97F117407206811BDDDFD38D0CF24DD 2008-05-16T10:40:59-07:00 Adobe Illustrator CS4 / converted from application/vnd.adobe.illustrator to <unknown> saved xmp.iid:FA7F117407206811BDDDFD38D0CF24DD 2008-05-16T11:26:55-07:00 Adobe Illustrator CS4 / saved xmp.iid:FB7F117407206811BDDDFD38D0CF24DD 2008-05-16T11:29:01-07:00 Adobe Illustrator CS4 / saved xmp.iid:FC7F117407206811BDDDFD38D0CF24DD 2008-05-16T11:29:20-07:00 Adobe Illustrator CS4 / saved xmp.iid:FD7F117407206811BDDDFD38D0CF24DD 2008-05-16T11:30:54-07:00 Adobe Illustrator CS4 / saved xmp.iid:FE7F117407206811BDDDFD38D0CF24DD 2008-05-16T11:31:22-07:00 Adobe Illustrator CS4 / saved xmp.iid:B233668C16206811BDDDFD38D0CF24DD 2008-05-16T12:23:46-07:00 Adobe Illustrator CS4 / saved xmp.iid:B333668C16206811BDDDFD38D0CF24DD 2008-05-16T13:27:54-07:00 Adobe Illustrator CS4 / saved xmp.iid:B433668C16206811BDDDFD38D0CF24DD 2008-05-16T13:46:13-07:00 Adobe Illustrator CS4 / saved xmp.iid:F77F11740720681197C1BF14D1759E83 2008-05-16T15:47:57-07:00 Adobe Illustrator CS4 / saved xmp.iid:F87F11740720681197C1BF14D1759E83 2008-05-16T15:51:06-07:00 Adobe Illustrator CS4 / saved xmp.iid:F97F11740720681197C1BF14D1759E83 2008-05-16T15:52:22-07:00 Adobe Illustrator CS4 / converted from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator saved xmp.iid:FA7F117407206811B628E3BF27C8C41B 2008-05-22T13:28:01-07:00 Adobe Illustrator CS4 / converted from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator saved xmp.iid:FF7F117407206811B628E3BF27C8C41B 2008-05-22T16:23:53-07:00 Adobe Illustrator CS4 / converted from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator saved xmp.iid:07C3BD25102DDD1181B594070CEB88D9 2008-05-28T16:45:26-07:00 Adobe Illustrator CS4 / converted from application/vnd.adobe.illustrator to application/vnd.adobe.illustrator saved xmp.iid:F87F1174072068119098B097FDA39BEF 2008-06-02T13:25:25-07:00 Adobe Illustrator CS4 / saved xmp.iid:F77F117407206811BB1DBF8F242B6F84 2008-06-09T14:58:36-07:00 Adobe Illustrator CS4 / saved xmp.iid:F97F117407206811ACAFB8DA80854E76 2008-06-11T14:31:27-07:00 Adobe Illustrator CS4 / saved xmp.iid:0180117407206811834383CD3A8D2303 2008-06-11T22:37:35-07:00 Adobe Illustrator CS4 / saved xmp.iid:F77F117407206811818C85DF6A1A75C3 2008-06-27T14:40:42-07:00 Adobe Illustrator CS4 / saved xmp.iid:887FE7F0DB53DF11B08A9DD77E16A16F 2010-04-30T00:09:54+02:00 Adobe Illustrator CS4 / Print False False 1 612.000000 792.000000 Points Cyan Magenta Yellow Black Default Swatch Group 0 White CMYK PROCESS 0.000000 0.000000 0.000000 0.000000 Black CMYK PROCESS 0.000000 0.000000 0.000000 100.000000 CMYK Red CMYK PROCESS 0.000000 100.000000 100.000000 0.000000 CMYK Yellow CMYK PROCESS 0.000000 0.000000 100.000000 0.000000 CMYK Green CMYK PROCESS 100.000000 0.000000 100.000000 0.000000 CMYK Cyan CMYK PROCESS 100.000000 0.000000 0.000000 0.000000 CMYK Blue CMYK PROCESS 100.000000 100.000000 0.000000 0.000000 CMYK Magenta CMYK PROCESS 0.000000 100.000000 0.000000 0.000000 C=15 M=100 Y=90 K=10 CMYK PROCESS 14.999998 100.000000 90.000004 10.000002 C=0 M=90 Y=85 K=0 CMYK PROCESS 0.000000 90.000004 84.999996 0.000000 C=0 M=80 Y=95 K=0 CMYK PROCESS 0.000000 80.000001 94.999999 0.000000 C=0 M=50 Y=100 K=0 CMYK PROCESS 0.000000 50.000000 100.000000 0.000000 C=0 M=35 Y=85 K=0 CMYK PROCESS 0.000000 35.000002 84.999996 0.000000 C=5 M=0 Y=90 K=0 CMYK PROCESS 5.000001 0.000000 90.000004 0.000000 C=20 M=0 Y=100 K=0 CMYK PROCESS 19.999999 0.000000 100.000000 0.000000 C=50 M=0 Y=100 K=0 CMYK PROCESS 50.000000 0.000000 100.000000 0.000000 C=75 M=0 Y=100 K=0 CMYK PROCESS 75.000000 0.000000 100.000000 0.000000 C=85 M=10 Y=100 K=10 CMYK PROCESS 84.999996 10.000002 100.000000 10.000002 C=90 M=30 Y=95 K=30 CMYK PROCESS 90.000004 30.000001 94.999999 30.000001 C=75 M=0 Y=75 K=0 CMYK PROCESS 75.000000 0.000000 75.000000 0.000000 C=80 M=10 Y=45 K=0 CMYK PROCESS 80.000001 10.000002 44.999999 0.000000 C=70 M=15 Y=0 K=0 CMYK PROCESS 69.999999 14.999998 0.000000 0.000000 C=85 M=50 Y=0 K=0 CMYK PROCESS 84.999996 50.000000 0.000000 0.000000 C=100 M=95 Y=5 K=0 CMYK PROCESS 100.000000 94.999999 5.000001 0.000000 C=100 M=100 Y=25 K=25 CMYK PROCESS 100.000000 100.000000 25.000000 25.000000 C=75 M=100 Y=0 K=0 CMYK PROCESS 75.000000 100.000000 0.000000 0.000000 C=50 M=100 Y=0 K=0 CMYK PROCESS 50.000000 100.000000 0.000000 0.000000 C=35 M=100 Y=35 K=10 CMYK PROCESS 35.000002 100.000000 35.000002 10.000002 C=10 M=100 Y=50 K=0 CMYK PROCESS 10.000002 100.000000 50.000000 0.000000 C=0 M=95 Y=20 K=0 CMYK PROCESS 0.000000 94.999999 19.999999 0.000000 C=25 M=25 Y=40 K=0 CMYK PROCESS 25.000000 25.000000 39.999998 0.000000 C=40 M=45 Y=50 K=5 CMYK PROCESS 39.999998 44.999999 50.000000 5.000001 C=50 M=50 Y=60 K=25 CMYK PROCESS 50.000000 50.000000 60.000002 25.000000 C=55 M=60 Y=65 K=40 CMYK PROCESS 55.000001 60.000002 64.999998 39.999998 C=25 M=40 Y=65 K=0 CMYK PROCESS 25.000000 39.999998 64.999998 0.000000 C=30 M=50 Y=75 K=10 CMYK PROCESS 30.000001 50.000000 75.000000 10.000002 C=35 M=60 Y=80 K=25 CMYK PROCESS 35.000002 60.000002 80.000001 25.000000 C=40 M=65 Y=90 K=35 CMYK PROCESS 39.999998 64.999998 90.000004 35.000002 C=40 M=70 Y=100 K=50 CMYK PROCESS 39.999998 69.999999 100.000000 50.000000 C=50 M=70 Y=80 K=70 CMYK PROCESS 50.000000 69.999999 80.000001 69.999999 Grays 1 C=0 M=0 Y=0 K=100 CMYK PROCESS 0.000000 0.000000 0.000000 100.000000 C=0 M=0 Y=0 K=90 CMYK PROCESS 0.000000 0.000000 0.000000 89.999402 C=0 M=0 Y=0 K=80 CMYK PROCESS 0.000000 0.000000 0.000000 79.998797 C=0 M=0 Y=0 K=70 CMYK PROCESS 0.000000 0.000000 0.000000 69.999701 C=0 M=0 Y=0 K=60 CMYK PROCESS 0.000000 0.000000 0.000000 59.999102 C=0 M=0 Y=0 K=50 CMYK PROCESS 0.000000 0.000000 0.000000 50.000000 C=0 M=0 Y=0 K=40 CMYK PROCESS 0.000000 0.000000 0.000000 39.999402 C=0 M=0 Y=0 K=30 CMYK PROCESS 0.000000 0.000000 0.000000 29.998803 C=0 M=0 Y=0 K=20 CMYK PROCESS 0.000000 0.000000 0.000000 19.999701 C=0 M=0 Y=0 K=10 CMYK PROCESS 0.000000 0.000000 0.000000 9.999102 C=0 M=0 Y=0 K=5 CMYK PROCESS 0.000000 0.000000 0.000000 4.998803 Brights 1 C=0 M=100 Y=100 K=0 CMYK PROCESS 0.000000 100.000000 100.000000 0.000000 C=0 M=75 Y=100 K=0 CMYK PROCESS 0.000000 75.000000 100.000000 0.000000 C=0 M=10 Y=95 K=0 CMYK PROCESS 0.000000 10.000002 94.999999 0.000000 C=85 M=10 Y=100 K=0 CMYK PROCESS 84.999996 10.000002 100.000000 0.000000 C=100 M=90 Y=0 K=0 CMYK PROCESS 100.000000 90.000004 0.000000 0.000000 C=60 M=90 Y=0 K=0 CMYK PROCESS 60.000002 90.000004 0.003099 0.003099 Acrobat Distiller 9.3.2 (Windows) endstream endobj 5 0 obj <> endobj xref 0 6 0000000000 65535 f 0000014588 00000 n 0000014622 00000 n 0000014646 00000 n 0000014697 00000 n 0000086617 00000 n trailer <]>> startxref 116 %%EOF cohomCalg-0.32/manual/latex_source/img_open_source_logo_gray.pdf000066400000000000000000000216551322050713700252270ustar00rootroot00000000000000%PDF-1.4 %âãÏÓ 6 0 obj <> endobj xref 6 13 0000000016 00000 n 0000000712 00000 n 0000000789 00000 n 0000000988 00000 n 0000001356 00000 n 0000001889 00000 n 0000002385 00000 n 0000002889 00000 n 0000003420 00000 n 0000003921 00000 n 0000004424 00000 n 0000004886 00000 n 0000000556 00000 n trailer <<44135E8276EE384991806724C85457B7>]/Prev 8884>> startxref 0 %%EOF 18 0 obj <>stream hÞb``àb``ªd?LÀÂÀÄã‚b_N[ŸR¶ñÒ«4@d„Ži& ¶bVE_ˆ8Ãi€D|9 endstream endobj 7 0 obj <> endobj 8 0 obj <>>>/Rotate 0/Type/Page>> endobj 9 0 obj <>stream H‰ÜS;NA ½Š/°f<{ì¤F9B$‚PRD\Ÿ72 ¡@ìëçß³ý´*x…BY-2ÕHZåÚ{â¡Ã™ » éa·/t|]óÏ´Ô` ‡½˜p·²ôÜðúmtØ<]9¥Ñ¢{ 3+‡:-×J)†çŠÚŃ,'Ä*g<ÆÑ=RÑ;Y½ßáÉzó4+*óJ¦ k•Ò&:¢U&Fm™µ78›OÇ•} 7¨>†Ãðšsxdc?—m¿ dŸ}½ÎÝà¤[˜'·ÏUˆ‚à3=Ñ#]~$e‘J;B—4zCî ý®öÏuµ_×uÿIWÑÆEÁ…kèßaú¦ë×_´ŒÓ˜ëzeìáßp¦q »7…MrìÂÕ}"z`õÑq endstream endobj 10 0 obj <>stream H‰t“MŽ1„¯ÂÆÁà?Nu”#´”ÉbfåþRªp»g)‹×¯ÁPÚ‹!*oøñùS~È7ù%5¹JmQ檣K×2½+l¹ÞE‹V“Wùòõ»Êë¼¶Fg¤=‘¨x£]+ßO›r%d/Úœ`:^78=½ŽhAŽÁöÑxÈh·>™ïNש§g VµN{â´2¤uhê% ãM^&–lY‰]v@Wú‡vÐ^žzf™5…O˜‹âVÖXÂ_ä)Oˆ}á;0RoçU¬¢JÛ…ÍÊŒ‰ÒPâB¡¶"oŸ^,\ò’ÙM+#Û ksCe¨Aê=ÉÔI©jiÓöE¹yš‘*3Ù–~_¢•fÙ¤£€“+çí8â<9"©§JÆ6M¯bã@޷¹iÏžz/öü§/†ûzzÅžôøÀÿì-DôaÁÀõ¬íß목Ýâi×1¨õÏ´SÊ|^sìó9¹Iïå€ÙscÞâɾ‘¢ æ8ýäÙpÚõŽ×;Íõ4ˆC3Rõ¶N™MQSÄšV|-–v—¹éâ’t,ãñæ±,né¡Sô°ÞÛF››R×IÃ/¦ù§;!]"éÕË endstream endobj 11 0 obj <>stream H‰d“Mnæ0†¯ÂBccŸ`ÖÕÁRÛE¾Åhî/ ø/UQ?¶Á/+\†I!aµ—¢r]@Ðá >àþ;‘¥aJ¹µš )µÖR‚þ‚·_¿ >ÿŽm//AwÈX¬Àå[?Ë›:\)v!fv,'…ˆ5T4zo,XU·‹Š…Úö?¡ïÃ'Ò2 å§©·G8Böís&5¤Z€ÐJ–­7WÙ4Â`á³÷©À„e†Qoò½ÉÎbE™Té!F&™[É÷á¦”Ž‡’ì›"ß$’öÄ=&2—³?œf9¾Œ£ú™¸¸ŒË»ÿ›i$Çá5Ëàœ¸ùÈß÷¾Šc±Ò½>¸²·& &·º¿1Íb)¡>stream H‰L“[Î!€·â†‚"Ê úÜt &mæhºÿ¤€#sÎ$G?äæ5`t.þ_."¨µ†Ök7.+ùê@Âå~ }šþb2i…Ž\®Ì’èö@}¤Aº„©\”ÕȤJ¦Ü ruϬÕ`¹ÿÖõ ÅÀZýLFÀlbà¶CÔ1ÖK M±à ±F(ûªÃ “p³*‰µá¤Ãc·FäºìܜŋY1ŠƒR³›–Q¸çé€V»/U[Ò®óJväuO&žaD䄾ˆ•³òòÌ‘x[gé=µ6ãô8§Î¼•«ü)¿Êò·PAû¨Èð† 2µÙÏ‹úU¾}ÿ‰å÷¿ÐúÚŽ»moߺCÜa›lWî€Õi²À1·M°E99ò·4©ƒö§(|hÅhXÎiŒbMÓƒÛóJA\|`eÔl`0vb£a 2w2¶Wé¡aQ!¥å¡Ïƒ4Cû~ uRº1lÞ†ç†W< ´é|;NŸÚ4Øá¥»÷uëSàu¼?Ï‹b¸É^‹hæýàŠç7lϹ½ë‘wÀFo¬å¿wîÏ endstream endobj 13 0 obj <>stream H‰tSK®1¼ hb~Æœ ë(Gh)ÉbÞ"Êý¥îîy‹D£qSþ@AÁÁ8}J Tš¨If‘´/qzCêç{c`pŸ;oØny'‘Î9Ñ—;˜[ÁåQ`ÎÏ ünÔ/ÕýÓ©¬í§’I\; k±–E“Ëò\”’Ëðʗ׃Χ¿ÀÑB©òN—Øn”5kIzjùÎ#ÍtŸÒ­²¹C$¿Q>3T‘¾*¦™­>hS~ê¹»òÒÂ:ø&¾í›öF¯d2â´[)uÐyB5­ÆxÚLËžiï7:˦ì¦ÊkIõ¿¨¶ïòT^å˜oÛîýzcô>éù(…²TT—Œ+þ*šÔ-àH¹rGÚ¹lû¼òÜèuÄF£¤ôÿÌ ͱ¥ˆìÒœ`#ùýkØ5º7GrK,VË1øFg©ÊDÏi졸^nT,à¯>¿ÑŠ endstream endobj 14 0 obj <>stream H‰l“KŽ\! E·Âžƒù­ ãV–ð¤tªQö/åÚ`^]%ÀŸk»®I<4U¢é•®…ƒJ+éê$…gÒ,éRjX6Ýéz0ÃDÚĺ<ÝØeøûJBS+ökH‹`ž¹¦ ‹öÄBKDZtGRq‹5æ¦CFÜ`‹{8”:ÂdådÁ¶¾“33$ n¨ù>ÒŸÄ®•%žyN-iR›ø ÷;ýøù+§Ï¿þì4jîŒhz¹¬zgÄ¥??wŒj&ÕÔ ôæPp¶Àíz«qWðÐ [# Í6Ãã´‡J£²…ë¸kĪ–Q§ºd^̤ÓJx±U‰áf jP”l#jâ™>“‡£6ômR†gCÖ¸:År^w”ö°ÕôqwÐÂÝçÀÓyTªÝ{ÝFA⊎@ opýª5î°t1+Œú†¸èÑwØóAõÿKvuéˆË¬L2K ÷x{ˆý’ãä?¯ØÛl,ëìßo&°tjs'Ú ý{þf3orÆüõ;¬D/‹`rö]Ãì³=uR*ÓþdéŸasÐ endstream endobj 15 0 obj <>stream H‰L“In1 E¯¢ ÃA©dmø$YØ Ã÷¡¥òªûIþ'U×&j s¶v=6V tK\kÎNïv(ê9ðüÈýIX@¢O¹£Ý½&¯Ê.\Ì»”Ff5*ð<¢©ÚxìPi¶‹lˆ÷F„®Zy…d=` Ã6ﺕâlMkhîJ²ƒHš !ŽJÞûÜR¦È£û£u_"ˆ.ÍûI.rÅ’)¼Ô•a ý×þ´·öÕ(™ bBôz-Øÿ¶û³ýúýŽíïw†}†17qU7w¢VC›}“ë&JSûš:Pïag¹l#£‹}—˜Ëy±Ë¥SŒ¦ïúôzÑJôÜÖÀ<Óüç ,óBÁÔ‚þ¢œbMNþP­jâô9r(ò¨QìaAký TW”¹2~Þö¾v%§a+hõL³ïˆ¢ƒŠ…øiz|åËšçvÅL~o…5Âg5âú$JqîÁ+ÊY^Q>áÙ»¨‰2“;ð`–×ÅY%͉[M™1•oÂÝÚùjÎs endstream endobj 16 0 obj <>stream H‰T“AŽ! E¯â ”ƒm0p‚¬£¡¤Ì,¦Qî/åÛ@µfÑE½Âàïo÷¥¬ÕIØÄéR–¦o( >馫°6*lnôTÔ€ÚñÄ*#W~ÒúEI’…Ä÷^J©F*ÜêÀ«Òý¢?úø—q/ü"Å´XÄz,Õ¾=!b઺*&—.'f²–ú\²(WvÙ‡-K½:ªªÔX&î©ì¨qÁœ­‚øp£ìkîý…b•'ÎD,<{m<¹U6Ó­²³›ŸL Éy<ˆåã“ÃÑXM‚æ8ÄL4ådŠ,2ßt¾«H~>L®qzû…¯ÚÇ‘t0ÞRÁú°¦‡Fóƒë ý2‡-@1 ÂCrGl™†kß4edÇG}CD,Hµ÷÷Þð ìÑcáØ_ÍV¿šgç­ãfã¶Š‘gW·èN0å솙£{hùv?¬> endobj 1 0 obj <> endobj 2 0 obj <> endobj 3 0 obj <> endobj 4 0 obj <>stream cairo 1.8.6 (http://cairographics.org) 2010-05-01T00:43:15+02:00 2010-05-01T00:43:01+02:00 2010-05-01T00:43:15+02:00 application/pdf untitled Acrobat Distiller 9.3.2 (Windows) uuid:dcf5a501-7d54-482b-90f1-1389fe06a4e8 uuid:69a6c646-0e6d-4246-ab4b-ff1ffc1954e0 endstream endobj 5 0 obj <> endobj xref 0 6 0000000000 65535 f 0000004963 00000 n 0000004997 00000 n 0000005021 00000 n 0000005072 00000 n 0000008681 00000 n trailer <<44135E8276EE384991806724C85457B7>]>> startxref 116 %%EOF cohomCalg-0.32/manual/latex_source/manual.bib000066400000000000000000000061501322050713700212410ustar00rootroot00000000000000% References for the "Commented References" section %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @Misc{cohomCalg:Implementation, title = "{\fontfamily{put}\bfseries\footnotesize\selectfont cohomCalg} package", howpublished = "Download link", url = "https://github.com/BenjaminJurke/cohomCalg", note = "High-performance line bundle cohomology computation based on \cite{CohomOfLineBundles:Algorithm}", year = "2010" } @Article{CohomOfLineBundles:Algorithm, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: A Computational Algorithm}", publisher = "AIP", year = "2010", journal = "J.~Math.~Phys.", volume = "51", number = "10", eid = "103525", numpages = "15", pages = "103525", doi = "10.1063/1.3501132", eprint = "1003.5217", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1003.5217;%%" } @Article{CohomOfLineBundles:Proof, author = "Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: Proof of the Algorithm}", publisher = "AIP", year = "2010", journal = "J.~Math.~Phys.", volume = "51", number = "10", eid = "103520", numpages = "11", pages = "103520", doi = "10.1063/1.3501135", eprint = "1006.2392", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1006.2392;%%" } @article{CohomOfLineBundles:Applications, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten and Roschy, Helmut", title = "{Cohomology of Line Bundles: Applications}", year = "2010", eprint = "1010.3717", archivePrefix = "arXiv", primaryClass = "hep-th", SLACcitation = "%%CITATION = 1010.3717;%%" } @Article{Jow:2010arXiv1006.0780J, author = "Shin-Yao Jow", title = "{Cohomology of toric line bundles via simplicial Alexander duality}", archivePrefix = "arXiv", eprint = "1006.0780", primaryClass = "math.AG", year = "2010", } @article{Blumenhagen:2011xn, author = "Blumenhagen, Ralph and Jurke, Benjamin and Rahn, Thorsten", title = "{Computational Tools for Cohomology of Toric Varieties}", year = "2011", eprint = "1104.1187", archivePrefix = "arXiv", primaryClass = "hep-th", } @article{BRTargetSpaceDuality, author = "Blumenhagen, Ralph and Rahn, Thorsten", title = "{Landscape Study of Target Space Duality of $(0,2)$ Heterotic String Models}", journal = "JHEP", volume = "09", year = "2011", pages = "098", doi = "10.1007/JHEP09(2011)098", eprint = "1106.4998", archivePrefix = "arXiv", primaryClass = "hep-th", reportNumber = "MPP-2011-71", SLACcitation = "%%CITATION = ARXIV:1106.4998;%%" }cohomCalg-0.32/manual/latex_source/manual.tcp000066400000000000000000000002731322050713700212730ustar00rootroot00000000000000[FormatInfo] Type=TeXnicCenterProjectInformation Version=4 [ProjectInfo] MainFile=manual.tex UseBibTeX=1 UseMakeIndex=0 ActiveProfile=LaTeX ⇨ PDF ProjectLanguage=en ProjectDialect=US cohomCalg-0.32/manual/latex_source/manual.tex000066400000000000000000001776371322050713700213300ustar00rootroot00000000000000\documentclass[12pt, a4paper]{article} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pdfminorversion=5 % PDF 1.5 (Acrobat 6.0 / 2003) \pdfcompresslevel=9 % max. content stream compression \pdfobjcompresslevel=9 % max. object compression %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % before submission, change a4paper % to letterpaper and remove the a4-package. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage{a4} \usepackage{graphicx} \usepackage{amsmath} \usepackage{amssymb} \usepackage{mathrsfs} % calligraphic letters for sheaves \usepackage[shortcuts, cyremdash]{extdash} \def\manualversion{v0.32} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Hyperref \usepackage{hyperref} \usepackage{hyperxmp} \hypersetup{ pdfdisplaydoctitle=true, pdftitle={cohomCalg Manual \manualversion}, pdfauthor={{Benjamin Jurke}; {Thorsten Rahn}}, pdfsubject={Mathematical Software, Algebraic Geometry, Mathematical Methods in Physics}, pdfkeywords={{cohomCalg}; {Koszul}; {manual}; {documentation}; {cohomology}; {arXiv:1003.5217}; {line}; {vector}; {bundles}; {implementation}}, pdfstartview={FitH}, pdfpagelayout={TwoColumnRight}, pdfcreator={LaTeX2e with hyperref/xmp package}, pdfcopyright={(c) 2010-2017 Benjamin Jurke, Thorsten Rahn; in collaboration with Ralph Blumenhagen, Helmut Roschy}, pdflicenseurl={https://github.com/BenjaminJurke/cohomCalg}, bookmarksopen, bookmarksnumbered, bookmarksopenlevel=2, breaklinks=true, colorlinks=true, linkcolor=darkred, citecolor=darkgreen, filecolor=dullmagenta, urlcolor=darkblue} \usepackage{xcolor} % existing: black, white, blue, red, green, yellow \definecolor{darkgrey}{rgb}{0.3,0.3,0.3} \definecolor{grey}{rgb}{0.4,0.4,0.4} \definecolor{lightgrey}{rgb}{0.5,0.5,0.5} \definecolor{xlightgrey}{rgb}{0.7,0.7,0.7} \definecolor{darkred}{rgb}{0.5,0.0,0.0} \definecolor{darkblue}{rgb}{0,0,0.4} \definecolor{darkgreen}{rgb}{0,0.4,0} \definecolor{dullmagenta}{rgb}{0.4,0,0.4} \definecolor{orange}{rgb}{1,0.5,0} \definecolor{lightbrown}{rgb}{0.75,0.5,0.25} \definecolor{tan}{cmyk}{0.14,0.42,0.56,0} \definecolor{djunglegreen}{cmyk}{0.99,0,0.52,0} \definecolor{lightgreen}{rgb}{0,1,0} \definecolor{olivegreen}{cmyk}{0.64,0,0.95,0.40} \definecolor{midgreen}{rgb}{0.0,0.675,0.0} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NOTE: If we are NOT using hyperref, UNCOMMENT the following line to avoid compile errors!!! %\newcommand{\texorpdfstring}[2]{#1} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \renewcommand*\ttdefault{txtt} \newcommand{\cohomCalgSmall}{{\text{\fontfamily{put}\bfseries\scriptsize\selectfont cohomCalg}}} \newcommand{\cohomCalg}{{\text{\fontfamily{put}\bfseries\footnotesize\selectfont cohomCalg}}} \newcommand{\cohomCalgMed}{{\text{\fontfamily{put}\bfseries\selectfont cohomCalg}}} \newcommand{\cohomCalgHuge}{{\text{\fontfamily{put}\bfseries\huge\selectfont cohomCalg}}} \newcommand{\cohomCalgKoszulSmall}{{\text{\fontfamily{put}\bfseries\scriptsize\selectfont cohomCalg Koszul}}} \newcommand{\cohomCalgKoszul}{{\text{\fontfamily{put}\bfseries\footnotesize\selectfont cohomCalg Koszul}}} \newcommand{\cohomCalgKoszulMed}{{\text{\fontfamily{put}\bfseries\selectfont cohomCalg Koszul}}} \newcommand{\cohomCalgKoszulHuge}{{\text{\fontfamily{put}\bfseries\huge\selectfont cohomCalg Koszul}}} \newcommand{\addPP}[1]{#1\nolinebreak\hspace{-.05em}\raisebox{.4ex}{\tiny\bf +}\nolinebreak\hspace{-.10em}\raisebox{.4ex}{\tiny\bf +}} \newcommand{\CPP}{\addPP{C}} \newcommand{\beq}{\begin{equation}} \newcommand{\eeq}{\end{equation}} \newcommand{\bal}{\begin{aligned}} \newcommand{\eal}{\end{aligned}} \newcommand{\BeginExampleBlock}{\begin{description} \item[Example:]} \newcommand{\EndExampleBlock}{\end{description}} \def\ov{\overline} \def\IR{\mathbb{R}} \def\IC{\mathbb{C}} \def\IP{\mathbb{P}} \def\IZ{\mathbb{Z}} \def\cO{\mathcal{O}} \def\cS{\mathcal{S}} \def\cP{\mathcal{P}} \def\cQ{\mathcal{Q}} \def\cH{\mathcal{H}} \def\cM{\mathcal{M}} \def\cV{\mathcal{V}} \def\fh{\mathfrak{h}} \def\fC{\mathfrak{C}} \def\fU{\mathfrak{U}} \def\fV{\mathfrak{V}} \def\shF{\mathscr{F}} \def\shG{\mathscr{G}} \def\shH{\mathscr{H}} \def\shI{\mathscr{I}} \def\labs{\left\|} \def\rabs{\right\|} \DeclareMathOperator{\indlim}{\underrightarrow{\lim}} \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mllap{\mathpalette\mathllapinternal} \def\mrlap{\mathpalette\mathrlapinternal} \def\mclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{% \llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{% \rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{% \clap{$\mathsurround=0pt#1{#2}$}} \def\ce{\mathrel{\mathop:}=} % a proper definition symbol := \def\fto{\longrightarrow} \def\injto{\lhook\joinrel\relbar\!\!\:\joinrel\rightarrow} \def\surjto{\relbar\joinrel\twoheadrightarrow} \setlength{\fboxsep}{3mm} \def\uspc{${}^\big.$} % ugly "spaceholders" for table formatting \def\lspc{${}_\big.$} \begin{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% TITLE %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{picture}(0,0)(0,0) \put(380,50){\includegraphics[height=1.3cm]{img_GPLv3_logo_black}} \put(400,0) {\includegraphics[height=1.5cm]{img_open_source_logo_gray}} \end{picture} \begin{center} % Main title \includegraphics[height=7cm]{cohomCalg_logo.png}\\[1cm] {\LARGE {\bf\---Manual {\manualversion} ---} }\\[15mm] {\sc Benjamin Jurke}~~~and~~~{\sc Thorsten Rahn} \\[5mm] in collaboration with\\[2mm] {\sc Ralph Blumenhagen}, {\sc Helmut Roschy}\\[5mm] \today\\[5mm] \end{center} %\vspace{1cm} \vfill \subsection*{Contact info} Please send all C/{\CPP}~implementation ({\cohomCalg} core program) related or other technical questions to \href{https://benjaminjurke.com}{Benjamin~Jurke}, reachable via eMail: \href{mailto:mail@benjaminjurke.com?subject=cohomCalg}{mail@benjaminjurke.com}.\label{contactaddress}\\[2mm] For all questions regarding the {\cohomCalgKoszul} extension please refer to Thorsten~Rahn (\href{mailto:thorsten.rahn@gmail.com?subject=cohomCalg}{thorsten.rahn@gmail.com}). \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%% DOCUMENT BODY %%%%%%%%%%%%%%%%%%% %%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section*{Introduction} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% {\cohomCalg} (an acronym pronounced ``cohom-calc'') is an implementation of the sheaf cohomology computation algorithm for line bundles on toric spaces presented in detail in \cite{CohomOfLineBundles:Algorithm} and subsequently proven in \cite{CohomOfLineBundles:Proof, Jow:2010arXiv1006.0780J}. Several applications are discussed in \cite{CohomOfLineBundles:Applications, Blumenhagen:2011xn}. The program is freely available under the GNU General Public Licence version 3.0 (\href{http://www.gnu.org/licenses/gpl.html}{GPLv3}) on the repository site \[ \text{\href{https://github.com/BenjaminJurke/cohomCalg}{https://github.com/BenjaminJurke/cohomCalg}.} \] The main program is written in {\CPP} and consists of a single main program executable file. Due to the implementation structure of the program and the ever-increasing spreading of 64-bit capable processors and operating systems, we consider the 64-bit version of the application to be the natural choice with the 32-bit version provided only as a fallback option for legacy computers. Furthermore, the 64-bit version is considerably faster compared to the 32-bit version on the same platform. The Koszul extension of the {\cohomCalg} package is a {\it Mathematica 7} and {\it 8} script and consists of a single file as well, but depends of the main program's executable.\\ {\bf Note:} Throughout this manual we assume some basic knowledge of toric geometry. A concise introduction to the subject can be found in \cite{CohomOfLineBundles:Algorithm}.\\ {\bf Acknowledgement:} Thanks to \href{http://www2.piedmont.edu/math/dtorrance/}{Doug Torrance} for several improvements and reorganizing {\cohomCalg} into a Debian package.\\[5cm] {\bf External dependencies}: The {\cohomCalg} package makes use of the following external libraries: \begin{itemize} \item The Polyhedral Library ({\tt PolyLib}); \href{http://www.gnu.org/licenses/gpl.html}{GPLv3 license}; mathematical library for computations involving polyhedra, used in the counting of monomials; available for download at \href{http://icps.u-strasbg.fr/polylib/}{http://icps.u-strasbg.fr/polylib/} \end{itemize} \clearpage \tableofcontents \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Installation Guidelines} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Main program} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsubsection*{Windows platform} The package comes with precompiled 64-bit and 32-bit binaries called {\it cohomcalg.exe} or {\it cohomcalg32.exe} in the `{\tt /bin/}' subdirectory for Microsoft Windows, which are statically linked to all required run-time libraries in order to avoid any troubles you might have running them. No further steps are required. \subsubsection*{Linux/Unix and Mac} On a Linux/Unix or MacOS X-platform you have to compile the binaries from the source code yourself, which is a fully automated process. Providing precompiled binaries would enlarge the package unnecessarily and not make use of platform-specific speedups. In order to compile {\cohomCalg} from source under a Unix-based platform (e.g.~Linux or MacOS X), just open a terminal, change into the {\cohomCalg} directory and use the \[ \text{\tt make} \] command. Now the script will compile the source files, link them together and produce the new executable {\it cohomcalg} (without any extension) in the `{\tt /bin/}' subdirectory, where the shipped Windows binaries are found as well. Using \[ \text{\tt make clean} \] deletes the temporarily generated subdirectory `{\tt /build/}' which contains the intermediate object files from the compilation process. \subsubsection*{General remarks} Unfortunately, there is no such automated build process available for the Microsoft Windows environment. The program code is fully cross-platform compatible, provided a few minor modifications (a limited number of preprocessor definitions in the source header {\it platform.h}) are applied for other platforms. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Koszul extension} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The Koszul extension of the {\cohomCalg} package requires a running copy of {\it Mathematica 7} or {\it 8}.\footnote{The script does not use any commands special to Version 7 or 8 of {\it Mathematica}, i.e.~in principle there are no obstacles to using an older version. However, lacking such older software, we were unable to test such usage. Please understand that we cannot offer any help regarding older versions of {\it Mathematica}.} Simply open the {\it Mathematica} notebook file from the program and make sure that the {\cohomCalg} main program is in the same directory. Right in the beginning of the notebook file you find a variable containing the name of the executable file that is used by the script. Change this variable to the correct name of the main executable, e.g.~{\tt cohomcalg.exe} or {\tt cohomcalg32.exe}. Then save the file for future usage. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Package contents} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Naturally, you can find the pre-compiled binaries in the directory `{\tt /bin/}' of the package. The Windows binaries {\it cohomcalg.exe} and {\it cohomcalg32.exe} can be distinguished for the Unix/Linux/MacOS X binary {\it cohomcalg} by the file extension `{\it .exe}', which is not required to be typed explicitly in the Windows command prompt\---Windows only considers files with certain extensions to be executable. The binaries directory also contains the {\it Mathematica 7} or {\it 8} notebook file of the Koszul extension. Under `{\tt /source/}' the source code of {\cohomCalg} is found. It also includes the modified version of the {\tt PolyLib} under `{\tt /source/polylib\_mod/}', which was stripped down to all necessary source files required for compilation. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Version history} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Like most other open source projects, we started {\cohomCalg} with a version number below v1.0 in order to reflect ongoing development before reaching a suitable level of stability. Each increase of the first digit after the dot reflects a major upgrade, the second digit is used for medium changes that warrant a manual upgrade. Furthermore, a lower-case letter may be added (like in v0.21d) to reflect minor internal bug-fixing or upgrades that do not require any change on the user's side. \begin{description} \item[v0.31] (May 25, 2011): Routines for discrete group actions, multi-core support, significant performance improvements. \item[v0.21] (October 18, 2010): {\cohomCalgKoszul} extension added. \item[v0.13] (July 23, 2010): Integration mode added. \item[v0.12] (June 25, 2010): Several minor bugfixes and improvements. \item[v0.11] (May 4, 2010): Original release of the {\cohomCalg} {\CPP} implementation. \item[v0.04] (March 29, 2010): Original public release of the {\it Mathematica 7} script, which is still available from the website. \end{description} \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \part[Main {\cohomCalgMed} program]{Main {\cohomCalgHuge} program} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Usage} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Command line parameters} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The program can be entirely controlled directly from the terminal. However, due to the usually somewhat lengthy input and output data, it is strongly suggested to use text input files. We make it a habit to append the extension {\it.in} to such input files, e.g.~{\it dP3.in}, however you are free to choose whatever name you like. Furthermore, it is recommended to redirect the program's standard output to a file via `{\tt > dP3.out}'. The most basic command line therefore takes the form \[ \boxed{\text{{\tt\bfseries cohomcalg dP3.in > dP3.out}}} \] and effective uses the data in {\it dP3.in} for input and prints the output into {\it dP3.out}. Instead of using an input file, you can also use the option `{\tt --in="..."}', where everything between the quotation marks is treated exactly like the data from an input file. All command line options are always specified before the input file name, i.e.~the general command line syntax is \[ \text{{\tt cohomcalg [--option1] [...] [--optionN] [inputfile] [> outputfile]}} \] and calling the program without any additional parameters shows a concise overview of all options. You can specify any combination of options from the following list: \begin{description} \item[\textnormal{{\tt -?}, {\tt /?}, {\tt --?}, {\tt -help}, {\tt /help}, {\tt --help}}\hspace{5mm}] Shows a concise list of command line options and the general syntax structure. The program will terminate after showing the list, so this option should not be paired with anything else. \item[{\tt --in="..."}\hspace{5mm}] Treats everything between the quotation marks like input data from a file. You may use both an input file and the `{\tt --in}' option, in which case the input data from the command line is effectively analyzed after the file contents. This is useful if you want to specify the geometry of a variety in a file and want to compute a number of different line bundle cohomologies subsequently without having to change the file each time. \item[{\tt --nomonomfile}\hspace{5mm}] As the size of the Stanley-Reisner ideal powerset grows exponentially with the number of generators, traversing all elements to compute the secondary/remnant sequences is a rather time consuming process for complicated geometries. Therefore, the program automatically looks for a file {\it inputfilename.monoms}, e.g.~{\it dP3.in.monoms} in order to skip this computation. The filename can be changed using the `{\tt monomialfile}' input command, see sec.~\ref{inputformat}. Furthermore, in case this file is missing or could not be read the program automatically saves the computed secondary sequences to this file. Using the `{\tt --nomonomfile}' command line option deactivates the usage of this file and also deactivates the generation of a new file. If due to the sole usage of the `{\tt --in}' option without an input file no filename has been specified via the `{\tt monomialfile}' input command, the program automatically deactivates the usage of those intermediate files. \item[{\tt --checkserre}\hspace{5mm}] When using this option, the program automatically computes the cohomology for the Serre-dual line bundle and compares the results according to $H^k(\cO(D))\cong H^{n-k}(K\otimes\cO(-D))^*$. Note that this effectively doubles the computation time in the second part of the program. \item[{\tt --noreduction}\hspace{5mm}] Deactivates the Serre-duality reduction, which tries to reduce the number of ambiguously contributing monomials by comparing to Serre-dual complement monomials. If this reduction is deactivated and ambiguous contributions are found, both the entire range of all possible ``normal'' and Serre-dual cohomologies has to be computed and compared in order to identify a consistent pair. Note that this requires huge amounts of memory and might easily lead to the program quitting prematurely, see sec.~\ref{knownproblems}. Use with caution! \item[{\tt --hideinput}\hspace{5mm}] Deactivates the formatted output of the entire input data. Remember that it might be rather useful to have the results along with the input data in the same file, in particular if you make usage of the `{\tt --in}' option to supply additional input data. \item[{\tt --showtime}\hspace{5mm}] Activates output of computation time statistics even for very short runtimes. This option is automatically activated if the computation takes longer than one second. \end{description} The following command line options are only useful for debugging or if you want to know a little bit more, what is happening on the inside: \begin{description} \item[{\tt --showbits}\hspace{5mm}] Activates an explicit output of the bit-masks used internally. \item[{\tt --mathematica}\hspace{5mm}] Outputs the input data and the output data in a form directly suitable for Copy\&Paste into the legacy {\it Mathematica 7} script. \item[{\tt --integrated}\hspace{5mm}] If the integrated mode is activated the output passed to the standard output channel {\tt stdout} is always a single line of the form \[ \begin{aligned} & \texttt{\{True,{\it Cohomology1},{\it Cohomology2},\dots,{\it CohomologyN}\}} \quad \text{or} \\ & \texttt{\{False,"Invalid command line parameters"\}} \end{aligned} \] The first boolean value tells if the application run was either entirely successful (``{\tt True}'') or if an error occured during the run (``{\tt False}''). If an error happens, a brief error message is supplied. In case of a successful run, a listing of all computed cohomology group dimensions and some intermediate information follows in the order requested in the input file. The cohomology data is of the form \[ \texttt{{\it CohomologyM} = \{}\overbrace{\texttt{\{0,2,0\}}}^{\mclap{\substack{\text{cohomology group} \\ \text{dimensions $h^\bullet$}}}}\texttt{,}\overbrace{\texttt{\{}\underbrace{\texttt{\{1,1*u1*u2*u5\}}}_{\mclap{\substack{\text{$u_1u_2u_5$ contributes with} \\ \text{factor 1 to cohomology $h^1$}}\quad}}\texttt{,}\underbrace{\texttt{\{0,2*u2*u3*u5\}}}_{\mclap{\quad\substack{\text{$u_2u_3u_5$ contributes with} \\ \text{factor 2 to cohomology $h^0$}}}}\texttt{\}}}^{\mclap{\text{list of contributing denominator monomials}}}\texttt{\}}, \] i.e.~the final cohomology group dimensions $h^{\bullet}(\cO(D))$ are a list at the first position inside the cohomology output vector. Note that this option overrides any verbose level. Together with the `{\tt --in}' option this allows for simple integration of {\cohomCalg} into external applications. It should, however, be emphazised that the output format of this option is subject to potential changes in future version. \item[{\textnormal{{\tt --verbose1}, ..., {\tt --verbose5}}}\hspace{5mm}] Activates debug output, where a higher number produces more detailed information. The different levels are: \begin{enumerate} \item[1)] Shows the ultimately computed list of all contributing denominator monomials with factors determined via the secondary/remnant cohomology and the number of rational functions. As it might become internally necessary to use information from the Serre-dual cohomology, this prints a two-column list of this data for both the ``normal'' and Serre-dual contributions. \item[2)] In order to reduce computation time and memory consumption, the ambiguously contributing denominator monomials are mapped to their complement monomials. This verbose level prints the list of all contributing monomials before and after the reduction. \item[3)] Prints the reduced list of secondary/remnant sequences, where all obvious cases (exact sequences, or sequences containing just a single non-zero entry) are removed. Note that this output only appears if the secondary/remnant cohomology is actually computed, compare option {\tt --nomonomfile}. \item[4)] Prints the full list of secondary/remnant sequences. Note that this output only appears if the secondary/remnant cohomology is actually computed, compare option {\tt --nomonomfile}. \item[5)] Shows all polyhedron condition matrices which are passed to {\tt PolyLib} in order to compute the number of rational functions for the corresponding denominator monomial. \end{enumerate} \end{description} In most cases, passing no options at all will serve you just fine, i.e.~it prints the input data and the computed cohomology group dimensions. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Input format and structure}\label{inputformat} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The input format is both the same for the input file and the input data passed via terminal using the `{\tt --in}' command. Keep in mind, that the command line data is always considered after the data read from the input file. The general structure of the input is in the form of some rather basic data commands. Each such command has to be terminated by a semicolon, just like C/{\CPP} code. Other than keeping the right syntax structure, you are free to format your input data using spaces, tabulators or line breaks just as you like. You may also use comments in the input file using the `{\tt \%}' character. Everything following a `{\tt \%}' character till the end of the line is completely ignored. Note that this effectively prohibits usage of comments when passing data via the command line, as the entire remainder of the data after the percent sign will be ignored. The following commands for providing input data are available: \begin{description} \item[{\textnormal{{\tt vertex }[name] {\tt | GLSM: (}[GLSM charge 1]{\tt, }...{\tt ,} [GLSM charge $r$]{\tt );}}}\hspace{5mm}] This command specifies a new coordinate (or vertex of the fan in the corresponding toric description, thus the name) and its GLSM charges, i.e.~for each coordinate you use one corresponding `{\tt vertex}' command. The name of the coordinate must be an alphanumeric sequence of characters not starting with a number. The number of GLSM charges must be equal for all coordinates and the GLSM charge value has to stay within a certain range. As an example, the following commands specify the coordinates and GLSM charges of the del-Pezzo 1 surface: \[ \parbox{6cm}{\tt vertex u1 | GLSM: ( 1, 0 );\\ vertex u2 | GLSM: ( 1, 0 );\\ vertex u3 | GLSM: ( 1, 1 );\\ vertex u4 | GLSM: ( 0, 1 );} \] Note that due to internal limitations the maximum number of vertices is limited to 63. \item[{\textnormal{{\tt srideal [}[SR generator 1]{\tt ,}...{\tt ,}[SR generator $N$]{\tt ];}}}\hspace{5mm}] This command specifies the Stanley-Reisner ideal, i.e.~you have to specify the generators as products of the coordinates like in the following $dP_1$ example: \[ \text{{\tt srideal [u1*u2, u3*u4];}} \] Note that the coordinates used in the products have to be previously declared, i.e.~it only makes sense to use the `{\tt srideal}' command after the `{\tt vertex}' commands. The number of Stanley-Reisner ideal generators $N$ is limited to 63, however, on modern desktops computational time will explode at around 40 generators, which is due to the exponential $2^N$ growth of the powerset of the Stanley-Reisner ideal generators. \item[{\textnormal{{\tt ambientcohom O(}[charge 1]{\tt, }...{\tt,}[charge $r$]{\tt );}}}\hspace{5mm}] Using this command you can specify the GLSM charges of the target divisor $D$ that determines the line bundle $\cO(D)$ for which the sheaf cohomology on the ambient space is computed. Please note the upper-case letter `O' behind the command. For example, \[ \text{{\tt ambientcohom O(0, 0);}} \] computes the ambient space sheaf cohomology for the holomorphic line bundle $\cO(0,0)=\cO$. Obviously, the number of charges $r$ has to be equal to the number of GLSM charges specified in the `{\tt vertex}' commands. You may specify several target line bundles for batch computation by simply using the `{\tt ambientcohom}' command multiple times. \item[{\textnormal{{\tt monomialfile {"}}[filename]{\tt ";}}}\hspace{5mm}] This command allows you to specify a different filename for the intermediate monomial file between the quotation marks: \[ \text{{\tt monomialfile "my-dP1-monomial-file.dat";}} \] This filename is both used for reading and saving of the monomial file. Please keep in mind, that the intermediate data saved to file is crucially dependant on the geometry data specified via the other commands, see sec.~\ref{knownproblems}. You can therefore turn off the usage and generation of those files using the input command line \[ \text{{\tt monomialfile off;}} \] which might come in handy, when you frequently change the geometry of the variety specified in the input file and want to avoid the usage of the `{\tt --nomonomfile}' parameter. \end{description} All commands are subject to a precise syntax, range and consistency check, so it is basically impossible to run the program with invalid data. In such cases, you will see a syntax error message indicating where the problem occured in the input data. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Output format} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Following the prior $dP_1$ example, after saving the six input commands to file and running the program via `{\tt cohomcalg dP1.in > dP1.out}', the output file contains after the obligatory header the following data:\\[1cm] \begin{minipage}[center]{12cm} \begin{verbatim} Input data: =========== The described ambient space is of dimension 2. There are 4 coordinates, each having 2 GLSM charges: coord 1: u1 | 1 0 coord 2: u2 | 1 0 coord 3: u3 | 1 1 coord 4: u4 | 0 1 There are 2 generators of the Stanley-Reisner ideal: SRgen 1: u1*u2 SRgen 2: u3*u4 There is 1 ambient space sheaf cohomology requested: cohom 1: H^i(A; O( 0, 0 )) Cohomology dimensions: ====================== dim H^i(A; O( 0, 0 )) = ( 1, 0, 0 ) \end{verbatim} \end{minipage}\\[1cm] This output is fairly self-explanatory and should not require further comment. However, for more involved and complicated examples a couple of non-ideal things may happen. You may see the line\\[1mm] \[ \parbox{12cm}{\tt The Serre dualization reduction was unable to uniquely resolve 88 of the original 1049 ambiguous monoms.} \]\\ which indicates that the Serre-dual complement monomial reduction technique (compare the command line option `{\tt --noreduction}') was unable to resolve all ambiguously contributing denominator monomials. This is in principle not a problem, provided that the much more computationally expensive fallback technique, which compares all possible cohomologies to the corresponding Serre dual cohomologies, is able to uniquely resolve the issue. However, if this fails as well you will see an output like\\[0.8cm] \begin{minipage}[center]{13cm} \begin{verbatim} dim H^i(A; O( 2, 4, 1, ..., 3, -2, 1 )) is ambiguous candidate results are: = ( 580, 353, 171, 1, 919, 0 ) = ( 580, 353, 0, 1,1090, 0 ) \end{verbatim} \end{minipage}\\[0.8cm] which gives you all possible cohomology configurations the algorithm was able to sort out. Unfortunately, you may also be graced by the message\\[0.8cm] \begin{minipage}[center]{11cm} \begin{verbatim} dim H^i(A; O( 2, ..., 1 )) could not be determined. \end{verbatim} \end{minipage}\\[0.8cm] but in all our extensive testing, we never encountered this problem. Finally, for any computations longer than one second or if you use the `{\tt --showtime}' option you will encounter runtime statistics like\\[0.8cm] \begin{minipage}[center]{13cm} \begin{verbatim} Application run took 14.27 seconds, more precisely 11.02 seconds sec for the computation of the sec. cohom. 3.23 seconds sec for the counting of rational functions \end{verbatim} \end{minipage}\\[0.8cm] which gives you an idea of the time consumption. Also, during longer runtimes, you will see an output like \[ \text{{\tt SR powerset traverse 14.54\% done (12 secs remaining)...}} \] which reports the progress of computing the secondary/remnant cohomologies and gives a rough time estimate for this part of the program to finish. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Obtaining geometric data} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Naturally, you need to get the input data from somewhere, and a couple of very useful packages for those tasks are available freely on the net. In order to derive the Stanley-Reisner ideal, which is a required input for the program, you may want to take a look at \[ \text{{\tt TOPCOM}: \href{http://www.rambau.wm.uni-bayreuth.de/TOPCOM/}{http://www.rambau.wm.uni-bayreuth.de/TOPCOM/},} \] which can also enumerate all possible fans for a given set of vertices. The Maple script package \[ \text{{\tt SCHUBERT}: \href{http://folk.uib.no/nmasr/schubert/0.996/}{http://folk.uib.no/nmasr/schubert/0.996/},} \] can be used to compute intersection numbers and further geometrical quantities of toric varieties, however, the software is somewhat dated at this point. Furthermore, there is the package \[ \text{{\tt PALP}: \href{http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html}{http://hep.itp.tuwien.ac.at/~kreuzer/CY/CYpalp.html},} \] which is useful for computing invariants of hypersurfaces, Mori cone vectors etc. You may also want to take a look at the \[ \text{{\tt SAGE} Library: \href{http://www.sagemath.org/}{http://www.sagemath.org/},} \] of freely available mathematical software. Finally, the environment \[ \text{{\tt Macaulay2}: \href{http://www.math.uiuc.edu/Macaulay2/}{http://www.math.uiuc.edu/Macaulay2/},} \] which allows similar computations, was heavily used during the development process. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Implementation} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Internal design} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This implementation heavily relies on the usage of bit-wise operations on 64-bit integer variables. The $i$th coordinate of the input data is represented by the $i$th bit of such a variable, such that a Stanley-Reisner ideal generator simply becomes a bit-mask. Via this coding scheme, computing the union of Stanley-Reisner ideal generators is equivalent to using the bit-wise non-exclusive OR operator, which is a superfast operation on any 64-bit architecture machine. Furthermore, when traversing the powerset of the Stanley-Reisner ideal, we also encode the presence of the $j$th generator by the $j$th bit, such that running through all subsets of the set of generators reduces to a simple loop running from 0 to $2^N$, where $N$ is the number of generators. Using a couple of bit-mask buffers, those two elementary encoding techniques allowed us to gain a speedup of several orders of magnitude on any other implementation approach. On the other hand, this puts the strict upper limit of 63 on the number of coordinates and Stanley-Reisner ideal generators, but as the number of Stanley-Reisner ideal generators is usually much larger and somewhat maxes out current computers at around 40 generators, those constraints are currently rather theoretical and do not present any practical restrictions. Since version 0.31 of the {\cohomCalg} core program the computation of the secondary sequences is carried out in a multi-threaded fashion, i.e.~all available (logical) processor cores of the machine are used simultaneously. Depending on the hardware, this leads to a significant speed improvement factor scaling almost linearly with the number of cores. By computing the secondary sequences, a number of uniquely and ambiguously contributing denominator monomials is found. Ambiguously in this sense means that the secondary/remnant cohomology has more than one non-zero contribution, i.e.~the number of rational functions for this denominator monomial might contribute to different groups of the cohomology, e.g.~to $H^1$ and $H^2$. This ambiguity arises due to the fact that the mappings in the secondary/remnant sequences are currently not considered in the computation. It is therefore necessary to employ the Serre duality in order to resolve this issue, which basically means to take the complement monomial\---the monomial consisting of all the remaining coordinates\---into account. This step is carried out during the Serre-duality reduction, which can be turned off using the `{\tt --noreduction}' command line option. In most cases, this eliminates all ambiguities by turning the ambiguous contributions in unique contributions. In the next step, the number of rational functions is computed for each monomial using The Polyhedron Library.\footnote{Note that we use a very slightly modified version of the {\tt PolyLib}, where a number of standard output responses are removed. It is therefore not recommended to simply replace the {\tt PolyLib} version included in the source package by another version.} Basically, with {\tt PolyLib} we are constructing a polyhedron from a number of equalities and inqualities and then count the number of integer lattice points inside of it using Ehrhart polynomial approximations. For the uniquely determined contributions, the resulting cohomology group dimension is simply the factor derived from the secondary/remnant sequences times the number of rational functions. However, if there are still ambigous contributions leftover, this requires a branching of the current number of possible cohomology dimensions by the ambiguity, i.e.~if you have 10 ambiguous contributions with 3 possibilities each, this already yields $3^{10}= 59049$ possible configurations. In case of ambiguities it is necessary to entirely compute all those possibilities both for the ``normal'' and Serre-dual configuration and then match those possibilities in order to determine compatible ones. Unfortunately, due to the rapid growth of the number of configurations, one quickly runs out of memory, which is a still unresolved issue of the implementation. Again, this problem ultimately originates in the fact, that the mappings in the secondary/remnant sequences are not implemented at the moment. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Potential improvements} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The counting of monomials (rational functions) in the current algorithm is currently still implemented as a single-threaded application, i.e.~it only makes use of one processor core\---whereas modern desktops already may have up to 6 cores per processor with an increasing trend. While a parallelization has been attempted, it appears that the PolyLib is not implemented in a thread-safe fashion, which leads to a memory (heap) corruption as soon as more than one PolyLib thread is executed at the same time. This problem is currently investigated in more detail but may remain unsolved for the foreseeable future. As a second improvement in the long run one might offer the option of arbitrary-length bitmasks, which would effectively remove the 63 coordinates and Stanley-Reisner generators upper limits. On the other hand, such a change would most likely impair performance quite a bit, and for the moment those limits are far out of reach for reasonable computation times. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Known problems}\label{knownproblems} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The implementation is rather robust aside from the potential memory-con\-sump\-tion issue, when the number of ambiguous contributions becomes too large. For the moment, we can only recommend the usage of the 64-bit version for such cases (which is recommended anyways), as it somewhat alleviates the problem and gives the program access to more memory. It should be mentioned however, that without enforcing this issue via the `{\tt --noreduction}' option, the problem is mostly kept in check even in extremely complicated cases. A somewhat minor problem is the instability of the monomial files. As the computed monomials are effectively stored via bit-masks, changing the geometry of the variety in the input data (i.e.~the order or number of the vertices as well as the number of Stanley-Reisner generators) effectively corrupts this data. Currently, there is no sophisticated check if the intermediate monomial data stored in the file corresponds to the geometry specified via the input data. In worst case scenarios such a corruption might crash the program. In case you are worried about the results while using an intermediate monomial file try rebuilding this one by deleting or renaming the old one or turning off the monomial file usage alltogether. \vspace{3mm} Aside from that we are reasonably certain that quite a number of bugs and problems are still included. Please let us know any problems you may find, see page \pageref{contactaddress} for contact information. \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \part[{\cohomCalgKoszulMed} extension]{{\cohomCalgKoszulHuge} extension} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Usage} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Preparations} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The {\it Mathematica} Koszul extension serves as a wrapper for the {\cohomCalg} program. Simply open {\it Mathematica 7} or {\it 8} on your computer and load the notebook file. Make sure that the {\cohomCalg} executable variable at the top of the script points to the correct executable file, e.g.~{\it cohomcalg32.exe} on a Windows 32-bit platform. Also make sure that the correct path of the executable is inserted. There are no further parameters or options. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Input format and structure} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% The script in its current form consists of three parts: \begin{enumerate} \item The main portion of the file contains the actual routines used for the program. Each time you open the script file, you briefly have to re-run this part, such that the {\it Mathematica} kernel working in the background has all the necessary definitions etc.~available. This is done, for example, by pressing {\tt Shift+Enter} while the cursor is still in the upper part of the script. \item The second portion is clearly marked by the words ``{\tt Ambient geometry data}''. Here you have to specify the relevant toric data for the ambient space variety $X$. The following data is required in list form: \begin{itemize} \item \emph{Coordinates:} A list of the coordinate names like the seven variables in {\tt \{x1,x2,x3,x4,x5,x6,x7\}}. \item \emph{Stanley-Reisner ideal:} A list of lists corresponding to the generators of the Stanley-Reisner ideal, e.g.~{\tt \{\{x1,x6\},\{x2,x3,x4,x5,x7\}\}}. \item \emph{GLSM relations:} A list of lists corresponding to the GLSM charges or projective relations associated to each coordinate, for example\\ {\tt \{\{1,3\},\{0,1\},\{0,1\},\{0,1\},\{0,1\},\{1,0\},\{0,1\}\}}. The number of those lists obviously has to be equal to the number of coordinates. \end{itemize} This data is assigned to a list variable, which for book-keeping purposes should carry a name suggesting the described toric variety, e.g.~{\tt P111113}. \item Finally the command part follows, where the user can access the functions provided by the \cohomCalgKoszul extension. Here depending on what kind of bundle one wants to calculate the program needs some additional input parameters: \begin{itemize} \item \emph{Complete intersection charges:} A list of divisor charges for the complete intersection like {\tt\{\{1,4\},\{1,4\}\}}. An empty list {\tt\{\}} always returns the result for the ambient space. \item \emph{Line bundle charges:} A list that specifies the required line bundle charges, e.g.~{\tt\{22,30\}}. \item \emph{Monad bundle charges :} A list of lists corresponding to the monad bundle charges $N_k$ in \eqref{eq_monadsequence}, for example {\tt\{\{1,0\},\{0,1\},\{0,1\},\{0,1\},\{0,2\}\}}. \item \emph{Monad bundle constraints:} A list of lists of the required monad bundle constraints $M_i$ in \eqref{eq_monadsequence}, for instance {\tt\{\{1,5\}\}}. \item \emph{$V_r$:} Power of the $\mathcal{O}_S$ bundle in the monad sequence \eqref{eq_monadsequence}, e.g. {\tt 2}. \beq\label{eq_monadsequence} 0 \fto \cO_S^{\oplus V_r} {\fto} \bigoplus_{k=1}^{V_n} \cO_S(N_k){\fto} \bigoplus_{i=1}^{V_l} \cO_S(M_i)\,, \eeq \item \emph{$\mathbb Z^n$-action: A list that specifies how the involution acts on the coordinates, e.g. {\tt \{x1,x2,x3,x4,x5,x6,-x7\}} } for a $\mathbb Z^2$ action \end{itemize} \end{enumerate} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Bundle types} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Various different bundle types are provided by the {\cohomCalgKoszul} extension. The structure of the input is similar for all bundles and looks like: % \begin{equation*} \begin{matrix} \textnormal{{\tt CohomologyOf[}{[}Bundle Type{]}{\tt , }{[}Ambient Space{]}{\tt , }{[}Additional Input{]}{\tt , }}\\ \textnormal{{{[}Optional: Type of Subvariety{]}{\tt , }{[}Optional: Verbose Level{]}{\tt , }}}\\ \textnormal{{[}Optional: Output Type{]}{\tt , }{[}Optional: Line Bundle Collector{]}{\tt ]}\hspace{5mm}} \end{matrix} \end{equation*} % The optional input can be inserted in an arbitrary order. In the following we describe how the different bundle types can be evaluated. Here we will not use the last two of the optional input parameters and explain their use afterwards. From the mandatory part of the input data only the {[}Bundle Type{]} and the {[}Additional Input{]} change: \subsubsection{Line bundles} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \item[{\textnormal{{\tt Koszul[}{[}Ambient space{]}{\tt , }[Divisors]{\tt , }[Line bundle]{\tt ]}\hspace{5mm}}}] %\item{\textnormal{{\tt CohomologyOf[}{[}''LineBundle``{]}{\tt , }[Ambient space]{\tt , }[Additional input]{\tt ]}\hspace{5mm}}} \begin{itemize} \item {[}Bundle Type{]}: {\tt''LineBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges}, \emph{Line bundle charges}{\tt\}} \end{itemize} % This command is the main routine of the \cohomCalgKoszul~extension. Given an ambient space $X$ and a set of divisors $S_1,\dots,S_l\subset X$ as well as a line bundle divisor $E$ it computes the sheaf cohomology group dimensions $\dim H^i(S; \cO_{S}(E))$ on the hypersurface or complete intersection $S=S_1\cap \dots \cap S_l$. Note that there is no checking if the intersection geometry is actually well-defined, i.e.~the \cohomCalgKoszul~extension does not test for transversality or other conditions. Furthermore, it does not actually evaluate the mappings in the Koszul complex, but rather attempts to derive the dimensions from indirect exactness arguments and constraints. However, as those methods may not always lead to a solution, the output may contain parameters which are unresolved. %The ambient space variable is a list of lists of the format specified in the second part of the script. Similarly, the list of divisors is a list of lists of GLSM charges, which specifies the divisors $D_i\subset X$. The line bundle is specified by a list of GLSM charges that define the divisor $E$ associated to the line bundle. Ultimately all those charges depend on the coordinate and GLSM charges specified in the ambient space data. The input data for the ambient space, the complete intersection and the line bundle charges has to be specified as explained above. Here the additional input is a list of two lists, namely the data specifying the complete intersection as well as the charges of the line bundle you want to compute. For the complete intersection data, an empty list {\tt \{\}} of divisors return the cohomology of the ambient space itself, i.e.~it computes $\dim H^i(X;\cO_X(E))$. \BeginExampleBlock Consider the ambient space $\tilde{\mathbb P}^5_{111113}$ described before. If you type % \begin{table*} % P111113 = \{\\ % (*Coordinates*)\{x1,x2,x3,x4,x5,x6,x7\},\\ % (*Stanley Reisner*)\{\{x1,x6\},\{x2,x3,x4,x5,x7\}\},\\ % (*Equivalence Relations*)\{\{1,3\},\{0,1\},\{0,1\},\{0,1\},\{0,1\},\{1,0\},\{0,1\}\}\};\\[1.4mm] % CohomologyOf["LineBundle",P111113,\{\{\{1,4\},\{1,4\}\},\{2,8\}\}] % \end{table*} % \begin{verbatim*} P111113={ (*Coordinates*){x1,x2,x3,x4,x5,x6,x7}, (*Stanley Reisner*){{x1,x6},{x2,x3,x4,x5,x7}}, (*Equivalence Relations*){{1,3},{0,1},{0,1},{0,1},{0,1},{1,0},{0,1}}}; CohomologyOf["LineBundle",P111113,{{{1,4},{1,4}},{2,8}}] \end{verbatim*} you will get the result {\tt \{487,0,0,0\}}, which means that $\dim H^0(S; \cO_{S}(E))=487$ and $\dim H^j(S; \cO_{S}(E))=0$ for $j=1,2,3$. \EndExampleBlock \subsubsection{Equivariant Cohomology of Line Bundles} If you consider an ambient space that allows for a discrete action your cohomology obtains a grading into invariant and non-invariant parts under this action. You can compute this equivariant cohomology of line bundles. To do that the following input parameters are needed: \begin{itemize} \item {[}Bundle Type{]}: {\tt''EquivariantLineBundle``} \item {[}Additional Input{]}: {\tt\{\{\},} \emph{Line bundle charges}, \emph{$\mathbb Z^n$-action}{\tt\}} \end{itemize} % The program then returns two cohomology vectors where the first contains the invariant part of the cohomology, $\dim H^\bullet_{\text{inv}}(X; \cO_{X}(E))$ and the non-invariant part of the cohomology $\dim H^\bullet_{\text{non-inv}}(X; \cO_{X}(E))$. Note that the program does not check whether such an action is allowed on this space, so you have to figure that out yourself beforehand. You can also ask the program to print the representatives of the cohomology by using the verbose options described below. \BeginExampleBlock Consider the ambient space $\tilde{\mathbb P}^5_{111113}$ as specified above. If you evaluate the order \begin{verbatim*} CohomologyOf[ (*Bundle specification*)"EquivariantLineBundle", (*Ambient Space*)P111113, (*Remaining Data:Complete Intersection,LineBundle Charges,Discrete Action*) {{},{5,3},{x1 x2,x3,x4,x5,x6,-x7}} ]; \end{verbatim*} you will get the result two resulting line bundle cohomology vectors where the first one denotes the invariant part of the equivariant cohomology and the second one the non-invariant part. For this explicit example you will get {\tt\{\{25,0,0,0,155,0\},\{11,0,0,0,250,0\}\}}. So we have the only non-vanishing contibutions \begin{eqnarray*} h^0_{\text{inv}}(X;\mathcal O(5,3))=25 &,& h^4_{\text{inv}}(X;\mathcal O(5,3))=155,\\ h^0_{\text{non-inv}}(X;\mathcal O(5,3))=11 &,& h^4_{\text{non-inv}}(X;\mathcal O(5,3))=250\,. \end{eqnarray*} \EndExampleBlock \subsubsection{Tangent bundle of a subvariety} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \item[{\textnormal{{\tt Koszul[}{[}Ambient space{]}{\tt , }[Divisors]{\tt , }[Line bundle]{\tt ]}\hspace{5mm}}}] %\item{\textnormal{{\tt CohomologyOf[}{[}''LineBundle``{]}{\tt , }[Ambient space]{\tt , }[Additional input]{\tt ]}\hspace{5mm}}} \begin{itemize} \item {[}Bundle Type{]}: {\tt''TangentBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges}{\tt\}} \item {[}Optional: Type of Subvariety{]}: {\tt''Calabi-Yau``}/ {\tt''Unknown''} \end{itemize} % Computes the cohomology dimensions of the tangent bundle of $S$, i.e.~$\dim H^i(S;T_S)$. If you choose the type of the subvariety to be ``Calabi-Yau'', this will be taken into account in the calculation. As always an empty list of intersecting surfaces returns the cohomology of the tangent bundle of the ambient toric variety. % \BeginExampleBlock Consider the ambient space $\tilde{\mathbb P}^5_{111113}$ as specified above. If you evaluate the order \[ \texttt{CohomologyOf["TangentBundle",P111113,\{\{1,4\},\{1,4\}\},``Calabi-Yau''];} \] you will get the result {\tt \{0,86,2,0\}} which means that $\dim H^0(S;T_S)=\dim H^3(S;T_S)=0$, $\dim H^1(S;T_S)=86$ and $\dim H^2(S;T_S)=2$. \EndExampleBlock \subsubsection[\texorpdfstring{$\Lambda^k$(Cotangent Bundle) of a subvariety for $k=0,1,2$}{Exterior powers of the Cotangent Bundle of a subvariety}]{\boldmath{$\Lambda^k$}(Cotangent Bundle) of a subvariety for \boldmath{$k=0,1,2$}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \item[{\textnormal{{\tt Koszul[}{[}Ambient space{]}{\tt , }[Divisors]{\tt , }[Line bundle]{\tt ]}\hspace{5mm}}}] %\item{\textnormal{{\tt CohomologyOf[}{[}''LineBundle``{]}{\tt , }[Ambient space]{\tt , }[Additional input]{\tt ]}\hspace{5mm}}} \begin{itemize} \item {[}Bundle Type{]}: {\tt''Lambda\underline{$k$}CotangentBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges}{\tt\}} \item {[}Optional: Type of Subvariety{]}: {\tt''Calabi-Yau``} / {\tt''Unknown''} \end{itemize} % Those three commands compute the exterior powers $k=0,1,2$ of the cotangent bundle of the hypersurface or complete intersection $S=D_1\cap\dots\cap D_n$: \[ \dim H^i(S;\Lambda^kT^*_S), \] The input data is exactly the same as for the tangent bundle cohomology. \BeginExampleBlock Consider the ambient space $\tilde{\mathbb P}^5_{111113}$ as specified above. If you type \begin{eqnarray*} \texttt{CohomologyOf["Lambda0CotangentBundle",P111113,}\\ \texttt{\{\{1,4\},\{1,4\}\},``Calabi-Yau''];} \end{eqnarray*} you will get {\tt \{1,0,0,1\}}. \EndExampleBlock \subsubsection[\texorpdfstring{$\Lambda^k$(Monad bundle) of a subvariety for $k=1,2$}{Exterior powers of the Monad Bundle of a subvariety}]{\boldmath{$\Lambda^k$}(Monad bundle) of a subvariety for \boldmath$k=1,2$} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \item[{\textnormal{{\tt Koszul[}{[}Ambient space{]}{\tt , }[Divisors]{\tt , }[Line bundle]{\tt ]}\hspace{5mm}}}] %\item{\textnormal{{\tt CohomologyOf[}{[}''LineBundle``{]}{\tt , }[Ambient space]{\tt , }[Additional input]{\tt ]}\hspace{5mm}}} \begin{itemize} \item {[}Bundle Type{]}: {\tt''Lambda\underline{$k$}MonadBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges, Bundle charges, Bundle Constraints, $V_r$}{\tt\}} \end{itemize} % Those two commands compute the exterior powers $k=1,2$ of the specified monad bundle \eqref{eq_monadsequence} of the hypersurface or complete intersection $S=S_1\cap\dots\cap S_l$. Here in addition to the charges of the complete intersection we also need the bundle charges $N_k$ as well as the bundle constraints $M_k$ and the power $V_r$, all defined in \eqref{eq_monadsequence} . \BeginExampleBlock Consider the ambient space $\tilde{\mathbb P}^5_{111113}$ as specified above. % %\begin{minipage}[center]{12cm} \begin{verbatim} CohomologyOf["Lambda1MonadBundle",P111113,{{{1,4},{1,4}}, (*BundleCharges*){{1,0},{0,1},{0,1},{0,1},{0,2}}, (*BundleConstraints*){{1,5}}},"Calabi-Yau"]; \end{verbatim} %\end{minipage} %CohomologyOf["Lambda1MonadBundle",P111113,\{(*ComplInt*)\{\{1,4\},\{1,4\}\},(*BundleCharges*)\{\{1,0\},\{0,1\},\{0,1\},\{0,1\},\{0,2\}\},(*BundleConstraints*)=\{\{1,5\}\}\},``Calabi-Yau'']; The result will be ${\tt\left\{0,2,102+A_{70},A_{70}\right\}}$. Here the ${\tt A_{70}}$ is a constant which could not be determined using only the dimensions of the line bundle cohomologies in the long exact sequences. A method that actually evaluates the maps in order to evaluate this constant is currently not included in the program. But one can use the verbose function described below to have an explicit look at the long exact sequences. In certain cases, properties of the maps of the monad may be chosen in order to determine such a parameter in an easy way. \EndExampleBlock So far we have only considered monads that are non-exact sequences. If you want to calculate the cohomology of an exact monad, you can simply do that by putting the parameter $V_r$ to zero. Then the non-exact sequence becomes exact and the vector bundle is given as the kernel of the corresponding map: % \beq\label{eq_exactmonadsequence} 0 \fto V {\fto} \bigoplus_{k=1}^{V_n} \cO_S(N_k){\fto} \bigoplus_{i=1}^{V_l} \cO_S(M_i)\,, \eeq \subsubsection{Hodge diamond of a subvariety} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{itemize} \item {[}Bundle Type{]}: {\tt''HodgeDiamond``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges}{\tt\}} \item {[}Optional: Type of Subvariety{]}: {\tt''Calabi-Yau``}/ {\tt''Unknown''} \end{itemize} % Computes the entire Hodge diamond of the hyper surface or complete intersection $S$. Up to 4 dimensions one usually gets a unique result which may not be the case for higher dimensions. The output contains the Hodge diamond, the Betti numbers as well as the Euler character of the requested subvariety. \BeginExampleBlock The following example for a Calabi-Yau 4-fold is taken from the paper arXiv:0912.3524 and describes a compact complete intersection Calabi-Yau 4-fold used in the construction of F-theory GUT vacua. The toric data of the ambient space (found in table B.1 of the aforementioned paper) is specified by the following variable:\\ \begin{minipage}[center]{12cm} \begin{verbatim} Example4Fold = { (*Coordinates*){v1, v2, v3, v4, v5, v6, v1s, v7, v8, v9, v10}, (*Stanley Reisner*) {{v3,v9},{v5,v9},{v7,v10},{v1,v2,v3}, {v4,v1s,v8},{v4,v7,v8},{v4,v8,v9}, {v5,v6,v1s},{v5,v6,v10},{v1,v2,v6,v1s}}, (*Equivalence Relations*){{3, 3, 3, 3, 0}, {2, 2, 2, 2, 0}, {1, 0, 0, 0, 0}, {0, 0, 1, 0, 0}, {0, 0, 0, 1, 0}, {0, 1, 0, 0, 0}, {0, 1, 1, 0, 0}, {0, 0, 1, 0, 1}, {0, 0, 1, 0, 0}, {0,-1,-1, 1,-1}, {0, 0, 0, 0, 1}} }; \end{verbatim} \end{minipage} {$\big.$} \noindent The 4-fold is given by the intersection of two divisors in the ambient space, which are specified in the variable \[ \texttt{ComplInt = \{\{6, 6, 6, 6, 0\}, \{0, 0, 2, 1, 1\}\};} \] and the actual command for the computation of the Hodge diamond is then \[ \texttt{CohomologyOf[``HodgeDiamond'',Example4Fold,ComplInt,``Calabi-Yau''];} \] which takes around 20 seconds on a current desktop computer and computes 264 intermediate ambient space line bundle cohomologies via {\cohomCalg}. The full Hodge diamond as well as the Betti numbers and the Euler character are then printed in a very readable form: \[ \begin{array}{ccccccccccc} & & & & {\tt 1} & & & & & {\tt 1} & \\ & & & {\tt 0} & & {\tt 0} & & & & {\tt 0} & \\ & & {\tt 0} & & {\tt 5} & & {\tt 0} & & & {\tt 5} & \\ & {\tt 0} & & {\tt 0} & & {\tt 0} & & {\tt 0} & & {\tt 0} & \\ {\tt 1} & & {\tt 1115} & & {\tt 4524} & & {\tt 1115} & & {\tt 1} & {\tt 6756} & {\tt \chi= 6768}\\ & {\tt 0} & & {\tt 0} & & {\tt 0} & & {\tt 0} & & {\tt 0} & \\ & & {\tt 0} & & {\tt 5} & & {\tt 0} & & & {\tt 5} & \\ & & & {\tt 0} & & {\tt 0} & & & & {\tt 0} & \\ & & & & {\tt 1} & & & & & {\tt 1} & \end{array} \] \EndExampleBlock \subsubsection{Endomorphism bundle of the tangent bundle of a subvariety} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{itemize} \item {[}Bundle Type{]}: {\tt''EndTangentBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges}{\tt\}} \end{itemize} % Computes the cohomology dimensions $\dim H^i(S;{\rm End}(T_S))$ of the endomorphism bundle ${\rm End}(T_S)$, which represents the bundle deformations of the hypersurface / complete intersection $S$. For such calculations it is usually not necessary only to consider the dimensions of the line bundles, but more is needed. The routine is still useful since you can choose a verbose level in order to obtain the long exact sequences. So if you know about certain map properties you may be able to put parameters to zero manually and see how the result changes. \subsubsection{Endomorphism Bundle of the monad bundle of a Subvariety} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{itemize} \item {[}Bundle Type{]}: {\tt''EndMonadBundle``} \item {[}Additional Input{]}: {\tt\{}\emph{Complete intersection charges, Bundle charge, Bundle Constraints, $V_r$}{\tt\}} \end{itemize} % Computes the cohomology dimensions $\dim H^i(S;{\rm End}(V))$ of the endomorphism bundle ${\rm End}(V)$, which represents the bundle deformations of the monad bundle \eqref{eq_monadsequence}. As for the endomorphism bundle of the tangent bundle, here one usually needs additional information about the maps in the monad. %This routine was used extensively in \cite{BRTargetSpaceDuality} in a landscape study in order to calculate the bundle moduli of more than fifty thousands different $(0,2)$-heterotic models. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Verbose Level and Output Format} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Since it may be useful to see how the long exact sequences involved in the internal computations actually look like\---especially if one does not get a unique result in the end\---there is an option in the {\cohomCalgKoszul} extension to do so. In total there are 6 different verbose levels. \begin{itemize} \item ``{\tt Verbose-1}'': Only the final result is returned. \item ``{\tt Verbose0}'': The result is printed along with a small statistic about calculation time. \item ``{\tt Verbose1}'': All long exact sequences coming from the Euler sequence will be shown. \item ``{\tt Verbose2}'': Like ``Verbose1'' with more details. \item ``{\tt Verbose3}'': All long exact sequences coming from the Koszul sequence will be shown. \item ``{\tt Verbose4}'': All long exact sequences coming from the Euler and the Koszul sequence will be shown. \item ``{\tt Verbose5}'': Like ``Verbose4'' with more details. \item ``{\tt Verbose6}'': This Verbose function only works for the equivariant cohomology calculation and shows you the representatives of the cohomology of the corresponding line bundle. It also prints how the $\mathbb Z^n$-action acts on them and which of the Laurent monomials are invariant. \end{itemize} There is one more optional input parameter in which you can let the program know if you are using {\it Mathematica~7} in a terminal or with the graphical interface. Chose {\tt ''Terminal``} for {[Optional: Input Type]} if you are using the terminal interface. \clearpage %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section*{Proper citation} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% If you find the {\cohomCalg} package useful to your project please have a look into the file \emph{Proper Citation.txt} located in the package archive's main directory. There you find a ready-to-use BibTeX entry for {\cohomCalg} \cite{cohomCalg:Implementation}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section*{Acknowledgements} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% We would like to thank Jim Halverson for bug reporting and general feedback as well as Fabian Rühle for pointing out compatibility issues with Mathematica~8. Furthermore, we are grateful to Prof.~Alois Kabelschacht for his help in the distribution of this project. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% BIBLIOGRAPHY %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %\clearpage \bibliography{manual} \bibliographystyle{utphys} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vfill \noindent \footnotesize {\it Mathematica} is a registered trademark of Wolfram Research, Inc. All rights reserved. {\it Windows} is a registered trademark of Microsoft Corporation in the United States and other countries. The lightbulb image used in the application logo was made by \href{http://dragonartz.wordpress.com/}{DragonArt} and is used under the \href{http://creativecommons.org/licenses/by-nc-sa/3.0/}{Creative Commons Attribution-Noncommercial-Share Alike 3.0} license. \end{document}cohomCalg-0.32/manual/latex_source/utphys.bst000066400000000000000000000621421322050713700213570ustar00rootroot00000000000000% UT Physics bibliographic style, ver. 2.7. Based on: % %X IEEE Transactions bibliography style (29-Jan-88 version) %X numeric labels, order-of-reference, IEEE abbreviations, %X quotes around article titles, commas separate all fields %X except after book titles and before "notes". Otherwise, %X much like the "plain" family, from which this is adapted. %X %X History %X 9/30/85 (HWT) Original version, by Howard Trickey. %X 1/29/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik; %X THIS `ieeetr' VERSION DOES NOT WORK WITH BIBTEX 0.98i. % % Modifications: 1) added hypertex support and "archive", "eprint" % and "url" fields. % 2) parentheses around dates, and no "pp." for article entries % 3) "publisher, address" instead of "address: publisher" % 4) added "report" field for article entries. % 5) particle physics-oriented abbreviations, rather than ieee. % 6) added "collaboration" field, as per % Jonathan Flynn' suggestion. SPIRES now supports this field. % 7) Improved output of Proceedings entries % % Modified by Jacques Distler, 2/11 % History: ver 1.0 9/96 % ver 1.1 10/96 - added "collaboration" field % ver 1.2 7/97 - added a "\providecommand{\href}[2]{#2}" % to handle case where \href is not defined % ver 1.3 12/97 - fixed lousy-looking proceedings output. % ver 1.4 1/98 - fixed format.number, address in % proceedings entries % ver 1.5 3/99 - added (nonprinting) CITATION field for % SLAC internal use % ver 1.6 4/99 - Fix to ensure %%CITATION output not broken % across lines. Added new.sentence to ensure % previous output properly terminated. % (Moral: test before you release.) % ver 1.7 10/99 - "et.~al." should be "et al." Morons! % ver 1.8 11/99 - Changed the Web URL to the more portable % arxiv.org. The "archive" field functions as % a true base-URL. This is NOT A % BACKWARDS-COMPATIBLE change! % ver 1.8a 12/99 - MACROs for arXiv and cogprints % BaseURL's defined. % ver 1.9 6/05 - eprint support for other entry types % ver 2.0 4/08 - support "new-style" eprint identifiers % ver 2.1 4/08 - support for "url" field % ver 2.2 4/08 - support for "doi" field % ver 2.3 8/09 - fix month formatting % ver 2.4 7/10 - remove some deprecated font-constructws. % fix journal number formatting. % ver 2.5 9/10 - Internationalization and some more journal % MACROs (thanks to Mateus Araujo) % ver 2.6 2/11 - Yipes! Fix capitalization of titles, spooged % in previous version. (Reported by Ling Weak) % ver 2.7 8/11 - Fix "et~al." in format.crossref.editor, too. % (Reported by Blake Stacey) % % HyperTeX Wizardry: % % The following are equivalent: % archive = arXiv % eprint = "hep-th/9605023" % and % eprint = "hep-th/9605023" % both produce % % \href{http://arxiv.org/abs/hep-th/9605023}{{\ttfamily hep-th/9605023}} % % in the bibliographic output at the appropriate point. More generally, % if the archive field is present, we produce a URL of the form % "archive/eprint" as the first argument of the \href. If absent, the base % URL defaults to "http://arxiv.org/abs" % If you are using a hypertex macropackage, like hyperref.sty, this command % will create a link to the eprint at Los Alamos (or wherever). % % "New-style" arXiv identifiers are also supported. % % archivePrefix = "arXiv", % eprint = "0707.3168", % primaryClass = "hep-th", % % produces % % \href{http://arxiv.org/abs/0707.3168}{{\ttfamily arXiv:0707.3168 [hep-th]}} % % Another (non-arXiv) example: % % archive = "http://cogprints.org", % eprint = "5542", % archivePrefix = "Cogprints", % % produces % % \href{http://cogprints.org/5542}{{\ttfamily Cogprints:5542}} % % If a % % doi = "10.xxxx" % % field is present, then the journal reference becomes a % clickable hyperlink to the online journal version of the paper. % % The bibtex output produced by SPIRES, while far from perfect, is pretty % suitable for use with this style. Indeed, this style was designed with % SPIRES in mind. FUNCTION {string.and} {" and "} FUNCTION {string.editors} {", eds."} FUNCTION {string.editor} {", ed."} FUNCTION {string.edition} {"~ed."} FUNCTION {string.volume} {"vol.~"} FUNCTION {string.capsvolume} {"Vol.~"} FUNCTION {string.of} {" of "} FUNCTION {string.number} {"no.~"} FUNCTION {string.capsnumber} {"No.~"} FUNCTION {string.in} {"in "} FUNCTION {string.spacein} {" in "} FUNCTION {string.capsin} {"In "} FUNCTION {string.multipages} {"pp.~"} FUNCTION {string.pages} {"p.~"} FUNCTION {string.chapter} {"ch.~"} FUNCTION {string.techrep} {"Tech. Rep."} FUNCTION {string.mastersthesis} {"Master's thesis"} FUNCTION {string.phdthesis} {"PhD thesis"} MACRO {jan} {"Jan."} MACRO {feb} {"Feb."} MACRO {mar} {"Mar."} MACRO {apr} {"Apr."} MACRO {may} {"May"} MACRO {jun} {"June"} MACRO {jul} {"July"} MACRO {aug} {"Aug."} MACRO {sep} {"Sept."} MACRO {oct} {"Oct."} MACRO {nov} {"Nov."} MACRO {dec} {"Dec."} MACRO {am} {"Acta Math."} MACRO {amj} {"Am. J. Phys."} MACRO {ap} {"Ann. Phys."} MACRO {cmp} {"Comm. Math. Phys."} MACRO {ijmp} {"Int. Jour. Mod. Phys."} MACRO {mpl} {"Mod. Phys. Lett."} MACRO {njp} {"New J. Phys"} MACRO {nup} {"Nucl. Phys."} MACRO {pl} {"Phys. Lett."} MACRO {pla} {"Phys. Lett. A"} MACRO {pr} {"Phys. Rev."} MACRO {pra} {"Phys. Rev. A"} MACRO {prl} {"Phys. Rev. Lett."} MACRO {repmp} {"Rep. Math. Phys"} MACRO {rmp} {"Rev. Mod. Phys."} MACRO {arXiv} {"http://arxiv.org/abs"} MACRO {cogprints} {"http://cogprints.org"} MACRO {pubmed} {"http://www.ncbi.nlm.nih.gov/pubmed"} ENTRY { address author booktitle chapter edition editor howpublished institution journal key month note number organization pages publisher school series title type volume year archive eprint report collaboration SLACcitation archivePrefix primaryClass url doi } {} { label } INTEGERS { output.state before.all mid.sentence after.quote after.sentence after.quoted.block after.block } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.quote := #3 'after.sentence := #4 'after.quoted.block := #5 'after.block := } STRINGS { s t } FUNCTION {output.nonnull} { 's := output.state mid.sentence = { ", " * write$ } { output.state after.quote = { " " * write$ } { output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = 'write$ { output.state after.quoted.block = { write$ newline$ "\newblock " write$ } { add.period$ " " * write$ } if$ } if$ } if$ } if$ mid.sentence 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {blank.sep} { after.quote 'output.state := } FUNCTION {fin.entry} { output.state after.quoted.block = 'skip$ 'add.period$ if$ write$ newline$ } FUNCTION {new.block} { output.state before.all = 'skip$ { output.state after.quote = { after.quoted.block 'output.state := } { after.block 'output.state := } if$ } if$ } FUNCTION {new.sentence} { output.state after.block = 'skip$ { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.block.checka} { empty$ 'skip$ 'new.block if$ } FUNCTION {new.block.checkb} { empty$ swap$ empty$ and 'skip$ 'new.block if$ } FUNCTION {new.sentence.checka} { empty$ 'skip$ 'new.sentence if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "{\em " swap$ * "}" * } if$ } FUNCTION {capitalize} { "u" change.case$ "t" change.case$ } INTEGERS { nameptr namesleft numnames } FUNCTION {format.names} { 's := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := nameptr #1 > { namesleft #1 > { ", " * t * } { numnames #2 > { "," * } 'skip$ if$ t "others" = { " {\em et~al.}" * } { string.and * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } FUNCTION {format.archive} { archivePrefix empty$ { "" } { archivePrefix ":" *} if$ } FUNCTION {format.primaryClass} { primaryClass empty$ { "" } { " [" primaryClass * "]" *} if$ } FUNCTION {format.eprint} { eprint empty$ { ""} { archive empty$ {"\href{http://arxiv.org/abs/" eprint * "}" * "{{\ttfamily " * format.archive * eprint * format.primaryClass * "}}" *} {"\href{" archive * "/" * eprint * "}" * "{{\ttfamily " * format.archive * eprint * format.primaryClass * "}}" *} if$ } if$ } FUNCTION {format.url} { url empty$ { "" } {"\url{" url * "}" *} if$ } FUNCTION {add.doi} { duplicate$ empty$ { skip$ } { doi empty$ {} {"\href{http://dx.doi.org/" doi * "}{" * swap$ * "}" *} if$ } if$ } FUNCTION {format.report} { report empty$ { ""} { report} if$ } FUNCTION {format.howpublished} { howpublished empty$ { "" } { howpublished capitalize } if$ } FUNCTION {format.editors} { editor empty$ { "" } { editor format.names editor num.names$ #1 > { string.editors * } { string.editor * } if$ } if$ } FUNCTION {format.title} { title empty$ { "" } { "``" title "t" change.case$ * ",''" * } if$ } FUNCTION {format.title.p} { title empty$ { "" } { "``" title "t" change.case$ * ".''" * } if$ } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } FUNCTION {format.date} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ 'year { month capitalize ", " * year * } if$ } if$ } FUNCTION {format.date.paren} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ {"(" year * ") " *} {"(" month capitalize * ", " * year * ") " *} if$ } if$ } FUNCTION {format.collaboration} { collaboration empty$ { "" } { "{\bfseries " collaboration * "} " * "Collaboration" * } if$ } FUNCTION {format.SLACcitation} { SLACcitation empty$ {""} { newline$ SLACcitation output "" newline$ } if$ } FUNCTION {format.btitle} { title emphasize } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { string.volume volume * series empty$ 'skip$ { string.of * series emphasize * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { output.state mid.sentence = { string.number } { string.capsnumber } if$ number * series empty$ { "there's a number but no series in " cite$ * warning$ } { string.spacein * series * } if$ } if$ } { "" } if$ } FUNCTION {format.edition} { edition empty$ { "" } { edition "l" change.case$ string.edition * } if$ } INTEGERS { multiresult } FUNCTION {multi.page.check} { 't := #0 'multiresult := { multiresult not t empty$ not and } { t #1 #1 substring$ duplicate$ "-" = swap$ duplicate$ "," = swap$ "+" = or or { #1 'multiresult := } { t #2 global.max$ substring$ 't := } if$ } while$ multiresult } FUNCTION {format.pages} { pages empty$ { "" } { pages multi.page.check { string.multipages pages n.dashify * } { string.pages pages * } if$ } if$ } FUNCTION {format.pages.nopp} { pages empty$ { "empty pages in " cite$ * warning$ "" } { pages multi.page.check { pages n.dashify } { pages } if$ } if$ } FUNCTION {format.volume} { volume empty$ { "" } { "{\bfseries " volume * "} " * } if$ } FUNCTION {format.number} { number empty$ { "" } { "no.~" number * ", " *} if$ } FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { string.chapter chapter * } { type "l" change.case$ chapter tie.or.space.connect } if$ pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } FUNCTION {format.in.ed.booktitle} { booktitle empty$ { "" } { string.in booktitle emphasize * editor empty$ 'skip$ { ", " * format.editors * } if$ } if$ } FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ output.state after.block = { type "t" change.case$ } { type "l" change.case$ } if$ } if$ } FUNCTION {empty.misc.check} { author empty$ title empty$ howpublished empty$ month empty$ year empty$ note empty$ and and and and and { "all relevant fields are empty in " cite$ * warning$ } 'skip$ if$ } FUNCTION {format.tr.number} { type empty$ { string.techrep } 'type if$ number empty$ { "l" change.case$ } { number tie.or.space.connect } if$ } FUNCTION {format.paddress} { address empty$ { "" } { "(" address * ")" * } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { string.in "{\em " * journal * "\/}" * } if$ } { string.in key * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv~}{ll}" format.name$ editor num.names$ duplicate$ #2 > { pop$ " {\em et~al.}" * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " {\em et~al.}" * } { string.and * editor #2 "{vv~}{ll}" format.name$ * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ string.capsin } { string.capsvolume volume * string.of * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "{\em " * series * "\/}" * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { string.in "{\em " * booktitle * "\/}" * } if$ } { string.in key * } if$ } { string.in format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.journal} { journal missing$ { "" } {journal emphasize " " * format.volume * format.number * format.date.paren * format.pages.nopp * } if$ } FUNCTION {article} { output.bibitem format.collaboration output format.authors "author" output.check format.title "title" output.check blank.sep crossref missing$ { journal missing$ {} { format.journal add.doi "journal" output.check} if$ report missing$ {format.eprint output} {blank.sep format.report output format.eprint output} if$ } { format.article.crossref output.nonnull format.pages output format.eprint output } if$ new.sentence format.url output new.sentence note output new.sentence format.SLACcitation output fin.entry } FUNCTION {book} { output.bibitem format.collaboration output author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ format.btitle add.doi "title" output.check crossref missing$ { format.bvolume output new.block format.number.series output new.sentence publisher "publisher" output.check address output } { new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {booklet} { output.bibitem format.collaboration output format.authors output title empty$ { "empty title in " cite$ * warning$ howpublished new.sentence.checka } { howpublished empty$ not address empty$ month empty$ year empty$ and and or { format.title.p output.nonnull } { format.title output.nonnull } if$ blank.sep } if$ format.howpublished output address output format.date output new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {inbook} { output.bibitem format.collaboration output author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull crossref missing$ { "author and editor" editor either.or.check } 'skip$ if$ } if$ format.btitle "title" output.check crossref missing$ { format.bvolume output format.chapter.pages add.doi "chapter and pages" output.check new.block format.number.series output new.block publisher "publisher" output.check address output } { format.chapter.pages add.doi "chapter and pages" output.check new.block format.book.crossref output.nonnull } if$ format.edition output format.date "year" output.check new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {incollection} { output.bibitem format.collaboration output format.authors "author" output.check format.title add.doi "title" output.check blank.sep crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.chapter.pages output new.block publisher "publisher" output.check address output format.edition output format.date "year" output.check } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {inproceedings} { output.bibitem format.collaboration output format.authors "author" output.check format.title add.doi "title" output.check blank.sep crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.bvolume output format.number.series output format.pages output organization output new.block publisher output address output format.date "year" output.check } { format.incoll.inproc.crossref output.nonnull format.pages output } if$ new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem format.collaboration output author empty$ { organization empty$ 'skip$ { organization output.nonnull address output } if$ } { format.authors output.nonnull } if$ format.btitle "title" output.check author empty$ { organization empty$ { address new.block.checka address output } 'skip$ if$ } { organization address new.block.checkb organization output address output } if$ format.edition output format.date output new.block format.eprint output new.block format.url output new.block note output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check format.title add.doi "title" output.check blank.sep string.mastersthesis format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check new.block format.url output new.block note output fin.entry } FUNCTION {misc} { output.bibitem format.collaboration output format.authors output title empty$ { howpublished new.sentence.checka } { howpublished empty$ not month empty$ year empty$ and or { format.title.p output.nonnull } { format.title output.nonnull } if$ blank.sep } if$ format.howpublished output format.date output new.block format.url output new.sentence note output new.sentence fin.entry empty.misc.check } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check format.btitle add.doi "title" output.check new.block string.phdthesis format.thesis.type output.nonnull school "school" output.check address output format.date "year" output.check new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization output } { format.editors output.nonnull } if$ format.btitle add.doi "title" output.check format.bvolume output format.number.series output editor empty$ 'skip$ { organization output } if$ new.block publisher output address output format.date "year" output.check new.block format.eprint output new.block format.url output new.block note output new.sentence format.SLACcitation output fin.entry } FUNCTION {techreport} { output.bibitem format.collaboration output format.authors "author" output.check format.title add.doi "title" output.check blank.sep format.tr.number output.nonnull institution "institution" output.check address output format.date "year" output.check new.block format.eprint output new.block format.url output new.block note output fin.entry } FUNCTION {unpublished} { output.bibitem format.collaboration output format.authors "author" output.check format.title.p "title" output.check blank.sep note "note" output.check format.date output new.sentence format.SLACcitation output fin.entry } FUNCTION {default.type} { misc } READ STRINGS { longest.label } INTEGERS { number.label longest.label.width } FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ } EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\providecommand{\href}[2]{#2}" "\begingroup\raggedright\begin{thebibliography}{" * longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}\endgroup" write$ newline$ } EXECUTE {end.bib} cohomCalg-0.32/old/000077500000000000000000000000001322050713700141105ustar00rootroot00000000000000cohomCalg-0.32/old/cohomcalg-script-v004/000077500000000000000000000000001322050713700200355ustar00rootroot00000000000000cohomCalg-0.32/old/cohomcalg-script-v004/cohom-script.nb000066400000000000000000006201471322050713700227770ustar00rootroot00000000000000(* Content-type: application/mathematica *) (*** Wolfram Notebook File ***) (* http://www.wolfram.com/nb *) (* CreatedBy='Mathematica 7.0' *) (*CacheID: 234*) (* Internal cache information: NotebookFileLineBreakTest NotebookFileLineBreakTest NotebookDataPosition[ 145, 7] NotebookDataLength[ 204717, 4263] NotebookOptionsPosition[ 204086, 4241] NotebookOutlinePosition[ 204708, 4263] CellTagsIndexPosition[ 204665, 4260] WindowFrame->Normal*) (* Beginning of Notebook Content *) Notebook[{ Cell[BoxData[ RowBox[{"\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", " ", RowBox[{ RowBox[{ RowBox[{"Routines", " ", "--"}], "--"}], "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", StyleBox["\n", "Code"], RowBox[{"(*", RowBox[{ RowBox[{ "Routine", " ", "generating", " ", "the", " ", "remnant", " ", "sequence", " ", "for", " ", "a", " ", "given", " ", "element", " ", RowBox[{"Q", ".", " ", "It"}], " ", "returns", " ", "also", " ", "the", " ", "positions", " ", "of", " ", "the", " ", "element", " ", "in", " ", "the", " ", "Q"}], "-", "list"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{ RowBox[{"sequenceneu", "[", "Qtemp_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "positionsliste", ",", " ", "tmpsequence"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpsequence", " ", "=", " ", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "^", "#"}], "&"}], ",", RowBox[{"maxcdegree", "-", "mincdegree", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"positionsliste", "=", RowBox[{"Position", "[", RowBox[{"fullQlist", ",", "Qtemp"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "positionsliste", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpsequence", "[", RowBox[{"[", RowBox[{ RowBox[{"fullcdegreelist", "[", RowBox[{"[", RowBox[{ RowBox[{"positionsliste", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "]"}], "-", "mincdegree", "+", "1"}], "]"}], "]"}], "++"}]}], " ", "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"tmpsequence", ",", "positionsliste"}], "}"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Routine", " ", "that", " ", "tests", " ", "wether", " ", "the", " ", "given", " ", "complex", " ", "is", " ", "exact", " ", "or", " ", "not", " ", "and", " ", "returns", " ", "true", " ", "or", " ", "false", " ", "as", " ", "well", " ", "as", " ", "a", " ", "possible", " ", "candidate", " ", "to", " ", "fix", " ", "the", " ", "complex"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"isexact", "[", "complex_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "kern", ",", "exakt", ",", "n", ",", "fullcomplex"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"fullcomplex", "=", "complex"}], ";", "\[IndentingNewLine]", RowBox[{"n", "=", RowBox[{"Length", "[", "fullcomplex", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"exakt", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"kern", "=", RowBox[{"fullcomplex", "[", RowBox[{"[", "n", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "<", "n"}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"kern", "=", RowBox[{ RowBox[{"fullcomplex", "[", RowBox[{"[", RowBox[{"n", "-", "i"}], "]"}], "]"}], "-", "kern"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"kern", "<", "0"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Return", "[", RowBox[{"{", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", RowBox[{ "n", "-", "i", "+", "1", "+", "mincdegree", "-", "1"}]}], "]"}], ",", RowBox[{"-", "kern"}], ",", "False"}], "}"}], "]"}], ";", RowBox[{"kern", "=", "0"}], ";", RowBox[{"exakt", "=", "0"}]}]}], " ", "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"exakt", "\[Equal]", "1"}], ",", RowBox[{"Return", "[", RowBox[{"{", RowBox[{"\"\\"", ",", "0", ",", "True"}], "}"}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Routine", " ", "that", " ", "returns", " ", "all", " ", "possible", " ", "cohomology", " ", "groups", " ", "to", " ", "a", " ", "given", " ", "complex"}], ",", " ", RowBox[{ "taking", " ", "the", " ", "dimension", " ", "of", " ", "the", " ", "variety", " ", "into", " ", "account"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"CohomsOf", "[", RowBox[{"sequence_", ",", "startdim_"}], "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "result", ",", "tempsequence"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"result", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"altersum", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "sequence", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"altersum", "=", RowBox[{"altersum", " ", "+", " ", RowBox[{ RowBox[{ RowBox[{"(", RowBox[{"-", "1"}], ")"}], "^", "i"}], "*", RowBox[{"sequence", "[", RowBox[{"[", "i", "]"}], "]"}]}]}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"altersum", "=", RowBox[{"Abs", "[", "altersum", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", RowBox[{"1", "-", "startdim"}]}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"1", "-", "startdim", "+", RowBox[{"(", RowBox[{ RowBox[{"Length", "[", "equivalencerelations", "]"}], "-", RowBox[{"Length", "[", RowBox[{"equivalencerelations", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ")"}]}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"sequence", "[", RowBox[{"[", "i", "]"}], "]"}], "\[GreaterEqual]", " ", "altersum"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tempsequence", "=", "sequence"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{"tempsequence", "[", RowBox[{"[", "i", "]"}], "]"}], "=", RowBox[{ RowBox[{"tempsequence", "[", RowBox[{"[", "i", "]"}], "]"}], "-", "altersum"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"isexact", "[", "tempsequence", "]"}], "[", RowBox[{"[", "3", "]"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"result", ",", RowBox[{"{", RowBox[{"h", ",", RowBox[{"i", "-", RowBox[{"(", RowBox[{"1", "-", "startdim"}], ")"}]}], ",", "altersum"}], "}"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "result", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ "Subroutine", " ", "the", " ", "converts", " ", "a", " ", "set", " ", "of", " ", "coordinates", " ", "into", " ", "their", " ", "positions", " ", "in", " ", "the", " ", "coordinate"}], "-", "list"}], ",", " ", RowBox[{ RowBox[{"e", ".", "g", ".", " ", RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}]}], " ", "\[Rule]", " ", RowBox[{"{", RowBox[{"1", ",", "2"}], "}"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ConvertDenominatiorElement", "[", "element_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "convertedelement"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"convertedelement", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "element", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"convertedelement", ",", RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{"coordinates", ",", RowBox[{"element", "[", RowBox[{"[", "i", "]"}], "]"}]}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}]}], " ", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "convertedelement", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Subroutine", ":", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"Generates", " ", "the", " ", "expression", " ", "u1"}], "\[GreaterEqual]", "0"}], " ", "&&", " ", RowBox[{"u2", "\[GreaterEqual]", "0"}], " ", "&&", " ", RowBox[{"u3", "\[GreaterEqual]", "0"}], " ", "&&"}], " ", "..."}], " ", "from", " ", "a", " ", "given", " ", "set", " ", "of", " ", "coordinates", " ", RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "..."}], "}"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListElementsLargerEqZero", "[", "list_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "temp"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"list", "\[NotEqual]", " ", RowBox[{"{", "}"}]}], ",", RowBox[{"temp", "=", RowBox[{ RowBox[{"list", "[", RowBox[{"[", "1", "]"}], "]"}], "\[GreaterEqual]", " ", "0"}]}], ",", RowBox[{"Return", "[", RowBox[{"{", "}"}], "]"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "2"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "list", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"temp", "=", RowBox[{"temp", " ", "&&", " ", RowBox[{ RowBox[{"list", "[", RowBox[{"[", "i", "]"}], "]"}], "\[GreaterEqual]", " ", "0"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "temp", "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Main", " ", "counting", " ", RowBox[{"routing", ":", " ", RowBox[{ "It", " ", "generates", " ", "the", " ", "matrix", " ", "m"}]}]}], ",", " ", RowBox[{ RowBox[{ "the", " ", "constant", " ", "vector", " ", "b", " ", "and", " ", "solves", " ", "the", " ", "linear", " ", "equations", " ", RowBox[{"m", ".", "x"}]}], "=", RowBox[{ "b", " ", "for", " ", "non", " ", "negative", " ", "integers"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"RationomsOf", "[", "DenominatorElement_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "b", ",", "m", ",", "ConvertedElement"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"ConvertedElement", "=", RowBox[{ "ConvertDenominatiorElement", "[", "DenominatorElement", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"m", "=", "equrel"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "equrel", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{"equrel", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"MemberQ", "[", RowBox[{"ConvertedElement", ",", "j"}], "]"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], "=", RowBox[{"-", RowBox[{ RowBox[{"equrel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], " ", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], "=", RowBox[{ RowBox[{"equrel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"b", "=", RowBox[{ RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{ RowBox[{"m", "[", RowBox[{"[", "#", "]"}], "]"}], "[", RowBox[{"[", "j", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"j", ",", "ConvertedElement"}], "}"}]}], "]"}]}], "&"}], ",", RowBox[{"Length", "[", "Qcharges", "]"}]}], "]"}], "+", "Qcharges"}]}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", RowBox[{ RowBox[{"Length", "[", RowBox[{ RowBox[{"Reduce", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{"m", ".", "coordinates"}], "==", "b"}], "&&", RowBox[{ "ListElementsLargerEqZero", "[", "coordinates", "]"}]}], ",", "coordinates", ",", "Integers"}], "]"}], "||", RowBox[{"{", "\"\\"", "}"}]}], "]"}], "-", "1"}], "]"}]}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Here", " ", "the", " ", "equation", " ", "is", " ", RowBox[{"solved", ".", " ", "The"}], " ", "\"\\"", " ", "has", " ", "to", " ", "be", " ", "added", " ", "and", " ", "removed", " ", "from", " ", "the", " ", "number", " ", "of", " ", "solutions", " ", "in", " ", "order", " ", "to", " ", "avoid", " ", "that", " ", "only", " ", "one", " ", "solution", " ", "exists"}], "*)"}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Converts", " ", "a", " ", "list", " ", "into", " ", "a", " ", "string"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"ListToString", "[", "listinput_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"a", ",", "i"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"a", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", RowBox[{"Length", "[", "listinput", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"a", "=", RowBox[{"StringJoin", "[", RowBox[{"a", ",", RowBox[{"ToString", "[", RowBox[{"listinput", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], " ", "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Return", "[", "a", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Main"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Main"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Main"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Main"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"routines", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Main", " ", "routine", " ", "1"}], ":", " ", RowBox[{ RowBox[{ "Generates", " ", "first", " ", "the", " ", "List", " ", "of", " ", "all", " ", "possible", " ", RowBox[{"Q", "'"}], "s", " ", "and", " ", "the", " ", "corresponding", " ", "c"}], "-", RowBox[{ "degrees", " ", "and", " ", "afterwards", " ", "a", " ", "list", " ", "of", " ", "all", " ", "secondary", " ", "sequences", " ", "that", " ", "may", " ", "appear"}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"GenerateSecondarySequences", "[", "varietyin_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "ii", ",", "kk"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"coordinates", "=", RowBox[{"varietyin", "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SR", "=", RowBox[{"varietyin", "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"equivalencerelations", "=", RowBox[{"varietyin", "[", RowBox[{"[", "3", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"dim", "=", RowBox[{ RowBox[{"Length", "[", "coordinates", "]"}], "-", RowBox[{"Length", "[", RowBox[{"equivalencerelations", "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"numberofvertices", "=", RowBox[{"Length", "[", "coordinates", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"equrel", "=", RowBox[{"Transpose", "[", "equivalencerelations", "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Generate", " ", "the", " ", "lists", " ", "of", " ", RowBox[{"Q", "'"}], "s", " ", "and", " ", "c"}], "-", "degrees"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ RowBox[{"DateList", "[", "]"}], ",", "\"\< ---- Part 1: Creating Q and c-degree lists\>\""}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"d", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"fullQlist", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Union", "[", RowBox[{"Flatten", "[", "#", "]"}], "]"}], ",", RowBox[{ RowBox[{"Length", "[", RowBox[{"Union", "[", RowBox[{"Flatten", "[", "#", "]"}], "]"}], "]"}], "-", RowBox[{"Length", "[", "#", "]"}]}]}], "}"}], "&"}], ",", RowBox[{"Subsets", "[", "SR", "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"fullcdegreelist", "=", RowBox[{ RowBox[{"Delete", "[", RowBox[{"fullQlist", ",", RowBox[{"{", "1", "}"}]}], "]"}], "[", RowBox[{"[", RowBox[{"All", ",", "2"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"fullQlist", "=", RowBox[{ RowBox[{"Delete", "[", RowBox[{"fullQlist", ",", RowBox[{"{", "1", "}"}]}], "]"}], " ", "[", RowBox[{"[", RowBox[{"All", ",", "1", ",", "All"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"dneu", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{ RowBox[{"AbsoluteTime", "[", "dneu", "]"}], "-", RowBox[{"AbsoluteTime", "[", "d", "]"}]}], ",", "\"\< seconds\>\""}], "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"maxsequencesize", " ", "=", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{"Length", "[", "SR", "]"}], "-", "2"}], ")"}], "+", RowBox[{"(", RowBox[{"numberofvertices", "-", "1"}], ")"}], "+", "1"}]}], " ", ";", "\[IndentingNewLine]", RowBox[{"mincdegree", "=", RowBox[{"2", "-", RowBox[{"Length", "[", "SR", "]"}]}]}], ";", "\[IndentingNewLine]", RowBox[{"maxcdegree", "=", RowBox[{"numberofvertices", "-", "1"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Generate", " ", "the", " ", "list", " ", "of", " ", "possible", " ", "secondary", " ", "sequences", " ", "for", " ", "all", " ", "various", " ", "elements", " ", "in", " ", "the", " ", "Q"}], "-", "list"}], "*)"}], "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ RowBox[{"DateList", "[", "]"}], ",", "\"\< ---- Part 2: Generating remnant sequences\>\""}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"d", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"sortierttupel", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"report", "=", "19"}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"2", "^", RowBox[{"Length", "[", "coordinates", "]"}]}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"fullQlist", "\[NotEqual]", RowBox[{"{", "}"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"report", "++"}], ";", "\[IndentingNewLine]", RowBox[{"tempQ", "=", RowBox[{"fullQlist", "[", RowBox[{"[", RowBox[{"Length", "[", "fullQlist", "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"!", RowBox[{"MemberQ", "[", RowBox[{"sortierttupel", ",", "tempQ", ",", "3"}], "]"}]}], ",", " ", RowBox[{"(*", RowBox[{ "Tests", " ", "wether", " ", "the", " ", "element", " ", "is", " ", "not", " ", "yet", " ", "in", " ", "the", " ", "list"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"tempsequence", "=", RowBox[{ RowBox[{"sequenceneu", "[", "tempQ", "]"}], "[", RowBox[{"[", "1", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"tmppositionslist", "=", RowBox[{ RowBox[{"sequenceneu", "[", "tempQ", "]"}], "[", RowBox[{"[", "2", "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"MemberQ", "[", RowBox[{"sortierttupel", ",", "tempsequence", ",", "2"}], "]"}], ",", " ", RowBox[{"(*", RowBox[{ "Tests", " ", "wether", " ", "the", " ", "sequence", " ", "already", " ", "appeared", " ", "earlier"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", RowBox[{ RowBox[{ RowBox[{"Position", "[", RowBox[{"sortierttupel", ",", "tempsequence"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], ",", "tempQ"}], "]"}], "\[IndentingNewLine]", RowBox[{"(*", "else", "*)"}], ",", RowBox[{"AppendTo", "[", RowBox[{"sortierttupel", ",", RowBox[{"{", RowBox[{ RowBox[{"{", "tempQ", "}"}], ",", "tempsequence"}], "}"}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"fullQlist", "=", RowBox[{"Delete", "[", RowBox[{"fullQlist", ",", "tmppositionslist"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"fullcdegreelist", "=", RowBox[{"Delete", "[", RowBox[{"fullcdegreelist", ",", "tmppositionslist"}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"report", "\[Equal]", "20"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"NotebookDelete", "[", "temp", "]"}], ";", "\[IndentingNewLine]", RowBox[{"dneu", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"a", "=", RowBox[{"ListToString", "[", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{"2", "^", RowBox[{"Length", "[", "SR", "]"}]}], "-", RowBox[{"Length", "[", "fullQlist", "]"}], "-", "1"}], ",", "\"\< elements from Q-list done within \>\"", ",", RowBox[{ RowBox[{"AbsoluteTime", "[", "dneu", "]"}], "-", RowBox[{"AbsoluteTime", "[", "d", "]"}]}], ",", "\"\< seconds\>\""}], "}"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"report", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"temp", "=", RowBox[{"PrintTemporary", "[", "a", "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"sortierttupelsave", "=", "sortierttupel"}], ";", "\[IndentingNewLine]", RowBox[{"dneu", "=", RowBox[{"DateList", "[", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{"\"\\"", ",", RowBox[{ RowBox[{"AbsoluteTime", "[", "dneu", "]"}], "-", RowBox[{"AbsoluteTime", "[", "d", "]"}]}], ",", "\"\< seconds\>\""}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";", RowBox[{"(*", RowBox[{"End", " ", "of", " ", "routine"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{ "Subroutine", " ", "of", " ", "main", " ", "routine", " ", "2"}], ":", " ", RowBox[{ "Tests", " ", "which", " ", "secondary", " ", "sequences", " ", "and", " ", "their", " ", "corresponding", " ", "cohomologies", " ", "are", " ", "contributing", " ", "to", " ", "the", " ", "cohomology", " ", "of", " ", "the", " ", "line", " ", "bundle", " ", "in", " ", RowBox[{"question", ".", " ", "It"}], " ", "also", " ", "determines", " ", "via", " ", "subroutines"}]}], ",", " ", RowBox[{"how", " ", "many", " ", "rationom", " ", "contribute"}]}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"SubLinebundleCohomologyOf", "[", "Qchargesin_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{"i", ",", "j", ",", "ii", ",", "kk"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"Qcharges", "=", "Qchargesin"}], ";", "\[IndentingNewLine]", RowBox[{"sortierttupel", "=", "sortierttupelsave"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"ii", "=", "1"}], ",", RowBox[{"ii", "\[LessEqual]", " ", RowBox[{"Length", "[", "sortierttupel", "]"}]}], ",", RowBox[{"ii", "++"}], ",", " ", RowBox[{"(*", RowBox[{ "Sortierttupel", " ", "has", " ", "the", " ", "following", " ", "list", " ", "structure", " ", RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"Denominator", " ", "element"}], "}"}], ",", RowBox[{"{", "sequence", "}"}]}], "}"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], ",", RowBox[{"{", "}"}]}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], ",", "0"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{"(*", RowBox[{ RowBox[{"1", "\[Equal]", "2"}], "&&"}], "*)"}], RowBox[{ RowBox[{"!", RowBox[{ RowBox[{"isexact", "[", RowBox[{"sortierttupel", "[", RowBox[{"[", RowBox[{"ii", ",", "2"}], "]"}], "]"}], "]"}], "[", RowBox[{"[", "3", "]"}], "]"}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"kk", "=", "1"}], ",", RowBox[{"kk", "\[LessEqual]", RowBox[{"Length", "[", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "]"}]}], ",", RowBox[{"kk", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"temprationomsOf", "=", RowBox[{"RationomsOf", "[", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], "[", RowBox[{"[", "1", "]"}], "]"}], "[", RowBox[{"[", "kk", "]"}], "]"}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], "[", RowBox[{"[", "3", "]"}], "]"}], ",", "temprationomsOf"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}], "=", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "ii", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}], "+", "temprationomsOf"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "\[IndentingNewLine]", "]"}]}], ";", RowBox[{"(*", RowBox[{"End", " ", "of", " ", "routine"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Main", " ", "routine", " ", "2"}], ":", " ", RowBox[{ "Opens", " ", "the", " ", "subroutine", " ", "above", " ", "and", " ", "puts", " ", "the", " ", "results", " ", "together"}]}], " ", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"LinebundleCohomologyOf", "[", "Qchargesin_", "]"}], ":=", RowBox[{"Module", "[", RowBox[{ RowBox[{"{", RowBox[{ "i", ",", "j", ",", "ii", ",", "kk", ",", "Resultlistofcohoms", ",", "Resultlistofcohomsdual", ",", "PossibleResults", ",", "PossibleResultsDual", ",", "resultvectors", ",", "resultvectorsFromDual", ",", "output"}], "}"}], ",", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{ RowBox[{"Qchargesstring", "=", "\"\<\>\""}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Qchargesin", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{"i", "\[NotEqual]", " ", "1"}], ",", "\[IndentingNewLine]", RowBox[{"Qchargesstring", "=", RowBox[{"StringJoin", "[", RowBox[{"Qchargesstring", ",", " ", "\"\<,\>\""}], "]"}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Qchargesstring", "=", RowBox[{"StringJoin", "[", RowBox[{"Qchargesstring", ",", RowBox[{"ToString", "[", RowBox[{"Qchargesin", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}]}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"CanonicalDivisor", "=", RowBox[{"-", RowBox[{"Sum", "[", RowBox[{ RowBox[{"equivalencerelations", "[", RowBox[{"[", "i", "]"}], "]"}], ",", RowBox[{"{", RowBox[{"i", ",", "1", ",", RowBox[{"Length", "[", "equivalencerelations", "]"}]}], "}"}]}], "]"}]}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculate", " ", "Cohomologies", " ", "of", " ", "the", " ", "divisor"}], "*)"}], "\[IndentingNewLine]", RowBox[{"tmp", "=", RowBox[{"PrintTemporary", "[", "\"\<.\>\"", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SubLinebundleCohomologyOf", "[", "Qchargesin", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Collecting"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "the", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"Results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"Resultlistofcohoms", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "The"}]}]}]}]}]}]}]}]}]}]}], " ", "case", " ", "of", " ", "the", " ", "empty", " ", "set", " ", "in", " ", "the", " ", "denominator", " ", "is", " ", "treated", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"separately", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"leer", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"RationomsOf", "[", "leer", "]"}], "\[NotEqual]", "0"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"Resultlistofcohoms", ",", RowBox[{"{", RowBox[{"{", RowBox[{"h", ",", "0", ",", RowBox[{"RationomsOf", "[", "leer", "]"}]}], "}"}], "}"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Case"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "denominator"}], " ", "\[NotEqual]", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"{", "}"}], " ", "--"}], "--"}], "--"}], "--"}], "--"}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "sortierttupel", "]"}]}], ",", RowBox[{"i", "++"}], ",", RowBox[{ RowBox[{"e", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}], "\[NotEqual]", "0"}], " ", "&&", " ", RowBox[{"!", RowBox[{ RowBox[{"isexact", "[", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], "[", RowBox[{"[", "3", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"cohomresult", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"h", ",", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}], " ", ",", " ", RowBox[{ RowBox[{"#", "[", RowBox[{"[", "3", "]"}], "]"}], "*", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}]}]}], "}"}], "&"}], ",", RowBox[{"CohomsOf", "[", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "2", "]"}], "]"}], ",", "mincdegree"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"Resultlistofcohoms", ",", "cohomresult"}], "]"}]}]}], "\[IndentingNewLine]", "]"}]}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"output", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"serredual", "=", "0"}], ";", "\[IndentingNewLine]", RowBox[{"unique", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"resultvector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "*", "#"}], "&"}], ",", RowBox[{"dim", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Check", " ", "results", " ", "for", " ", "uniqueness", " ", "and", " ", "print", " ", "them", " ", "in", " ", "case", " ", "that", " ", "they", " ", "unique"}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Resultlistofcohoms", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"Resultlistofcohoms", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}], "\[NotEqual]", " ", "1"}], ",", RowBox[{"unique", "=", "0"}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"unique", "==", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Resultlistofcohoms", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"resultvector", "[", RowBox[{"[", RowBox[{ RowBox[{"Resultlistofcohoms", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"resultvector", "[", RowBox[{"[", RowBox[{ RowBox[{"Resultlistofcohoms", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "+", RowBox[{"Resultlistofcohoms", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "3"}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<*\>\""}], "]"}], ",", "\"\<(O(\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", "resultvector"}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}], ",", " ", RowBox[{"serredual", "=", "1"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "more", " ", "fancy", " ", "output", " ", "for", " ", "the", " ", "graphical", " ", "interface", " ", "of", " ", "mathematica"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[FilledSmallCircle]\>\""}], "]"}], ",", "\"\<(\[ScriptCapitalO](\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", "resultvector"}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}], ",", " ", RowBox[{"serredual", "=", "1"}]}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"unique", "=", "1"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "Calculate", " ", "Cohomologies", " ", "of", " ", "the", " ", "Serre", " ", "dual", " ", "divisor"}], "*)"}], "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"serredual", " ", "==", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"NotebookDelete", "[", "tmp", "]"}], ";", "\[IndentingNewLine]", RowBox[{"tmp", "=", RowBox[{"PrintTemporary", "[", "\"\<..\>\"", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"SubLinebundleCohomologyOf", "[", RowBox[{"CanonicalDivisor", "-", "Qchargesin"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Printing"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "the", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"Results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"Resultlistofcohomsdual", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "The"}]}]}]}]}]}]}]}]}]}], " ", "case", " ", "of", " ", "the", " ", "empty", " ", "set", " ", "in", " ", "the", " ", "denominator", " ", "is", " ", "treated", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"separately", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"leer", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"RationomsOf", "[", "leer", "]"}], "\[NotEqual]", "0"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"AppendTo", "[", RowBox[{"Resultlistofcohomsdual", ",", RowBox[{"{", RowBox[{"{", RowBox[{"h", ",", "0", ",", RowBox[{"RationomsOf", "[", "leer", "]"}]}], "}"}], "}"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Case"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "denominator"}], " ", "\[NotEqual]", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"{", "}"}], " ", "--"}], "--"}], "--"}], "--"}], "--"}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "sortierttupel", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}], "\[NotEqual]", "0"}], " ", "&&", " ", RowBox[{"!", RowBox[{ RowBox[{"isexact", "[", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "2", "]"}], "]"}], "]"}], "[", RowBox[{"[", "3", "]"}], "]"}]}]}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"cohomresult", "=", RowBox[{"Map", "[", RowBox[{ RowBox[{ RowBox[{"{", RowBox[{"h", ",", RowBox[{"#", "[", RowBox[{"[", "2", "]"}], "]"}], " ", ",", " ", RowBox[{ RowBox[{"#", "[", RowBox[{"[", "3", "]"}], "]"}], "*", RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "4", "]"}], "]"}]}]}], "}"}], "&"}], ",", RowBox[{"CohomsOf", "[", RowBox[{ RowBox[{ RowBox[{"sortierttupel", "[", RowBox[{"[", "i", "]"}], "]"}], "[", RowBox[{"[", "2", "]"}], "]"}], ",", "mincdegree"}], "]"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"Resultlistofcohomsdual", ",", "cohomresult"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ "Check", " ", "the", " ", "Serre", " ", "dual", " ", "divisor", " ", "for", " ", RowBox[{"uniqueness", ".", " ", "If"}], " ", "it", " ", "is"}], ",", " ", RowBox[{ "print", " ", "the", " ", "corresponding", " ", "data", " ", "for", " ", "the", " ", "divisor", " ", "in", " ", "question", " ", "by", " ", "using", " ", "Serre", " ", "duality"}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Resultlistofcohomsdual", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"Resultlistofcohomsdual", "[", RowBox[{"[", "i", "]"}], "]"}], "]"}], "\[NotEqual]", " ", "1"}], ",", RowBox[{"unique", "=", "0"}]}], "]"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"unique", "==", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", "Resultlistofcohomsdual", "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"resultvector", "[", RowBox[{"[", RowBox[{"dim", "-", " ", RowBox[{"Resultlistofcohomsdual", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"resultvector", "[", RowBox[{"[", RowBox[{"dim", "-", RowBox[{"Resultlistofcohomsdual", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "+", RowBox[{"Resultlistofcohomsdual", "[", RowBox[{"[", RowBox[{"i", ",", "1", ",", "3"}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<*\>\""}], "]"}], ",", "\"\<(O(\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", "resultvector"}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "more", " ", "fancy", " ", "output", " ", "for", " ", "the", " ", "graphical", " ", "interface", " ", "of", " ", "mathematica"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[FilledSmallCircle]\>\""}], "]"}], ",", "\"\<(\[ScriptCapitalO](\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", "resultvector"}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}], "*)"}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "If", " ", "also", " ", "the", " ", "Serre", " ", "dual", " ", "is", " ", "not", " ", "trivially", " ", "unique", " ", "we", " ", "need", " ", "to", " ", "consider", " ", "all", " ", "possible", " ", "combinations", " ", "and", " ", "cancel", " ", "them", " ", "out"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "First", " ", "generate", " ", "a", " ", "list", " ", "of", " ", "all", " ", "possible", " ", "resulting", " ", "vectors", " ", RowBox[{"h", "^"}], "*", RowBox[{"(", RowBox[{"O", RowBox[{"(", "D", ")"}]}], ")"}]}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{"resultvectors", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", RowBox[{"resultvectorsFromDual", "=", RowBox[{"{", "}"}]}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"unique", "\[Equal]", "0"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"NotebookDelete", "[", "tmp", "]"}], ";", "\[IndentingNewLine]", RowBox[{"tmp", "=", RowBox[{"PrintTemporary", "[", "\"\<...\>\"", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PossibleResults", "=", RowBox[{"Tuples", "[", "Resultlistofcohoms", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"PossibleResultsDual", "=", RowBox[{"Tuples", "[", "Resultlistofcohomsdual", "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", "PossibleResults", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpesultvector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "*", "#"}], "&"}], ",", RowBox[{"dim", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", RowBox[{"PossibleResults", "[", RowBox[{"[", "j", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpesultvector", "[", RowBox[{"[", " ", RowBox[{ RowBox[{ RowBox[{"PossibleResults", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"tmpesultvector", "[", RowBox[{"[", RowBox[{ RowBox[{ RowBox[{"PossibleResults", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "+", RowBox[{ RowBox[{"PossibleResults", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "3"}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"resultvectors", ",", "tmpesultvector"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"j", "=", "1"}], ",", RowBox[{"j", "\[LessEqual]", " ", RowBox[{"Length", "[", "PossibleResultsDual", "]"}]}], ",", RowBox[{"j", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpesultvector", "=", RowBox[{"Array", "[", RowBox[{ RowBox[{ RowBox[{"0", "*", "#"}], "&"}], ",", RowBox[{"dim", "+", "1"}]}], "]"}]}], ";", "\[IndentingNewLine]", RowBox[{"For", "[", RowBox[{ RowBox[{"i", "=", "1"}], ",", RowBox[{"i", "\[LessEqual]", " ", RowBox[{"Length", "[", RowBox[{"PossibleResultsDual", "[", RowBox[{"[", "j", "]"}], "]"}], "]"}]}], ",", RowBox[{"i", "++"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"tmpesultvector", "[", RowBox[{"[", RowBox[{"dim", "-", " ", RowBox[{ RowBox[{"PossibleResultsDual", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "=", RowBox[{ RowBox[{"tmpesultvector", "[", RowBox[{"[", RowBox[{"dim", "-", RowBox[{ RowBox[{"PossibleResultsDual", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "2"}], "]"}], "]"}], "+", "1"}], "]"}], "]"}], "+", RowBox[{ RowBox[{"PossibleResultsDual", "[", RowBox[{"[", "j", "]"}], "]"}], "[", RowBox[{"[", RowBox[{"i", ",", "3"}], "]"}], "]"}]}]}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"AppendTo", "[", RowBox[{"resultvectorsFromDual", ",", "tmpesultvector"}], "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{ RowBox[{"Length", "[", RowBox[{"Intersection", "[", RowBox[{"resultvectors", ",", "resultvectorsFromDual"}], "]"}], "]"}], "\[Equal]", " ", "1"}], ",", "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<*\>\""}], "]"}], ",", "\"\<(O(\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", RowBox[{"Flatten", "[", RowBox[{"Intersection", "[", RowBox[{"resultvectors", ",", "resultvectorsFromDual"}], "]"}], "]"}]}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "more", " ", "fancy", " ", "output", " ", "for", " ", "the", " ", "graphical", " ", "interface", " ", "of", " ", "mathematica"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[FilledSmallCircle]\>\""}], "]"}], ",", "\"\<(\[ScriptCapitalO](\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", RowBox[{"Flatten", "[", RowBox[{"Intersection", "[", RowBox[{"resultvectors", ",", "resultvectorsFromDual"}], "]"}], "]"}]}], "]"}], ";", " ", RowBox[{"output", "=", "0"}]}], "*)"}], "\[IndentingNewLine]", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"If", "[", RowBox[{ RowBox[{"output", "\[Equal]", "1"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "Uniqueness"}]}]}]}]}]}]}], " ", "could", " ", "not", " ", "be", " ", RowBox[{"achieved", ":", " ", RowBox[{ "Printing", " ", "the", " ", "remaining", " ", "poossible", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", "--"}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"Print", "[", "Space", "]"}], ";", "\[IndentingNewLine]", RowBox[{ "Print", "[", "\"\\"", "]"}], ";", "\[IndentingNewLine]", RowBox[{"Print", "[", " ", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<*\>\""}], "]"}], ",", "\"\<(O(\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", " ", RowBox[{"Intersection", "[", RowBox[{"resultvectors", ",", "resultvectorsFromDual"}], "]"}]}], "]"}], ";"}]}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ "more", " ", "fancy", " ", "output", " ", "for", " ", "the", " ", "graphical", " ", "interface", " ", "of", " ", "mathematica"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"Print", "[", " ", RowBox[{ RowBox[{"Superscript", "[", RowBox[{"\"\\"", ",", "\"\<\[FilledSmallCircle]\>\""}], "]"}], ",", "\"\<(\[ScriptCapitalO](\>\"", ",", "Qchargesstring", ",", "\"\<)) = \>\"", ",", " ", RowBox[{"Intersection", "[", RowBox[{"resultvectors", ",", "resultvectorsFromDual"}], "]"}]}], "]"}], ";"}], "*)"}], "\[IndentingNewLine]", "]"}], ";", "\[IndentingNewLine]", RowBox[{"NotebookDelete", "[", "tmp", "]"}], ";"}]}], "\[IndentingNewLine]", "]"}]}], ";", RowBox[{"(*", RowBox[{"End", " ", "of", " ", "routine"}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "-", " ", "END"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", "OF", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"PROGRAM", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{ "--", "-"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]"}]}]}]], "Input", CellChangeTimes->{{3.474278249207546*^9, 3.474278259359749*^9}, { 3.474278331697122*^9, 3.474278457733211*^9}, {3.474278853511161*^9, 3.474278864414941*^9}, {3.474353651846471*^9, 3.474353728327644*^9}, { 3.474353778994437*^9, 3.474353848721274*^9}, {3.474353965919147*^9, 3.474353974547001*^9}, {3.474354139383733*^9, 3.474354152010258*^9}, { 3.474354211731895*^9, 3.474354382529528*^9}, {3.474354475260257*^9, 3.474354476219163*^9}, {3.474354514784996*^9, 3.474354716099728*^9}, { 3.474354816313241*^9, 3.474354844003238*^9}, {3.474355269410373*^9, 3.474355357170537*^9}, {3.474355387557546*^9, 3.474355398349931*^9}, { 3.47435553871939*^9, 3.474355789140013*^9}, {3.474373510764801*^9, 3.474373512062075*^9}, {3.474373604026966*^9, 3.47437385004167*^9}, { 3.474373983619533*^9, 3.474374079374492*^9}, 3.474374347487621*^9, { 3.474374444652424*^9, 3.474374468849834*^9}, 3.474374545455593*^9, { 3.47437458334743*^9, 3.474374678787397*^9}, 3.474374718100312*^9, { 3.47437476456015*^9, 3.474374820218823*^9}, {3.474374850797171*^9, 3.474374894146851*^9}, {3.474374934846012*^9, 3.474374966698854*^9}, { 3.4746213016853447`*^9, 3.474621350518138*^9}, 3.474621420286128*^9, { 3.4746215700536947`*^9, 3.47462160563973*^9}, {3.4746217355681615`*^9, 3.4746217412204847`*^9}, {3.4746218257083173`*^9, 3.4746218806124573`*^9}, {3.474621911932249*^9, 3.474621983911366*^9}, { 3.4746220588166504`*^9, 3.474622260303175*^9}, {3.474622306853837*^9, 3.4746223254779024`*^9}, {3.4746223579267583`*^9, 3.4746223601978884`*^9}, {3.474622482391877*^9, 3.474622612816337*^9}, { 3.4746226640232663`*^9, 3.4746227763266897`*^9}, {3.474622816163968*^9, 3.4746228396833134`*^9}, {3.4746229946801786`*^9, 3.474623096481001*^9}, { 3.4746232309986954`*^9, 3.474623291454153*^9}, {3.4746235349440804`*^9, 3.474623596705612*^9}, {3.4746237056318426`*^9, 3.4746238095117846`*^9}, { 3.4746241861973295`*^9, 3.474624187932429*^9}, {3.474624269670104*^9, 3.474624406230915*^9}, {3.4746247975612974`*^9, 3.474624804525696*^9}, { 3.4746251762339563`*^9, 3.4746255999621925`*^9}, {3.474625750032776*^9, 3.4746257839607162`*^9}, {3.4746258427290773`*^9, 3.4746258444881783`*^9}, {3.474626359593641*^9, 3.4746263697552223`*^9}, { 3.474626431152734*^9, 3.4746264627375402`*^9}, {3.4746266219486465`*^9, 3.4746266834001617`*^9}, {3.474626826983374*^9, 3.474626872228962*^9}, { 3.474626918568612*^9, 3.474627094093652*^9}, {3.4746271404533033`*^9, 3.4746272344456797`*^9}, {3.4746272662845*^9, 3.4746275579801846`*^9}, { 3.474627632117425*^9, 3.474627653701659*^9}, {3.474627740618631*^9, 3.4746278722601604`*^9}, {3.4746279626343293`*^9, 3.474627975657074*^9}, { 3.474629791824953*^9, 3.4746298402397223`*^9}, {3.4746299015612297`*^9, 3.4746299185602016`*^9}, {3.474630013929657*^9, 3.4746301118872595`*^9}, { 3.4746301707866287`*^9, 3.4746301909527817`*^9}, {3.474630341557396*^9, 3.4746303951154594`*^9}, 3.4746304285563717`*^9, {3.4746304684586544`*^9, 3.4746304729289103`*^9}, {3.474630505169754*^9, 3.4746305495672936`*^9}, { 3.4746305911926746`*^9, 3.4746306018162823`*^9}, {3.4746307343278613`*^9, 3.474630772752059*^9}, 3.4746308208258085`*^9, {3.4746312962820034`*^9, 3.47463130356942*^9}, {3.4746316767827663`*^9, 3.474631683638159*^9}, { 3.474631718499152*^9, 3.474631721402319*^9}, {3.474631808456298*^9, 3.4746318271183653`*^9}, {3.4746326730857515`*^9, 3.4746327038705125`*^9}, {3.4746329101383104`*^9, 3.4746329298444376`*^9}, {3.4746329883087816`*^9, 3.47463299265103*^9}, { 3.4746331531262083`*^9, 3.474633157419454*^9}, {3.474633366347404*^9, 3.474633369340575*^9}, {3.4746334835201063`*^9, 3.4746335414414186`*^9}, { 3.47463372066267*^9, 3.474633741788878*^9}, {3.4746339961754284`*^9, 3.474634000628683*^9}, {3.4746341283389874`*^9, 3.4746341531284056`*^9}, { 3.474634606916361*^9, 3.474634618115001*^9}, {3.4746347436531816`*^9, 3.474634819437516*^9}, {3.474634875366715*^9, 3.4746349074215484`*^9}, { 3.474634940681451*^9, 3.4746349496669645`*^9}, {3.474635009817405*^9, 3.474635026072335*^9}, {3.474635070234861*^9, 3.4746350709789033`*^9}, 3.474636230561228*^9, {3.4746362962959876`*^9, 3.474636339206442*^9}, { 3.474636388079237*^9, 3.474636389071294*^9}, {3.474636460420375*^9, 3.4746364686128435`*^9}, {3.4746365085841293`*^9, 3.4746365299753532`*^9}, 3.4746366046696253`*^9, {3.4746366866553144`*^9, 3.474636913869311*^9}, { 3.4746369460541515`*^9, 3.4746369842053337`*^9}, {3.4746371236503096`*^9, 3.4746372110653095`*^9}, {3.4746373477361264`*^9, 3.474637411001745*^9}, { 3.4746374929204307`*^9, 3.474637589033928*^9}, {3.474637660140995*^9, 3.4746377470519657`*^9}, {3.474637778348756*^9, 3.474637786492222*^9}, { 3.474637819628117*^9, 3.4746378329058766`*^9}, {3.4746378952164407`*^9, 3.474637896524515*^9}, {3.4746379998354244`*^9, 3.474638020466604*^9}, { 3.474638250910785*^9, 3.474638269284836*^9}, {3.474638330094314*^9, 3.4746383656073456`*^9}, {3.4746384400636044`*^9, 3.47463844366181*^9}, { 3.4746384876943283`*^9, 3.474638491941571*^9}, {3.474638523902399*^9, 3.474638567179875*^9}, {3.474638604919033*^9, 3.4746386050240393`*^9}, { 3.474638661232254*^9, 3.474638662011299*^9}, {3.474638783358239*^9, 3.4746388255886545`*^9}, {3.474638922910221*^9, 3.47463893722804*^9}, 3.474638980327505*^9, {3.4746390146814704`*^9, 3.474639016987602*^9}, { 3.474639076676016*^9, 3.4746391125590687`*^9}, {3.474639264101736*^9, 3.474639291455301*^9}, {3.4746393516077414`*^9, 3.474639447765241*^9}, { 3.4746395825989532`*^9, 3.4746396241583304`*^9}, {3.4746397047939425`*^9, 3.4746397071420765`*^9}, {3.474639768181568*^9, 3.4746397932770033`*^9}, { 3.474639902078226*^9, 3.474639906771495*^9}, {3.4746409705513396`*^9, 3.4746409741885476`*^9}, {3.4746417112877073`*^9, 3.4746417120827527`*^9}, {3.474641755428232*^9, 3.4746417914042897`*^9}, { 3.4746877610276318`*^9, 3.474687767125226*^9}, {3.474687831528715*^9, 3.4746878328874855`*^9}, {3.474688220944222*^9, 3.4746882215767317`*^9}, { 3.4746886659777145`*^9, 3.4746887294607186`*^9}, {3.47468899906171*^9, 3.4746890002542286`*^9}, {3.47468909452623*^9, 3.4746891306645374`*^9}, { 3.4746892001023626`*^9, 3.4746892002448645`*^9}, {3.474689480614127*^9, 3.4746895101218333`*^9}, {3.4746898195343647`*^9, 3.474689820037623*^9}, { 3.4746899715859604`*^9, 3.4746899870067005`*^9}, {3.474690058010046*^9, 3.474690059102314*^9}, {3.4746902472809935`*^9, 3.4746902598909407`*^9}, 3.4746903180698376`*^9, {3.4746903579419527`*^9, 3.4746903580769544`*^9}, { 3.474690394757518*^9, 3.474690407411462*^9}, {3.474690772397932*^9, 3.4746908084880075`*^9}, {3.474691251610423*^9, 3.474691301624699*^9}, 3.474691695356295*^9, {3.4746957856274567`*^9, 3.474695856130151*^9}, { 3.474695936905504*^9, 3.474696059157146*^9}, {3.474697786119225*^9, 3.474697825369584*^9}, {3.475303599339735*^9, 3.475303717113061*^9}, { 3.47530379414478*^9, 3.475303823855494*^9}, {3.4753039208979945`*^9, 3.4753040565498533`*^9}, {3.4753041732914047`*^9, 3.4753042995121384`*^9}, {3.4753043343454304`*^9, 3.475304335109192*^9}, { 3.475304484262991*^9, 3.475304503279287*^9}, {3.4753045787972064`*^9, 3.4753045865758286`*^9}, {3.475308220728512*^9, 3.475308222478539*^9}, { 3.475315719999115*^9, 3.4753157214703875`*^9}, {3.475315980176861*^9, 3.4753159804568653`*^9}, {3.475316093268598*^9, 3.4753160976174145`*^9}, { 3.475316242895896*^9, 3.475316246920958*^9}, {3.4753165328618546`*^9, 3.475316537060669*^9}, 3.475316677047819*^9, {3.475316710512083*^9, 3.475316782425688*^9}, {3.4753169412818775`*^9, 3.475317049106034*^9}, { 3.475317128474753*^9, 3.4753171551589127`*^9}, {3.4753171960145407`*^9, 3.475317227500024*^9}, {3.475317303146186*^9, 3.4753173048224616`*^9}, { 3.4753174897253017`*^9, 3.4753174920490875`*^9}, {3.475317522099549*^9, 3.475317523519571*^9}, {3.4753218463211975`*^9, 3.4753218932088795`*^9}, { 3.475322113831498*^9, 3.475322114988564*^9}, {3.47532218852777*^9, 3.4753222119811115`*^9}, {3.475322348590925*^9, 3.4753223799897213`*^9}, { 3.4753224355528994`*^9, 3.475322436057928*^9}, {3.475322515082448*^9, 3.475322516020502*^9}, 3.4753234028492255`*^9, 3.475325358241068*^9, 3.475325411645122*^9, {3.475325510122755*^9, 3.475325513080924*^9}, { 3.4753258252627797`*^9, 3.4753258341052856`*^9}, 3.4753262299879284`*^9, 3.4753262990828805`*^9, {3.4753267513407483`*^9, 3.4753267585291595`*^9}, { 3.4753269263027554`*^9, 3.4753269289929094`*^9}, {3.4753270634045973`*^9, 3.475327068097866*^9}, {3.475327249743255*^9, 3.475327291468642*^9}, { 3.475327365976904*^9, 3.4753274536429176`*^9}, {3.4753274852437253`*^9, 3.475327624116668*^9}, 3.475328180853512*^9, {3.475329756466632*^9, 3.475329767187245*^9}, 3.4753304764508123`*^9, {3.475331061387269*^9, 3.475331067054593*^9}, {3.4753318131172657`*^9, 3.475331814057319*^9}, { 3.475332307969569*^9, 3.4753323085786037`*^9}, {3.47534811325758*^9, 3.475348172384962*^9}, {3.4753482232498713`*^9, 3.4753482338414774`*^9}, { 3.475348264868252*^9, 3.4753483689652057`*^9}, {3.475348723326474*^9, 3.4753487261026325`*^9}, {3.4753490379114676`*^9, 3.4753490418976955`*^9}, {3.4753492614982557`*^9, 3.4753492670175714`*^9}, {3.4753493364295416`*^9, 3.475349340682785*^9}, { 3.4753498541361523`*^9, 3.475349927572353*^9}, {3.475349962274338*^9, 3.4753499913119984`*^9}, {3.4753500638181458`*^9, 3.4753500962750025`*^9}, {3.4753504022265015`*^9, 3.4753504058257074`*^9}, 3.475350777094943*^9, {3.4753508834570265`*^9, 3.4753509426664133`*^9}, { 3.4753509840597806`*^9, 3.4753509856678724`*^9}, {3.4753510350416965`*^9, 3.47535109437009*^9}, {3.475351206460501*^9, 3.475351208932643*^9}, { 3.4753522066107063`*^9, 3.475352239972615*^9}, {3.4753885513026876`*^9, 3.475388558140736*^9}, {3.4753888181256733`*^9, 3.475388821277956*^9}, { 3.475390109046997*^9, 3.47539011382308*^9}, {3.475390412723572*^9, 3.4753904173305607`*^9}, {3.475403749148004*^9, 3.475404040075203*^9}, { 3.475404082758999*^9, 3.4754041658724947`*^9}, {3.475404202492559*^9, 3.475404292078809*^9}, 3.475404418203703*^9, {3.475404456534955*^9, 3.475404509828174*^9}, {3.475404950764448*^9, 3.475404958801014*^9}, { 3.475408967252244*^9, 3.475408968264162*^9}, {3.475409244197905*^9, 3.475409275602212*^9}, {3.475409334006578*^9, 3.4754093628161163`*^9}, { 3.4754095032885113`*^9, 3.475409505602886*^9}, {3.475409555666094*^9, 3.475409560676549*^9}, {3.4754099407095633`*^9, 3.475409943813665*^9}, { 3.4754102227958927`*^9, 3.475410225130625*^9}, {3.475414446478848*^9, 3.4754144480144653`*^9}, {3.475414606340951*^9, 3.475414609825547*^9}, { 3.4754146909613333`*^9, 3.475414693327839*^9}, {3.475414853278083*^9, 3.475414866398796*^9}, {3.475414922235964*^9, 3.47541492455051*^9}, { 3.475414985460115*^9, 3.475414987545969*^9}, {3.4754150665814734`*^9, 3.475415068117443*^9}, {3.475415315768806*^9, 3.4754153161521606`*^9}, { 3.475415383625551*^9, 3.475415441294375*^9}, 3.475470816798625*^9, { 3.4754708765340414`*^9, 3.4754710729692774`*^9}, {3.4754711203249855`*^9, 3.475471186577775*^9}, 3.4754712191696396`*^9, {3.4754715152225723`*^9, 3.4754715226569977`*^9}, {3.4754716596378326`*^9, 3.4754716871394053`*^9}, {3.475471901163647*^9, 3.4754720289509563`*^9}, { 3.475473720561711*^9, 3.4754737345585117`*^9}, {3.4754742879301624`*^9, 3.4754743061022015`*^9}, {3.4754743499847116`*^9, 3.475474391472085*^9}, { 3.4754744223738523`*^9, 3.4754744587339315`*^9}, {3.475474922928482*^9, 3.475474931515973*^9}, {3.475475415438652*^9, 3.4754754225930614`*^9}, { 3.47547546418544*^9, 3.475475473418968*^9}, {3.475475530774249*^9, 3.4754755759088306`*^9}, {3.4754756437867126`*^9, 3.475475646390862*^9}, 3.475475752379924*^9, {3.475475823363984*^9, 3.4754758253440976`*^9}, { 3.4754759176983795`*^9, 3.475476178171278*^9}, {3.475476233522444*^9, 3.475476250693426*^9}, {3.47547635636447*^9, 3.47547636440993*^9}, 3.475490916874284*^9, {3.4754911129985013`*^9, 3.475491115402639*^9}, { 3.4754911938061233`*^9, 3.475491198948417*^9}, {3.4754913497010403`*^9, 3.475491379721757*^9}, {3.475491470780965*^9, 3.4754914782683935`*^9}, { 3.4754915207238216`*^9, 3.47549155863499*^9}, {3.4754916698933535`*^9, 3.4754916971709137`*^9}, {3.4754918738450193`*^9, 3.4754918822965026`*^9}, {3.475492026876772*^9, 3.475492027308797*^9}, { 3.475492141374321*^9, 3.475492180417554*^9}, {3.4754922569799333`*^9, 3.4754922867056336`*^9}, 3.4754923615079117`*^9, {3.475492407019515*^9, 3.475492421199326*^9}, {3.475492600612588*^9, 3.475492625003983*^9}, { 3.4754929159916267`*^9, 3.47549292758829*^9}, {3.4754950120565147`*^9, 3.4754950192199244`*^9}, {3.475495139151784*^9, 3.475495145134126*^9}, 3.475495374619252*^9, {3.4754955626050043`*^9, 3.4754955659881973`*^9}, { 3.4754956173181334`*^9, 3.4754956383583374`*^9}, {3.4754956860220633`*^9, 3.475495789961008*^9}, {3.475496016440962*^9, 3.4754960288916745`*^9}, { 3.475496197796335*^9, 3.4754961989364004`*^9}, 3.475499826463883*^9, { 3.4755789476572757`*^9, 3.4755789520595274`*^9}, {3.4755860670464816`*^9, 3.4755860872216353`*^9}, {3.4755863244972067`*^9, 3.4755863537178783`*^9}, {3.4755869453297167`*^9, 3.475586954115219*^9}, { 3.4755870338637805`*^9, 3.4755870705468783`*^9}, {3.4755871140823684`*^9, 3.4755872095518293`*^9}, {3.475921981153463*^9, 3.475922037292405*^9}, { 3.475922222313985*^9, 3.475922242414976*^9}, 3.475953253141113*^9, 3.475954526323593*^9, {3.476002566517227*^9, 3.4760025741364*^9}, { 3.476009232009234*^9, 3.476009244773245*^9}, {3.476013662299056*^9, 3.476013711458976*^9}, 3.476013778589113*^9, {3.476016405749214*^9, 3.476016406328813*^9}, 3.476016469955467*^9, {3.47601655970398*^9, 3.476016565296101*^9}, {3.476017739511196*^9, 3.476017791268035*^9}, { 3.476018652851854*^9, 3.476018718917829*^9}, {3.476018770012693*^9, 3.47601878192119*^9}, {3.47601902221005*^9, 3.476019030044341*^9}, { 3.476019316204785*^9, 3.476019346025198*^9}, {3.476019384170541*^9, 3.476019625366779*^9}, {3.476019670023399*^9, 3.476019712907823*^9}, { 3.476019940799604*^9, 3.47601994621392*^9}, {3.47601999673445*^9, 3.476020001791586*^9}, {3.476082972481433*^9, 3.476082976199692*^9}, { 3.476083350431936*^9, 3.4760835314009*^9}, 3.476083656862569*^9, { 3.476083687525591*^9, 3.476083700421309*^9}, {3.476083750608448*^9, 3.476083752968819*^9}, {3.47608405342889*^9, 3.476084056980381*^9}, { 3.476084415732815*^9, 3.476084507391051*^9}, {3.476087312455848*^9, 3.476087428395015*^9}, {3.476087784853862*^9, 3.476087803620143*^9}, { 3.476087856960446*^9, 3.476087876328697*^9}, {3.476097932394286*^9, 3.476097955385408*^9}, 3.476098008418305*^9, {3.476159856959346*^9, 3.476159989322988*^9}, {3.476160029609127*^9, 3.476160049497191*^9}, 3.476160120369263*^9, {3.476160179579409*^9, 3.476160261459574*^9}, { 3.476160526827325*^9, 3.476160549410079*^9}, {3.476161738165229*^9, 3.476161751558328*^9}, 3.476162947059581*^9, {3.476163702596472*^9, 3.476163706410677*^9}, {3.476164110519022*^9, 3.476164161939367*^9}, { 3.476167635629123*^9, 3.476167638328992*^9}, {3.476167779196579*^9, 3.47616783292864*^9}, 3.47616792523365*^9, {3.476169679690802*^9, 3.476169771950273*^9}, {3.476169804372656*^9, 3.476169822242765*^9}, { 3.47616989530593*^9, 3.476170005250158*^9}, {3.476170204457426*^9, 3.476170218921116*^9}, {3.476171024370641*^9, 3.476171071620453*^9}, { 3.476172081665038*^9, 3.476172101098775*^9}, {3.476172429864756*^9, 3.476172473805213*^9}, {3.476174804466599*^9, 3.47617483531279*^9}, 3.476174911060929*^9, {3.476174972469762*^9, 3.476174977582246*^9}, { 3.476175040306745*^9, 3.476175079450493*^9}, {3.476175126627559*^9, 3.476175163772371*^9}, {3.476175308250844*^9, 3.476175387433815*^9}, { 3.476175572763321*^9, 3.476175583291316*^9}, {3.476175867069773*^9, 3.476175875002991*^9}, {3.476176154962983*^9, 3.476176166072024*^9}, 3.476180225949961*^9, {3.476180976209728*^9, 3.476181041493694*^9}, { 3.476181071549796*^9, 3.476181232291632*^9}, {3.476181265581556*^9, 3.47618138264631*^9}, {3.476181413367164*^9, 3.476181467592305*^9}, { 3.476181510656567*^9, 3.476181587439923*^9}, {3.476181934488901*^9, 3.476181945508245*^9}, {3.476182008466044*^9, 3.476182186942114*^9}, { 3.476182371126455*^9, 3.476182380585396*^9}, {3.476182419654653*^9, 3.4761824277382*^9}, {3.476182557348547*^9, 3.476182562772886*^9}, 3.47618263201087*^9, {3.476182779541994*^9, 3.476182800372935*^9}, { 3.47618298499048*^9, 3.476183148241543*^9}, {3.476183189234314*^9, 3.476183189870524*^9}, {3.476183252353296*^9, 3.476183261891067*^9}, { 3.476183359925251*^9, 3.47618336069074*^9}, {3.476183823095433*^9, 3.476183902592314*^9}, {3.476184708016151*^9, 3.476184722772965*^9}, { 3.476186143823951*^9, 3.476186190310217*^9}, {3.476186357672914*^9, 3.476186378923767*^9}, {3.476188520738623*^9, 3.476188590922096*^9}, { 3.476188705952827*^9, 3.476188793390267*^9}, 3.476189580119497*^9, { 3.476190067851158*^9, 3.476190168559251*^9}, 3.476190245155806*^9, { 3.476190325831693*^9, 3.476190341169098*^9}, {3.476190402804851*^9, 3.476190430907566*^9}, {3.476190502847074*^9, 3.476190542213303*^9}, { 3.476193177737772*^9, 3.476193215293226*^9}, {3.476193512902257*^9, 3.47619358439433*^9}, {3.476193783969585*^9, 3.476193793967452*^9}, { 3.476193885629789*^9, 3.476193895403318*^9}, {3.476194020934819*^9, 3.476194026991394*^9}, {3.476194138302454*^9, 3.476194161964713*^9}, { 3.476194419378587*^9, 3.476194426749716*^9}, {3.476194526651515*^9, 3.47619453259214*^9}, {3.476194629585487*^9, 3.476194648910703*^9}, { 3.476195437998797*^9, 3.47619546077404*^9}, {3.476195513185536*^9, 3.476195517746517*^9}, {3.476195610863059*^9, 3.476195615821759*^9}, { 3.476195835424486*^9, 3.476195849728121*^9}, {3.476195971489773*^9, 3.476196018993579*^9}, {3.47625120671418*^9, 3.476251260482289*^9}, { 3.476415644431429*^9, 3.476415731981581*^9}, {3.4764159269121037`*^9, 3.4764159408841286`*^9}, {3.4764181118073626`*^9, 3.47641811540137*^9}, { 3.4764193594692945`*^9, 3.4764193718693175`*^9}, {3.476427143329978*^9, 3.47642715158445*^9}, {3.476427339234183*^9, 3.4764273667607574`*^9}, { 3.476427583555157*^9, 3.4764276272496567`*^9}, {3.4764279057985888`*^9, 3.4764279156431513`*^9}, {3.4764294764424243`*^9, 3.4764294772484703`*^9}, {3.476429812857666*^9, 3.4764298310877085`*^9}, { 3.476430082926113*^9, 3.476430085528262*^9}, {3.47643134378223*^9, 3.4764314010925083`*^9}, {3.476431515158032*^9, 3.476431516958135*^9}, { 3.476431560102603*^9, 3.4764316235012293`*^9}, {3.4764316877679048`*^9, 3.4764316883179364`*^9}, {3.476432477708087*^9, 3.476432479546192*^9}, { 3.4764477956782246`*^9, 3.4764478413478365`*^9}, {3.4764479489729924`*^9, 3.476447953731265*^9}, {3.476447995072629*^9, 3.4764480496247497`*^9}, { 3.476448081070548*^9, 3.476448101678727*^9}, {3.476448307009471*^9, 3.476448335103078*^9}, {3.4764485066298885`*^9, 3.4764485125672283`*^9}, { 3.4764486110138593`*^9, 3.4764486285278606`*^9}, {3.4764488217459126`*^9, 3.4764488235120134`*^9}, {3.4764491473465357`*^9, 3.476449166039605*^9}, { 3.4764492347605352`*^9, 3.4764492471232424`*^9}, {3.476595535679648*^9, 3.4765955682433863`*^9}, {3.476597779159789*^9, 3.476597796332193*^9}, { 3.476600590813574*^9, 3.476600597712675*^9}, {3.476641554658431*^9, 3.476641562898902*^9}, {3.4766440824790134`*^9, 3.4766443166294065`*^9}, 3.476644672408756*^9, {3.4766453932829876`*^9, 3.476645398873307*^9}, { 3.4767154694507093`*^9, 3.4767155140832615`*^9}, {3.4773757938316817`*^9, 3.477375801086097*^9}, {3.4773771762597523`*^9, 3.477377177979851*^9}, { 3.4773772288457603`*^9, 3.47737725489725*^9}, {3.4773790046573305`*^9, 3.4773790694320354`*^9}, {3.4773792319383307`*^9, 3.4773792375666523`*^9}, {3.477379369338189*^9, 3.4773793694961977`*^9}, { 3.477719167853462*^9, 3.477719179033102*^9}, {3.4777218787745185`*^9, 3.4777218923312936`*^9}, {3.4777370368995132`*^9, 3.4777370954508624`*^9}, {3.4777378545022774`*^9, 3.477737855109312*^9}, { 3.4777379990765467`*^9, 3.4777379992905593`*^9}, {3.477738940178375*^9, 3.477738944046596*^9}, {3.477738980862702*^9, 3.4777389879031043`*^9}, { 3.477739022195066*^9, 3.477739048193553*^9}, {3.4777395184274487`*^9, 3.477739520907591*^9}, {3.477739584804245*^9, 3.47773961863418*^9}, { 3.4777396585544634`*^9, 3.4777396599215417`*^9}, {3.47773984574317*^9, 3.477739903348465*^9}, {3.477739947391984*^9, 3.477739966782093*^9}, 3.4777411098504725`*^9, {3.477741333331255*^9, 3.4777413575116386`*^9}, { 3.477741651073429*^9, 3.4777416746117754`*^9}, {3.477741828215561*^9, 3.4777418299876623`*^9}, 3.477745802828896*^9, {3.4777463875883427`*^9, 3.4777464704420815`*^9}, {3.477747067888253*^9, 3.477747091684614*^9}, { 3.4777474205364237`*^9, 3.4777474483350134`*^9}, {3.4777475155288568`*^9, 3.477747539939253*^9}, {3.477974556020076*^9, 3.477974560390326*^9}, { 3.4779748681959314`*^9, 3.4779749568190002`*^9}, {3.477974992513042*^9, 3.4779750941538553`*^9}, {3.4782617789559526`*^9, 3.478261783956027*^9}, { 3.478262202473913*^9, 3.4782622061046133`*^9}, {3.478262791535624*^9, 3.4782627928037167`*^9}, {3.4782628455260363`*^9, 3.4782628490163593`*^9}, {3.47826326694486*^9, 3.478263279177456*^9}, { 3.478263404456361*^9, 3.4782634202175827`*^9}, {3.4782634641262207`*^9, 3.4782634985286913`*^9}, {3.478263587053833*^9, 3.478263670581818*^9}, { 3.4782637056319733`*^9, 3.478263763856925*^9}, {3.4782638144450903`*^9, 3.478263994872282*^9}, {3.478264062626512*^9, 3.478264069460198*^9}, { 3.4782645991329412`*^9, 3.4782646408844347`*^9}, {3.478264690062752*^9, 3.478264701564413*^9}, {3.478264761086781*^9, 3.47826489577745*^9}, { 3.478268640778201*^9, 3.478268685608891*^9}, {3.478268744855324*^9, 3.4782687545887938`*^9}, {3.478268921634857*^9, 3.4782689533452806`*^9}, { 3.4782691605447617`*^9, 3.478269254506781*^9}, {3.478269286658362*^9, 3.478269440444278*^9}, {3.4782694735100203`*^9, 3.4782694816568832`*^9}, { 3.4782695788458853`*^9, 3.478269584179043*^9}, {3.478269683596146*^9, 3.478269690288425*^9}, {3.478269756841338*^9, 3.478269787263475*^9}, { 3.478269866192107*^9, 3.478269883568101*^9}, {3.478270089228022*^9, 3.4782700933768187`*^9}, {3.478270149670952*^9, 3.4782701720018053`*^9}, { 3.478271887965088*^9, 3.4782718918273153`*^9}, {3.478272556739908*^9, 3.478272717272318*^9}, {3.47827278247998*^9, 3.478272835492526*^9}, { 3.4782952297957044`*^9, 3.4782952330498905`*^9}, {3.4783210188407536`*^9, 3.4783210350016775`*^9}, {3.478333042048442*^9, 3.4783330621185894`*^9}, { 3.478336733854601*^9, 3.4783367774680953`*^9}, {3.4783368084518676`*^9, 3.478336866821206*^9}, {3.4783369146519423`*^9, 3.4783369677799807`*^9}, { 3.478337012981566*^9, 3.4783370591402063`*^9}, {3.478337244814826*^9, 3.4783372454918647`*^9}, {3.478338491128111*^9, 3.478338548731406*^9}, { 3.4783387868660264`*^9, 3.478338811740449*^9}, {3.478340120834325*^9, 3.478340122792437*^9}, {3.478340252188838*^9, 3.478340339876854*^9}, { 3.4783405307577715`*^9, 3.4783405339959564`*^9}, {3.47834194112644*^9, 3.478341976057438*^9}, {3.4783460368277006`*^9, 3.478346045406191*^9}, { 3.4783460785720882`*^9, 3.4783460892396984`*^9}, {3.478346325834231*^9, 3.478346336973868*^9}, {3.478348175614032*^9, 3.478348185578602*^9}, { 3.478348308188615*^9, 3.4783483093106794`*^9}, {3.4783489471311607`*^9, 3.4783489787959714`*^9}, {3.478349185651803*^9, 3.4783491973714733`*^9}, { 3.478356177461712*^9, 3.4783561804028797`*^9}, {3.478356831419116*^9, 3.4783568387245336`*^9}, {3.478416622622202*^9, 3.478416642552342*^9}, { 3.478416716052546*^9, 3.478416727248186*^9}, {3.4784176423975296`*^9, 3.4784176845859427`*^9}, {3.4784181412440624`*^9, 3.4784181555628815`*^9}, {3.4784182316552334`*^9, 3.478418234953422*^9}, { 3.478503277109909*^9, 3.4785032791150236`*^9}, {3.478503511840335*^9, 3.4785035132994184`*^9}, {3.4785038430042763`*^9, 3.4785038507357187`*^9}, {3.478504003991484*^9, 3.478504210586301*^9}, { 3.478504241607075*^9, 3.4785042840335016`*^9}, {3.4785043146012497`*^9, 3.478504391148628*^9}, {3.478504674808853*^9, 3.4785050372995863`*^9}, { 3.4785052931372194`*^9, 3.478505309285143*^9}, {3.4785053598240337`*^9, 3.4785054098258934`*^9}, 3.4785054444618745`*^9, {3.4785054749856205`*^9, 3.478505525585514*^9}, {3.4785055986166916`*^9, 3.4785056292914457`*^9}, { 3.478506009067168*^9, 3.4785060388918743`*^9}, {3.478506070951708*^9, 3.4785061742826176`*^9}, 3.478506391871063*^9, {3.4785064587718897`*^9, 3.478506804669674*^9}, {3.478506843310884*^9, 3.4785068737166233`*^9}, { 3.4785072404525995`*^9, 3.4785072447278438`*^9}, {3.4785074373458605`*^9, 3.4785075679943333`*^9}, {3.4785076676440334`*^9, 3.4785076924354515`*^9}, {3.478507772260017*^9, 3.4785078252570477`*^9}, { 3.478507892221878*^9, 3.4785078949940367`*^9}, {3.478508437664076*^9, 3.478508445309513*^9}, {3.478508491657164*^9, 3.478508590961844*^9}, { 3.4785087504619665`*^9, 3.478508792196354*^9}, {3.478508832776675*^9, 3.4785088375219464`*^9}, 3.478508996652048*^9, {3.478509082298947*^9, 3.4785091116346245`*^9}, {3.478509448339883*^9, 3.4785095319336643`*^9}, { 3.4785096588169217`*^9, 3.4785096699295573`*^9}, {3.4785097086587725`*^9, 3.478509719819411*^9}, 3.4785098349249945`*^9, {3.478509998502351*^9, 3.4785100535094967`*^9}, {3.4785100968919783`*^9, 3.478510109211683*^9}, { 3.4785101835279336`*^9, 3.4785102066112537`*^9}, {3.4785104015514035`*^9, 3.478510453892398*^9}, {3.4785107326643424`*^9, 3.478510734582452*^9}, { 3.478511236012132*^9, 3.4785112829238157`*^9}, {3.4785119063834753`*^9, 3.4785119093206434`*^9}, {3.4785121124342604`*^9, 3.4785121919818106`*^9}, {3.4785122783127484`*^9, 3.478512332648856*^9}, { 3.478512372347127*^9, 3.4785123894551053`*^9}, {3.4785124299624224`*^9, 3.4785125420478334`*^9}, {3.478512598348053*^9, 3.478512685426034*^9}, { 3.4785127182319107`*^9, 3.478512722145134*^9}, {3.47851275529603*^9, 3.4785127744231243`*^9}, {3.4785128980361943`*^9, 3.478512929323984*^9}, { 3.478512963817957*^9, 3.4785129671161456`*^9}, {3.47851299935699*^9, 3.478513001831131*^9}, {3.4785130475137444`*^9, 3.4785130662288146`*^9}, { 3.4785132409348073`*^9, 3.4785133856190825`*^9}, {3.4785135766820107`*^9, 3.4785136475710654`*^9}, {3.478513778989582*^9, 3.4785138088732915`*^9}, { 3.4785138915200186`*^9, 3.4785139408888426`*^9}, {3.4785139713875866`*^9, 3.4785139724106455`*^9}, {3.4785140912354417`*^9, 3.4785140929165373`*^9}, {3.478514722700559*^9, 3.478514728102868*^9}, { 3.478516823979746*^9, 3.4785168330772657`*^9}, {3.478518623843692*^9, 3.478518626113822*^9}, {3.4785186879933615`*^9, 3.478518734934046*^9}, { 3.478518793280383*^9, 3.478518881768444*^9}, {3.4785189173834815`*^9, 3.478518957097753*^9}, {3.4785189873854856`*^9, 3.4785190819268928`*^9}, { 3.478519122369206*^9, 3.4785191283765497`*^9}, {3.4785210543857107`*^9, 3.478521060471059*^9}, {3.478522140485832*^9, 3.478522238114416*^9}, { 3.478522311523615*^9, 3.4785223379611273`*^9}, {3.4785223791484833`*^9, 3.4785223795625067`*^9}, {3.4785274067020426`*^9, 3.4785274204338284`*^9}, {3.4785274997753663`*^9, 3.478527548494153*^9}, { 3.4785275799459515`*^9, 3.478527602894264*^9}, {3.4785276353441205`*^9, 3.4785276355441313`*^9}, {3.478527688542163*^9, 3.478527900056261*^9}, { 3.4785279302429876`*^9, 3.4785280621955347`*^9}, {3.478528110556301*^9, 3.478528333506053*^9}, {3.4785283856220336`*^9, 3.4785287957444916`*^9}, { 3.4785288515166817`*^9, 3.4785288551378884`*^9}, {3.478528910703067*^9, 3.478528928663094*^9}, {3.478528987412454*^9, 3.4785291522948847`*^9}, { 3.4785291943362894`*^9, 3.478529493368393*^9}, {3.478529592059038*^9, 3.478529597238334*^9}, {3.478529649208307*^9, 3.47852965363756*^9}, { 3.478530106727475*^9, 3.4785301130628376`*^9}, {3.4785301805846996`*^9, 3.4785302380319853`*^9}, {3.4785306504335737`*^9, 3.478530690127844*^9}, { 3.4785307618889484`*^9, 3.4785307683113155`*^9}, {3.4785308399714146`*^9, 3.4785308419105253`*^9}, {3.478531017264555*^9, 3.478531020271727*^9}, { 3.4785311297799907`*^9, 3.478531164000948*^9}, {3.478531249098815*^9, 3.478531272035127*^9}, {3.4785342275451727`*^9, 3.47853423571264*^9}, { 3.478536188384326*^9, 3.478536196425786*^9}, {3.478541564554826*^9, 3.4785416920021152`*^9}, {3.4785418885803585`*^9, 3.4785421046897197`*^9}, {3.4785421493632746`*^9, 3.4785422232044983`*^9}, {3.4785423628304844`*^9, 3.478542696083545*^9}, { 3.4785427543978806`*^9, 3.478542760994258*^9}, {3.47854279757135*^9, 3.478542834722475*^9}, {3.4785428724986353`*^9, 3.4785429556113896`*^9}, { 3.478543025860408*^9, 3.478543026187426*^9}, 3.4785430900890813`*^9, { 3.4785431366037416`*^9, 3.478543306250445*^9}, {3.4785433413554525`*^9, 3.4785435259270096`*^9}, {3.478543609544792*^9, 3.4785436399415307`*^9}, { 3.478543680885873*^9, 3.4785437031851482`*^9}, {3.4785437462796135`*^9, 3.4785437645396576`*^9}, {3.4785438036698956`*^9, 3.478543806002029*^9}, { 3.4785438533707385`*^9, 3.4785438677795625`*^9}, {3.47854390550172*^9, 3.478543983291169*^9}, {3.4785440311489067`*^9, 3.478544077345549*^9}, { 3.4785442367576666`*^9, 3.478544270659606*^9}, {3.4785443252377276`*^9, 3.4785443461669245`*^9}, {3.478544382061978*^9, 3.47854439556575*^9}, { 3.478544453469062*^9, 3.4785445258572025`*^9}, {3.4785450562715406`*^9, 3.4785450800749016`*^9}, {3.4785452379829335`*^9, 3.4785452402400627`*^9}, {3.478545395309932*^9, 3.4785454532802477`*^9}, { 3.4785456049979258`*^9, 3.478545730901127*^9}, {3.47854577798282*^9, 3.478545797632944*^9}, 3.4785461534832973`*^9, {3.478546199928954*^9, 3.47854631683364*^9}, {3.478546347876416*^9, 3.478546372857845*^9}, 3.478546431822217*^9, {3.4785465011471825`*^9, 3.4785465434896045`*^9}, 3.4785465870440955`*^9, {3.4785466964203515`*^9, 3.47854675722983*^9}, { 3.4785467971491127`*^9, 3.478546880334871*^9}, {3.478546911529655*^9, 3.47854694588562*^9}, {3.4785470943241105`*^9, 3.4785471014305167`*^9}, { 3.4785472704131823`*^9, 3.478547284690999*^9}, {3.47854737020489*^9, 3.478547493796959*^9}, {3.47854757738974*^9, 3.478547580574922*^9}, { 3.4785476365611243`*^9, 3.4785480991695843`*^9}, {3.478548165109356*^9, 3.478548268250255*^9}, 3.4785485388527327`*^9, 3.4785489712214627`*^9, { 3.4785507954148006`*^9, 3.4785507956048117`*^9}, {3.478550847046754*^9, 3.4785508789665794`*^9}, {3.4785509619563265`*^9, 3.478550963875436*^9}, { 3.478551109442762*^9, 3.4785511131929765`*^9}, {3.478588246682927*^9, 3.4785882468239346`*^9}, {3.4785883115756383`*^9, 3.478588328810624*^9}, { 3.4785886255365963`*^9, 3.4785886281917477`*^9}, {3.4785886921144037`*^9, 3.478588852692589*^9}, {3.4785888898907166`*^9, 3.4785889731914806`*^9}, { 3.478589012943754*^9, 3.478589121682974*^9}, {3.478589156509966*^9, 3.4785891717668386`*^9}, {3.478589321010375*^9, 3.4785893306049232`*^9}, { 3.478589418982979*^9, 3.4785894405132103`*^9}, {3.4785895689755573`*^9, 3.4785895796201663`*^9}, {3.478589666718148*^9, 3.4785897041332884`*^9}, { 3.4785900959977016`*^9, 3.478590102508074*^9}, {3.4785902200287957`*^9, 3.4785902473533587`*^9}, {3.478590294670065*^9, 3.478590375578693*^9}, { 3.4785906033267193`*^9, 3.4785906431029944`*^9}, {3.4785908721280937`*^9, 3.47859087713238*^9}, {3.4785909908888865`*^9, 3.4785910067477937`*^9}, { 3.4785911446036787`*^9, 3.478591194057507*^9}, 3.478591499122956*^9, { 3.478591581422663*^9, 3.478591602160849*^9}, {3.4785916330066137`*^9, 3.4785916353967505`*^9}, {3.4785916765941067`*^9, 3.4785917520504227`*^9}, {3.4785918614926825`*^9, 3.4785918790446863`*^9}, {3.478591912828618*^9, 3.478591946491544*^9}, { 3.4785920873866024`*^9, 3.478592090766796*^9}, {3.478592174285573*^9, 3.4785921979479265`*^9}, {3.4785922750393353`*^9, 3.478592298590683*^9}, { 3.4785923708478155`*^9, 3.478592386366703*^9}, {3.4785936355941553`*^9, 3.4785936816387887`*^9}, {3.478594215727337*^9, 3.4785942682463408`*^9}, { 3.478594327315719*^9, 3.478594409246405*^9}, {3.4785947530660706`*^9, 3.478594788352089*^9}, {3.4785948498546066`*^9, 3.478594865038475*^9}, { 3.478595232489492*^9, 3.4785952736408463`*^9}, {3.4785959899968195`*^9, 3.4785960162123184`*^9}, {3.478597717247612*^9, 3.478597746143265*^9}, { 3.4785979369821806`*^9, 3.478597953625132*^9}, {3.4785980927850914`*^9, 3.478598095588252*^9}, {3.4785983386181526`*^9, 3.4785983458885684`*^9}, { 3.4785984634692936`*^9, 3.478598463965322*^9}, {3.4785985475431023`*^9, 3.4785985531994257`*^9}, {3.478598596438899*^9, 3.4785986372922354`*^9}, { 3.478606696748166*^9, 3.4786068433826323`*^9}, {3.4786068991220355`*^9, 3.478606926504508*^9}, {3.4786069584051294`*^9, 3.4786069602359114`*^9}, { 3.4786095607851706`*^9, 3.4786096126759677`*^9}, {3.478609686747105*^9, 3.4786096929447002`*^9}, {3.4786097781147585`*^9, 3.478609798923828*^9}, { 3.4786099772753177`*^9, 3.4786099781603312`*^9}, {3.4786102235216*^9, 3.4786102588533926`*^9}, {3.4786104687719793`*^9, 3.478610472770791*^9}, { 3.478612383035628*^9, 3.4786124745968647`*^9}, {3.478615927965005*^9, 3.478616036886935*^9}, {3.478616072769487*^9, 3.4786161366605225`*^9}, { 3.4788348723927526`*^9, 3.4788348725607624`*^9}, {3.4788356924526577`*^9, 3.478835693231702*^9}, 3.47883582571728*^9, {3.4788361461836095`*^9, 3.478836171488057*^9}, {3.4788362087281866`*^9, 3.4788362777341337`*^9}, { 3.478836317967435*^9, 3.478836344783969*^9}, {3.478836389997555*^9, 3.4788364110887613`*^9}, {3.478836447557847*^9, 3.4788364531851687`*^9}, { 3.478836531095625*^9, 3.4788365605223083`*^9}, {3.4788365920091095`*^9, 3.4788366060169106`*^9}, {3.478836636739668*^9, 3.4788366579668818`*^9}, { 3.4788367805768948`*^9, 3.4788367815749516`*^9}, {3.478838256303301*^9, 3.4788382629666824`*^9}}], Cell[BoxData[ RowBox[{"\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "USER"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ , " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"INPUT", " ", "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{ "--", " ", "USER"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ , " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"INPUT", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{ "--", " ", "USER"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ , " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"INPUT", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "USER"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ , " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"INPUT", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{ "-", " ", "Variety"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}\ ], " ", "defining", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"data", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"P1xP1", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", "Coordinates", "*)"}], RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "u4"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Stanley", " ", "Reisner"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}], ",", RowBox[{"{", RowBox[{"u3", ",", "u4"}], "}"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivalence", " ", "Relations"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"dP1", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", "Coordinates", "*)"}], RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "u4"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Stanley", " ", "Reisner"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}], ",", RowBox[{"{", RowBox[{"u3", ",", "u4"}], "}"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivalence", " ", "Relations"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"dP2", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", "Coordinates", "*)"}], RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "u4", ",", "u5"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Stanley", " ", "Reisner"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}], ",", RowBox[{"{", RowBox[{"u1", ",", "u3"}], "}"}], ",", RowBox[{"{", RowBox[{"u2", ",", "u5"}], "}"}], ",", RowBox[{"{", RowBox[{"u3", ",", "u4"}], "}"}], ",", RowBox[{"{", RowBox[{"u4", ",", "u5"}], "}"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivalence", " ", "Relations"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "1"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"dP3", "=", RowBox[{"{", "\[IndentingNewLine]", RowBox[{"(*", "Coordinates", "*)"}], RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2", ",", "u3", ",", "u4", ",", "u5", ",", "u6"}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Stanley", " ", "Reisner"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"u1", ",", "u2"}], "}"}], ",", RowBox[{"{", RowBox[{"u1", ",", "u3"}], "}"}], ",", RowBox[{"{", RowBox[{"u1", ",", "u6"}], "}"}], ",", RowBox[{"{", RowBox[{"u2", ",", "u3"}], "}"}], ",", RowBox[{"{", RowBox[{"u2", ",", "u5"}], "}"}], ",", RowBox[{"{", RowBox[{"u3", ",", "u4"}], "}"}], ",", RowBox[{"{", RowBox[{"u4", ",", "u5"}], "}"}], ",", RowBox[{"{", RowBox[{"u4", ",", "u6"}], "}"}], ",", RowBox[{"{", RowBox[{"u5", ",", "u6"}], "}"}]}], "}"}], ",", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"Equivalence", " ", "Relations"}], "*)"}], RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"1", ",", "0", ",", "0", ",", "1"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0", ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "1", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "1", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "1", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "1"}], "}"}]}], "}"}]}], "\[IndentingNewLine]", "}"}]}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "End"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"definitions", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{ "--", " ", "Start"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"calculations", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", RowBox[{"!!", RowBox[{"!", " ", RowBox[{ RowBox[{"Start", " ", "this", " ", "routine", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"first", " ", "!!"}], "!"}], " ", "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{ "--", "--"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]\ }]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"-", RowBox[{"--", RowBox[{"-", RowBox[{"--", "The"}]}]}]}]}]}], " ", RowBox[{"routine", " ", "'"}], RowBox[{"GenerateSecondarySequences", "'"}], " ", "needs", " ", "to", " ", "be", " ", "started", " ", "for", " ", "each", " ", "new", " ", "variety", " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"once", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"--", RowBox[{"-", "-"}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", " ", RowBox[{ RowBox[{"GenerateSecondarySequences", "[", "dP3", "]"}], ";"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], "*)"}]}]}]], "Input", CellChangeTimes->{{3.4754712396638117`*^9, 3.475471241679927*^9}, { 3.4754713597756815`*^9, 3.4754713629598637`*^9}, {3.4754713950246973`*^9, 3.4754714291996527`*^9}, {3.475471461697511*^9, 3.4754714643846645`*^9}, { 3.4754721129767623`*^9, 3.4754721525450253`*^9}, {3.475472735889391*^9, 3.4754727707763863`*^9}, {3.4754731533602686`*^9, 3.475473157264492*^9}, { 3.4754734171143546`*^9, 3.4754734448409405`*^9}, {3.4754736122975187`*^9, 3.475473625137253*^9}, {3.4754736704168425`*^9, 3.4754737081289997`*^9}, { 3.475474160665883*^9, 3.475474275946477*^9}, {3.475474486522521*^9, 3.475474521498522*^9}, {3.4754746293306894`*^9, 3.4754746832157717`*^9}, { 3.4754749484799433`*^9, 3.47547496624496*^9}, 3.4754751906917973`*^9, { 3.475475229427013*^9, 3.4754752314191265`*^9}, {3.4754752770207353`*^9, 3.4754753110836835`*^9}, {3.4754753933473887`*^9, 3.4754754086602645`*^9}, {3.475475693579561*^9, 3.475475700610963*^9}, { 3.4754762238268895`*^9, 3.4754762834893017`*^9}, {3.4754763386284556`*^9, 3.475476399699949*^9}, {3.4754910603574905`*^9, 3.475491063075646*^9}, { 3.475491215138343*^9, 3.4754912414198465`*^9}, {3.475491413923713*^9, 3.4754914418193088`*^9}, {3.4754915019947505`*^9, 3.4754915037388506`*^9}, {3.475491627201912*^9, 3.475491637930526*^9}, { 3.4754922923539567`*^9, 3.4754923227396946`*^9}, {3.4754926675324154`*^9, 3.4754927969238167`*^9}, {3.4754928271395445`*^9, 3.4754928577002926`*^9}, {3.4754930921557026`*^9, 3.4754930940278096`*^9}, {3.475493146415806*^9, 3.4754932132126265`*^9}, { 3.47549523524228*^9, 3.4754952670951023`*^9}, {3.4754953029661536`*^9, 3.4754953668118057`*^9}, {3.475495443447189*^9, 3.475495476723092*^9}, { 3.4754958334494953`*^9, 3.4754958461932244`*^9}, {3.4754959793838425`*^9, 3.475496155672926*^9}, {3.475496234612441*^9, 3.475496249795309*^9}, { 3.47557728155598*^9, 3.475577309937604*^9}, {3.4755776045724554`*^9, 3.475577741502288*^9}, {3.4755778084421167`*^9, 3.475577924316744*^9}, { 3.475577984513187*^9, 3.4755780225953655`*^9}, {3.47557805379315*^9, 3.475578076383442*^9}, {3.4755783713093104`*^9, 3.475578739137349*^9}, { 3.4755789705165834`*^9, 3.4755789905717306`*^9}, {3.4755790838010626`*^9, 3.475579086565221*^9}, {3.475579226683235*^9, 3.475579228467337*^9}, { 3.475579981917432*^9, 3.475579982358457*^9}, 3.4755800481542206`*^9, { 3.475580301026684*^9, 3.475580329033286*^9}, {3.4755807981821194`*^9, 3.475580826052714*^9}, {3.475580928672583*^9, 3.475580959098324*^9}, { 3.475580990764135*^9, 3.4755810937450247`*^9}, {3.475584745069869*^9, 3.4755847585586405`*^9}, {3.4755881206449404`*^9, 3.4755881217090015`*^9}, {3.475588334271159*^9, 3.475588344462742*^9}, { 3.4755884326457863`*^9, 3.4755884343748846`*^9}, {3.4755884702299356`*^9, 3.47558847188603*^9}, {3.4755928836593695`*^9, 3.47559295674855*^9}, { 3.475593268954407*^9, 3.475593289780598*^9}, {3.475824387384571*^9, 3.475824388975665*^9}, {3.475824564812435*^9, 3.475824599077831*^9}, { 3.475824658915563*^9, 3.475824738669712*^9}, {3.475824775983107*^9, 3.475824788862617*^9}, {3.475825041309424*^9, 3.475825114387264*^9}, { 3.475825156286184*^9, 3.475825163070629*^9}, {3.475825293135227*^9, 3.475825308327557*^9}, {3.475825388367079*^9, 3.475825389410461*^9}, { 3.475828212903632*^9, 3.475828218804282*^9}, {3.475828353065887*^9, 3.475828367431664*^9}, {3.47583137417651*^9, 3.475831433140855*^9}, { 3.475832201281927*^9, 3.475832271257032*^9}, 3.475832416656941*^9, { 3.475832471153905*^9, 3.475832493277225*^9}, 3.475832575953631*^9, 3.475832616420779*^9, {3.475832673447809*^9, 3.475832742229484*^9}, { 3.475833995193276*^9, 3.475833997914763*^9}, {3.475836324781135*^9, 3.475836337929808*^9}, {3.475836461028765*^9, 3.475836634974765*^9}, { 3.475836797954895*^9, 3.475836814248972*^9}, {3.47584110643042*^9, 3.475841278072066*^9}, {3.475842419236806*^9, 3.475842586221347*^9}, { 3.475842922391429*^9, 3.475842932519342*^9}, {3.475842996891157*^9, 3.475842999029693*^9}, {3.4759186479489117`*^9, 3.475918667410746*^9}, { 3.475919515083209*^9, 3.475919535006506*^9}, {3.475919613391073*^9, 3.475919617469378*^9}, {3.475919845930201*^9, 3.47591984866238*^9}, { 3.4759202158927727`*^9, 3.475920248255118*^9}, {3.4759202811579227`*^9, 3.475920324665441*^9}, {3.475920446864231*^9, 3.47592045393054*^9}, { 3.475920677431959*^9, 3.4759206999015636`*^9}, {3.475920945063147*^9, 3.475920946904478*^9}, {3.475921015223071*^9, 3.475921022168972*^9}, { 3.475921085578589*^9, 3.475921179249588*^9}, {3.475921838897417*^9, 3.4759219259098167`*^9}, {3.475922060196763*^9, 3.475922080536063*^9}, { 3.4759221203893757`*^9, 3.47592212830608*^9}, {3.475929521168737*^9, 3.4759295464282293`*^9}, {3.475929737173584*^9, 3.475929737490212*^9}, { 3.475930115562149*^9, 3.475930117577306*^9}, {3.475930531480497*^9, 3.475930585841468*^9}, {3.4759306367200108`*^9, 3.475930638420156*^9}, { 3.475930959160925*^9, 3.475931000274953*^9}, 3.475934895917326*^9, { 3.475935003509846*^9, 3.475935060159532*^9}, {3.475952744732659*^9, 3.475952766438072*^9}, {3.475952850977836*^9, 3.475952923844129*^9}, { 3.475992236254241*^9, 3.475992244502715*^9}, {3.476019737045364*^9, 3.476019743876079*^9}, {3.476019842269404*^9, 3.476019878176867*^9}, { 3.47603628155395*^9, 3.476036291871351*^9}, {3.476036365460675*^9, 3.476036384149256*^9}, {3.476083920753813*^9, 3.476084024972393*^9}, { 3.476084802158477*^9, 3.476084849110994*^9}, {3.476085438241455*^9, 3.47608544079556*^9}, {3.476085514151503*^9, 3.476085553570556*^9}, { 3.476088998987167*^9, 3.47608900387359*^9}, {3.476094909480675*^9, 3.476094915424165*^9}, {3.476097229946041*^9, 3.476097271493331*^9}, { 3.47609732057186*^9, 3.476097326262605*^9}, {3.476097572395584*^9, 3.476097775572297*^9}, {3.476160066876089*^9, 3.476160075714471*^9}, { 3.476160461192863*^9, 3.47616046638761*^9}, {3.476160578875965*^9, 3.476160599642337*^9}, {3.476163261050263*^9, 3.476163310278581*^9}, { 3.476163595998904*^9, 3.476163600374386*^9}, {3.476163635088011*^9, 3.476163652565654*^9}, 3.47616376521214*^9, 3.476163889022647*^9, { 3.476166253986754*^9, 3.476166337987202*^9}, {3.476166371261042*^9, 3.476166396319991*^9}, {3.476166456380632*^9, 3.476166461792948*^9}, { 3.476171102950073*^9, 3.476171138281873*^9}, {3.476183643706678*^9, 3.476183672865727*^9}, 3.476184118126508*^9, {3.47618422477228*^9, 3.476184229106159*^9}, {3.4761930222808*^9, 3.476193029692188*^9}, 3.476194206850808*^9, {3.476201036205081*^9, 3.476201047002808*^9}, { 3.476261261059411*^9, 3.47626129212399*^9}, {3.476415385645029*^9, 3.476415545653284*^9}, {3.476415864349884*^9, 3.476415887915927*^9}, { 3.476418064025277*^9, 3.4764180692272854`*^9}, {3.47641962784124*^9, 3.476419635811251*^9}, {3.476419742283561*^9, 3.476419776197611*^9}, { 3.4764198820238533`*^9, 3.4764198821138535`*^9}, 3.476421630128641*^9, { 3.476424239197871*^9, 3.4764243086628437`*^9}, {3.476426666452702*^9, 3.4764266788224096`*^9}, {3.47642801125262*^9, 3.4764280119726615`*^9}, 3.4764280901361322`*^9, {3.476429124533296*^9, 3.476429145493495*^9}, { 3.4764306052229867`*^9, 3.476430648589467*^9}, {3.476430730192135*^9, 3.4764309243622403`*^9}, {3.4764309716059427`*^9, 3.4764310048908463`*^9}, {3.4764321644841714`*^9, 3.4764321770728917`*^9}, {3.4764322659109726`*^9, 3.476432296477721*^9}, { 3.476432524992791*^9, 3.476432525360812*^9}, {3.476432652474083*^9, 3.4764326681359787`*^9}, 3.4764327848816557`*^9, {3.4764344732372246`*^9, 3.476434651068396*^9}, {3.476434702982365*^9, 3.476434708052655*^9}, { 3.4764347386564054`*^9, 3.4764347863141317`*^9}, {3.4764348423283353`*^9, 3.4764348472286158`*^9}, {3.476434964655332*^9, 3.476434988870717*^9}, { 3.476435132850952*^9, 3.4764351904832487`*^9}, {3.4764355491667643`*^9, 3.4764355764783263`*^9}, {3.4764412012470446`*^9, 3.4764412620335217`*^9}, {3.4764414320972486`*^9, 3.476441447522131*^9}, { 3.4764441783763266`*^9, 3.476444242505995*^9}, {3.4764442740748005`*^9, 3.476444340370592*^9}, {3.476446006574894*^9, 3.476446148741025*^9}, { 3.4764462486597404`*^9, 3.4764462491697693`*^9}, {3.476448128494261*^9, 3.476448170981691*^9}, {3.476448646094866*^9, 3.4764486708692827`*^9}, { 3.4764491243192186`*^9, 3.476449130133551*^9}, {3.4764494809096146`*^9, 3.4764494886070547`*^9}, 3.4764495685026245`*^9, {3.4764497006801844`*^9, 3.476449722488432*^9}, {3.476449756233362*^9, 3.4764497866140995`*^9}, { 3.476449923479928*^9, 3.476449968343494*^9}, {3.476540475930149*^9, 3.4765407048184586`*^9}, {3.476540759873836*^9, 3.476540834340741*^9}, 3.4765408759188795`*^9, {3.4765409241006246`*^9, 3.4765411381809454`*^9}, { 3.476541191437268*^9, 3.4765411989976363`*^9}, {3.476541778723277*^9, 3.4765419125678596`*^9}, {3.476543999141811*^9, 3.476544136458444*^9}, { 3.476544351728434*^9, 3.4765443528612146`*^9}, {3.476544430612341*^9, 3.4765444754727874`*^9}, {3.476594318114738*^9, 3.4765943271682796`*^9}, { 3.47659481442234*^9, 3.476594817368342*^9}, {3.476594852630322*^9, 3.4765949178556767`*^9}, {3.476595498423071*^9, 3.476595508749268*^9}, { 3.476595713088649*^9, 3.476595758418211*^9}, {3.476596572334556*^9, 3.47659662971446*^9}, {3.476597013587328*^9, 3.476597039091316*^9}, 3.476597086547945*^9, {3.4765973853260098`*^9, 3.476597436513649*^9}, { 3.4765975034342546`*^9, 3.476597526438991*^9}, {3.476624060472022*^9, 3.4766241413396473`*^9}, 3.4766413875798745`*^9, {3.476644406781563*^9, 3.476644473881401*^9}, {3.4766445978744926`*^9, 3.4766445990375595`*^9}, 3.476645070108503*^9, {3.476645117541216*^9, 3.4766451177092257`*^9}, { 3.4766455091136127`*^9, 3.476645513642872*^9}, {3.476646900737209*^9, 3.4766470097914467`*^9}, {3.4766470398071632`*^9, 3.47664708643283*^9}, { 3.476687758837244*^9, 3.476687764413863*^9}, {3.476688068152589*^9, 3.47668810514856*^9}, {3.4766885712953873`*^9, 3.476688593992877*^9}, { 3.476712520992067*^9, 3.4767125250632997`*^9}, {3.4767155338693933`*^9, 3.476715722872204*^9}, {3.4767157560150995`*^9, 3.4767157565161285`*^9}, { 3.4767159563365574`*^9, 3.47671596459803*^9}, {3.476716123041092*^9, 3.4767161683446836`*^9}, {3.476716437770094*^9, 3.4767164397582073`*^9}, { 3.4767165273232155`*^9, 3.4767166068467646`*^9}, {3.4767240215443635`*^9, 3.476724046399785*^9}, {3.47672409823075*^9, 3.4767243735194955`*^9}, { 3.4767248434223723`*^9, 3.476724866960719*^9}, {3.476728265410099*^9, 3.476728268112253*^9}, {3.4767283836438613`*^9, 3.476728448008543*^9}, { 3.476728493393139*^9, 3.476728505026804*^9}, {3.4767321406137476`*^9, 3.4767321667462425`*^9}, {3.4767326898050723`*^9, 3.4767326960324287`*^9}, {3.4767327371017747`*^9, 3.476732757264923*^9}, { 3.476733027803217*^9, 3.4767330936742287`*^9}, {3.476733147177551*^9, 3.476733153517648*^9}, {3.4767331981883345`*^9, 3.4767332208836827`*^9}, { 3.4767335214419384`*^9, 3.4767335227369585`*^9}, {3.476734954270314*^9, 3.4767350514994326`*^9}, {3.47673510833568*^9, 3.4767351126087613`*^9}, 3.4767358401045523`*^9, {3.476736190052593*^9, 3.4767362348349333`*^9}, { 3.4767742263261557`*^9, 3.476774227173669*^9}, {3.4767744109789925`*^9, 3.476774411408999*^9}, {3.4773755184619317`*^9, 3.4773755768242693`*^9}, { 3.477375725300762*^9, 3.4773757515032606`*^9}, {3.477375827093584*^9, 3.477375842976493*^9}, {3.477376110848814*^9, 3.4773761194783077`*^9}, { 3.4773768322080736`*^9, 3.477376918020982*^9}, {3.477376970002955*^9, 3.47737705715594*^9}, {3.4773770945960813`*^9, 3.4773771284460173`*^9}, { 3.477377343342309*^9, 3.477377364747533*^9}, {3.477377435778596*^9, 3.4773774502484236`*^9}, {3.477377523015586*^9, 3.4773776939383616`*^9}, { 3.477377767704581*^9, 3.4773777881537504`*^9}, {3.4773779026773005`*^9, 3.4773779153770275`*^9}, {3.4773790856289616`*^9, 3.477379118617849*^9}, { 3.477379972304677*^9, 3.477380149431808*^9}, {3.4773802422791185`*^9, 3.4773803048096952`*^9}, 3.4773804198602753`*^9, {3.4773804687980747`*^9, 3.477380477780588*^9}, {3.4773806158404846`*^9, 3.477380620145731*^9}, { 3.4773807318471203`*^9, 3.4773808024141564`*^9}, {3.4773809190088253`*^9, 3.4773809516066895`*^9}, {3.477380993610092*^9, 3.4773811148580275`*^9}, { 3.47738118589109*^9, 3.4773813073780384`*^9}, {3.4773820567028975`*^9, 3.4773820576129494`*^9}, {3.477382122168642*^9, 3.4773821488781695`*^9}, { 3.477382205267395*^9, 3.4773822529371214`*^9}, {3.4773823125185294`*^9, 3.477382316531759*^9}, 3.477382445546138*^9, {3.477382593016573*^9, 3.477382613616751*^9}, {3.477382668866911*^9, 3.477382684660815*^9}, { 3.4773827323605433`*^9, 3.4773827334686065`*^9}, {3.4773830358058987`*^9, 3.4773831276771536`*^9}, {3.477383324703423*^9, 3.4773833270845594`*^9}, { 3.4773833680129004`*^9, 3.477383399047675*^9}, {3.477387543493724*^9, 3.477387545913862*^9}, {3.4773903256558547`*^9, 3.4773903383605814`*^9}, { 3.4773904537391806`*^9, 3.4773904660348835`*^9}, {3.477390522169094*^9, 3.477390655897743*^9}, 3.4773907979578686`*^9, {3.477390859058364*^9, 3.477390913704489*^9}, {3.4773910380155993`*^9, 3.477391042005828*^9}, { 3.4773911106107516`*^9, 3.477391138614353*^9}, {3.4773914445188503`*^9, 3.4773914581656303`*^9}, {3.4773946525303373`*^9, 3.4773946527723513`*^9}, {3.4773963127502966`*^9, 3.477396375835905*^9}, { 3.4773966115723886`*^9, 3.4773966552148848`*^9}, {3.4773967968979883`*^9, 3.477396856050372*^9}, {3.477397000010606*^9, 3.477397003956832*^9}, { 3.477397340873102*^9, 3.4773973660775433`*^9}, {3.477397800324381*^9, 3.477397875116659*^9}, {3.477397919030171*^9, 3.477397931098861*^9}, { 3.477398552396397*^9, 3.4773985527334166`*^9}, {3.477398729849547*^9, 3.4773987440723605`*^9}, {3.477400332736227*^9, 3.4774003899454994`*^9}, { 3.4774006999522305`*^9, 3.4774007627428217`*^9}, 3.4774008564121795`*^9, { 3.4774008865609035`*^9, 3.477400922349951*^9}, {3.477407750765514*^9, 3.4774078039635563`*^9}, {3.4776609828769703`*^9, 3.4776610988876057`*^9}, {3.4776611672595167`*^9, 3.477661174454928*^9}, { 3.4776617484347577`*^9, 3.477661844686263*^9}, {3.477661899270385*^9, 3.4776619549425693`*^9}, {3.4776620088246512`*^9, 3.477662024974575*^9}, { 3.4776620992378225`*^9, 3.477662147469581*^9}, 3.477662179054388*^9, { 3.4776622411349387`*^9, 3.477662274971874*^9}, {3.477662503040919*^9, 3.4776625452613335`*^9}, {3.47766271443801*^9, 3.477662715050045*^9}, 3.477662836019964*^9, {3.4776641905904408`*^9, 3.4776642075184093`*^9}, { 3.477718348019571*^9, 3.477718407769988*^9}, {3.477718460501004*^9, 3.4777185046405287`*^9}, {3.4777185677441382`*^9, 3.4777186247623997`*^9}, {3.477718673353179*^9, 3.47771871061331*^9}, { 3.477718921498372*^9, 3.4777189357181854`*^9}, {3.477719068189762*^9, 3.477719087058841*^9}, {3.4777213612249165`*^9, 3.477721570763901*^9}, { 3.4777216150934367`*^9, 3.477721634260533*^9}, {3.477721669631556*^9, 3.4777217011323576`*^9}, 3.477721753085329*^9, {3.4777218531800547`*^9, 3.477721857777317*^9}, {3.4777221750874662`*^9, 3.477722187787193*^9}, { 3.477722271347972*^9, 3.477722273430091*^9}, {3.477722350313489*^9, 3.477722356422838*^9}, 3.4777224779387884`*^9, {3.4777238019875197`*^9, 3.477723960021559*^9}, {3.477725546269287*^9, 3.4777255630782485`*^9}, { 3.477725747362789*^9, 3.4777258453993964`*^9}, {3.477729141951948*^9, 3.4777292540463595`*^9}, {3.47773671251896*^9, 3.4777367328941255`*^9}, { 3.4777367823439536`*^9, 3.477736824098342*^9}, {3.4777368854958534`*^9, 3.4777369863486223`*^9}, {3.4777371139689217`*^9, 3.4777371874151225`*^9}, {3.477737248804634*^9, 3.4777372498166914`*^9}, { 3.4777373629161606`*^9, 3.4777373981961784`*^9}, {3.47773803234645*^9, 3.4777380675204616`*^9}, {3.4777381161922455`*^9, 3.4777381172533064`*^9}, {3.4777385825939217`*^9, 3.477738595227645*^9}, { 3.477738818394409*^9, 3.477738825794832*^9}, {3.4777388899265003`*^9, 3.4777389260785685`*^9}, 3.4777393277645435`*^9, 3.477739771734937*^9, { 3.4777417004372525`*^9, 3.477741701375306*^9}, {3.4777449840540648`*^9, 3.477745026434489*^9}, {3.47774518206039*^9, 3.4777452430738797`*^9}, { 3.47774558120822*^9, 3.477745631822115*^9}, {3.4777457332359157`*^9, 3.477745737025132*^9}, {3.4777457762593765`*^9, 3.4777457828427525`*^9}, 3.477745881830415*^9, {3.477746042891627*^9, 3.477746043071637*^9}, { 3.4777461694738665`*^9, 3.4777462723707523`*^9}, {3.4777465577580757`*^9, 3.4777466237428493`*^9}, {3.4777466610179815`*^9, 3.477746721646449*^9}, { 3.477747116389027*^9, 3.4777471172600775`*^9}, {3.4777471970626416`*^9, 3.4777472061731625`*^9}, 3.4777472419142065`*^9, 3.4777473549386716`*^9, { 3.4777515070711603`*^9, 3.4777516505833683`*^9}, 3.4779747517602715`*^9, { 3.4779748098765955`*^9, 3.4779748213302507`*^9}, {3.4779751219944477`*^9, 3.477975215723809*^9}, {3.4779782568537517`*^9, 3.477978308600711*^9}, { 3.477978358442562*^9, 3.477978581589325*^9}, {3.4779786794279213`*^9, 3.4779787170280724`*^9}, {3.477978789352209*^9, 3.4779788425202494`*^9}, { 3.4779788968303556`*^9, 3.477978901885645*^9}, {3.4779789481552916`*^9, 3.477978958475882*^9}, {3.477979010733871*^9, 3.477979012394966*^9}, { 3.4779793279640155`*^9, 3.4779793322762623`*^9}, {3.477979772924466*^9, 3.4779797869472675`*^9}, 3.477980113771961*^9, {3.4779805064934235`*^9, 3.477980508572542*^9}, {3.4779841336548853`*^9, 3.4779841663187532`*^9}, { 3.4779880069904275`*^9, 3.477988010270615*^9}, {3.4779881080372066`*^9, 3.477988122169015*^9}, {3.477988176073098*^9, 3.4779882395857315`*^9}, { 3.4779884878629313`*^9, 3.4779885289302807`*^9}, 3.477988595863109*^9, 3.4779890978728223`*^9, {3.477990618184779*^9, 3.4779906272002945`*^9}, { 3.4779920811054535`*^9, 3.477992083692601*^9}, {3.4779921161484575`*^9, 3.4779922002442675`*^9}, {3.4779956709707823`*^9, 3.477995702653594*^9}, { 3.4779959853887653`*^9, 3.477996001182669*^9}, {3.4779962256705093`*^9, 3.477996231244828*^9}, {3.4779964190795717`*^9, 3.477996423901847*^9}, { 3.477996511985885*^9, 3.477996522435483*^9}, {3.477996552903226*^9, 3.477996592095467*^9}, {3.4779971856574173`*^9, 3.477997189343628*^9}, { 3.477997220865431*^9, 3.4779972466989083`*^9}, {3.4779972913034596`*^9, 3.4779972967347703`*^9}, {3.4779977770462427`*^9, 3.4779977783183155`*^9}, {3.478001803504543*^9, 3.4780018263418493`*^9}, { 3.4780020724159236`*^9, 3.4780020736639953`*^9}, {3.478002291341446*^9, 3.4780023301676664`*^9}, 3.478002632160939*^9, {3.478002867736414*^9, 3.478002869230499*^9}, {3.47800432842696*^9, 3.4780043468640146`*^9}, { 3.4780046673333445`*^9, 3.4780046722336245`*^9}, {3.478004754450327*^9, 3.4780047587035704`*^9}, {3.4780048252303753`*^9, 3.4780048258214097`*^9}, {3.4782578795741873`*^9, 3.478257894875759*^9}, { 3.478257982481341*^9, 3.478258096291967*^9}, {3.478259770150591*^9, 3.478259826818099*^9}, 3.478259877335403*^9, {3.478261325232768*^9, 3.478261421489497*^9}, {3.478261466844434*^9, 3.478261592495919*^9}, { 3.478261637748761*^9, 3.478261685329041*^9}, {3.478261724242852*^9, 3.4782617345414553`*^9}, {3.478261972055069*^9, 3.478261974795879*^9}, { 3.478270485118943*^9, 3.478270489293089*^9}, {3.478270534461461*^9, 3.478270591275558*^9}, {3.478270653888956*^9, 3.478270670776176*^9}, { 3.478270754052126*^9, 3.478270889461248*^9}, {3.4782721350161047`*^9, 3.4782721576048107`*^9}, 3.478272201477927*^9, {3.478289590026128*^9, 3.4782896260001855`*^9}, {3.4782896809623294`*^9, 3.47828976944139*^9}, { 3.4782898115217967`*^9, 3.4782898657999015`*^9}, {3.4782899270254035`*^9, 3.4782899665326633`*^9}, {3.478289997194417*^9, 3.4782900079600325`*^9}, { 3.478290045032153*^9, 3.478290096896119*^9}, {3.4782901982509165`*^9, 3.4782902265365343`*^9}, {3.478290598524811*^9, 3.478290618076929*^9}, 3.4782909995517483`*^9, {3.4782910839805775`*^9, 3.4782911214807224`*^9}, { 3.478291154148591*^9, 3.478291193699853*^9}, {3.4782951975718613`*^9, 3.478295208840506*^9}, {3.47829536678654*^9, 3.4782954489052367`*^9}, { 3.478334271339753*^9, 3.4783342764240437`*^9}, {3.478335378600085*^9, 3.4783353847664375`*^9}, {3.478335588359082*^9, 3.4783356034189434`*^9}, { 3.4783356483685145`*^9, 3.478335671069813*^9}, 3.478335719513584*^9, 3.478335763839119*^9, {3.478335917656917*^9, 3.478336099733331*^9}, { 3.4783362240334406`*^9, 3.4783362286437044`*^9}, {3.478336337593936*^9, 3.478336433494421*^9}, {3.4783365159191356`*^9, 3.4783365331001186`*^9}, { 3.4783427882248907`*^9, 3.4783428122712665`*^9}, {3.478342846414219*^9, 3.478342872447708*^9}, {3.4783429216115203`*^9, 3.4783429495861206`*^9}, { 3.4783437608225203`*^9, 3.4783437754933596`*^9}, {3.4783438290544233`*^9, 3.4783438316025686`*^9}, {3.478343868564683*^9, 3.4783439458881054`*^9}, { 3.478344395146802*^9, 3.4783444006721177`*^9}, {3.4783469397553453`*^9, 3.4783469707011147`*^9}, {3.478347132452367*^9, 3.478347151014428*^9}, { 3.4783477986694717`*^9, 3.4783478127522774`*^9}, {3.4783478921048164`*^9, 3.478347918832345*^9}, {3.4783486301730313`*^9, 3.4783486308040676`*^9}, { 3.4783490818438654`*^9, 3.4783490973267508`*^9}, {3.478349129911615*^9, 3.4783491353469257`*^9}, {3.4783494805166683`*^9, 3.4783495142585983`*^9}, {3.4783500435978746`*^9, 3.4783500517753425`*^9}, {3.4783504678171387`*^9, 3.478350512473693*^9}, { 3.4783505458156*^9, 3.4783505507438817`*^9}, 3.4783522735684214`*^9, { 3.478352494395052*^9, 3.4783524952541013`*^9}, {3.478355616995655*^9, 3.478355623615033*^9}, {3.478356416034357*^9, 3.4783564246278486`*^9}, { 3.4783672931854944`*^9, 3.478367376865281*^9}, {3.4783674093961415`*^9, 3.478367621947299*^9}, {3.478367721204976*^9, 3.4783677272863235`*^9}, { 3.4783677619333057`*^9, 3.478367783801556*^9}, 3.478367816095403*^9, { 3.4784162662808204`*^9, 3.47841632273905*^9}, {3.478416441149822*^9, 3.478416444672024*^9}, {3.478416931238854*^9, 3.478416965748828*^9}, { 3.478416999018731*^9, 3.478417084933645*^9}, {3.4784171180725403`*^9, 3.478417120063654*^9}, {3.478417186146434*^9, 3.4784172201833806`*^9}, { 3.4784173140877514`*^9, 3.478417398253566*^9}, {3.478417437471809*^9, 3.4784174449672375`*^9}, {3.478417713813615*^9, 3.4784177173968196`*^9}, { 3.478417749893678*^9, 3.4784177623333898`*^9}, {3.4784179963657756`*^9, 3.478418004347232*^9}, {3.4784180678048615`*^9, 3.4784180930613065`*^9}, { 3.478418265445166*^9, 3.4784182656391773`*^9}, {3.478418308629636*^9, 3.4784183101057205`*^9}, {3.4784183601425824`*^9, 3.478418364634839*^9}, { 3.4785032876145096`*^9, 3.478503333670144*^9}, {3.478503442158349*^9, 3.4785034436864367`*^9}, {3.478503581807337*^9, 3.4785036110640097`*^9}, { 3.4785037071435056`*^9, 3.47850379848673*^9}, {3.478505085730356*^9, 3.478505095095892*^9}, {3.478505574517313*^9, 3.478505574949338*^9}, { 3.478505684736617*^9, 3.4785057637271357`*^9}, {3.478505804475466*^9, 3.4785059725100775`*^9}, {3.478506199467058*^9, 3.478506200271104*^9}, { 3.4785062861560163`*^9, 3.4785062918503428`*^9}, {3.478506335818857*^9, 3.4785063682087097`*^9}, {3.478506890693594*^9, 3.4785071886956387`*^9}, { 3.478507355805197*^9, 3.4785073913542304`*^9}, 3.4785076257636375`*^9, { 3.4785077014469666`*^9, 3.478507728642522*^9}, {3.47850810380398*^9, 3.47850826009892*^9}, {3.4785082930748057`*^9, 3.4785083252476463`*^9}, { 3.478508617411357*^9, 3.4785086435118494`*^9}, {3.4785087412224383`*^9, 3.4785087414134493`*^9}, {3.4785087749353666`*^9, 3.478508803269987*^9}, { 3.4785088403071055`*^9, 3.478508865967573*^9}, {3.4785118578617*^9, 3.4785118635020227`*^9}, {3.478513500504654*^9, 3.4785135017767267`*^9}, { 3.4785143494262094`*^9, 3.4785143523043737`*^9}, {3.4785164293091717`*^9, 3.478516441474868*^9}, {3.478516475716826*^9, 3.4785165477849483`*^9}, { 3.478516596178716*^9, 3.4785166013590126`*^9}, {3.4785166366400304`*^9, 3.478516666103716*^9}, {3.478518363030774*^9, 3.47851836925313*^9}, 3.478518598495242*^9, {3.478520891007366*^9, 3.4785208939615355`*^9}, { 3.4785210208397923`*^9, 3.478521030015317*^9}, 3.478522264068901*^9, { 3.478527586300315*^9, 3.478527586783343*^9}, {3.4785294995977497`*^9, 3.478529538503975*^9}, {3.4785295788482823`*^9, 3.4785295825444937`*^9}, { 3.4785296737627115`*^9, 3.4785296935288415`*^9}, {3.4785298241863146`*^9, 3.478529826231432*^9}, {3.4785299342776117`*^9, 3.4785299678265305`*^9}, { 3.4785303215947647`*^9, 3.4785303220047884`*^9}, 3.4785308045603895`*^9, { 3.4785417365186615`*^9, 3.4785417369796877`*^9}, 3.478546997799589*^9, { 3.4785471170404096`*^9, 3.478547118687504*^9}, {3.4785484585461392`*^9, 3.4785484598162117`*^9}, {3.4785485080229692`*^9, 3.4785485085579996`*^9}, 3.4785499431750555`*^9, 3.478550897190622*^9, 3.478551531612909*^9, { 3.4785891904909096`*^9, 3.4785891934160767`*^9}, {3.478590484996951*^9, 3.4785904863360276`*^9}, {3.4785907012583203`*^9, 3.4785907027284045`*^9}, {3.478590902776847*^9, 3.478590904472944*^9}, { 3.4785915485237813`*^9, 3.4785915495768414`*^9}, {3.4785920053189087`*^9, 3.478592037547752*^9}, {3.478592401357561*^9, 3.4785924052007804`*^9}, { 3.4785924797710457`*^9, 3.478592481009116*^9}, {3.478593369458933*^9, 3.4785934353267*^9}, {3.4785939116949472`*^9, 3.4785939128250113`*^9}, { 3.4785944278654704`*^9, 3.478594428760522*^9}, {3.4785951656866713`*^9, 3.4785951667207303`*^9}, 3.478596154041202*^9, 3.4785966064890804`*^9, { 3.4785981700605116`*^9, 3.4785981701795187`*^9}, {3.4785986586904593`*^9, 3.478598659466504*^9}, {3.4785987376109734`*^9, 3.4785987377059793`*^9}, { 3.4786097052898903`*^9, 3.4786097082499356`*^9}, {3.4786098356106415`*^9, 3.4786098392419477`*^9}, {3.4786099343146577`*^9, 3.4786099362021866`*^9}, {3.4786102718485923`*^9, 3.478610272882358*^9}, { 3.4786104528437295`*^9, 3.4786104532824864`*^9}, {3.47861049773393*^9, 3.478610510527877*^9}, {3.4786106362793217`*^9, 3.4786107816956635`*^9}, { 3.478610813039895*^9, 3.478610829399647*^9}, 3.4786109535353823`*^9, 3.4786110303423233`*^9, 3.478611087314315*^9, 3.4786113368695917`*^9, { 3.4786119782206693`*^9, 3.4786120463745675`*^9}, {3.478612080636527*^9, 3.4786121087831373`*^9}, {3.4786143774380884`*^9, 3.4786143783168516`*^9}, {3.4786161458044395`*^9, 3.4786162306604958`*^9}, {3.478616348502306*^9, 3.478616376264985*^9}, { 3.478661914289115*^9, 3.4786619150541587`*^9}, 3.4786644421397*^9, 3.4786644745535536`*^9, {3.4788406696133347`*^9, 3.478840736230145*^9}, { 3.4788408163067255`*^9, 3.478840823691148*^9}, {3.4788408595461984`*^9, 3.478840861010282*^9}}], Cell[BoxData[ RowBox[{"\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"-", " ", "Now"}]}]}]}], " ", "one", " ", "can", " ", "compute", " ", "the", " ", "cohomology", " ", "group", " ", "dimensions", " ", "of", " ", "line", " ", "bundles", " ", "on", " ", "the", " ", "variety", " ", "generated", " ", RowBox[{ RowBox[{ RowBox[{"above", " ", "--"}], "--"}], "--"}]}], "-"}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{"--", RowBox[{"--", " ", "The"}]}], " ", "input", " ", "of", " ", "LinbundleCohomologyOf", " ", "are", " ", "the", " ", "charges", " ", RowBox[{"{", RowBox[{ RowBox[{"Q_", "1"}], ",", "...", ",", "Q_r"}], "}"}], " ", "of", " ", "the", " ", "line", " ", "bundle", " ", "one", " ", "is", " ", "interested", " ", RowBox[{ RowBox[{"in", " ", "--"}], "--"}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"A", " ", "dP3", " ", "example"}], "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{ RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{"1", ",", "120", ",", "3", ",", RowBox[{"-", "33"}]}], "}"}], "]"}], ";"}], "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", "\[IndentingNewLine]", RowBox[{"(*", " ", RowBox[{"Some", " ", "more", " ", "dP3", " ", "examples"}], " ", "*)"}], "\[IndentingNewLine]", RowBox[{ RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", "0"}], "}"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{"1", ",", "2", ",", "3", ",", "4"}], "}"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{ RowBox[{"-", "9"}], ",", "3", ",", "6", ",", RowBox[{"-", "7"}]}], "}"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{ RowBox[{"-", "5"}], ",", RowBox[{"-", "5"}], ",", RowBox[{"-", "5"}], ",", RowBox[{"-", "5"}]}], "}"}], "]"}], ";", "\[IndentingNewLine]", RowBox[{"LinebundleCohomologyOf", "[", RowBox[{"{", RowBox[{"2", ",", "3", ",", "3", ",", "3"}], "}"}], "]"}], ";"}], "\[IndentingNewLine]", "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Output"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Output"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Output"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}], "*)"}], RowBox[{"(*", RowBox[{ RowBox[{ RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{ "--", " ", "Output"}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}]}], " ", RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{ RowBox[{"results", " ", "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}], "--"}]}], "-", RowBox[{"-", RowBox[{"-", RowBox[{"-", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", RowBox[{"--", "-"}]}]}]}]}]}]}]}]}], "*)"}], "\[IndentingNewLine]", "\[IndentingNewLine]"}]}]], "Input", CellChangeTimes->{{3.4754712396638117`*^9, 3.475471241679927*^9}, { 3.4754713597756815`*^9, 3.4754713629598637`*^9}, {3.4754713950246973`*^9, 3.4754714291996527`*^9}, {3.475471461697511*^9, 3.4754714643846645`*^9}, { 3.4754721129767623`*^9, 3.4754721525450253`*^9}, {3.475472735889391*^9, 3.4754727707763863`*^9}, {3.4754731533602686`*^9, 3.475473157264492*^9}, { 3.4754734171143546`*^9, 3.4754734448409405`*^9}, {3.4754736122975187`*^9, 3.475473625137253*^9}, {3.4754736704168425`*^9, 3.4754737081289997`*^9}, { 3.475474160665883*^9, 3.475474275946477*^9}, {3.475474486522521*^9, 3.475474521498522*^9}, {3.4754746293306894`*^9, 3.4754746832157717`*^9}, { 3.4754749484799433`*^9, 3.47547496624496*^9}, 3.4754751906917973`*^9, { 3.475475229427013*^9, 3.4754752314191265`*^9}, {3.4754752770207353`*^9, 3.4754753110836835`*^9}, {3.4754753933473887`*^9, 3.4754754086602645`*^9}, {3.475475693579561*^9, 3.475475700610963*^9}, { 3.4754762238268895`*^9, 3.4754762834893017`*^9}, {3.4754763386284556`*^9, 3.475476399699949*^9}, {3.4754910603574905`*^9, 3.475491063075646*^9}, { 3.475491215138343*^9, 3.4754912414198465`*^9}, {3.475491413923713*^9, 3.4754914418193088`*^9}, {3.4754915019947505`*^9, 3.4754915037388506`*^9}, {3.475491627201912*^9, 3.475491637930526*^9}, { 3.4754922923539567`*^9, 3.4754923227396946`*^9}, {3.4754926675324154`*^9, 3.4754927969238167`*^9}, {3.4754928271395445`*^9, 3.4754928577002926`*^9}, {3.4754930921557026`*^9, 3.4754930940278096`*^9}, {3.475493146415806*^9, 3.4754932132126265`*^9}, { 3.47549523524228*^9, 3.4754952670951023`*^9}, {3.4754953029661536`*^9, 3.4754953668118057`*^9}, {3.475495443447189*^9, 3.475495476723092*^9}, { 3.4754958334494953`*^9, 3.4754958461932244`*^9}, {3.4754959793838425`*^9, 3.475496155672926*^9}, {3.475496234612441*^9, 3.475496249795309*^9}, { 3.47557728155598*^9, 3.475577309937604*^9}, {3.4755776045724554`*^9, 3.475577741502288*^9}, {3.4755778084421167`*^9, 3.475577924316744*^9}, { 3.475577984513187*^9, 3.4755780225953655`*^9}, {3.47557805379315*^9, 3.475578076383442*^9}, {3.4755783713093104`*^9, 3.475578739137349*^9}, { 3.4755789705165834`*^9, 3.4755789905717306`*^9}, {3.4755790838010626`*^9, 3.475579086565221*^9}, {3.475579226683235*^9, 3.475579228467337*^9}, { 3.475579981917432*^9, 3.475579982358457*^9}, 3.4755800481542206`*^9, { 3.475580301026684*^9, 3.475580329033286*^9}, {3.4755807981821194`*^9, 3.475580826052714*^9}, {3.475580928672583*^9, 3.475580959098324*^9}, { 3.475580990764135*^9, 3.4755810937450247`*^9}, {3.475584745069869*^9, 3.4755847585586405`*^9}, {3.4755881206449404`*^9, 3.4755881217090015`*^9}, {3.475588334271159*^9, 3.475588344462742*^9}, { 3.4755884326457863`*^9, 3.4755884343748846`*^9}, {3.4755884702299356`*^9, 3.47558847188603*^9}, {3.4755928836593695`*^9, 3.47559295674855*^9}, { 3.475593268954407*^9, 3.475593289780598*^9}, {3.475824387384571*^9, 3.475824388975665*^9}, {3.475824564812435*^9, 3.475824599077831*^9}, { 3.475824658915563*^9, 3.475824738669712*^9}, {3.475824775983107*^9, 3.475824788862617*^9}, {3.475825041309424*^9, 3.475825114387264*^9}, { 3.475825156286184*^9, 3.475825163070629*^9}, {3.475825293135227*^9, 3.475825308327557*^9}, {3.475825388367079*^9, 3.475825389410461*^9}, { 3.475828212903632*^9, 3.475828218804282*^9}, {3.475828353065887*^9, 3.475828367431664*^9}, {3.47583137417651*^9, 3.475831433140855*^9}, { 3.475832201281927*^9, 3.475832271257032*^9}, 3.475832416656941*^9, { 3.475832471153905*^9, 3.475832493277225*^9}, 3.475832575953631*^9, 3.475832616420779*^9, {3.475832673447809*^9, 3.475832742229484*^9}, { 3.475833995193276*^9, 3.475833997914763*^9}, {3.475836324781135*^9, 3.475836337929808*^9}, {3.475836461028765*^9, 3.475836634974765*^9}, { 3.475836797954895*^9, 3.475836814248972*^9}, {3.47584110643042*^9, 3.475841278072066*^9}, {3.475842419236806*^9, 3.475842586221347*^9}, { 3.475842922391429*^9, 3.475842932519342*^9}, {3.475842996891157*^9, 3.475842999029693*^9}, {3.4759186479489117`*^9, 3.475918667410746*^9}, { 3.475919515083209*^9, 3.475919535006506*^9}, {3.475919613391073*^9, 3.475919617469378*^9}, {3.475919845930201*^9, 3.47591984866238*^9}, { 3.4759202158927727`*^9, 3.475920248255118*^9}, {3.4759202811579227`*^9, 3.475920324665441*^9}, {3.475920446864231*^9, 3.47592045393054*^9}, { 3.475920677431959*^9, 3.4759206999015636`*^9}, {3.475920945063147*^9, 3.475920946904478*^9}, {3.475921015223071*^9, 3.475921022168972*^9}, { 3.475921085578589*^9, 3.475921179249588*^9}, {3.475921838897417*^9, 3.4759219259098167`*^9}, {3.475922060196763*^9, 3.475922080536063*^9}, { 3.4759221203893757`*^9, 3.47592212830608*^9}, {3.475929521168737*^9, 3.4759295464282293`*^9}, {3.475929737173584*^9, 3.475929737490212*^9}, { 3.475930115562149*^9, 3.475930117577306*^9}, {3.475930531480497*^9, 3.475930585841468*^9}, {3.4759306367200108`*^9, 3.475930638420156*^9}, { 3.475930959160925*^9, 3.475931000274953*^9}, 3.475934895917326*^9, { 3.475935003509846*^9, 3.475935060159532*^9}, {3.475952744732659*^9, 3.475952766438072*^9}, {3.475952850977836*^9, 3.475952923844129*^9}, { 3.475992236254241*^9, 3.475992244502715*^9}, {3.476019737045364*^9, 3.476019743876079*^9}, {3.476019842269404*^9, 3.476019878176867*^9}, { 3.47603628155395*^9, 3.476036291871351*^9}, {3.476036365460675*^9, 3.476036384149256*^9}, {3.476083920753813*^9, 3.476084024972393*^9}, { 3.476084802158477*^9, 3.476084849110994*^9}, {3.476085438241455*^9, 3.47608544079556*^9}, {3.476085514151503*^9, 3.476085553570556*^9}, { 3.476088998987167*^9, 3.47608900387359*^9}, {3.476094909480675*^9, 3.476094915424165*^9}, {3.476097229946041*^9, 3.476097271493331*^9}, { 3.47609732057186*^9, 3.476097326262605*^9}, {3.476097572395584*^9, 3.476097775572297*^9}, {3.476160066876089*^9, 3.476160075714471*^9}, { 3.476160461192863*^9, 3.47616046638761*^9}, {3.476160578875965*^9, 3.476160599642337*^9}, {3.476163261050263*^9, 3.476163310278581*^9}, { 3.476163595998904*^9, 3.476163600374386*^9}, {3.476163635088011*^9, 3.476163652565654*^9}, 3.47616376521214*^9, 3.476163889022647*^9, { 3.476166253986754*^9, 3.476166337987202*^9}, {3.476166371261042*^9, 3.476166396319991*^9}, {3.476166456380632*^9, 3.476166461792948*^9}, { 3.476171102950073*^9, 3.476171138281873*^9}, {3.476183643706678*^9, 3.476183672865727*^9}, 3.476184118126508*^9, {3.47618422477228*^9, 3.476184229106159*^9}, {3.4761930222808*^9, 3.476193029692188*^9}, 3.476194206850808*^9, {3.476201036205081*^9, 3.476201047002808*^9}, { 3.476261261059411*^9, 3.47626129212399*^9}, {3.476415385645029*^9, 3.476415545653284*^9}, {3.476415864349884*^9, 3.476415887915927*^9}, { 3.476418064025277*^9, 3.4764180692272854`*^9}, {3.47641962784124*^9, 3.476419635811251*^9}, {3.476419742283561*^9, 3.476419776197611*^9}, { 3.4764198820238533`*^9, 3.4764198821138535`*^9}, 3.476421630128641*^9, { 3.476424239197871*^9, 3.4764243086628437`*^9}, {3.476426666452702*^9, 3.4764266788224096`*^9}, {3.47642801125262*^9, 3.4764280119726615`*^9}, 3.4764280901361322`*^9, {3.476429124533296*^9, 3.476429145493495*^9}, { 3.4764306052229867`*^9, 3.476430648589467*^9}, {3.476430730192135*^9, 3.4764309243622403`*^9}, {3.4764309716059427`*^9, 3.4764310048908463`*^9}, {3.4764321644841714`*^9, 3.4764321770728917`*^9}, {3.4764322659109726`*^9, 3.476432296477721*^9}, { 3.476432524992791*^9, 3.476432525360812*^9}, {3.476432652474083*^9, 3.4764326681359787`*^9}, 3.4764327848816557`*^9, {3.4764344732372246`*^9, 3.476434651068396*^9}, {3.476434702982365*^9, 3.476434708052655*^9}, { 3.4764347386564054`*^9, 3.4764347863141317`*^9}, {3.4764348423283353`*^9, 3.4764348472286158`*^9}, {3.476434964655332*^9, 3.476434988870717*^9}, { 3.476435132850952*^9, 3.4764351904832487`*^9}, {3.4764355491667643`*^9, 3.4764355764783263`*^9}, {3.4764412012470446`*^9, 3.4764412620335217`*^9}, {3.4764414320972486`*^9, 3.476441447522131*^9}, { 3.4764441783763266`*^9, 3.476444242505995*^9}, {3.4764442740748005`*^9, 3.476444340370592*^9}, {3.476446006574894*^9, 3.476446148741025*^9}, { 3.4764462486597404`*^9, 3.4764462491697693`*^9}, {3.476448128494261*^9, 3.476448170981691*^9}, {3.476448646094866*^9, 3.4764486708692827`*^9}, { 3.4764491243192186`*^9, 3.476449130133551*^9}, {3.4764494809096146`*^9, 3.4764494886070547`*^9}, 3.4764495685026245`*^9, {3.4764497006801844`*^9, 3.476449722488432*^9}, {3.476449756233362*^9, 3.4764497866140995`*^9}, { 3.476449923479928*^9, 3.476449968343494*^9}, {3.476540475930149*^9, 3.4765407048184586`*^9}, {3.476540759873836*^9, 3.476540834340741*^9}, 3.4765408759188795`*^9, {3.4765409241006246`*^9, 3.4765411381809454`*^9}, { 3.476541191437268*^9, 3.4765411989976363`*^9}, {3.476541778723277*^9, 3.4765419125678596`*^9}, {3.476543999141811*^9, 3.476544136458444*^9}, { 3.476544351728434*^9, 3.4765443528612146`*^9}, {3.476544430612341*^9, 3.4765444754727874`*^9}, {3.476594318114738*^9, 3.4765943271682796`*^9}, { 3.47659481442234*^9, 3.476594817368342*^9}, {3.476594852630322*^9, 3.4765949178556767`*^9}, {3.476595498423071*^9, 3.476595508749268*^9}, { 3.476595713088649*^9, 3.476595758418211*^9}, {3.476596572334556*^9, 3.47659662971446*^9}, {3.476597013587328*^9, 3.476597039091316*^9}, 3.476597086547945*^9, {3.4765973853260098`*^9, 3.476597436513649*^9}, { 3.4765975034342546`*^9, 3.476597526438991*^9}, {3.476624060472022*^9, 3.4766241413396473`*^9}, 3.4766413875798745`*^9, {3.476644406781563*^9, 3.476644473881401*^9}, {3.4766445978744926`*^9, 3.4766445990375595`*^9}, 3.476645070108503*^9, {3.476645117541216*^9, 3.4766451177092257`*^9}, { 3.4766455091136127`*^9, 3.476645513642872*^9}, {3.476646900737209*^9, 3.4766470097914467`*^9}, {3.4766470398071632`*^9, 3.47664708643283*^9}, { 3.476687758837244*^9, 3.476687764413863*^9}, {3.476688068152589*^9, 3.47668810514856*^9}, {3.4766885712953873`*^9, 3.476688593992877*^9}, { 3.476712520992067*^9, 3.4767125250632997`*^9}, {3.4767155338693933`*^9, 3.476715722872204*^9}, {3.4767157560150995`*^9, 3.4767157565161285`*^9}, { 3.4767159563365574`*^9, 3.47671596459803*^9}, {3.476716123041092*^9, 3.4767161683446836`*^9}, {3.476716437770094*^9, 3.4767164397582073`*^9}, { 3.4767165273232155`*^9, 3.4767166068467646`*^9}, {3.4767240215443635`*^9, 3.476724046399785*^9}, {3.47672409823075*^9, 3.4767243735194955`*^9}, { 3.4767248434223723`*^9, 3.476724866960719*^9}, {3.476728265410099*^9, 3.476728268112253*^9}, {3.4767283836438613`*^9, 3.476728448008543*^9}, { 3.476728493393139*^9, 3.476728505026804*^9}, {3.4767321406137476`*^9, 3.4767321667462425`*^9}, {3.4767326898050723`*^9, 3.4767326960324287`*^9}, {3.4767327371017747`*^9, 3.476732757264923*^9}, { 3.476733027803217*^9, 3.4767330936742287`*^9}, {3.476733147177551*^9, 3.476733153517648*^9}, {3.4767331981883345`*^9, 3.4767332208836827`*^9}, { 3.4767335214419384`*^9, 3.4767335227369585`*^9}, {3.476734954270314*^9, 3.4767350514994326`*^9}, {3.47673510833568*^9, 3.4767351126087613`*^9}, 3.4767358401045523`*^9, {3.476736190052593*^9, 3.4767362348349333`*^9}, { 3.4767742263261557`*^9, 3.476774227173669*^9}, {3.4767744109789925`*^9, 3.476774411408999*^9}, {3.4773755184619317`*^9, 3.4773755768242693`*^9}, { 3.477375725300762*^9, 3.4773757515032606`*^9}, {3.477375827093584*^9, 3.477375842976493*^9}, {3.477376110848814*^9, 3.4773761194783077`*^9}, { 3.4773768322080736`*^9, 3.477376918020982*^9}, {3.477376970002955*^9, 3.47737705715594*^9}, {3.4773770945960813`*^9, 3.4773771284460173`*^9}, { 3.477377343342309*^9, 3.477377364747533*^9}, {3.477377435778596*^9, 3.4773774502484236`*^9}, {3.477377523015586*^9, 3.4773776939383616`*^9}, { 3.477377767704581*^9, 3.4773777881537504`*^9}, {3.4773779026773005`*^9, 3.4773779153770275`*^9}, {3.4773790856289616`*^9, 3.477379118617849*^9}, { 3.477379972304677*^9, 3.477380149431808*^9}, {3.4773802422791185`*^9, 3.4773803048096952`*^9}, 3.4773804198602753`*^9, {3.4773804687980747`*^9, 3.477380477780588*^9}, {3.4773806158404846`*^9, 3.477380620145731*^9}, { 3.4773807318471203`*^9, 3.4773808024141564`*^9}, {3.4773809190088253`*^9, 3.4773809516066895`*^9}, {3.477380993610092*^9, 3.4773811148580275`*^9}, { 3.47738118589109*^9, 3.4773813073780384`*^9}, {3.4773820567028975`*^9, 3.4773820576129494`*^9}, {3.477382122168642*^9, 3.4773821488781695`*^9}, { 3.477382205267395*^9, 3.4773822529371214`*^9}, {3.4773823125185294`*^9, 3.477382316531759*^9}, 3.477382445546138*^9, {3.477382593016573*^9, 3.477382613616751*^9}, {3.477382668866911*^9, 3.477382684660815*^9}, { 3.4773827323605433`*^9, 3.4773827334686065`*^9}, {3.4773830358058987`*^9, 3.4773831276771536`*^9}, {3.477383324703423*^9, 3.4773833270845594`*^9}, { 3.4773833680129004`*^9, 3.477383399047675*^9}, {3.477387543493724*^9, 3.477387545913862*^9}, {3.4773903256558547`*^9, 3.4773903383605814`*^9}, { 3.4773904537391806`*^9, 3.4773904660348835`*^9}, {3.477390522169094*^9, 3.477390655897743*^9}, 3.4773907979578686`*^9, {3.477390859058364*^9, 3.477390913704489*^9}, {3.4773910380155993`*^9, 3.477391042005828*^9}, { 3.4773911106107516`*^9, 3.477391138614353*^9}, {3.4773914445188503`*^9, 3.4773914581656303`*^9}, {3.4773946525303373`*^9, 3.4773946527723513`*^9}, {3.4773963127502966`*^9, 3.477396375835905*^9}, { 3.4773966115723886`*^9, 3.4773966552148848`*^9}, {3.4773967968979883`*^9, 3.477396856050372*^9}, {3.477397000010606*^9, 3.477397003956832*^9}, { 3.477397340873102*^9, 3.4773973660775433`*^9}, {3.477397800324381*^9, 3.477397875116659*^9}, {3.477397919030171*^9, 3.477397931098861*^9}, { 3.477398552396397*^9, 3.4773985527334166`*^9}, {3.477398729849547*^9, 3.4773987440723605`*^9}, {3.477400332736227*^9, 3.4774003899454994`*^9}, { 3.4774006999522305`*^9, 3.4774007627428217`*^9}, 3.4774008564121795`*^9, { 3.4774008865609035`*^9, 3.477400922349951*^9}, {3.477407750765514*^9, 3.4774078039635563`*^9}, {3.4776609828769703`*^9, 3.4776610988876057`*^9}, {3.4776611672595167`*^9, 3.477661174454928*^9}, { 3.4776617484347577`*^9, 3.477661844686263*^9}, {3.477661899270385*^9, 3.4776619549425693`*^9}, {3.4776620088246512`*^9, 3.477662024974575*^9}, { 3.4776620992378225`*^9, 3.477662147469581*^9}, 3.477662179054388*^9, { 3.4776622411349387`*^9, 3.477662274971874*^9}, {3.477662503040919*^9, 3.4776625452613335`*^9}, {3.47766271443801*^9, 3.477662715050045*^9}, 3.477662836019964*^9, {3.4776641905904408`*^9, 3.4776642075184093`*^9}, { 3.477718348019571*^9, 3.477718407769988*^9}, {3.477718460501004*^9, 3.4777185046405287`*^9}, {3.4777185677441382`*^9, 3.4777186247623997`*^9}, {3.477718673353179*^9, 3.47771871061331*^9}, { 3.477718921498372*^9, 3.4777189357181854`*^9}, {3.477719068189762*^9, 3.477719087058841*^9}, {3.4777213612249165`*^9, 3.477721570763901*^9}, { 3.4777216150934367`*^9, 3.477721634260533*^9}, {3.477721669631556*^9, 3.4777217011323576`*^9}, 3.477721753085329*^9, {3.4777218531800547`*^9, 3.477721857777317*^9}, {3.4777221750874662`*^9, 3.477722187787193*^9}, { 3.477722271347972*^9, 3.477722273430091*^9}, {3.477722350313489*^9, 3.477722356422838*^9}, 3.4777224779387884`*^9, {3.4777238019875197`*^9, 3.477723960021559*^9}, {3.477725546269287*^9, 3.4777255630782485`*^9}, { 3.477725747362789*^9, 3.4777258453993964`*^9}, {3.477729141951948*^9, 3.4777292540463595`*^9}, {3.47773671251896*^9, 3.4777367328941255`*^9}, { 3.4777367823439536`*^9, 3.477736824098342*^9}, {3.4777368854958534`*^9, 3.4777369863486223`*^9}, {3.4777371139689217`*^9, 3.4777371874151225`*^9}, {3.477737248804634*^9, 3.4777372498166914`*^9}, { 3.4777373629161606`*^9, 3.4777373981961784`*^9}, {3.47773803234645*^9, 3.4777380675204616`*^9}, {3.4777381161922455`*^9, 3.4777381172533064`*^9}, {3.4777385825939217`*^9, 3.477738595227645*^9}, { 3.477738818394409*^9, 3.477738825794832*^9}, {3.4777388899265003`*^9, 3.4777389260785685`*^9}, 3.4777393277645435`*^9, 3.477739771734937*^9, { 3.4777417004372525`*^9, 3.477741701375306*^9}, {3.4777449840540648`*^9, 3.477745026434489*^9}, {3.47774518206039*^9, 3.4777452430738797`*^9}, { 3.47774558120822*^9, 3.477745631822115*^9}, {3.4777457332359157`*^9, 3.477745737025132*^9}, {3.4777457762593765`*^9, 3.4777457828427525`*^9}, 3.477745881830415*^9, {3.477746042891627*^9, 3.477746043071637*^9}, { 3.4777461694738665`*^9, 3.4777462723707523`*^9}, {3.4777465577580757`*^9, 3.4777466237428493`*^9}, {3.4777466610179815`*^9, 3.477746721646449*^9}, { 3.477747116389027*^9, 3.4777471172600775`*^9}, {3.4777471970626416`*^9, 3.4777472061731625`*^9}, 3.4777472419142065`*^9, 3.4777473549386716`*^9, { 3.4777515070711603`*^9, 3.4777516505833683`*^9}, 3.4779747517602715`*^9, { 3.4779748098765955`*^9, 3.4779748213302507`*^9}, {3.4779751219944477`*^9, 3.477975215723809*^9}, {3.4779782568537517`*^9, 3.477978308600711*^9}, { 3.477978358442562*^9, 3.477978581589325*^9}, {3.4779786794279213`*^9, 3.4779787170280724`*^9}, {3.477978789352209*^9, 3.4779788425202494`*^9}, { 3.4779788968303556`*^9, 3.477978901885645*^9}, {3.4779789481552916`*^9, 3.477978958475882*^9}, {3.477979010733871*^9, 3.477979012394966*^9}, { 3.4779793279640155`*^9, 3.4779793322762623`*^9}, {3.477979772924466*^9, 3.4779797869472675`*^9}, 3.477980113771961*^9, {3.4779805064934235`*^9, 3.477980508572542*^9}, {3.4779841336548853`*^9, 3.4779841663187532`*^9}, { 3.4779880069904275`*^9, 3.477988010270615*^9}, {3.4779881080372066`*^9, 3.477988122169015*^9}, {3.477988176073098*^9, 3.4779882395857315`*^9}, { 3.4779884878629313`*^9, 3.4779885289302807`*^9}, 3.477988595863109*^9, 3.4779890978728223`*^9, {3.477990618184779*^9, 3.4779906272002945`*^9}, { 3.4779920811054535`*^9, 3.477992083692601*^9}, {3.4779921161484575`*^9, 3.4779922002442675`*^9}, {3.4779956709707823`*^9, 3.477995702653594*^9}, { 3.4779959853887653`*^9, 3.477996001182669*^9}, {3.4779962256705093`*^9, 3.477996231244828*^9}, {3.4779964190795717`*^9, 3.477996423901847*^9}, { 3.477996511985885*^9, 3.477996522435483*^9}, {3.477996552903226*^9, 3.477996592095467*^9}, {3.4779971856574173`*^9, 3.477997189343628*^9}, { 3.477997220865431*^9, 3.4779972466989083`*^9}, {3.4779972913034596`*^9, 3.4779972967347703`*^9}, {3.4779977770462427`*^9, 3.4779977783183155`*^9}, {3.478001803504543*^9, 3.4780018263418493`*^9}, { 3.4780020724159236`*^9, 3.4780020736639953`*^9}, {3.478002291341446*^9, 3.4780023301676664`*^9}, 3.478002632160939*^9, {3.478002867736414*^9, 3.478002869230499*^9}, {3.47800432842696*^9, 3.4780043468640146`*^9}, { 3.4780046673333445`*^9, 3.4780046722336245`*^9}, {3.478004754450327*^9, 3.4780047587035704`*^9}, {3.4780048252303753`*^9, 3.4780048258214097`*^9}, {3.4782578795741873`*^9, 3.478257894875759*^9}, { 3.478257982481341*^9, 3.478258096291967*^9}, {3.478259770150591*^9, 3.478259826818099*^9}, 3.478259877335403*^9, {3.478261325232768*^9, 3.478261421489497*^9}, {3.478261466844434*^9, 3.478261592495919*^9}, { 3.478261637748761*^9, 3.478261685329041*^9}, {3.478261724242852*^9, 3.4782617345414553`*^9}, {3.478261972055069*^9, 3.478261974795879*^9}, { 3.478270485118943*^9, 3.478270489293089*^9}, {3.478270534461461*^9, 3.478270591275558*^9}, {3.478270653888956*^9, 3.478270670776176*^9}, { 3.478270754052126*^9, 3.478270889461248*^9}, {3.4782721350161047`*^9, 3.4782721576048107`*^9}, 3.478272201477927*^9, {3.478289590026128*^9, 3.4782896260001855`*^9}, {3.4782896809623294`*^9, 3.47828976944139*^9}, { 3.4782898115217967`*^9, 3.4782898657999015`*^9}, {3.4782899270254035`*^9, 3.4782899665326633`*^9}, {3.478289997194417*^9, 3.4782900079600325`*^9}, { 3.478290045032153*^9, 3.478290096896119*^9}, {3.4782901982509165`*^9, 3.4782902265365343`*^9}, {3.478290598524811*^9, 3.478290618076929*^9}, 3.4782909995517483`*^9, {3.4782910839805775`*^9, 3.4782911214807224`*^9}, { 3.478291154148591*^9, 3.478291193699853*^9}, {3.4782951975718613`*^9, 3.478295208840506*^9}, {3.47829536678654*^9, 3.4782954489052367`*^9}, { 3.478334271339753*^9, 3.4783342764240437`*^9}, {3.478335378600085*^9, 3.4783353847664375`*^9}, {3.478335588359082*^9, 3.4783356034189434`*^9}, { 3.4783356483685145`*^9, 3.478335671069813*^9}, 3.478335719513584*^9, 3.478335763839119*^9, {3.478335917656917*^9, 3.478336099733331*^9}, { 3.4783362240334406`*^9, 3.4783362286437044`*^9}, {3.478336337593936*^9, 3.478336433494421*^9}, {3.4783365159191356`*^9, 3.4783365331001186`*^9}, { 3.4783427882248907`*^9, 3.4783428122712665`*^9}, {3.478342846414219*^9, 3.478342872447708*^9}, {3.4783429216115203`*^9, 3.4783429495861206`*^9}, { 3.4783437608225203`*^9, 3.4783437754933596`*^9}, {3.4783438290544233`*^9, 3.4783438316025686`*^9}, {3.478343868564683*^9, 3.4783439458881054`*^9}, { 3.478344395146802*^9, 3.4783444006721177`*^9}, {3.4783469397553453`*^9, 3.4783469707011147`*^9}, {3.478347132452367*^9, 3.478347151014428*^9}, { 3.4783477986694717`*^9, 3.4783478127522774`*^9}, {3.4783478921048164`*^9, 3.478347918832345*^9}, {3.4783486301730313`*^9, 3.4783486308040676`*^9}, { 3.4783490818438654`*^9, 3.4783490973267508`*^9}, {3.478349129911615*^9, 3.4783491353469257`*^9}, {3.4783494805166683`*^9, 3.4783495142585983`*^9}, {3.4783500435978746`*^9, 3.4783500517753425`*^9}, {3.4783504678171387`*^9, 3.478350512473693*^9}, { 3.4783505458156*^9, 3.4783505507438817`*^9}, 3.4783522735684214`*^9, { 3.478352494395052*^9, 3.4783524952541013`*^9}, {3.478355616995655*^9, 3.478355623615033*^9}, {3.478356416034357*^9, 3.4783564246278486`*^9}, { 3.4783672931854944`*^9, 3.478367376865281*^9}, {3.4783674093961415`*^9, 3.478367621947299*^9}, {3.478367721204976*^9, 3.4783677272863235`*^9}, { 3.4783677619333057`*^9, 3.478367783801556*^9}, 3.478367816095403*^9, { 3.4784162662808204`*^9, 3.47841632273905*^9}, {3.478416441149822*^9, 3.478416444672024*^9}, {3.478416931238854*^9, 3.478416965748828*^9}, { 3.478416999018731*^9, 3.478417084933645*^9}, {3.4784171180725403`*^9, 3.478417120063654*^9}, {3.478417186146434*^9, 3.4784172201833806`*^9}, { 3.4784173140877514`*^9, 3.478417398253566*^9}, {3.478417437471809*^9, 3.4784174449672375`*^9}, {3.478417713813615*^9, 3.4784177173968196`*^9}, { 3.478417749893678*^9, 3.4784177623333898`*^9}, {3.4784179963657756`*^9, 3.478418004347232*^9}, {3.4784180678048615`*^9, 3.4784180930613065`*^9}, { 3.478418265445166*^9, 3.4784182656391773`*^9}, {3.478418308629636*^9, 3.4784183101057205`*^9}, {3.4784183601425824`*^9, 3.478418364634839*^9}, { 3.4785032876145096`*^9, 3.478503333670144*^9}, {3.478503442158349*^9, 3.4785034436864367`*^9}, {3.478503581807337*^9, 3.4785036110640097`*^9}, { 3.4785037071435056`*^9, 3.47850379848673*^9}, {3.478505085730356*^9, 3.478505095095892*^9}, {3.478505574517313*^9, 3.478505574949338*^9}, { 3.478505684736617*^9, 3.4785057637271357`*^9}, {3.478505804475466*^9, 3.4785059725100775`*^9}, {3.478506199467058*^9, 3.478506200271104*^9}, { 3.4785062861560163`*^9, 3.4785062918503428`*^9}, {3.478506335818857*^9, 3.4785063682087097`*^9}, {3.478506890693594*^9, 3.4785071886956387`*^9}, { 3.478507355805197*^9, 3.4785073913542304`*^9}, 3.4785076257636375`*^9, { 3.4785077014469666`*^9, 3.4785077397441573`*^9}, {3.4785078498884573`*^9, 3.478507866355399*^9}, {3.478507946360975*^9, 3.478507960016756*^9}, { 3.478508176097115*^9, 3.4785081823994756`*^9}, {3.4785083580965247`*^9, 3.4785084144077454`*^9}, {3.4785086671522017`*^9, 3.4785086681562595`*^9}, {3.478508719383189*^9, 3.478508722692378*^9}, { 3.4785089375116653`*^9, 3.4785089496563597`*^9}, {3.478511337361929*^9, 3.4785113583141274`*^9}, 3.478511438300702*^9, 3.4785114907647033`*^9, { 3.4785122056325912`*^9, 3.478512235898322*^9}, {3.478512568849366*^9, 3.478512573760647*^9}, {3.478513995414961*^9, 3.478514072336361*^9}, { 3.4785167044579096`*^9, 3.4785167070330567`*^9}, {3.478516770296675*^9, 3.4785167781361237`*^9}, {3.4785173092074995`*^9, 3.4785173552511325`*^9}, {3.478517737187978*^9, 3.4785177484506226`*^9}, { 3.4785181099242973`*^9, 3.478518114723572*^9}, {3.4785183844489994`*^9, 3.4785183885612345`*^9}, {3.478518423498233*^9, 3.478518424339281*^9}, { 3.478518526355116*^9, 3.478518583962411*^9}, {3.478519244434188*^9, 3.478519264876357*^9}, {3.4785203954500217`*^9, 3.4785203960410557`*^9}, 3.47852071133809*^9, {3.4785212083315163`*^9, 3.478521213449809*^9}, { 3.4785298907161202`*^9, 3.478529917580657*^9}, {3.4785303467232027`*^9, 3.4785303502204027`*^9}, {3.4785307317472243`*^9, 3.478530733867346*^9}, { 3.478530783436181*^9, 3.478530796154908*^9}, {3.478532267014037*^9, 3.47853236166045*^9}, {3.4785324828593826`*^9, 3.478532496782179*^9}, { 3.4785336657990427`*^9, 3.4785336691302333`*^9}, 3.4785337671498394`*^9, { 3.4785338869096894`*^9, 3.478533892037983*^9}, {3.478534300198328*^9, 3.478534300509346*^9}, {3.47853607987912*^9, 3.478536081014185*^9}, { 3.4785364605008907`*^9, 3.4785364606769004`*^9}, {3.4785417448761396`*^9, 3.4785417541496696`*^9}, {3.4785442220118237`*^9, 3.4785442294952517`*^9}, {3.478544615564333*^9, 3.478544620678626*^9}, { 3.4785452723679004`*^9, 3.478545274351014*^9}, {3.478546966878821*^9, 3.47854697456326*^9}, {3.478547039755989*^9, 3.478547055835909*^9}, { 3.4785484663095837`*^9, 3.478548502730666*^9}, 3.478549276106901*^9, { 3.478549989534707*^9, 3.478549993940959*^9}, {3.4785509025709295`*^9, 3.4785509073022003`*^9}, {3.4785511482009788`*^9, 3.4785511491920357`*^9}, {3.478551537353237*^9, 3.478551545535705*^9}, { 3.478552245572745*^9, 3.4785522511480637`*^9}, {3.4785523037720737`*^9, 3.4785524278981733`*^9}, {3.4785524940059547`*^9, 3.4785524941239614`*^9}, {3.4785525654760427`*^9, 3.4785525657770596`*^9}, {3.4785544974245434`*^9, 3.478554590738881*^9}, { 3.4785892177364683`*^9, 3.478589255383621*^9}, {3.478589517124592*^9, 3.478589519260714*^9}, {3.478589933125386*^9, 3.4785899666913056`*^9}, { 3.4785905533598614`*^9, 3.478590554647935*^9}, {3.4785907119629326`*^9, 3.478590718075282*^9}, 3.4785923127964954`*^9, {3.478592353647832*^9, 3.478592357788069*^9}, {3.478592408559973*^9, 3.4785924095400286`*^9}, { 3.478593480756299*^9, 3.4785935407487297`*^9}, {3.4785938791290846`*^9, 3.4785938876785736`*^9}, {3.478593940136574*^9, 3.4785939604647365`*^9}, { 3.4785960838361864`*^9, 3.478596084859245*^9}, {3.478599318908222*^9, 3.478599335819189*^9}, {3.4786000621723356`*^9, 3.4786000670014124`*^9}, { 3.478609494152897*^9, 3.4786095060293293`*^9}, {3.4786098136578045`*^9, 3.47860981532408*^9}, {3.4786098851214023`*^9, 3.478609887016431*^9}, { 3.4786101523942575`*^9, 3.478610153410523*^9}, {3.4786102007212496`*^9, 3.47861021313144*^9}, {3.478610409766565*^9, 3.4786104508849497`*^9}, { 3.4786109779502687`*^9, 3.478611109136918*^9}, {3.4786113260939755`*^9, 3.478611332553345*^9}, {3.478611641278633*^9, 3.478611642878725*^9}, { 3.4786120545740366`*^9, 3.478612066903742*^9}, {3.478614384629449*^9, 3.478614399765432*^9}, {3.4786153928051977`*^9, 3.4786154357248583`*^9}, { 3.478616391102214*^9, 3.4786164038199096`*^9}, {3.478800390427497*^9, 3.4788003989829865`*^9}, {3.4788382472177815`*^9, 3.478838250657978*^9}, { 3.4788408393030405`*^9, 3.4788408783062716`*^9}}] }, WindowSize->{1246, 883}, WindowMargins->{{-4, Automatic}, {Automatic, 4}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"Magnification"->1., "PaperOrientation"->"Portrait", "PaperSize"->{594.3000000000001, 840.51}, "PostScriptOutputFile"->"/home/pcl342/rahn/octictransition.pdf"}, Magnification->1.2000000476837158`, FrontEndVersion->"7.0 for Microsoft Windows (64-bit) (November 10, 2008)", StyleDefinitions->"Default.nb" ] (* End of Notebook Content *) (* Internal cache information *) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[545, 20, 118037, 2506, 6675, "Input"], Cell[118585, 2528, 48149, 1035, 935, "Input"], Cell[166737, 3565, 37345, 674, 515, "Input"] } ] *) (* End of internal cache information *) cohomCalg-0.32/old/cohomcalg-script-v004/cohom-script.txt000066400000000000000000000362001322050713700232060ustar00rootroot00000000000000 (*-------------------------------------------------- Routines --------------------------------------------------*) (*Routine generating the remnant sequence for a given element Q. It returns also the positions of the element in the Q-list*) sequenceneu[Qtemp_]:=Module[{i,positionsliste, tmpsequence}, tmpsequence = Array[0^#&,maxcdegree-mincdegree+1]; positionsliste=Position[fullQlist,Qtemp]; For[i=1,i<= Length[positionsliste],i++, tmpsequence[[fullcdegreelist[[positionsliste[[i]][[1]]]]-mincdegree+1]]++ ]; Return[{tmpsequence,positionsliste}]; ]; (*Routine that tests wether the given complex is exact or not and returns true or false as well as a possible candidate to fix the complex*) isexact[complex_]:=Module[{i,kern,exakt,n,fullcomplex}, fullcomplex=complex; n=Length[fullcomplex]; exakt=1; kern=fullcomplex[[n]]; For[i=1,i= altersum, tempsequence=sequence; tempsequence[[i]]=tempsequence[[i]]-altersum; If[isexact[tempsequence][[3]], AppendTo[result,{h,i-(1-startdim),altersum}]; ]; ]; ]; Return[result] ]; (*Subroutine the converts a set of coordinates into their positions in the coordinate-list, e.g. {u1,u2} -> {1,2}*) ConvertDenominatiorElement[element_]:=Module[{i,convertedelement}, convertedelement={}; For[i=1,i<= Length[element],i++, AppendTo[convertedelement,Position[coordinates,element[[i]]][[1]][[1]] ]; ]; Return[convertedelement]; ]; (*Subroutine: Generates the expression u1>=0 && u2>=0 && u3>=0 && ... from a given set of coordinates {u1,u2,u3,...}*) ListElementsLargerEqZero[list_]:=Module[{i,temp}, If[list!= {},temp=list[[1]]>= 0,Return[{}]]; For[i=2,i<=Length[list],i++, temp=temp && list[[i]]>= 0 ]; Return[temp] ]; (*Main counting routing: It generates the matrix m, the constant vector b and solves the linear equations m.x=b for non negative integers*) RationomsOf[DenominatorElement_]:=Module[{i,j,b,m,ConvertedElement}, ConvertedElement=ConvertDenominatiorElement[DenominatorElement]; m=equrel; For[i=1,i<=Length[equrel],i++, For[j=1,j<=Length[equrel[[1]]],j++, If[MemberQ[ConvertedElement,j], m[[i]][[j]]=-equrel[[i]][[j]], (*else*) m[[i]][[j]]=equrel[[i]][[j]] ]; ]; ]; b=Array[-Sum[m[[#]][[j]],{j,ConvertedElement}]&,Length[Qcharges]]+Qcharges; Return[Length[Reduce[m.coordinates==b&&ListElementsLargerEqZero[coordinates],coordinates,Integers]||{"dummy"}]-1] (*Here the equation is solved. The "dummy" has to be added and removed from the number of solutions in order to avoid that only one solution exists*) ]; (*Converts a list into a string*) ListToString[listinput_]:=Module[{a,i}, a=""; For[i=1,i<=Length[listinput],i++, a=StringJoin[a,ToString[listinput[[i]]] ] ]; Return[a]; ]; (*------------------------------------------------ Main routines ------------------------------------------------*) (*------------------------------------------------ Main routines ------------------------------------------------*)(*------------------------------------------------ Main routines ------------------------------------------------*)(*------------------------------------------------ Main routines ------------------------------------------------*) (*Main routine 1: Generates first the List of all possible Q's and the corresponding c-degrees and afterwards a list of all secondary sequences that may appear*) GenerateSecondarySequences[varietyin_]:=Module[{i,j,ii,kk}, coordinates=varietyin[[1]]; SR=varietyin[[2]]; equivalencerelations=varietyin[[3]]; dim=Length[coordinates]-Length[equivalencerelations[[1]]]; numberofvertices=Length[coordinates]; equrel=Transpose[equivalencerelations]; (*Generate the lists of Q's and c-degrees*) Print[DateList[]," ---- Part 1: Creating Q and c-degree lists"]; d=DateList[]; fullQlist=Map[{Union[Flatten[#]],Length[Union[Flatten[#]]]-Length[#]}&,Subsets[SR]]; fullcdegreelist=Delete[fullQlist,{1}][[All,2]]; fullQlist=Delete[fullQlist,{1}] [[All,1,All]]; dneu=DateList[]; Print["Listing done within ",AbsoluteTime[dneu]-AbsoluteTime[d]," seconds"]; maxsequencesize =(Length[SR]-2)+(numberofvertices-1)+1 ; mincdegree=2-Length[SR]; maxcdegree=numberofvertices-1; (*Generate the list of possible secondary sequences for all various elements in the Q-list*) Print[DateList[]," ---- Part 2: Generating remnant sequences"]; d=DateList[]; sortierttupel={}; report=19; For[i=1,i<= 2^Length[coordinates],i++, If[fullQlist!={}, report++; tempQ=fullQlist[[Length[fullQlist]]]; If[!MemberQ[sortierttupel,tempQ,3], (*Tests wether the element is not yet in the list*) tempsequence=sequenceneu[tempQ][[1]]; tmppositionslist=sequenceneu[tempQ][[2]]; If[MemberQ[sortierttupel,tempsequence,2], (*Tests wether the sequence already appeared earlier *) AppendTo[sortierttupel[[Position[sortierttupel,tempsequence][[1]][[1]]]][[1]],tempQ] (*else*),AppendTo[sortierttupel,{{tempQ},tempsequence}] ]; fullQlist=Delete[fullQlist,tmppositionslist]; fullcdegreelist=Delete[fullcdegreelist,tmppositionslist]; If[report==20, NotebookDelete[temp]; dneu=DateList[]; a=ListToString[{2^Length[SR]-Length[fullQlist]-1," elements from Q-list done within ",AbsoluteTime[dneu]-AbsoluteTime[d]," seconds"}]; report=0; temp=PrintTemporary[a]; ]; ]; ]; ]; sortierttupelsave=sortierttupel; dneu=DateList[]; Print["Generating done within: ",AbsoluteTime[dneu]-AbsoluteTime[d]," seconds"]; ];(*End of routine*) (*Subroutine of main routine 2: Tests which secondary sequences and their corresponding cohomologies are contributing to the cohomology of the line bundle in question. It also determines via subroutines, how many rationom contribute *) SubLinebundleCohomologyOf[Qchargesin_]:=Module[{i,j,ii,kk}, Qcharges=Qchargesin; sortierttupel=sortierttupelsave; For[ii=1,ii<= Length[sortierttupel],ii++, (*Sortierttupel has the following list structure {{Denominator element},{sequence}}*) AppendTo[sortierttupel[[ii]],{}]; AppendTo[sortierttupel[[ii]],0]; If[(*1==2&&*)!isexact[sortierttupel[[ii,2]]][[3]], For[kk=1,kk<=Length[sortierttupel[[ii]][[1]]],kk++, temprationomsOf=RationomsOf[sortierttupel[[ii]][[1]][[kk]]]; AppendTo[sortierttupel[[ii]][[3]],temprationomsOf]; sortierttupel[[ii]][[4]]=sortierttupel[[ii]][[4]]+temprationomsOf; ]; ]; ]; ];(*End of routine*) (*Main routine 2: Opens the subroutine above and puts the results together *) LinebundleCohomologyOf[Qchargesin_]:=Module[{i,j,ii,kk,Resultlistofcohoms,Resultlistofcohomsdual,PossibleResults,PossibleResultsDual,resultvectors,resultvectorsFromDual,output}, Qchargesstring=""; For[i=1,i<= Length[Qchargesin],i++, If[i!= 1, Qchargesstring=StringJoin[Qchargesstring, ","] ]; Qchargesstring=StringJoin[Qchargesstring,ToString[Qchargesin[[i]]]] ]; CanonicalDivisor=-Sum[equivalencerelations[[i]],{i,1,Length[equivalencerelations]}]; (*Calculate Cohomologies of the divisor*) tmp=PrintTemporary["."]; SubLinebundleCohomologyOf[Qchargesin]; (*-------------------------------------- Collecting the Results ------------------------------------------------*) Resultlistofcohoms={}; (*--------------------- The case of the empty set in the denominator is treated separately ---------------------*) leer={}; If[RationomsOf[leer]!=0, AppendTo[Resultlistofcohoms,{{h,0,RationomsOf[leer]}}]; ]; (*-------------------------------------------- Case denominator != {} -------------------------------------------*) For[i=1,i<= Length[sortierttupel],i++,e If[sortierttupel[[i]][[4]]!=0 && !isexact[sortierttupel[[i]][[2]]][[3]], cohomresult=Map[{h,#[[2]] , #[[3]]*sortierttupel[[i]][[4]]}&,CohomsOf[sortierttupel[[i]][[2]],mincdegree]]; AppendTo[Resultlistofcohoms,cohomresult] ]; ]; output=1; serredual=0; unique=1; resultvector=Array[0*#&,dim+1]; (*Check results for uniqueness and print them in case that they unique*) For[i=1,i<= Length[Resultlistofcohoms],i++, If[Length[Resultlistofcohoms[[i]]]!= 1,unique=0] ]; If[unique==1, For[i=1,i<= Length[Resultlistofcohoms],i++, resultvector[[Resultlistofcohoms[[i,1,2]]+1]]=resultvector[[Resultlistofcohoms[[i,1,2]]+1]]+Resultlistofcohoms[[i,1,3]] ]; Print[Superscript["h","*"],"(O(",Qchargesstring,")) = ",resultvector]; output=0, serredual=1 (*more fancy output for the graphical interface of mathematica*) (*Print[Superscript["h","\[FilledSmallCircle]"],"(\[ScriptCapitalO](",Qchargesstring,")) = ",resultvector]; output=0, serredual=1*) ]; unique=1; (*Calculate Cohomologies of the Serre dual divisor*) If[serredual ==1, NotebookDelete[tmp]; tmp=PrintTemporary[".."]; SubLinebundleCohomologyOf[CanonicalDivisor-Qchargesin]; (*-------------------------------------------- Printing the Results --------------------------------------------*) Resultlistofcohomsdual={}; (*------------------- The case of the empty set in the denominator is treated separately -----------------------*) leer={}; If[RationomsOf[leer]!=0, AppendTo[Resultlistofcohomsdual,{{h,0,RationomsOf[leer]}}]; ]; (*-------------------------------------------- Case denominator != {} -------------------------------------------*) For[i=1,i<= Length[sortierttupel],i++, If[sortierttupel[[i]][[4]]!=0 && !isexact[sortierttupel[[i]][[2]]][[3]], cohomresult=Map[{h,#[[2]] , #[[3]]*sortierttupel[[i]][[4]]}&,CohomsOf[sortierttupel[[i]][[2]],mincdegree]]; AppendTo[Resultlistofcohomsdual,cohomresult]; ]; ]; (*Check the Serre dual divisor for uniqueness. If it is, print the corresponding data for the divisor in question by using Serre duality*) For[i=1,i<= Length[Resultlistofcohomsdual],i++, If[Length[Resultlistofcohomsdual[[i]]]!= 1,unique=0] ]; If[unique==1, For[i=1,i<= Length[Resultlistofcohomsdual],i++, resultvector[[dim- Resultlistofcohomsdual[[i,1,2]]+1]]=resultvector[[dim-Resultlistofcohomsdual[[i,1,2]]+1]]+Resultlistofcohomsdual[[i,1,3]] ]; Print[Superscript["h","*"],"(O(",Qchargesstring,")) = ",resultvector]; output=0 (*more fancy output for the graphical interface of mathematica*) (*Print[Superscript["h","\[FilledSmallCircle]"],"(\[ScriptCapitalO](",Qchargesstring,")) = ",resultvector]; output=0*) ]; ]; (*If also the Serre dual is not trivially unique we need to consider all possible combinations and cancel them out*) (*First generate a list of all possible resulting vectors h^*(O (D)) *) resultvectors={}; resultvectorsFromDual={}; If[unique==0, NotebookDelete[tmp]; tmp=PrintTemporary["..."]; PossibleResults=Tuples[Resultlistofcohoms]; PossibleResultsDual=Tuples[Resultlistofcohomsdual]; For[j=1,j<= Length[PossibleResults],j++, tmpesultvector=Array[0*#&,dim+1]; For[i=1,i<= Length[PossibleResults[[j]]],i++, tmpesultvector[[ PossibleResults[[j]][[i,2]]+1]]=tmpesultvector[[PossibleResults[[j]][[i,2]]+1]]+PossibleResults[[j]][[i,3]] ]; AppendTo[resultvectors,tmpesultvector]; ]; For[j=1,j<= Length[PossibleResultsDual],j++, tmpesultvector=Array[0*#&,dim+1]; For[i=1,i<= Length[PossibleResultsDual[[j]]],i++, tmpesultvector[[dim- PossibleResultsDual[[j]][[i,2]]+1]]=tmpesultvector[[dim-PossibleResultsDual[[j]][[i,2]]+1]]+PossibleResultsDual[[j]][[i,3]] ]; AppendTo[resultvectorsFromDual,tmpesultvector]; ]; If[Length[Intersection[resultvectors,resultvectorsFromDual]]== 1, Print[Superscript["h","*"],"(O(",Qchargesstring,")) = ",Flatten[Intersection[resultvectors,resultvectorsFromDual]]]; output=0 (*more fancy output for the graphical interface of mathematica*) (*Print[Superscript["h","\[FilledSmallCircle]"],"(\[ScriptCapitalO](",Qchargesstring,")) = ",Flatten[Intersection[resultvectors,resultvectorsFromDual]]]; output=0*) ]; ]; If[output==1, (*------------ Uniqueness could not be achieved: Printing the remaining poossible results ----------------------*) Print[Space]; Print["The algorithm does not return a unique solution. Possible solutions are:"]; Print[ Superscript["h","*"],"(O(",Qchargesstring,")) = ", Intersection[resultvectors,resultvectorsFromDual]]; (*more fancy output for the graphical interface of mathematica*) (*Print[ Superscript["h","\[FilledSmallCircle]"],"(\[ScriptCapitalO](",Qchargesstring,")) = ", Intersection[resultvectors,resultvectorsFromDual]];*) ]; NotebookDelete[tmp]; ];(*End of routine*) (*------------------------------------------------ END OF PROGRAM --------------------------------------------------*) (*--------------------------------------------------- USER INPUT ---------------------------------------------------*) (*--------------------------------------------------- USER INPUT ---------------------------------------------------*)(*--------------------------------------------------- USER INPUT ---------------------------------------------------*)(*--------------------------------------------------- USER INPUT ---------------------------------------------------*) (*----------------------------------------------- Variety defining data ---------------------------------------------*) P1xP1={ (*Coordinates*){u1,u2,u3,u4}, (*Stanley Reisner*){{u1,u2},{u3,u4}}, (*Equivalence Relations*){{1,0},{1,0},{0,1},{0,1}} }; dP1={ (*Coordinates*){u1,u2,u3,u4}, (*Stanley Reisner*){{u1,u2},{u3,u4}}, (*Equivalence Relations*){{1,0},{1,0},{1,1},{0,1}} }; dP2={ (*Coordinates*){u1,u2,u3,u4,u5}, (*Stanley Reisner*){{u1,u2},{u1,u3},{u2,u5},{u3,u4},{u4,u5}}, (*Equivalence Relations*){{1,0,0},{1,0,1},{1,1,0},{0,1,0},{0,0,1}} }; dP3={ (*Coordinates*){u1,u2,u3,u4,u5,u6}, (*Stanley Reisner*){{u1,u2},{u1,u3},{u1,u6},{u2,u3},{u2,u5},{u3,u4},{u4,u5},{u4,u6},{u5,u6}}, (*Equivalence Relations*){{1,0,0,1},{1,0,1,0},{1,1,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}} }; (*-------------------------------------------------- End definitions ------------------------------------------------*) (*------------------------------------------------ Start calculations -----------------------------------------------*) (*----------------------------------------- !!! Start this routine first !!! ----------------------------------------*) (*----------The routine 'GenerateSecondarySequences' needs to be started for each new variety once -----------------*) (*---------------------------------*) GenerateSecondarySequences[dP3]; (*---------------------------------*) (*------- Now one can compute the cohomology group dimensions of line bundles on the variety generated above -------*) (*---- The input of LinbundleCohomologyOf are the charges {Q_ 1,...,Q_r} of the line bundle one is interested in ----*) (* A dP3 example*) LinebundleCohomologyOf[{1,120,3,-33}]; (* (* Some more dP3 examples *) LinebundleCohomologyOf[{0,0,0,0}]; LinebundleCohomologyOf[{1,2,3,4}]; LinebundleCohomologyOf[{-9,3,6,-7}]; LinebundleCohomologyOf[{-5,-5,-5,-5}]; LinebundleCohomologyOf[{2,3,3,3}]; *) (*---------------------------------------------- Output results ---------------------------------------------------*) (*---------------------------------------------- Output results ---------------------------------------------------*)(*---------------------------------------------- Output results ---------------------------------------------------*)(*---------------------------------------------- Output results ---------------------------------------------------*) cohomCalg-0.32/projects/000077500000000000000000000000001322050713700151635ustar00rootroot00000000000000cohomCalg-0.32/projects/Lightbulb.ico000066400000000000000000000560061322050713700176020ustar00rootroot00000000000000 è†(n00¨– ¨>hæ00 ¨%N!  ¨öF hžW( @€€€€€€€€€€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿpxxˆx€ww€xˆ ˆû€°¸ ˆø°‹»° ˆû »‰» ¿ˆ°¹¸ ¸‹ˆû°·°°›¿ˆ¸ °¸»ˆ‹» €»˜»»¸»‰¸°»‹;¸»¹ˆ‹¹¸‹{¸‹¹·»°¸¸¸‹‹‹»°»€¸¸¸¸·¹¸€¹‹‹‹‹‹ € ¸¸¸¸·¸ €¸¸‹‹ˆ¸¸¸·»¸·» ‹‹x¸€¸·¸ »»‹€¸¸¸» ‹»»°‹ˆ‹¸¸¸€‹‹ˆ‹€ ‹¸‹‹€·¸¸{»{°·¸¸»‹ˆ·°¸»¸»»¸»€¸¸»°‹°  ° €ÿþÿÿø?ÿÿøÿÿøÿÿü?ÿþøÿ8ÿÿÿÿÿÿ€ÿÿ ÿÿ€ ÿÀ àø@ü@?þ@þ@ø?ð ààÿƒÁÿÿ€ÿÿÿÿ 0ÿÿ8ÿÿ|~ÿþþÿÿþÿÿþÿÿÿÿÿÿ( €€€€€€€€€€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿpp€°ˆ€ »¸ˆ»ˆ¸·€›¸‹‹¸»€ ‹¸¸¸°ˆ¸¸¸‹¸¸¸‹¸¸¸¸¸¸»€‹ˆ‹€‹‹¸¸° € þÿÿþÿÿþÿÿôoÿÿðÿÿðÿÿ€ÿÿàÿÿðÿÿÀÿÿ€ÿÿðÿÿðÿÿöoÿÿþÿÿÿÿÿÿÿ(0`fffrrrTª¼W­¿a±¿»ì¼ì¼í ¾íR²ÆV²Ä[µÆV¶ÊR¹ÎW¸Ì]»Í]½ÎL¾ÖK¿ØP»ÑQ¼ÒU¼ÒdµÃ`¶Æi¹ÇÀíÁîÂîÂîÄîÄîÆð!Åî$Æï(Åï-Åî&Èï(Éï>Åä0Çï6Éë4Ëî!Æð%Çð&Èð)Éð-Êð/Ìñ1Èð5Êð1Ìð5Îñ;Ëñ9Îñ=Ìñ:Ðñ=ÑòEÃßKÅßLÄÞ]ÂÔSÆÝZÇÜZÈÝfÀÏhÀÎ`ÀÒ`ÅÖfÅÖjÈ×cÊÜfÌÝlÌÛkÏÞpÏÝAÇäMÇàCÍëEÎìUÌãVÏçYËà_ÎâLÒîQÓíYÓê^Úï@ËñCÎòFÍñLÏòRÏòAÒòEÑñCÔóEÔòHÑñMÒòIÕòMÖòOÓôJÖôN×ôOØóNØôQÒòUÒòPÕñ[ÓóYÖó^×óXÖô_×ôPØóUÙòQÙôUÚôWÜõYÙò]ÙòYÙô^ØôYÜô]ÝõaÎágÒäeÔçlÖçiÚír×åuÙçpÚêuÞíxßíaÖóeÕóa×ôfÖôiÖóiÖôaÛðaÜòdÜðaÚõdØô`ÞõdÝôhßñiÚônÚôjÞõrÜñußóqÙôtÛõqÞõxÛõxÞõ}Þöbàöeàõhâöoãönäö`äøoéùráñpàõpå÷täõxàö~àõ†††‰‰‰’’’–––˜˜˜¡¡¡¥¥¥ªªª®®®±±±¶¶¶ƒßö…ßö…âñ‰áö”åò“å÷”ä÷æñ•åøžèø™ñû¾éî¢êù¤êù¤íú´êñ¹êð¼ïõ£òü½õü¶øýÎ俯çëÊåéÃèíÖêìÒìïÔìîÂîóÇîòÍîñÑíðÃúþËøýÓùýÛùýÝùýÙüþâüþêýþíýþc°vψð™ÿ¦1ÿ´QÿÂqÿÏ‘ÿܱÿëÑÿÿÿÿ/Pp!°&Ï,ð>ÿX1ÿqQÿŒqÿ¦‘ÿ¿±ÿÚÑÿÿÿÿ¸µ³²°´±±³´¶·¸»¹¸·¶´³±´±°°²³µ¶º·¸¹¸·µ´µ°®®¯±²´ºl) $äÑÕà [‹ $äÑ×à ‹ \$äÓ×à 3 / /äÓÛà ¿-6n!,#8 2äÒÛà ,!!½ !-._5ãÔÚß 10.-!!--'/Ä 8âÇÙÞ-!!˜/.-6l/07Z,-:áÌØÝ/-!–10. 04Ä./05ÏËÍÊ1//.114fb014*mÃÀ_+11/’:72!!"#-./0451557M:¾™:(5511Ä511//-,,![Y  ,.015{759:;^a¾š`OM:55fa51/.!  nž!-/159¿59^P=g§ÜЦd^:51Ä711/-!0,.015_^9^aes•ÎÆyjU`:5r9510.!8k/059–7:aN?vSx|}WRu[^:7g540.–¼159­:`d vxD“¡¡“ws `:5z955_9­:aQ|££££T>vN^9z:s’:˜^dw}H‚¥ªª£€Twu`:h: b5:ecbA}¢KL„ƒJ¡|`‘`:5o447:`¿gV E¢¥«‡†¤£g``:547ˆ.047:`¬hitEG…«¨FAugzz`:510/ 3,.045:^ghv|ŽICB~ywjgÊg`:510.!b"-0159^azÄuw}¡¡¢¡¡}|uhh`^951/-!#] !#/157:ag”}w|}“}}wv}zg`:751'#  ›`agzȘwwwwug`g:`dgi¢jga`:Ÿ9^`dghuv”©©“vujgg`^9^7:^`aghhjuujjggd`^:5r1579^`agggggddg``::545­01559h­`a````Å^955106/014—:^^^::q410'Š,#.+^9999{¿0'#.¿ !cŸ55557! 8¼1111‹)7//o2œ## #0k—ÿÿþÿÿÿÿøÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿÿðÿÿÿïÿÿ÷ÿÿçðçÿÿãðÿÿððÿÿð` ÿÿð ÿÿø ÿÿø ÿÿø@ÿÿü@?ÿÿü€?ÿà€ð€ø€?þ@ÿ@ÿÿ‚CÿÿâGÿÿâGÿÿÂCÿÿ‚Áÿþ€ü€?ø€à`ÿü0?ÿÿüð?ÿÿø?ÿÿøÿÿøÿÿðÿÿð8ÿÿðøÿÿáø?ÿÿãü?Çÿÿïü?÷ÿÿÿüÿÿÿÿþÿÿÿÿþÿÿÿÿþÿÿÿÿÿÿÿÿÿ( @~~~¼í¿î¿íO¿ÖQ¾ÔT¿Õ\¾ÑÀíÁîÁîÂîÄîÄïÆð Äî%Æî)Çï%Èï,Éï7Ëî?Êé?Ìë;Íî?Îî"Æð$Çð&Èð)Éð-Êð/Ìñ1Éð4Êð1Ìñ5Îñ8Îñ?Ïò:Ðñ=ÑòMÀØJÃÞWÀÕ_ÆÙ]ÊÞeÂÒjÄÒlÆÔ`ÇÙdÍßFÅáHÆáJÊåNÊäEÍêSÌåUÍå[ËàPÏé\ÐæRÔíUÔìZÓêAÎñEÍñIÎñAÒòEÑòCÔóFÔòGÖôHÒòMÑòHÕòNÕòHÖôL×ôKØôNØôRÒòTÓóSÖóPÕôVÖô\ÓóZÕóYÖôQØóUÙóQÙôVÛô^ÙóYÙô]ÙôXÜô^Ýô`ÑähÐálÒâcØíqÚê`ÖôeÖôaÙòcÜñaÙôfÙô`ÞõeÝônÜñiØôlÙônÞõqÙõvÛõrÜõwÝõyÛõzÝõ~Þöbàöiâönäösâòvâòvàöyçø‡‡‡–––šššžžž   ©©©¯¯¯¸¸¸¼¼¼„Þö€àö†àö‚ä÷ˆáöâ÷Šå÷Žä÷€éùìú‘ã÷”æô›çó•æøœéùšïúÀÀÀØíïÐëðÓïòÕîñÂðõËðóÈó÷ÒóöÝñóÚóõÜòô ° Ï ðÿ ÿ>1ÿ\Qÿzqÿ—‘ÿ¶±ÿÔÑÿÿÿ/Pp!+°6Ï@ðIÿZÿ1pÿQ†ÿqœÿ‘²ÿ±ÈÿÑßÿÿÿ/ P6pLb°xÏŽð¤ÿ³ÿ1¾ÿQÇÿqÑÿ‘Üÿ±åÿÑðÿÿÿ,/KPip‡¥°ÄÏáððÿò1ÿôQÿöqÿ÷‘ÿù±ÿûÑÿÿÿÿ/-P?pRc°vψð™ÿ¦1ÿ´QÿÂqÿÏ‘ÿܱÿëÑÿÿÿÿ/Pp!°&Ï,ð>ÿX1ÿqQÿŒqÿ¦‘ÿ¿±ÿÚÑÿÿÿÿ‡ƒƒƒ†ƒƒƒ‚˜†ƒ‚€€˜ƒƒ„…TAtš›efqw@n™£H ! oœ£H  Oq›¢Poiw sž V G!pŸVCJo’”“SjA $$#mi$#%# Tq #‰w&B3M—‘F2'#•j# $'B4:=~<56'K#!O#&'EZ,xk9YD$&"iv'B=+yyyc97)''CBE>hbdda_8(R'R$B‰J1z|{y0*K•}'#"O#'IXZ`./.->Y\D'#f #'Dp\^xxx_Z_kD'# ˆˆˆŠŒŒQIp•k^^k–lF]ŒŒŠˆˆˆIDKWŽ‹NKD]$'DILNYYYLKD'$Š"$'D]FKKK[B'$"?"JBBBBCVtG$&Vj‰"v!Huÿþÿÿø?ÿÿøÿÿøÿÿü?ÿþøÿ8ÿÿÿÿÿÿ€ÿÿ ÿÿ€ ÿÀ àø@ü@?þ@þ@ø?ð ààÿƒÁÿÿ€ÿÿÿÿ 0ÿÿ8ÿÿ|~ÿþþÿÿþÿÿþÿÿÿÿÿÿ( ÃîÃî'Èï;Ìí>Íì&Èð-Éð4Êð2Ìñ6Íð9Îñ>Ïñ?ÑòJÈãHÊçNÌæQÍåYÌâ^ÎâXÐç\ÒèBÎòHÏñCÓòGÑòDÔóIÐòLÓòMÕóRÒòVÕóWÖôYÓó[Öó[Öô]ÙòXÙô\Úô]ÝõkÓãnÔãaØîeÚïiÙìlÜî`ÕôeÜókÚôrÙôqÜöuÞõ{ßó{ÛõyÞõ~Ýõzàõ~àöšššŸŸŸ¡¡¡¥¥¥¢ÄÌ£ÉÒ‚Ýõƒàó‡àö…ä÷Šá÷ˆå÷Žä÷…äø•áóä÷•äöåø ãò åôÑÿßÿÿÿ/Pp ° Ïð ÿ=ÿ1[ÿQyÿq˜ÿ‘µÿ±ÔÿÑÿÿÿ/"P0p=L°YÏgðxÿŠÿ1œÿQ®ÿqÀÿ‘Òÿ±äÿÑÿÿÿ&/@PZptް©ÏÂðÑÿØÿ1ÞÿQãÿqéÿ‘ïÿ±öÿÑÿÿÿ/&PAp[t°ŽÏ©ðÃÿÒÿØ1ÿÝQÿäqÿê‘ÿð±ÿöÑÿÿÿ/P"p0>°MÏ[ðiÿyÿŠ1ÿQÿ¯qÿÁ‘ÿÒ±ÿåÑÿÿÿ/Pp ° Ï ðÿ ÿ>1ÿ\Qÿzqÿ—‘ÿ¶±ÿÔÑÿÿÿ/Pp!+°6Ï@ðIÿZÿ1pÿQ†ÿqœÿ‘²ÿ±ÈÿÑßÿÿÿ/ P6pLb°xÏŽð¤ÿ³ÿ1¾ÿQÇÿqÑÿ‘Üÿ±åÿÑðÿÿÿ,/KPip‡¥°ÄÏáððÿò1ÿôQÿöqÿ÷‘ÿù±ÿûÑÿÿÿÿ/-P?pRc°vψð™ÿ¦1ÿ´QÿÂqÿÏ‘ÿܱÿëÑÿÿÿÿ/Pp!°&Ï,ð>ÿX1ÿqQÿŒqÿ¦‘ÿ¿±ÿÚÑÿÿÿÿ<=;:>?@LH!MJ.!J6A4310/$2 7 8 +* 3 9-,87 8)(9 D5" 8C''G3%#@I&EE% FK  Bþþþôoðð€àðÀ€ððöoþÿÿÿ(0` ~~~{{{}\\\ïaaaâ~~~d¨¨¨h¢¢¢éÿ———ÿ‘‘‘ÿŠŠŠÿ………Ø„„„B………ˆˆˆôŒŒŒÿ“““ÿ™™™ÿŸŸŸÿ¥¥¥ÿ«««ÿ©©©×žžž«««ü«««ÿ¦¦¦ÿ   ÿšššÿ”””ÿŽŽŽÿ‰‰‰ÞŠŠŠŠŠŠú‰‰‰ÿ‹‹‹ÿÿ–––ÿœœœÿ¢¢¢ÿ¦¦¦å›››¥¥¥û«««ÿ­­­ÿªªªÿ£££ÿÿ———ÿà»ì »ì~~~ ~~~èþþ†††þŒŒŒþ’’’þ˜˜˜þʼí¼í »ì;»ì™»ì -±Õ)±ÖY?¸Øl¦Õàp¢ÊÓr£Í×qÒßo.³×k*±ÖKÃò¼í¼í®¼í»ì»ìç»ì×¼ì8 ¿ïY¼íÿ(ÅïÿíýþÿÏäåÿ×êìÿÝùýÿ¾îÿ½îüÀð, ½í¼íT¼íê¼í½¼ìž¼ìÿ ½íù ¾í~¿í ½îl»ìÿ(ÅïÿíýþÿÍåçÿÖëíÿÝùýÿ¾îÿ¼íÿ ¾ï<Àî ¾îŸ ½îþ½íÿ¼ín ½íP ¾íÿ¿íÿÀíÿÁîÂÂî& ¾ï»ìÿ(ÅïÿíýþÿËåèÿÔìîÿÝùýÿ¾îÿ¼íÿ¿ðOÂï=ÁîÚÀîÿ¿îÿ ¾îý ½í"¿í ¿íöÁîÿÂîÿÃîÿÄîîÅîa!Åî ¾î¼ìÿ*ÆïÿíýþÿÉæêÿÒìïÿÝùýÿ¿îÿ½íÿ ¾ïn!ÆïÅï‚ÄïøÃïÿÂïÿÁîÿÀîÑÁî²ÂîÿÄîÿÅïÿ!Æïÿ#Çïþ Æð$Àîοíÿ0ÈðÿíýþÿÆçëÿÑíðÿÝùýÿÁïÿ¿îÿÀïŸ$ÇðR"Çðÿ ÆðÿÅïÿÄïÿÃïÿÁï‚ÃîdÄîÿ Åïÿ#Çïÿ%Èïÿ(ÉïÝÅñÁîùÂîÿ6ËñÿêýþÿÃèíÿÍîñÿÛùýÿÄïÿÂïÿÂïÞ%Èñ'Éðø%Èðÿ"ÇðÿÆðÿÄïþÃï5Åî!Æïú$Çïÿ'Èïÿ*Êðÿ,ÊðÅðpÄîÿÄîÿ;Íñÿâüþÿ¾éîÿÇîòÿÓùýÿ#ÇðÿÄïÿÃïþÅñA,Ëñ°*Êðÿ'Éðÿ$Çðÿ ÆðáÅï#Æï%ÇïÅ)Éðÿ,Êðÿ/Ëðñ,Êñ!Æð×"Æïÿ$Çïÿ?ÏòÿÙüþÿ¹êðÿÂîóÿËøýÿ*Éñÿ#Çðÿ Æðÿ Æðª0Ìò>/Ìñý+Êñÿ(Éðÿ%Èð—*Éðx-Ëðÿ0Ìðÿ3Íð„&Èñ[&Èïÿ)Éðÿ+Êðÿ4Íñÿ½õüÿ´êñÿ¼ïõÿ¤íúÿ-Ëñÿ*Êðÿ'Éðÿ$Çðû(Éò13Íñ²0Ìñÿ,Ëñÿ)ÊðI¼í¼í ½í¿îÁîÂîÄî"Æï&Èï +Êð .Ëð;1Ìðý5Îñà1Ìò*ÉðÜ-Ëðÿ0Ìðÿ2Íñÿ6ÉëÿQÕòÿæñÿ”åòÿEÏîÿ4Ëîÿ1Ìñÿ.Ëñÿ*Êñÿ(Éñ¶4Îò,4Îòö0Ìññ.Ëñ*Êð &Èð !ÆðÅïÃïÁî¿î ½í¼í¼í¼í7¼íѼíè ¾îëÀîîÁîñÃîôÅï÷#Çïú(Éðý,Êðÿ1Ìðÿ5Îñÿ7Îñ[,Ëò/Ëðÿ3Íñÿ6Îñÿ9Ïñÿ?Æäÿ=Ñòÿ…áðÿrÜñÿ<Ñòÿ>Åäÿ7Ïòÿ4Îòÿ0Ìñÿ,Ëñþ+ÊòQ8ÏòŠ4Îòÿ0Ìñÿ,Ëñÿ'Éðü"ÇðùÅïöÃïóÁïð¿îí ½îê¼íç¼í¾¼í ¼í#¼íÅ ¿îÿÁîÿÂîÿÄîÿ!Æïÿ&Èïÿ+Êðÿ0Ìðÿ4Íñÿ8ÏñÎ1Ìó 0Ìññ5Îñÿ9Ïñÿ=ÑòÿEÃßÿCÒðÿDÔóÿ†ãòÿußóÿCÔóÿCÍëÿAÇäÿ:Ðòÿ6Îòÿ2Íñÿ-ËòÕ3Îó8Ïòî3Îñÿ/Ìñÿ*Êñÿ%Èðÿ ÆðÿÄïÿÂïÿÀîÿ ¾îþ½í©¼í ½í ¿îÂïýÃïÿÅïÿ$Çïÿ)Éðÿ.Ëðÿ3Íðÿ8Ïñÿ:ÐñY1Ìò5Îñÿ:Ðñÿ?ÒòÿEÎìÿLÄÞÿIÖóÿoéùÿÃúþÿ¶øýÿ`äøÿHÕóÿK¿ØÿAÒòÿ<Ñòÿ7Ïòÿ1Íñÿ.Ìó`:Ðò‰7Ïòÿ2Íñÿ-Ëñÿ(Éðÿ#ÇðÿÅïÿÃïÿÁî÷¿îl ½íÂïSÄïì!Æïÿ&Èïÿ+Êðÿ0Ìðÿ5Îñÿ:Ðñï6Îó4Îñí:Ðñÿ@ÒòÿEÔòÿP»ÑÿM×òÿPØóÿhßñÿ£òüÿ™ñûÿ^ÚïÿNØôÿLÒîÿL¾ÖÿAÓóÿ<Ñòÿ6Îòÿ0ÌòÅ;Ñó09Ðòþ4Îòÿ/Ìñÿ*Êñÿ%Èðÿ ÆðÿÄïÚÂï6Åî%#ÇïÈ(Éïÿ-Ëðÿ3Íðÿ8Ïñÿ<ÑñÄ3Íò88Ïñÿ>ÑòÿDÔòÿMÇàÿSÆÝÿSÚôÿYËàÿZÙñÿZÝõÿZÜõÿYÓêÿVÏçÿPÙôÿR¼ÒÿGÏìÿ@Òóÿ:Ðòÿ4Îòû7Îó<Ñòí7Ïòÿ2Íñÿ,Ëñÿ'Éðÿ"Çð«Åï%Çï *Éð“/Ëðþ4Íñÿ:Ðñÿ>Ññª6ÏòY<ÐñÿBÓòÿHÕòÿV²ÄÿTÚóÿYÙñÿ`ÀÒÿ`ßõÿbàöÿaßöÿ_Þõÿ]½ÎÿVÛõÿQÖñÿR²ÆÿDÔóÿ=Ñòÿ7Ïòÿ8Ïó*>ÒòÚ9Ðòÿ3Îñÿ.Ëñø)Êðp%Èð1ÌðU6Îñî;Ðñÿ@Òò¬8ÏòW>ÑòÿEÔòÿR¹ÎÿUÌãÿYÜôÿ`¶ÆÿdÜðÿgâöÿiâöÿhâöÿeáöÿaÏâÿ\ÁÔÿTÚõÿT¼ÒÿKÅßÿ@Òóÿ9Ðòÿ:Ðó'@ÒóÛ:Ðòÿ5ÎñÜ1Ìñ73Íñ7ÎñÅ<ÑòÿAÒòÇ:Ðó5@ÒòÿHÓðÿW­¿ÿUÚôÿ\ÝõÿcÊÜÿiÚíÿnä÷ÿpå÷ÿoå÷ÿjã÷ÿeÔçÿ_ÎâÿWÛõÿPØóÿTª¼ÿBÓóÿ;Ðóú<ÐôAÓóï;Ñòÿ6Ïò£2Íñ -ËðA2Ìñâ7Ïñÿ=ÑòÿCÓòï>ÑôAÒóñIÓðÿV¶ÊÿZÈÝÿ^ÞõÿeàõÿkÏÞÿpÏÝÿuÙçÿr×åÿlÌÛÿgÒäÿ`ßöÿYÜõÿW½ÒÿP¼ÒÿCÔóÿ;ÑóÊCÔô.BÓóþ<Ñòÿ6Ïòÿ1ÍñÌ-Ëñ(#Çð'Èðz-Ëðú2Íñÿ8Ïñÿ=ÑòÿCÓòÿFÔóO@ÒóžIÕóÿQÓíÿ[µÆÿ`ÅÖÿfàôÿmäöÿtäõÿxßíÿuÞíÿoãöÿhâöÿaÜòÿ]»ÍÿW¸ÌÿKÕñÿCÔóÿ<ÑónFÕó~BÓóÿ<Ñòÿ7Ïòÿ1Íñÿ,Ëñð&ÉðX#ÇðÅð!Æïµ'Èðÿ,Êðÿ2Ìñÿ7Ïñÿ=ÑòÿCÓòÿHÕó¼?Òô+GÕóõOØóÿVÙòÿ_ÃÕÿdµÃÿjÈ×ÿpÚêÿsâòÿqáñÿlÖçÿfÅÖÿa±¿ÿZÇÜÿQØóÿJÖôÿBÓóà@ÓôGÕóãBÓóÿ<Ñòÿ6Ïòÿ1Íñÿ+Êñÿ&Èðü!Æð•Åï Âï>Äðá!Æïÿ&Èðÿ,Êðÿ1Ìñÿ7Îñÿ<ÐòÿBÓòÿGÕóþJÖóRCÔôwM×óþTÚôÿZÜôÿaÛðÿfÌÝÿhÀÎÿjºÇÿi¹ÇÿfÀÏÿbÍàÿ\ÚñÿVÛõÿOØôÿHÕôû>ÒõKK×ô€FÕóÿAÓóÿ;Ñòÿ6Îòÿ0Ìñÿ+Êñÿ%Èðÿ ÆðÿÄïËÂî$ ½í¿îxÂïùÄïÿ Åïÿ%Çðÿ+Êðÿ0Ìñÿ5Îñÿ;Ðòÿ@ÒòÿFÔóÿKÖóéIÖô)GÕô’PØôÿVÛôÿ\Ýõÿ`ßõÿdàöÿeáöÿdàöÿaßöÿ]ÞõÿXÜõÿRÙôÿL×ôûBÔõhL×ôGJÖôøEÔóÿ?Òòÿ:Ðòÿ4Îñÿ/Ìñÿ*Êðÿ$ÈðÿÅïÿÃïÿÁîî¿îV ¾í½î ¼í³¿îÿÁïÿÃïÿÅïÿ$Çïÿ)Éðÿ/Ëðÿ4Íñÿ9Ïñÿ?ÑòÿDÓòÿIÕóÿM×óÜM×ô+GÕõlPÙôðVÛôÿZÜôÿ]Ýõÿ^Þõÿ]Þõÿ[ÝõÿWÜõÿSÚôÿL×ôâDÔõLOØõFM×ôïHÕóÿCÓóÿ>Ñòÿ8Ïòÿ3Íñÿ.Ëñÿ(Éðÿ#ÇðÿÅïÿÃïÿÁîÿ ¿îü½í’¼í ½î"¼í? ¾îCÁïGÃïKÅïO#ÆïS(ÉðW.Ëð[2Íñ`8Ïñd=Ñò|AÒòýFÔóÿKÖóÿOØóîQÙô`IÖõL×õ„QÙôÚUÛõýVÛõÿVÛõÿTÚõûNØõÌIÖõqJÖõRÙô~NØôùJÖôÿEÔóÿ@Óóò<Ñòj7Ïòc1Íñ_-Ëñ['ÉðW"ÇðSÅïNÃïJÀîF ¾îB½í>¼í;Ðò^>ÑòÿCÓòÿGÕóÿKÖóÿOØóÿSÙôÑTÚôjQÙô!OØõNØõ'OØõ&OØõRÙô+TÚô|RÚôâOØôÿK×ôÿFÕóÿBÓóÿ=Òòý:Ðò/7Îñ«;Ðòÿ?ÒòÿDÓòÿGÕóÿKÖóÿN×óÿQÙôÿSÙôüTÚôçUÛôÔUÛôÖTÚôëSÚôþPÙôÿNØôÿJÖôÿGÕóÿCÔóÿ?Òòÿ:Ðòÿ6Ïò|0Ìñ 3Íñî8Ïñÿ<Ðòÿ@ÒòÿCÓòÿFÕóÿIÖóÿL×óÿN×óÿOØôÿPÙôÿPÙôÿOØôÿMØôÿK×ôÿIÖóÿFÕóÿBÓóÿ?Òóÿ;Ðòÿ7Ïòÿ3ÍñÉ0Ìñ,ÊðI0Ìñÿ4Íñÿ8Ïñÿ;Ðòÿ?ÒòÿBÓòÿDÔòýGÕóüHÕóÿIÖóÿJÖóÿJÖóÿIÖóÿHÖóÿFÕóúDÔóÿAÓóÿ>Òòÿ;Ðòÿ7Ïòÿ3Íñÿ/Ìñú,Ëñ(Éð—,Êðÿ0Ìñÿ3Íñÿ7Ïñÿ:Ðñÿ=Ñòè@ÒòSBÓò®CÓòÿDÔóÿDÔóÿDÔóÿDÔóÿCÔóÿBÓó‚@Òòs<Ñòõ:Ðòÿ6Ïòÿ3Íñÿ/Ìñÿ+Êñÿ(Éðh!Æï$Çðä(Éðÿ,Êðÿ/Ëñÿ2Íñÿ5Îñ·9Ïñ=ÑòV>Ñòÿ?Òòÿ?Òòÿ?Òòÿ>Òòÿ=Ñòÿ=Ñò'9Ðò15ÎòÒ2Íñÿ/Ìñÿ+Êñÿ'Éðÿ#Çð¶Äî5 Æïÿ$Çïÿ'Èðÿ+Êðó.Ëðn1Ìñ7Ïñ 8Ïñò9Ðòÿ9Ðòÿ9Ðòÿ9Ðòÿ8ÏòÎ1Íñ -Ëñ*Êñû'Éðÿ#ÇðÿÆðöÅïÃîƒÄïÿÅïÿ#ÇïÍ'Èð-3Íñ§3Îñÿ4Îñÿ4Îñÿ3Îñÿ3Íñw&ÈðG"ÇðâÆïÿÄïÿÃïS¿íÁîÑÂîûÄïŠÅï .ËðP.Ëñÿ.Ëñÿ.Ëñÿ.Ëñü.Ëñ$ÅïÄï«ÂïþÁî¡ ¾í%¿íÜÁîB(Éð (Éðë)Éðÿ)Éðÿ(ÉðÆ*ÊðÂîÁîa¿îØ ¿î ½í( ¾í#Çð¡#Çðÿ#Çðÿ#Çðq ¾î% ½íÅðJÅïÿÅïùÅï Ãï ÃïçÃïÁÃïÁî›Áîk ¿î> ¿îÿÿøÿÿÿÿðÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÿàÿÿÿÏàóÿÿÇàãÿÿÃà‡ÿÿààÿÿà`ÿÿàÿÿðÿÿðÿÿðÿÿðÿÿøÿàÀàðü?þÿÿÿÀÿÿÀÿÿ€ÿþü?øàÀÀÿøÿÿøÿÿðÿÿðÿÿðÿÿàÿÿà0ÿÿàøÿÿÁø‡ÿÿÇøÃÿÿÏü?óÿÿÿü?ÿÿÿÿü?ÿÿÿÿþÿÿÿÿþÿÿ( @ ¨¨¨‰‰‰foooãqqq×€€€V€€€‘‘‘ššššÿŸŸŸÿ   ÿ   ÿŸŸŸ{·ŸŸŸÿ   ÿ   ÿ›››ÿ––––žžž·ŸŸŸÿœœœÿ———ÿ•••ÿ”””–¼í(t½„„„½ŒŒŒ½”””½ššš_½î(¼í¦¼í{¼í ¾î¼cÖôßÊéïâÎíòáIÏóÞ ¾ï ½î ½î‘½î‰¼í] ½íÿ ¾íÃÀî!Äó¼íójØôÿØíïÿÝñóÿMÐóÿ ½îÔÁï0 ¾îÔ ½îÿ½î= ¾í¿íûÁîÿÃîñÄï^Áñ¼íþjØôÿÕîñÿÜòôÿNÐóÿ ½îíÅñÅðtÃïøÁïÿ¿îê ¾îÂî¿Äîÿ Åïÿ$ÇïûÃðP¿íÿpÚõÿÓïòÿÚóõÿTÓóÿ¿îÿÅñM#ÇðÿÆðÿÄïÿÂïŸÅïq"Æïÿ'Èðÿ*Êð»ÄðÄîÿrÜõÿËðóÿÒóöÿYÖôÿÃïÿÄðq*ÊñÙ&Èðÿ"ÇðÿÅðQ%Çð#)Éðþ.Ëðÿ.ËñU#Çðí&ÈïÿoÝöÿÂðõÿÈó÷ÿX×ôÿ$Çðÿ!Æð×0Ìòj-Ëñÿ(Éñõ$Èð ¼í ½íÀîÂîÅï%Çð,Êð/Ëð×4Íñ¸)Éñƒ,Êðÿ0Ìðÿ?Îîÿ›çóÿ”æôÿ7Ëîÿ.Ëñÿ)Êñÿ)Êòh4ÎòÔ/Ìñ¸+Ëñ%ÈðÅðÂï¿î ½î½î¼î¼í¼ ½îñÀîôÃî÷ Æïú(Èðý.Ëðÿ5Îñû3ÍòJ0Ìñö5Îñÿ;Íîÿ?ÌëÿnÜñÿaÙòÿ?Êéÿ8Îñÿ3Íòÿ-Ëñè5ÎòU4Îòÿ.Ëñÿ'Éðý ÆðúÃï÷Àîô ½îð½î¨½î¼í¿î•ÂïþÄïÿ%Çïÿ,Êðÿ3Íñÿ9Ïñ£1Ìò 8Ïñÿ?ÒòÿHÆáÿKØôÿšïúÿìúÿGÖôÿFÅáÿ<Ñòÿ4Îòÿ/Ìò€9ÐòÃ2Íñÿ+Êñÿ$ÇðÿÄïÿÁîü ¿î}½îÃïV Æïñ(Éðÿ0Ìðÿ7Ïñÿ9ÏòX7Ïñ÷?ÒòÿJÊåÿPÏéÿUÔìÿ€éùÿyçøÿRÔíÿNÊäÿEÍêÿ;Ñòÿ3Íòã;Ðók6Ïòÿ/Ìñÿ'ÉðÿÆðæÃïB$Çï%+ÊðÏ3Íñÿ;Ðñÿ:ÐòV<ÑòÿFÔòÿT¿ÕÿWÚóÿ^Ëßÿ`ßöÿ_Þöÿ\ÉÞÿSÚõÿP¾ÕÿAÓóÿ8Ïòÿ;ÑóV:Ðòÿ2Íòÿ*Êñ¼#Çð/Ëñ5Îñ¨=Ñòÿ=ÑòV@ÒòÿO¿ÖÿVÔìÿ_ÆÙÿfßôÿkã÷ÿiâ÷ÿcØíÿ[ËàÿSÌåÿJÃÞÿ;Ñòÿ>ÒóV<Ñòÿ5ÎòŽ/Ìò/ËðJ6Îñë>Ñòÿ@ÒóWBÓòùR¾ÔÿZÓêÿcÜñÿlÒâÿsÛëÿpÚêÿhÐáÿ^ÝôÿUÍåÿMÀØÿ=ÑóåBÓók=Ñóÿ5ÎòÞ/Ìñ6 Æï&Èð‡.Ëðý6Îñÿ?ÑòÿFÔó›CÓó«NÕðÿ\¾ÑÿdÍßÿnäöÿvâòÿsâòÿiâöÿ`ÇÙÿWÀÕÿIÕòÿ>Òó‹EÕó»>Òóÿ5Îòÿ-Ëñø%ÈðoÆðÂïÅïÂ%Çïÿ-Ëðÿ5Îñÿ>ÑòÿFÔò÷FÕôIKÖóòVÛôÿ`ÑäÿgÂÑÿlÆÔÿjÄÒÿdÃÓÿ\ÐæÿQÙôÿFÕôäGÕôPEÔóþ=Ñóÿ5Îòÿ,Ëñÿ$ÈðÿÅï­Âï ¾íGÁîéÄïÿ$Çïÿ,Êðÿ4Íñÿ<ÐòÿDÓòÿKÖóÍHÕôQPØôïYÜôÿ`ßõÿcàöÿbàöÿ]ÞõÿUÛõÿL×ôäGÕõJJ×ôàCÔóÿ;Ðòÿ3Íòÿ+Êñÿ#ÇðÿÄïÿÁïÜ ¾î4½î ½í}Àî„Äïˆ"ÆïŒ*Éð2Ìñ”9Ïñ˜AÒòæHÕóÿNØóÐM×ôJOØôšTÚôîXÜõÿWÛõÿRÙõçL×õŒNØõPNØôßGÕóÿ@ÒóÙ8Ðò˜1Íò”)Éñ!Æð‹Ãï‡Àîƒ ½îw½î7Îñ<ÑòïCÓòÿIÖóÿOØóûSÙô¬TÚôbRÚõTSÚõTTÚõhSÚõ¹NØôþIÖôÿBÓóÿ<ÑòÕ2ÍñE7Ïñÿ>ÑòÿCÓòÿHÕóÿL×óÿOØôÿQÙôÿQÙôÿOØôÿL×ôÿHÕóÿCÓóÿ=Ñòÿ7Ïòþ2Íò%,Êð“2Íñÿ8Ïñÿ=ÑòÿAÓòüEÔòÜGÕóÿIÖôÿHÖôÿGÕóÿEÔóÚAÓóþ<Ñòÿ7Ïòÿ1Íñÿ,Ëñs"Æï&Èðà,Êðÿ1Ìñÿ6Îñß;Ðñ>>ÑòH?Òòÿ@Óóÿ@Óóÿ?Òóÿ>Òó(;ÐòR5Îòë0Ìñÿ+Êñÿ%ÈðÁÄï0 Åïÿ%Èïÿ+Êð£0Ìñ8Ïñ7Ïñê8Ïòÿ8Ïòÿ7ÏòÐ0Ìñ*Êñ¸%ÈðÿÆðûÄðÁîÃîîÅïX/Ìñ™0Ìñÿ/Ìñÿ/Ìñy$ÈñÅðnÃïöÂï_¿í‹Áî(ÉðB'Éñÿ'Éñþ(Éñ#Áï+¿î} ½í"ÇðÆðæÆðÊ ½îÂï“Âïs¿î9¿îÿøÿÿøÿÿøÿÿøÿþøþ8þþÿÿÿÿÿÿÀ€Àðøü?ü?ðàÀ€ÿÿÿÿÿÿþÿþ0þ<8þ|>þüÿþÿÿþÿ(  ”””(ÒŽŽŽËžžžžžž[ŸŸŸÿšššÿ•••K¼í3¼í 7¥ÃL·ÁÏŽ½ÈÏA±Ï@½î'½î,¼í¿íïÃî\ ½í ãòÿ•áóÿ ¾îqÃïg¿îï½îÄïË%ÇïíÂï· åôÿ–äõÿÃï¯%ÈðöÅï¼¼íÁî"Æï+Êð€/Ëñ¤)Éðûƒàóÿ{ßóÿ'Éðõ/Ìñ©+Êñp!ÆðÁï½î¼î ½í’Âîú&Èïý4Íñç3Íñ¸>ÍìÿeÜóÿ]Ùòÿ;Ìíÿ1Íò¯3Íòð%ÈðýÂïù ½î†½îÅï[-Ëðó9Ïò«>ÑòýQÍåÿeÚïÿaØîÿNÌæÿ:Ðòø9Ðò°,ËñîÅðP4Íñy>Ñò«IÈãý\ÒèÿlÜîÿiÙìÿXÐçÿDÉçù>Òó°4ÎòiÂï"Çï“2ÌñþBÓòäIÕò¹^ÎâÿnÔãÿkÓãÿYÌâÿEÔó¯AÓóî1Íñý"Çð‡Âï½î¿îŒÅïÄ/ËðÈ?ÑòßKÖó»RÙôµ\ÝõûZÝõùOØõ°JÖôÂ>ÒóÜ.ËñÈÅðĿî8ÏñŽCÓòÿM×óéQÙô­QÙô¯MØôíCÓóÿ8Ïò~,ÊðÜ7Îñ÷AÒò—DÔóÿDÔóÿAÓó”6Ïòú+ÊñÍÂî, ÅïÑ+Êð-8Ïñ4Îñà4ÎòÒ+Êñ5Æð×Âï ¾í#Áî$Çð‹$Çð{Áï ¿î Áï3Âï$ü?¬Aü?¬Aä'¬Aà¬Að¬A€¬A¬AÀ¬Aà¬A€¬A¬Að¬Að¬AàG¬Aæg¬Aþ¬AcohomCalg-0.32/projects/msvc17/000077500000000000000000000000001322050713700163035ustar00rootroot00000000000000cohomCalg-0.32/projects/msvc17/cohomCalg.rc000066400000000000000000000135241322050713700205320ustar00rootroot00000000000000ÿþ// Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Neutral (Default) (unknown sub-lang: 0x8) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ZZZ) LANGUAGE LANG_NEUTRAL, 0x8 ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 0,3,2,0 PRODUCTVERSION 0,3,2,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "000904b0" BEGIN VALUE "CompanyName", "Benjamin Jurke" VALUE "FileDescription", "Implementation of arXiv:1003.5217 algorithm" VALUE "FileVersion", "0.32" VALUE "InternalName", "cohomCalg.exe" VALUE "LegalCopyright", "Copyright (C) 2010-2017 Benjamin Jurke" VALUE "OriginalFilename", "cohomCalg.exe" VALUE "ProductName", "cohomCalg Core" VALUE "ProductVersion", "0.32" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x9, 1200 END END #endif // Neutral (Default) (unknown sub-lang: 0x8) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // English (United States) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_ICON ICON "..\\Lightbulb.ico" #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED cohomCalg-0.32/projects/msvc17/cohomCalg.sln000066400000000000000000000023671322050713700207250ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 14 VisualStudioVersion = 14.0.25420.1 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cohomCalg", "cohomCalg.vcxproj", "{39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Debug|x64.ActiveCfg = Debug|x64 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Debug|x64.Build.0 = Debug|x64 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Debug|x86.ActiveCfg = Debug|Win32 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Debug|x86.Build.0 = Debug|Win32 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Release|x64.ActiveCfg = Release|x64 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Release|x64.Build.0 = Release|x64 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Release|x86.ActiveCfg = Release|Win32 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cohomCalg-0.32/projects/msvc17/cohomCalg.vcxproj000066400000000000000000000342641322050713700216250ustar00rootroot00000000000000 Debug Win32 Release Win32 Debug x64 Release x64 {39FD5032-AB8D-45D1-BA61-2CCF5B4A6661} Win32Proj cohomCalg 7.0 Application true v141_xp Unicode false v141_xp Application false v141_xp true Unicode v141_xp Application true v141_xp Unicode v141_xp Application false v141_xp true Unicode v141_xp false $(SolutionDir)\..\..\bin $(SolutionDir)\..\..\build\msvc17\$(Platform)\$(Configuration)\ cohomCalg32D $(SolutionDir)\..\..\source\polylib_mod\;$(VC_IncludePath);$(WindowsSdk_71A_IncludePath); false $(SolutionDir)\..\..\bin $(SolutionDir)\..\..\build\msvc17\$(Platform)\$(Configuration)\ cohomCalgD $(SolutionDir)\..\..\source\polylib_mod\;$(VC_IncludePath);$(WindowsSdk_71A_IncludePath); false $(SolutionDir)\..\..\bin $(SolutionDir)\..\..\build\msvc17\$(Platform)\$(Configuration)\ cohomCalg32 $(SolutionDir)\..\..\source\polylib_mod\;$(VC_IncludePath);$(WindowsSdk_71A_IncludePath); false false $(SolutionDir)\..\..\bin $(SolutionDir)\..\..\build\msvc17\$(Platform)\$(Configuration)\ cohomCalg $(SolutionDir)\..\..\source\polylib_mod\;$(VC_IncludePath);$(WindowsSdk_71A_IncludePath); false NotUsing Level3 Disabled _CRT_SECURE_NO_WARNINGS;POLYLIB_BITS=64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) false true Console true UseLinkTimeCodeGeneration NotUsing Level3 Disabled _CRT_SECURE_NO_WARNINGS;POLYLIB_BITS=64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) false true Console true UseLinkTimeCodeGeneration Level3 NotUsing Full true true _CRT_SECURE_NO_WARNINGS;POLYLIB_BITS=64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) false None true AnySuitable Speed true MultiThreaded Console true true false UseLinkTimeCodeGeneration Level3 NotUsing Full true true _CRT_SECURE_NO_WARNINGS;POLYLIB_BITS=64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) false None true AnySuitable Speed true MultiThreaded Console true true false UseLinkTimeCodeGeneration cohomCalg-0.32/projects/msvc17/cohomCalg.vcxproj.filters000066400000000000000000000213631322050713700232700ustar00rootroot00000000000000 Source files Source files Source files Source files Source files Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files Source files Source files Source files Source files Source files Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod Source files\polylib_mod {a82e9af4-3eeb-4af7-843c-7ff90d65a02b} {e6e5ab04-9bcc-4fc2-9287-894ad25645e4} Source files\polylib_mod Source files\polylib_mod cohomCalg-0.32/projects/msvc17/resource.h000066400000000000000000000016121322050713700203030ustar00rootroot00000000000000ÿþ//{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by cohomCalg.rc // #define IDI_ICON 101 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 102 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif cohomCalg-0.32/source/000077500000000000000000000000001322050713700146325ustar00rootroot00000000000000cohomCalg-0.32/source/iohandler.cpp000066400000000000000000001361221322050713700173100ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // iohandler.cpp // // ============= // // // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 17.04.2010 File created as iohandler.cpp // // Parses and analyzes the input file format and converts to the internal // // fast 64-bit integer formal // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include "iohandler.h" #include "tokenizer.h" #include "main.h" #include "platform.h" using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////// #define MAX_INPUT_LINES 10000 // Maximal number of lines read from an input file #define MAX_GLSM_RANGE (1024*1024) // GLSM charges may range from -(val) to +(val) //////////////////////////////////////////////////////////////////////////////////////////////////// // Besides the class CInternalData defined in the header, there is the class CInputFile which // entirely handles the interpretation of the input data using the tokenizer, i.e. this class // basically serves as the "parser" and also handles the first round of checking of the input data. // Note that this class is entirely restricted to this input file and should never be handles // externally. class CInputFile { private: // Read data map< string, vector > mCoords; // Coordinates and GLSM charges vector< vector > vSRideal; // Stanley-Reisner ideal generators vector< vector > vAmbientCohoms; // Requested ambient cohomologies size_t numGLSMch; // Number of GLSM charges (for syntax check) private: // The internal parsing functions bool ParseVertexCommand(CTokenizer &tok); bool ParseSRidealCommand(CTokenizer &tok); bool ParseAmbientCohomCommand(CTokenizer &tok); bool ParseMonomialFileCommand(CTokenizer &tok); bool DiscardCommand(CTokenizer &tok); bool ParseInput(const char *pInputData); void HandleSyntaxError(size_t iCommandNumber, const char *pCmdStart, ptrdiff_t iErrOffset); bool TranslateToInternalData(CInternalData &intdata); public: CInputFile(); void Clear(); // Main data handling functions static bool ReadInputFileWithoutComments(string strFileName, string &out_contents); bool ReadAndParseInputFile(string strFileName, string strAppend, CInternalData &out); }; CInputFile::CInputFile() { Clear(); } void CInputFile::Clear() { mCoords.clear(); vSRideal.clear(); vAmbientCohoms.clear(); numGLSMch = 0; } bool CInputFile::ReadInputFileWithoutComments(string strFileName, string &out_contents) { /* This function simply reads in all lines from the text file and cuts of everything after a '%' character, which is reserved for comments. The result is a "comment-free" string containing the input file. Note that only MAX_INPUT_LINES number of lines (see definition at the top of file) are retrieved from the file. */ ifstream ifs(strFileName.c_str()); if (!ifs.is_open()) { ERR_OUT("Could not open or read the file '" << strFileName << "'."); return false; } out_contents.clear(); string line; unsigned int nLines = 0; // Work through the lines and cut of everything after a '%'-character while ((getline(ifs, line)) && (nLines++ < MAX_INPUT_LINES)) { size_t comment = line.find('%'); out_contents.append("\n"); if (comment != string::npos) out_contents.append(line.substr(0,comment)); else out_contents.append(line); } // Have we reached the legal maximum of lines - which is considered an error! if (nLines >= MAX_INPUT_LINES) { ERR_OUT("The input file '" << strFileName << "' contains more than " << MAX_INPUT_LINES << " lines."); return false; } return true; } bool CInputFile::ReadAndParseInputFile(string strFileName, string strAppend, CInternalData &out) { /* As one may provide input data by file, command line or both, this functions takes care of putting those two input sources correctly together. The resulting input is then subject to the parsing functions and finally translated into the internal data format described in the class CInternalData. */ string input_data; if (!strFileName.empty()) { if (!ReadInputFileWithoutComments(strFileName, input_data)) return false; } input_data.append(strAppend); if (!ParseInput(input_data.c_str())) return false; if (!TranslateToInternalData(out)) return false; return true; } void CInputFile::HandleSyntaxError(size_t iCommandNumber, const char *pCmdStart, ptrdiff_t iErrOffset) { /* In case the parsing functions stumble upon some unexpected input, this function handles a properly formatted output of the command line indicating where the error was raised. */ if (iErrOffset < 0) iErrOffset = 0; string error_line; ptrdiff_t error_line_offset; if (iErrOffset > 45) { // If the error comes up at a late character in the line, shorten error_line.assign(pCmdStart, 16); error_line.append(" ... "); error_line.append(pCmdStart + iErrOffset - 15, 30); error_line_offset = 16 + 7 + 15; } else { error_line.assign(pCmdStart, iErrOffset + 15); error_line_offset = iErrOffset; } // Truncate at newline or carriage return characters that may appear after the error size_t oddch = error_line.find_first_of("\n\r", error_line_offset); if (oddch != string::npos) error_line.erase(oddch); // Replace all newline, tab or carriage return characters in the final string by spaces oddch = error_line.find_first_of("\t\n\r", error_line_offset); while (oddch != string::npos) { error_line[oddch] = ' '; oddch = error_line.find_first_of("\t\n\r", error_line_offset); } // Print the error ERR_OUT("Syntax error in input file, command no. " << iCommandNumber << ":"); ERR_OUT_PLAIN(error_line); ERR_OUT_PLAIN(string(error_line_offset, ' ') << '^'); } bool CInputFile::ParseVertexCommand(CTokenizer &tok) { /* This function parses a 'vertex' command, for which the maximal prototype syntax line is vertex z = ( 0, 0, 0, -2, -3) | PIC: F | GLSM: (-4, 1, 2, 0, 0, 0, 0, 0); ******************************** vertex z = ( 0, 0, 0, -2, -3) | GLSM: (-4, 1, 2, 0, 0, 0, 0, 0) | PIC: F; *********************** ******** where the *-indicated part is optional and may be left out. However, in case it is present, it is parsed for syntax as well. */ string str, strCoordName; char c; vector dummy, GLSM; vector GLSMranged; bool bPIC = false; bool bGLSM = false; if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("vertex") != 0) return false; // Read in the vertex name and try to insert if (!tok.GetNextToken().GetWord(strCoordName)) return false; pair< map< string, vector >::iterator, bool> newcoord = mCoords.insert(pair >(strCoordName, GLSMranged)); if (newcoord.second == false) { ERR_OUT("Double vertex name '" << str << "' used."); return false; } if (!tok.GetNextToken().GetSymbol(c)) return false; if (c == '=') { // Read and discard the vertex data if (!tok.GetIntegerList(dummy)) return false; if (!tok.GetNextToken().GetSymbol(c)) return false; } while (c == '|') { if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("PIC") == 0) { if (bPIC) { ERR_OUT("Double usage of the identifier PIC."); return false; } bPIC = true; // Read and discard Picard generator if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != ':') return false; if (!tok.GetNextToken().GetWord(str)) return false; if (!tok.GetNextToken().GetSymbol(c)) return false; } else if (str.compare("GLSM") == 0) { if (bGLSM) return false; // Only once! bGLSM = true; // Read in the GLSM charges if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != ':') return false; GLSM.clear(); if (!tok.GetIntegerList(GLSM)) return false; size_t nCurGLSMch = GLSM.size(); if (nCurGLSMch < 1) { ERR_OUT("Invalid number of GLSM charges supplied."); return false; } // Check that we have a equal number of GLSM charges from all vertices if (numGLSMch < 1) numGLSMch = nCurGLSMch; if (numGLSMch != nCurGLSMch) { ERR_OUT("Unequal number of GLSM charges."); return false; } if (!tok.GetNextToken().GetSymbol(c)) return false; } else return false; } if (!bGLSM) { ERR_OUT("No GLSM data was supplied."); return false; } if (c != ';') return false; // We have to check if the GLSM charges are in range and convert to 32-bit vars GLSMranged.resize(numGLSMch); for (size_t i=0; i MAX_GLSM_RANGE) || (GLSM[i] < -MAX_GLSM_RANGE)) { ERR_OUT("Target divisor charge value " << GLSM[i] << " is out of allowed range."); return false; } GLSMranged[i] = (int32_t) GLSM[i]; } // If we arrive here, then the command line was sane and we can copy the retrieved GLSM data newcoord.first->second.clear(); newcoord.first->second.assign(GLSMranged.begin(), GLSMranged.end()); return true; } bool CInputFile::ParseSRidealCommand(CTokenizer &tok) { /* This function parses a 'srideal' command, for which the maximal prototype syntax line is srideal [u1*u2, u3*u4]; where all the product variables have to be present in the list of coordinates/vertices. This more or less suggest using the 'srideal' command AFTER the 'vertex' commands. */ vector vec; string str; char c; if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("srideal") != 0) return false; if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != '[') return false; // Work through the array of Stanley-Reisner generators while (tok.GetNextToken().GetWord(str)) { vec.clear(); // Read in a single SR generator while (tok.GetNextToken().GetSymbol(c)) { // Check if the variable is in the list of coordinates if (mCoords.find(str) == mCoords.end()) { ERR_OUT("Coordinate/vertex '" << str << "' not specified."); return false; } else { if (vec.size() >= 63) { // In principle, this cannot really happen, as we are only allowing for 63 coordinates // in total, i.e. someone must try something like 'srideal [u*u*u*u*u*...];' ERR_OUT("Only a product of up to 63 coordinates is supported per generator"); return false; } vec.push_back(str); } if (c == ',') break; // Ends the current generator if (c == ']') break; // Ends the list of generators if (c != '*') return false; // Another coordinate following if (!tok.GetNextToken().GetWord(str)) return false; } // This check has been removed as it sometimes seems to be sensible to use single generators as well... /* if (vec.size() < 2) { // No sensible toric variety has Stanley-Reisner generators consisting of only a single coordinate ERR_OUT("Each Stanley-Reisner ideal generator must be the product of at least 2 coordinates."); return false; }*/ vSRideal.push_back(vec); if (c == ']') break; if (c != ',') return false; } if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != ';') return false; return true; } bool CInputFile::ParseAmbientCohomCommand(CTokenizer &tok) { /* This function parses a 'ambientcohom' cmd, for which the maximal prototype syntax line is ambientcohom O(3,0,2,-3,-4,-5,0,2); where the number of supplied GLSM charges must comply with the number of GLSM charges specified in the vertex commands. However, in principle this command may come first, which then defines the number of GLSM charges for the vertices. */ string str; vector GLSM; char c; if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("ambientcohom") != 0) return false; if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("O") != 0) return false; // Read in the GLSM charges if (!tok.GetIntegerList(GLSM)) return false; size_t nCurGLSMch = GLSM.size(); if (nCurGLSMch < 1) { ERR_OUT("Invalid number of GLSM charges supplied."); return false; } // Check if we have the correct number of GLSM charges if (numGLSMch < 1) numGLSMch = nCurGLSMch; if (numGLSMch != nCurGLSMch) { ERR_OUT("Unequal number of GLSM charges."); return false; } if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != ';') return false; // Now we have to check the 64-bit GLSM data for range and resort them into // a vector of 32-bit variables; vector GLSMranged; GLSMranged.resize(numGLSMch); for (size_t i=0; i MAX_GLSM_RANGE) || (GLSM[i] < -MAX_GLSM_RANGE)) { ERR_OUT("Target divisor charge value " << GLSM[i] << " is out of allowed range."); return false; } GLSMranged[i] = (int32_t) GLSM[i]; } // If we arrive here, everything is sane and we can add the data vAmbientCohoms.push_back(GLSMranged); return true; } bool CInputFile::ParseMonomialFileCommand(CTokenizer &tok) { /* This function parses a 'monomialfile' cmd, for which the two prototype syntax lines are monomialfile "filename"; monomialfile off; which allows to change the intermediate monomial filename or turn the monomial file usage off alltogether. */ string str; char c; if (!tok.GetNextToken().GetWord(str)) return false; if (str.compare("monomialfile") != 0) return false; const CToken &curtok = tok.GetNextToken(); if (curtok.GetString(str)) CCmdLineArguments::SetMonomialFileName(str); else if (curtok.GetWord(str)) { if (str.compare("off") == 0) CCmdLineArguments::SetUseMonomFile(false); else { ERR_OUT("Could not recognize option '" << str << "'."); return false; } } else return false; if (!tok.GetNextToken().GetSymbol(c)) return false; if (c != ';') return false; return true; } bool CInputFile::DiscardCommand(CTokenizer &tok) { /* This function parses and ignored any command like input, i.e. it looks for a starting WORD token and ignored everything up to the final symbol: anycommand (...ignored...); This is used for ignored commands for some of our internally developed programs for ease of usage concerning input files. */ string str; // We expect a word as the first token of any command if (!tok.GetNextToken().GetWord(str)) return false; // Now search for the command end symbol ';' while (!tok.GetCurToken().IsEndToken()) { char c; if (tok.GetNextToken().GetSymbol(c)) { if (c == ';') return true; } } return false; } bool CInputFile::ParseInput(const char *pInputData) { /* This functions takes responsibility of reading in the data, i.e. it starts the tokenizer and subsequently calls the relevant command parsing functions defined above. It also does some basic input checking in addition to the input checking done in the individual command parsing functions. In case of parsing errors it calls the HandleSyntaxError function to appropiately show the erroneous position. */ Clear(); // Run the input through the tokenizer CTokenizer tok; if (!tok.TokenizeInputString(pInputData)) return false; string strCommandWord; bool bResult = false; CToken token = tok.GetCurToken(); size_t numCmds = 0; size_t nVertexCmds = 0, nSRidealCmds = 0, nAmbientCohomCmds = 0, nMonomialFileCmds = 0; // Scan through the keywords while (token.GetWord(strCommandWord)) { ptrdiff_t iCmdOffset = token.GetInputOffset(); numCmds++; if (strCommandWord.compare("vertex") == 0) { // 'vertex' command detected nVertexCmds++; if (nVertexCmds > 63) { ERR_OUT("Due to internal limitations only up to 63 vertices are supported."); bResult = false; } else bResult = ParseVertexCommand(tok); } else if (strCommandWord.compare("picardgen") == 0) { bResult = DiscardCommand(tok); } else if (strCommandWord.compare("srideal") == 0) { // 'srideal' command detected nSRidealCmds++; if (nSRidealCmds > 1) { ERR_OUT("Multiple 'srideal' commands are forbidden."); bResult = false; } else bResult = ParseSRidealCommand(tok); } else if (strCommandWord.compare("ambientcohom") == 0) { // 'ambientcohom' command detected nAmbientCohomCmds++; bResult = ParseAmbientCohomCommand(tok); } else if (strCommandWord.compare("monomialfile") == 0) { // 'monomialfile' command detected nMonomialFileCmds++; if (nMonomialFileCmds > 1) { ERR_OUT("Multiple 'monomialfile' commands are forbidden."); bResult = false; } else bResult = ParseMonomialFileCommand(tok); } else { ERR_OUT("Unrecognized command '" << strCommandWord << "' in input file"); bResult = false; } // Check if there were some problems in the current run if (!bResult) { HandleSyntaxError(numCmds, pInputData + iCmdOffset, tok.GetPrevToken().GetInputOffset() - iCmdOffset); return false; } // The following routine is more of a internal safety check token = tok.GetCurToken(); if (iCmdOffset == token.GetInputOffset()) { // Internal error - we have not advanced one bit [THIS SHOULD NOT HAPPEN!] ERR_OUT("INTERNAL: Not advancing! Terminating at offset " << iCmdOffset << "."); return false; } } // A new command always has to start with a WORD, so if we are here we're either at the end of file or wrong input if (!token.IsEndToken()) { ERR_OUT("Expecting command."); HandleSyntaxError(++numCmds, pInputData + token.GetInputOffset(), 0); return false; } if (nVertexCmds < 1) { ERR_OUT("No coordinates are specified in the input file."); return false; } if (nSRidealCmds < 1) { ERR_OUT("No Stanley-Reisner ideal generators are specified in the input file."); return false; } if (nAmbientCohomCmds < 1) { ERR_OUT("No ambient line bundle charges are specified in the input file."); return false; } if (nVertexCmds > CCmdLineArguments::GetMaxVertices()) { ERR_OUT("Maximum allowed number of " << CCmdLineArguments::GetMaxVertices() << " coordinates exceeded."); return false; } if (vSRideal.size() > CCmdLineArguments::GetMaxSRgens()) { ERR_OUT("Maximum allowed number of " << CCmdLineArguments::GetMaxSRgens() << " SR generators exceeded."); return false; } if (nAmbientCohomCmds > CCmdLineArguments::GetMaxCohoms()) { ERR_OUT("Maximum allowed number of " << CCmdLineArguments::GetMaxCohoms() << " requested cohomologies exceeded."); return false; } return true; } bool CInputFile::TranslateToInternalData(CInternalData &intdata) { /* This function translates the data obtained from the file to the internal data formal described by the CInternalData class. */ // First clear out the internal data class intdata.Clear(); // Then translate the coordinates size_t numCoords = mCoords.size(); map >::const_iterator it = mCoords.begin(); for (size_t i=0; ifirst); icd.GLSMch.Clear(); for (size_t j=0; jsecond[j]; // Assign the 64-bit variable and compute the complete union icd.liVar = 0x1ull << i; intdata.liCompleteUnion |= icd.liVar; // Update the monomial width for output intdata.nMaxMonomWidth += icd.strName.length() + 1; intdata.vCoords.push_back(icd); it++; } intdata.nMaxMonomWidth--; // Now translate the Stanley-Reisner ideal size_t numSRgens = vSRideal.size(); for (size_t i=0; i= -5) { if (!strFileName.empty()) { MSG_OUT("Reading in the input file '" << strFileName << "'..."); MSG_OUT(""); } } CInputFile iof; if (!iof.ReadAndParseInputFile(strFileName, strAppend, *this)) return false; return true; } string CInternalData::Int64ToCoordProduct(uint64_t liProduct, string strSep, string strZeroVal) const { /* This output function takes a 64-bit variable and converts it into human readable form using the appropiate coordinate bit masks. */ string out; if (liProduct == 0) return strZeroVal; // If we have a non-trivial variable, loop throught the coordinates and apply the // corresponding bit masks size_t numCoords = vCoords.size(); bool bSep = false; for (size_t i=0; i0) strLine.append(","); safe_sprintf(buf, sizeof(buf), "%4d", (int) vTargetDivisors[i].x[j]); strLine.append(buf); } MSG_OUT(strLine << " ))"); } } string CInternalData::PrintInternalDataAsMathematicaScriptInput() { /* This function is used for debug output. It sort of translates the input/internal data stored in CInternalData to the form required by the legacy Mathematica 7 script. This allows for great convenience when checking the results of the C++ implementation to the results of the Mathematica script. */ // First the coordinates string out(" GeometryData = {\n (*Coordinates*){"); size_t num_coords = vCoords.size(); for (size_t i=0; i0) out.append(","); out.append(vCoords[i].strName); } // Then the Stanley-Reisner ideal generators as a list of lists out.append("},\n (*Stanley-Reisner*){"); size_t num_srs = vSRgens.size(); for (size_t i=0; i0) out.append(","); out.append("{"); out.append(Int64ToCoordProduct(vSRgens[i], ",")); out.append("}"); } // And finally the GLSM charges, which represent the projective equivalence relations out.append("},\n (*Equivalence Relations*){"); char buf[64]; for (size_t i=0; i0) out.append(","); out.append("{"); for (size_t j=0; j0) out.append(","); safe_sprintf(buf, sizeof(buf), "%d", (int) vCoords[i].GLSMch.x[j]); out += buf; } out.append("}"); } out.append("}\n };"); return out; } //////////////////////////////////////////////////////////////////////////////////////////////////// // In order to save computational time, there is the possibility to save a monomial list with the // computed secondary/remnant cohomology to a file and read it back in. This functionality is // encapsulated in the class CMonomialFile. class CMonomialFile { private: static const std::string Header; static const char DELIM; static const uint64_t Version; static const std::string Unique; static const std::string Ambiguous; static const std::string EndFile; public: static bool WriteMonomialsFile(const CInternalData &id, std::string strFileName, const CMonomialsList &ml); static bool ReadMonomialsFile(const CInternalData &id, std::string strFileName, CMonomialsList &ml); }; // File format constants const string CMonomialFile::Header = "§$ralfsalg/monomial_file/start$§"; const char CMonomialFile::DELIM = ' '; const uint64_t CMonomialFile::Version = 10001; // Increase after format change! const string CMonomialFile::Unique = "unique_monoms"; const string CMonomialFile::Ambiguous = "ambiguous_monoms"; const string CMonomialFile::EndFile = "§$ralfsalg/monomial_file/end$§"; bool CMonomialFile::WriteMonomialsFile(const CInternalData &id, string strFileName, const CMonomialsList &ml) { /* This private/internal function writes the data from a CMonomialsList class as well as some basic information of the current geometry (taken from CInternalData) to a file. */ // Open the file, if it already exists discard contents ofstream ofs(strFileName.c_str(), ios_base::out | ios_base::trunc | ios_base::binary); if (!ofs.is_open()) { ERR_OUT("Could not open the monomial file '" << strFileName << "' for writing."); return false; } // Write the header string, file format version and variety dimension ofs << Header << DELIM << Version << DELIM; ofs << id.GetDimension() << DELIM; // Write the number of uniquely contributing monomials followed by a list // of the bit-mask, the contributing cohomology group and the secondary/remnant factor ofs << Unique << DELIM << ml.unique_monoms.size() << DELIM; for (map::const_iterator itu = ml.unique_monoms.begin(); itu != ml.unique_monoms.end(); itu++) ofs << itu->first << DELIM << itu->second.Cohom.nGroup << DELIM << itu->second.Cohom.nFactor << DELIM; // Write the number of ambiguously contributing monomials followed by a list // of the bit-mask, the number of potential contributions, followed by a list // of the cohomology group and the secondary/remant factor for each possibility ofs << Ambiguous << DELIM << ml.ambiguous_monoms.size() << DELIM; for (map::const_iterator ita = ml.ambiguous_monoms.begin(); ita != ml.ambiguous_monoms.end(); ita++) { size_t num_cohoms = ita->second.vCohoms.size(); ofs << ita->first << DELIM << num_cohoms << DELIM; for (size_t i=0; isecond.vCohoms[i].nGroup << DELIM << ita->second.vCohoms[i].nFactor << DELIM; } // Write the footer string ofs << EndFile; ofs.close(); return true; } bool CMonomialFile::ReadMonomialsFile(const CInternalData &id, string strFileName, CMonomialsList &ml) { /* This private/internal function read the data from an intermediate monomial file into the CMonomialsList class. Some very basic consistency check is carried out. */ // Open the file for reading ifstream ifs(strFileName.c_str()); if (!ifs.is_open()) return false; // Read & check header string string header; ifs >> header; if (Header.compare(header) != 0) return false; // Read & check file version uint64_t version; ifs >> version; if (version != Version) return false; ml.Clear(); // Read & check variety dimension to internal data size_t var_dim; ifs >> var_dim; if (var_dim != id.GetDimension()) return false; // Read & check beginning of uniquely contributing monomials list string unique; ifs >> unique; if (Unique.compare(unique) != 0) return false; // Read the entire list of uniquely contributing monomials and store data // in the CMonomialsList class unsigned int num_uniques; ifs >> num_uniques; for (unsigned int i=0; i> monomial >> ucd.Cohom.nGroup >> ucd.Cohom.nFactor; pair::iterator, bool> ret = ml.unique_monoms.insert(pair(monomial, ucd)); if (ret.second == false) { // File already contains this unique monomial - this should never happen return false; } } // Read & check the beginning of the ambiguously contributing monomials list string ambiguous; ifs >> ambiguous; if (Ambiguous.compare(ambiguous) != 0) return false; // Read the entire list of ambiguously contributing monomials and the subsequent list // of all possible contributions - store data into the CMonomialsList class unsigned int num_ambiguous; ifs >> num_ambiguous; for (unsigned int i=0; i> monomial >> num_cohoms; acd.vCohoms.clear(); for (unsigned int j=0; j> cc.nGroup >> cc.nFactor; acd.vCohoms.push_back(cc); } pair::iterator, bool> ret = ml.ambiguous_monoms.insert(pair(monomial, acd)); if (ret.second == false) { // File already contains this ambiguous monomial - should never happen return false; } } ifs.close(); ml.ClearRationals(); return true; } //////////////////////////////////////////////////////////////////////////////////////////////////// void CMonomialsList::Clear() { unique_monoms.clear(); ambiguous_monoms.clear(); } void CMonomialsList::ClearRationals() { /* This function clears the number of rational functions for each monomial of both the lists of uniquely and ambiguously contributions. This effectively allows to reuse the same CMonomialList for different computations within the same geometry. */ for (map::iterator itu = unique_monoms.begin(); itu != unique_monoms.end(); itu++) { itu->second.nRationals = 0; itu->second.nRationalsDual = 0; } for (map::iterator ita = ambiguous_monoms.begin(); ita != ambiguous_monoms.end(); ita++) { ita->second.nRationals = 0, ita->second.nRationalsDual = 0; } } bool CMonomialsList::AddUniqueContribution(uint64_t liMonomial, unsigned int nCohomGroup, unsigned int nFactor) { /* Adds an uniquely contributing monomial and the data obtained from the secondary/remnant cohomology. */ // Prepare the new monomial entry UniqueContribData tmp; tmp.Cohom.nGroup = nCohomGroup; tmp.Cohom.nFactor = nFactor; tmp.nRationals = tmp.nRationalsDual = 0; // Add & check if the monomial is already present - this should never happen pair::iterator, bool> ret = unique_monoms.insert(pair(liMonomial, tmp)); if (ret.second == false) { ERR_OUT("Supposedly unique monomial " << CBits::IntToBinary(liMonomial) << " is already in the list of uniquely contributing monomials."); return false; } return true; } bool CMonomialsList::AddAmbiguousContribution(uint64_t liMonomial, const vector &vContributions) { /* Adds an ambiguously contributing monomial and the data obtained from the secondary/remnant cohomology, i.e. the list of all potential cohomology groups where this monomial might contribute and the corresponding contribution factor. */ // Prepare the new ambiguous monomial entry AmbiguousContribData tmp; tmp.vCohoms.assign(vContributions.begin(), vContributions.end()); tmp.nRationals = tmp.nRationalsDual = 0; // Add & check if the monomial is already presen - this should never happen pair::iterator, bool> ret = ambiguous_monoms.insert(pair(liMonomial, tmp)); if (ret.second == false) { ERR_OUT("Supposedly unique monomial " << CBits::IntToBinary(liMonomial) << " is already in list of ambiguously contributing monomials."); return false; } return true; } bool GetIntSequenceStartEnd(const vector &seq, size_t &min_out, size_t &max_out) { /* This little helper functions takes an arbitrary length vector of integer variables and finds the first and last non-zero entry. */ bool zero_seq = true; size_t sequencelen = seq.size(); // Loop FORWARDS from the beginning to the end of the vector and find first non-zero element for (size_t i=0; i=min_out; i--) { if (seq[i] != 0) { max_out = i; break; } } return true; } typedef struct { uint64_t liMonomial; const UniqueContribData *pUCD; } OutputUniqueSort; void CMonomialsList::PrintMonomialList(const CInternalData &id, bool bPrintFactors, bool bPrintRationals, bool bShortList) const { /* This output functions prints an easily readable list of all the data contained in the monomial list. The output of the secondary/remnant cohomology factors and the output of the potentially already computed number of rational functions can be turned on and of. Note that output of the rational functions automaticall turns on the output of the secondary/remnant cohomology factors. */ // We need small helper structure in order to sort the uniquely contributing monomials // by their respective cohomology group if (bPrintRationals) bPrintFactors = true; // Store the complete union uint64_t complete_union = id.GetCompleteUnion(); // Presort the unique monomials list size_t var_dim = id.GetDimension(); vector< vector > unique_sorted; unique_sorted.resize(var_dim+1); map::const_iterator itu = unique_monoms.begin(); while (itu != unique_monoms.end()) { OutputUniqueSort tmp; tmp.liMonomial = itu->first; tmp.pUCD = &itu->second; unique_sorted[itu->second.Cohom.nGroup].push_back(tmp); itu++; } // Print out the unique monomials if (unique_monoms.size() < 1) MSG_OUT(" There are no unique contribution monomials to the " << var_dim << "-dimensional variety."); else { MSG_OUT(" The " << unique_monoms.size() << " unique contribution monomials to the " << var_dim << "-dimensional variety are:"); for (unsigned int dim = 0; dim <= var_dim; dim++) { char buf[256]; size_t curmonoms = unique_sorted[dim].size(); MSG_OUT(" H^" << dim << "(X) has " << curmonoms << " contributing unique monomials:"); for (size_t i=0; inRationals; uint32_t drat = unique_sorted[dim][i].pUCD->nRationalsDual; // If a short list is requested, only print the monomials with non-zero contribution if (bShortList) { if ((rat == 0) && (drat == 0)) continue; } // Add the secondary/remnant cohomology factors if requested if (bPrintFactors) { uint32_t factor = unique_sorted[dim][i].pUCD->Cohom.nFactor; // Add the number of rational functions if requested if (bPrintRationals) safe_sprintf(buf, sizeof(buf), " factor %3d * %-3d rationals = contribution %3d | factor %3d %-3d dual rationals = contribution %d", (int) factor, (int) rat, (int) (factor * rat), (int) factor, (int) drat, (int) (factor * drat)); else { if (factor != 1) safe_sprintf(buf, sizeof(buf), " factor %3d", (int) factor); } } MSG_OUT(" " << id.Int64ToMonomialPadded(unique_sorted[dim][i].liMonomial).c_str() << buf); } } } // Print out the ambiguous monomials if (ambiguous_monoms.size() < 1) MSG_OUT(" There are no ambiguous contribution monomials to the variety."); else { MSG_OUT(" There are also " << ambiguous_monoms.size() << " ambiguous monomials:"); for (map::const_iterator ita = ambiguous_monoms.begin(); ita != ambiguous_monoms.end(); ita++) { char buf[256]; size_t len = 0; size_t numcohoms = ita->second.vCohoms.size(); for (size_t i=0; ifirst).c_str()); strtmp = buf; len = strtmp.length(); } else { strtmp.assign(len, ' '); } buf[0] = 0; // Add the secondary/remnant cohomology factors if requested if (bPrintFactors) { uint32_t group = ita->second.vCohoms[i].nGroup; uint32_t factor = ita->second.vCohoms[i].nFactor; uint32_t rat = ita->second.nRationals; uint32_t drat = ita->second.nRationalsDual; // Add the number of rational functions if requested if (bPrintRationals) safe_sprintf(buf, sizeof(buf), "factor %3d * %-3d rationals = contribution %3d | %-3d dual rationals = contribution %d --> h^%-2d", (int) factor, (int) rat, (int) (factor * rat), (int) drat, (int) (factor * drat), group); else { if (factor != 1) safe_sprintf(buf, sizeof(buf), "factor %3d --> h^%-2d", (int) factor, (int) group); else safe_sprintf(buf, sizeof(buf), " --> h^%-2d", (int) group); } } MSG_OUT(strtmp << buf << " (complement: " << id.Int64ToMonomial(~ita->first & complete_union) << ")"); } } } } bool CMonomialsList::ReadMonomialsFile(const CInternalData &id, std::string strFileName) { /* Wrapper function to access the reading function of the CMonomialFile class. */ return CMonomialFile::ReadMonomialsFile(id, strFileName, *this); } bool CMonomialsList::WriteMonomialsFile(const CInternalData &id, std::string strFileName) const { /* Wrapper function to access the writing function of the CMonomialFile class. */ return CMonomialFile::WriteMonomialsFile(id, strFileName, *this); }cohomCalg-0.32/source/iohandler.h000066400000000000000000000162061322050713700167550ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // iohandler.h // // =========== // // // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 17.04.2010 File created as iohandler.h // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef INC_IOHANDLER_H #define INC_IOHANDLER_H #include #include #include #include //////////////////////////////////////////////////////////////////////////////////////////////////// // This file handles the translation from the input file or string to the internal data format using // first the tokenizer and then some pretty elementary (read: non-sophisticated) parsing. // // There are several internal data format and due to the quite limited amount of input data several // redundant copies are held by the computation classes. However, the CInternalData class provides // the "common ground" and also contains the output functions to "human readable" format. // // Internally, for most of the program we are working with 64-bit integer variables, because the // usage of bitmasks and bit-wise operators in general is very fast and rather memory efficient. // The usage of those internal variables also puts some limitations on the input data: only up to // 63 coordinates/vertices and Stanley-Reisner ideal generator are supported (the top bit is // reserved!), butat the current state of technology those cases are way out of the league of modern // computers. // For speedup we use some fixed-width arrays of 64 integer variables template class vec64 { public: T x[64]; public: inline void Fill(T val) { for (unsigned int i=0; i<64; i++) x[i]=val; } inline void Clear() { Fill(0); }; }; typedef vec64 i32vec64; typedef vec64 ui32vec64; typedef vec64 i64vec64; typedef vec64 ui64vec64; // For each coordinate/vertex we hold the following data typedef struct { uint64_t liVar; std::string strName; i32vec64 GLSMch; } InternalCoordData; class CInternalData { friend class CInputFile; private: // The input data std::vector vCoords; // The coordinates/vertices std::vector vSRgens; // The Stanley-Reisner ideal generators std::vector vTargetDivisors; // The requested ambient cohomology bundle charges size_t numGLSMch; // For output formatting size_t nMaxMonomWidth; // Some internal data uint64_t liCompleteUnion; private: void Clear(); public: CInternalData(); // Output functions std::string Int64ToCoordProduct(uint64_t liProduct, std::string strSep = "*", std::string strZeroVal = "1") const; std::string Int64ToCoordProductPadded(uint64_t liProduct, std::string strSep = "*", std::string strZeroVal = "1") const; std::string Int64ToMonomial(uint64_t liProduct) const; std::string Int64ToMonomialPadded(uint64_t liProduct) const; void PrintInternalData(); std::string PrintInternalDataAsMathematicaScriptInput(); // Internal data retrival inline size_t GetDimension() const { return vCoords.size() - numGLSMch; }; inline uint64_t GetCompleteUnion() const { return liCompleteUnion; }; inline size_t GetNumGLSMch() const { return numGLSMch; }; inline size_t GetNumCoordinates() const { return vCoords.size(); }; inline size_t GetNumSRgens() const { return vSRgens.size(); }; inline size_t GetNumTargetDivisors() const { return vTargetDivisors.size(); }; inline const std::vector &GetInternalCoordData() const { return vCoords; }; inline const std::vector & GetSRgens() const { return vSRgens; }; inline const std::vector & GetTargetDivisors() const { return vTargetDivisors; }; void GetCanonicalDivisor(i32vec64 &candiv_out) const; // Data input bool ReadAndParseInputFile(std::string strFileName, std::string strAppend); }; //////////////////////////////////////////////////////////////////////////////////////////////////// // The CMonomialsList class contains the data which is ultimately produced by the processes. Encoded // in 64-bit variables, again, it contains the list of all contributing monomials and their respective // factor, which was derived from the secondary/remnant cohomology. Note that the monomials are split // up in two sets: the monomials which have a contribution to an uniquely determined cohomology group // and the ambiguously contributing monomials, whose actual contribution has to be sorted out later. typedef struct { uint32_t nGroup; uint32_t nFactor; } CohomContrib; typedef struct { CohomContrib Cohom; uint32_t nRationals; uint32_t nRationalsDual; } UniqueContribData; typedef struct { std::vector vCohoms; uint32_t nRationals; uint32_t nRationalsDual; } AmbiguousContribData; class CMonomialsList { friend class CSecondaryCohomology; friend class CRationals; friend class CMonomialFile; private: // Associative monomial contribution data std::map unique_monoms; std::map ambiguous_monoms; private: // Adding monomials bool AddUniqueContribution(uint64_t liMonomial, uint32_t nCohomGroup, uint32_t nFactor); bool AddAmbiguousContribution(uint64_t liMonomial, const std::vector &vContributions); public: void Clear(); void ClearRationals(); // Output functions void PrintMonomialList(const CInternalData &id, bool bPrintFactors, bool bPrintRationals, bool bShortList) const; // Intermediate monomial file I/O bool ReadMonomialsFile(const CInternalData &id, std::string strFileName); bool WriteMonomialsFile(const CInternalData &id, std::string strFileName) const; }; bool GetIntSequenceStartEnd(const std::vector &seq, size_t &min_out, size_t &max_out); #endif cohomCalg-0.32/source/main.cpp000066400000000000000000000637731322050713700163020ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // main.cpp +-----------------------+ // // ======== | APPLICATION MAIN FILE | // // +-----------------------+ // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 29.03.2010 File created as main.cpp // // Contains a fast implementation of the line bundle cohomology algorithm // // presented in the paper arXiv:1003.5217 [hep-th] // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include "main.h" #include "secondarycohom.h" #include "rationals.h" #include "iohandler.h" #include "platform.h" using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////// #define APP_NAME "cohomCalg" #define APP_VERSION "0.32" #define APP_AUTHOR "author: Benjamin Jurke (mail@benjaminjurke.com)" << std::endl << " Based on the algorithm detailed in arXiv:1003.5217" #define APP_PLATFORM APP_TARGET_OS << " " << APP_ARCH //////////////////////////////////////////////////////////////////////////////////////////////////// vector CBits::cBitsIn16Bits; void CBits::InitBitCounter() { /* This function initializes the bit counter buffer, by counting the number of bits in all 16-bit variables. (Gosh, who remembers the time, when this was ALL of your available memory...?) */ // Resize the bit buffer cBitsIn16Bits.resize((0x1u << 16), 0); // And count the bits for all 16-bit variables for (unsigned int i=0; i<(0x1u<<16); i++) { unsigned int count = 0; unsigned int n=i; while (n) { count += n & 0x1u; n >>= 1; } cBitsIn16Bits[i] = (char) count; } } string CBits::IntToBinary(uint64_t x, size_t digits) { /* This functions produces a string containing the lower-end bits of a 64-bit variable up to 'digits', which are packed into 8-bit packs to ease readability. */ if ((digits > 0) && (digits <= 64)) { // If we are in range, compute the total length of the output string int32_t offset = digits % 8; size_t stringlen = digits+digits/8 + (offset == 0 ? -1 : 0); string tmp(stringlen, '0'); uint64_t mask = 0x1ull << (digits-1); // Now slide the bit mask over the bits and write a 1 where necessary for (int32_t cnt=1,stringpos=0; cnt<=(int32_t) digits; cnt++, stringpos++) { if (x & mask) tmp[stringpos] = '1'; x <<= 1; if(((cnt-offset) % 8 == 0) && (cnt < (int32_t) digits)) tmp[++stringpos] = ' '; } return tmp; } else { return ""; } } string CBits::IntToBinary(uint64_t x) { /* Returns the bit string containing either 64, 32 or 16 bits depending on numerical value. */ if (x >= (0x1ull << 32)) return IntToBinary(x, 64); if (x >= (0x1ull << 16)) return IntToBinary(x, 32); return IntToBinary(x, 16); } string SecondsToTime(clock_t secs) { /* Converts an integral number of seconds properly into days/hours/minutes/seconds. */ clock_t days = secs / (60*60*24); secs %= 60*60*24; clock_t hours = secs / (60*60); secs %= 60*60; clock_t mins = secs / 60; secs %= 60; string out; char buf[64]; if (days != 0) { if (days==1) out += "1 day "; else { safe_sprintf(buf, sizeof(buf), "%d days ", (int) days); out += buf; } } if (hours != 0) { if (hours==1) out += "1 hour "; else { safe_sprintf(buf, sizeof(buf), "%d hours ", (int) hours); out += buf; } } if (mins != 0) { if (mins==1) out += "1 min "; else { safe_sprintf(buf, sizeof(buf), "%d mins ", (int) mins); out += buf; } } if ((secs != 0) || out.empty()) { if (secs==1) out += "1 sec "; else { safe_sprintf(buf, sizeof(buf), "%d secs ", (int) secs); out += buf; } } out.erase(out.end()-1); return out; } string SecondsToTime(double secs) { /* Converts a floating-point number of seconds properly into days/hours/minutes/seconds while keeping two digits during the first minute. */ char buf[256]; if (secs <= 60.9) { if (secs == 1.0) return "1 second"; else safe_sprintf(buf, sizeof(buf), "%.2f seconds", secs); } else safe_sprintf(buf, sizeof(buf), "%.2f seconds = %s", secs, SecondsToTime((clock_t) secs).c_str()); return buf; } string BytesToReadableSize(uint64_t bytes) { /* Converts a number of bytes to the proper extension string. */ char buf[32]; if (bytes >= (1024ull*1024ull*1024ull*1024ull*1024ull)) safe_sprintf(buf, sizeof(buf), "%.2f PiB", (double) bytes / (1024ull*1024ull*1024ull*1024ull*1024ull)); else if (bytes >= (1024ull*1024ull*1024ull*1024ull)) safe_sprintf(buf, sizeof(buf), "%.2f TiB", (double) bytes / (1024ull*1024ull*1024ull*1024ull)); else if (bytes >= (1024ull*1024ull*1024ull)) safe_sprintf(buf, sizeof(buf), "%.2f GiB", (double) bytes / (1024ull*1024ull*1024ull)); else if (bytes >= (1024*1024)) safe_sprintf(buf, sizeof(buf), "%.2f MiB", (double) bytes / (1024*1024)); else if (bytes >= 10000) safe_sprintf(buf, sizeof(buf), "%.2f KiB", (double) bytes / (1024)); else if (bytes > 1) safe_sprintf(buf, sizeof(buf), "%d bytes", (int) bytes); else return "1 byte"; return buf; } //////////////////////////////////////////////////////////////////////////////////////////////////// string CCmdLineArguments::strCommand; string CCmdLineArguments::strInputFileName; int CCmdLineArguments::iVerboseLevel = 0; bool CCmdLineArguments::bShowTiming = false; bool CCmdLineArguments::bShowBits = false; bool CCmdLineArguments::bCheckSerre = false; bool CCmdLineArguments::bMonomReduction = true; bool CCmdLineArguments::bUseMonomFile = true; bool CCmdLineArguments::bIntegratedRun = false; string CCmdLineArguments::strAppendInput; bool CCmdLineArguments::bMathematicaOutput = false; string CCmdLineArguments::strMonomialFileName; bool CCmdLineArguments::bMaxVertices = false; int CCmdLineArguments::iMaxVertices = -1; bool CCmdLineArguments::bMaxSRgens = false; int CCmdLineArguments::iMaxSRgens = -1; bool CCmdLineArguments::bMaxCohoms = false; int CCmdLineArguments::iMaxCohoms = -1; void CCmdLineArguments::Clear() { strCommand.clear(); strInputFileName.clear(); iVerboseLevel = 0; bShowTiming = false; bCheckSerre = false; bMonomReduction = true; bUseMonomFile = true; strAppendInput.clear(); bMathematicaOutput = false; strMonomialFileName.clear(); } void CCmdLineArguments::PrintHelp() { /* This function shows the help output. */ CONSOLE_MSG_OUT("Syntax: cohomcalg [--option1] [--option2] ... InputFileName [> OutputFileName]"); CONSOLE_MSG_OUT(""); CONSOLE_MSG_OUT("Command line options:"); CONSOLE_MSG_OUT(" --in=\"...\" Treats the text between parentheses like additional"); CONSOLE_MSG_OUT(" input data, i.e. like appended content of the input file."); CONSOLE_MSG_OUT(" --nomonomfile Prohibits usage and generation of monomial file."); CONSOLE_MSG_OUT(" --checkserre Computes the Serre dual cohomology for comparison."); CONSOLE_MSG_OUT(" --noreduction Deactivates the Serre self-duality reduction for ambiguous"); CONSOLE_MSG_OUT(" monomials (may increase computation time dramatically!)"); CONSOLE_MSG_OUT(" --hideinput Does not print the input data read from the input file."); CONSOLE_MSG_OUT(" --showtime Shows timing stats even for application runs < 1 second."); CONSOLE_MSG_OUT(" --showbits Prints the internally used bitmasks for debug output."); CONSOLE_MSG_OUT(" --mathematica Gives formattet output for the Mathematica script version."); CONSOLE_MSG_OUT(" --integrated Produces minimalistic output for application integration."); CONSOLE_MSG_OUT(" --verboseN Provides debug output at level N=1..6, e.g. --verbose3."); CONSOLE_MSG_OUT(" --maxX=N Defines limits for X=verts,srgens,cohoms to N."); CONSOLE_MSG_OUT(""); CONSOLE_MSG_OUT("The order of options is irrelevant, but later commands always overwrite"); CONSOLE_MSG_OUT("prior options, e.g. from '--verbose4 --verbose1' only the later one will"); CONSOLE_MSG_OUT("have any effect."); CONSOLE_MSG_OUT(""); CONSOLE_MSG_OUT("The program automatically tries to add the file extension '.in' to the"); CONSOLE_MSG_OUT("InputFileName. See the package manual for further information."); } bool CCmdLineArguments::ParseCmdLineArguments(int argc, char *argv[]) { /* This function parses the C/C++ passed argument lines, which come as an array of strings. Those are translated into the static class variables of CCmdLineArguments. */ Clear(); // There should at least be one argument if (argc < 1) return false; // The first command is always the executable command strCommand = argv[0]; if (argc < 2) { // With no option or anything specified, show the help PrintHelp(); return false; } // Check if someone actually requested the help string strCurArg = argv[1]; if ((strCurArg.compare("--help") == 0) || (strCurArg.compare("-help") == 0) || (strCurArg.compare("/help") == 0) || (strCurArg.compare("--?") == 0) || (strCurArg.compare("-?") == 0) || (strCurArg.compare("/?") == 0)) { PrintHelp(); return false; } // The last argument is expected to be a filename, other than than order is irrelevant bool bCheckForFilename = true; bool bFileRequired = true; for (int i=1; i= -5) MSG_OUT(strAppInfo); // STEP 2: Do all pre-computation initializations CBits::InitBitCounter(); ////////////////////////// // STEP 3: Read in the input file and print the input data CInternalData id; if (!id.ReadAndParseInputFile(CCmdLineArguments::GetInputFileName(), CCmdLineArguments::GetAppendInput())) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Invalid input data\"}"); return 1; } if (CCmdLineArguments::GetVerboseLevel() >= 0) { MSG_OUT("Input data:"); MSG_OUT("==========="); id.PrintInternalData(); } if (CCmdLineArguments::GetVerboseLevel() >= -5) { MSG_OUT(""); MSG_OUT(""); MSG_OUT(""); } ////////////////////////// // STEP 4: Initialize the secondary sequences engine CSecondaryCohomology seccohom; if (!seccohom.Init2ndSequences(id)) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Could not compute secondary sequences\"}"); return 1; } ts.t10SecondarySeqsStart = clock(); // Check if we should use a potentially available monomial file for speedup, if so skip steps 5-6 string strMonomialFileName = CCmdLineArguments::GetMonomialFileName(); if (strMonomialFileName.empty()) CCmdLineArguments::SetUseMonomFile(false); bool bComputeMonoms = true; if (CCmdLineArguments::GetUseMonomFile()) { if (seccohom.GetMonomialsList().ReadMonomialsFile(id, strMonomialFileName)) bComputeMonoms = false; else { CONSOLE_MSG_OUT("Could not open/read in the monomial file '" << strMonomialFileName << "'."); CONSOLE_MSG_OUT(""); } } else { CONSOLE_MSG_OUT("Usage and generation of intermediate monomial files deactivated."); CONSOLE_MSG_OUT(""); } if (bComputeMonoms) { // STEP 5: Start the computation of the secondary sequences CONSOLE_MSG_OUT("Starting computation of secondary sequences..."); if (CCmdLineArguments::GetVerboseLevel() >= 6) MSG_OUT(" - Generating secondary sequences..."); if (!seccohom.TraverseSRpowerset(id)) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Could not traverse SR ideal generator powerset\"}"); return 1; } if (CCmdLineArguments::GetVerboseLevel() >= 4) { MSG_OUT("Verbose Level 4: Full list of monomials with secondary sequences:"); MSG_OUT("-----------------------------------------------------------------"); seccohom.PrintMonomMap(id, false); MSG_OUT(""); MSG_OUT(""); } // STEP 6a: Compute the secondary cohomology / monomial factors from the sequences if (CCmdLineArguments::GetVerboseLevel() >= 6) MSG_OUT(" - Eliminating trivial sequences..."); ts.t20SeqExactnessStart = clock(); if (!seccohom.Compute2ndCohomFromTrivialSequences()) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Could not compute secondary cohomology of trivial sequences\"}"); return 1; } if (CCmdLineArguments::GetVerboseLevel() >= 3) { MSG_OUT("Verbose Level 3: Reduced list of monomials with non-trivial secondary sequences:"); MSG_OUT("--------------------------------------------------------------------------------"); seccohom.PrintMonomMap(id, false); MSG_OUT(""); MSG_OUT(""); } // STEP 6b: Compute the remaining secondary/remnant cohomology elements if (CCmdLineArguments::GetVerboseLevel() >= 6) MSG_OUT(" - Computing cohomology from sequences..."); if (!seccohom.Compute2ndCohomFromSequences(id)) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Could not compute secondary cohomology\"}"); return 1; } // If we are using intermediate monomial files, it is time for storing the computed data to file if (CCmdLineArguments::GetUseMonomFile()) { if (!seccohom.GetMonomialsList().WriteMonomialsFile(id, strMonomialFileName)) { ERR_OUT("Could not write the computed monomials to the file '" << strMonomialFileName << "'. Continuing..."); } } } else { CONSOLE_MSG_OUT("Using monomial file '" << strMonomialFileName << "'. Delete or rename this file"); CONSOLE_MSG_OUT("if you don't want to use it, or use '--nomonomfile' option."); CONSOLE_MSG_OUT("WARNING: Do not change the vertices (order) or Stanley-Reisner ideal in the"); CONSOLE_MSG_OUT("input file without deleting the monomial file - otherwise crashes!"); CONSOLE_MSG_OUT(""); } // STEP 7: Resolve the ambiguous monomials via the "unique complement dualization" technique (unless turned off) if (CCmdLineArguments::GetMonomReduction()) { if (CCmdLineArguments::GetVerboseLevel() >= 2) { MSG_OUT("Verbose Level 2: Preliminary list of contributing monomials with factors (pre-Serre-reduction):"); MSG_OUT("-----------------------------------------------------------------------------------------------"); seccohom.GetMonomialsList().PrintMonomialList(id, true, false, false); MSG_OUT(""); MSG_OUT(""); } if (!seccohom.Perform2ndCohomSerreReduction(id)) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Could not perform Serre duality reduction of contributions\"}"); return 1; } if (CCmdLineArguments::GetVerboseLevel() >= -5) { MSG_OUT(""); MSG_OUT(""); } } else { CONSOLE_MSG_OUT("Serre self-duality reduction for ambiguous monomials deactivated."); } if (CCmdLineArguments::GetVerboseLevel() >= 2) { MSG_OUT("Verbose Level 2: Final list of contributing monomials with factors:"); MSG_OUT("-------------------------------------------------------------------"); seccohom.GetMonomialsList().PrintMonomialList(id, true, false, false); MSG_OUT(""); MSG_OUT(""); } CONSOLE_MSG_OUT("Computation of secondary cohomologies and contributions complete."); ////////////////////////// // STEP 8: Count the number of rational functions for alle monomials ts.t30RationalsCountStart = clock(); vector cohom; if (!CRationals::ComputeCohomologies(id, seccohom.GetMonomialsList(), cohom)) { if (CCmdLineArguments::GetVerboseLevel() < -5) MSG_OUT_NOENDL("{False,\"Internal error while computing the cohomology\"}"); else MSG_OUT("Internal error while computing the cohomology"); return 1; } ts.t90ComputationsDone = clock(); if (CCmdLineArguments::GetVerboseLevel() >= 1) { MSG_OUT("Verbose Level 1: Final list of contributing monomials with factors and rationals:"); MSG_OUT("---------------------------------------------------------------------------------"); for (unsigned int i=0; i= -5) MSG_OUT(""); ////////////////////////// // STEP 9: Provide the final output if (CCmdLineArguments::GetMathematicaOutput()) { MSG_OUT("Preformatted output for Mathematica script version of the algorithm implementation:"); MSG_OUT("-----------------------------------------------------------------------------------"); string tmp; MSG_OUT(id.PrintInternalDataAsMathematicaScriptInput()); CCohomology::GetMathematicaCohomologiesList(cohom, tmp); MSG_OUT(tmp); MSG_OUT(""); MSG_OUT(""); } if (!CCmdLineArguments::GetIntegratedRun()) CCohomology::PrintCohomologies(cohom); else CCohomology::SummarizeCohomologies(cohom); ts.t99AllDone = clock(); // STEP 10: Output timing statistics double totaltime = (ts.t99AllDone-ts.t01ApplicationStart)*ts.dResolution; if (((totaltime > 1.0) || (CCmdLineArguments::GetShowTiming())) && (!CCmdLineArguments::GetIntegratedRun())) { double secondarycohoms = (ts.t30RationalsCountStart - ts.t10SecondarySeqsStart)*ts.dResolution; double rationalscount = (ts.t90ComputationsDone - ts.t30RationalsCountStart)*ts.dResolution; MSG_OUT(""); MSG_OUT(""); MSG_OUT("Application run took " << SecondsToTime(totaltime) << ", more precisely"); MSG_OUT(" " << SecondsToTime(secondarycohoms) << " for the computation of the secondary cohomology"); MSG_OUT(" " << SecondsToTime(rationalscount) << " for the counting of rational functions"); } CONSOLE_MSG_OUT(""); CONSOLE_MSG_OUT(" All done. Program run successfully completed."); CONSOLE_MSG_OUT(""); return 0; } cohomCalg-0.32/source/main.h000066400000000000000000000146011322050713700157310ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // main.h +-----------------------+ // // ====== | APPLICATION MAIN FILE | // // +-----------------------+ // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 31.03.2010 File created as main.h // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef INC_MAIN_H #define INC_MAIN_H #include #include #include #include #include //////////////////////////////////////////////////////////////////////////////////////////////////// // This is the main header file, which is included by all other source files. It contains a couple of // "helper" functions for the conversion of seconds to readable time, for counting and properly printing // of bitmasks. Furthermore, it also contains the CCmdLineArguments class, which allows access to the // command line parameters of the program. This header file also declares the primary output functions // (or rather macros) which are used throughout the program. // A couple of hard internal limits #define HARD_MAX_VERTICES 64 #define HARD_MAX_SRGENS 64 #define HARD_MAX_COHOMS 1024 // Yeah, I know, macros are evil... spare me the lecture #define X_COUNT_BITS16(___n_) (CBits::cBitsIn16Bits[___n_]) #define X_COUNT_BITS32(___n_) (CBits::cBitsIn16Bits[___n_ & 0xffffu] + CBits::cBitsIn16Bits[(___n_ >> 16) & 0xffffu]) #define X_COUNT_BITS64(___n_) (CBits::cBitsIn16Bits[___n_ & 0xffffu] + CBits::cBitsIn16Bits[(___n_ >> 16) & 0xffffu] + CBits::cBitsIn16Bits[(___n_ >> 32) & 0xffffu] + CBits::cBitsIn16Bits[(___n_ >> 48) & 0xffffu]) class CBits { private: // The bit buffer static std::vector cBitsIn16Bits; public: // Initialization static void InitBitCounter(); // Conversion and bit counting static std::string IntToBinary(uint64_t x, size_t digits); static std::string IntToBinary(uint64_t x); static inline unsigned int CountBits(uint16_t x) { return X_COUNT_BITS16(x); } static inline unsigned int CountBits(uint32_t x) { return X_COUNT_BITS32(x); } static inline unsigned int CountBits(uint64_t x) { return X_COUNT_BITS64(x); } }; // A couple of helper functions std::string SecondsToTime(clock_t secs); std::string SecondsToTime(double secs); std::string BytesToReadableSize(uint64_t bytes); //////////////////////////////////////////////////////////////////////////////////////////////////// class CCmdLineArguments { private: // Command line parameter values static std::string strCommand; static std::string strInputFileName; static int iVerboseLevel; static bool bShowTiming; static bool bShowBits; static bool bCheckSerre; static bool bMonomReduction; static bool bUseMonomFile; static bool bIntegratedRun; static std::string strAppendInput; static bool bMathematicaOutput; static std::string strMonomialFileName; static bool bMaxVertices; static int iMaxVertices; static bool bMaxSRgens; static int iMaxSRgens; static bool bMaxCohoms; static int iMaxCohoms; private: static void Clear(); static void PrintHelp(); public: // Primary parsing static bool ParseCmdLineArguments(int argc, char **argv); // Almost all command line variables are read-only static inline std::string GetInputFileName() { return strInputFileName; }; static inline int GetVerboseLevel() { return iVerboseLevel; }; static inline bool GetShowTiming() { return bShowTiming; }; static inline bool GetShowBits() { return bShowBits; }; static inline bool GetCheckSerre() { return bCheckSerre; }; static inline bool GetMonomReduction() { return bMonomReduction; }; static inline bool GetUseMonomFile() { return bUseMonomFile; }; static inline std::string GetAppendInput() { return strAppendInput; }; static inline bool GetMathematicaOutput() { return bMathematicaOutput; }; static inline bool GetIntegratedRun() { return bIntegratedRun; }; static inline std::string GetMonomialFileName() { return strMonomialFileName; }; static inline int GetMaxVertices() { if (bMaxVertices) return iMaxVertices; else return HARD_MAX_VERTICES; } static inline int GetMaxSRgens() { if (bMaxSRgens) return iMaxSRgens; else return HARD_MAX_SRGENS; } static inline int GetMaxCohoms() { if (bMaxCohoms) return iMaxCohoms; else return HARD_MAX_COHOMS; } // Only the monomial filename and usage can be changed static inline void SetMonomialFileName(std::string &filename) { strMonomialFileName = filename; }; static inline void SetUseMonomFile(bool status) { bUseMonomFile = status; }; }; //////////////////////////////////////////////////////////////////////////////////////////////////// // The primary output macros #define CONSOLE_OUT(msg) std::cerr << msg #define CONSOLE_MSG_OUT(msg) CONSOLE_OUT(msg << std::endl) #define STATUS_OUT(msg) CONSOLE_OUT("STATUS: " << msg << "\r") #define ERR_OUT_PLAIN(msg) CONSOLE_OUT(msg << std::endl) #define ERR_OUT(errmsg) ERR_OUT_PLAIN("ERROR: " << errmsg) #define WARN_OUT(errmsg) ERR_OUT_PLAIN("WARNING: " << errmsg) #define MSG_OUT_NOENDL(msg) std::cout << msg #define MSG_OUT(msg) MSG_OUT_NOENDL(msg << std::endl) #endif cohomCalg-0.32/source/platform.h000066400000000000000000000070611322050713700166330ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // platform.h +------------------------+ // // ========== | Cross platform handler | // // +------------------------+ // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 27.04.2010 File created as platform.h // // This file takes care of a couple of definitions and environment variables // // which are compiler and/or platform specific. // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef INC_PLATFORM_H #define INC_PLATFORM_H // NOTE: I've only checked this code on MSVS2010 and Ubuntu/gcc. // We define the command save_sprintf which is the ordinary sprintf string formatting command // but with an additional buffer length check which avoids the buffer overflow errors / security leaks // quite a number of C/C++ programs suffer from. // // Following the C99 standard, a new function snprintf was introduced to take care of this issue. // However, for god-knows-why Microsoft decided to use a different name, so we are using a define to // allow for further ingenious cross-platform problems with this... // // NOTE: You still have to include to use this function... #if defined(_MSC_VER) // MS compiler (Windows) #define safe_sprintf sprintf_s #define string_to_int64(__v_val_) _atoi64(__v_val_) #define WIN32_LEAN_AND_MEAN #include inline void SleepMilliSec(unsigned long ulMilliseconds) { Sleep(ulMilliseconds); } #elif defined (__GNUC__) // gcc compiler (Unix/Linux/MacOS) #define safe_sprintf snprintf #define string_to_int64(__v_val_) atoll(__v_val_) #include inline void SleepMilliSec(unsigned long ulMilliseconds) { struct timespec req = {0}; req.tv_sec = 0; req.tv_nsec = ulMilliseconds * 1000000L; nanosleep(&req, (struct timespec *) NULL); } #else #error Unrecognized compiler. #endif // Next we have a couple of platform variables, which are just for convenience output #if defined(_WIN32) #define APP_TARGET_OS "Windows" #elif defined(__unix__) #define APP_TARGET_OS "Linux/Unix" #elif (defined(__APPLE__) && defined(__MACH__)) #define APP_TARGET_OS "MacOS X" #else #define APP_TARGET_OS "Unrecognized OS" #endif #if (defined(_M_X64) || defined(__amd64__)) #define APP_ARCH "x86-64 / 64 bit" #elif (defined(_M_IA64)) #define APP_ARCH "ia64 (Itanium) / 64 bit" #elif (defined(_M_IX86) || defined (__i386__)) #define APP_ARCH "i386 / 32 bit" #else #define APP_ARCH "Unrecognized" #endif #endif cohomCalg-0.32/source/rationals.cpp000066400000000000000000001205671322050713700173450ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // rationals.cpp // // ============= // // // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 08.04.2010 File created as rationals.cpp // // Handles the counting of the rational functionsmology which ultimately // // yields a list of the relevant denominator monomials and their respective // // multiplicities. // // - 23.02.2010 Added multi-threading support for the computation of secondary sequences. // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include "rationals.h" #include "main.h" #include "platform.h" extern "C" { #include "polylib/polylib64.h" } using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////// string CCohomology::GetCohomologyGroupString(const vector &BundleGLSMcharges) { /* This static output function produces the string "H^i(A; O(2,3,2,4))" with the line bundle's divisor charges. */ char buf[32]; string strLine = "H^i(A; O("; for (size_t j=0; j 0) safe_sprintf(buf, sizeof(buf), ",%4d", (int) BundleGLSMcharges[j]); else safe_sprintf(buf, sizeof(buf), "%4d", (int) BundleGLSMcharges[0]); strLine += buf; } strLine += " ))"; return strLine; } string CCohomology::GetGroupDimensionsString(const std::vector &CohomologyDimensions) { /* This static output function produces the string "( 3, 2, 4, 5, 2)" of the cohomology group dimensions. */ char buf[32]; string strLine = "("; for (size_t i=0; i 0) safe_sprintf(buf, sizeof(buf), ",%4d", (int) CohomologyDimensions[i]); else safe_sprintf(buf, sizeof(buf), "%4d", (int) CohomologyDimensions[i]); strLine += buf; } strLine += " )"; return strLine; } string CCohomology::GetGroupDimensionsStringNoPadding(const std::vector &CohomologyDimensions) { /* This static output function produces the string "3,2,4,5,2" of the cohomology group dimensions without any padding as a comma-seperated list. */ char buf[32]; string strLine = ""; for (size_t i=0; i 0) safe_sprintf(buf, sizeof(buf), ",%d", (int) CohomologyDimensions[i]); else safe_sprintf(buf, sizeof(buf), "%d", (int) CohomologyDimensions[i]); strLine += buf; } return strLine; } string CCohomology::GetCohomologyString(const vector &BundleGLSMcharges, const vector &CohomologyDimensions) { /* This static output function naively connects the cohomology group string the cohomology group dimension string, yielding "H^i(A; O(2,3,2,4)) = (3,2,4,5,2)" */ return GetCohomologyGroupString(BundleGLSMcharges) + " = " + GetGroupDimensionsString(CohomologyDimensions); } string CCohomology::GetCohomologyString() const { /* This member function checks if the number of possible cohomology group dimensions is ambiguous or could not be determined at all and yields the appropiate output. */ if (IsAmbiguous()) { if (IsNotDetermined()) return CCohomology::GetCohomologyGroupString(BundleGLSMch) + " could not be determined"; else { char buf[64]; safe_sprintf(buf, sizeof(buf), " has %d ambiguous solutions", (int) CohomologyDims.size()); return CCohomology::GetCohomologyGroupString(BundleGLSMch) + buf; } } else return CCohomology::GetCohomologyString(BundleGLSMch, CohomologyDims[0]); } void CCohomology::PrintFullCohomologyMonomialMap(const CInternalData &id, bool ShortList) const { /* This wrapper function outputs the full list of contributing monomials, including the secondary/remnant cohomology factors and computed numbers rational functions. Basically, it completely shows the individual contributions to the cohomology group dimensions. */ MSG_OUT("Monomials, cohomology factors and rational functions of " << GetCohomologyString()); monoms.PrintMonomialList(id, true, true, ShortList); } void CCohomology::PrintCohomologies(const vector &cohomologies) { /* This function outputs a list of all cohomology group dimensions supplied by the argument vector. In case of ambiguous results, each possibility is listed. */ MSG_OUT("Cohomology dimensions:"); MSG_OUT("======================"); // Run through the entire argument vector size_t nCohoms = cohomologies.size(); for (size_t k=0; k 0) line = string(offset.length(), ' '); else line.assign(offset); MSG_OUT(line << " = " << GetGroupDimensionsString(cohomologies[k].CohomologyDims[i])); } } MSG_OUT(""); } } void CCohomology::SummarizeCohomologies(const vector &cohomologies) { /* This function outputs a list of lists of all cohomology group dimensions supplied by the argument vector. In case of ambiguous results an error message is places, i.e. it only treats non-ambiguous cohomology groups as "valid" output. */ // Run through the entire argument vector size_t nCohoms = cohomologies.size(); bool bAllRight = true; string out = ""; for (size_t k=0; k0) out.append(","); out.append("{{"); out.append(GetGroupDimensionsStringNoPadding(cohomologies[k].CohomologyDims[0])); out.append("},{"); size_t nContribDemons = cohomologies[k].ContributingDenoms.size(); for (size_t r=0; r 0) out.append(","); out.append(cohomologies[k].ContributingDenoms[r]); } out.append("}}"); } // Produce output if (bAllRight) MSG_OUT_NOENDL("{True," << out << "}"); else MSG_OUT_NOENDL("{False,\"Ambiguous cohomologies\""); } void CCohomology::GetMathematicaCohomologiesList(const vector &cohomologies, string &out) { /* This function translates the results of the computations, i.e. the dimensions of the line bundle sheaf cohomology groups into a form easily comparable to the condensed output of the legacy Mathematica 7 script. */ // First put out the 'LinebundleCohomologyOf' commands, which basically correspond to our // 'ambientcohom' commands and specify the line bundle divisor's charges. out = " (*Requested cohomology commands:*)\n"; char buf[64]; size_t nCohoms = cohomologies.size(); for (size_t k=0; k0) out += ","; safe_sprintf(buf, sizeof(buf), "%d", (int) cohomologies[k].BundleGLSMch[i]); out += buf; } out += "}];\n"; } // Next a list of lists containing the computed cohomology dimensions out += " ResultingCohomologies = {"; for (size_t k=0; k0) out += ","; out += "{"; if (cohomologies[k].IsAmbiguous()) { if (cohomologies[k].IsNotDetermined()) out += "-1 (*not determined*)"; else out += "-1 (*ambiguous*)"; } else { for (size_t i=0; i0) out += ","; safe_sprintf(buf, sizeof(buf), "%d", (int) cohomologies[k].CohomologyDims[0][i]); out += buf; } } out += "}"; } out += "}"; } //////////////////////////////////////////////////////////////////////////////////////////////////// void StringRemoveSpaces(string &stringIn) { size_t pos = 0; bool spacesLeft = true; while (spacesLeft) { pos = stringIn.find(" "); if(pos != string::npos) stringIn.erase(pos, 1); else spacesLeft = false; } } void CRationals::PrintPolyLibConstraintMatrix(const CInternalData &id, void *m) { /* This function prints the equalities and inequalities encoded in a PolyLib matrix structure, which is used in the debug output at the highest verbose level. */ Matrix *Mat = (Matrix *) m; char buf[128]; string tmp, cureqn, mathematica; MSG_OUT(" Condition matrix has " << Mat->NbRows << " rows x " << Mat->NbColumns << " columns"); if ((Mat->NbRows > 0) && (Mat->NbColumns > 0)) { // Run through all rows of the matrix for (unsigned int i=0; iNbRows; i++) { safe_sprintf(buf, sizeof(buf), " line %2d: ", (int) i+1); tmp = buf; // Clear the current equation buffer cureqn.clear(); if (i>0) mathematica += ","; // Check if we have an equality or inequality if (Mat->p[i][0] == 0) { // equality tmp += "eq: "; for (unsigned int j=1; jNbColumns-1; j++) { if (Mat->p[i][j] == 0) safe_sprintf(buf, sizeof(buf), " "); else { if (Mat->p[i][j] == 1) safe_sprintf(buf, sizeof(buf), "+ %-7s ", id.GetInternalCoordData()[j-1].strName.c_str()); else if (Mat->p[i][j] == -1) safe_sprintf(buf, sizeof(buf), "- %-7s ", id.GetInternalCoordData()[j-1].strName.c_str()); else if (Mat->p[i][j] < 0) safe_sprintf(buf, sizeof(buf), "- %3ld*%-3s ", (long int) -Mat->p[i][j], id.GetInternalCoordData()[j-1].strName.c_str()); else safe_sprintf(buf, sizeof(buf), "+ %3ld*%-3s ", (long int) Mat->p[i][j], id.GetInternalCoordData()[j-1].strName.c_str()); } cureqn += buf; } safe_sprintf(buf, sizeof(buf), " == %3ld", -(long int) Mat->p[i][Mat->NbColumns-1]); cureqn += buf; } else { // inquality tmp += "ineq: "; for (unsigned int j=1; jNbColumns-1; j++) { if (Mat->p[i][j] == 0) safe_sprintf(buf, sizeof(buf), " "); else { if (Mat->p[i][j] == 1) safe_sprintf(buf, sizeof(buf), "+ %-7s ", id.GetInternalCoordData()[j-1].strName.c_str()); else if (Mat->p[i][j] == -1) safe_sprintf(buf, sizeof(buf), "- %-7s ", id.GetInternalCoordData()[j-1].strName.c_str()); else if (Mat->p[i][j] < 0) safe_sprintf(buf, sizeof(buf), "- %3ld*%-3s ", (long int) -Mat->p[i][j], id.GetInternalCoordData()[j-1].strName.c_str()); else safe_sprintf(buf, sizeof(buf), "+ %3ld*%-3s ", (long int) Mat->p[i][j], id.GetInternalCoordData()[j-1].strName.c_str()); } cureqn += buf; } safe_sprintf(buf, sizeof(buf), " >= %3ld", -(long int) Mat->p[i][Mat->NbColumns-1]); cureqn += buf; } tmp += cureqn; StringRemoveSpaces(cureqn); mathematica += cureqn; MSG_OUT(tmp); } tmp = "Reduce[{"; tmp += mathematica; tmp += "},Integers]"; MSG_OUT(" Mathematica cmd: " << tmp << ""); } } struct CountRationalsData { const CInternalData &id; //const vector &coords; const i32vec64 &TargetDivisor; uint32_t &out; uint64_t monomial; //size_t numCoords; //size_t numGLSMch; bool bReturn; size_t worker_id; CountRationalsData(const CInternalData &init_InternalData, uint64_t init_monomial, const i32vec64 &init_TargetDivisor, uint32_t &init_out, size_t init_numCoords, size_t init_numGLSMch, size_t init_worker_id) : id(init_InternalData), TargetDivisor(init_TargetDivisor), out(init_out) { monomial = init_monomial; //numCoords = init_numCoords; //numGLSMch = init_numGLSMch; worker_id = init_worker_id; bReturn = false; } }; void CountRationalFunctionsWorker(void *p_dat) { /* This is the main function for the counting of rational functions. If practically serves as the wrapper from our data format to the matrix input format required by the PolyLib. */ CountRationalsData *crd = (CountRationalsData *) p_dat; if (!crd) { ERR_OUT("Internet pointer error in monomial counting worker."); return; } const vector &coords = crd->id.GetInternalCoordData(); size_t numCoords = crd->id.GetNumCoordinates(); size_t numGLSMch = crd->id.GetNumGLSMch(); // First we need to create a matrix in the PolyLib format Matrix *P = Matrix_Alloc((unsigned int) (numCoords + numGLSMch), (unsigned int) (numCoords + 2)); if (!P) { crd->bReturn = false; ERR_OUT("Internal allocation error in monomial counting worker."); return; } const size_t lastcol = numCoords + 2 - 1; i32vec64 constraint_vals; constraint_vals.Clear(); for (size_t j=0; jTargetDivisor.x[j]; // Now insert the appropiate values and signs into the matrix elements for (size_t i=0; imonomial & coords[i].liVar) { // Coordinate is in denominator for (size_t j=0; jp[j][i+1], - coords[i].GLSMch.x[j]); constraint_vals.x[j] += coords[i].GLSMch.x[j]; } } else { // Coordinate is in nominator for (size_t j=0; jp[j][i+1], coords[i].GLSMch.x[j]); } } // The first column of the matrix selects the type of the condition for (size_t j=0; jp[j][0], 0); // Put the final target charges in last column value_set_si(P->p[j][lastcol], -constraint_vals.x[j]); } // And finally we require the positivity condition on all variables for (size_t i=0; ip[numGLSMch+i][0], 1); value_set_si(P->p[numGLSMch+i][i+1], 1); } // The "universe matrix" is required by PolyLib (no idea what for....) Matrix *C = Matrix_Alloc(1, 2); value_set_si(C->p[0][0],1); value_set_si(C->p[0][1],1); /* THIS VERBOSE OUTPUT WAS SHIFTED BEHIND THE COMPUTATION if (ccmdlinearguments::getverboselevel() >= 5) { string tmp = "verbose level 6: rationals counting condition matrix for " + id.int64tomonomial(monomial) + ":"; msg_out(tmp); string tmp2(tmp.length(), '-'); msg_out(tmp2); printpolylibconstraintmatrix(id, p); } */ // Compute a polynomial approximation of the Ehrhart polynomial and evaluate Matrix *Validity_Lattice = 0; Enumeration *e = Ehrhart_Quick_Apx(P, C, &Validity_Lattice, 0); // Now we need to retrieve the actually interesting data, which is at the moment completely // idiotically 'solved'. Why is there no function to simply extract the constant part of an e_value? // Furtunately, this does not present a bottleneck to the computational speed, but it's ugly like hell... long long int val = 0; if (e) { // Brrr.... temporary files for data retrieval... Oh - and we can't use tmpfile() because // Microsoft in their infinite wisdom "broke" the command in Windows Vista / 7, as the default // destination is only accessible in Administrator-mode... char tmpfilename[64]; safe_sprintf(tmpfilename, sizeof(tmpfilename), "__x_TMP_polylib_file_%dy.tmp", (int) crd->worker_id); //const char *tmpfilename = "__x_TMP_polylib_file_y.tmp"; FILE *points_val = fopen(tmpfilename, "w+"); if (!points_val) { ERR_OUT("Could not open temporary file for computation."); crd->bReturn = false; return; } for (Enumeration *en=e; en; en = en->next) print_evalue(points_val, &en->EP, NULL); rewind(points_val); char buf[16]; int readres = fscanf(points_val, "%c %lld", buf, &val); fclose(points_val); remove(tmpfilename); if (readres < 2) { ERR_OUT("INTERNAL: Failed to scan the PolyLib result."); crd->bReturn = false; return; } } else { WARN_OUT("Counting of the rationals erroneous - is your input geometry valid?"); // During a normal program run, we have the warning output, but in integration mode we treat this as a serious error if (CCmdLineArguments::GetVerboseLevel() < -5) crd->bReturn = false; return; } // The variable 'val' now holds our precious number of rational functions // A result -1 indicates some serious error in the constraints and therefore in // the counting of the rational functions / points in the corresponding polyhedron if (val < 0) { ERR_OUT("INTERNAL: Invalid number of rational functions computed."); crd->bReturn = false; return; } // Debug Output /* if (CCmdLineArguments::GetVerboseLevel() >= 5) { string tmp; bool bPrint = true; if (val != 0) tmp = "verbose level 5: rationals counting condition matrix for " + crd->id.Int64ToMonomial(monomial) + ":"; else if (CCmdLineArguments::GetVerboseLevel() >= 6) tmp = "verbose level 6: rationals counting condition matrix for " + id.Int64ToMonomial(monomial) + ":"; else bPrint = false; if (bPrint) { MSG_OUT(tmp); string tmp2(tmp.length(), '-'); MSG_OUT(tmp2); PrintPolyLibConstraintMatrix(id, P); MSG_OUT(" Yields value: " << val); MSG_OUT(""); } }*/ // Clean up stuff Matrix_Free(C); Matrix_Free(P); while (e) { free_evalue_refs(&(e->EP)); Polyhedron_Free(e->ValidityDomain); Enumeration *en = e->next; free(e); e = en; } // Store the computed value crd->out = (uint32_t) val; crd->bReturn = true; } std::vector< std::pair > CRationals::WorkersList; //#define USE_MULTITHREADED_MONOMIAL_COUNTING // It appears that the PolyLib is NOT thread-safe (causing a weird kind of heap corruption), therefore for the moment we are stuck with a single-threaded evaluation of the rational counting... :-( #ifdef USE_MULTITHREADED_MONOMIAL_COUNTING bool CRationals::CountRationalFctns(const CInternalData &id, uint64_t monomial, const i32vec64 &TargetDivisor, uint32_t &out) { CountRationalsData *crd = new CountRationalsData(id, monomial, TargetDivisor, out, id.GetInternalCoordData().size(), id.GetNumGLSMch(), WorkersList.size()); if (!crd) return false; tthread::thread *t = new tthread::thread(CountRationalFunctionsWorker, (void*) crd); WorkersList.push_back(make_pair(t, crd)); return true; } bool CRationals::WaitForAllWorkersFinish() { while (WorkersList.size() > 0) { WorkersList[0].first->join(); if (!(((CountRationalsData *) WorkersList[0].second)->bReturn)) return false; delete WorkersList[0].second; // free the thread data memory delete WorkersList[0].first; // delete the thread WorkersList.erase(WorkersList.begin()); } return true; } #else bool CRationals::CountRationalFctns(const CInternalData &id, uint64_t monomial, const i32vec64 &TargetDivisor, uint32_t &out) { CountRationalsData crd = CountRationalsData(id, monomial, TargetDivisor, out, id.GetInternalCoordData().size(), id.GetNumGLSMch(), 0); CountRationalFunctionsWorker(&crd); return crd.bReturn; } bool CRationals::WaitForAllWorkersFinish() { return true; } #endif void SplitAddToCohomVector(vector &inout, const vector &split, uint32_t rational, size_t dim) { /* This internal helper functions carries out the branching required for the ultimate attempt to resolve the ambiguous contribution. It takes a vector of possible cohomology group dimensions and a vector of fixes for a particular contribution. Then all those different candidates are applied to all possibilities, which lets the list of all possibilities grow pretty fast. Currently, this is a somewhat of a big problem, as it represents the only real "memory hole" in the entire program. */ size_t inoutlen = inout.size(); size_t splitlen = split.size(); ui32vec64 newcohom; newcohom.Clear(); for (size_t i=0; i &out_cohomology, vector &out_contribcohoms) { /* Now, this is the big fat mama of all functions. It takes the monomial list and the line bundle's divisor charges as input and computes the corresponding dimensions of the cohomology. Now, we have to keep in mind that there still may be ambiguous contributions left over. First we simple count the number of rational functions for all those ambiguous cases. If all goes well, none of these troublesome monomials actually contributes for real - we can then compute the uniquely determined contributions and are all done. This is the nice case. The second attempt is to compute the ambiguous contributions for the Serre-dual divisor and hope that all of these are actually zero - then we can simply take the dimensions from the Serre-dual and are done. In the worst case, neither the "normal" nor "Serre-dual" ambiguities vanish all at the same time. Then we have to take the ugly branch approach, where we compute the set of ALL possible cohomology group configurations both for the "normal" and Serre-dual case and check if there are compatible pairs. This may ultimately lead to the ambiguous or undeterminant cases. Luckily, this does not happen very often.... */ size_t dim = id.GetDimension(); out_cohomology.clear(); out_cohomology.resize(dim+1); out_contribcohoms.clear(); // Now compute the ambiguous contributions - if any is non-zero we have to take more involved steps bool bIsUnique = true; for (map::iterator it = ml.ambiguous_monoms.begin(); it != ml.ambiguous_monoms.end(); it++) if (!CountRationalFctns(id, it->first, TargetDivisor, it->second.nRationals)) return false; if (!WaitForAllWorkersFinish()) return false; for (map::iterator it = ml.ambiguous_monoms.begin(); it != ml.ambiguous_monoms.end(); it++) { if (it->second.nRationals != 0) bIsUnique = false; } if (bIsUnique) { // So, there a no contributing non-ambiguous factors - Whohoo! // Then compute the unique ones and output for (map::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) if (!CountRationalFctns(id, it->first, TargetDivisor, it->second.nRationals)) return false; if (!WaitForAllWorkersFinish()) return false; for (map::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) { out_cohomology[it->second.Cohom.nGroup] += it->second.Cohom.nFactor * it->second.nRationals; if (it->second.nRationals != 0) { char buf[32]; string tmp = "{"; safe_sprintf(buf, sizeof(buf), "%d,", it->second.Cohom.nGroup); tmp += buf; safe_sprintf(buf, sizeof(buf), "%d*", it->second.Cohom.nFactor); tmp += buf; tmp += id.Int64ToCoordProduct(it->first); tmp += "}"; out_contribcohoms.push_back(tmp); } } return true; } ///////////////////////////////////////////////////////// // If we have a non-unique situation, compute the rationals for the Serre dual target divisor i32vec64 vDualCharges; id.GetCanonicalDivisor(vDualCharges); size_t numGLSMch = id.GetNumGLSMch(); for (size_t i=0; i::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) if (!CountRationalFctns(id, it->first, vDualCharges, it->second.nRationalsDual)) return false; if (!WaitForAllWorkersFinish()) return false; bool bDualIsUnique = true; for (map::iterator it = ml.ambiguous_monoms.begin(); it != ml.ambiguous_monoms.end(); it++) if (!CountRationalFctns(id, it->first, vDualCharges, it->second.nRationalsDual)) return false; if (!WaitForAllWorkersFinish()) return false; for (map::iterator it = ml.ambiguous_monoms.begin(); it != ml.ambiguous_monoms.end(); it++) { if (it->second.nRationalsDual != 0) bDualIsUnique = false; } if (bDualIsUnique) { // So, there a no contributing non-ambiguous factors in the Serre dual - (little Whohoo!) // Compute the unique cases of the Serre-dual, and translate to the "normal" case for output for (map::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) { out_cohomology[dim-it->second.Cohom.nGroup] += it->second.Cohom.nFactor * it->second.nRationalsDual; if (it->second.nRationalsDual != 0) { char buf[32]; safe_sprintf(buf, sizeof(buf), "%d*", it->second.Cohom.nFactor); string tmp = buf; tmp += id.Int64ToCoordProduct(it->first); out_contribcohoms.push_back(tmp); } } return true; } ///////////////////////////////////////////////////////// // At this point, it'll get complicated - BOTH the "normal" and "dual" cases are NOT unique... // First compute the needed unique normal rationals (those are still left open, when we reach here) for (map::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) if (!CountRationalFctns(id, it->first, TargetDivisor, it->second.nRationals)) return false; if (!WaitForAllWorkersFinish()) return false; // Now everything is computed (unique/ambiguous contribution for the "normal" and Serre-dual), so we have to // figure out how it all fits together. // The basic idea is to compute ALL potential output cohomologies, which arise from the ambiguos contributions // both on the "normal" and "dual" side and then consider the "intersection" of those cohomologies. Yes, this is // very ugly, but at the moment, it seems to be the best we can do... // Compute the unique part of all cohomologies, this is basically the starting point for our "ambiguity branching". // For speedup, we now use fixed width array of integers... it's somewhat memory wasteful, but considerably faster ui32vec64 cohom_dummy, dualcohom_dummy; cohom_dummy.Clear(); dualcohom_dummy.Clear(); for (map::iterator it = ml.unique_monoms.begin(); it != ml.unique_monoms.end(); it++) { cohom_dummy.x[it->second.Cohom.nGroup] += it->second.Cohom.nFactor * it->second.nRationals; dualcohom_dummy.x[it->second.Cohom.nGroup] += it->second.Cohom.nFactor * it->second.nRationalsDual; } vector cohoms(1, cohom_dummy); vector dualcohoms(1, dualcohom_dummy); // Now loop through the ambiguous part and branch to all possibilities // ############################################## // ### THIS IS EXTREMELY MEMORY EXPENSIVE!!!! ### ...and a potential memory hole! IMPROVE! // ############################################## for (map::iterator it = ml.ambiguous_monoms.begin(); it != ml.ambiguous_monoms.end(); it++) { size_t curCohomsSize = cohoms.size(); size_t curDualCohomsSize = dualcohoms.size(); // We put the actual branching and check for the looming std::bad_alloc exception, which comes up when we run // out of memory. Least we can do in this case is to provide some output of how far we got, but unfortunately, // this ends our business... try { if (it->second.nRationals != 0) { SplitAddToCohomVector(cohoms, it->second.vCohoms, it->second.nRationals, dim); // Is this safe? ###################### //char buf[32]; //safe_sprintf(buf, "%ud*", it->second.Cohom.nFactor); string tmp = "(*Ambiguous*)"; tmp += id.Int64ToCoordProduct(it->first); out_contribcohoms.push_back(tmp); } curCohomsSize = cohoms.size(); if (it->second.nRationalsDual != 0) SplitAddToCohomVector(dualcohoms, it->second.vCohoms, it->second.nRationalsDual, dim); } catch(std::bad_alloc &er) { ERR_OUT("RUNTIME: " << er.what()); ERR_OUT_PLAIN("Due to the ambiguity branching there are at least " << curCohomsSize << " \"normal\" cohomologies"); ERR_OUT_PLAIN("and " << curDualCohomsSize << " Serre-dual cohomologies, consuming " << BytesToReadableSize((curCohomsSize + curDualCohomsSize) * sizeof(ui32vec64)) << " memory."); ERR_OUT_PLAIN(""); if (sizeof(void *) < 8) { ERR_OUT_PLAIN("You could try the same computation again using the 64-bit version of the program."); ERR_OUT_PLAIN(""); } return false; } } // OK, the hard part is now done, apparently, we did not run out of memory... size_t numcohoms = cohoms.size(); size_t numdualcohoms = dualcohoms.size(); if (CCmdLineArguments::GetVerboseLevel() >= 2) { MSG_OUT("Verbose level 2: Serre dualization information:"); MSG_OUT("-----------------------------------------------"); MSG_OUT(" Due to the ambiguous contributions to the requested cohomologies the following branching occurred:"); MSG_OUT(" - \"normal\" configurations: " << numcohoms << " (" << BytesToReadableSize(numcohoms * sizeof(ui32vec64)) << " memory)"); MSG_OUT(" - Serre-dual configurations: " << numdualcohoms << " (" << BytesToReadableSize(numdualcohoms * sizeof(ui32vec64)) << " memory)"); MSG_OUT(""); } // Now find the "Serre-dual intersection" of the computed branching sets vector stablecohoms; for (size_t i=0; i &out_cohomology, vector &out_contribcohoms) { /* This funcion takes care of the optional Serre-duality check, which is however only carried out in case that the results from the "normal" cohomology are unique. Otherwise the Serre-duality is already used in the determination of the result cohomologies. */ if (!ComputeCohomology(id, ml, TargetDivisor, out_cohomology, out_contribcohoms)) return false; // Check if the Serre-duality check is activated... if (CCmdLineArguments::GetCheckSerre()) { size_t dim = id.GetDimension(); if (out_cohomology.size() == dim+1) { // A unique cohomology was identified, so consider the Serre-dual divisor i32vec64 SerreDualDivisor; id.GetCanonicalDivisor(SerreDualDivisor); size_t numGLSMch = id.GetNumGLSMch(); for (size_t i=0; i dual_cohom; vector dual_contribcohoms; if (!ComputeCohomology(id, ml, SerreDualDivisor, dual_cohom, dual_contribcohoms)) return false; if (dual_cohom.size() == dim+1) { // If the Serre-dual cohomology could also be determined uniquely, compare for (size_t i=0; i<=dim; i++) { if (out_cohomology[i] != dual_cohom[dim-i]) { // Print a message, if the cohomology does not correspond properly.. vector div; div.assign(TargetDivisor.x, TargetDivisor.x + numGLSMch); MSG_OUT("WARNING: The req. cohomology " << CCohomology::GetCohomologyString(div, out_cohomology) << " does not correspond"); div.assign(SerreDualDivisor.x, SerreDualDivisor.x + numGLSMch); MSG_OUT("to the Serre dual cohomology " << CCohomology::GetCohomologyString(div, dual_cohom) << "."); return false; } } } else { vector div; div.assign(SerreDualDivisor.x, SerreDualDivisor.x + numGLSMch); MSG_OUT("WARNING: The Serre dual cohomology " << CCohomology::GetCohomologyGroupString(div) << " could not"); MSG_OUT("uniquely be determined. Please check this case manually."); return false; } } else { vector div; div.assign(TargetDivisor.x, TargetDivisor.x + id.GetNumGLSMch()); MSG_OUT("WARNING: The cohomology " << CCohomology::GetCohomologyGroupString(div) << " could not"); MSG_OUT("uniquely be determined. Please check this case manually."); return false; } } return true; } bool CRationals::ComputeCohomologies(const CInternalData &id, const CMonomialsList &ml, vector &out_cohomologies) { /* This function makes a batch run through all the requested line bundle divisors specified by the input data. The computed data is then stored in an output vector of CCohomology classes. */ // Clear the output vector out_cohomologies.clear(); size_t numGLSMch = id.GetNumGLSMch(); size_t numCohoms = id.GetNumTargetDivisors(); // Run through all the requested line bundle divisors for (size_t i=0; i cohomdims; if (!ComputeCohomologyAndSerreDual(id, curcohom.monoms, curtargetdiv, cohomdims, curcohom.ContributingDenoms)) return false; // Sort the data properly into the CCohomology structure size_t numentries = cohomdims.size(); size_t dim = id.GetDimension(); if (numentries == dim+1) { // This indicates a non-ambiguous result curcohom.CohomologyDims.push_back(cohomdims); } else if (numentries >= dim+2) { if (numentries == (cohomdims[dim+1] * (dim+1) + 1)) { // So we have cohomdims[dim+1] results vector tmp(cohomdims.begin(), cohomdims.begin() + dim + 1); curcohom.CohomologyDims.push_back(tmp); for (size_t j=1; j #include #include #include #include "iohandler.h" #include "secondarycohom.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // In this file we take the list of monomials and secondary cohomology factors determined earlier // and count the number of rational functions with the appropiate variables in the numerator and // denominator. More precisely, this problem can be reformulated as a underdetermined linear system // of equations, which is solved over the positive integers. Therefore the counting of rational // functions is equivalent to counting the number of integer lattice points inside a corresponding // polyhedron determined by those constraints. We rely on the freely available PolyLib library for // the task of counting those integers, which makes use of the theory of Ehrhard polynomials. // // As for the data structures used in this class: The class CCohomology is the "result" class, which // contains the requested charges of the divisor determining the line bundle O(D) again and of // course the computed dimensions of the cohomology classes H^i(X;O(D)). // // The actual computations are carried out in the CRationals class, which basically serves as a // wrapper for the PolyLib and translates our data format appropiately. class CCohomology { friend class CRationals; private: // The output data std::vector BundleGLSMch; // determines divisor D of line bundle O(D) std::vector > CohomologyDims; // contains (candidate) dimensions of H^i(X;O(D)) std::vector ContributingDenoms; // contains a vector of contributing denominator monomials CMonomialsList monoms; // contains all monomials and their contributions to the results public: // Output functions static std::string GetCohomologyGroupString(const std::vector &BundleGLSMcharges); static std::string GetGroupDimensionsString(const std::vector &CohomologyDimensions); static std::string GetGroupDimensionsStringNoPadding(const std::vector &CohomologyDimensions); static std::string GetCohomologyString(const std::vector &BundleGLSMcharges, const std::vector &CohomologyDimensions); std::string GetCohomologyString() const; void PrintFullCohomologyMonomialMap(const CInternalData &id, bool ShortList) const; static void PrintCohomologies(const std::vector &cohomologies); static void SummarizeCohomologies(const std::vector &cohomologies); static void GetMathematicaCohomologiesList(const std::vector &cohomologies, std::string &out); // Data retrieval inline bool IsAmbiguous() const { return (CohomologyDims.size() != 1); }; inline bool IsNotDetermined() const { return (CohomologyDims.size() < 1); }; }; class CRationals { private: static std::vector< std::pair > WorkersList; // contains the list of worker threads; static bool WaitForAllWorkersFinish(); private: static void PrintPolyLibConstraintMatrix(const CInternalData &id, void *m); static bool CountRationalFctns(const CInternalData &id, uint64_t monomial, const i32vec64 &TargetDivisor, uint32_t &out); static bool ComputeCohomology(const CInternalData &id, CMonomialsList &ml, const i32vec64 &TargetDivisor, std::vector &out_cohomology, std::vector &out_contribcohoms); static bool ComputeCohomologyAndSerreDual(const CInternalData &id, CMonomialsList &ml, const i32vec64 &TargetDivisor, std::vector &out_cohomology, std::vector &out_contribcohoms); public: static bool ComputeCohomologies(const CInternalData &id, const CMonomialsList &ml, std::vector &out_cohomologies); }; #endifcohomCalg-0.32/source/secondarycohom.cpp000066400000000000000000000743561322050713700203720ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // secondarycohom.cpp // // ================== // // // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 04.04.2010 File created as secondarycohom.cpp // // Handles the computations of the secondary cohomology which ultimately // // yields a list of the relevant denominator monomials and their respective // // multiplicities. // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include "secondarycohom.h" #include "main.h" #include "platform.h" using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////// #define TRAVERSE_SMP_THRESHOLD 8192 #define INSERTION_BUFFERSIZE (1024*1024) // Size of the insertion buffer window length #define MONOMIAL_MAP_MAX_FULL_OUTPUT 250 // Max. number of monomials printed with shorten_output //////////////////////////////////////////////////////////////////////////////////////////////////// void CSecondaryCohomology::Clear() { insertion_prototype.Clear(0); unique_monoms.clear(); min_c_deg = 0; max_c_deg = 0; len_c_deg = 0; monoms.Clear(); } CSecondaryCohomology::CSecondaryCohomology() { Clear(); } string CSecondaryCohomology::Print2ndSeq(const MonomData &mondat, int32_t min_out, int32_t max_out) { /* This output function prints the C-degrees of a secondary/remnant sequence in the range C^min_out to C^max_out. The output range values are checked for validity. Zero C-degrees in this list are replaced by spaces to make tabular output possible. */ string strTmp; char buf[64]; // Check the C-degree range if (min_out < min_c_deg) min_out = min_c_deg; if (max_out > max_c_deg) max_out = max_c_deg; // Loop through the range and print any non-zero C-degree, otherwise spaces for (int32_t j=min_out; j<=max_out; j++) { safe_sprintf(buf, sizeof(buf), "C^%d=%lld ", (int) j, (long long int) mondat.c[j-min_c_deg]); if (mondat.c[j-min_c_deg] != 0) strTmp += buf; else strTmp += string(strlen(buf), ' '); } return strTmp; } string CSecondaryCohomology::Print2ndSeq(const MonomData &mondat) { /* This output functions prints the C-degrees of the secondary/remnant sequence starting with the first and ending with the last non-zero C-degree. Note that this is NOT suitable for tabular output. */ size_t seq_start, seq_end; if (GetIntSequenceStartEnd(mondat.c, seq_start, seq_end)) return Print2ndSeq(mondat, (int32_t) seq_start+min_c_deg, (int32_t) seq_end+min_c_deg); else return "zero sequence"; } string CSecondaryCohomology::PrintMonomialWith2ndSeq(const CInternalData &id, MonomMap::const_iterator monom, int32_t min_out, int32_t max_out) { /* This output function prints the monomial (and potentially the internal bit-mask), determines the length of the non-zero part of the C-degrees and prints the range of C-degrees from min_out to max_out. */ char buf[64]; size_t seq_start = 0, seq_end = 0; safe_sprintf(buf, sizeof(buf), " with %4ld total (len %2d): ", (long int) monom->second.num, (int) (seq_end - seq_start + 1)); // Check if we have a zero sequence if (GetIntSequenceStartEnd(monom->second.c, seq_start, seq_end)) return id.Int64ToMonomialPadded(monom->first) + buf + Print2ndSeq(monom->second, min_out, max_out); else return id.Int64ToMonomialPadded(monom->first) + buf + "zero sequence"; } void CSecondaryCohomology::PrintMonomMap(const CInternalData &id, bool shorten_output) { /* This output function prints the entire monomial map in tabular form. Only the necessary part of the secondary/remnant sequences is printed. Furthermore an automatic shortening of excessive large outputs can be activated. */ // Determine the smallest and highest non-trivial c-degree in the entire list int32_t min_deg = len_c_deg; int32_t max_deg = 0; for (MonomMap::const_iterator set_iter = unique_monoms.begin(); set_iter != unique_monoms.end(); set_iter++) { int32_t i; // Check FORWARDS from the beginning for (i = 0; isecond.c[i] != 0) { min_deg = i; break; } } // Check BACKWARDS from the end for (i = len_c_deg-1; i >= max_deg; i--) { if (set_iter->second.c[i] != 0) { max_deg = i+1; break; } } } min_deg += min_c_deg; max_deg += min_c_deg; // Now print the monomials size_t numelems = unique_monoms.size(); MonomMap::const_iterator set_iter = unique_monoms.begin(); MSG_OUT("There are " << numelems << " elements in the monomial map (using " << (len_c_deg * sizeof(int64_t) * numelems + sizeof(int64_t) + sizeof(uint64_t)) << " bytes of memory):"); for (size_t i=0; i MONOMIAL_MAP_MAX_FULL_OUTPUT) { if ((i >= 50) && (i < numelems - 50)) { MSG_OUT("(.....)"); i = numelems - 50; } } } } } bool CSecondaryCohomology::IsSequenceExact(const vector &seq, size_t &pos_out) const { /* This computational helper function checks a arbitrary length sequence for naive exactness. It also computes the naive kernel via the alternating sum method from the end and put out a potential repair position in case of non-exactness. */ size_t seqlen = seq.size(); if (seqlen > 0) { int64_t kernel = seq[seqlen-1]; for (size_t i=0; i &buffer, MonomMap &unique_monoms, size_t max_run, MonomData &insertion_prototype, int min_c_deg) { /* This internal helper function flushes the monomial insertion buffer. As the monomials are kept in an associate list, it helps to presort the monomials, such that the number of look-ups in the associative index is minimized. */ if (max_run > 0) { // Sort the insertion buffer sort(buffer.begin(), buffer.begin()+max_run); // The first one we have to get by hand pair ret = unique_monoms.insert(pair(buffer[0].monomial, insertion_prototype)); ret.first->second.num++; ret.first->second.c[buffer[0].nka - min_c_deg]++; // Now loop through the buffer for (size_t i=1; ifirst != buffer[i].monomial) ret = unique_monoms.insert(pair(buffer[i].monomial, insertion_prototype)); // Increase data ret.first->second.num++; ret.first->second.c[buffer[i].nka - min_c_deg]++; } } } struct TraverseWorkerData { unsigned int worker_id; MonomMap unique_monoms; vector vBuffer; uint64_t window_start, window_end, window_width, buffer_runs; MonomData *insertion_prototype; int32_t min_c_deg; vector SRunion[4]; vector *Status; }; void TraverseWorkerFunction(void *p_dat) { TraverseWorkerData *wd = (TraverseWorkerData *) p_dat; FastMonomialData *pbuf; // This is the expensive main loop for (uint64_t buffer_loop = 0; buffer_loop < wd->buffer_runs; buffer_loop++) { uint64_t window_start = wd->window_start + buffer_loop * INSERTION_BUFFERSIZE; uint64_t window_end = window_start + INSERTION_BUFFERSIZE - 1; if (window_end > wd->window_end) window_end = wd->window_end; pbuf = &wd->vBuffer[0]; for (uint64_t sr_combi=window_start; sr_combi<=window_end; sr_combi++, pbuf++) { uint64_t genunion = wd->SRunion[0][sr_combi & 0xffffu] | wd->SRunion[1][(sr_combi >> 16) & 0xffffu] | wd->SRunion[2][(sr_combi >> 32) & 0xffffu] | wd->SRunion[3][(sr_combi >> 48) & 0xffffu]; pbuf->monomial = genunion; pbuf->nka = CBits::CountBits(genunion) - CBits::CountBits(sr_combi); } SortAndFlushBuffer(wd->vBuffer, wd->unique_monoms, (size_t) (window_end-window_start + 1), *wd->insertion_prototype, wd->min_c_deg); // Show some progress status output (*wd->Status)[wd->worker_id] = (double) (window_end - wd->window_start) / wd->window_width; } } struct StatusWorkerData { vector *status; clock_t start; bool Run; }; void StatusOutputWorker(void *p_dat) { StatusWorkerData *wstat = (StatusWorkerData *) p_dat; if (!wstat) return; while (wstat->Run) { double dTotal = 0.0; for (size_t i=0; istatus->size(); i++) dTotal += (*wstat->status)[i]; dTotal /= wstat->status->size(); double dSecElapsed = (double) (clock() - wstat->start) / CLOCKS_PER_SEC; double dSecRemaining = (dTotal > 0.0) ? ((1.0 - dTotal) / dTotal) * dSecElapsed : 1.0; dTotal *= 100; char buf[64]; safe_sprintf(buf, sizeof(buf), "%.2f", dTotal); CONSOLE_OUT(" " << buf << "% completed (" << SecondsToTime((clock_t) dSecRemaining) << " remaining)..."); CONSOLE_OUT(" \r"); SleepMilliSec(100); } delete wstat; } bool CSecondaryCohomology::TraverseSRpowerset(const CInternalData &id) { /* This is the main powerset traverse function, which loops through the entire range of subsets of the Stanley-Reisner generators and computes the corresponding monomial unions as well as the secondary/remnant sequences. */ // As an enormous speedup, we are using a union buffer analogous to the counting of the bits // Since we are dealing with 64 bit variables, we are using 4 bit buffer for 16-bit blocks, such // that the buffer size is 4*8*64 KB = 2 MBr. Note that this buffer has to be allocated // dynamically, otherwise the MS VS compiler throws a stack overflow in debug mode. // Prepare and setup the worker threads unsigned int numWorkers = thread::hardware_concurrency(); if (numWorkers == 0) numWorkers = 4; // Compute the maximal SR bitmask value and the number of buffer runs size_t number_of_srgens = id.GetNumSRgens(); uint64_t sr_powerset_max = (0x1ull << number_of_srgens); if (sr_powerset_max < TRAVERSE_SMP_THRESHOLD) numWorkers = 1; uint64_t sr_powerset_max_per_worker = sr_powerset_max / numWorkers; // Allocate the insertion buffer (typically around 12-16 MB) TraverseWorkerData *workerdat = new TraverseWorkerData[numWorkers]; vector paddedSRvec(id.GetSRgens()); paddedSRvec.resize(64, 0); vector WorkerStatus; WorkerStatus.resize(numWorkers, 0.0); for (unsigned int k = 0; k < numWorkers; k++) { workerdat[k].vBuffer.resize(INSERTION_BUFFERSIZE); workerdat[k].window_start = k*sr_powerset_max_per_worker; workerdat[k].worker_id = k; workerdat[k].window_end = (k+1)*sr_powerset_max_per_worker - 1; if (k==numWorkers-1) workerdat[k].window_end = sr_powerset_max - 1; workerdat[k].window_width = workerdat[k].window_end - workerdat[k].window_start + 1; workerdat[k].buffer_runs = workerdat[k].window_width / INSERTION_BUFFERSIZE; if (workerdat[k].window_width % INSERTION_BUFFERSIZE != 0) workerdat[k].buffer_runs++; workerdat[k].insertion_prototype = &insertion_prototype; workerdat[k].min_c_deg = min_c_deg; workerdat[k].Status = &WorkerStatus; // Init the worker buffer for (size_t i=0; i<4; i++) { workerdat[k].SRunion[i].resize(0x1u << 16); for (size_t j=0; j<(0x1u << 16); j++) { uint64_t combi = j << (i*16); uint64_t genunion = 0; for (size_t k=0; k<16; k++) { if (combi & (0x1ull << (k + i*16))) genunion |= paddedSRvec[k + i*16]; } workerdat[k].SRunion[i][j] = genunion; } } } paddedSRvec.clear(); // Start the workers vector worker_threads; for (size_t k = 0; kRun = true; wstat->status = &WorkerStatus; wstat->start = clock(); thread *stat = new thread(StatusOutputWorker, wstat); // Wait for the threads to complete... for (size_t k = 0; kjoin(); delete worker_threads[k]; } wstat->Run = false; // Piece together the individually generated data unique_monoms.clear(); for (size_t k = 0; k ret = unique_monoms.insert(pair(it->first, it->second)); if (ret.second==false) { size_t chain_len = it->second.c.size(); ret.first->second.num += it->second.num; for (size_t r = 0; r < chain_len; r++) ret.first->second.c[r] += it->second.c[r]; } it++; } } CONSOLE_OUT(string(75, ' ') << "\r"); return true; } bool CSecondaryCohomology::Compute2ndCohomFromTrivialSequences() { /* After generating the secondary/remnant sequences, the secondary/remnant "cohomology" has to be computed from this data. However, lacking a proper description of the mappings one has to take a couple of assumptions and employ the Serre-duality to resolve a couple of ambiguities. For now, we are taking a two-step scan through the entire range of the computed monomials, where in the first one we are simply removing the trivial cases: If only a single number is not equal to 0, the sequence is non-exact, but the remnant cohomology is obvious. Furthermore, we remove all obviously exact sequence, which is quickly checked by computing the alternating sum. */ MonomMap::iterator cur = unique_monoms.begin(); while (cur != unique_monoms.end()) { if (cur->second.num == 1) { // Take care of a sequence containing just a single value 1 for (size_t i=0; isecond.c[i] != 0) { if (!monoms.AddUniqueContribution(cur->first, (int32_t) i+min_c_deg, 1)) return false; break; } } unique_monoms.erase(cur++); } else { // Compute the alternating sum of the secondary/remnant sequence int64_t altersum = 0; for (size_t i=0; isecond.c[i]; else altersum -= cur->second.c[i]; } if (altersum == 0) { // Sequence is exact, so discard unique_monoms.erase(cur++); } else { // Sequence is non-exact & non-trivial, so keep the altersum value AND compute the sequence length uint32_t seq_start = len_c_deg; for (uint32_t i=0; isecond.c[i] != 0) { seq_start = i; break; } } uint32_t seq_end = 0; for (uint32_t i=len_c_deg-1; i>=0; i--) { if (cur->second.c[i] != 0) { seq_end = i; break; } } uint32_t seq_len = seq_end - seq_start + 1; if (seq_len < 1) { // This would imply a complete zero sequence! ERR_OUT("Internal error while computing secondary cohomology."); return false; } // Take care of special length switch (seq_len) { case 1: // Sequence has a single non-zero value if (!monoms.AddUniqueContribution(cur->first, seq_start+min_c_deg, (uint32_t) cur->second.c[seq_start])) return false; break; default: // Otherwise, store the alternating sum value cur->second.altersum = altersum; cur++; } } } } return true; } bool CSecondaryCohomology::Compute2ndCohomFromSequences(const CInternalData &id) { /* In the second part of the secondary/remnant cohomology computation, we are taking care of the non-trivial cases remaining. In principle this procedure is suitable for all cases, however, it is somewhat more expensive, therefore the first run to remove the "obvious" secondary/remnant sequences. The basic idea is to "repair" the secondary sequence in the C-degree range of 0...dim in order to make it exact again. The repair value and its possible positions then yield the cohomology of this sequence. On the other hand, this is ultimately the origin of the troublesome ambiguities, which can only be properly removed by understanding the mappings between the C-degrees. */ // The temporary "repair" storage vector fixes; // Loop through all remaining monomials in the list size_t variety_dim = id.GetDimension(); MonomMap::iterator cur = unique_monoms.begin(); while (cur != unique_monoms.end()) { if (cur->second.altersum != 0) { uint64_t absaltersum = abs(cur->second.altersum); fixes.clear(); // Search for the the C-degrees in range, which is >= the absolute value of the // alternating sum of the sequence, which measures the "total failure" exactness for (unsigned int j=0; j<=variety_dim; j++) { if (cur->second.c[j-min_c_deg] >= absaltersum) { // Now descrease the value of this position by the absolute value of the // alternating sum and check, if this makes the sequence exact vector tempseq(cur->second.c); tempseq[j-min_c_deg] -= absaltersum; size_t dummy; if (IsSequenceExact(tempseq, dummy)) { // If exactness can be restored this way, the cohomology group at the // respective repair position has the dimension of the absolute value // of the alternating sum - we therefore store this fix as a candidate CohomContrib newfix; newfix.nGroup = j; newfix.nFactor = (uint32_t) absaltersum; fixes.push_back(newfix); } } } // Check if we have obtained at least one "repair" value / secondary cohomology group size_t num_fixes = fixes.size(); if (num_fixes < 1) { // This should NEVER happen, but is potentially possible, as the // repair range is restricted to 0...dim instead of the total sequence ERR_OUT("FATAL: Could no properly resolve the exactness of a secondary sequence"); MSG_OUT(Print2ndSeq(cur->second)); return false; } // Now, do we have multi-contributions or not? if (num_fixes > 1) { // Ambiguous contribution we have to take care of lateron if (!monoms.AddAmbiguousContribution(cur->first, fixes)) return false; } else { // Unique contribution... that's fine if (!monoms.AddUniqueContribution(cur->first, fixes[0].nGroup, fixes[0].nFactor)) return false; } } unique_monoms.erase(cur++); } // At this point there should be no more monomials left, but check anyway if (unique_monoms.size() > 0) { ERR_OUT("Some monomials could not be properly processed."); return false; } // Clear up allocated buffer space of the monomials (should not be too much...) unique_monoms.clear(); return true; } bool CSecondaryCohomology::Perform2ndCohomSerreReduction(const CInternalData &id) { /* Now we have to take care of the ambiguos contributions derive from from restoring the exactness of the secondary/remnant sequence. The idea is to check if the complement monomial can already be found in the list of unique contributions, because this would obviously correspond to a Serre-dual contribution. If so, we can turn the ambiguous contribution in an unique one. However, this does not solve every case. In the second scan, we check if from the remaining ambiguous contributions an ambiguous complement monomial can be found, whose ambiguous contributions might be just right to identify a unique one. Unfortunately, this still leaves some cases behind, which we have to deal with in the actual computation of the cohomology dimensions. */ size_t num_ambiguous_before = monoms.ambiguous_monoms.size(); uint64_t complete_union = id.GetCompleteUnion(); uint32_t variety_dim = (uint32_t) id.GetDimension(); // Scan through all ambiguous contributions and check if the complement monomial is unique for (map::iterator ita = monoms.ambiguous_monoms.begin(); ita != monoms.ambiguous_monoms.end(); ) { uint64_t monomial = ita->first; uint64_t complement = (~monomial) & complete_union; // First try to find a UNIQUE complement partner map::const_iterator uc = monoms.unique_monoms.find(complement); if (uc != monoms.unique_monoms.end()) { // Check if this complement partner has a compatible contribution, which would identify // a correct contribution of our ambiguous case uint32_t group_suggestion = variety_dim - uc->second.Cohom.nGroup; size_t numcandidates = ita->second.vCohoms.size(); bool bFoundCandidate = false; size_t candidate = 0; for (size_t i=0; isecond.vCohoms[i].nGroup == group_suggestion) { bFoundCandidate = true; candidate = i; break; } } if (bFoundCandidate) { // So the unique complement monomial exists and identifies the correct contribution UniqueContribData newunique; newunique.Cohom.nGroup = group_suggestion; newunique.Cohom.nFactor = ita->second.vCohoms[candidate].nFactor; newunique.nRationals = ita->second.nRationals; newunique.nRationalsDual = ita->second.nRationalsDual; // Now add the identified unique one pair::iterator, bool> nu = monoms.unique_monoms.insert(pair(monomial, newunique)); if (nu.second == false) { ERR_OUT("The monomial " << id.Int64ToMonomial(monomial) << " already exists in the unique monomials list!"); return false; } // Remove the ambiguous contribution and start the scan again at the beginning monoms.ambiguous_monoms.erase(ita); ita = monoms.ambiguous_monoms.begin(); } else ita++; } else { // If no UNIQUE partner can be found, try to find an ambiguous partner... map::iterator ita2 = monoms.ambiguous_monoms.find(complement); if (ita2 != monoms.ambiguous_monoms.end()) { // OK, we have a partner. Then try to find a "Serre-dual" intersection of the potential contributions vector intersection; size_t cohoms_ita = ita->second.vCohoms.size(); size_t cohoms_ita2 = ita2->second.vCohoms.size(); intersection.clear(); for (size_t i=0; isecond.vCohoms[i].nGroup == (variety_dim - ita2->second.vCohoms[j].nGroup)) { // Store each such intersection of complement contributions intersection.push_back(ita->second.vCohoms[i]); intersection.push_back(ita2->second.vCohoms[j]); } } } // Check if the intersection was able to uniquely identify a contribution cohomology group if (intersection.size() == 2) { // Apparently, we could uniquely resolve the issue // Add the "normal" monomial to the list of unique ones UniqueContribData newunique; newunique.Cohom.nGroup = intersection[0].nGroup; newunique.Cohom.nFactor = intersection[0].nFactor; newunique.nRationals = ita->second.nRationals; newunique.nRationalsDual = ita->second.nRationalsDual; pair::iterator, bool> ret = monoms.unique_monoms.insert(std::pair(monomial, newunique)); // Add the "complement" partner monomial to the list of unique ones newunique.Cohom.nGroup = intersection[1].nGroup; newunique.Cohom.nFactor = intersection[1].nFactor; newunique.nRationals = ita2->second.nRationals; newunique.nRationalsDual = ita2->second.nRationalsDual; pair::iterator, bool> ret2 = monoms.unique_monoms.insert(pair(complement, newunique)); if ((ret.second == false) || (ret2.second == false)) { ERR_OUT("INTERNAL: Could not add resolved ambiguous monomials to unique monomials list."); return false; } // Delete both ambiguous cases from the ambiguous list & start the scan from the beginning monoms.ambiguous_monoms.erase(monomial); monoms.ambiguous_monoms.erase(complement); ita = monoms.ambiguous_monoms.begin(); } else ita++; } else { // CONSOLE_MSG_OUT("WARNING: The Serre duality check could not entirely resolve all monomials."); ita++; } } } // In the best case scenario, we could resolve all ambiguous cases and turn them into // uniques. Unfortunately, this is not always the case. size_t num_ambiguous_after = monoms.ambiguous_monoms.size(); if (num_ambiguous_after > 0) { WARN_OUT("The Serre dualization reduction was unable to uniquely resolve " << num_ambiguous_after << " of the original " << num_ambiguous_before << " ambiguous monoms."); } return true; } cohomCalg-0.32/source/secondarycohom.h000066400000000000000000000075451322050713700200330ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // secondarycohom.h // // ================ // // // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 04.04.2010 File created as secondarycohom.cpp // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef INC_SECONDARYCOHOM_H #define INC_SECONDARYCOHOM_H #include #include #include #include #include #include #include #include "iohandler.h" //////////////////////////////////////////////////////////////////////////////////////////////////// // This first computational part of the program houses the engine that traverses the powerset of the // Stanley-Reisner ideal generators. Using 64-bit integer bit-masks, which are specified in the // CInternalData handler, is basically runs a loop through all possible combinations and successively // builds up the secondary/remnant sequences. After the loop, the cohomology of those sequences is // determined by considering the alternating sum - which is a quick exactness test - and attempting // exactness repairs in the range of C^0 to C^dim of the variety, which ultimately determine the // secondary cohomology. All those steps are handled by the CSecondaryCohomology class. typedef struct { uint64_t num; int64_t altersum; std::vector c; public: inline void Clear(size_t len) { num = 0; altersum = 0; c.clear(); if (len>0) c.resize(len, 0); }; } MonomData; typedef std::map MonomMap; class CSecondaryCohomology { private: // Secondary sequences data MonomData insertion_prototype; MonomMap unique_monoms; int32_t min_c_deg; int32_t max_c_deg; uint32_t len_c_deg; CMonomialsList monoms; private: // Internal computations bool IsSequenceExact(const std::vector &seq, size_t &pos_out) const; // Internal output functions std::string Print2ndSeq(const MonomData &mondat, int32_t min_out, int32_t max_out); std::string Print2ndSeq(const MonomData &mondat); std::string PrintMonomialWith2ndSeq(const CInternalData &id, MonomMap::const_iterator monom, int min_out, int max_out); void Clear(); public: CSecondaryCohomology(); // The primary SR powerset traverse functions (EXECUTE IN ORDER!) bool Init2ndSequences(const CInternalData &id); // STEP 1 bool TraverseSRpowerset(const CInternalData &id); // STEP 2 bool Compute2ndCohomFromTrivialSequences(); // STEP 3 bool Compute2ndCohomFromSequences(const CInternalData &id); // STEP 4 bool Perform2ndCohomSerreReduction(const CInternalData &id); // STEP 5 // Monomial list access inline CMonomialsList &GetMonomialsList() { return monoms; }; // Output function void PrintMonomMap(const CInternalData &id, bool shorten_output); }; #endif cohomCalg-0.32/source/tokenizer.cpp000066400000000000000000000317141322050713700173560ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // tokenizer.cpp +----------------------+ // // ============= | generic TOKENIZER | // // +----------------------+ // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 04.06.2009 File created as tokenizer.cpp // // Contains a simple generic tokenizer class to read in a string and break // // it down to its tokens for further parsing. // // - 17.04.2010 Changed WORD tokens from alpha to alphanums // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #include #include #include #include #include #include #include "platform.h" #include "tokenizer.h" #include "main.h" using namespace std; //////////////////////////////////////////////////////////////////////////////////////////////////// // This macro (yeah, I know... spare me the lecture...) determines which characters we interpret as // whitespaces, i.e. spaces, tabs, newline and carriage returns #define IS_WHITESPACE(__x_) ((__x_ == ' ') || (__x_ == '\t') || (__x_ == '\n') || (__x_ == '\r')) //////////////////////////////////////////////////////////////////////////////////////////////////// bool operator!=(const CToken &lhs, const CToken &rhs) { /* The operator function handles the comparison of two tokens. We do NOT compare the InputOffset, i.e. just the data and type of the tokens has to be equal. */ if (lhs.tkType != rhs.tkType) return true; // Have same type, but do they have same data? switch (lhs.tkType) { case TOKEN_SYMBOL: return (lhs.symbol != rhs.symbol); case TOKEN_INTEGER: return (lhs.integer != rhs.integer); case TOKEN_STRING: case TOKEN_WORD: return (lhs.str.compare(rhs.str) != 0); case TOKEN_END: case TOKEN_ERR: return false; } // We should never reach here... return false; } bool CToken::GetBool(bool &bBool) const { /* As there is no fundamental boolean token, we try to interpret the current token as boolean. Therefore, we consider the following values: true --> WORD: true (case-inv.) false --> WORD: false (case-inv.) STRING: true (case-inv.) --> STRING: false (case-inv.) INTEGER: non-zero value --> INTEGER: zero value Tokens of any other type cannot be converted to a boolean value and therefore return false. */ switch (tkType) { case TOKEN_WORD: case TOKEN_STRING: // We try to recognize either 'true' or 'false' from the string-like tokens { if (str.length() > 5) return false; string strTemp = str; transform(strTemp.begin(), strTemp.end(), strTemp.begin(), (int (*) (int)) tolower); if ((strTemp.compare("false") == 0) || (strTemp.compare("0") == 0)) { bBool = false; return true; } else if ((strTemp.compare("true") == 0) || (strTemp.compare("1") == 0)) { bBool = true; return true; } return false; } case TOKEN_INTEGER: // From numerical tokens, we recognize the non-zero values as true bBool = (integer != 0); return true; case TOKEN_SYMBOL: case TOKEN_END: case TOKEN_ERR: // All other tokens cannot be converted to boolean value return false; } return false; } string CToken::GetTokenString() const { /* This function converts a token into human readable form, i.e. it prints the token type and the token value. */ char buf[128]; switch (tkType) { case TOKEN_SYMBOL: safe_sprintf(buf, sizeof(buf), "SYMBOL: %c (0x%x)", symbol, (int) symbol); break; case TOKEN_WORD: safe_sprintf(buf, sizeof(buf), "WORD: %s", str.c_str()); break; case TOKEN_INTEGER: safe_sprintf(buf, sizeof(buf), "INTEGER: %ld", (long int) integer); break; case TOKEN_STRING: safe_sprintf(buf, sizeof(buf), "STRING: %s", str.c_str()); break; case TOKEN_END: safe_sprintf(buf, sizeof(buf), "END"); break; case TOKEN_ERR: safe_sprintf(buf, sizeof(buf), "ERR"); break; default: safe_sprintf(buf, sizeof(buf), "--INVALID TOKEN--"); break; } return buf; } //////////////////////////////////////////////////////////////////////////////////////////////////// CTokenizer::CTokenizer() { Clear(); } void CTokenizer::Clear() { pInputLine = NULL; pCurChar = NULL; iCurToken = 0; vTokens.clear(); } bool CTokenizer::ReadWord() { /* This internal function tries to read a WORD type token at the current position of the input data. A WORD token is specified to be any non-seperated alphanumeric sequence of characters not starting with a number. */ // Determine the length of the alphanumeric sequence if (!isalpha(pCurChar[0])) return false; ptrdiff_t len=1; while (isalnum(pCurChar[len])) len++; // Create a duplicate of the WORD token string string strTmp; strTmp.assign(pCurChar, len); // Create a new token and add to token list CToken TmpToken; TmpToken.StoreWord(strTmp.c_str(), pCurChar - pInputLine); vTokens.push_back(TmpToken); pCurChar += len; return true; } bool CTokenizer::ReadInteger() { /* This internal function tries to read a non-negative INTEGER type token at the current position of the input data. Note that the calling function has to take care of a potential minus sign in from of this number. If the number does not fit into signed 64-bit variable, the return value is false. */ // We determine the length of the numeric sequence if (!isdigit(pCurChar[0])) return false; ptrdiff_t len=1; while (isdigit(pCurChar[len])) len++; // Convert the number int64_t iTmp = string_to_int64(pCurChar); if (errno == ERANGE) { // In case the number is larger than 64 bit return false; } // Create a new token and add to the token list CToken TmpToken; TmpToken.StoreInteger(iTmp, pCurChar - pInputLine); vTokens.push_back(TmpToken); pCurChar += len; return true; } bool CTokenizer::ReadString() { /* This internal function tries to read a STRING type token, which is any sequence starting and ending with a '"'. Therefore it currently not possible to have a '"' character in the string. */ // Determine the length of the string if (pCurChar[0] != '"') return false; int i=1; while ((pCurChar[i] != 0) && (pCurChar[i] != '"')) i++; if (pCurChar[i] != '"') return false; // Create a duplicate of the string string strTmp; strTmp.assign(pCurChar, 1, i-1); // Create a new token and add to the token list CToken TmpToken; TmpToken.StoreString(strTmp.c_str(), pCurChar - pInputLine); vTokens.push_back(TmpToken); pCurChar += i+1; return true; } bool CTokenizer::ReadSymbol() { /* This function tries to read in a symbol character. If a '-' character is found it tries to read in a subsequent integer and applies the sign. Otherwise the character is simply stored as a symbol. Note that this function does NOT check if the character is of alphanumeric type, which may allow for a different interpretation. Therefore, this function should be the fallback option wenn determining the token type. */ const char c = pCurChar[0]; pCurChar++; switch (c) { case '-': // If we have a minus sign, look for an integer if (ReadInteger()) { // If there is indeed an integer (which is now stored at the last position of // the token list) flip the sign const size_t numTokens = GetNumberOfTokens(); int64_t num = 0; vTokens[numTokens-1].GetInteger(num); vTokens[numTokens-1].StoreInteger(-num, pCurChar - pInputLine - 1); break; } default: // If we have no minus sign or cannot find an integer, simply store the character // as a SYMBOL token CToken TmpToken; TmpToken.StoreSymbol(c, pCurChar - pInputLine - 1); vTokens.push_back(TmpToken); } return true; } bool CTokenizer::ReadNextToken() { /* This function advances the current character position to the next value which is not considered to be a whitespace and then calls the indivual Read*** functions in order to properly recognize the token. */ // First skip all whitespace SkipWhitespaces(); // End of string? if (pCurChar[0] == 0) return true; // Then we read the next token if (pCurChar[0] == '"') return ReadString(); if (isdigit(pCurChar[0])) return ReadInteger(); if (isalpha(pCurChar[0])) return ReadWord(); // Note that the ReadSymbol must come last, because everything can be interpreted as an // ordinary SYMBOL, which is simply a character. return ReadSymbol(); } void CTokenizer::SkipWhitespaces() { /* Skips whitespace characters (as defined by the macro at the top of the file) until either the end of the string of a non-whitespace character is reached. */ while ((pCurChar[0] != 0) && IS_WHITESPACE(pCurChar[0])) pCurChar++; } bool CTokenizer::TokenizeInputString(const string &input) { /* This function clears the tokenizer of all prior data and starts the process of breaking up the input string into individual tokens. Note that the input string is not changed, nor is copy of the original string kept. */ // Note that the usage of the STL class string ensures that we truly have terminating // zero character, i.e. this class is reasonably safe pInputLine = input.c_str(); pCurChar = pInputLine; // Read tokens until we hit the end of the string while (pCurChar[0] != 0) { if (!ReadNextToken()) return false; } // Add and END token CToken EndToken; EndToken.SetEndToken(pCurChar - pInputLine); vTokens.push_back(EndToken); // Set the current token to start iCurToken = 0; // Clear the "critical" variables for safety pInputLine = NULL; pCurChar = NULL; // OutputTokenList(); // Just for debugging return true; } void CTokenizer::OutputTokenList() const // Just for debugging { /* This output function prints a full list of all tokens, which might be useful for debugging or writing parsing functions. */ const size_t numTokens = GetNumberOfTokens(); MSG_OUT("There are " << numTokens << " tokens in the input string:"); for (size_t i=0; i &out_list, char cBeginDelim, char cSeperator, char cEndDelim) { /* This function is a semi-parser function, which simplifies the recurring task of reading in symbol-seperated integer lists like e.g. comma-seperated bracket-delimited vectors (2,3,1). */ char c; int64_t integer; // First we expect a SYMBOL containing the cBeginDelim character if (!GetNextToken().GetSymbol(c)) return false; if (c != cBeginDelim) return false; // The we loop as long as we find and INTEGER followed by the cSeperator character SYMBOL while (GetNextToken().GetInteger(integer)) { out_list.push_back(integer); if (!GetNextToken().GetSymbol(c)) return false; if (c == cEndDelim) break; if (c != cSeperator) return false; } // Finally, there should be a SYMBOL containing the cEndDelim character if (c != cEndDelim) return false; return true; } cohomCalg-0.32/source/tokenizer.h000066400000000000000000000132271322050713700170220ustar00rootroot00000000000000//////////////////////////////////////////////////////////////////////////////////////////////////// // // // tokenizer.h +----------------------+ // // =========== | generic TOKENIZER | // // +----------------------+ // // Code: Benjamin Jurke, http://benjaminjurke.net // // // //////////////////////////////////////////////////////////////////////////////////////////////////// // // // File history: // // - 10.06.2009 File created as tokenizer.h // // // //////////////////////////////////////////////////////////////////////////////////////////////////// #ifndef INC_TOKENIZER_H #define INC_TOKENIZER_H #include #include #include #include //////////////////////////////////////////////////////////////////////////////////////////////////// // The basic goal of a tokenizer is to break down some input string (i.e. a simple series of characters) // down into individual tokens (like strings, numbers, special symbols), which can then be easily used // for further processing. // // The CToken class corresponds to the individual "tokens" to which the tokenizer breaks down the input // string. enum MyTokenType { // Data content TOKEN_SYMBOL = 1, TOKEN_WORD = 2, TOKEN_INTEGER = 3, TOKEN_STRING = 4, // Control tokens TOKEN_END = 0, TOKEN_ERR = -1 }; class CToken { friend class CTokenizer; private: MyTokenType tkType; ptrdiff_t iInputOffset; // Data variables char symbol; int64_t integer; std::string str; private: inline CToken() { tkType = TOKEN_ERR; iInputOffset = 0; symbol = 0; integer = 0; }; // Data storage/insertion inline void StoreSymbol(char cSymbol, ptrdiff_t offset) { symbol = cSymbol; tkType = TOKEN_SYMBOL; iInputOffset = offset; }; inline void StoreWord(const char *strWord, ptrdiff_t offset) { str = strWord; tkType = TOKEN_WORD; iInputOffset = offset; }; inline void StoreInteger(int64_t iInteger, ptrdiff_t offset) { integer = iInteger; tkType = TOKEN_INTEGER; iInputOffset = offset; }; inline void StoreString(const char *strString, ptrdiff_t offset) { str = strString; tkType = TOKEN_STRING; iInputOffset = offset; }; inline void SetEndToken(ptrdiff_t offset) { tkType = TOKEN_END; iInputOffset = offset; }; public: // Comparision operator friend bool operator!=(const CToken &lhs, const CToken &rhs); friend inline bool operator==(const CToken &lhs, const CToken &rhs) { return (!(lhs != rhs)); }; // Type and control structures retrival inline MyTokenType WhatType() const { return tkType; }; inline bool IsEndToken() const { return (WhatType() == TOKEN_END); } inline ptrdiff_t GetInputOffset() const { return iInputOffset; } // Data retrival inline bool GetSymbol(char &cSymbol) const { if (tkType == TOKEN_SYMBOL) { cSymbol = symbol; return true; } return false; }; inline bool GetWord(std::string &strWord) const { if (tkType == TOKEN_WORD) { strWord = str; return true; } return false; }; inline bool GetInteger(int64_t &iInteger) const { if (tkType == TOKEN_INTEGER) { iInteger = integer; return true; } return false; }; inline bool GetString(std::string &strString) const { if (tkType == TOKEN_STRING) { strString = str; return true; } return false; }; bool GetBool(bool &bBool) const; // For debugging purposes std::string GetTokenString() const; }; //////////////////////////////////////////////////////////////////////////////////////////////////// class CTokenizer { private: // Data variables const char *pInputLine; const char *pCurChar; std::vector vTokens; size_t iCurToken; private: // Internal functions for reading tokens bool ReadWord(); bool ReadInteger(); bool ReadString(); bool ReadSymbol(); bool ReadNextToken(); void SkipWhitespaces(); public: CTokenizer(); void Clear(); // Data retrieval inline size_t GetNumberOfTokens() const { return vTokens.size(); }; inline size_t GetCurTokenIndex() const { return iCurToken; }; inline const CToken &GetToken(size_t index) const { return vTokens.at(index); }; inline const CToken &GetCurToken() const { return GetToken(iCurToken); }; inline const CToken &GetNextToken() { return GetToken(iCurToken++); }; // Note that GetNextToken POST-increments, inline const CToken &GetPrevToken() { return GetToken(--iCurToken); }; // whereas GetPrevToken PRE-decrements! bool GetIntegerList(std::vector &out_list, char cBeginDelim = '(', char cSeperator = ',', char cEndDelim = ')'); // Output functions void OutputTokenList() const; // Main function to initialize the tokenizer bool TokenizeInputString(const std::string &input); }; #endif