al-Kalam Institute · Formal Reasoning Lab
at.alkalam.org
al-Kalam

Dalīl al-imkān · Automated proof

The argument in Leo-III

Leo-III 1.7.18 · Higher-order logic · TPTP THF

From the proved steps, Leo-III finds the conclusion on its own.

Each step is supplied exactly as proved in Rocq, and Leo-III searches for the proof that they yield a Necessary Existent.

How to read the results:

Theorem means proved: Leo-III found a proof of the claim from the premises it was given.

Timeout (or no result) means not settled: Leo-III did not find a proof in the time allowed. This says nothing either way, neither true nor false. Wherever that happens, the claim is proved by another tool, and the page links to that proof.

← Dalīl al-imkān overview

Every step

Where each step is proved
StepClaimIn Leo-IIIProof of the step
1The divisionSupplied to Leo-III as already proved · used in imkan_a_1_case_split.pProved every step checked proved in Rocq
2The necessary cannot failNot needed for the conclusionProved every step checked proved in Rocq
3The possible needs a causeSupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
4Nothing causes itselfSupplied to Leo-III as already proved · used in imkan_a_2b_only_aggregate_case.pProved every step checked proved in Rocq
5The aggregate of all possiblesSupplied to Leo-III as already proved · used in imkan_a_assembly_abstract.pProved every step checked proved in Rocq
6The aggregate is possibleSupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
7Its cause is not a memberSupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
8Nothing possible causes itselfSupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
9The cause is outside the aggregateSupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
10The division, appliedSupplied to Leo-III as already proved · used in imkan_a_1_case_split.pProved every step checked proved in Rocq
11That cause is necessarySupplied to Leo-III as already proved · used in imkan_a_2a_member_case.pProved every step checked proved in Rocq
12A Necessary Existent existsProved Theorem: Leo-III found a proof · Leo-III proves it from the stepsProved every step checked proved in Rocq

Every step is proved in Rocq, from the approved postulates. Leo-III independently confirms that the steps yield the conclusion. Where it does not check a step on its own, the table links to the Rocq proof. Step 2 is part of the argument but is not needed for the conclusion.

Results

Leo-III 1.7.18 · 50-second limit
QuestionLeo-IIIInput
Proof (a) · the steps give the conclusionProved Theorem: Leo-III found a proof 1.6 sSee the input
Proof (a), part 1 · Ibn Sīnā's case splitProved Theorem: Leo-III found a proof 1.3 sSee the input
Proof (a), part 2a · the aggregate has a memberProved Theorem: Leo-III found a proof 1.6 sSee the input
Proof (a), part 2b · the aggregate is the only possibleProved Theorem: Leo-III found a proof 3.2 sSee the input
Proof (b) · the short routeProved Theorem: Leo-III found a proof 1.5 sSee the input
Proof (a) with the aggregate's full definition unfoldedNot settled no proof found within 50 seconds; this proves nothing either waySee the input

The last problem differs from the first only in writing out the aggregate's definition in full, which the proved steps already carry; with it written out, Leo-III's search did not finish in time. The steps themselves are proved in Rocq (see the Rocq proof). Complete output: leo3_output.txt.

The inputs

Six problems

Proof (a) · the steps give the conclusion

imkan_a_assembly_abstract.p

Each step supplied exactly as proved in Rocq, with “something exists”: a Necessary Existent exists.

Expected result: Proved Theorem: Leo-III found a proof (the output ends with SZS status Theorem)

