%% davar_yatza.pl — Rules 9-11: Exception from a general rule. %% %% Rule 9: Davar shehayah biklal veyatza min haklal l'lamed — %% Something that was in the general and was singled out %% to teach: it teaches about the entire general, not just itself. %% %% Rule 10: Davar shehayah biklal veyatza liton to'an echad — %% Singled out to teach the same type of law: reduces the severity %% of the general for that type. %% %% Rule 11: Davar shehayah biklal veyatza liton to'an acher — %% Singled out to teach a different type of law: the exception %% follows both the general's rules AND its own new rules. :- module(davar_yatza, [ davar_yatza_llamed/3, davar_yatza_toan_echad/3, davar_yatza_toan_acher/3 ]). %% ============================================================ %% RULE 9: EXCEPTION TEACHES ABOUT THE GENERAL %% ============================================================ %% davar_yatza_llamed(Exception, General, Teaching) %% The exception teaches about ALL members of the general. davar_yatza_llamed( exception(ExceptionItem, Law), general(GeneralCategory), teaches(Law, applies_to_all(GeneralCategory)) ). %% Example: The chatat offering has specific blood-sprinkling rules. %% These rules teach about ALL offerings, not just chatat. davar_yatza_llamed( exception(chatat, blood_sprinkling_north), general(all_offerings), teaches(blood_sprinkling_north, applies_to_all(all_offerings)) ). %% ============================================================ %% RULE 10: EXCEPTION WITH SAME TYPE OF LAW %% ============================================================ %% davar_yatza_toan_echad(Exception, General, Modification) %% Same type of law but singled out = reduces severity for the general. davar_yatza_toan_echad( exception(ExceptionItem, SameLaw), general(GeneralCategory, SameLaw), reduces(SameLaw, for(GeneralCategory), because(ExceptionItem)) ). %% ============================================================ %% RULE 11: EXCEPTION WITH DIFFERENT TYPE OF LAW %% ============================================================ %% davar_yatza_toan_acher(Exception, General, DualApplication) %% Different type of law = exception follows both sets of rules. davar_yatza_toan_acher( exception(ExceptionItem, NewLaw), general(GeneralCategory, OriginalLaw), dual_rules(ExceptionItem, follows(OriginalLaw), and(NewLaw)) ). %% Example: Metzora singled out from tumah laws with unique procedures. %% Metzora follows both general tumah laws AND metzora-specific laws. davar_yatza_toan_acher( exception(metzora, outside_camp_procedure), general(tumah, standard_purification), dual_rules(metzora, follows(standard_purification), and(outside_camp_procedure)) ).