<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
p.quotation, li.quotation, div.quotation
        {mso-style-name:quotation;
        mso-style-link:"quotation Char";
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Times New Roman",serif;
        font-weight:bold;
        font-style:italic;}
span.quotationChar
        {mso-style-name:"quotation Char";
        mso-style-link:quotation;
        font-family:"Times New Roman",serif;
        font-weight:bold;
        font-style:italic;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
span.EmailStyle24
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink=purple><div class=WordSection1><p class=MsoNormal>Thanks, Marcus, <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Am I correct that all of your examples fall with in this frame;<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_s1026" type="#_x0000_t75" style='position:absolute;margin-left:0;margin-top:0;width:303.5pt;height:71pt;z-index:251658240;visibility:visible;mso-wrap-style:square;mso-wrap-distance-left:9pt;mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;mso-wrap-distance-bottom:0;mso-position-horizontal:left;mso-position-horizontal-relative:text;mso-position-vertical:top;mso-position-vertical-relative:text'>
<v:imagedata src="cid:image001.png@01D5D37E.90090D30" o:title="" />
<w:wrap type="square"/>
</v:shape><![endif]--><![if !vml]><img width=405 height=95 style='width:4.2152in;height:.9861in' src="cid:image003.png@01D5D37E.ED251C70" align=left hspace=12 v:shapes="Picture_x0020_1"><![endif]><br clear=all><o:p></o:p></p><p class=MsoNormal>I keep expecting you guys to scream at me, “Of course, you idiot, self-perception is partial and subject to error!  HTF could it be otherwise?”   I would love that.  I would record it and put it on loop for half my colleagues in psychology departments around the world.  <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Nick <o:p></o:p></p><div><p class=MsoNormal>Nicholas Thompson<o:p></o:p></p><p class=MsoNormal>Emeritus Professor of Ethology and Psychology<o:p></o:p></p><p class=MsoNormal>Clark University<o:p></o:p></p><p class=MsoNormal><a href="mailto:ThompNickSon2@gmail.com"><span style='color:#0563C1'>ThompNickSon2@gmail.com</span></a><o:p></o:p></p><p class=MsoNormal><a href="https://wordpress.clarku.edu/nthompson/"><span style='color:#0563C1'>https://wordpress.clarku.edu/nthompson/</span></a><o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal><o:p> </o:p></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b>From:</b> Friam <friam-bounces@redfish.com> <b>On Behalf Of </b>Marcus Daniels<br><b>Sent:</b> Saturday, January 25, 2020 12:16 PM<br><b>To:</b> The Friday Morning Applied Complexity Coffee Group <friam@redfish.com><br><b>Subject:</b> Re: [FRIAM] Abduction and Introspection<o:p></o:p></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><b><span style='font-size:12.0pt'>Nick writes:<o:p></o:p></span></b></p><p class=MsoNormal> <o:p></o:p></p><p class=quotation> As software engineers, what conditions would a program have to fulfill to say that a computer was monitoring “itself<o:p></o:p></p><p class=quotation style='margin-left:0in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'><o:p> </o:p></span></p><p class=quotation style='margin-left:0in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;font-weight:normal;font-style:normal'>It is common for codes that calculate things to periodically test invariants that should hold.   For example, a physics code might test for conservation of mass or energy.   A conversion between a data structure with one index scheme to another is often followed by a check to ensure the total number of records did not change, or if it did change that it changed by an expected amount.   It is also possible, but less common, to write a code so that proofs are constructed by virtue of the code being compliable against a set of types.   The types describe all of the conditions that must hold regarding the behavior of a function.    In that case it is not necessary to detect if something goes haywire at runtime because it is simply not possible for something to go haywire.  (A computer could still miscalculate due to a cosmic ray, or some other physical interruption, but assuming that did not happen a complete proof-carrying code would not fail within its specifications.)<o:p></o:p></span></p><p class=quotation style='margin-left:0in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;font-weight:normal;font-style:normal'>A weaker form of self-monitoring is to periodically check for memory or disk usage, and to raise an alarm if they are unexpectedly high or low.   Such an alarm might trigger cleanups of old results, otherwise kept around for convenience.  <o:p></o:p></span></p><p class=quotation style='margin-left:0in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;font-weight:normal;font-style:normal'><o:p> </o:p></span></p><p class=quotation style='margin-left:0in'><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;font-weight:normal;font-style:normal'>Marcus<o:p></o:p></span></p><p class=MsoPlainText><o:p> </o:p></p></div></body></html>