Type
$ go
or
swipl -s tp.pro
and then something like
?- bprove(a->b->a).
true.
?- bprove((a->b)->a).
false.
See a lot of examples of use in file tester.pro Generic benchmarking code is in bm.pro.
Given the Curry-Howard isomorphism, solving the type inhabitation problem is equivalent to finding propositional implicational intuitionistic tautology proofs.
These tools implement Prolog-based algorithms on the two sides of the Curry-Howard isomorphism, including combinatorial and random testers, centered around:
The programs are tested with SWI Prolog 7.7.12.
Except for those using SWI-Prolog’s multi-threading the code, the provers and the testers are likely to run on most Prologs.
This work-in-progress paper documents some key components of this code repository.
For comparing with other provers, we have ported the propositional subset of the ILTP library to SWI-Prolog and uniformized notation of some third party provers.
Try:
?-load_probs1. % our prover
?-load_probs2.
...
?-load_probsN.
for their respective performance.
So far, our faprove/1 and ff_prove/1 full propositional IL provers are the only ones passing all correctness tests as well as avoidance of stack overflow errors. All provers can be tested at various timout levels by changing max_time/1 in file tester.pro