Re: [xml-dev] Are there invariants in XML processing?

From
G. Ken Holman <>
To
Stefan Hagen <>, Rick Jelliffe <>, "" <>
Date
2022-05-01T17:34:56Z
ID
<>
Thread
Re: [xml-dev] Are there invariants in XML processing?
Thank you, Stefan! Interesting points made. I 
think it will take me a while to internalize the distinctions.

. . . . . Ken

At 2022-05-01 17:47 +0200, Stefan Hagen wrote:
>On Sun, May 1, 2022, at 15:44, G. Ken Holman wrote:
>>Forgive me, but I'm trying to understand the use
>>of the noun "invariant". This is the first I've
>>seen it used, and it is being bandied about.
>>Rick's post using it extensively is dated 2016,
>>so I feel very much out of the loop.
>>
>>Is an invariant any different than a constraint?
>>
>>Does the use of this noun come from another 
>>discipline where the use is common?
>>
>>When does it help the listener/reader to use the
>>noun "invariant" rather than "constraint" or some other word?
>>
>>Thanks for your patience with my questions ... I'm just curious.
>>
>>. . . . . Ken
>>
>>At 2022-05-01 14:08 +1000, Rick Jelliffe wrote:
>> >For a Schematron introduction to this, including
>> >document invariants (fixed and co-occurrence)
>> >and input/output invariants, and round-trip
>> >invariants, see Six Kinds of Validation using
>> >Schematron at
>> ><<https://www.schematron.com/document/279.html 
>>  >https://www.schematron.com/document/279.html>https://www.schematron.com/document/279.html
>> >
>> >For people interest in the practical theory of
>> >invariants, Bertam Meyers' work on Design by
>> >Contact still is a great place to start: he
>> >couches it in functional terms of pre-condition,
>> >invariant,  post-condition, which I think is
>> >more systematic than just "invariants".
>> >
>> >For the example, the Schematron IO validation
>> >(output to input) might be (roughly)
>> >
>> ><sch:pattern
>> >id="publicMilitaryIndicator-nullTransform" documents="'input.xml'">
>> >
>> >Â  Â  Â <sch:rule context="publicMilitaryIndicator">
>> >Â  Â  Â  Â  Â  Â  Â <sch:let
>> >name="matching-output" value="myFunc:findMatchingRow(., 'output.xml')" />
>> >Â  Â  Â  Â  Â Â
>> >Â  Â  Â  Â  Â  Â  Â  <sch:assert test="TYPE =
>> >'A' or TYPE = 'B' or TYPE = 'C'"
>> >role="pre-condition" >Every
>> >publicMilitaryIndicator input should have a
>> >TYPEÂ  with value A, b, or C (i.e., Civil, Joint, Military)</sch:assert>
>> >
>> >Â  Â  Â  Â  Â  Â  Â Â Â <sch:assert
>> >test="$matching-output/TYPE = 'A' orÂ
>> >$matching-output/TYPE = 'B' orÂ
>> >$matching-output/TYPE = 'C'"
>> >role="post-condition" >Every
>> >publicMilitaryIndicator output should have a
>> >TYPEÂ  with value A, b, or C (i.e., Civil, Joint, Military)</sch:assert>
>> >
>> >Â  Â  Â Â Â  Â  Â  Â <sch:assert
>> >test="$matching-output" role="invariant">Every
>> >input publicMilitaryIndicator should have a matching output</sch:assert>
>> >
>> >Â  Â  Â  Â Â Â Â  Â Â <sch:assert
>> >test="$matching-output/TYPE= ./TYPE"
>> >role="invariant" >Every input
>> >publicMilitaryIndicator TYPE value should be
>> >carried through to the output</sch:assert>
>> >
>> ></sch:rule></sch:pattern>
>> >
>> >Rick
>>
>>_______________________________________________________________________
>>
>>XML-DEV is a publicly archived, unmoderated list hosted by OASIS
>>to support XML implementation and development. To minimize
>>spam in the archives, you must subscribe before posting.
>>
>>[Un]Subscribe/change address: 
>><http://www.oasis-open.org/mlmanage/>http://www.oasis-open.org/mlmanage/
>>Or unsubscribe: 
>><mailto:>
>>subscribe: 
>><mailto:>
>>List archive: 
>><http://lists.xml.org/archives/xml-dev/>http://lists.xml.org/archives/xml-dev/
>>List Guidelines: 
>><http://www.oasis-open.org/maillists/guidelines.php>http://www.oasis-open.org/maillists/guidelines.php
>Invariant to me signals not varying under some assumptions.
>Constraints are external to, while invariants 
>are internal to the system we observe.
>Constraints may result in invariants.
>If cows cannot leave a fenced field, the number of cows is the invariant.
>Constraints can be many, like no one opening the 
>fence, no cow strong and willing enough to break 
>through, no big enough holes appearing, no bird 
>of prey large enough striking and lifting, …
>That is what I am used to.
>
>Best,
>Stefan


--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/x/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @US$125 (5 hours free) |
Essays (UBL, XML, etc.) http://www.linkedin.com/today/author/gkholman |