Show the full formalization
% Leo-III cross-check.
% Dalil al-imkan, proof (a), in one problem: the conclusion assembled from the steps, each supplied
% exactly as proved in Rocq (theorem names in the comments), with SP-001.
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(mem_type, type, mem: $i > $i > $o).              % (mem @ P @ A): P is a member of collection A
thf(agg_type, type, agg: $i > $o).
% agg is "the aggregate of all possibles", defined in PR-009 (AggregateOfPossibles); the proved steps
% below already carry its content, so the definition is left abstract here.
thf(step1, axiom, ![X:$i]: ((ex @ X) => ((nec @ X) | (poss @ X)))).                    % PR-006 division_exhaustive
thf(step3, axiom, ![X:$i]: ((poss @ X) => (through_another @ X))).                       % PR-008 possible_requires_murajjih (MP-008)
thf(step4, axiom, ![X:$i]: ~ (gives @ X @ X)).                                           % PR-002 no_self_creation
thf(mp009, axiom, (?[P:$i]: (poss @ P)) => (?[A:$i]: ((agg @ A) & (ex @ A)))).          % MP-009
thf(step6, axiom, ![A:$i]: (((agg @ A) & (ex @ A) & (?[P:$i]: ((P != A) & (poss @ P)))) => (poss @ A))).  % PR-009 aggregate_is_possible (MP-010)
thf(step11, axiom, ![A:$i, C:$i]: (((agg @ A) & (gives @ C @ A)) => (nec @ C))).        % PR-010 cause_is_necessary (MP-011, MP-012)
thf(mp012, axiom, ![Y:$i, X:$i]: ((gives @ Y @ X) => (ex @ Y))).                        % MP-012
thf(sp001, axiom, ?[X:$i]: (ex @ X)).                                                % SP-001
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).                                     % a Necessary Existent exists

Proof (a), part 1 · Ibn Sīnā's case split

imkan_a_1_case_split.p

What exists is necessary (done) or possible (part 2).

Expected result: Proved Theorem: Leo-III found a proof (the output ends with SZS status Theorem)

Download imkan_a_1_case_split.p
Show the full formalization
% Leo-III cross-check.
% Proof (a), part 1 -- Ibn Sina's case split: since something exists, it is necessary
% (done) or possible; the possible case is part 2 (supplied as proved there and in Rocq:
% ImkanConclusion.necessary_existent_from_a_possible).
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(mem_type, type, mem: $i > $i > $o).              % (mem @ P @ A): P is a member of collection A
thf(agg_type, type, agg: $i > $o).
thf(agg_def, definition, agg = (^[A:$i]: ((![P:$i]: ((P != A) => ((mem @ P @ A) <=> (poss @ P)))) & ~ (mem @ A @ A)))).
thf(step1, axiom, ![X:$i]: ((ex @ X) => ((nec @ X) | (poss @ X)))).                    % PR-006 division_exhaustive
thf(possible_case, axiom, (?[P:$i]: (poss @ P)) => (?[N:$i]: (nec @ N))).               % parts 2a and 2b; Rocq necessary_existent_from_a_possible
thf(sp001, axiom, ?[X:$i]: (ex @ X)).                                                % SP-001
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).

Proof (a), part 2a · the aggregate has a member

imkan_a_2a_member_case.p

Steps 6, 3 and 11 give a Necessary Existent.

Expected result: Proved Theorem: Leo-III found a proof (the output ends with SZS status Theorem)

Download imkan_a_2a_member_case.p
Show the full formalization
% Leo-III cross-check.
% Proof (a), part 2a (minimal: only the steps this chain uses) -- the aggregate of possibles A exists and has a member other than
% itself: then a Necessary Existent exists (steps 6, 3, 11).
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(mem_type, type, mem: $i > $i > $o).              % (mem @ P @ A): P is a member of collection A
thf(agg_type, type, agg: $i > $o).
% agg is "the aggregate of all possibles", defined in PR-009 (AggregateOfPossibles); this chain
% needs only the proved steps below, so the definition is left abstract here.
thf(step3, axiom, ![X:$i]: ((poss @ X) => (through_another @ X))).                       % PR-008 possible_requires_murajjih (MP-008)
thf(step6, axiom, ![A:$i]: (((agg @ A) & (ex @ A) & (?[P:$i]: ((P != A) & (poss @ P)))) => (poss @ A))).  % PR-009 aggregate_is_possible (MP-010)
thf(step11, axiom, ![A:$i, C:$i]: (((agg @ A) & (gives @ C @ A)) => (nec @ C))).        % PR-010 cause_is_necessary (MP-011, MP-012)
thf(a_type, type, a: $i).
thf(case_agg, axiom, (agg @ a) & (ex @ a)).
thf(case_member, axiom, ?[Q:$i]: ((Q != a) & (poss @ Q))).
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).

Proof (a), part 2b · the aggregate is the only possible

imkan_a_2b_only_aggregate_case.p

Its giver is not itself and not possible, so it is necessary.

Expected result: Proved Theorem: Leo-III found a proof (the output ends with SZS status Theorem)

