├── euler.otf ├── .gitignore ├── tests ├── find_missing.sh ├── ssty.ltx ├── ssty.tex ├── type-euler.tex ├── accents.ltx ├── accents.tex ├── test.ltx ├── test.tex └── amsmath-testmath.ltx ├── README.md ├── utils ├── ssty.py ├── gui_utils.py └── math_parameters.lua ├── Makefile ├── OFL.txt └── OFL-FAQ.txt /euler.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aliftype/euler-otf/HEAD/euler.otf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.log 3 | *.tuc 4 | *.tui 5 | *.tuo 6 | *.tmp 7 | *.mp 8 | *.pdf 9 | *.aux 10 | tmp 11 | -------------------------------------------------------------------------------- /tests/find_missing.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | TESTFIL=$1 3 | grep "Missing character" "$TESTFIL.log" | sort | sed -e 's/\(^.......\)/\[32m\1\[0m/' -e 's/\(There is no \)\(.\)/\1\[31m\2\[0m/' -e "s/Missing character: //" 4 | -------------------------------------------------------------------------------- /tests/ssty.ltx: -------------------------------------------------------------------------------- 1 | \documentclass{minimal} 2 | 3 | \usepackage{unicode-math} 4 | \setmathfont[math-style=upright]{Neo Euler} 5 | 6 | \begin{document} 7 | 8 | test $x=2a^{2a^{2a}} {1\over2}$ test 9 | 10 | \end{document} 11 | -------------------------------------------------------------------------------- /tests/ssty.tex: -------------------------------------------------------------------------------- 1 | \usetypescriptfile [type-euler] 2 | \usetypescript [euler] 3 | \setupbodyfont [euler] 4 | \setupmathematics [lcgreek=normal,ucgreek=normal] 5 | \setupheader [state=empty] 6 | 7 | \starttext 8 | 9 | test $x=2a^{2a^{2a}} {1\over2}$ test 10 | 11 | \stoptext 12 | -------------------------------------------------------------------------------- /tests/type-euler.tex: -------------------------------------------------------------------------------- 1 | \startmode[mkiv] 2 | \starttypescript [math] [euler][name] 3 | \definefontsynonym[MathRoman][name:Neo Euler] [features=math\mathsizesuffix] 4 | \stoptypescript 5 | \stopmode 6 | 7 | \starttypescript[euler] 8 | \definetypeface [euler][rm][serif] [palatino] [default] 9 | \definetypeface [euler][tt][mono] [modern] [default][rscale=auto] 10 | \definetypeface [euler][mm][math] [euler] [default][rscale=auto] 11 | \stoptypescript 12 | -------------------------------------------------------------------------------- /tests/accents.ltx: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | 3 | \usepackage{unicode-math} 4 | \setmathfont[math-style=upright]{Neo Euler} 5 | 6 | \begin{document} 7 | 8 | \obeylines 9 | acute $\acute a$ 10 | grave $\grave a$ 11 | ddot $\ddot a$ 12 | tilde $\tilde a$ 13 | mathring $\mathring a$ 14 | bar $\bar a$ 15 | breve $\breve a$ 16 | check $\check a$ 17 | hat $\hat a$ 18 | vec $\vec a$ 19 | dot $\dot a$ 20 | widetilde $\widetilde a$ 21 | widehat $\widehat a$ 22 | 23 | \end{document} 24 | -------------------------------------------------------------------------------- /tests/accents.tex: -------------------------------------------------------------------------------- 1 | \usetypescriptfile [type-euler] 2 | \usetypescript [euler] 3 | \setupbodyfont [euler] 4 | \setupmathematics [lcgreek=normal,ucgreek=normal] 5 | \setupheader [state=empty] 6 | 7 | \starttext 8 | \startlines 9 | acute $\acute a$ 10 | grave $\grave a$ 11 | ddot $\ddot a$ 12 | tilde $\tilde a$ 13 | mathring $\mathring a$ 14 | bar $\bar a$ 15 | breve $\breve a$ 16 | check $\check a$ 17 | hat $\hat a$ 18 | vec $\vec a$ 19 | dot $\dot a$ 20 | widetilde $\widetilde a$ 21 | widehat $\widehat a$ 22 | \stoplines 23 | \stoptext 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Update: this project is abandoned, the repository is left for achælogical 2 | purposes.** 3 | 4 | Our goal is to create an OpenType MATH-enabled font euler.otf, by 5 | combining the existing Euler math fonts with new glyphs from Hermann 6 | Zapf and adding MATH table information. 7 | 8 | The MATH table work is almost done, and initial glyph review by Zapf 9 | have been conducted and implemented, see 10 | http://tug.org/TUGboat/Articles/tb29-2/tb92hagen-euler.pdf and 11 | http://river-valley.tv/reshaping-euler-a-collaboration-with-hermann-zapf/ 12 | for more details about the review process. We are planning for another 13 | review before the first official beta. 14 | -------------------------------------------------------------------------------- /utils/ssty.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import fontforge 3 | import sys 4 | 5 | fnt = fontforge.open(sys.argv[1]) 6 | fnt.selection.select(("ranges",None),"uni0021","uniF6BE") 7 | glyphs = fnt.selection.byGlyphs 8 | 9 | for glf in glyphs: 10 | ssty1 = fnt.createChar(-1,glf.glyphname+".ssty1") 11 | ssty2 = fnt.createChar(-1,glf.glyphname+".ssty2") 12 | if ssty1.isWorthOutputting() and ssty2.isWorthOutputting(): 13 | print "Adding ssty1 and ssty2 to", glf.glyphname 14 | glf.addPosSub("'ssty' Script Style lookup 0-1",(ssty1.glyphname,ssty2.glyphname)) 15 | elif ssty1.isWorthOutputting(): 16 | print "Adding ssty1 to", glf.glyphname 17 | glf.addPosSub("'ssty' Script Style lookup 0-1",ssty1.glyphname) 18 | elif ssty2.isWorthOutputting(): 19 | print "Adding ssty2 to", glf.glyphname 20 | glf.addPosSub("'ssty' Script Style lookup 0-1",ssty2.glyphname) 21 | 22 | fnt.save() 23 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | NAME=euler 2 | VERSION=0.002 3 | 4 | PY=python 5 | 6 | define $(NAME)SCRIPT 7 | import fontforge, sys 8 | f = fontforge.open(sys.argv[1]) 9 | f.correctDirection() 10 | f.version = "$(VERSION)" 11 | f.generate(sys.argv[2], flags=("round", "opentype")) 12 | endef 13 | 14 | export $(NAME)SCRIPT 15 | 16 | SFDS=euler.sfd 17 | OTFS=$(SFDS:.sfd=.otf) 18 | 19 | all: otf 20 | 21 | otf: $(OTFS) 22 | 23 | %.otf : %.sfd 24 | @echo "Building $@" 25 | @$(PY) -c "$$$(NAME)SCRIPT" $< $@ 26 | 27 | dist: $(OTFS) 28 | @echo "Making dist tarball" 29 | @mkdir -p $(NAME)-$(VERSION)/sources 30 | @cp $(SFDS) $(NAME)-$(VERSION)/sources 31 | @cp $(OTFS) $(NAME)-$(VERSION) 32 | @cp OFL-FAQ.txt OFL.txt README $(NAME)-$(VERSION) 33 | @cp Makefile $(NAME)-$(VERSION) 34 | @tar cfj $(NAME)-$(VERSION).tar.bz2 $(NAME)-$(VERSION) 35 | 36 | clean: 37 | @rm -rf $(OTFS) $(NAME)-$(VERSION) $(NAME)-$(VERSION).tar.bz2 38 | -------------------------------------------------------------------------------- /utils/gui_utils.py: -------------------------------------------------------------------------------- 1 | colors = { 2 | "red" : 0xff0000, 3 | "blue" : 0x0000ff, 4 | "light blue": 0x00ffff, 5 | "green" : 0x00ff00, 6 | "yellow" : 0xffff00, 7 | "none" : -1 8 | } 9 | 10 | def set_color(data, font): 11 | color_keys = tuple(colors.keys()) 12 | color = color_keys[fontforge.askChoices("Set Glyph Color","Select a color",color_keys)] 13 | for glyph in font.selection.byGlyphs: 14 | glyph.color = colors[color] 15 | font.changed = True 16 | 17 | def set_ssty(data, font): 18 | for glyph in font.selection.byGlyphs: 19 | name = glyph.glyphname 20 | glyph.addPosSub("'ssty' Script Style lookup 0-1",(name+".ssty1",name+".ssty2")) 21 | font.changed = True 22 | 23 | accent_shift = None 24 | 25 | def set_topaccent(data, font): 26 | global accent_shift 27 | if not accent_shift: 28 | accent_shift = "" 29 | accent_shift = fontforge.askString("Math accent shift", 30 | "How much the accent is shifted from midline?", 31 | accent_shift) 32 | for glyph in font.selection.byGlyphs: 33 | if accent_shift: 34 | glyph.topaccent = round((glyph.width/2.0) + (float(accent_shift))) 35 | font.changed = True 36 | 37 | def set_extended_shape(data, font): 38 | for glyph in font.selection.byGlyphs: 39 | glyph.isExtendedShape = True 40 | font.changed = True 41 | 42 | fontforge.registerMenuItem(set_color,None,None,"Font",None,"Math","Set glyph color") 43 | fontforge.registerMenuItem(set_ssty,None,None,"Font",None,"Math","Set 'ssty' variants") 44 | fontforge.registerMenuItem(set_topaccent,None,None,"Font",None,"Math","Set math accent") 45 | fontforge.registerMenuItem(set_extended_shape,None,None,"Font",None,"Math","Set extended shape") 46 | -------------------------------------------------------------------------------- /tests/test.ltx: -------------------------------------------------------------------------------- 1 | \documentclass{minimal} 2 | \usepackage{amsmath} 3 | \usepackage{unicode-math} 4 | \setmathfont[math-style=upright]{Neo Euler} 5 | 6 | \begin{document} 7 | 8 | \centerline{\fontspec[Scale=2]{Neo Euler}𝔑𝔢𝔬 𝔈𝔲𝔩𝔢𝔯} 9 | \vskip20pt 10 | 11 | \[ 12 | π(n) = 13 | \sum^{n}_{m=2} 14 | \left\lfloor 15 | \biggl( 16 | \sum^{m-1}_{k=1} 17 | \bigl\lfloor(m/k)\big/\lceil m/k\rceil\bigr\rfloor 18 | \biggr)^{-1} 19 | \right\rfloor 20 | \] 21 | 22 | \[π(n) = \sum^{n}_{k=2}\left\lfloor ϕ(k) \over k-1\right\rfloor\] 23 | 24 | \[1+\left(1\over1-x^2\right)^3\] 25 | 26 | \[1+\left(1\over1-{{{x^2}\over{y^3}}\over{z^4}}\right)^3\] 27 | 28 | \[{a+1\over b}\bigg/{c+1\over d}\] 29 | 30 | \[\biggl({\partial^{2} \over \partial x^{2}} + {\partial^{2} \over \partial y^{2}}\biggr) {\bigl\vert ϕ(x+iy)\bigr\vert}^2\] 31 | 32 | \[\int_{-\infty}^{+\infty}\] 33 | 34 | \[\sum_{\scriptstyle0\le i\le m\atop\scriptstyle0 pt -> em unit of 10pt font 16 | return round((num*fnt.designsize*10)/(65536^2)) 17 | end 18 | 19 | local function get_math_param(name, style) 20 | return to_em_unit(tex.getmath(name, style)) 21 | end 22 | 23 | local function output(text) 24 | file:write(text) 25 | end 26 | 27 | font_parameters = { 28 | AccentBaseHeight = "x_height", 29 | } 30 | 31 | math_parameters = { 32 | AxisHeight = {axis = "display"}, 33 | -- DisplayOperatorMinHeight = {operatorsize = "display"}, -- useless 34 | FractionDenominatorDisplayStyleShiftDown= {fractiondenomdown = "display"}, 35 | FractionDenominatorShiftDown = {fractiondenomdown = "text"}, 36 | FractionDenominatorDisplayStyleGapMin = {fractiondenomvgap = "display"}, 37 | FractionDenominatorGapMin = {fractiondenomvgap = "text"}, 38 | FractionNumeratorDisplayStyleShiftUp = {fractionnumup = "display"}, 39 | FractionNumeratorShiftUp = {fractionnumup = "text"}, 40 | FractionNumeratorDisplayStyleGapMin = {fractionnumvgap = "display"}, 41 | FractionNumeratorGapMin = {fractionnumvgap = "text"}, 42 | FractionRuleThickness = {fractionrule = "display"}, 43 | UpperLimitBaselineRiseMin = {limitabovebgap = "display"}, 44 | UpperLimitGapMin = {limitabovevgap = "display"}, 45 | LowerLimitBaselineDropMin = {limitbelowbgap = "display"}, 46 | LowerLimitGapMin = {limitbelowvgap = "display"}, 47 | StretchStackGapBelowMin = {overdelimitervgap = "display"}, 48 | StretchStackTopShiftUp = {overdelimiterbgap = "display"}, 49 | StretchStackGapAboveMin = {underdelimitervgap = "display"}, 50 | StretchStackBottomShiftDown = {underdelimiterbgap = "display"}, 51 | OverbarExtraAscender = {overbarkern = "display"}, 52 | OverbarRuleThickness = {overbarrule = "display"}, 53 | OverbarVerticalGap = {overbarvgap = "display"}, 54 | RadicalExtraAscender = {radicalkern = "display"}, 55 | RadicalRuleThickness = {overbarrule = "display"}, --radicalrule is not initialized 56 | RadicalDisplayStyleVerticalGap = {radicalvgap = "display"}, 57 | RadicalVerticalGap = {radicalvgap = "text"}, 58 | RadicalKernBeforeDegree = {radicaldegreebefore = "display"}, 59 | RadicalKernAfterDegree = {radicaldegreeafter = "display"}, 60 | RadicalDegreeBottomRaisePercent = {radicaldegreeraise = "display"}, 61 | SpaceAfterScript = {spaceafterscript = "display"}, 62 | StackBottomDisplayStyleShiftDown = {stackdenomdown = "display"}, 63 | StackBottomShiftDown = {stackdenomdown = "text"}, 64 | StackTopDisplayStyleShiftUp = {stacknumup = "display"}, 65 | StackTopShiftUp = {stacknumup = "text"}, 66 | StackDisplayStyleGapMin = {stackvgap = "display"}, 67 | StackGapMin = {stackvgap = "text"}, 68 | SubscriptShiftDown = {subshiftdown = "display"}, 69 | SubscriptBaselineDropMin = {subshiftdrop = "display"}, 70 | SubscriptTopMax = {subtopmax = "display"}, 71 | SubSuperscriptGapMin = {subsupvgap = "display"}, 72 | SuperscriptBottomMin = {supbottommin = "display"}, 73 | SuperscriptBaselineDropMax = {supshiftdrop = "display"}, 74 | SuperscriptShiftUp = {supshiftup = "display"}, 75 | SuperscriptShiftUp = {supshiftup = "text"}, 76 | SuperscriptShiftUpCramped = {supshiftup = "crampeddisplay"}, 77 | SuperscriptBottomMaxWithSubscript = {supsubbottommax = "display"}, 78 | UnderbarExtraDescender = {underbarkern = "display"}, 79 | UnderbarRuleThickness = {underbarrule = "display"}, 80 | UnderbarVerticalGap = {underbarvgap = "display"}, 81 | MinConnectorOverlap = {connectoroverlapmin = "display"}, 82 | } 83 | 84 | 85 | file = io.open("parameters.txt", "w+") 86 | 87 | for omath, tmath in pairs(math_parameters) do 88 | for name, style in pairs(tmath) do 89 | --print(omath, name, style) 90 | --print(omath .. ": " .. get_math_param(name, style)) 91 | output("MATH:"..omath..": "..get_math_param(name, style).." \n") 92 | end 93 | end 94 | 95 | for k,v in pairs(font_parameters) do 96 | output("MATH:"..k..": "..to_em_unit(fnt.parameters[v]).." \n") 97 | end 98 | 99 | --output("MATH:DisplayOperatorMinHeight: "..to_em_unit(tex.dp[0]).." \n") 100 | 101 | file:close() 102 | -------------------------------------------------------------------------------- /OFL.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 1997, 2009 American Mathematical Society (http://www.ams.org), 2 | with Reserved Font Names EUEX10, EUEX7, EUEX8, EUEX9, EUFB10, EUFB5, EUFB7, 3 | EUFM10, EUFM5, EUFM7, EURB10, EURB5, EURB7, EURM10, EURM5, EURM7, EUSB10, 4 | EUSB5, EUSB7, EUSM10, EUSM5, EUSM7, CMEX10, CMSY5, CMSY7. 5 | 6 | Copyright (c) 2009, 2010 Khaled Hosny (khaledhosny@eglug.org). 7 | 8 | This Font Software is licensed under the SIL Open Font License, Version 1.1. 9 | This license is copied below, and is also available with a FAQ at: 10 | http://scripts.sil.org/OFL 11 | 12 | 13 | ----------------------------------------------------------- 14 | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 15 | ----------------------------------------------------------- 16 | 17 | PREAMBLE 18 | The goals of the Open Font License (OFL) are to stimulate worldwide 19 | development of collaborative font projects, to support the font creation 20 | efforts of academic and linguistic communities, and to provide a free and 21 | open framework in which fonts may be shared and improved in partnership 22 | with others. 23 | 24 | The OFL allows the licensed fonts to be used, studied, modified and 25 | redistributed freely as long as they are not sold by themselves. The 26 | fonts, including any derivative works, can be bundled, embedded, 27 | redistributed and/or sold with any software provided that any reserved 28 | names are not used by derivative works. The fonts and derivatives, 29 | however, cannot be released under any other type of license. The 30 | requirement for fonts to remain under this license does not apply 31 | to any document created using the fonts or their derivatives. 32 | 33 | DEFINITIONS 34 | "Font Software" refers to the set of files released by the Copyright 35 | Holder(s) under this license and clearly marked as such. This may 36 | include source files, build scripts and documentation. 37 | 38 | "Reserved Font Name" refers to any names specified as such after the 39 | copyright statement(s). 40 | 41 | "Original Version" refers to the collection of Font Software components as 42 | distributed by the Copyright Holder(s). 43 | 44 | "Modified Version" refers to any derivative made by adding to, deleting, 45 | or substituting -- in part or in whole -- any of the components of the 46 | Original Version, by changing formats or by porting the Font Software to a 47 | new environment. 48 | 49 | "Author" refers to any designer, engineer, programmer, technical 50 | writer or other person who contributed to the Font Software. 51 | 52 | PERMISSION & CONDITIONS 53 | Permission is hereby granted, free of charge, to any person obtaining 54 | a copy of the Font Software, to use, study, copy, merge, embed, modify, 55 | redistribute, and sell modified and unmodified copies of the Font 56 | Software, subject to the following conditions: 57 | 58 | 1) Neither the Font Software nor any of its individual components, 59 | in Original or Modified Versions, may be sold by itself. 60 | 61 | 2) Original or Modified Versions of the Font Software may be bundled, 62 | redistributed and/or sold with any software, provided that each copy 63 | contains the above copyright notice and this license. These can be 64 | included either as stand-alone text files, human-readable headers or 65 | in the appropriate machine-readable metadata fields within text or 66 | binary files as long as those fields can be easily viewed by the user. 67 | 68 | 3) No Modified Version of the Font Software may use the Reserved Font 69 | Name(s) unless explicit written permission is granted by the corresponding 70 | Copyright Holder. This restriction only applies to the primary font name as 71 | presented to the users. 72 | 73 | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font 74 | Software shall not be used to promote, endorse or advertise any 75 | Modified Version, except to acknowledge the contribution(s) of the 76 | Copyright Holder(s) and the Author(s) or with their explicit written 77 | permission. 78 | 79 | 5) The Font Software, modified or unmodified, in part or in whole, 80 | must be distributed entirely under this license, and must not be 81 | distributed under any other license. The requirement for fonts to 82 | remain under this license does not apply to any document created 83 | using the Font Software. 84 | 85 | TERMINATION 86 | This license becomes null and void if any of the above conditions are 87 | not met. 88 | 89 | DISCLAIMER 90 | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 91 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF 92 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT 93 | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE 94 | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 95 | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL 96 | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 97 | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM 98 | OTHER DEALINGS IN THE FONT SOFTWARE. 99 | -------------------------------------------------------------------------------- /OFL-FAQ.txt: -------------------------------------------------------------------------------- 1 | OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL) 2 | Version 1.1-update2 - 23 August 2010 3 | (See http://scripts.sil.org/OFL for updates) 4 | 5 | 6 | CONTENTS OF THIS FAQ 7 | 1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL 8 | 2 USING OFL FONTS FOR WEB PAGES AND ONLINE WEBFONT SERVICES 9 | 3 MODIFYING OFL-LICENSED FONTS 10 | 4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL 11 | 5 CHOOSING RESERVED FONT NAMES 12 | 6 ABOUT THE FONTLOG 13 | 7 MAKING CONTRIBUTIONS TO OFL PROJECTS 14 | 8 ABOUT THE LICENSE ITSELF 15 | 9 ABOUT SIL INTERNATIONAL 16 | APPENDIX A - FONTLOG EXAMPLE 17 | 18 | 19 | 1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL 20 | 21 | 1.1 Can I use the fonts for a book or other print publication? 22 | Yes. You can mention the font and author in the book's colophon if you wish, but that is not required. 23 | 24 | 1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions? 25 | Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package and include them in distribution CD/DVDs and online repositories. (Also see section 5.9 about rebuilding from source.) 26 | 27 | 1.3 I want to distribute the fonts with my program. Does this mean my program also has to be Free/Libre and Open Source Software? 28 | No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well. 29 | 30 | 1.4 Can I sell a software package that includes these fonts? 31 | Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc. 32 | 33 | 1.5 Can I include the fonts on a CD of freeware or commercial fonts? 34 | Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself. 35 | 36 | 1.6 Why won't the OFL let me sell the fonts alone? 37 | The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution! 38 | 39 | 1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick? 40 | You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software. 41 | 42 | 1.8 Can I host the fonts on a web site for others to use? 43 | Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of webfonts in Section 2. 44 | 45 | 1.9 Can I host the fonts on a server for use over our internal network? 46 | Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included. 47 | 48 | 1.10 Does the full OFL license text always need to accompany the font? 49 | The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on http://scripts.sil.org/OFL, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license. 50 | 51 | 1.11 What do you mean by 'embedding'? How does that differ from other means of distribution? 52 | By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt. 53 | 54 | 1.12 So can I embed OFL fonts in my document? 55 | Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document. 56 | 57 | 1.13 Does embedding alter the license of the document itself? 58 | No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under OFL does not make the resulting artwork subject to the OFL. 59 | 60 | 1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)? 61 | The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: use your common sense and respect the work of the author(s) and the licensing model. 62 | 63 | 1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding? 64 | Certain document formats may allow the inclusion of an unmodified font within their file structure which consists of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s). 65 | 66 | 1.16 What about ebooks shipping with open fonts? 67 | The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15. 68 | 69 | 1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms? 70 | Yes, but these issues are out-of-scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL. 71 | 72 | 1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions? 73 | Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible. 74 | 75 | 1.19 What do you mean in condition 4? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement? 76 | The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a web site by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not. 77 | 78 | 79 | 2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEBFONT SERVICES 80 | 81 | 2.1 Can I make webpages using these fonts? 82 | Yes! Go ahead! Using CSS (Cascading Style Sheets) is recommended. Your three best options: 83 | - referring directly in your stylesheet to open fonts which may be available on the user's system 84 | - providing links to download the full package of the font - either from your own website or from elsewhere - so users can install it themselves 85 | - using @font-face to distribute the font directly to browsers. This is recommended and explicitly allowed by the licensing model because it is distribution. The font file itself is distributed with other components of the webpage. It is not embedded in the webpage but referenced through a web address which will cause the browser to retrieve and use the corresponding font to render the webpage (see 1.11 and 1.15 for details related to embedding fonts into documents). As you take advantage of the @font-face cross-platform standard, be aware that webfonts are often tuned for a web environment and not intended for installation and use outside a browser. The reasons in favour of using webfonts are to allow design of dynamic text elements instead of static graphics, to make it easier for content to be localized and translated, indexed and searched, and all this with cross-platform open standards without depending on restricted extensions or plugins. You should check the CSS cascade (the order in which fonts are being called or delivered to your users) when testing. 86 | 87 | 2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts? 88 | Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF format, however, it is possible to create a WOFF version that is not considered modification, and so would not require a name change. You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if: 89 | 90 | - the original font data remains unchanged except for WOFF compression, and 91 | - WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font. 92 | 93 | If the original font data or metadata is changed, or the WOFF-specific metadata is incomplete, the font must be considered a Modified Version, the OFL restrictions would apply and the name of the font must be changed: any RFNs cannot be used and copyright notices and licensing information must be included and cannot be deleted or modified. You must come up with a unique name - we recommend one corresponding to your domain or your particular web application. Be aware that only the original author(s) can use RFNs. This is to prevent collisions between a derivative tuned to your audience and the original upstream version and so to reduce confusion. 94 | 95 | Please note that most WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata. 96 | 97 | 2.3 What about other webfont formats such as EOT/EOTLite/CWT/etc.? 98 | In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used. 99 | 100 | 2.4 Can I make OFL fonts available through webfont online services? 101 | Yes, you are welcome to include OFL fonts in online webfont services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See 1.17 for details related to URL-based access restrictions methods or DRM mechanisms). 102 | 103 | 2.5 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package? 104 | Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Be aware that you can only sell the fonts and your CMS add-on as part of a software bundle. (See 1.4 for details and examples about selling bundles). 105 | 106 | 2.6 Some webfont formats and services provide ways of "optimising" the font for a particular website or web application; is that allowed? 107 | Yes, it is permitted, but remember that these optimised versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimisation parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages used by your users. It may also introduce degradation of quality in the rendering or specific bugs on the various platforms compared to the original font. In other words, remember that one person's optimised font may be another person's missing feature. Various advanced typographic features are also available through CSS and may provide the desired effects without the need to modify the font. 108 | 109 | 110 | 3 MODIFYING OFL-LICENSED FONTS 111 | 112 | 3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change? 113 | You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution. 114 | 115 | 3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine? 116 | Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license. 117 | 118 | 3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs and/or OpenType/Graphite code, can I sell the enhanced font? 119 | Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package. 120 | 121 | 3.4 Can I pay someone to enhance the fonts for my use and distribution? 122 | Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others. 123 | 124 | 3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use? 125 | No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others. 126 | 127 | 3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available? 128 | No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave. 129 | 130 | 3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts? 131 | Yes, any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. Please refer to the appropriate trademark laws. 132 | 133 | 134 | 4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL 135 | 136 | 4.1 Can I use the SIL OFL for my own fonts? 137 | Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity. 138 | 139 | 4.2 What do I have to do to apply the OFL to my font? 140 | If you want to release your fonts under the OFL, we recommend you do the following: 141 | 142 | 4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders. Include this file in your release package. 143 | 144 | 4.2.2 Put your copyright and the OFL text with Reserved Font Names into your font files (the copyright and license fields). A link to the OFL text on the OFL web site is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata. 145 | 146 | 4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package. 147 | 148 | 4.2.4 Include the relevant practical documentation on the license by including the OFL-FAQ.txt in your package. 149 | 150 | 4.3 Will you make my font OFL for me? 151 | We won't do the work for you. We can, however, try to answer your questions, unfortunately we do not have the resources to review and check your font packages for correct use of the OFL. 152 | 153 | 4.4 Will you distribute my OFL font for me? 154 | No, although if the font is of sufficient quality and general interest we may include a link to it on our partial list of OFL fonts on the OFL web site. You may wish to consider other open font catalogs or hosting services, such as the Unifont Font Guide (http://unifont.org/fontguide), The League of Movable Type (http://theleagueofmovabletype.com), Kernest (http://kernest.com/) or the Open Font Library (http://openfontlibrary.org/), which despite the name has no direct relationship to the OFL or SIL. We do not endorse any particular catalog or hosting service - it is your responsibility to determine if the service is right for you. 155 | 156 | 4.5 Why should I use the OFL for my fonts? 157 | - to meet needs for fonts that can be modified to support minority languages 158 | - to provide a legal and clear way for people to respect your work but still use it (and reduce piracy) 159 | - to involve others in your font project 160 | - to enable your fonts to be expanded with new weights and improved writing system/language support 161 | - to allow more technical font developers to add features to your design (such as OpenType and Graphite support) 162 | - to renew the life of an old font lying on your hard drive with no business model 163 | - to allow your font to be included in Libre Software operating systems like Ubuntu 164 | - to give your font world status and wide, unrestricted distribution 165 | - to educate students about quality typeface and font design 166 | - to expand your test base and get more useful feedback 167 | - to extend your reach to new markets when users see your metadata and go to your website 168 | - to get your font more easily into one of the webfont online services 169 | - to attract attention for your commercial fonts 170 | - to make money through webfont services 171 | - to make money by bundling fonts with applications 172 | - to make money adjusting and extending existing open fonts 173 | - to get a better chance that foundations/NGOs/charities/companies who commission fonts will pick you 174 | - to be part of a sharing design and development community 175 | - to give back and contribute to a growing body of font sources 176 | 177 | 178 | 5 CHOOSING RESERVED FONT NAMES 179 | 180 | 5.1 What are Reserved Font Names? 181 | These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author. 182 | 183 | 5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from. 184 | The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license. 185 | 186 | 5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name? 187 | Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer. 188 | 189 | 5.4 Am I not allowed to use any part of the Reserved Font Names? 190 | You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute. 191 | 192 | 5.5 So what should I, as an author, identify as Reserved Font Names? 193 | Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own. 194 | 195 | 5.6 Do I, as an author, have to identify any Reserved Font Names? 196 | No, but we strongly encourage you to do so. This is to avoid confusion between your work and Modified Versions. 197 | 198 | 5.7 Are any names (such as the main font name) reserved by default? 199 | No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s). 200 | 201 | 5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version? 202 | The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is a RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion. 203 | 204 | 5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source? 205 | Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream. 206 | 207 | 5.10 Can I add other Reserved Font Names when making a derivative font? 208 | Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any exiting RFNs but only add your own. 209 | 210 | 211 | 6 ABOUT THE FONTLOG 212 | 213 | 6.1 What is this FONTLOG thing exactly? 214 | It has three purposes: 1) to provide basic information on the font to users and other developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it! 215 | 216 | 6.2 Is the FONTLOG required? 217 | It is not a requirement of the license, but we strongly recommend you have one. 218 | 219 | 6.3 Am I required to update the FONTLOG when making Modified Versions? 220 | No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG, such as the FONTLOG support in FontForge. 221 | 222 | 6.4 What should the FONTLOG look like? 223 | It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections: 224 | 225 | - brief header describing the FONTLOG itself and name of the font family 226 | - Basic Font Information - description of the font family, purpose and breadth 227 | - ChangeLog - chronological listing of changes 228 | - Acknowledgements - list of authors and contributors with contact information 229 | 230 | It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG. 231 | 232 | 233 | 7 MAKING CONTRIBUTIONS TO OFL PROJECTS 234 | 235 | 7.1 Can I contribute work to OFL projects? 236 | In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects. 237 | 238 | 7.2 Why should I contribute my changes back to the original authors? 239 | It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute. 240 | 241 | 7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions? 242 | Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, svk, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate. 243 | 244 | 7.4 How can I financially support the development of OFL fonts? 245 | It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version. 246 | 247 | 248 | 8 ABOUT THE LICENSE ITSELF 249 | 250 | 8.1 I see that this is version 1.1 of the license. Will there be later changes? 251 | Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our web site: http://scripts.sil.org/OFL. 252 | 253 | 8.2 Does this license restrict the rights of the Copyright Holder(s)? 254 | No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version. Only the Copyright Holder(s) can do this. 255 | 256 | 8.3 Is the OFL a contract or a license? 257 | The OFL is a license and not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license. 258 | 259 | 8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts? 260 | We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2010 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us. 261 | 262 | 8.5 Can I translate the license and the FAQ into other languages? 263 | SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best. 264 | 265 | If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems. 266 | 267 | SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines: 268 | 269 | - Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial: 270 | 271 | "This is an unofficial translation of the SIL Open Font License into . It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to http://scripts.sil.org/OFL for the official version of the license and the accompanying OFL-FAQ." 272 | 273 | - Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion. 274 | 275 | If you start such a unofficial translation effort of the OFL and OFL-FAQ please let us know. 276 | 277 | 278 | 9 ABOUT SIL INTERNATIONAL 279 | 280 | 9.1 Who is SIL International and what do they do? 281 | SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment. 282 | 283 | 9.2 What does this have to do with font licensing? 284 | The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community. 285 | 286 | 9.3 How can I contact SIL? 287 | Our main web site is: http://www.sil.org/ 288 | Our site about complex scripts is: http://scripts.sil.org/ 289 | Information about this license (and contact information) is at: http://scripts.sil.org/OFL 290 | 291 | 292 | APPENDIX A - FONTLOG EXAMPLE 293 | 294 | Here is an example of the recommended format for a FONTLOG, although other formats are allowed. 295 | 296 | ----- 297 | FONTLOG for the GlobalFontFamily fonts 298 | 299 | This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works. 300 | 301 | Basic Font Information 302 | 303 | GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts. 304 | 305 | NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian. 306 | 307 | More specifically, this release supports the following Unicode ranges... 308 | This release contains... 309 | Documentation can be found at... 310 | To contribute to the project... 311 | 312 | ChangeLog 313 | 314 | 1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1 315 | - Tweaked the smart font code (Branch merged with trunk version) 316 | - Provided improved build and debugging environment for smart behaviours 317 | 318 | 7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3 319 | - Added Greek and Cyrillic glyphs 320 | 321 | 7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2 322 | - Tweaked contextual behaviours 323 | 324 | 1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1 325 | - Improved build script performance and verbosity 326 | - Extended the smart code documentation 327 | - Corrected minor typos in the documentation 328 | - Fixed position of combining inverted breve below (U+032F) 329 | - Added OpenType/Graphite smart code for Armenian 330 | - Added Armenian glyphs (U+0531 -> U+0587) 331 | - Released as "NewWorldFontFamily" 332 | 333 | 1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0 334 | - Initial release 335 | 336 | Acknowledgements 337 | 338 | If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order. 339 | 340 | N: Jane Doe 341 | E: jane@university.edu 342 | W: http://art.university.edu/projects/fonts 343 | D: Contributor - Armenian glyphs and code 344 | 345 | N: Fred Foobar 346 | E: fred@foobar.org 347 | W: http://foobar.org 348 | D: Contributor - misc Graphite fixes 349 | 350 | N: Pat Johnson 351 | E: pat@fontstudio.org 352 | W: http://pat.fontstudio.org 353 | D: Designer - Greek & Cyrillic glyphs based on Roman design 354 | 355 | N: Tom Parker 356 | E: tom@company.com 357 | W: http://www.company.com/tom/projects/fonts 358 | D: Engineer - original smart font code 359 | 360 | N: Joe Smith 361 | E: joe@fontstudio.org 362 | W: http://joe.fontstudio.org 363 | D: Designer - original Roman glyphs 364 | 365 | Fontstudio.org is an not-for-profit design group whose purpose is... 366 | Foobar.org is a distributed community of developers... 367 | Company.com is a small business who likes to support community designers... 368 | University.edu is a renowed educational institution with a strong design department... 369 | ----- 370 | -------------------------------------------------------------------------------- /tests/amsmath-testmath.ltx: -------------------------------------------------------------------------------- 1 | 2 | % This is the AMS's testmath.tex modified to check unicode-math output. 3 | 4 | \documentclass{article} 5 | \pagestyle{headings} 6 | 7 | \title{Sample Paper for the \texttt{Neo Euler} font\\ 8 | File name: \fn{testmath.tex}} 9 | \author{American Mathematical Society} 10 | \date{Version 2.0, 1999/11/15} 11 | 12 | \usepackage{amsmath,amsthm,fontspec,xunicode} 13 | \usepackage{unicode-math} 14 | \setmathfont[math-style=upright]{Neo Euler} 15 | \defaultfontfeatures{Mapping=tex-text} 16 | \setmainfont{TeX Gyre Pagella} 17 | \setsansfont{TeX Gyre Heros} 18 | \setmonofont{Inconsolata} 19 | 20 | % Some definitions useful in producing this sort of documentation: 21 | \chardef\bslash=`\\ % p. 424, TeXbook 22 | % Normalized (nonbold, nonitalic) tt font, to avoid font 23 | % substitution warning messages if tt is used inside section 24 | % headings and other places where odd font combinations might 25 | % result. 26 | \newcommand{\ntt}{\normalfont\ttfamily} 27 | % command name 28 | \newcommand{\cn}[1]{{\protect\ntt\bslash#1}} 29 | % LaTeX package name 30 | \newcommand{\pkg}[1]{{\protect\ntt#1}} 31 | % File name 32 | \newcommand{\fn}[1]{{\protect\ntt#1}} 33 | % environment name 34 | \newcommand{\env}[1]{{\protect\ntt#1}} 35 | \hfuzz1pc % Don't bother to report overfull boxes if overage is < 1pc 36 | 37 | % Theorem environments 38 | 39 | %% \theoremstyle{plain} %% This is the default 40 | \newtheorem{thm}{Theorem}[section] 41 | \newtheorem{cor}[thm]{Corollary} 42 | \newtheorem{lem}[thm]{Lemma} 43 | \newtheorem{prop}[thm]{Proposition} 44 | \newtheorem{ax}{Axiom} 45 | 46 | \theoremstyle{definition} 47 | \newtheorem{defn}{Definition}[section] 48 | 49 | \theoremstyle{remark} 50 | \newtheorem{rem}{Remark}[section] 51 | \newtheorem*{notation}{Notation} 52 | 53 | %\numberwithin{equation}{section} 54 | 55 | \newcommand{\thmref}[1]{Theorem~\ref{#1}} 56 | \newcommand{\secref}[1]{\S\ref{#1}} 57 | \newcommand{\lemref}[1]{Lemma~\ref{#1}} 58 | 59 | \newcommand{\bysame}{\mbox{\rule{3em}{.4pt}}\,} 60 | 61 | % Math definitions 62 | 63 | \newcommand{\A}{\mathcal{A}} 64 | \newcommand{\cB}{\mathcal{B}} 65 | \newcommand{\st}{\sigma} 66 | \newcommand{\XcY}{{(X,Y)}} 67 | \newcommand{\SX}{{S_X}} 68 | \newcommand{\SY}{{S_Y}} 69 | \newcommand{\SXY}{{S_{X,Y}}} 70 | \newcommand{\SXgYy}{{S_{X|Y}(y)}} 71 | \newcommand{\Cw}[1]{{\hat C_#1(X|Y)}} 72 | \newcommand{\cG}{{G(X|Y)}} 73 | \newcommand{\PY}{{P_{\mathcal{Y}}}} 74 | \newcommand{\X}{\mathcal{X}} 75 | \newcommand{\wt}{\widetilde} 76 | \newcommand{\wh}{\widehat} 77 | 78 | \DeclareMathOperator{\per}{per} 79 | \DeclareMathOperator{\cov}{cov} 80 | \DeclareMathOperator{\non}{non} 81 | \DeclareMathOperator{\cf}{cf} 82 | \DeclareMathOperator{\add}{add} 83 | \DeclareMathOperator{\Cham}{Cham} 84 | \DeclareMathOperator{\IM}{Im} 85 | \DeclareMathOperator{\esssup}{ess\,sup} 86 | \DeclareMathOperator{\meas}{meas} 87 | \DeclareMathOperator{\seg}{seg} 88 | 89 | % \interval is used to provide better spacing after a [ that 90 | % is used as a closing delimiter. 91 | \newcommand{\interval}[1]{\mathinner{#1}} 92 | 93 | % Notation for an expression evaluated at a particular condition. The 94 | % optional argument can be used to override automatic sizing of the 95 | % right vert bar, e.g. \eval[\biggr]{...}_{...} 96 | \newcommand{\eval}[2][\right]{\relax 97 | \ifx#1\right\relax \left.\fi#2#1\rvert} 98 | 99 | % Enclose the argument in vert-bar delimiters: 100 | \newcommand{\envert}[1]{\left\lvert#1\right\rvert} 101 | \let\abs=\envert 102 | 103 | % Enclose the argument in double-vert-bar delimiters: 104 | \newcommand{\enVert}[1]{\left\lVert#1\right\rVert} 105 | \let\norm=\enVert 106 | 107 | \begin{document} 108 | \maketitle 109 | \markboth{Sample paper for the Neo Euler font} 110 | {Sample paper for the Neo Euler font} 111 | \renewcommand{\sectionmark}[1]{} 112 | 113 | \section{Introduction} 114 | 115 | This paper contains examples of various features from \AmS-\LaTeX{}. 116 | 117 | \section{Enumeration of Hamiltonian paths in a graph} 118 | 119 | Let $\mathbf{A}=(a_{ij})$ be the adjacency matrix of graph $G$. The 120 | corresponding Kirchhoff matrix $\mathbf{K}=(k_{ij})$ is obtained from 121 | $\mathbf{A}$ by replacing in $-\mathbf{A}$ each diagonal entry by the 122 | degree of its corresponding vertex; i.e., the $i$th diagonal entry is 123 | identified with the degree of the $i$th vertex. It is well known that 124 | \begin{equation} 125 | \det\mathbf{K}(i|i)=\text{ the number of spanning trees of $G$}, 126 | \quad i=1,\dots,n 127 | \end{equation} 128 | where $\mathbf{K}(i|i)$ is the $i$th principal submatrix of 129 | $\mathbf{K}$. 130 | \begin{verbatim} 131 | \det\mathbf{K}(i|i)=\text{ the number of spanning trees of $G$}, 132 | \end{verbatim} 133 | 134 | Let $C_{i(j)}$ be the set of graphs obtained from $G$ by attaching edge 135 | $(v_iv_j)$ to each spanning tree of $G$. Denote by $C_i=\bigcup_j 136 | C_{i(j)}$. It is obvious that the collection of Hamiltonian cycles is a 137 | subset of $C_i$. Note that the cardinality of $C_i$ is $k_{ii}\det 138 | \mathbf{K}(i|i)$. Let $\wh X=\{\hat x_1,\dots,\hat x_n\}$. 139 | \begin{verbatim} 140 | $\wh X=\{\hat x_1,\dots,\hat x_n\}$ 141 | \end{verbatim} 142 | Define multiplication for the elements of $\wh X$ by 143 | \begin{equation}\label{multdef} 144 | \hat x_i\hat x_j=\hat x_j\hat x_i,\quad \hat x^2_i=0,\quad 145 | i,j=1,\dots,n. 146 | \end{equation} 147 | Let $\hat k_{ij}=k_{ij}\hat x_j$ and $\hat k_{ij}=-\sum_{j\not=i} \hat 148 | k_{ij}$. Then the number of Hamiltonian cycles $H_c$ is given by the 149 | relation \cite{liuchow:formalsum} 150 | \begin{equation}\label{H-cycles} 151 | \biggl(\prod^n_{\,j=1}\hat x_j\biggr)H_c=\frac{1}{2}\hat k_{ij}\det 152 | \wh{\mathbf{K}}(i|i),\qquad i=1,\dots,n. 153 | \end{equation} 154 | The task here is to express \eqref{H-cycles} 155 | in a form free of any $\hat x_i$, 156 | $i=1,\dots,n$. The result also leads to the resolution of enumeration of 157 | Hamiltonian paths in a graph. 158 | 159 | It is well known that the enumeration of Hamiltonian cycles and paths in 160 | a complete graph $K_n$ and in a complete bipartite graph $K_{n_1n_2}$ 161 | can only be found from \textit{first combinatorial principles} 162 | \cite{hapa:graphenum}. One wonders if there exists a formula which can 163 | be used very efficiently to produce $K_n$ and $K_{n_1n_2}$. Recently, 164 | using Lagrangian methods, Goulden and Jackson have shown that $H_c$ can 165 | be expressed in terms of the determinant and permanent of the adjacency 166 | matrix \cite{gouja:lagrmeth}. However, the formula of Goulden and 167 | Jackson determines neither $K_n$ nor $K_{n_1n_2}$ effectively. In this 168 | paper, using an algebraic method, we parametrize the adjacency matrix. 169 | The resulting formula also involves the determinant and permanent, but 170 | it can easily be applied to $K_n$ and $K_{n_1n_2}$. In addition, we 171 | eliminate the permanent from $H_c$ and show that $H_c$ can be 172 | represented by a determinantal function of multivariables, each variable 173 | with domain $\{0,1\}$. Furthermore, we show that $H_c$ can be written by 174 | number of spanning trees of subgraphs. Finally, we apply the formulas to 175 | a complete multigraph $K_{n_1\dots n_p}$. 176 | 177 | The conditions $a_{ij}=a_{ji}$, $i,j=1,\dots,n$, are not required in 178 | this paper. All formulas can be extended to a digraph simply by 179 | multiplying $H_c$ by 2. 180 | 181 | \section{Main Theorem} 182 | \label{s:mt} 183 | 184 | \begin{notation} For $p,q\in P$ and $n\in\omega$ we write 185 | $(q,n)\le(p,n)$ if $q\le p$ and $A_{q,n}=A_{p,n}$. 186 | \begin{verbatim} 187 | \begin{notation} For $p,q\in P$ and $n\in\omega$ 188 | ... 189 | \end{notation} 190 | \end{verbatim} 191 | \end{notation} 192 | 193 | Let $\mathbf{B}=(b_{ij})$ be an $n\times n$ matrix. Let $\mathbf{n}=\{1, 194 | \dots,n\}$. Using the properties of \eqref{multdef}, it is readily seen 195 | that 196 | 197 | \begin{lem}\label{lem-per} 198 | \begin{equation} 199 | \prod_{i\in\mathbf{n}} 200 | \biggl(\sum_{\,j\in\mathbf{n}}b_{ij}\hat x_i\biggr) 201 | =\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr)\per \mathbf{B} 202 | \end{equation} 203 | where $\per \mathbf{B}$ is the permanent of $\mathbf{B}$. 204 | \end{lem} 205 | 206 | Let $\wh Y=\{\hat y_1,\dots,\hat y_n\}$. Define multiplication 207 | for the elements of $\wh Y$ by 208 | \begin{equation} 209 | \hat y_i\hat y_j+\hat y_j\hat y_i=0,\quad i,j=1,\dots,n. 210 | \end{equation} 211 | Then, it follows that 212 | \begin{lem}\label{lem-det} 213 | \begin{equation}\label{detprod} 214 | \prod_{i\in\mathbf{n}} 215 | \biggl(\sum_{\,j\in\mathbf{n}}b_{ij}\hat y_j\biggr) 216 | =\biggl(\prod_{\,i\in\mathbf{n}}\hat y_i\biggr)\det\mathbf{B}. 217 | \end{equation} 218 | \end{lem} 219 | 220 | Note that all basic properties of determinants are direct consequences 221 | of Lemma ~\ref{lem-det}. Write 222 | \begin{equation}\label{sum-bij} 223 | \sum_{j\in\mathbf{n}}b_{ij}\hat y_j=\sum_{j\in\mathbf{n}}b^{(\lambda)} 224 | _{ij}\hat y_j+(b_{ii}-\lambda_i)\hat y_i\hat y 225 | \end{equation} 226 | where 227 | \begin{equation} 228 | b^{(\lambda)}_{ii}=\lambda_i,\quad b^{(\lambda)}_{ij}=b_{ij}, 229 | \quad i\not=j. 230 | \end{equation} 231 | Let $\mathbf{B}^{(\lambda)}=(b^{(\lambda)}_{ij})$. By \eqref{detprod} 232 | and \eqref{sum-bij}, it is 233 | straightforward to show the following 234 | result: 235 | \begin{thm}\label{thm-main} 236 | \begin{equation}\label{detB} 237 | \det\mathbf{B}= 238 | \sum^n_{l =0}\sum_{I_l \subseteq n} 239 | \prod_{i\in I_l}(b_{ii}-\lambda_i) 240 | \det\mathbf{B}^{(\lambda)}(I_l |I_l ), 241 | \end{equation} 242 | where $I_l =\{i_1,\dots,i_l \}$ and $\mathbf{B}^{(\lambda)}(I_l |I_l )$ 243 | is the principal submatrix obtained from $\mathbf{B}^{(\lambda)}$ 244 | by deleting its $i_1,\dots,i_l $ rows and columns. 245 | \end{thm} 246 | 247 | \begin{rem} 248 | Let $\mathbf{M}$ be an $n\times n$ matrix. The convention 249 | $\mathbf{M}(\mathbf{n}|\mathbf{n})=1$ has been used in \eqref{detB} and 250 | hereafter. 251 | \end{rem} 252 | 253 | Before proceeding with our discussion, we pause to note that 254 | \thmref{thm-main} yields immediately a fundamental formula which can be 255 | used to compute the coefficients of a characteristic polynomial 256 | \cite{mami:matrixth}: 257 | \begin{cor}\label{BI} 258 | Write $\det(\mathbf{B}-x\mathbf{I})=\sum^n_{l =0}(-1) 259 | ^l b_l x^l $. Then 260 | \begin{equation}\label{bl-sum} 261 | b_l =\sum_{I_l \subseteq\mathbf{n}}\det\mathbf{B}(I_l |I_l ). 262 | \end{equation} 263 | \end{cor} 264 | Let 265 | \begin{equation} 266 | \mathbf{K}(t,t_1,\dots,t_n) 267 | =\begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ 268 | -a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ 269 | \hdotsfor[2]{4}\\ 270 | -a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix}, 271 | \end{equation} 272 | \begin{verbatim} 273 | \begin{pmatrix} D_1t&-a_{12}t_2&\dots&-a_{1n}t_n\\ 274 | -a_{21}t_1&D_2t&\dots&-a_{2n}t_n\\ 275 | \hdotsfor[2]{4}\\ 276 | -a_{n1}t_1&-a_{n2}t_2&\dots&D_nt\end{pmatrix} 277 | \end{verbatim} 278 | where 279 | \begin{equation} 280 | D_i=\sum_{j\in\mathbf{n}}a_{ij}t_j,\quad i=1,\dots,n. 281 | \end{equation} 282 | 283 | Set 284 | \begin{equation*} 285 | D(t_1,\dots,t_n)=\frac{\delta}{\delta t}\eval{\det\mathbf{K}(t,t_1,\dots,t_n) 286 | }_{t=1}. 287 | \end{equation*} 288 | Then 289 | \begin{equation}\label{sum-Di} 290 | D(t_1,\dots,t_n) 291 | =\sum_{i\in\mathbf{n}}D_i\det\mathbf{K}(t=1,t_1,\dots,t_n; i|i), 292 | \end{equation} 293 | where $\mathbf{K}(t=1,t_1,\dots,t_n; i|i)$ is the $i$th principal 294 | submatrix of $\mathbf{K}(t=1,t_1,\dots,t_n)$. 295 | 296 | Theorem ~\ref{thm-main} leads to 297 | \begin{equation}\label{detK1} 298 | \det\mathbf{K}(t_1,t_1,\dots,t_n) 299 | =\sum_{I\in\mathbf{n}}(-1)^{\envert{I}}t^{n-\envert{I}} 300 | \prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A} 301 | ^{(\lambda t)}(\overline{I}|\overline I). 302 | \end{equation} 303 | Note that 304 | \begin{equation}\label{detK2} 305 | \det\mathbf{K}(t=1,t_1,\dots,t_n)=\sum_{I\in\mathbf{n}}(-1)^{\envert{I}} 306 | \prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A} 307 | ^{(\lambda)}(\overline{I}|\overline{I})=0. 308 | \end{equation} 309 | 310 | Let $t_i=\hat x_i,i=1,\dots,n$. Lemma ~\ref{lem-per} yields 311 | \begin{multline} 312 | \biggl(\sum_{\,i\in\mathbf{n}}a_{l _i}x_i\biggr) 313 | \det\mathbf{K}(t=1,x_1,\dots,x_n;l |l )\\ 314 | =\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr) 315 | \sum_{I\subseteq\mathbf{n}-\{l \}} 316 | (-1)^{\envert{I}}\per\mathbf{A}^{(\lambda)}(I|I) 317 | \det\mathbf{A}^{(\lambda)} 318 | (\overline I\cup\{l \}|\overline I\cup\{l \}). 319 | \label{sum-ali} 320 | \end{multline} 321 | \begin{verbatim} 322 | \begin{multline} 323 | \biggl(\sum_{\,i\in\mathbf{n}}a_{l _i}x_i\biggr) 324 | \det\mathbf{K}(t=1,x_1,\dots,x_n;l |l )\\ 325 | =\biggl(\prod_{\,i\in\mathbf{n}}\hat x_i\biggr) 326 | \sum_{I\subseteq\mathbf{n}-\{l \}} 327 | (-1)^{\envert{I}}\per\mathbf{A}^{(\lambda)}(I|I) 328 | \det\mathbf{A}^{(\lambda)} 329 | (\overline I\cup\{l \}|\overline I\cup\{l \}). 330 | \label{sum-ali} 331 | \end{multline} 332 | \end{verbatim} 333 | 334 | By \eqref{H-cycles}, \eqref{detprod}, and \eqref{sum-bij}, we have 335 | \begin{prop}\label{prop:eg} 336 | \begin{equation} 337 | H_c=\frac1{2n}\sum^n_{l =0}(-1)^{l} 338 | D_{l}, 339 | \end{equation} 340 | where 341 | \begin{equation}\label{delta-l} 342 | D_{l}=\eval[2]{\sum_{I_{l}\subseteq \mathbf{n}} 343 | D(t_1,\dots,t_n)}_{t_i=\left\{\begin{smallmatrix} 344 | 0,& \text{if }i\in I_{l}\quad\\% \quad added for centering 345 | 1,& \text{otherwise}\end{smallmatrix}\right.\;,\;\; i=1,\dots,n}. 346 | \end{equation} 347 | \end{prop} 348 | 349 | \section{Application} 350 | \label{lincomp} 351 | 352 | We consider here the applications of Theorems~\ref{th-info-ow-ow} and 353 | ~\ref{th-weak-ske-owf} to a complete 354 | multipartite graph $K_{n_1\dots n_p}$. It can be shown that the 355 | number of spanning trees of $K_{n_1\dots n_p}$ 356 | may be written 357 | \begin{equation}\label{e:st} 358 | T=n^{p-2}\prod^p_{i=1} 359 | (n-n_i)^{n_i-1} 360 | \end{equation} 361 | where 362 | \begin{equation} 363 | n=n_1+\dots+n_p. 364 | \end{equation} 365 | 366 | It follows from Theorems~\ref{th-info-ow-ow} and 367 | ~\ref{th-weak-ske-owf} that 368 | \begin{equation}\label{e:barwq} 369 | \begin{split} 370 | H_c&=\frac1{2n} 371 | \sum^n_{{l}=0}(-1)^{l}(n-{l})^{p-2} 372 | \sum_{l _1+\dots+l _p=l}\prod^p_{i=1} 373 | \binom{n_i}{l _i}\\ 374 | &\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i}\cdot 375 | \biggl[(n-l )^2-\sum^p_{j=1}(n_i-l _i)^2\biggr].\end{split} 376 | \end{equation} 377 | \begin{verbatim} 378 | ... \binom{n_i}{l _i}\\ 379 | \end{verbatim} 380 | and 381 | \begin{equation}\label{joe} 382 | \begin{split} 383 | H_c&=\frac12\sum^{n-1}_{l =0} 384 | (-1)^{l}(n-l )^{p-2} 385 | \sum_{l _1+\dots+l _p=l} 386 | \prod^p_{i=1}\binom{n_i}{l _i}\\ 387 | &\quad\cdot[(n-l )-(n_i-l _i)]^{n_i-l _i} 388 | \left(1-\frac{l _p}{n_p}\right) 389 | [(n-l )-(n_p-l _p)]. 390 | \end{split} 391 | \end{equation} 392 | 393 | The enumeration of $H_c$ in a $K_{n_1\dotsm n_p}$ graph can also be 394 | carried out by Theorem ~\ref{thm-H-param} or ~\ref{thm-asym} 395 | together with the algebraic method of \eqref{multdef}. 396 | Some elegant representations may be obtained. For example, $H_c$ in 397 | a $K_{n_1n_2n_3}$ graph may be written 398 | \begin{equation}\label{j:mark} 399 | \begin{split} 400 | H_c=& 401 | \frac{n_1!\,n_2!\,n_3!} 402 | {n_1+n_2+n_3}\sum_i\left[\binom{n_1}{i} 403 | \binom{n_2}{n_3-n_1+i}\binom{n_3}{n_3-n_2+i}\right.\\ 404 | &+\left.\binom{n_1-1}{i} 405 | \binom{n_2-1}{n_3-n_1+i} 406 | \binom{n_3-1}{n_3-n_2+i}\right].\end{split} 407 | \end{equation} 408 | 409 | \section{Secret Key Exchanges} 410 | \label{SKE} 411 | 412 | Modern cryptography is fundamentally concerned with the problem of 413 | secure private communication. A Secret Key Exchange is a protocol 414 | where Alice and Bob, having no secret information in common to start, 415 | are able to agree on a common secret key, conversing over a public 416 | channel. The notion of a Secret Key Exchange protocol was first 417 | introduced in the seminal paper of Diffie and Hellman 418 | \cite{dihe:newdir}. \cite{dihe:newdir} presented a concrete 419 | implementation of a Secret Key Exchange protocol, dependent on a 420 | specific assumption (a variant on the discrete log), specially 421 | tailored to yield Secret Key Exchange. Secret Key Exchange is of 422 | course trivial if trapdoor permutations exist. However, there is no 423 | known implementation based on a weaker general assumption. 424 | 425 | The concept of an informationally one-way function was introduced 426 | in \cite{imlelu:oneway}. We give only an informal definition here: 427 | 428 | \begin{defn} A polynomial time 429 | computable function $f = \{f_k\}$ is informationally 430 | one-way if there is no probabilistic polynomial time algorithm which 431 | (with probability of the form $1 - k^{-e}$ for some $e > 0$) 432 | returns on input $y \in \{0,1\}^{k}$ a random element of $f^{-1}(y)$. 433 | \end{defn} 434 | In the non-uniform setting \cite{imlelu:oneway} show that these are not 435 | weaker than one-way functions: 436 | \begin{thm}[\cite{imlelu:oneway} (non-uniform)] 437 | \label{th-info-ow-ow} 438 | The existence of informationally one-way functions 439 | implies the existence of one-way functions. 440 | \end{thm} 441 | We will stick to the convention introduced above of saying 442 | ``non-uniform'' before the theorem statement when the theorem 443 | makes use of non-uniformity. It should be understood that 444 | if nothing is said then the result holds for both the uniform and 445 | the non-uniform models. 446 | 447 | It now follows from \thmref{th-info-ow-ow} that 448 | 449 | \begin{thm}[non-uniform]\label{th-weak-ske-owf} Weak SKE 450 | implies the existence of a one-way function. 451 | \end{thm} 452 | 453 | More recently, the polynomial-time, interior point algorithms for linear 454 | programming have been extended to the case of convex quadratic programs 455 | \cite{moad:quadpro,ye:intalg}, certain linear complementarity problems 456 | \cite{komiyo:lincomp,miyoki:lincomp}, and the nonlinear complementarity 457 | problem \cite{komiyo:unipfunc}. The connection between these algorithms 458 | and the classical Newton method for nonlinear equations is well 459 | explained in \cite{komiyo:lincomp}. 460 | 461 | \section{Review} 462 | \label{computation} 463 | 464 | We begin our discussion with the following definition: 465 | 466 | \begin{defn} 467 | 468 | A function $H\colon \Re^n \to \Re^n$ is said to be 469 | \emph{B-differentiable} at the point $z$ if (i)~$H$ is Lipschitz 470 | continuous in a neighborhood of $z$, and (ii)~ there exists a positive 471 | homogeneous function $BH(z)\colon \Re^n \to \Re^n$, called the 472 | \emph{B-derivative} of $H$ at $z$, such that 473 | \[ \lim_{v \to 0} \frac{H(z+v) - H(z) - BH(z)v}{\enVert{v}} = 0. \] 474 | The function $H$ is \textit{B-differentiable in set $S$} if it is 475 | B-differentiable at every point in $S$. The B-derivative $BH(z)$ is said 476 | to be \textit{strong} if 477 | \[ \lim_{(v,v') \to (0,0)} \frac{H(z+v) - H(z+v') - BH(z)(v 478 | -v')}{\enVert{v - v'}} = 0. \] 479 | \end{defn} 480 | 481 | 482 | \begin{lem}\label{limbog} There exists a smooth function $\psi_0(z)$ 483 | defined for $\abs{z}>1-2a$ satisfying the following properties\textup{:} 484 | \begin{enumerate} 485 | \renewcommand{\labelenumi}{(\roman{enumi})} 486 | \item $\psi_0(z)$ is bounded above and below by positive constants 487 | $c_1\leq \psi_0(z)\leq c_2$. 488 | \item If $\abs{z}>1$, then $\psi_0(z)=1$. 489 | \item For all $z$ in the domain of $\psi_0$, $\Delta_0\ln \psi_0\geq 0$. 490 | \item If $1-2a<\abs{z}<1-a$, then $\Delta_0\ln \psi_0\geq 491 | c_3>0$. 492 | \end{enumerate} 493 | \end{lem} 494 | 495 | \begin{proof} 496 | We choose $\psi_0(z)$ to be a radial function depending only on $r=\abs{z}$. 497 | Let $h(r)\geq 0$ be a suitable smooth function satisfying $h(r)\geq c_3$ 498 | for $1-2a<\abs{z}<1-a$, and $h(r)=0$ for $\abs{z}>1-\tfrac a2$. The radial 499 | Laplacian 500 | \[\Delta_0\ln\psi_0(r)=\left(\frac {d^2}{dr^2}+\frac 501 | 1r\frac d{dr}\right)\ln\psi_0(r)\] 502 | has smooth coefficients for $r>1-2a$. Therefore, we may 503 | apply the existence and uniqueness theory for ordinary differential 504 | equations. Simply let $\ln \psi_0(r)$ be the solution of the differential 505 | equation 506 | \[\left(\frac{d^2}{dr^2}+\frac 1r\frac d{dr}\right)\ln \psi_0(r)=h(r)\] 507 | with initial conditions given by $\ln \psi_0(1)=0$ and 508 | $\ln\psi_0'(1)=0$. 509 | 510 | Next, let $D_\nu$ be a finite collection of pairwise disjoint disks, 511 | all of which are contained in the unit disk centered at the origin in 512 | $C$. We assume that $D_\nu=\{z\mid \abs{z-z_\nu}<\delta\}$. Suppose that 513 | $D_\nu(a)$ denotes the smaller concentric disk $D_\nu(a)=\{z\mid 514 | \abs{z-z_\nu}\leq (1-2a)\delta\}$. We define a smooth weight function 515 | $\Phi_0(z)$ for $z\in C-\bigcup_\nu D_\nu(a)$ by setting $\Phi_ 516 | 0(z)=1$ when $z\notin \bigcup_\nu D_\nu$ and $\Phi_ 517 | 0(z)=\psi_0((z-z_\nu)/\delta)$ when $z$ is an element of $D_\nu$. It 518 | follows from \lemref{limbog} that $\Phi_ 0$ satisfies the properties: 519 | \begin{enumerate} 520 | \renewcommand{\labelenumi}{(\roman{enumi})} 521 | \item \label{boundab}$\Phi_ 0(z)$ is bounded above and below by 522 | positive constants $c_1\leq \Phi_ 0(z)\leq c_2$. 523 | \item \label{d:over}$\Delta_0\ln\Phi_ 0\geq 0$ for all 524 | $z\in C-\bigcup_\nu D_\nu(a)$, 525 | the domain where the function $\Phi_ 0$ is defined. 526 | \item \label{d:ad}$\Delta_0\ln\Phi_ 0\geq c_3\delta^{-2}$ 527 | when $(1-2a)\delta<\abs{z-z_\nu}<(1-a)\delta$. 528 | \end{enumerate} 529 | Let $A_\nu$ denote the annulus $A_\nu=\{(1-2a)\delta<\abs{z-z_\nu}<(1-a) 530 | \delta \}$, and set $A=\bigcup_\nu A_\nu$. The 531 | properties (\ref{d:over}) and (\ref{d:ad}) of $\Phi_ 0$ 532 | may be summarized as $\Delta_0\ln \Phi_ 0\geq c_3\delta^{-2}\chi_A$, 533 | where $\chi _A$ is the characteristic function of $A$. 534 | \end{proof} 535 | 536 | Suppose that $\alpha$ is a nonnegative real constant. We apply 537 | Proposition~\ref{prop:eg} with $\Phi(z)=\Phi_ 0(z) e^{\alpha\abs{z}^2}$. If 538 | $u\in C^\infty_0(R^2-\bigcup_\nu D_\nu(a))$, assume that $\mathcal{D}$ 539 | is a bounded domain containing the support of $u$ and $A\subset 540 | \mathcal{D}\subset R^2-\bigcup_\nu D_\nu(a)$. A calculation gives 541 | \[\int_{\mathcal{D}}\abs{\overline\partial u}^2\Phi_ 0(z) e^{\alpha\abs{z}^2} 542 | \geq c_4\alpha\int_{\mathcal{D}}\abs{u}^2\Phi_ 0e^{\alpha\abs{z}^2} 543 | +c_5\delta^{-2}\int_ A\abs{u}^2\Phi_ 0e^{\alpha\abs{z}^2}.\] 544 | 545 | The boundedness, property (\ref{boundab}) of $\Phi_ 0$, then yields 546 | \[\int_{\mathcal{D}}\abs{\overline\partial u}^2e^{\alpha\abs{z}^2}\geq c_6\alpha 547 | \int_{\mathcal{D}}\abs{u}^2e^{\alpha\abs{z}^2} 548 | +c_7\delta^{-2}\int_ A\abs{u}^2e^{\alpha\abs{z}^2}.\] 549 | 550 | Let $B(X)$ be the set of blocks of $\Lambda_{X}$ 551 | and let $b(X) = \abs{B(X)}$. If $\phi \in Q_{X}$ then 552 | $\phi$ is constant on the blocks of $\Lambda_{X}$. 553 | \begin{equation}\label{far-d} 554 | P_{X} = \{ \phi \in M \mid \Lambda_{\phi} = \Lambda_{X} \}, 555 | \qquad 556 | Q_{X} = \{\phi \in M \mid \Lambda_{\phi} \geq \Lambda_{X} \}. 557 | \end{equation} 558 | If $\Lambda_{\phi} \geq \Lambda_{X}$ then 559 | $\Lambda_{\phi} = \Lambda_{Y}$ for some $Y \geq X$ so that 560 | \[ Q_{X} = \bigcup_{Y \geq X} P_{Y}. \] 561 | Thus by M\"obius inversion 562 | \[ \abs{P_{Y}}= \sum_{X\geq Y} \mu (Y,X)\abs{Q_{X}}.\] 563 | Thus there is a bijection from $Q_{X}$ to $W^{B(X)}$. 564 | In particular $\abs{Q_{X}} = w^{b(X)}$. 565 | 566 | Next note that $b(X)=\dim X$. We see this by choosing a 567 | basis for $X$ consisting of vectors $v^{k}$ defined by 568 | \[v^{k}_{i}= 569 | \begin{cases} 1 & \text{if $i \in \Lambda_{k}$},\\ 570 | 0 &\text{otherwise.} \end{cases} 571 | \] 572 | \begin{verbatim} 573 | \[v^{k}_{i}= 574 | \begin{cases} 1 & \text{if $i \in \Lambda_{k}$},\\ 575 | 0 &\text{otherwise.} \end{cases} 576 | \] 577 | \end{verbatim} 578 | 579 | \begin{lem}\label{p0201} 580 | Let $\A$ be an arrangement. Then 581 | \[ \chi (\A,t) = \sum_{\cB \subseteq \A} 582 | (-1)^{\abs{\cB}} t^{\dim T(\cB)}. \] 583 | \end{lem} 584 | 585 | In order to compute $R''$ recall the definition 586 | of $S(X,Y)$ from \lemref{lem-per}. Since $H \in \cB$, 587 | $\A_{H} \subseteq \cB$. Thus if $T(\cB) = Y$ then 588 | $\cB \in S(H,Y)$. Let $L'' = L(\A'')$. Then 589 | \begin{equation}\label{E_SXgYy} 590 | \begin{split} 591 | R''&= \sum_{H\in \cB \subseteq \A} (-1)^{\abs{\cB}} 592 | t^{\dim T(\cB)}\\ 593 | &= \sum_{Y \in L''} \sum_{\cB \in S(H,Y)} 594 | (-1)^{\abs{\cB}}t^{\dim Y} \\ 595 | &= -\sum_{Y \in L''} \sum_{\cB \in S(H,Y)} (-1)^ 596 | {\abs{\cB - \A_{H}}} t^{\dim Y} \\ 597 | &= -\sum_{Y \in L''} \mu (H,Y)t^{\dim Y} \\ 598 | &= -\chi (\A '',t). 599 | \end{split} 600 | \end{equation} 601 | 602 | \begin{cor}\label{tripleA} 603 | Let $(\A,\A',\A'')$ be a triple of arrangements. Then 604 | \[ \pi (\A,t) = \pi (\A',t) + t \pi (\A'',t). \] 605 | \end{cor} 606 | 607 | \begin{defn} 608 | Let $(\A,\A',\A'')$ be a triple with respect to 609 | the hyperplane $H \in \A$. Call $H$ a \textit{separator} 610 | if $T(\A) \not\in L(\A')$. 611 | \end{defn} 612 | 613 | \begin{cor}\label{nsep} 614 | Let $(\A,\A',\A'')$ be a triple with respect to $H \in \A$. 615 | \begin{enumerate} 616 | \renewcommand{\labelenumi}{(\roman{enumi})} 617 | \item 618 | If $H$ is a separator then 619 | \[ \mu (\A) = - \mu (\A'') \] 620 | and hence 621 | \[ \abs{\mu (\A)} = \abs{ \mu (\A'')}. \] 622 | 623 | \item If $H$ is not a separator then 624 | \[\mu (\A) = \mu (\A') - \mu (\A'') \] 625 | and 626 | \[ \abs{\mu (\A)} = \abs{\mu (\A')} + \abs{\mu (\A'')}. \] 627 | \end{enumerate} 628 | \end{cor} 629 | 630 | \begin{proof} 631 | It follows from \thmref{th-info-ow-ow} that $\pi(\A,t)$ 632 | has leading term 633 | \[(-1)^{r(\A)}\mu (\A)t^{r(\A)}.\] 634 | The conclusion 635 | follows by comparing coefficients of the leading 636 | terms on both sides of the equation in 637 | Corollary~\ref{tripleA}. If $H$ is a separator then 638 | $r(\A') < r(\A)$ and there is no contribution 639 | from $\pi (\A',t)$. 640 | \end{proof} 641 | 642 | The Poincar\'e polynomial of an arrangement 643 | will appear repeatedly 644 | in these notes. It will be shown to equal the 645 | Poincar\'e polynomial 646 | of the graded algebras which we are going to 647 | associate with $\A$. It is also the Poincar\'e 648 | polynomial of the complement $M(\A)$ for a 649 | complex arrangement. Here we prove 650 | that the Poincar\'e polynomial is the chamber 651 | counting function for a real arrangement. The 652 | complement $M(\A)$ is a disjoint union of chambers 653 | \[M(\A) = \bigcup_{C \in \Cham(\A)} C.\] 654 | The number 655 | of chambers is determined by the Poincar\'e 656 | polynomial as follows. 657 | 658 | \begin{thm}\label{th-realarr} 659 | Let $\A_{\mathbf{R}}$ be a real arrangement. Then 660 | \[ \abs{\Cham(\A_{\mathbf{R}})} = \pi (\A_{\mathbf{R}},1). \] 661 | \end{thm} 662 | 663 | \begin{proof} 664 | We check the properties required in Corollary~\ref{nsep}: 665 | (i) follows from $\pi (\Phi_{ l},t) = 1$, and (ii) is a 666 | consequence of Corollary~\ref{BI}. 667 | \end{proof} 668 | 669 | \begin{figure} 670 | \vspace{5cm} 671 | \caption[]{$Q(\A_{1}) = xyz(x-z)(x+z)(y-z)(y+z)$} 672 | \end{figure} 673 | 674 | \begin{figure} 675 | \vspace{5cm} 676 | \caption[]{$Q(\A_{2})= xyz(x+y+z)(x+y-z)(x-y+z)(x-y-z)$} 677 | \end{figure} 678 | 679 | 680 | \begin{thm} 681 | \label{T_first_the_int} 682 | Let $\phi$ be a protocol for a random pair $\XcY$. 683 | If one of $\st_\phi(x',y)$ and $\st_\phi(x,y')$ is a prefix of the other 684 | and $(x,y)\in\SXY$, then 685 | \[ 686 | \langle \st_j(x',y)\rangle_{j=1}^\infty 687 | =\langle \st_j(x,y)\rangle_{j=1}^\infty 688 | =\langle \st_j(x,y')\rangle_{j=1}^\infty . 689 | \] 690 | \end{thm} 691 | \begin{proof} 692 | We show by induction on $i$ that 693 | \[ 694 | \langle \st_j(x',y)\rangle_{j=1}^i 695 | =\langle \st_j(x,y)\rangle_{j=1}^i 696 | =\langle \st_j(x,y')\rangle_{j=1}^i. 697 | \] 698 | The induction hypothesis holds vacuously for $i=0$. Assume it holds for 699 | $i-1$, in particular 700 | $[\st_j(x',y)]_{j=1}^{i-1}=[\st_j(x,y')]_{j=1}^{i-1}$. Then one of 701 | $[\st_j(x',y)]_{j=i}^{\infty}$ and $[\st_j(x,y')]_{j=i}^{\infty}$ is a 702 | prefix of the other which implies that one of $\st_i(x',y)$ and 703 | $\st_i(x,y')$ is a prefix of the other. If the $i$th message is 704 | transmitted by $P_\X$ then, by the separate-transmissions property and 705 | the induction hypothesis, $\st_i(x,y)=\st_i(x,y')$, hence one of 706 | $\st_i(x,y)$ and $\st_i(x',y)$ is a prefix of the other. By the 707 | implicit-termination property, neither $\st_i(x,y)$ nor $\st_i(x',y)$ 708 | can be a proper prefix of the other, hence they must be the same and 709 | $\st_i(x',y)=\st_i(x,y)=\st_i(x,y')$. If the $i$th message is 710 | transmitted by $\PY$ then, symmetrically, $\st_i(x,y)=\st_i(x',y)$ by 711 | the induction hypothesis and the separate-transmissions property, and, 712 | then, $\st_i(x,y)=\st_i(x,y')$ by the implicit-termination property, 713 | proving the induction step. 714 | \end{proof} 715 | 716 | If $\phi$ is a protocol for $(X,Y)$, and $(x,y)$, $(x',y)$ are distinct 717 | inputs in $\SXY$, then, by the correct-decision property, 718 | $\langle\st_j(x,y)\rangle_{j=1}^\infty\ne\langle 719 | \st_j(x',y)\rangle_{j=1}^\infty$. 720 | 721 | Equation~(\ref{E_SXgYy}) defined $\PY$'s ambiguity set $\SXgYy$ 722 | to be the set of possible $X$ values when $Y=y$. 723 | The last corollary implies that for all $y\in\SY$, 724 | the multiset% 725 | \footnote{A multiset allows multiplicity of elements. 726 | Hence, $\{0,01,01\}$ is prefix free as a set, but not as a multiset.} 727 | of codewords $\{\st_\phi(x,y):x\in\SXgYy\}$ is prefix free. 728 | 729 | \section{One-Way Complexity} 730 | \label{S_Cp1} 731 | 732 | $\Cw1$, the one-way complexity of a random pair $\XcY$, 733 | is the number of bits $P_\X$ must transmit in the worst case 734 | when $\PY$ is not permitted to transmit any feedback messages. 735 | Starting with $\SXY$, the support set of $\XcY$, we define $\cG$, 736 | the \textit{characteristic hypergraph} of $\XcY$, and show that 737 | \[ 738 | \Cw1=\lceil\,\log\chi(\cG)\rceil\ . 739 | \] 740 | 741 | Let $\XcY$ be a random pair. For each $y$ in $\SY$, the support set of 742 | $Y$, Equation~(\ref{E_SXgYy}) defined $\SXgYy$ to be the set of possible 743 | $x$ values when $Y=y$. The \textit{characteristic hypergraph} $\cG$ of 744 | $\XcY$ has $\SX$ as its vertex set and the hyperedge $\SXgYy$ for each 745 | $y\in\SY$. 746 | 747 | 748 | We can now prove a continuity theorem. 749 | \begin{thm}\label{t:conl} 750 | Let $\Omega \subset\mathbf{R}^n$ be an open set, let 751 | $u\in BV(\Omega ;\mathbf{R}^m)$, and let 752 | \begin{equation}\label{quts} 753 | T^u_x=\left\{y\in\mathbf{R}^m: 754 | y=\tilde u(x)+\left\langle \frac{Du}{\abs{Du}}(x),z 755 | \right\rangle \text{ for some }z\in\mathbf{R}^n\right\} 756 | \end{equation} 757 | for every $x\in\Omega \backslash S_u$. Let $f\colon \mathbf{R}^m\to 758 | \mathbf{R}^k$ be a Lipschitz continuous function such that $f(0)=0$, and 759 | let $v=f(u)\colon \Omega \to \mathbf{R}^k$. Then $v\in BV(\Omega 760 | ;\mathbf{R}^k)$ and 761 | \begin{equation} 762 | Jv=\eval{(f(u^+)-f(u^-))\otimes \nu_u\cdot\, 763 | \mathcal{H}_{n-1}}_{S_u}. 764 | \end{equation} 765 | In addition, for $\abs{\wt{D}u}$-almost every $x\in\Omega $ the 766 | restriction of the function $f$ to $T^u_x$ is differentiable at $\tilde 767 | u(x)$ and 768 | \begin{equation} 769 | \wt{D}v=\nabla (\eval{f}_{T^u_x})(\tilde u) 770 | \frac{\wt{D}u}{\abs{\wt{D}u}}\cdot\abs{\wt{D}u}.\end{equation} 771 | \end{thm} 772 | 773 | Before proving the theorem, we state without proof three elementary 774 | remarks which will be useful in the sequel. 775 | \begin{rem}\label{r:omb} 776 | Let $\omega\colon \left]0,+\infty\right[\to \left]0,+\infty\right[$ 777 | be a continuous function such that $\omega (t)\to 0$ as $t\to 778 | 0$. Then 779 | \[\lim_{h\to 0^+}g(\omega(h))=L\Leftrightarrow\lim_{h\to 780 | 0^+}g(h)=L\] 781 | for any function $g\colon \left]0,+\infty\right[\to \mathbf{R}$. 782 | \end{rem} 783 | \begin{rem}\label{r:dif} 784 | Let $g \colon \mathbf{R}^n\to \mathbf{R}$ be a Lipschitz 785 | continuous function and assume that 786 | \[L(z)=\lim_{h\to 0^+}\frac{g(hz)-g(0)}h\] 787 | exists for every $z\in\mathbf{Q}^n$ and that $L$ is a linear function of 788 | $z$. Then $g$ is differentiable at 0. 789 | \end{rem} 790 | \begin{rem}\label{r:dif0} 791 | Let $A \colon \mathbf{R}^n\to \mathbf{R}^m$ be a linear function, and 792 | let $f \colon \mathbf{R}^m\to \mathbf{R}$ be a function. Then the 793 | restriction of $f$ to the range of $A$ is differentiable at 0 if and 794 | only if $f(A)\colon \mathbf{R}^n\to \mathbf{R}$ is differentiable at 0 795 | and 796 | \[\nabla(\eval{f}_{\IM(A)})(0)A=\nabla (f(A))(0).\] 797 | \end{rem} 798 | 799 | \begin{proof} 800 | We begin by showing that $v\in BV(\Omega;\mathbf{R}^k)$ and 801 | \begin{equation}\label{e:bomb} 802 | \abs{Dv}(B)\le K\abs{Du}(B)\qquad\forall B\in\mathbf{B}(\Omega ), 803 | \end{equation} 804 | where $K>0$ is the Lipschitz constant of $f$. By \eqref{sum-Di} and by 805 | the approximation result quoted in \secref{s:mt}, it is possible to find 806 | a sequence $(u_h)\subset C^1(\Omega ;\mathbf{R}^m)$ converging to $u$ in 807 | $L^1(\Omega ;\mathbf{R}^m)$ and such that 808 | \[\lim_{h\to +\infty}\int_\Omega \abs{\nabla u_h}\,dx=\abs{Du}(\Omega ).\] 809 | The functions $v_h=f(u_h)$ are locally Lipschitz continuous in $\Omega 810 | $, and the definition of differential implies that $\abs{\nabla v_h}\le 811 | K\abs{\nabla u_h}$ almost everywhere in $\Omega $. The lower semicontinuity 812 | of the total variation and \eqref{sum-Di} yield 813 | \begin{equation} 814 | \begin{split} 815 | \abs{Dv}(\Omega )\le\liminf_{h\to +\infty}\abs{Dv_h}(\Omega) & 816 | =\liminf_{h\to +\infty}\int_\Omega \abs{\nabla v_h}\,dx\\ 817 | &\le K\liminf_{h\to +\infty}\int_\Omega 818 | \abs{\nabla u_h}\,dx=K\abs{Du}(\Omega). 819 | \end{split}\end{equation} 820 | Since $f(0)=0$, we have also 821 | \[\int_\Omega \abs{v}\,dx\le K\int_\Omega \abs{u}\,dx;\] 822 | therefore $u\in BV(\Omega ;\mathbf{R}^k)$. Repeating the same argument 823 | for every open set $A\subset\Omega $, we get \eqref{e:bomb} for every 824 | $B\in\mathbf{B}(\Omega)$, because $\abs{Dv}$, $\abs{Du}$ are Radon measures. To 825 | prove \lemref{limbog}, first we observe that 826 | \begin{equation}\label{e:SS} 827 | S_v\subset S_u,\qquad\tilde v(x)=f(\tilde u(x))\qquad \forall x\in\Omega 828 | \backslash S_u.\end{equation} 829 | In fact, for every $\varepsilon >0$ we have 830 | \[\{y\in B_\rho(x): \abs{v(y)-f(\tilde u(x))}>\varepsilon \}\subset \{y\in 831 | B_\rho(x): \abs{u(y)-\tilde u(x)}>\varepsilon /K\},\] 832 | hence 833 | \[\lim_{\rho\to 0^+}\frac{\abs{\{y\in B_\rho(x): \abs{v(y)-f(\tilde u(x))}> 834 | \varepsilon \}}}{\rho^n}=0\] 835 | whenever $x\in\Omega \backslash S_u$. By a similar argument, if $x\in 836 | S_u$ is a point such that there exists a triplet $(u^+,u^-,\nu_u)$ 837 | satisfying \eqref{detK1}, \eqref{detK2}, then 838 | \[ 839 | (v^+(x)-v^-(x))\otimes \nu_v=(f(u^+(x))-f(u^-(x)))\otimes\nu_u\quad 840 | \text{if }x\in S_v 841 | \] 842 | and $f(u^-(x))=f(u^+(x))$ if $x\in S_u\backslash S_v$. Hence, by (1.8) 843 | we get 844 | \begin{equation*}\begin{split} 845 | Jv(B)=\int_{B\cap S_v}(v^+-v^-)\otimes \nu_v\,d\mathcal{H}_{n-1}&= 846 | \int_{B\cap S_v}(f(u^+)-f(u^-))\otimes \nu_u\,d\mathcal{H}_{n-1}\\ 847 | &=\int_{B\cap S_u}(f(u^+)-f(u^-))\otimes \nu_u\,d\mathcal{H}_{n-1} 848 | \end{split}\end{equation*} 849 | and \lemref{limbog} is proved. 850 | \end{proof} 851 | 852 | To prove \eqref{e:SS}, it is not restrictive to assume that $k=1$. 853 | Moreover, to simplify our notation, from now on we shall assume that 854 | $\Omega = \mathbf{R}^n$. The proof of \eqref{e:SS} is divided into two 855 | steps. In the first step we prove the statement in the one-dimensional 856 | case $(n=1)$, using \thmref{th-weak-ske-owf}. In the second step we 857 | achieve the general result using \thmref{t:conl}. 858 | 859 | \subsection*{Step 1} 860 | Assume that $n=1$. Since $S_u$ is at most countable, \eqref{sum-bij} 861 | yields that $\abs{\wt{D}v}(S_u\backslash S_v)=0$, so that 862 | \eqref{e:st} and \eqref{e:barwq} imply that $Dv=\wt{D}v+Jv$ is 863 | the Radon-Nikod\'ym decomposition of $Dv$ in absolutely continuous and 864 | singular part with respect to $\abs{\wt{D} u}$. By 865 | \thmref{th-weak-ske-owf}, we have 866 | \begin{equation*} 867 | \frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{s\to t^+} 868 | \frac{Dv(\interval{\left[t,s\right[})} 869 | {\abs{\wt{D}u}(\interval{\left[t,s\right[})},\qquad 870 | \frac{\wt{D}u}{\abs{\wt{D}u}}(t)=\lim_{s\to t^+} 871 | \frac{Du(\interval{\left[t,s\right[})} 872 | {\abs{\wt{D}u}(\interval{\left[t,s\right[})} 873 | \end{equation*} 874 | $\abs{\wt{D}u}$-almost everywhere in $\mathbf{R}$. It is well known 875 | (see, for instance, \cite[2.5.16]{ste:sint}) that every one-dimensional 876 | function of bounded variation $w$ has a unique left continuous 877 | representative, i.e., a function $\hat w$ such that $\hat w=w$ almost 878 | everywhere and $\lim_{s\to t^-}\hat w(s)=\hat w(t)$ for every $t\in 879 | \mathbf{R}$. These conditions imply 880 | \begin{equation} 881 | \hat u(t)=Du(\interval{\left]-\infty,t\right[}), 882 | \qquad \hat v(t)=Dv(\interval{\left]-\infty,t\right[})\qquad 883 | \forall t\in\mathbf{R} 884 | \end{equation} 885 | and 886 | \begin{equation}\label{alimo} 887 | \hat v(t)=f(\hat u(t))\qquad\forall t\in\mathbf{R}.\end{equation} 888 | Let $t\in\mathbf{R}$ be such that 889 | $\abs{\wt{D}u}(\interval{\left[t,s\right[})>0$ for every $s>t$ and 890 | assume that the limits in \eqref{joe} exist. By \eqref{j:mark} and 891 | \eqref{far-d} we get 892 | \begin{equation*}\begin{split} 893 | \frac{\hat v(s)-\hat 894 | v(t)}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}&=\frac {f(\hat 895 | u(s))-f(\hat u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}\\ 896 | &=\frac{f(\hat u(s))-f(\hat 897 | u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t)\abs{\wt{D}u 898 | }(\interval{\left[t,s\right[}))}% 899 | {\abs{\wt{D}u}(\interval{\left[t,s\right[})}\\ 900 | &+\frac 901 | {f(\hat u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t)\abs{\wt{D} 902 | u}(\interval{\left[t,s\right[}))-f(\hat 903 | u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})} 904 | \end{split}\end{equation*} 905 | for every $s>t$. Using the Lipschitz condition on $f$ we find 906 | {\setlength{\multlinegap}{0pt} 907 | \begin{multline*} 908 | \left\lvert\frac{\hat v(s)-\hat 909 | v(t)}{\abs{\wt{D}u}(\interval{\left[t,s\right[})} -\frac{f(\hat 910 | u(t)+\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t) 911 | \abs{\wt{D}u}(\interval{\left[t,s\right[}))-f(\hat 912 | u(t))}{\abs{\wt{D}u}(\interval{\left[t,s\right[})}\right\rvert\\ 913 | \le K\left\lvert 914 | \frac{\hat u(s)-\hat u(t)} 915 | {\abs{\wt{D}u}(\interval{\left[t,s\right[})} 916 | -\frac{\wt{D}u}{\abs{ 917 | \wt{D}u}}(t)\right\rvert.\end{multline*} 918 | }% end of group with \multlinegap=0pt 919 | By \eqref{e:bomb}, the function $s\to 920 | \abs{\wt{D}u}(\interval{\left[t,s\right[})$ is continuous and 921 | converges to 0 as $s\downarrow t$. Therefore Remark~\ref{r:omb} and the 922 | previous inequality imply 923 | \[\frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{h\to 0^+} 924 | \frac{f(\hat u(t)+h\dfrac{\wt{D}u}{\abs{\wt{D}u}} 925 | (t))-f(\hat u(t))}h\quad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}.\] 926 | By \eqref{joe}, $\hat u(x)=\tilde u(x)$ for every 927 | $x\in\mathbf{R}\backslash S_u$; moreover, applying the same argument to 928 | the functions $u'(t)=u(-t)$, $v'(t)=f(u'(t))=v(-t)$, we get 929 | \[\frac{\wt{D}v}{\abs{\wt{D}u}}(t)=\lim_{h\to 0} 930 | \frac{f(\tilde u(t) 931 | +h\dfrac{\wt{D}u}{\abs{\wt{D}u}}(t))-f(\tilde u(t))}{h} 932 | \qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}\] 933 | and our statement is proved. 934 | 935 | \subsection*{Step 2} 936 | 937 | Let us consider now the general case $n>1$. Let $\nu\in \mathbf{R}^n$ be 938 | such that $\abs{\nu}=1$, and let $\pi_\nu=\{y\in\mathbf{R}^n: \langle 939 | y,\nu\rangle =0\}$. In the following, we shall identify $\mathbf{R}^n$ 940 | with $\pi_\nu\times\mathbf{R}$, and we shall denote by $y$ the variable 941 | ranging in $\pi_\nu$ and by $t$ the variable ranging in $\mathbf{R}$. By 942 | the just proven one-dimensional result, and by \thmref{thm-main}, we get 943 | \[\lim_{h\to 0}\frac{f(\tilde u(y+t\nu)+h\dfrac{\wt{D}u_y}{\abs{ 944 | \wt{D}u_y}}(t))-f(\tilde u(y+t\nu))}h=\frac{\wt{D}v_y}{\abs{ 945 | \wt{D}u_y}}(t)\qquad\abs{\wt{D}u_y}\text{-a.e. in }\mathbf{R}\] 946 | for $\mathcal{H}_{n-1}$-almost every $y\in \pi_\nu$. We claim that 947 | \begin{equation} 948 | \frac{\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle 949 | }}(y+t\nu)=\frac{\wt{D}u_y} 950 | {\abs{\wt{D}u_y}}(t)\qquad\abs{\wt{D}u_y}\text{-a.e. in }\mathbf{R} 951 | \end{equation} 952 | for $\mathcal{H}_{n-1}$-almost every $y\in\pi_\nu$. In fact, by 953 | \eqref{sum-ali} and \eqref{delta-l} we get 954 | \begin{multline*} 955 | \int_{\pi_\nu}\frac{\wt{D}u_y}{\abs{\wt{D}u_y}}\cdot\abs{\wt{D}u_y 956 | }\,d\mathcal{H}_{n-1}(y)=\int_{\pi_\nu}\wt{D}u_y\,d\mathcal{H}_{n-1}(y)\\ 957 | =\langle \wt{D}u,\nu\rangle =\frac 958 | {\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}}\cdot 959 | \abs{\langle \wt{D}u,\nu\rangle }=\int_{\pi_\nu}\frac{ 960 | \langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }} 961 | (y+\cdot \nu)\cdot\abs{\wt{D}u_y}\,d\mathcal{H}_{n-1}(y) 962 | \end{multline*} 963 | and \eqref{far-d} follows from \eqref{sum-Di}. By the same argument it 964 | is possible to prove that 965 | \begin{equation} 966 | \frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle 967 | }}(y+t\nu)=\frac{\wt{D}v_y}{\abs{\wt{D}u_y}}(t)\qquad\abs{ 968 | \wt{D}u_y}\text{-a.e. in }\mathbf{R}\end{equation} 969 | for $\mathcal{H}_{n-1}$-almost every $y\in \pi_\nu$. By \eqref{far-d} 970 | and \eqref{E_SXgYy} we get 971 | \[ 972 | \lim_{h\to 0}\frac{f(\tilde u(y+t\nu)+h\dfrac{\langle \wt{D} 973 | u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(y+t\nu))-f(\tilde 974 | u(y+t\nu))}{h} 975 | =\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle 976 | \wt{D}u,\nu\rangle }}(y+t\nu)\] 977 | for $\mathcal{H}_{n-1}$-almost every $y\in\pi_\nu$, and using again 978 | \eqref{detK1}, \eqref{detK2} we get 979 | \[ 980 | \lim_{h\to 0}\frac{f(\tilde u(x)+h\dfrac{\langle 981 | \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(x))-f(\tilde 982 | u(x))}{h}=\frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu 983 | \rangle }}(x) 984 | \] 985 | $\abs{\langle \wt{D}u,\nu\rangle}$-a.e. in $\mathbf{R}^n$. 986 | 987 | Since the function $\abs{\langle \wt{D}u,\nu\rangle }/\abs{\wt{D}u}$ 988 | is strictly positive $\abs{\langle \wt{D}u,\nu\rangle }$-almost everywhere, 989 | we obtain also 990 | \begin{multline*} 991 | \lim_{h\to 0}\frac{f(\tilde u(x)+h\dfrac{\abs{\langle 992 | \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}}(x)\dfrac{\langle \wt{D} 993 | u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle }}(x))-f(\tilde u(x))}{h}\\ 994 | =\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}}(x)\frac 995 | {\langle \wt{D}v,\nu\rangle }{\abs{\langle 996 | \wt{D}u,\nu\rangle }}(x) 997 | \end{multline*} 998 | $\abs{\langle \wt{D}u,\nu\rangle }$-almost everywhere in $\mathbf{R}^n$. 999 | 1000 | Finally, since 1001 | \begin{align*} 1002 | &\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}} 1003 | \frac{\langle \wt{D}u,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}} 1004 | =\frac{\langle \wt{D}u,\nu\rangle }{\abs{\wt{D}u}} 1005 | =\left\langle \frac{\wt{D}u}{\abs{\wt{D}u}},\nu\right\rangle 1006 | \qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}^n\\ 1007 | &\frac{\abs{\langle \wt{D}u,\nu\rangle }}{\abs{\wt{D}u}} 1008 | \frac{\langle \wt{D}v,\nu\rangle }{\abs{\langle \wt{D}u,\nu\rangle}} 1009 | =\frac{\langle \wt{D}v,\nu\rangle }{\abs{\wt{D}u}} 1010 | =\left\langle \frac{\wt{D}v}{\abs{\wt{D}u}},\nu\right\rangle 1011 | \qquad\abs{\wt{D}u}\text{-a.e. in }\mathbf{R}^n 1012 | \end{align*} 1013 | and since both sides of \eqref{alimo} 1014 | are zero $\abs{\wt{D}u}$-almost everywhere 1015 | on $\abs{\langle \wt{D}u,\nu\rangle }$-negligible sets, we conclude that 1016 | \[ 1017 | \lim_{h\to 0}\frac{f\left( 1018 | \tilde u(x)+h\left\langle \dfrac{\wt{D} 1019 | u}{\abs{\wt{D}u}}(x),\nu\right\rangle \right)-f(\tilde u(x))}h 1020 | =\left\langle \frac{\wt{D}v}{\abs{\wt{D}u}}(x),\nu\right\rangle, 1021 | \] 1022 | $\abs{\wt{D}u}$-a.e. in $\mathbf{R}^n$. 1023 | Since $\nu$ is arbitrary, by Remarks \ref{r:dif} and~\ref{r:dif0} 1024 | the restriction of $f$ to 1025 | the affine space $T^u_x$ is differentiable at $\tilde u(x)$ for $\abs{\wt{D} 1026 | u}$-almost every $x\in \mathbf{R}^n$ and \eqref{quts} holds.\qed 1027 | 1028 | It follows from \eqref{sum-Di}, \eqref{detK1}, and \eqref{detK2} that 1029 | \begin{equation}\label{Dt} 1030 | D(t_1,\dots,t_n)=\sum_{I\in\mathbf{n}}(-1)^{\abs{I}-1}\abs{I} 1031 | \prod_{i\in I}t_i\prod_{j\in I}(D_j+\lambda_jt_j)\det\mathbf{A}^{(\lambda)} 1032 | (\overline I|\overline I). 1033 | \end{equation} 1034 | Let $t_i=\hat x_i$, $i=1,\dots,n$. Lemma 1 leads to 1035 | \begin{equation}\label{Dx} 1036 | D(\hat x_1,\dots,\hat x_n)=\prod_{i\in\mathbf{n}}\hat x_i 1037 | \sum_{I\in\mathbf{n}}(-1)^{\abs{I}-1}\abs{I}\per \mathbf{A} 1038 | ^{(\lambda)}(I|I)\det\mathbf{A}^{(\lambda)}(\overline I|\overline I). 1039 | \end{equation} 1040 | By \eqref{H-cycles}, \eqref{sum-Di}, and \eqref{Dx}, 1041 | we have the following result: 1042 | \begin{thm}\label{thm-H-param} 1043 | \begin{equation}\label{H-param} 1044 | H_c=\frac{1}{2n}\sum^n_{l =1}l (-1)^{l -1}A_{l} 1045 | ^{(\lambda)}, 1046 | \end{equation} 1047 | where 1048 | \begin{equation}\label{A-l-lambda} 1049 | A^{(\lambda)}_l =\sum_{I_l \subseteq\mathbf{n}}\per \mathbf{A} 1050 | ^{(\lambda)}(I_l |I_l )\det\mathbf{A}^{(\lambda)} 1051 | (\overline I_{l}|\overline I_l ),\abs{I_{l}}=l . 1052 | \end{equation} 1053 | \end{thm} 1054 | 1055 | It is worth noting that $A_l ^{(\lambda)}$ of \eqref{A-l-lambda} is 1056 | similar to the coefficients $b_l $ of the characteristic polynomial of 1057 | \eqref{bl-sum}. It is well known in graph theory that the coefficients 1058 | $b_l $ can be expressed as a sum over certain subgraphs. It is 1059 | interesting to see whether $A_l $, $\lambda=0$, structural properties 1060 | of a graph. 1061 | 1062 | We may call \eqref{H-param} a parametric representation of $H_c$. In 1063 | computation, the parameter $\lambda_i$ plays very important roles. The 1064 | choice of the parameter usually depends on the properties of the given 1065 | graph. For a complete graph $K_n$, let $\lambda_i=1$, $i=1,\dots,n$. 1066 | It follows from \eqref{A-l-lambda} that 1067 | \begin{equation}\label{compl-gr} 1068 | A^{(1)}_l =\begin{cases} n!,&\text{if }l =1\\ 1069 | 0,&\text{otherwise}.\end{cases} 1070 | \end{equation} 1071 | By \eqref{H-param} 1072 | \begin{equation} 1073 | H_c=\frac 12(n-1)!. 1074 | \end{equation} 1075 | For a complete bipartite graph $K_{n_1n_2}$, let $\lambda_i=0$, $i=1,\dots,n$. 1076 | By \eqref{A-l-lambda}, 1077 | \begin{equation} 1078 | A_l = 1079 | \begin{cases} -n_1!n_2!\delta_{n_1n_2},&\text{if }l =2\\ 1080 | 0,&\text{otherwise }.\end{cases} 1081 | \label{compl-bip-gr} 1082 | \end{equation} 1083 | Theorem ~\ref{thm-H-param} 1084 | leads to 1085 | \begin{equation} 1086 | H_c=\frac1{n_1+n_2}n_1!n_2!\delta_{n_1n_2}. 1087 | \end{equation} 1088 | 1089 | Now, we consider an asymmetrical approach. Theorem \ref{thm-main} leads to 1090 | \begin{multline} 1091 | \det\mathbf{K}(t=1,t_1,\dots,t_n;l |l )\\ 1092 | =\sum_{I\subseteq\mathbf{n}-\{l \}} 1093 | (-1)^{\left\lvert I\right\rvert}\prod_{i\in I}t_i\prod_{j\in I} 1094 | (D_j+\lambda_jt_j)\det\mathbf{A}^{(\lambda)} 1095 | (\overline I\cup\{l \}|\overline I\cup\{l \}). 1096 | \end{multline} 1097 | 1098 | By \eqref{H-cycles} and \eqref{sum-ali} we have the following asymmetrical 1099 | result: 1100 | \begin{thm}\label{thm-asym} 1101 | \begin{equation} 1102 | H_c=\frac12\sum_{I\subseteq\mathbf{n}-\{l \}} 1103 | (-1)^{\abs{I}}\per\mathbf{A}^{(\lambda)}(I|I)\det 1104 | \mathbf{A}^{(\lambda)} 1105 | (\overline I\cup\{l \}|\overline I\cup\{l \}) 1106 | \end{equation} 1107 | which reduces to Goulden--Jackson's formula when $\lambda_i=0,i=1,\dots,n$ 1108 | \cite{mami:matrixth}. 1109 | \end{thm} 1110 | 1111 | \section{Various font features of the \pkg{amsmath} package} 1112 | \label{s:font} 1113 | \subsection{Bold versions of special symbols} 1114 | 1115 | In the \pkg{amsmath} package \cn{boldsymbol} is used for getting 1116 | individual bold math symbols and bold Greek letters---everything in 1117 | math except for letters of the Latin alphabet, 1118 | where you'd use \cn{mathbf}. For example, 1119 | \begin{verbatim} 1120 | A_\infty + \pi A_0 \sim 1121 | \mathbf{A}_{\boldsymbol{\infty}} \boldsymbol{+} 1122 | \boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}} 1123 | \end{verbatim} 1124 | looks like this: 1125 | \[A_\infty + \pi A_0 \sim \mathbf{A}_{\boldsymbol{\infty}} 1126 | \boldsymbol{+} \boldsymbol{\pi} \mathbf{A}_{\boldsymbol{0}}\] 1127 | 1128 | \subsection{``Poor man's bold''} 1129 | If a bold version of a particular symbol doesn't exist in the 1130 | available fonts, 1131 | then \cn{boldsymbol} can't be used to make that symbol bold. 1132 | At the present time, this means that 1133 | \cn{boldsymbol} can't be used with symbols from 1134 | the \fn{msam} and \fn{msbm} fonts, among others. 1135 | In some cases, poor man's bold (\cn{pmb}) can be used instead 1136 | of \cn{boldsymbol}: 1137 | % Can't show example from msam or msbm because this document is 1138 | % supposed to be TeXable even if the user doesn't have 1139 | % AMSFonts. MJD 5-JUL-1990 1140 | \[\frac{\partial x}{\partial y} 1141 | \pmb{\bigg\vert} 1142 | \frac{\partial y}{\partial z}\] 1143 | \begin{verbatim} 1144 | \[\frac{\partial x}{\partial y} 1145 | \pmb{\bigg\vert} 1146 | \frac{\partial y}{\partial z}\] 1147 | \end{verbatim} 1148 | So-called ``large operator'' symbols such as $\sum$ and $\prod$ 1149 | require an additional command, \cn{mathop}, 1150 | to produce proper spacing and limits when \cn{pmb} is used. 1151 | For further details see \textit{The \TeX book}. 1152 | \[\sum_{\substack{i\alpha\} 1342 | =\meas_n\{x\in R^n\colon \abs{f(x)}\geq\alpha\} 1343 | \quad \forall\alpha>0.\] 1344 | \begin{verbatim} 1345 | \[\meas_1\{u\in R_+^1\colon f^*(u)>\alpha\} 1346 | =\meas_n\{x\in R^n\colon \abs{f(x)}\geq\alpha\} 1347 | \quad \forall\alpha>0.\] 1348 | \end{verbatim} 1349 | \cn{esssup} and \cn{meas} would be defined in the document preamble as 1350 | \begin{verbatim} 1351 | \DeclareMathOperator*{\esssup}{ess\,sup} 1352 | \DeclareMathOperator{\meas}{meas} 1353 | \end{verbatim} 1354 | 1355 | The following special operator names are predefined in the \pkg{amsmath} 1356 | package: \cn{varlimsup}, \cn{varliminf}, \cn{varinjlim}, and 1357 | \cn{varprojlim}. Here's what they look like in use: 1358 | \begin{align} 1359 | &\varlimsup_{n\rightarrow\infty} 1360 | \mathcal{Q}(u_n,u_n-u^{\#})\le0\\ 1361 | &\varliminf_{n\rightarrow\infty} 1362 | \left\lvert a_{n+1}\right\rvert/\left\lvert a_n\right\rvert=0\\ 1363 | &\varinjlim (m_i^\lambda\cdot)^*\le0\\ 1364 | &\varprojlim_{p\in S(A)}A_p\le0 1365 | \end{align} 1366 | \begin{verbatim} 1367 | \begin{align} 1368 | &\varlimsup_{n\rightarrow\infty} 1369 | \mathcal{Q}(u_n,u_n-u^{\#})\le0\\ 1370 | &\varliminf_{n\rightarrow\infty} 1371 | \left\lvert a_{n+1}\right\rvert/\left\lvert a_n\right\rvert=0\\ 1372 | &\varinjlim (m_i^\lambda\cdot)^*\le0\\ 1373 | &\varprojlim_{p\in S(A)}A_p\le0 1374 | \end{align} 1375 | \end{verbatim} 1376 | 1377 | \subsection{\cn{mod} and its relatives} 1378 | The commands \cn{mod} and \cn{pod} are variants of 1379 | \cn{pmod} preferred by some authors; \cn{mod} omits the parentheses, 1380 | whereas \cn{pod} omits the `mod' and retains the parentheses. 1381 | Examples: 1382 | \begin{align} 1383 | x&\equiv y+1\pmod{m^2}\\ 1384 | x&\equiv y+1\mod{m^2}\\ 1385 | x&\equiv y+1\pod{m^2} 1386 | \end{align} 1387 | \begin{verbatim} 1388 | \begin{align} 1389 | x&\equiv y+1\pmod{m^2}\\ 1390 | x&\equiv y+1\mod{m^2}\\ 1391 | x&\equiv y+1\pod{m^2} 1392 | \end{align} 1393 | \end{verbatim} 1394 | 1395 | \subsection{Fractions and related constructions} 1396 | \label{fracs} 1397 | 1398 | The usual notation for binomials is similar to the fraction concept, 1399 | so it has a similar command \cn{binom} with two arguments. Example: 1400 | \begin{equation} 1401 | \begin{split} 1402 | \sum_{\gamma\in\Gamma_C} I_\gamma& 1403 | =2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}\\ 1404 | &\quad+\dots+(-1)^l\binom{k}{l}2^{k-l} 1405 | +\dots+(-1)^k\\ 1406 | &=(2-1)^k=1 1407 | \end{split} 1408 | \end{equation} 1409 | \begin{verbatim} 1410 | \begin{equation} 1411 | \begin{split} 1412 | [\sum_{\gamma\in\Gamma_C} I_\gamma& 1413 | =2^k-\binom{k}{1}2^{k-1}+\binom{k}{2}2^{k-2}\\ 1414 | &\quad+\dots+(-1)^l\binom{k}{l}2^{k-l} 1415 | +\dots+(-1)^k\\ 1416 | &=(2-1)^k=1 1417 | \end{split} 1418 | \end{equation} 1419 | \end{verbatim} 1420 | There are also abbreviations 1421 | \begin{verbatim} 1422 | \dfrac \dbinom 1423 | \tfrac \tbinom 1424 | \end{verbatim} 1425 | for the commonly needed constructions 1426 | \begin{verbatim} 1427 | {\displaystyle\frac ... } {\displaystyle\binom ... } 1428 | {\textstyle\frac ... } {\textstyle\binom ... } 1429 | \end{verbatim} 1430 | 1431 | The generalized fraction command \cn{genfrac} provides full access to 1432 | the six \TeX{} fraction primitives: 1433 | \begin{align} 1434 | \text{\cn{over}: }&\genfrac{}{}{}{}{n+1}{2}& 1435 | \text{\cn{overwithdelims}: }& 1436 | \genfrac{\langle}{\rangle}{}{}{n+1}{2}\\ 1437 | \text{\cn{atop}: }&\genfrac{}{}{0pt}{}{n+1}{2}& 1438 | \text{\cn{atopwithdelims}: }& 1439 | \genfrac{(}{)}{0pt}{}{n+1}{2}\\ 1440 | \text{\cn{above}: }&\genfrac{}{}{1pt}{}{n+1}{2}& 1441 | \text{\cn{abovewithdelims}: }& 1442 | \genfrac{[}{]}{1pt}{}{n+1}{2} 1443 | \end{align} 1444 | \begin{verbatim} 1445 | \text{\cn{over}: }&\genfrac{}{}{}{}{n+1}{2}& 1446 | \text{\cn{overwithdelims}: }& 1447 | \genfrac{\langle}{\rangle}{}{}{n+1}{2}\\ 1448 | \text{\cn{atop}: }&\genfrac{}{}{0pt}{}{n+1}{2}& 1449 | \text{\cn{atopwithdelims}: }& 1450 | \genfrac{(}{)}{0pt}{}{n+1}{2}\\ 1451 | \text{\cn{above}: }&\genfrac{}{}{1pt}{}{n+1}{2}& 1452 | \text{\cn{abovewithdelims}: }& 1453 | \genfrac{[}{]}{1pt}{}{n+1}{2} 1454 | \end{verbatim} 1455 | 1456 | \subsection{Continued fractions} 1457 | The continued fraction 1458 | \begin{equation} 1459 | \cfrac{1}{\sqrt{2}+ 1460 | \cfrac{1}{\sqrt{2}+ 1461 | \cfrac{1}{\sqrt{2}+ 1462 | \cfrac{1}{\sqrt{2}+ 1463 | \cfrac{1}{\sqrt{2}+\dotsb 1464 | }}}}} 1465 | \end{equation} 1466 | can be obtained by typing 1467 | \begin{verbatim} 1468 | \cfrac{1}{\sqrt{2}+ 1469 | \cfrac{1}{\sqrt{2}+ 1470 | \cfrac{1}{\sqrt{2}+ 1471 | \cfrac{1}{\sqrt{2}+ 1472 | \cfrac{1}{\sqrt{2}+\dotsb 1473 | }}}}} 1474 | \end{verbatim} 1475 | Left or right placement of any of the numerators is accomplished by using 1476 | \cn{cfrac[l]} or \cn{cfrac[r]} instead of \cn{cfrac}. 1477 | 1478 | \subsection{Smash} 1479 | 1480 | In \pkg{amsmath} there are optional arguments \verb"t" and \verb"b" for 1481 | the plain \TeX\ command \cn{smash}, because sometimes it is advantageous 1482 | to be able to `smash' only the top or only the bottom of something while 1483 | retaining the natural depth or height. In the formula 1484 | $X_j=(1/\sqrt{\smash[b]{\lambda_j}})X_j'$ \cn{smash}\verb=[b]= has been 1485 | used to limit the size of the radical symbol. 1486 | \begin{verbatim} 1487 | $X_j=(1/\sqrt{\smash[b]{\lambda_j}})X_j'$ 1488 | \end{verbatim} 1489 | Without the use of \cn{smash}\verb=[b]= the formula would have appeared 1490 | thus: $X_j=(1/\sqrt{\lambda_j})X_j'$, with the radical extending to 1491 | encompass the depth of the subscript $j$. 1492 | 1493 | \subsection{The `cases' environment} 1494 | `Cases' constructions like the following can be produced using 1495 | the \env{cases} environment. 1496 | \begin{equation} 1497 | P_{r-j}= 1498 | \begin{cases} 1499 | 0& \text{if $r-j$ is odd},\\ 1500 | r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. 1501 | \end{cases} 1502 | \end{equation} 1503 | \begin{verbatim} 1504 | \begin{equation} P_{r-j}= 1505 | \begin{cases} 1506 | 0& \text{if $r-j$ is odd},\\ 1507 | r!\,(-1)^{(r-j)/2}& \text{if $r-j$ is even}. 1508 | \end{cases} 1509 | \end{equation} 1510 | \end{verbatim} 1511 | Notice the use of \cn{text} and the embedded math. 1512 | 1513 | \subsection{Matrix} 1514 | 1515 | Here are samples of the matrix environments, 1516 | \cn{matrix}, \cn{pmatrix}, \cn{bmatrix}, \cn{Bmatrix}, \cn{vmatrix} 1517 | and \cn{Vmatrix}: 1518 | \begin{equation} 1519 | \begin{matrix} 1520 | \vartheta& \varrho\\\varphi& \varpi 1521 | \end{matrix}\quad 1522 | \begin{pmatrix} 1523 | \vartheta& \varrho\\\varphi& \varpi 1524 | \end{pmatrix}\quad 1525 | \begin{bmatrix} 1526 | \vartheta& \varrho\\\varphi& \varpi 1527 | \end{bmatrix}\quad 1528 | \begin{Bmatrix} 1529 | \vartheta& \varrho\\\varphi& \varpi 1530 | \end{Bmatrix}\quad 1531 | \begin{vmatrix} 1532 | \vartheta& \varrho\\\varphi& \varpi 1533 | \end{vmatrix}\quad 1534 | \begin{Vmatrix} 1535 | \vartheta& \varrho\\\varphi& \varpi 1536 | \end{Vmatrix} 1537 | \end{equation} 1538 | % 1539 | \begin{verbatim} 1540 | \begin{matrix} 1541 | \vartheta& \varrho\\\varphi& \varpi 1542 | \end{matrix}\quad 1543 | \begin{pmatrix} 1544 | \vartheta& \varrho\\\varphi& \varpi 1545 | \end{pmatrix}\quad 1546 | \begin{bmatrix} 1547 | \vartheta& \varrho\\\varphi& \varpi 1548 | \end{bmatrix}\quad 1549 | \begin{Bmatrix} 1550 | \vartheta& \varrho\\\varphi& \varpi 1551 | \end{Bmatrix}\quad 1552 | \begin{vmatrix} 1553 | \vartheta& \varrho\\\varphi& \varpi 1554 | \end{vmatrix}\quad 1555 | \begin{Vmatrix} 1556 | \vartheta& \varrho\\\varphi& \varpi 1557 | \end{Vmatrix} 1558 | \end{verbatim} 1559 | 1560 | To produce a small matrix suitable for use in text, use the 1561 | \env{smallmatrix} environment. 1562 | \begin{verbatim} 1563 | \begin{math} 1564 | \bigl( \begin{smallmatrix} 1565 | a&b\\ c&d 1566 | \end{smallmatrix} \bigr) 1567 | \end{math} 1568 | \end{verbatim} 1569 | To show 1570 | the effect of the matrix on the surrounding lines of 1571 | a paragraph, we put it here: \begin{math} 1572 | \bigl( \begin{smallmatrix} 1573 | a&b\\ c&d 1574 | \end{smallmatrix} \bigr) 1575 | \end{math} 1576 | and follow it with enough text to ensure that there will 1577 | be at least one full line below the matrix. 1578 | 1579 | \cn{hdotsfor}\verb"{"\textit{number}\verb"}" produces a row of dots in a matrix 1580 | spanning the given number of columns: 1581 | \[W(\Phi)= \begin{Vmatrix} 1582 | \dfrac\varphi{(\varphi_1,\varepsilon_1)}&0&\dots&0\\ 1583 | \dfrac{\varphi k_{n2}}{(\varphi_2,\varepsilon_1)}& 1584 | \dfrac\varphi{(\varphi_2,\varepsilon_2)}&\dots&0\\ 1585 | \hdotsfor{5}\\ 1586 | \dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)}& 1587 | \dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)}&\dots& 1588 | \dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})}& 1589 | \dfrac{\varphi}{(\varphi_n,\varepsilon_n)} 1590 | \end{Vmatrix}\] 1591 | \begin{verbatim} 1592 | \[W(\Phi)= \begin{Vmatrix} 1593 | \dfrac\varphi{(\varphi_1,\varepsilon_1)}&0&\dots&0\\ 1594 | \dfrac{\varphi k_{n2}}{(\varphi_2,\varepsilon_1)}& 1595 | \dfrac\varphi{(\varphi_2,\varepsilon_2)}&\dots&0\\ 1596 | \hdotsfor{5}\\ 1597 | \dfrac{\varphi k_{n1}}{(\varphi_n,\varepsilon_1)}& 1598 | \dfrac{\varphi k_{n2}}{(\varphi_n,\varepsilon_2)}&\dots& 1599 | \dfrac{\varphi k_{n\,n-1}}{(\varphi_n,\varepsilon_{n-1})}& 1600 | \dfrac{\varphi}{(\varphi_n,\varepsilon_n)} 1601 | \end{Vmatrix}\] 1602 | \end{verbatim} 1603 | The spacing of the dots can be varied through use of a square-bracket 1604 | option, for example, \verb"\hdotsfor[1.5]{3}". The number in square brackets 1605 | will be used as a multiplier; the normal value is 1. 1606 | 1607 | \subsection{The \cn{substack} command} 1608 | 1609 | The \cn{substack} command can be used to produce a multiline 1610 | subscript or superscript: 1611 | for example 1612 | \begin{verbatim} 1613 | \sum_{\substack{0\le i\le m\\ 0