Z notation: Difference between revisions

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
imported>Jpbowen
m Refs, tidying
imported>JJMC89 bot
Removed WP:NFCC violation(s). No valid non-free use rationale for this page. See WP:NFC#Implementation. Questions? Ask here.
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{Short description|Formal specification language used for describing and modelling computing systems}}
{{Short description|Formal specification language used for describing and modelling computing systems}}
{{Use dmy dates|date=July 2019}}
{{Use dmy dates|date=July 2019}}
[[File:Agendacumple en Z.svg|thumb|350px|An example of a [[formal specification]] (in Spanish) using the Z notation, with named schema boxes, including declarations and predicates]]
[[File:Agendacumple en Z.svg|thumb|300px|An example of a [[formal specification]] (in Spanish) using the Z notation, with named schema boxes, including declarations and predicates]]
 
The '''Z notation''' {{IPAc-en|ˈ|z|ɛ|d}} is a [[Formal specification|formal]] [[specification language]] used for describing and modelling computing systems.<ref>{{cite book| last=Bowen | first=Jonathan P. | chapter=The Z Notation: Whence the Cause and Whither the Course? | authorlink=Jonathan Bowen | title=Engineering Trustworthy Software Systems | pages=103–151 | publisher=[[Springer Science+Business Media|Springer]] | series=[[Lecture Notes in Computer Science]] | volume=9506 | date=2016 | doi=10.1007/978-3-319-29628-9_3| isbn=978-3-319-29627-2 | chapter-url=http://researchopen.lsbu.ac.uk/395/1/setss2014.pdf }}</ref> It is targeted at the clear specification of [[computer program]]s and computer-based systems in general.
The '''Z notation''' {{IPAc-en|ˈ|z|ɛ|d}} is a [[Formal specification|formal]] [[specification language]] used for describing and modelling computing systems.<ref>{{cite book| last=Bowen | first=Jonathan P. | chapter=The Z Notation: Whence the Cause and Whither the Course? | authorlink=Jonathan Bowen | title=Engineering Trustworthy Software Systems | pages=103–151 | publisher=[[Springer Science+Business Media|Springer]] | series=[[Lecture Notes in Computer Science]] | volume=9506 | date=2016 | doi=10.1007/978-3-319-29628-9_3| isbn=978-3-319-29627-2 | chapter-url=http://researchopen.lsbu.ac.uk/395/1/setss2014.pdf }}</ref> It is targeted at the clear specification of [[computer program]]s and computer-based systems in general.


==History==
==History==
In 1974, [[Jean-Raymond Abrial]] published "Data Semantics".<ref>{{Citation | author-link = Jean-Raymond Abrial | first = Jean-Raymond | last = Abrial | contribution = Data Semantics | editor1-last = Klimbie | editor1-first = J. W. | editor2-last = Koffeman | editor2-first = K. L. | title = Proceedings of the [[IFIP]] Working Conference on Data Base Management | publisher = [[North-Holland Publishing Company|North-Holland]] | pages = 1–59 | year=1974 }}</ref> He used a notation that would later be taught in the [[University of Grenoble]] until the end of the 1980s. While at EDF ([[Électricité de France]]), working with [[Bertrand Meyer]], Abrial also worked on developing Z.<ref>{{cite book| chapter-url=https://link.springer.com/content/pdf/bbm%3A978-3-642-15187-3%2F1.pdf | chapter=Greetings to Bertrand on the Occasion of his Sixtieth Birthday | first=Tony | last=Hoare | authorlink=Tony Hoare | editor-first=Sebastian | editor-last=Nanz | date=2011 | title=The Future of Software Engineering | pages=183–184 | isbn=978-3-642-15187-3 | publisher=[[Springer Science+Business Media|Springer]] | doi=10.1007/978-3-642-15187-3 }}</ref> The Z notation is used in the 1980 book ''Méthodes de programmation''.<ref>{{Citation | author1-link = Bertrand Meyer | first1 = Bertrand | last1 = Meyer | first2 = Claude | last2 = Baudoin | title = Méthodes de programmation | publisher = Eyrolles | year = 1980 | language = fr}}</ref>
[[File:JRA Jean-Raymond Abrial.jpg|thumb|left|upright|140px|[[Jean-Raymond Abrial]], the main originator of the Z notation]]
In 1974, [[Jean-Raymond Abrial]]<ref name="ieee-annals26">{{Cite journal|title=Jean-Raymond Abrial: A Scientific Biography of a Formal Methods Pioneer |last1=Bowen|first1=Jonathan P.|author-link1=Jonathan Bowen |last2=Habrias|first2=Henri|journal=[[IEEE Annals of the History of Computing]]|volume=48|number=2|pages=71–80| doi=10.1109/MAHC.2026.3685515|date=April–June 2025|publisher=[[IEEE Computer Society]] |arxiv=2604.07353}}</ref> published "Data Semantics".<ref>{{Citation | author-link = Jean-Raymond Abrial | first = Jean-Raymond | last = Abrial | contribution = Data Semantics | editor1-last = Klimbie | editor1-first = J. W. | editor2-last = Koffeman | editor2-first = K. L. | title = Proceedings of the [[IFIP]] Working Conference on Data Base Management | publisher = [[North-Holland Publishing Company|North-Holland]] | pages = 1–59 | year=1974 }}</ref> He used a notation that would later be taught in the [[University of Grenoble]] until the end of the 1980s.
 
While at EDF ([[Électricité de France]]), working with [[Bertrand Meyer]], Abrial also worked on developing Z.<ref>{{cite book| chapter-url=https://link.springer.com/content/pdf/bbm%3A978-3-642-15187-3%2F1.pdf | chapter=Greetings to Bertrand on the Occasion of his Sixtieth Birthday | first=Tony | last=Hoare | authorlink=Tony Hoare | editor-first=Sebastian | editor-last=Nanz | date=2011 | title=The Future of Software Engineering | pages=183–184 | isbn=978-3-642-15187-3 | publisher=[[Springer Science+Business Media|Springer]] | doi=10.1007/978-3-642-15187-3 }}</ref> Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and [[Bertrand Meyer]].<ref>{{Citation | first1 = Jean-Raymond | last1 = Abrial | first2 = Stephen A | last2 = Schuman | first3 = Bertrand | last3 = Meyer | contribution = A Specification Language | title = On the Construction of Programs | publisher = [[Cambridge University Press]] | editor1-first = A. M. | editor1-last = Macnaghten | editor2-first = R. M. | editor2-last = McKeag | year = 1980 | isbn = 0-521-23090-X}} (describes early version of the language).</ref>  The Z notation is used in the 1980 book ''Méthodes de programmation''.<ref>{{Citation | author1-link = Bertrand Meyer | first1 = Bertrand | last1 = Meyer | first2 = Claude | last2 = Baudoin | title = Méthodes de programmation | publisher = Eyrolles | year = 1980 | language = fr}}</ref>
 
Z was developed further at the [[Programming Research Group]] at [[Oxford University]], where Abrial worked in the early 1980s with researchers including [[Bernard Sufrin]] and {{Interlanguage link multi|Ib Holm Sørensen|dk}} (1949–2012),<ref name="ihs22">{{cite journal| first=Jonathan | last=Bowen | author-link=Jonathan Bowen | title=Ib Holm Sørensen: Ten Years After | journal=[[FACS FACTS]] | publisher=[[BCS-FACS]] | issue=2022-2 | pages=41–49 | date=July 2022 | url=https://www.bcs.org/media/9401/facs-jul22.pdf#page=41.0 | lang=en-uk | accessdate=1 June 2026 }}</ref> having arrived at Oxford in September 1979.<ref name="Sufrin2026">{{cite journal| url=https://www.bcs.org/media/veppnllv/facs-jan26.pdf#page=66.0 | title=Memories of Jean-Raymond Abrial in Oxford, the Alps, and Paris | first=Bernard | last=Sufrin | author-link=Bernard Sufrin | journal=[[FACS FACTS]] | volume=2026 | number=1 | pages=66–78| date=January 2026 | publisher=[[British Computer Society|BCS]] }}</ref> Sørensen received a [[DPhil]] degree from [[Oxford University]] in 1981 on early Z-based research.<ref>Sørensen, Ib Holm (1981). ''[https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.330389 Topics in program specification and design: specification and design of distributed systems] {{Webarchive|url=https://web.archive.org/web/20220731094106/https://ethos.bl.uk/OrderDetails.do?uin=uk.bl.ethos.330389 |date=31 July 2022 }}'' (DPhil). UK: [[Wolfson College, Oxford|Wolfson College]], [[University of Oxford]].</ref> He taught early courses in Z notation at Oxford<ref>[[Jim Woodcock|Woodcock, Jim]]; [[Jim Davies (computer scientist)|Davies, Jim]] (1996). "Acknowledgments". ''Using Z: Specification, Refinement, and Proof''. International Series in Computer Science. [[Prentice Hall]]. {{ISBN|0-13-948472-8}}.</ref> and established the Z User Meeting series, initially in Oxford.<ref name="zug22">{{cite news| first=Jonathan | last=Bowen | title=The Z User Group: Thirty Years After | work=[[FACS FACTS]] | publisher=[[BCS-FACS]] | issue=2022-2 | pages=50–56 | date=July 2022 | url=https://www.bcs.org/media/9401/facs-jul22.pdf#page=50.0 | accessdate=3 August 2022 }}</ref>
 
 
{{Interlanguage link multi|Ib Holm Sørensen|dk}} led the Transaction Processing Project at [[Oxford University]] from its inception in 1982 (later renamed the "CICS Project",<ref>Fitzgerald, J. S. (October 2006). [https://eprints.ncl.ac.uk/file_store/production/55248/6C55E710-EDB8-4B0C-8755-951E795F5E83.pdf Perspectives on Formal Methods in the Last 25 years]. Technical Report Series. Vol. CS-TR-983. UK: [[Newcastle University]].</ref>), in collaboration with [[IBM Hursley]].<ref>Hayes, Ian (1993). "Preface to the first edition". Specification Case Studies. International Series in Computer Science (2nd ed.). Prentice Hall. {{ISBN|978-0-13-832544-2}}.</ref> The project formally specified parts of IBM's [[CICS]] transaction processing software using Z notation. This won a [[Queen's Award for Technological Achievement]] in 1992.<ref name="king93">King, Steve (1993). "The Use of Z in the Restructure of IBM CICS". In Hayes, Ian (ed.). ''Specification Case Studies''. International Series in Computer Science (2nd ed.). [[Prentice Hall]]. pp. 202–213. {{ISBN|978-0-13-832544-2}}.</ref><ref name="woodcock22">[https://pure.york.ac.uk/portal/en/researchers/jim-woodcock(c9e521d6-3c93-4564-bf38-eec7ab1c4ea7)/profile.html "Prof Jim Woodcock, FREng"] {{Webarchive|url=https://web.archive.org/web/20221003045937/https://pure.york.ac.uk/portal/en/researchers/jim-woodcock%28c9e521d6-3c93-4564-bf38-eec7ab1c4ea7%29/profile.html |date= 3 October 2022 }}. UK: [[University of York]].</ref> As part of the CICS project, Sørensen extended [[Edsger Dijkstra]]'s ''Guarded Command Language'' by allowing the use of Z-schema notation as abstract commands.<ref name="hayes-king21">Hayes, Ian J.; King, Steve (2021). "11.9 Industry Influence on Research". In [[Cliff Jones (computer scientist)|Jones, Cliff B.]]; [[Jayadev Misra|Misra, Jayadev]] (eds.). ''Theories of Programming: The Life and Works of Tony Hoare''. [[Association for Computing Machinery]]. pp. 266–267. {{ISBN|978-1-4503-8728-6}}.</ref> These ideas were later formalized by [[Carroll Morgan (computer scientist)|Carroll Morgan]] in his [[refinement calculus]].<ref name="hayes-king21" />


Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and [[Bertrand Meyer]].<ref>{{Citation | first1 = Jean-Raymond | last1 = Abrial | first2 = Stephen A | last2 = Schuman | first3 = Bertrand | last3 = Meyer | contribution = A Specification Language | title = On the Construction of Programs | publisher = [[Cambridge University Press]] | editor1-first = A. M. | editor1-last = Macnaghten | editor2-first = R. M. | editor2-last = McKeag | year = 1980 | isbn = 0-521-23090-X}} (describes early version of the language).</ref> It was developed further at the [[Programming Research Group]] at [[Oxford University]], where Abrial worked in the early 1980s, having arrived at Oxford in September 1979.
Z ''schema'' boxes were added by [[Carroll Morgan (computer scientist)|Carroll Morgan]] for the structuring of larger specifications.<ref name="Woodcock1989">{{cite journal| url=https://people.eecs.ku.edu/~saiedian/812/Lectures/Z/intro6-Z.pdf | title=Structuring specifications in Z | first=J.C.P. | last=Woodcock | author-link=Jim Woodcock | journal=[[Software Engineering Journal]] | volume=4 | number=1 | doi=10.1049/sej.1989.0007 | page=51–66 | date=January 1989 | publisher=[[Institution of Electrical Engineers|IEE]] }}</ref> Ian Hayes edited the 1987 book ''Specification Case Study'' on the use of Z (2nd edition published in 1993),<ref>Hayes, Ian, ed. (1993). [http://red.cs.nott.ac.uk/~rxq/files/SpecificationCaseStudies.pdf Specification Case Studies] {{Webarchive|url=https://web.archive.org/web/20150620140906/http://red.cs.nott.ac.uk/~rxq/files/SpecificationCaseStudies.pdf |date=20 June 2015 }}. International Series in Computer Science (2nd ed.). [[Prentice Hall]]. {{ISBN|978-0-13-832544-2}}.</ref> with contributions from Morgan, Sørensen, Sufrin, and others. A ''de facto'' standard for Z was produced as a book by [[Michael Spivey|Mike Spivey]] in 1989 (2nd edition, 1992).<ref name="Spivey1992">{{cite book| last=Spivey | first=J. Michael | authorlink=Michael Spivey | title=The Z Notation: A Reference Manual | edition=2nd | location=Hemel Hempstead | publisher=[[Prentice Hall]] | series=International Series in Computer Science | date=1992 | isbn=978-0139785290 }}</ref>


Abrial has said that Z is so named "Because it is the ultimate language!"<ref>{{cite web|
Abrial has said that Z is so named "Because it is the ultimate language!"<ref>{{cite web|
  url=http://liacs.leidenuniv.nl/~hoogeboomhj/praatjes/formalmethods/formalmethods.pdf |
  url=https://liacs.leidenuniv.nl/~hoogeboomhj/praatjes/formalmethods/formalmethods.pdf |
  title=Formal Methods in Software Engineering | first=Hendrik Jan | last=Hoogeboom | publisher=[[University of Leiden]] | location=The Netherland | access-date=14 April 2017 }}</ref> although the name "[[Ernst Zermelo|Zermelo]]" is also associated with the Z notation through its use of [[Zermelo–Fraenkel set theory]].
  title=Formal Methods in Software Engineering | first=Hendrik Jan | last=Hoogeboom | publisher=[[University of Leiden]] | location=The Netherlands | access-date=14 April 2017 }}</ref> although the name "[[Ernst Zermelo|Zermelo]]" is also associated with the Z notation through its use of [[Zermelo–Fraenkel set theory]].
 
In 1992, the [[Z User Group]] (ZUG) was established to oversee activities concerning the Z notation, especially meetings and conferences.<ref name="zug22">{{cite news| first=Jonathan | last=Bowen | authorlink=Jonathan Bowen | title=The Z User Group: Thirty Years After | work=[[FACS FACTS]] | publisher=[[BCS-FACS]] | issue=2022–2 | pages=50–56 | date=July 2022 | url=https://www.bcs.org/media/9401/facs-jul22.pdf | accessdate=3 August 2022 }}</ref>


==Usage and notation==
==Usage and notation==
Z is based on the standard mathematical notation used in [[axiomatic set theory]], [[lambda calculus]], and [[first-order predicate logic]].<ref>{{cite book| last=Spivey | first=J. Michael | authorlink=Michael Spivey | title=The Z Notation: A Reference Manual | edition=2nd | location=Hemel Hempstead | publisher=[[Prentice Hall]] | series=International Series in Computer Science | date=1992 | isbn=978-0139785290 }}</ref> All expressions in Z notation are [[Type (model theory)|typed]], thereby avoiding some of the [[Naive set theory#Paradoxes|paradoxes of naive set theory]]. Z contains a standardized catalogue (called the ''mathematical toolkit'') of commonly used mathematical functions and predicates, defined using Z itself. It is augmented with '''Z schema''' boxes, which can be combined using their own operators, based on standard logical operators, and also by including schemas within other schemas. This allows Z specifications to be built up into large specifications in a convenient manner.
Z is based on the standard mathematical notation used in [[axiomatic set theory]], [[lambda calculus]], and [[first-order predicate logic]].<ref name="Spivey1992" /> All expressions in Z notation are [[Type (model theory)|typed]], thereby avoiding some of the [[Naive set theory#Paradoxes|paradoxes of naive set theory]]. Z contains a standardized catalogue (called the ''mathematical toolkit'') of commonly used mathematical functions and predicates, defined using Z itself. It is augmented with '''Z schema''' boxes, which can be combined using their own operators, based on standard logical operators, and also by including schemas within other schemas.<ref name="Woodcock1989" /> This allows Z specifications to be built up into large specifications in a convenient manner.


Because Z notation uses many non-[[ASCII]] symbols, the specification includes suggestions for rendering the Z notation symbols in [[ASCII]] and in [[LaTeX]]. There are also [[Unicode]] encodings for all standard Z symbols.<ref>{{cite web| url=https://unicode-search.net/unicode-namesearch.pl?term=Z%20NOTATION | title=Unicode Explained: Internationalize Documents, Programs, and Web Sites | first=Jukka K. | last=Korpela | website=unicode-search.net | access-date=24 March 2020 }}</ref>
==Z User Group==
{{main|Z User Group}}
In 1985, a series of Z Users Meetings was instigated by Ib Sørensen, initially at [[Rewley House]] in [[Oxford]].<ref name="zug22" /> In 1992, the [[Z User Group]] (ZUG) was established at one of these meetings to oversee activities concerning the Z notation, especially meetings and conferences.<ref name="zug22" /> ZUG continued to organize regular Z User Workshops/Meetings (ZUM). Later, when they began to be held outside the United Kingdom, these became known as the International Conference of Z Users. Later still, these conferences were combined to cover the [[B-Method]] as well, becoming known as the International Conference of B and Z Users (ZB).


==Standards==
==Standards==
[[International Organization for Standardization|ISO]] completed a Z standardization effort in 2002. This standard<ref name = "Standard">{{cite book | title = Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics | chapter-url = http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=21573 | chapter = ISO/IEC 13568:2002 | date = 2002-07-01 | publisher = ISO | url = http://standards.iso.org/ittf/PubliclyAvailableStandards/c021573_ISO_IEC_13568_2002(E).zip | format = [[Zip (file format)|Zip]]ped [[PDF]]}}  196 pp.</ref> and a technical corrigendum<ref name = "Corrigendum">{{cite book | title = Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics — Technical corrigendum 1 | url = http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=46112 | chapter = ISO/IEC 13568:2002/Cor.1:2007 | publisher = ISO | date = 2007-07-15 | format = PDF}}  12 pp.</ref> are available from ISO free:
[[International Organization for Standardization|ISO]] completed a Z standardization effort in 2002. This standard<ref name = "Standard">{{cite book | title = Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics | chapter-url = http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=21573 | chapter = ISO/IEC 13568:2002 | date = 2002-07-01 | publisher = ISO | url = https://standards.iso.org/ittf/PubliclyAvailableStandards/c021573_ISO_IEC_13568_2002(E).zip | format = [[Zip (file format)|Zip]]ped [[PDF]]}}  196 pp.</ref> and a technical corrigendum<ref name = "Corrigendum">{{cite book | title = Information Technology — Z Formal Specification Notation — Syntax, Type System and Semantics — Technical corrigendum 1 | url = http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=46112 | chapter = ISO/IEC 13568:2002/Cor.1:2007 | publisher = ISO | date = 2007-07-15 | format = PDF}}  12 pp.</ref> are available from ISO free:
* the standard is publicly available<ref name = "Standard" /> from the ISO ITTF site free of charge and, separately, available for purchase<ref name = "Standard" /> from the ISO site;
 
* the technical corrigendum is available<ref name = "Corrigendum" /> from the ISO site free of charge.
* the standard is publicly available<ref name = "Standard" /> freely from ISO ITTF and, separately, available for purchase<ref name = "Standard" /> from the ISO site;
* the technical corrigendum is available<ref name = "Corrigendum" /> freely from ISO.
 
Because Z notation uses many non-[[ASCII]] symbols, the specification includes suggestions for rendering the Z notation symbols in [[ASCII]] and in [[LaTeX]]. There are also [[Unicode]] encodings for all standard Z symbols.<ref>{{cite web | url=https://unicode-search.net/unicode-namesearch.pl?term=Z%20NOTATION | title=Unicode Explained: Internationalize Documents, Programs, and Web Sites | first=Jukka K. | last=Korpela | website=unicode-search.net | access-date=24 March 2020 | archive-date=24 March 2020 | archive-url=https://web.archive.org/web/20200324115418/https://unicode-search.net/unicode-namesearch.pl%3Fterm%3DZ%2520NOTATION | url-status=dead }}</ref>


==Award==
==Award==
Line 30: Line 40:


==Further reading==
==Further reading==
*{{cite book
*{{cite book | author-link = John Michael Spivey | first = John Michael | last = Spivey | title = The Z Notation: A reference manual | edition = 2nd | year = 1992 | publisher = [[Prentice Hall]] | series = International Series in Computer Science | url = https://spivey.oriel.ox.ac.uk/corner/Z_Reference_Manual | archive-date = 8 December 2019 | access-date = 24 March 2020 | archive-url = https://web.archive.org/web/20191208055339/https://spivey.oriel.ox.ac.uk/corner/Z_Reference_Manual | url-status = dead }}
| author-link = John Michael Spivey| first = John Michael | last = Spivey
*{{cite book|title=Using Z: Specification, Refinement and Proof|last1=Davies|first1=Jim|author-link1=Jim Davies (computer scientist)|last2=Woodcock|first2=Jim|author-link2=Jim Woodcock|publisher=Prentice Hall|year=1996|isbn=0-13-948472-8|series=International Series in Computer Science|url=http://www.usingz.com/|archive-date=5 April 2007|access-date=22 March 2006|archive-url=https://web.archive.org/web/20070405133311/http://www.usingz.com/|url-status=dead}}
| title = The Z Notation: A reference manual | edition = 2nd | year = 1992
| publisher = [[Prentice Hall]] | series = International Series in Computer Science | url=https://spivey.oriel.ox.ac.uk/corner/Z_Reference_Manual }}
*{{cite book|title=Using Z: Specification, Refinement and Proof|last1=Davies|first1=Jim|author-link1=Jim Davies (computer scientist)|
last2=Woodcock|first2=Jim|author-link2=Jim Woodcock| publisher=Prentice Hall|year=1996|isbn=0-13-948472-8|series=International Series in Computer Science | url=http://www.usingz.com/ }}
*{{cite book|title=Formal Specification and Documentation using Z: A Case Study Approach|last=Bowen|first=Jonathan| publisher=International Thomson Computer Press, [[International Thomson Publishing]] |year=1996|isbn=1-85032-230-9|author-link=Jonathan Bowen | url=https://www.researchgate.net/publication/2480325 }}
*{{cite book|title=Formal Specification and Documentation using Z: A Case Study Approach|last=Bowen|first=Jonathan| publisher=International Thomson Computer Press, [[International Thomson Publishing]] |year=1996|isbn=1-85032-230-9|author-link=Jonathan Bowen | url=https://www.researchgate.net/publication/2480325 }}
*{{cite book|title=The Way of Z: Practical Programming with Formal Methods|last=Jacky|first=Jonathan| publisher=[[Cambridge University Press]] |year=1997|isbn=0-521-55976-6| url=https://staff.washington.edu/jon/z-book/ }}
*{{cite book|title=The Way of Z: Practical Programming with Formal Methods|last=Jacky|first=Jonathan| publisher=[[Cambridge University Press]] |year=1997|isbn=0-521-55976-6| url=https://staff.washington.edu/jon/z-book/ }}

Latest revision as of 17:15, 21 June 2026

Template:Short description Script error: No such module "Unsubst".

File:Agendacumple en Z.svg
An example of a formal specification (in Spanish) using the Z notation, with named schema boxes, including declarations and predicates

The Z notation Script error: No such module "IPAc-en". is a formal specification language used for describing and modelling computing systems.[1] It is targeted at the clear specification of computer programs and computer-based systems in general.

History

File:JRA Jean-Raymond Abrial.jpg
Jean-Raymond Abrial, the main originator of the Z notation

In 1974, Jean-Raymond Abrial[2] published "Data Semantics".[3] He used a notation that would later be taught in the University of Grenoble until the end of the 1980s.

While at EDF (Électricité de France), working with Bertrand Meyer, Abrial also worked on developing Z.[4] Z was originally proposed by Abrial in 1977 with the help of Steve Schuman and Bertrand Meyer.[5] The Z notation is used in the 1980 book Méthodes de programmation.[6]

Z was developed further at the Programming Research Group at Oxford University, where Abrial worked in the early 1980s with researchers including Bernard Sufrin and Template:Interlanguage link multi (1949–2012),[7] having arrived at Oxford in September 1979.[8] Sørensen received a DPhil degree from Oxford University in 1981 on early Z-based research.[9] He taught early courses in Z notation at Oxford[10] and established the Z User Meeting series, initially in Oxford.[11]


Template:Interlanguage link multi led the Transaction Processing Project at Oxford University from its inception in 1982 (later renamed the "CICS Project",[12]), in collaboration with IBM Hursley.[13] The project formally specified parts of IBM's CICS transaction processing software using Z notation. This won a Queen's Award for Technological Achievement in 1992.[14][15] As part of the CICS project, Sørensen extended Edsger Dijkstra's Guarded Command Language by allowing the use of Z-schema notation as abstract commands.[16] These ideas were later formalized by Carroll Morgan in his refinement calculus.[16]

Z schema boxes were added by Carroll Morgan for the structuring of larger specifications.[17] Ian Hayes edited the 1987 book Specification Case Study on the use of Z (2nd edition published in 1993),[18] with contributions from Morgan, Sørensen, Sufrin, and others. A de facto standard for Z was produced as a book by Mike Spivey in 1989 (2nd edition, 1992).[19]

Abrial has said that Z is so named "Because it is the ultimate language!"[20] although the name "Zermelo" is also associated with the Z notation through its use of Zermelo–Fraenkel set theory.

Usage and notation

Z is based on the standard mathematical notation used in axiomatic set theory, lambda calculus, and first-order predicate logic.[19] All expressions in Z notation are typed, thereby avoiding some of the paradoxes of naive set theory. Z contains a standardized catalogue (called the mathematical toolkit) of commonly used mathematical functions and predicates, defined using Z itself. It is augmented with Z schema boxes, which can be combined using their own operators, based on standard logical operators, and also by including schemas within other schemas.[17] This allows Z specifications to be built up into large specifications in a convenient manner.

Z User Group

Script error: No such module "Labelled list hatnote". In 1985, a series of Z Users Meetings was instigated by Ib Sørensen, initially at Rewley House in Oxford.[11] In 1992, the Z User Group (ZUG) was established at one of these meetings to oversee activities concerning the Z notation, especially meetings and conferences.[11] ZUG continued to organize regular Z User Workshops/Meetings (ZUM). Later, when they began to be held outside the United Kingdom, these became known as the International Conference of Z Users. Later still, these conferences were combined to cover the B-Method as well, becoming known as the International Conference of B and Z Users (ZB).

Standards

ISO completed a Z standardization effort in 2002. This standard[21] and a technical corrigendum[22] are available from ISO free:

  • the standard is publicly available[21] freely from ISO ITTF and, separately, available for purchase[21] from the ISO site;
  • the technical corrigendum is available[22] freely from ISO.

Because Z notation uses many non-ASCII symbols, the specification includes suggestions for rendering the Z notation symbols in ASCII and in LaTeX. There are also Unicode encodings for all standard Z symbols.[23]

Award

In 1992, Oxford University Computing Laboratory and IBM were jointly awarded The Queen's Award for Technological Achievement "for the development of ... the Z notation, and its application in the IBM Customer Information Control System (CICS) product."[24]

Further reading

  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".
  • Script error: No such module "citation/CS1".

See also

References

<templatestyles src="Reflist/styles.css" />

  1. ↑ Script error: No such module "citation/CS1".
  2. ↑ Script error: No such module "Citation/CS1".
  3. ↑ Script error: No such module "citation/CS1".
  4. ↑ Script error: No such module "citation/CS1".
  5. ↑ Script error: No such module "citation/CS1". (describes early version of the language).
  6. ↑ Script error: No such module "citation/CS1".
  7. ↑ Script error: No such module "Citation/CS1".
  8. ↑ Script error: No such module "Citation/CS1".
  9. ↑ Sørensen, Ib Holm (1981). Topics in program specification and design: specification and design of distributed systems Script error: No such module "webarchive". (DPhil). UK: Wolfson College, University of Oxford.
  10. ↑ Woodcock, Jim; Davies, Jim (1996). "Acknowledgments". Using Z: Specification, Refinement, and Proof. International Series in Computer Science. Prentice Hall. Template:ISBN.
  11. ↑ a b c Script error: No such module "citation/CS1".
  12. ↑ Fitzgerald, J. S. (October 2006). Perspectives on Formal Methods in the Last 25 years. Technical Report Series. Vol. CS-TR-983. UK: Newcastle University.
  13. ↑ Hayes, Ian (1993). "Preface to the first edition". Specification Case Studies. International Series in Computer Science (2nd ed.). Prentice Hall. Template:ISBN.
  14. ↑ King, Steve (1993). "The Use of Z in the Restructure of IBM CICS". In Hayes, Ian (ed.). Specification Case Studies. International Series in Computer Science (2nd ed.). Prentice Hall. pp. 202–213. Template:ISBN.
  15. ↑ "Prof Jim Woodcock, FREng" Script error: No such module "webarchive".. UK: University of York.
  16. ↑ a b Hayes, Ian J.; King, Steve (2021). "11.9 Industry Influence on Research". In Jones, Cliff B.; Misra, Jayadev (eds.). Theories of Programming: The Life and Works of Tony Hoare. Association for Computing Machinery. pp. 266–267. Template:ISBN.
  17. ↑ a b Script error: No such module "Citation/CS1".
  18. ↑ Hayes, Ian, ed. (1993). Specification Case Studies Script error: No such module "webarchive".. International Series in Computer Science (2nd ed.). Prentice Hall. Template:ISBN.
  19. ↑ a b Script error: No such module "citation/CS1".
  20. ↑ Script error: No such module "citation/CS1".
  21. ↑ a b c Script error: No such module "citation/CS1". 196 pp.
  22. ↑ a b Script error: No such module "citation/CS1". 12 pp.
  23. ↑ Script error: No such module "citation/CS1".
  24. ↑ Script error: No such module "citation/CS1".

Script error: No such module "Check for unknown parameters".

Script error: No such module "Navbox". Template:List of IEC standards Script error: No such module "Authority control".