Show the full formalization
% Leo-III cross-check.
% Proof (a), part 2b -- a possible p exists, and the aggregate A is the only possible thing:
% then A is possible, has a giver (step 3), the giver is not A (step 4) and not possible,
% it exists (MP-012), so it is necessary (step 1).
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(mem_type, type, mem: $i > $i > $o).              % (mem @ P @ A): P is a member of collection A
thf(agg_type, type, agg: $i > $o).
thf(agg_def, definition, agg = (^[A:$i]: ((![P:$i]: ((P != A) => ((mem @ P @ A) <=> (poss @ P)))) & ~ (mem @ A @ A)))).
thf(step1, axiom, ![X:$i]: ((ex @ X) => ((nec @ X) | (poss @ X)))).                    % PR-006 division_exhaustive
thf(step3, axiom, ![X:$i]: ((poss @ X) => (through_another @ X))).                       % PR-008 possible_requires_murajjih (MP-008)
thf(step4, axiom, ![X:$i]: ~ (gives @ X @ X)).                                           % PR-002 no_self_creation
thf(mp009, axiom, (?[P:$i]: (poss @ P)) => (?[A:$i]: ((agg @ A) & (ex @ A)))).          % MP-009
thf(step6, axiom, ![A:$i]: (((agg @ A) & (ex @ A) & (?[P:$i]: ((P != A) & (poss @ P)))) => (poss @ A))).  % PR-009 aggregate_is_possible (MP-010)
thf(step11, axiom, ![A:$i, C:$i]: (((agg @ A) & (gives @ C @ A)) => (nec @ C))).        % PR-010 cause_is_necessary (MP-011, MP-012)
thf(mp012, axiom, ![Y:$i, X:$i]: ((gives @ Y @ X) => (ex @ Y))).                        % MP-012
thf(a_type, type, a: $i).
thf(p_type, type, p: $i).
thf(case_agg, axiom, (agg @ a) & (ex @ a)).
thf(case_possible, axiom, poss @ p).
thf(case_only, axiom, ~ (?[Q:$i]: ((Q != a) & (poss @ Q)))).
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).

Proof (b) · the short route

imkan_b_short.p

MP-008, OP-001 and “something exists” give a Necessary Existent.

Expected result: Proved Theorem: Leo-III found a proof (the output ends with SZS status Theorem)

Download imkan_b_short.p
Show the full formalization
% Leo-III cross-check.
% Dalil al-imkan, proof (b), the short route: MP-008, OP-001 and SP-001 give a Necessary Existent.
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(op001, axiom, ![X:$i, Y:$i]: ((gives @ Y @ X) => ((ex @ Y) & ~ (through_another @ Y)))).   % OP-001
thf(mp008, axiom, ![X:$i]: (((ex @ X) & ~ (through_another @ X)) => (ess @ X))).   % MP-008
thf(sp001, axiom, ?[X:$i]: (ex @ X)).                                                % SP-001
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).                                     % a Necessary Existent exists

Proof (a) with the aggregate's full definition unfolded

imkan_a_assembly.p

The same as the first problem, with the definition of the aggregate written out in full.

Leo-III: Not settled no proof found within 50 seconds; this proves nothing either way · the steps are proved in Rocq

