- Page 1 and 2:
DavidF.BaconArthurP.GoldbergAndyLow
- Page 3 and 4:
Preface Thisdocumentcontainsatutori
- Page 5 and 6:
iv3TypeandTypestateChecking 5Resear
- Page 8:
Tutorial PartI 1
- Page 11 and 12:
ortransactions.AHermesmoduleisastra
- Page 13 and 14:
61.2.GettingStarted|ASimpleHermesPr
- Page 15 and 16:
81.2.GettingStarted|ASimpleHermesPr
- Page 17 and 18:
101.2.GettingStarted|ASimpleHermesP
- Page 19 and 20:
121.4.PuttingProcessesTogether thec
- Page 21 and 22:
141.4.PuttingProcessesTogether newI
- Page 23 and 24:
fullycheckedfortypeandtypestateerro
- Page 25 and 26:
constructs:thenewinput-port,connect
- Page 27 and 28:
201.5.DeclarationsandDenitions whil
- Page 29 and 30:
221.5.DeclarationsandDenitions Stan
- Page 31 and 32:
whichtheoutputportconnects|calledth
- Page 33 and 34:
261.6.ASimpleServer begin QuitCM:Qu
- Page 35 and 36:
281.6.ASimpleServer towritedataabst
- Page 37 and 38:
toaservice,whileretainingtheability
- Page 39 and 40:
322.1.Requirements PutLine PutLine
- Page 41 and 42:
342.3.Interfaces WMInterface:callme
- Page 43 and 44:
asmallchangetotheinterfaceFilter.Re
- Page 45 and 46:
382.5.Front-endProcess callParms.Ge
- Page 47 and 48: 402.5.Front-endProcess paringavalue
- Page 49 and 50: ationtable[expr].Wehaveencounteredt
- Page 51 and 52: ishiddenandinnowayaectsthesemantics
- Page 53 and 54: 462.7.TheWindowManager callCurrentW
- Page 55 and 56: name.Ifwewaitedtobuildtheapplicatio
- Page 57 and 58: 502.8.CreatingaWindowApplication re
- Page 59 and 60: 522.8.CreatingaWindowApplication be
- Page 61 and 62: examplesillustratedhere. errorhandl
- Page 63 and 64: 563.TypeandTypestateChecking anerro
- Page 65 and 66: 583.TypeandTypestateChecking Therei
- Page 67 and 68: 604.1.ExpressionBlocks anexpression
- Page 69 and 70: 624.3.Variants thevariantcomponents
- Page 71 and 72: thetypestate(i.e.addattributes),but
- Page 73 and 74: accesscontrol{anyonecangetit. 664.4
- Page 75 and 76: 685.ResearchDirectionsinHermes
- Page 78 and 79: 6Introduction Thereferencemanualpre
- Page 80 and 81: 7LexicalandSyntacticRules lectionso
- Page 82 and 83: 8Resolution name,attributename,exce
- Page 84 and 85: 8.1.2ComponentNames eachhaveacompon
- Page 86 and 87: onthehandlerandusedontheexitstateme
- Page 88 and 89: theelementwillalsobeknownbyapplying
- Page 90 and 91: documentationpurposesevenwheretheya
- Page 92 and 93: ments.Therstargumenttocasemustbeava
- Page 94 and 95: Ifinit(CM)ispresentandCMisacallmess
- Page 96 and 97: 6.Determinethepostconditionsforeach
- Page 100 and 101: 11 HermesOperations Throughoutthere
- Page 102 and 103: Thediscardstatementremovesthevaluef
- Page 104 and 105: Ifnoneoftheclausescanexitsnormally,
- Page 106 and 107: Ifthereisanoptionalselectexpression
- Page 108 and 109: stmemberisanatomwithprintnamematchi
- Page 110 and 111: types.Additionally,theoperations\an
- Page 112 and 113: Less,Less-equal,Greater,Greater-equ
- Page 114 and 115: RecordTypeFamily 11.5RecordOperatio
- Page 116 and 117: valueofthetable,ifany,isdiscarded.
- Page 118 and 119: thetableisordered,theelementisinser
- Page 120 and 121: notallowedonconstantcopies.Avariabl
- Page 122 and 123: thereisnoselectedelement,aNotFounde
- Page 124 and 125: willbeuninitialized,andthedestinati
- Page 126 and 127: Itistheabilityforprogramstosendandr
- Page 128 and 129: Connect Theconnectstatementhastwoop
- Page 130 and 131: possible,andstoresitinadestinationv
- Page 132 and 133: incompatiblewiththeinputporttypeoft
- Page 134 and 135: Inspect-polymorph willincludefinit(
- Page 136 and 137: theprogramwhichembedsit.Thereforeth
- Page 138 and 139: type).Ifthecheckfails,theexceptionD
- Page 140 and 141: isusuallygeneratedasacoercionwhenme
- Page 142 and 143: A.1LexicalRules Webeginwiththerules
- Page 144 and 145: accuracy against andy assert drop e
- Page 146 and 147: Thesimplestatements: simple{stateme
- Page 148 and 149:
oolean{guard event{guard::=eventinp
- Page 150 and 151:
::=(expression)AppendixA.HermesConc
- Page 152 and 153:
user{exception constant{parameters
- Page 154 and 155:
formal{variable module{name::=ident
- Page 156 and 157:
Typestatesappearinginparticularcont
- Page 158 and 159:
destination,source,andposition.Some
- Page 160 and 161:
operandwillnolongerbeinitialized. B
- Page 162 and 163:
Followingaretheinferencefunctionsap
- Page 164 and 165:
lowestentrycondition(message,port):
- Page 166 and 167:
copy(source,destination):Foreachatt
- Page 168 and 169:
assert(continued) Description:Evalu
- Page 170 and 171:
case(continued) Description:Copythe
- Page 172 and 173:
copy(continued) Preconditions: unco
- Page 174 and 175:
drop(continued) SpecialRules:Thenum
- Page 176 and 177:
exists(continued) SpecialRules:Thes
- Page 178 and 179:
forall(continued) Description:Ifeve
- Page 180 and 181:
greater(continued) Description:Ifso
- Page 182 and 183:
insert{at(table,element,position) T
- Page 184 and 185:
integer{literal(result) TypeRules:
- Page 186 and 187:
merge{at(continued) Description:Rem
- Page 188 and 189:
not(result,source) TypeRules: Appen
- Page 190 and 191:
print(variable) TypeRules:None Prec
- Page 192 and 193:
emove(element,table) TypeRules: App
- Page 194 and 195:
select(continued) SpecialRules:Allt
- Page 196 and 197:
subtract(result,source1,source2) Ty
- Page 198 and 199:
unary{minus(result,source) TypeRule
- Page 200 and 201:
wrap(continued) Preconditions: var(
- Page 202 and 203:
definitions predefined:using() Appe
- Page 204 and 205:
);'named'->typename:typenameffullg
- Page 206 and 207:
{{Specicinformationneededtocomplete
- Page 208 and 209:
attrdefinition:record( attributeid:
- Page 210 and 211:
statement:record( id:statementid, o
- Page 212 and 213:
{{Ablockstatementqualieridentiesthe
- Page 214 and 215:
{{expressionisfalse. ifqualifier:re
- Page 216 and 217:
{{expression.The'element'rootvariab
- Page 218 and 219:
[ASU88]AlfredV.Aho,RaviSethi,andJer
- Page 220 and 221:
[SYB87a]RobertE.Strom,ShaulaAlexand
- Page 222 and 223:
AppendixC.PredenedModule215 coercio
- Page 224 and 225:
AppendixC.PredenedModule217 dening,
- Page 226:
variablename discarded,29 variant,6