-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
584 lines (452 loc) · 32.7 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="description" content="Logic for progress : Logic for Progress is a project devoted to improving the quality of deliberation on contentious issues.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="google-site-verification" content="1MDLWShJ3pkSC2jwrMXStUmhf1xYNxYE96ty9fQ-6vo" />
<link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
<link rel="stylesheet" href="dependencies/font-awesome-4.4.0/css/font-awesome.min.css">
<link rel="stylesheet" type="text/css" href="dependencies/tipped-4.5.7-light/css/tipped/tipped.css"/>
<style>
/* From http://www.w3schools.com/css/css_tooltip.asp */
/* Tooltip container */
.tooltip {
position: relative;
display: inline-block;
border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
}
/* Tooltip text */
.tooltip .tooltiptext {
visibility: hidden;
width: 240px;
/*width: auto;*/
background-color: black;
color: #fff;
text-align: center;
padding: 5px 0;
border-radius: 6px;
/* Position the tooltip text - see examples below! */
position: absolute;
z-index: 1;
}
/* Show the tooltip text when you mouse over the tooltip container */
.tooltip:hover .tooltiptext {
visibility: visible;
}
</style>
<style>
.show-hide-trigger {
margin-top: .4em;
}
.lfp-hideable.lfp-shown {
display: initial;
}
.lfp-hideable.lfp-hidden {
display: none;
}
</style>
<style>
.inline-shown {
display: initial;
}
.inline-hidden {
display: none;
}
.trig::before {
content: "(";
}
.trig::after {
content: "⋯)";
}
.trig {
display: inline-block;
width: 1.5 em;
}
.trig.emph {
/*color: blue;*/
color: #007edf;
}
.collapsed {
display: none;
}
.text-trig {
color: #007edf;
}
.text-trig::before {
content: "(";
}
.text-trig::after {
content: ")";
}
</style>
<style>
/* ? */
.centered-par {
}
</style>
<style>
.wip {
display:none;
/*color: blue;*/
}
</style>
<style>
b {
font-weight: bold;
}
</style>
<style>
body {
font-size: large;
}
</style>
<title>Logic for Progress</title>
</head>
<body>
<!-- HEADER -->
<div id="header_wrap" class="outer">
<header class="inner">
<!-- <a id="forkme_banner" href="https://github.com/DustinWehr/logic-for-progress">View on GitHub</a> -->
<!-- border:none; border-width:0px; box-shadow:none; -webkit-box-shadow:none; -moz-box-shadow:none; -o-box-shadow:none; -ms-box-shadow:none; margin:0; padding:0 -->
<div style="vertical-align:middle;">
<img src="images/LfP_logo.svg" style="width:25%; height:15%; filter: invert(100%); -webkit-filter: invert(); vertical-align:middle">
<span id="project_title" style="vertical-align:middle;">Logic for Progress</span>
</div>
<!-- <h2 id="project_tagline">Devoted to improving the quality of deliberation on contentious issues</h2> -->
<!-- <section id="downloads">
<a class="zip_download_link" href="https://github.com/DustinWehr/logic-for-progress/zipball/master">Download this project as a .zip file</a>
<a class="tar_download_link" href="https://github.com/DustinWehr/logic-for-progress/tarball/master">Download this project as a tar.gz file</a>
</section> -->
</header>
</div>
<!-- MAIN CONTENT -->
<div id="main_content_wrap" class="outer">
<section id="main_content" class="inner">
<!-- <h1>
<a id="logic-for-progress" class="anchor" href="#logic-for-progress" aria-hidden="true"><span class="octicon octicon-link"></span></a>Logic for Progress</h1> -->
<ul class='fa-ul' id='sections'>
<!-- Logic for Progress is a registered non-profit that aims to advance the quality of deliberation on contentious social issues by researching and facilitating the application of formal logic. We believe that mathematicians and logicians have a role to play in improving the caliber of law, learning, and public discourse. -->
<!-- <li>
<h3 class='homepage-section-title'>GET HIGH FIRST, or no stims</h3>
</li> -->
<p>
<a id='promises'></a>What if there was a system of rules that makes lying with statistics much harder, that facilitates the use of expert knowledge without having to trust the overall judgement and reasoning of the experts, and that can be used methodically to uncover fundamental sources of disagreement? How much extra effort would it be worth to use such a system?
</p>
<li>
<h3 class='homepage-section-title'>Who We Are</h3>
<span class="show-hide-trigger fa fa-li lfp-shown"'></span>
<span class='lfp-hideable'>
<p>
Logic for Progress is a registered non-profit that aims to advance the quality of deliberation on contentious social issues, in part by leveraging the high standards of
<a class="tipped simple-tooltip" title="This will be explained in detail in the material on this site. In broad terms, formal deductive logic is the strictest possible system of rules for preventing errors in reasoning. It is the system used by proof-focused mathematicians that is most responsible for the extreme levels of consensus in pure mathematics on what is known to be true about certain structures.">formal deductive logic</a>, which are much higher than the standards of applied statistics and philosophy, and when used properly <span class='trig emph'></span><span class='collapsed'>i.e. Formal Deductive Deliberation; see below</span>, help to avoid flawed reductionist mathematical modeling as usually found in economics and game theory.
<!-- Logic for Progress will allow proof-focused mathematicians to help... -->
<!-- <span class="qtip tooltip tooltip-trigger">formal deductive logic<span class="tooltiptext tooltip qtip tooltip-trigger">This will be explained in detail in the material on this site. In broad terms, formal deductive logic is the strictest possible system of rules for preventing errors in reasoning. It is the system used by mathematicians that is most responsible for the extreme levels of consensus in mathematics on what is known to be true about certain structures.</span></span> -->
<!-- achieved in mathematics The system of rules used by mathematicians for deriving conclusions from assumptions, which ensures that if all the assumptions are true with respect to a given interpretation of the symbols, then the conclusion is true with respect to the same interpretation. -->
<!-- researching, educating, and facilitating the application of formal logic through Formal Deductive Deliberation. -->
<!-- We believe that proof-focused mathematicians and logicians have a role to play in improving the caliber of law, learning, and public discourse. As it is now, they have no role whatsoever. -->
</p>
<!-- <p>Logic for Progress is a registered non-profit that aims to advance the quality of deliberation on contentious social issues by researching and facilitating the application of formal logic. We believe that logicians and mathematicians have a role to play in improving the caliber of law, learning, and public discourse. -->
</span>
</li>
<li>
<h3 class='homepage-section-title'>The Problem</h3>
<span class="show-hide-trigger fa fa-li lfp-shown"'></span>
<span class='lfp-hideable'>
<p>
We carry smartphones that rival supercomputers of days past. We’re witnessing the birth of space tourism and driverless cars. A surgeon can replace your knees with titanium and have you walking around the next day. And yet, it seems that we have made no overall progress, in a hundred years, on how we deliberate and decide on the most important problems for society. When we discuss and debate the most critical and contentious issues (those related to justice, economics, health, environment, war, etc) we do so either in a highly rhetorical manner intended to persuade, or in a highly obtuse manner that can only be understood by specialists. In either case, it is difficult to differentiate between fact, assumption, and logic. The biases and misconceptions we all possess, even the most conscientious of us, have too great an opportunity to exert themselves. In order to reduce their influence in significant and difficult decisions, we must use methods that force them to be examined openly.
<!-- The most important problems for society are presently discussed in a highly rhetorical manner intended to persuade, or in a highly obtuse manner that can only be understood by specialists. In either case, it is difficult to differentiate between fact, assumption, and logic. In this ambiguous light, the biases and misconceptions we all possess have too great an opportunity to exert themselves. In order to reduce their influence in significant and difficult decisions, we must use methods that force them to be examined openly. -->
</p>
<!-- <p>In law and public policy, we should be putting our best efforts into a reasonable and thorough conversation, as free from prejudice as possible. Formal logic, the science of correct reasoning, has been developed over centuries and has the potential to transform the way we reason about contentious issues. Logic for Progress seeks to make the application of logic accessible, while researching its utility in legal, policy, and public contexts.</p> -->
<!-- <p>We have developed a surprisingly-accessible, web-based software tool, Structure Together. This program simplifies the collaborative creation of LfP’s main product: <emph>interpreted formal proof dialogues</emph>. An interpreted formal proof is an argument whose objective, logical part is verified correct by an automated program, and whose fundamental, real-world concepts and entities are defined in plain English. To scrutinize an IFP, a reader need only focus on the claims, assumptions and informal definitions. A patient reader does not need a background in mathematics to understand an ideal IFP, in which the assumptions are relatively simple even though the automatically-verified derivations are complex. That ideal, however, is only achieved after a process of collaborative scrutiny, criticism, and revision, which is what interpreted formal proof dialogues are for. They are used for two things: (1) to challenge claims and assumptions, and (2) to force the authors to strengthen the precision of their informal definitions of fundamental concepts and entities. The Structure Together web app makes this process practical and accessible, and allows for remote collaboration.</p>
<p>In applying this method to social issues, we are able to provide a clear separation between one’s logical reasoning and one’s claims and assumptions. This clarifies the fundamental points of contention and focuses the conversation, reducing the impact of rhetoric on the outcome of major social and legal decisionmaking. Prior to the foundation of Logic for Progress, this method was tested on a smaller scale in the <a href="http://www.cs.toronto.edu/~wehr/thesis/index.html">doctoral work</a> of Dr. Wehr. It has been applied to physician assisted suicide, a gender discrimination lawsuit, wrongful conviction cases, and arguments from analytical philosophy.</p>
<p>While the software is specifically designed to be accessible to those without a background in mathematics, it does require someone with mathematical maturity to be involved in the process. This is a new and very rare opportunity for collaboration between the fields of (proof-based) mathematics and the humanities. It provides career and volunteer opportunities for mathematicians, logicians, and computer scientists who currently have no outlet for using their knowledge and skills toward social betterment.</p> -->
</span>
</li>
<li>
<h3 class='homepage-section-title'>Our Approach - Formal Deductive Deliberation</h3>
<span class="show-hide-trigger fa fa-li lfp-shown"'></span>
<span class='lfp-hideable'>
<p>
Logic for Progress is distinguished from similar deliberation-facilitating efforts on the web <span class='trig'></span><span class='collapsed'><a href='http://cci.mit.edu/deliberatoriumresearchpage.html'>Deliberatorium</a>, <a href='http://carneades.github.io/'>Carneades</a></span> by its use of formal logic, specifically predicate logic, to constrain what counts as a valid argument, and to define the rules of <em>Formal Deductive Deliberation</em> (FDD), which are aimed to forbid or penalyze behaviors, which we're all familiar with, that so often block progress in debate on contentious issues.
</p>
<!-- If the <a target='_self' href='#promises'>promises above</a> were straightforward to deliver on, you would know about Formal Deductive Deliberation (FDD) already. -->
<!-- Keep that it mind as you read this section. -->
<p>
Usage of FDD starts with a document, called an Interpreted Formal Proof, which lays out some reasoning in support of a position. The reasoning must conform to certain standards, which are checked automatically by software. The main component of the standards is formal deductive logic<!-- [popup note: some more background <a>here</a> - we do NOT advise that you read an introduction to formal logic] -->, which makes the standards close to what mathematicians use when they prove theorems about numbers/geometry/physics/etc. We use the standards for the same reasons that mathematicians do - to make it easier to find and correct flawed reasoning. <!-- || An FDD practitioner uses them for the same reasons that mathematicians do - to make it easier for themself and their peers to spot flawed reasoning. -->
</p>
<p>
Of course, unlike in mathematics, contentious issues are rife with vagueness and subjectiveness, and uncertainty. And crucially, we understand fully that those difficulties cannot be eliminated completely <span class='trig'></span><span class='collapsed'>unlike movements in analytic philosophy such as <a href="https://en.wikipedia.org/wiki/Logical_positivism">Logical Positivism</a></span>. Definitions cannot be settled on before reasoning begins; rather we must tolerate vagueness and gradually sharpen definitions only as-necessary during the course of our reasoning. Finding a reusable, common moral framework before attempting to compromise is equally infeasible; instead, we must constantly reason about our opponents' subjective beliefs, as well as our own. Even when uncertainty <span class='trig emph'></span><span class='collapsed'>arguably a kind of subjectiveness -- about the likelihood of events and the consequences of partial and errorful knowledge</span> is the only problem, so that we can utilize the crucial ideas of <a href="https://en.wikipedia.org/wiki/Bayesian_statistics">Bayesian Statistics</a>, it is impossible to analyze all possibly-relevant factors in one argument; rather, we need a system that helps to regulate how new factors are introduced into an argument, especially to protect from delaying tactics.
<!-- Interpreted Formal Proofs produced by Logic for Progress as case studies usually have some <a>https://en.wikipedia.org/wiki/Bayesian_probability>Bayesian Probability</a>, although formal logic does not necessitate We use the methodology of <a href=>Bayesian Analysis</a> to reason about uncertainty. -->
This is why the full program of Formal Deductive Deliberation involves <em>Interpreted Formal Proof Dialogues</em>, an enhanced form of dialogue that we are all familiar with, where:
<ul>
<li>A first group, the proponents, put forward an initial argument. </li>
<!-- <li>(Any number of) people and teams of people, the critics, respond with criticisms of the argument. </li> -->
<li>Others, or the proponents themselves (when scrutinizing one's own reasoning)<!-- <span class='trig'></span><span class='collapsed'>when one is scrutinizing one's own reasoning</span> -->, respond with criticisms of the argument. </li>
<li>The proponents address the criticisms, possibly modifying their argument to accomodate them.</li>
<li>The process repeats: the critics respond with new criticisms of the modified argument and to the proponents’ responses to their previous criticisms.</li>
</ul>
Often such dialogues break down well before they become productive. Almost always, they are not productive in a lasting way except possibly for the partcipants themselves, so that negligible progress is made for society as a whole. Interpreted Formal Proof Dialogues are designed to avoid such wasted efforts, by encouraging progress in any of several forms:
</p>
<p>
<ul>
<li>Some fundamental source of disagreement is found, often involving morality, which wasn't apparent before the dialogue began. Future dialogues can start from there.</li>
<li>Some line of argument is formally proved to be flawed or fruitless. The proof can be reused in later dialogues.</li>
<li>The disagreement is found to hinge on differing guesses about the likelihood of future events or events from the past that we have too little decisive information about. There is almost always some element of this. It is the major difficulty in our ongoing work on wrongful conviction.</li>
<li>The partcipants find that the disagreement was not a disagreement at all, instead being a result of the different sides using words in different ways. Much of modern professional philosophy falls into this category, but there are incentives to not recognize that, since the ongoing disagreements support careers in the field. </li>
</ul>
</p>
<p>
Though Logic for Progress is already several years in the making, development of this page has only just started. Until there is more here, <a href="http://www.cs.toronto.edu/~wehr/thesis/index.html">these PhD thesis materials</a> are the best source for more information.
</p>
</span>
</li>
<!--
stick with just the Mr Big propositions. bringing in anything else is more complicated than it seems.
In the case we're looking at now, the defence presented an alibi for Burns and Rafay that put them on the other side of town when the murders happened. Obviously the jury was not convinced by the alibi witnesses, presumably believing they were either lying or mistaken. The prosecution would be happy to use the simplifying assumption that the witnesses were lying or mistaken. But unlike with the possibility of the officer being a sadist, the defence wants to argue that there's a significant chance that the alibi is legitimate. It turns out that there's a standard way of proceeding in situations like this, called Bayesian Analysis, but we won't need to get into the details of that. The bottom line is that both sides agree:
<p/>
<p class='centered-par'>
Before hearing alibi witness speak, we didn't
</p> -->
<!-- <p class='centered-par'>
In some cases of murder similar to this one, with a similar alibi, (a) the witness is telling the truth, and in other such cases, (b) the witness is wrong (intentionally or unintentionally).
<p/>
<p>
What matters is the frequencies of (a) and (b). That's where probabilities come in. Both sides will assume something about how often (a) and (b) happen in cases like this. For example, "(a) happens at most 1% of the time and (b) happens at least 99% of the time" would be a strong assumption that benefits the prosecution. The defense would be wise, in such a case, to use the rules of Formal Deductive Deliberation to try to challenge that assumption
<p/>
We'll set aside the question of alibi evidence for now,
FOR SUBJECTIVE ATOMIC ASSUMPTIONS, CAN APPLY TO ARBITRARY PROPS??? -->
<!-- The same is true when doing QA for any industrial project. Likewise for diagnosis and treatment of medical conditions. Basically in any discipline that uses mathematical modeling. -->
<!-- <br/> -->
<!-- A deliberately simple version of an argument might go like this. -->
<!-- <b>NO CAN'T USE A REAL-LIFE CASE HERE. NECESSARILY TOO COMPLICATED.</b> -->
<!-- ``The federal court should rule that Capital Punishment in the United States is illegal.'' -->
<!-- We have developed <a href="http://www.structuretogether.com/">Structure Together</a>, a web-based collaboration tool to facilitate a unique process called <em>Formal Deductive Deliberation</em>, which involves <em>interpreted formal proof dialogues</em>, an enhanced form of dialogue that we are all familiar with, where:
<ul>
<li>A first person (or group), the Proponent, puts forward an initial argument. </li>
<li>(Any number of) people and teams of people, the Critics, respond with criticisms of the argument. </li>
<li>The Proponent addresses the criticisms, possibly modifying their argument to accomodate them.</li>
<li>The process repeats: the critics respond with new criticisms of the modified argument and/or the proponent’s response to their previous criticisms.</li>
</ul>
LFP is distinguished from similar deliberation-facilitating efforts on the web (<a href='http://cci.mit.edu/deliberatoriumresearchpage.html'>Deliberatorium</a>, <a href='http://carneades.github.io/'>Carneades</a>) by its use of formal logic, specifically predicate logic, to constrain what counts as a valid argument, and to define the rules of <em>Formal Deductive Deliberation</em>, which are aimed to forbid or penalyze behaviors that so-often block progress in natural language argumentation.
</p>
<p> Though Logic for Progress is already several years in the making, development of this page has only just started. Until there is more here, <a href="http://www.cs.toronto.edu/~wehr/thesis/index.html">these PhD thesis materials</a> are the best source for more information.</p> -->
<li>
<h3 class='homepage-section-title'>Get Involved</h3>
<span class="show-hide-trigger fa fa-li lfp-shown"'></span>
<span class='lfp-hideable'>
<p>If you’re <b>knowledgeable and passionate on a subject</b>, and you have an argument (or just a point of view) that you believe is very strong but isn’t recognized as such, we can work together to try to express it as an Interpreted Formal Proof, to kick off the Formal Deductive Deliberation (FDD) process. <b>You don’t need to have a background in math.</b></p>
<p>If you’re skilled in <b>writing</b>, we want your help, and you can have a huge influence on the direction of LFP. You will have full permissions to modify this website and our FDD examples. We will always have a backlog of prose from examples that needs to be made easier to understand and more eloquent. You don’t need a background in math to do this. There is also a lot to do in improving the quality of educational material on logic and the FDD process, and in outreach. </p>
<p>
If you're a <b>programmer</b> or <b>designer</b>, you can help build <a href="http://www.structuretogether.com/">Structure Together</a>, soon to be the most advanced realtime collaborative structure editor, which serves as the user interface for Formal Deductive Deliberation.
</p>
<!-- <p>We are currently in the process of improving the user-interface of the web-tool, <a href="http://www.structuretogether.com/">Structure Together</a>.</p>
<p>Beginning in the new year, we will be embarking on a number of case studies applying formal logic to a wide range of issues. If you have an idea for a topic that would have impact in your community, or if you have mathematics or formal logic skills and would like to volunteer, of
-->
<p>
If any of the above describe you, or you are simply interested and want to be kept in the loop, <b>email us</b> at [email protected] or [email protected].
<!-- <a href="mailto:[email protected]?Subject=[LFP]%20Customize%20subject%20or%20leave%20as-is,%20but%20keep%20%27[LFP]%27" target="_top">email us</a> ([email protected]). -->
</p>
</span>
</li>
<!-- <h2>FAQ</h2>
<div class="faq-question">
<div>Q: Does the Logic for Progress process help to make good decisions?</div>
<div>
<p>A: It depends. The process makes it <em>much</em> harder to settle on <em>bad</em> decisions, but also at least somewhat harder to settle on good decisions. Because of the latter point, it is appropriate only for certain kinds of problems.
<p>The process is most appropriate when the consequences of making a bad decision are great, and difficult or impossible to rectify. Some examples:
<ul>
<li>Executing an innocent person<sup><a href="https://en.wikipedia.org/wiki/Cameron_Todd_Willingham">1</a>,...todo more</sup>, and much more commonly, depriving an innocent man of decades of his freedom. </li>
<li>Failing to convict a person guilty of a violent crime who is likely to reoffend.<sup><a>2</a></sup></li>
-->
<!-- <li>Under-regulating an industry, new product, or service.</li> -->
<!-- <li>Under-regulating a dangerous new technology.</li> -->
<!-- <li>Over-regulating a beneficial new technology.</li> -->
<!-- <li>Approving a dangerous new drug.</li> -->
<!-- <li>Delaying the approval of a safe and uniquely beneficial drug.</li> -->
<!--
<li>Under-regulating an industry that pollutes the environment.</li>
</ul>
</p>
<p>Conversely, the process is least appropriate when time and resources for deliberation are very limited, when the consequences of a bad decision can be mitigated, and when bad decisions produce new data that can be used to make a more-informed decision.
</p>
</div>
</div> -->
<!-- It's great for isolating fundamental sources of disagreement and revealing hidden assumptions - including your own hidden assumptions.
It's great for gaining a better understanding and appreciation of your opponents' positions.
And it can also be used to demonstrate, in the most humble and scrutinizable way possible, that something very unreasonable in going on. -->
</section>
<!-- FOOTER -->
<div id="footer_wrap" class="outer">
<footer class="inner">
<p class="copyright">
<!-- <p> -->
Contacts:
<ul>
<li><p><a href="mailto:[email protected]?Subject=[LFP]%20Customize%20subject%20or%20leave%20as-is,%20but%20keep%20%27[LFP]%27" target="_top">Dr. R. Dustin Wehr</a>, CEO and lead software developer</p></li>
<li><p><a href="mailto:[email protected]?Subject=[LFP]%20Customize%20subject%20or%20leave%20as-is,%20but%20keep%20%27[LFP]%27" target="_top">Laura Simon</a>, COO</p></li>
</ul>
</p>
<!-- <p class="copyright">Logic for Progress maintained by <a href="https://github.com/DustinWehr">DustinWehr</a></p> -->
<p>Published with <a href="https://pages.github.com">GitHub Pages</a></p>
</footer>
</div>
</body>
<!-- <script type="text/javascript" src="dependencies/jquery-1.11.1.min.js"></script> -->
<script type="text/javascript" src="http://code.jquery.com/jquery-3.1.1.min.js"></script>
<script type="text/javascript" src="dependencies/tipped-4.5.7-light/js/tipped/tipped.js"></script>
<!-- <script type="text/javascript" src="../../StructureTogether/node_modules/qtip2/dist/jquery.qtip.min.js"></script> -->
<script>
$(document).ready( function() {
$('.show-hide-trigger.lfp-hidden').addClass('fa-caret-right')
.next().addClass('lfp-hidden');
$('.show-hide-trigger.lfp-shown').addClass('fa-caret-down')
.next().addClass('lfp-shown');
// $('.lfp-hideable.lfp-hidden').addClass('fa-caret-right');
// $('.lfp-hideable.lfp-shown').addClass('fa-caret-down');
$('.show-hide-trigger').click( function() {
// console.log(this);
$this = $(this);
// $this.next().toggle();
if($this.hasClass('lfp-hidden')) {
$this.next().addClass('lfp-shown').removeClass('lfp-hidden');
$this.addClass('lfp-shown fa-caret-down').removeClass('lfp-hidden fa-caret-right');
}
else if($this.hasClass('lfp-shown')) {
$this.next().addClass('lfp-hidden').removeClass('lfp-shown');
$this.addClass('lfp-hidden fa-caret-right').removeClass('lfp-shown fa-caret-down');
}
});
// extend trigger to the section titles:
$('.homepage-section-title').click( function() {
$(this).next().click();
});
});
$(document).ready( function() {
$('.trig').click( function() {
var $this = $(this);
var $content = $this.next();
if( $content.hasClass('collapsed') ) {
$content.removeClass('collapsed')
.addClass('text-trig');
$this.hide();
}
else {
$content.removeClass('text-trig')
.addClass('collapsed');
$this.show();
}
});
$('.collapsed,text-trig').click( function() {
var $this = $(this);
if( $this.hasClass('text-trig') ) {
$this.removeClass('text-trig').addClass('collapsed');
$this.prev().show();
}
// else {
// $this.removeClass('text-trig').addClass('collapsed');
// }
});
});
</script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-72669142-1");
pageTracker._trackPageview();
} catch(err) {}
</script>
<!-- The official google snippet for including analytics. Does it do anything different than above snippet? -->
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72669142-1', 'auto');
ga('send', 'pageview');
</script>
<script>
$(document).ready( function() {
Tipped.create('.tipped', null, {
maxWidth: 600
,size: 'large'
// containment: { // didn't work
// selector: '#sections'
// }
// ,container: $('#main_content')[0] // didn't work
});
});
</script>
<!-- <script>
console.log("??? 0");
$(".tooltip-trigger").qtip('api');
var $window = $(window);
// $(document).on("mouseenter.qtip", ".simple-inline-ref", (event) => {
// $(document).on("mouseenter.qtip", ".tooltip", (event) => {
$(document).on("mouseenter.qtip", ".tooltip-trigger", (event) => {
console.log("??? 1");
const curtarget = event.currentTarget;
const qtip = ($(curtarget)).qtip({
metadata: {
//type: 'html5', // Use HTML5 data-* attributes
//name: 'qtipopts' // Grab the metadata from the data-qtipopts HTML5 attribute
type: 'attr',
name: 'qtipOpts'
}
,style: {
classes: 'qtip-default qtip qtip-dark qtip-rounded'
}
,content: {
text: (event2, api) => {
// const reffed_nodeid = $(event2.currentTarget).attr('data-permid_ref');
// if(triv(reffed_nodeid)) {
// return () => $("<span>error - qtip event currentTarget missing 'data-permid_ref'</span>");
// }
console.log("??? 2");
return () => {
console.log("??? 3");
// const stdoc = this.control.stdoc;
// const node = stdoc.ogetNodeByPermId(reffed_nodeid);
// if(node) {
// const node_inlining_vm = this.control.vmbuilder.newInliningVM(node);
// node_inlining_vm.stdocid = stdoc.stdocid;
// const $react_container = $('<span></span>');
// const $qtip_container = $(`<span></span>`).append($anchor, $react_container);
// const react_elem = makeInliningComponentInstance(stdoc.stdocid, node_inlining_vm);
// return $qtip_container;
// }
// else {
// return $(`<span>error - couldn't find node ${reffed_nodeid}</span>`);
// }
};
// fixed with code above: this doesn't work if the referred to node is not currently displayed!
// the 'true' is for withDataAndEvents ( === deepWithDataAndEvents since don't give second param)
// const thedom = () => {
// const $node = $(`#${reffed_nodeid}_NodeAlwaysShownPart`)
// .clone(true).removeAttr('id data-reactid contentEditable')
// $node.find('*').removeAttr('id data-reactid contentEditable');
// return $node;
// };
// return thedom;
}
}
,position: {
viewport: $window
}
,show: {
ready: true
// delay: 500, // NTS default is 90
// solo: true // hides all other qtips when shown
}
,hide: {
// delay: 500,
// event: 'unfocus', // hide only when click anywhere else
fixed: true // don't hide when moused over. allows contents to be interacted with, for future use.
}
}, event);
});
</script> -->
</html>