Download imkan_a_assembly.p
Show the full formalization
% Leo-III cross-check.
% Dalil al-imkan, proof (a): the conclusion assembled from the steps, each supplied
% exactly as proved in Rocq (theorem names in the comments), with SP-001.
% Vocabulary.  Nothing is assumed about these symbols.
thf(ex_type, type, ex: $i > $o).                     % (ex @ X): X exists
thf(ess_type, type, ess: $i > $o).                   % (ess @ X): X's existence is from its nature
thf(gives_type, type, gives: $i > $i > $o).          % (gives @ Y @ X): Y gives existence to X
thf(nec_type, type, nec: $i > $o).
thf(poss_type, type, poss: $i > $o).
thf(ta_type, type, through_another: $i > $o).
thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).            % necessary in itself
thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).        % possible in itself
thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))). % something gives X existence
thf(mem_type, type, mem: $i > $i > $o).              % (mem @ P @ A): P is a member of collection A
thf(agg_type, type, agg: $i > $o).
thf(agg_def, definition, agg = (^[A:$i]: ((![P:$i]: ((P != A) => ((mem @ P @ A) <=> (poss @ P)))) & ~ (mem @ A @ A)))).
thf(step1, axiom, ![X:$i]: ((ex @ X) => ((nec @ X) | (poss @ X)))).                    % PR-006 division_exhaustive
thf(step3, axiom, ![X:$i]: ((poss @ X) => (through_another @ X))).                       % PR-008 possible_requires_murajjih (MP-008)
thf(step4, axiom, ![X:$i]: ~ (gives @ X @ X)).                                           % PR-002 no_self_creation
thf(mp009, axiom, (?[P:$i]: (poss @ P)) => (?[A:$i]: ((agg @ A) & (ex @ A)))).          % MP-009
thf(step6, axiom, ![A:$i]: (((agg @ A) & (ex @ A) & (?[P:$i]: ((P != A) & (poss @ P)))) => (poss @ A))).  % PR-009 aggregate_is_possible (MP-010)
thf(step11, axiom, ![A:$i, C:$i]: (((agg @ A) & (gives @ C @ A)) => (nec @ C))).        % PR-010 cause_is_necessary (MP-011, MP-012)
thf(mp012, axiom, ![Y:$i, X:$i]: ((gives @ Y @ X) => (ex @ Y))).                        % MP-012
thf(sp001, axiom, ?[X:$i]: (ex @ X)).                                                % SP-001
thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).                                     % a Necessary Existent exists

Formal statements and their English equivalents

Every formula, in plain English

imkan_b_short.p

thf(ex_type, type, ex: $i > $o).

English: "X exists".

thf(ess_type, type, ess: $i > $o).

English: "X's existence is from its own nature".

thf(gives_type, type, gives: $i > $i > $o).

English: "Y gives existence to X".

thf(nec_type, type, nec: $i > $o).

English: "X is necessary in itself" (declared; defined below).

thf(poss_type, type, poss: $i > $o).

English: "X is possible in itself" (declared; defined below).

thf(ta_type, type, through_another: $i > $o).

English: "X has its existence through another" (declared; defined below).

thf(nec_def, definition, nec = (^[X:$i]: ((ex @ X) & (ess @ X)))).

English: X is necessary in itself: it exists, and its existence is from its own nature.

thf(poss_def, definition, poss = (^[X:$i]: ((ex @ X) & ~ (ess @ X)))).

English: X is possible in itself: it exists, and its existence is not from its own nature.

thf(ta_def, definition, through_another = (^[X:$i]: ?[Y:$i]: (gives @ Y @ X))).

English: X has its existence through another: something gives it existence.

thf(op001, axiom, ![X:$i, Y:$i]: ((gives @ Y @ X) => ((ex @ Y) & ~ (through_another @ Y)))).

English: OP-001: only what has existence of itself gives existence.

thf(mp008, axiom, ![X:$i]: (((ex @ X) & ~ (through_another @ X)) => (ess @ X))).

English: MP-008: if something exists and nothing gives it existence, its existence is from its own nature.

thf(sp001, axiom, ?[X:$i]: (ex @ X)).

English: SP-001: something exists. This is self-evident.

thf(conclusion, conjecture, ?[N:$i]: (nec @ N)).

English: the conjecture to be proved (see the table for each file).

imkan_a_assembly_abstract.p

ex_type: as above.

ess_type: as above.

gives_type: as above.

nec_type: as above.

poss_type: as above.

ta_type: as above.

nec_def: as above.

poss_def: as above.

ta_def: as above.

thf(mem_type, type, mem: $i > $i > $o).

English: "P is a member of the collection A".

thf(agg_type, type, agg: $i > $o).

English: "A is the aggregate of all possibles" (declared).

thf(step1, axiom, ![X:$i]: ((ex @ X) => ((nec @ X) | (poss @ X)))).

English: step 1, proved (PR-006): every existent is necessary or possible in itself.

thf(step3, axiom, ![X:$i]: ((poss @ X) => (through_another @ X))).

English: step 3, proved (PR-008): whatever is possible in itself has its existence through another.

thf(step4, axiom, ![X:$i]: ~ (gives @ X @ X)).

English: step 4, proved (PR-002): nothing gives existence to itself.

