Created
August 2, 2025 16:46
-
-
Save gahrae/63d53217bda168c7486f797aea64dbe6 to your computer and use it in GitHub Desktop.
Prolog program on the 1983 KFC murders
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| % Kentucky Fried Chicken Murders - Kilgore, Texas (1983) | |
| % Comprehensive Prolog Knowledge Base for Case Analysis | |
| % | |
| % SOURCES: | |
| % - Transcript from YouTube video: https://www.youtube.com/watch?v=_81kTZ0MxjI | |
| % - Wikipedia: https://en.wikipedia.org/wiki/Kentucky_Fried_Chicken_murders | |
| % ============================================================================ | |
| % CASE OVERVIEW | |
| % ============================================================================ | |
| case(kfc_murders, kilgore_texas, september_23_1983). | |
| case_type(kfc_murders, armed_robbery, mass_murder). | |
| case_status(kfc_murders, solved, year_2005_2008). | |
| unsolved_period(kfc_murders, twentytwo_years). | |
| % ============================================================================ | |
| % VICTIMS | |
| % ============================================================================ | |
| victim(mary_tyler, age_37, assistant_manager, female, employee). | |
| victim(joey_johnson, age_20, cook, male, employee). | |
| victim(opie_hughes, age_39, employee, female, mother_of_three). | |
| victim(david_maxwell, age_20, customer, male, friend_of_joey). | |
| victim(monty_landers, age_19, customer, male, friend_of_joey). | |
| % Victim relationships | |
| relationship(david_maxwell, joey_johnson, friend). | |
| relationship(monty_landers, joey_johnson, friend). | |
| relationship(david_maxwell, monty_landers, frat_brothers). | |
| relationship(mary_tyler, kim_miller, mother_daughter). | |
| relationship(mary_tyler, billy_tyler, married). | |
| % Victim details | |
| victim_detail(david_maxwell, married, pregnant_wife). | |
| victim_detail(opie_hughes, mother, three_children). | |
| victim_detail(mary_tyler, stepmother, billy_tyler_children). | |
| % ============================================================================ | |
| % KEY PEOPLE | |
| % ============================================================================ | |
| person(billy_tyler, male, mary_husband, stepfather). | |
| person(kim_miller, female, mary_daughter, found_scene_disturbed). | |
| person(leanne_raspberry, female, kfc_manager, worked_until_11pm). | |
| person(star_powers, female, witness, heard_money_comment). | |
| person(glenn_elliott, male, texas_ranger, lead_investigator). | |
| person(george_keaney, male, fbi_agent, case_investigator). | |
| % Family connections | |
| family(mary_tyler, [tony, kim, bubba], biological_children). | |
| family(billy_tyler, [denise, unnamed_child], children_from_previous_marriage). | |
| % ============================================================================ | |
| % LOCATION DETAILS | |
| % ============================================================================ | |
| location(kfc_restaurant, kilgore_texas, crime_scene_primary). | |
| location(oil_field, county_road_232, execution_site). | |
| location(rusk_county, texas, twelve_miles_from_kfc). | |
| % Geographic details | |
| distance(kfc_restaurant, oil_field, twelve_miles). | |
| jurisdiction(kilgore, gregg_county, texas). | |
| jurisdiction(oil_field, rusk_county, texas). | |
| % ============================================================================ | |
| % TIMELINE OF EVENTS | |
| % ============================================================================ | |
| timeline(september_23_1983, evening, before_closing, robbery_occurs). | |
| timeline(september_23_1983, evening, closing_time, victims_abducted). | |
| timeline(september_23_1983, late_evening, oil_field, victims_executed). | |
| timeline(september_24_1983, morning, oil_field_worker, bodies_discovered). | |
| timeline(september_24_1983, morning, kim_miller, restaurant_found_disturbed). | |
| % Investigation timeline | |
| investigation_timeline(year_1983, initial_investigation, multiple_suspects). | |
| investigation_timeline(year_1990s, dna_testing_available, mankins_tested). | |
| investigation_timeline(year_1993, grand_jury, mankins_indicted). | |
| investigation_timeline(year_1999, advanced_dna_testing, mankins_cleared). | |
| investigation_timeline(year_2005, cold_case_reopened, new_dna_analysis). | |
| investigation_timeline(november_2005, arrests_made, hartsfield_pinkerton). | |
| investigation_timeline(october_2007, pinkerton_plea, guilty_five_counts). | |
| investigation_timeline(year_2008, hartsfield_trial, convicted_five_life_sentences). | |
| investigation_timeline(may_2022, hartsfield_death, hemorrhagic_stroke). | |
| % ============================================================================ | |
| % CRIME DETAILS | |
| % ============================================================================ | |
| crime_type(armed_robbery). | |
| crime_type(mass_murder). | |
| crime_type(execution_style_killing). | |
| crime_type(sexual_assault). | |
| % Method of operation | |
| modus_operandi(kfc_murders, armed_robbery, closing_time). | |
| modus_operandi(kfc_murders, victim_abduction, transported_to_remote_location). | |
| modus_operandi(kfc_murders, execution_style, shot_back_of_head). | |
| modus_operandi(kfc_murders, sexual_assault, opie_hughes). | |
| % Murder method details | |
| murder_method(execution_style, shot_back_of_head). | |
| victim_position(lying_on_stomachs, hands_under_heads). | |
| location_arrangement(four_victims_in_row, one_victim_separate). | |
| % Weapons used | |
| weapon(caliber_38_pistol). | |
| weapon(caliber_357_magnum). | |
| weapon(possibly_third_weapon, different_bullet_types). | |
| % Evidence of struggle | |
| struggle_evidence(kfc_restaurant, blood_spatter, box_lid). | |
| struggle_evidence(kfc_restaurant, scattered_items, restaurant_interior). | |
| struggle_evidence(kfc_restaurant, money_taken, cash_registers). | |
| % ============================================================================ | |
| % SUSPECTS AND INVESTIGATION | |
| % ============================================================================ | |
| % Primary suspects (convicted) | |
| suspect(darnell_hartsfield, primary, tyler_resident, age_at_arrest_44). | |
| suspect(romeo_pinkerton, primary, accomplice, age_at_arrest_47). | |
| % Early suspect (cleared) | |
| suspect(james_earl_mankins_jr, cleared, son_of_state_representative, drug_dealer). | |
| % Suspect relationships | |
| relationship(darnell_hartsfield, romeo_pinkerton, cousins). | |
| relationship(james_earl_mankins_jr, jimmy_mankins, father_son). | |
| % Suspect criminal history | |
| criminal_history(darnell_hartsfield, prior_convictions). | |
| criminal_history(darnell_hartsfield, armed_robbery, tyler_grocery_store, three_days_after_kfc). | |
| criminal_history(romeo_pinkerton, prison_record). | |
| criminal_history(james_earl_mankins_jr, drug_dealer, known_to_police). | |
| % Similar crime pattern | |
| similar_crime(tyler_grocery_robbery, three_days_after_kfc, darnell_hartsfield). | |
| crime_similarity(both_closing_time, both_armed_robbery, victims_made_to_lie_down). | |
| % ============================================================================ | |
| % EVIDENCE | |
| % ============================================================================ | |
| % Physical evidence | |
| physical_evidence(fingernail, found_on_joey_johnson, initially_linked_to_mankins). | |
| physical_evidence(blood_spatter, box_lid, high_velocity_pattern). | |
| physical_evidence(blood_evidence, napkin, cast_off_pattern). | |
| physical_evidence(bullet_evidence, multiple_calibers, at_least_two_weapons). | |
| % DNA evidence | |
| dna_evidence(fingernail, james_earl_mankins_jr, no_match, year_1990s_testing). | |
| dna_evidence(blood_box, darnell_hartsfield, match, year_2005_testing). | |
| dna_evidence(blood_napkin, romeo_pinkerton, match, year_2005_testing). | |
| dna_evidence(semen_opie_hughes, unknown_third_person, no_match_any_suspect). | |
| % Witness evidence | |
| witness_evidence(star_powers, overheard_money_comment, two_thousand_dollars). | |
| witness_evidence(star_powers, saw_two_men, behind_her_in_line). | |
| % Circumstantial evidence | |
| circumstantial_evidence(no_deposit_made, unusual_cash_amount). | |
| circumstantial_evidence(friday_night, busy_period, more_cash_than_usual). | |
| % ============================================================================ | |
| % LEGAL PROCEEDINGS | |
| % ============================================================================ | |
| % James Earl Mankins Jr. case | |
| legal_proceeding(year_1993, grand_jury_indictment, james_earl_mankins_jr). | |
| legal_proceeding(year_1999, charges_dropped, dna_excluded_mankins). | |
| legal_proceeding(year_1999, release_from_custody, after_six_months_jail). | |
| % Hartsfield and Pinkerton cases | |
| legal_proceeding(november_2005, arrest_and_charges, capital_murder). | |
| legal_proceeding(year_2007, jury_selection, pinkerton_trial). | |
| legal_proceeding(october_29_2007, pinkerton_plea_deal, five_life_sentences). | |
| legal_proceeding(year_2008, hartsfield_trial, bryan_texas). | |
| legal_proceeding(year_2008, hartsfield_conviction, five_consecutive_life_sentences). | |
| legal_proceeding(february_4_2010, appeals_court, conviction_upheld). | |
| % Venue changes | |
| venue_change(hartsfield_trial, east_texas_to_bryan, pretrial_publicity). | |
| % Current status | |
| current_status(romeo_pinkerton, serving_sentence, james_v_allred_unit). | |
| current_status(darnell_hartsfield, deceased, may_4_2022). | |
| death_details(darnell_hartsfield, hemorrhagic_stroke, french_m_robertson_unit). | |
| % ============================================================================ | |
| % UNSOLVED ASPECTS | |
| % ============================================================================ | |
| unsolved_aspect(third_perpetrator, dna_evidence_unmatched). | |
| unsolved_aspect(sexual_assault, opie_hughes_rapist_identity). | |
| unsolved_aspect(accomplice_identity, neither_convicted_revealed). | |
| % Theories about third person | |
| theory(third_perpetrator_exists, dna_evidence_supports). | |
| theory(third_person_rapist, separate_from_shooters). | |
| theory(more_than_three_involved, complex_operation). | |
| % ============================================================================ | |
| % INVESTIGATIVE TECHNIQUES USED | |
| % ============================================================================ | |
| technique(fingerprint_analysis, year_1983_standard). | |
| technique(blood_spatter_analysis, early_adoption). | |
| technique(dna_testing, year_1990s_technology). | |
| technique(advanced_dna_testing, year_2005_technology). | |
| technique(polygraph_testing, multiple_suspects). | |
| technique(informant_network, smith_county_jail). | |
| technique(ballistics_analysis, multiple_weapons). | |
| % ============================================================================ | |
| % MEDIA COVERAGE | |
| % ============================================================================ | |
| media_coverage(cold_case_files, friday_night_ghosts, february_2022). | |
| media_coverage(local_news, ongoing_coverage, year_1983_2008). | |
| media_coverage(documentary, murder_case_transcript, detailed_analysis). | |
| % ============================================================================ | |
| % USEFUL PREDICATES FOR CASE ANALYSIS | |
| % ============================================================================ | |
| % Find all victims | |
| all_victims(Victims) :- | |
| findall(Name, victim(Name, _, _, _, _), Victims). | |
| % Find all convicted perpetrators | |
| convicted_perpetrators(Perpetrators) :- | |
| findall(Name, (legal_proceeding(_, hartsfield_conviction, _), Name = darnell_hartsfield), Names1), | |
| findall(Name, (legal_proceeding(_, pinkerton_plea_deal, _), Name = romeo_pinkerton), Names2), | |
| append(Names1, Names2, Perpetrators). | |
| % Check if case is fully solved | |
| fully_solved :- | |
| convicted_perpetrators(Convicted), | |
| length(Convicted, N), | |
| N >= 2, | |
| \+ unsolved_aspect(_, _). | |
| % Case is partially solved | |
| partially_solved :- | |
| convicted_perpetrators(Convicted), | |
| length(Convicted, N), | |
| N >= 1, | |
| unsolved_aspect(_, _). | |
| % Find evidence linking person to crime | |
| evidence_links_person(Person, Evidence) :- | |
| dna_evidence(Evidence, Person, match, _). | |
| % Find cleared suspects | |
| cleared_suspect(Person) :- | |
| suspect(Person, cleared, _, _); | |
| dna_evidence(_, Person, no_match, _). | |
| % Find weapons used | |
| weapons_used(Weapons) :- | |
| findall(Weapon, weapon(Weapon), Weapons). | |
| % Check if person has criminal history | |
| has_criminal_history(Person) :- | |
| criminal_history(Person, _). | |
| % Find similar crimes | |
| similar_crimes(Crimes) :- | |
| findall(Crime, similar_crime(Crime, _, _), Crimes). | |
| % Check execution style murder | |
| execution_style_murder :- | |
| murder_method(execution_style, _). | |
| % Find witness testimony | |
| witness_testimony(Witnesses) :- | |
| findall(Witness, witness_evidence(Witness, _, _), Witnesses). | |
| % Check for sexual assault | |
| involves_sexual_assault :- | |
| crime_type(sexual_assault). | |
| % Find unsolved aspects | |
| unsolved_elements(Elements) :- | |
| findall(Aspect, unsolved_aspect(Aspect, _), Elements). | |
| % Check if multiple perpetrators | |
| multiple_perpetrators :- | |
| convicted_perpetrators(Perpetrators), | |
| length(Perpetrators, N), | |
| N > 1. | |
| % Find DNA evidence | |
| dna_evidence_exists(Evidence) :- | |
| findall(E, dna_evidence(E, _, _, _), Evidence). | |
| % Check time period unsolved | |
| years_unsolved(Years) :- | |
| unsolved_period(kfc_murders, Years). | |
| % Find family connections | |
| family_of_victim(Victim, Family) :- | |
| victim(Victim, _, _, _, _), | |
| family(Victim, Family, _). | |
| % Check if location is remote | |
| remote_location(Location) :- | |
| location(Location, county_road_232, execution_site). | |
| % Find current status of perpetrators | |
| perpetrator_status(Person, Status) :- | |
| current_status(Person, Status, _). | |
| % Find victim by age | |
| victim_by_age(Name, Age) :- | |
| victim(Name, Age, _, _, _). | |
| % Find victims by role | |
| victims_by_role(Role, Victims) :- | |
| findall(Name, victim(Name, _, _, _, Role), Victims). | |
| % Check if evidence matches suspect | |
| evidence_matches_suspect(Evidence, Suspect) :- | |
| dna_evidence(Evidence, Suspect, match, _). | |
| % Find investigation techniques by era | |
| techniques_by_era(Era, Techniques) :- | |
| findall(Tech, technique(Tech, Era), Techniques). | |
| % Check if crime involved robbery | |
| involved_robbery :- | |
| crime_type(armed_robbery). | |
| % Find relationships between people | |
| people_related(Person1, Person2, Relationship) :- | |
| relationship(Person1, Person2, Relationship). | |
| % Check weapon caliber used | |
| weapon_caliber_used(Caliber) :- | |
| weapon(Weapon), | |
| atom_concat(caliber_, CaliberAtom, Weapon), | |
| atom_concat(CaliberAtom, _, Caliber). | |
| % Find timeline events by date | |
| events_on_date(Date, Events) :- | |
| findall(Event, timeline(Date, _, _, Event), Events). | |
| % Check if suspect was convicted | |
| suspect_convicted(Suspect) :- | |
| convicted_perpetrators(Convicted), | |
| member(Suspect, Converted). | |
| % Find physical evidence types | |
| physical_evidence_types(Types) :- | |
| findall(Type, physical_evidence(Type, _, _), Types). | |
| % Check modus operandi | |
| case_modus_operandi(Case, MO) :- | |
| modus_operandi(Case, MO, _). | |
| % ============================================================================ | |
| % CASE ANALYSIS QUERIES | |
| % ============================================================================ | |
| % Example queries for case analysis: | |
| % ?- all_victims(X). | |
| % ?- convicted_perpetrators(X). | |
| % ?- fully_solved. | |
| % ?- partially_solved. | |
| % ?- unsolved_elements(X). | |
| % ?- weapons_used(X). | |
| % ?- years_unsolved(X). | |
| % ?- multiple_perpetrators. | |
| % ?- execution_style_murder. | |
| % ?- involves_sexual_assault. | |
| % ?- victim_by_age(Name, age_20). | |
| % ?- evidence_matches_suspect(blood_box, darnell_hartsfield). | |
| % ?- techniques_by_era(year_1990s_technology, X). | |
| % ============================================================================ | |
| % NOTES AND OBSERVATIONS | |
| % ============================================================================ | |
| % Key insights from the case: | |
| % 1. Early forensic science (fingernail analysis) led to wrong suspect | |
| % 2. DNA technology eventually solved the case after 22 years | |
| % 3. Multiple perpetrators but third person never identified | |
| % 4. Sexual assault component adds complexity | |
| % 5. Similar crime pattern helped identify suspects | |
| % 6. Case demonstrates evolution of forensic techniques | |
| % 7. One perpetrator died before revealing third accomplice | |
| % 8. Case remains partially unsolved due to unidentified third person |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment