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 <[email protected]> on behalf of steve smith
<[email protected]>
Date: Thursday, May 29, 2025 at 1:31 PM
To: [email protected] <[email protected]>
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!
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/