thf(mp009, axiom, (?[P:$i]: (poss @ P)) => (?[A:$i]: ((agg @ A) & (ex @ A)))).

English: MP-009: if some possible thing exists, there is an existing aggregate of all the possibles.

thf(step6, axiom, ![A:$i]: (((agg @ A) & (ex @ A) & (?[P:$i]: ((P != A) & (poss @ P)))) => (poss @ A))).

English: step 6, proved (PR-009): the existing aggregate, if some possible other than it exists, is itself possible.

thf(step11, axiom, ![A:$i, C:$i]: (((agg @ A) & (gives @ C @ A)) => (nec @ C))).

English: steps 7 to 11, proved (PR-010): whatever gives existence to the aggregate is necessary in itself.

thf(mp012, axiom, ![Y:$i, X:$i]: ((gives @ Y @ X) => (ex @ Y))).

English: MP-012: whatever gives existence exists.

sp001: as above.

conclusion: as above.

imkan_a_1_case_split.p

ex_type: as above.

ess_type: as above.

gives_type: as above.

nec_type: as above.

poss_type: as above.

ta_type: as above.

nec_def: as above.

poss_def: as above.

ta_def: as above.

mem_type: as above.

agg_type: as above.

thf(agg_def, definition, agg = (^[A:$i]: ((![P:$i]: ((P != A) => ((mem @ P @ A) <=> (poss @ P)))) & ~ (mem @ A @ A)))).

English: A is the aggregate of all possibles: its members are exactly the possibles other than A, and A is not a member of itself.

step1: as above.

thf(possible_case, axiom, (?[P:$i]: (poss @ P)) => (?[N:$i]: (nec @ N))).

English: proved in Rocq (necessary_existent_from_a_possible) and by parts 2a and 2b: if a possible thing exists, a Necessary Existent exists.

sp001: as above.

conclusion: as above.

imkan_a_2a_member_case.p

ex_type: as above.

ess_type: as above.

gives_type: as above.

nec_type: as above.

poss_type: as above.

ta_type: as above.

nec_def: as above.

poss_def: as above.

ta_def: as above.

mem_type: as above.

agg_type: as above.

step3: as above.

step6: as above.

step11: as above.

thf(a_type, type, a: $i).

English: a particular thing, A.

thf(case_agg, axiom, (agg @ a) & (ex @ a)).

English: this case: A is the existing aggregate of all possibles.

thf(case_member, axiom, ?[Q:$i]: ((Q != a) & (poss @ Q))).

English: this case: some possible thing other than A exists.

conclusion: as above.

imkan_a_2b_only_aggregate_case.p

ex_type: as above.

ess_type: as above.

gives_type: as above.

nec_type: as above.

poss_type: as above.

ta_type: as above.

nec_def: as above.

poss_def: as above.

ta_def: as above.

mem_type: as above.

agg_type: as above.

agg_def: as above.

step1: as above.

step3: as above.

step4: as above.

mp009: as above.

step6: as above.

step11: as above.

mp012: as above.

a_type: as above.

thf(p_type, type, p: $i).

English: a particular thing, P.

case_agg: as above.

thf(case_possible, axiom, poss @ p).

English: this case: P is possible in itself.

thf(case_only, axiom, ~ (?[Q:$i]: ((Q != a) & (poss @ Q)))).

English: this case: no possible thing other than A exists.

conclusion: as above.

imkan_a_assembly.p

ex_type: as above.

ess_type: as above.

gives_type: as above.

nec_type: as above.

poss_type: as above.

ta_type: as above.

nec_def: as above.

poss_def: as above.

ta_def: as above.

mem_type: as above.

agg_type: as above.

agg_def: as above.

step1: as above.

step3: as above.

step4: as above.

mp009: as above.

step6: as above.

step11: as above.

mp012: as above.

sp001: as above.

conclusion: as above.

Scope

Leo-III independently confirms that the proved steps of dalīl al-imkān yield its conclusion, by both routes. The steps themselves are proved in Rocq.

Run it yourself

Leo-III 1.7.18 · 50-second search limit

Load any input above into this editor, or paste your own, and run it on this server's Leo-III 1.7.18 in an isolated, network-disabled worker. Runs are limited to 60 seconds.

Loading…

Isolated run · 60-second limit · output retained 2h