George has sympy.logic in its Python sandbox, so it can compare direct 
inference to actual logic. For real world things, formalizing knowledge and 
causality would be more involved, but I don’t see any obvious obstacles. Here 
is one example:

Title: Symbolic Logic for Medical Triage Reasoning 
Overview:
This document demonstrates how propositional logic can be used to encode and 
evaluate medical triage rules for determining whether a patient is considered 
"urgent" based on symptoms and risk factors. The example uses the sympy.logic 
module to perform logical inference in Python. 
Variables: 

* ChestPain: Patient reports chest pain. 
* ShortBreath: Patient reports shortness of breath. 
* HighBP: Patient has high blood pressure. 
* Sweating: Patient is sweating excessively. 
* HistoryHeartDisease: Patient has a history of heart disease. 
* AgeOver60: Patient is older than 60. 
* Urgent: Patient should be marked as urgent for care. 
Logic Rules: 

1. If the patient has chest pain and shortness of breath, then they are urgent. 
* ChestPain ∧ ShortBreath → Urgent 
2. If the patient has chest pain and a history of heart disease, then they are 
urgent. 
* ChestPain ∧ HistoryHeartDisease → Urgent 
3. If the patient has high blood pressure, sweating, and is over 60, then they 
are urgent. 
* HighBP ∧ Sweating ∧ AgeOver60 → Urgent 
4. If none of the above conditions apply, the patient is not urgent. 
* ¬(Rule1 ∨ Rule2 ∨ Rule3) → ¬Urgent 

Python Code: 
from sympy import symbols 
from sympy.logic.boolalg import And, Or, Not, Implies 
from sympy.logic.inference import satisfiable 

# Define symbols for symptoms and outcome 
ChestPain, ShortBreath, HighBP, Sweating = symbols('ChestPain ShortBreath 
HighBP Sweating') 
HistoryHeartDisease, AgeOver60 = symbols('HistoryHeartDisease AgeOver60') 
Urgent = symbols('Urgent') 

# Encode medical triage rules 
rules = And( 
Implies(And(ChestPain, ShortBreath), Urgent), # Rule 1 
Implies(And(ChestPain, HistoryHeartDisease), Urgent), # Rule 2 
Implies(And(HighBP, Sweating, AgeOver60), Urgent), # Rule 3 
Implies(Not(Or( 
And(ChestPain, ShortBreath), 
And(ChestPain, HistoryHeartDisease), 
And(HighBP, Sweating, AgeOver60) 
)), Not(Urgent)) # Rule 4: default case 
) 

# Define test cases as dictionaries of patient symptoms and demographics 
test_cases = [ 
{'name': 'Patient A', 'ChestPain': True, 'ShortBreath': True, 'HighBP': False, 
'Sweating': False, 'HistoryHeartDisease': False, 'AgeOver60': False}, 
{'name': 'Patient B', 'ChestPain': True, 'ShortBreath': False, 'HighBP': False, 
'Sweating': False, 'HistoryHeartDisease': True, 'AgeOver60': False}, 
{'name': 'Patient C', 'ChestPain': False, 'ShortBreath': False, 'HighBP': True, 
'Sweating': True, 'HistoryHeartDisease': False, 'AgeOver60': True}, 
{'name': 'Patient D', 'ChestPain': False, 'ShortBreath': False, 'HighBP': True, 
'Sweating': True, 'HistoryHeartDisease': False, 'AgeOver60': False}, 
{'name': 'Patient E', 'ChestPain': False, 'ShortBreath': False, 'HighBP': 
False, 'Sweating': False, 'HistoryHeartDisease': False, 'AgeOver60': False} 
] 

# Evaluate each test case 
results = [] 
for case in test_cases: 
assumptions = And(*[ 
symbol if val else Not(symbol) 
for symbol, val in zip( 
[ChestPain, ShortBreath, HighBP, Sweating, HistoryHeartDisease, AgeOver60], 
[case['ChestPain'], case['ShortBreath'], case['HighBP'], case['Sweating'], 
case['HistoryHeartDisease'], case['AgeOver60']] 
) 
]) 
full_expr = And(rules, assumptions) 
model = satisfiable(full_expr) 
case_result = bool(model and model.get(Urgent, False)) 
results.append((case['name'], case_result)) 

for name, urgent in results: 
print(f"{name}: {'URGENT' if urgent else 'Not Urgent'}") 
Execution Output: 
Patient A: URGENT 
Patient B: URGENT 
Patient C: URGENT 
Patient D: Not Urgent 
Patient E: Not Urgent 
Applications: 

* Triage decision support systems. 
* Rule-based expert systems for emergency settings. 
* Explainable AI pipelines in healthcare. 
Extensions: 

* Incorporate probabilistic or fuzzy logic for uncertainty. 
* Add contraindications or medication-based logic. 
* Output justifications or causal chains for each decision. 
Conclusion:
This example illustrates how symbolic logic provides a transparent and 
interpretable method for encoding domain knowledge in medical decision-making. 
It also serves as a foundation for more advanced neurosymbolic reasoning 
systems. 



From: Friam <friam-boun...@redfish.com> on behalf of steve smith 
<sasm...@swcp.com>
Date: Thursday, May 29, 2025 at 1:31 PM
To: friam@redfish.com <friam@redfish.com>
Subject: Re: [FRIAM] The entropy of thought 


>
> As for GPT's introspective (especially retrospective) explanations: 
> I'm starting to sincerely doubt the sanity of such queries. I haven't 
> looked into it much.

After I sent that, I realized that I don't trust George to actually have 
introspected/retrospected, but rather that it *reconstructed* the prompt 
and then instrumented it's response?


I may pursue it or not... i'm clearly too easily entertained! 


Attachment: smime.p7s
Description: S/MIME cryptographic signature

.- .-.. .-.. / ..-. --- --- - . .-. ... / .- .-. . / .-- .-. --- -. --. / ... 
--- -- . / .- .-. . / ..- ... . ..-. ..- .-..
FRIAM Applied Complexity Group listserv
Fridays 9a-12p Friday St. Johns Cafe   /   Thursdays 9a-12p Zoom 
https://bit.ly/virtualfriam
to (un)subscribe http://redfish.com/mailman/listinfo/friam_redfish.com
FRIAM-COMIC http://friam-comic.blogspot.com/
archives:  5/2017 thru present https://redfish.com/pipermail/friam_redfish.com/
  1/2003 thru 6/2021  http://friam.383.s1.nabble.com/

Reply via email to