Phase 3: Intelligence — 613 mitzvot, 13 middot, Tzara'at diagnostic
Encode all 613 mitzvot from Rambam's Sefer HaMitzvot (248 positive, 365 prohibitions). Build the 13 Middot of Rabbi Yishmael as Prolog inference predicates for hermeneutical reasoning. Implement Tzara'at multi-stage input validation following Vayikra 13-14. Enhance kushya generation with kal vachomer and shnei ketuvim challenge strategies. Architecture §4 Steps 14-15, 19-20. New files: middot/ — 8 files (master + 7 rule modules) diagnostic/ — 4 files (tzaraat, inspection, quarantine, diagnosis) Modified: mitzvot.pl — 52 → 613 mitzvot relationships.pl — expanded tensions, complements, action domains challenge.pl — middot-based kushya (kal vachomer, shnei ketuvim) Tests: 293 total (184 Prolog, 76 Elixir, 33 Haskell), 0 failures. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
4dcb75ea40
commit
37390bcb8b
19 files changed
+2795
-178
No files matched your search
@@ -0,0 +1,109 @@
|
||||
%% tzaraat.pl — Master diagnostic module.
|
||||
%%
|
||||
%% Architecture §4, Step 19: Tzara'at diagnostic protocol.
|
||||
%%
|
||||
%% Multi-stage input validation following the Torah's diagnostic
|
||||
%% process in Vayikra 13-14.
|
||||
%%
|
||||
%% The kohen (the system) examines input before processing.
|
||||
%% This is NOT content filtering or censorship.
|
||||
%% It is structural analysis: does the input declare what it is?
|
||||
%% Does it acknowledge its limitations? Is it honest about its source?
|
||||
%%
|
||||
%% The diagnostic proceeds:
|
||||
%% 1. Initial inspection (inspection.pl)
|
||||
%% 2. If ambiguous: quarantine (quarantine.pl)
|
||||
%% 3. Reinspection after quarantine
|
||||
%% 4. Final determination: tahor (proceed), tamei (reject),
|
||||
%% or fully_visible_tahor (the paradox)
|
||||
%%
|
||||
%% The Paradox of Full Visibility (Vayikra 13:13):
|
||||
%% "If the tzara'at covers all the skin of the one with the affliction,
|
||||
%% from his head to his feet... the kohen shall declare him tahor."
|
||||
%% Input that openly declares ALL its problems is treated as pure.
|
||||
%% Concealment is the disease. Transparency is the cure.
|
||||
|
||||
:- module(tzaraat, [
|
||||
diagnose/2,
|
||||
diagnose_with_record/3,
|
||||
full_diagnostic_flow/3
|
||||
]).
|
||||
|
||||
:- use_module(diagnosis).
|
||||
:- use_module(inspection).
|
||||
:- use_module(quarantine).
|
||||
|
||||
%% ============================================================
|
||||
%% SINGLE-PASS DIAGNOSIS
|
||||
%% ============================================================
|
||||
|
||||
%% diagnose(Input, Result)
|
||||
%% Run the initial inspection and return the diagnosis.
|
||||
diagnose(Input, Result) :-
|
||||
inspect(Input, InitialState),
|
||||
( terminal_state(InitialState)
|
||||
-> Result = InitialState
|
||||
; %% Non-terminal = quarantine needed
|
||||
Result = requires_quarantine(InitialState)
|
||||
).
|
||||
|
||||
%% ============================================================
|
||||
%% DIAGNOSIS WITH RECORD
|
||||
%% ============================================================
|
||||
|
||||
%% diagnose_with_record(InputID, Input, Record)
|
||||
%% Diagnose and create a full diagnostic record.
|
||||
diagnose_with_record(InputID, Input, Record) :-
|
||||
inspect(Input, InitialState),
|
||||
findall(S, has_sign(Input, S), Signs),
|
||||
Record = diagnostic_record(
|
||||
input_id(InputID),
|
||||
initial_state(InitialState),
|
||||
signs(Signs),
|
||||
terminal(Terminal)
|
||||
),
|
||||
( terminal_state(InitialState)
|
||||
-> Terminal = InitialState
|
||||
; Terminal = pending_quarantine
|
||||
).
|
||||
|
||||
%% ============================================================
|
||||
%% FULL DIAGNOSTIC FLOW
|
||||
%% ============================================================
|
||||
|
||||
%% full_diagnostic_flow(InputID, InputSequence, FinalState)
|
||||
%%
|
||||
%% InputSequence is a list of inputs representing the same data
|
||||
%% at different points in time:
|
||||
%% [InitialInput, AfterQuarantine1, AfterQuarantine2]
|
||||
%%
|
||||
%% The flow follows the Torah's multi-stage process:
|
||||
%% inspect → (quarantine → reinspect)* → final state
|
||||
|
||||
%% Clean input — immediate tahor
|
||||
full_diagnostic_flow(_InputID, [Input], declared_tahor) :-
|
||||
inspect(Input, declared_tahor), !.
|
||||
|
||||
%% Fully visible — immediate paradox tahor
|
||||
full_diagnostic_flow(_InputID, [Input], fully_visible_tahor) :-
|
||||
inspect(Input, fully_visible_tahor), !.
|
||||
|
||||
%% Immediate tamei — reject
|
||||
full_diagnostic_flow(_InputID, [Input], confirmed_tamei) :-
|
||||
inspect(Input, confirmed_tamei), !.
|
||||
|
||||
%% Quarantine flow: initial → quarantine_1 → reinspect with second input
|
||||
full_diagnostic_flow(InputID, [Initial, AfterQ1 | Rest], FinalState) :-
|
||||
inspect(Initial, quarantine_1),
|
||||
quarantine_input(InputID, Initial, quarantine_1),
|
||||
reinspect(InputID, AfterQ1, State1),
|
||||
( terminal_state(State1)
|
||||
-> FinalState = State1
|
||||
; %% State1 = reinspection_1 means signs unchanged, go to quarantine_2
|
||||
( Rest = [AfterQ2 | _]
|
||||
-> quarantine_input(InputID, AfterQ1, quarantine_2),
|
||||
reinspect(InputID, AfterQ2, FinalState)
|
||||
; %% No more inputs — treat as unchanged after second quarantine
|
||||
FinalState = declared_tahor
|
||||
)
|
||||
).
|
||||
Reference in new issue
Block a user