Reputation: 3036
Is it possible and how to use Coq as calculator or as rule engine in foward chaining mode? Coq script usually requires to declare the goal for which the proof can be found. But is it possible to go in other direction, e.g. to compute the set of some consequences bounded by some rule, e.g., by some number of steps. I am especially interested in the sequent calculus of full first order logic. I guess (but I don't know) that there are some implementation or package for some type of sequent calculus for first order logic, but it is for theorem proving. I woul like to use such sequent calculus to derive consequences in some directed order. Is that possible in Coq and how?
Upvotes: 0
Views: 396
Reputation: 23582
Coq can be used for forward reasoning as well, in particular with the assert
tactic. When you write assert (H : P).
, Coq generates a subgoal that asks you to prove P
. When this goal is complete, it resumes the original proof, extending its context with a hypothesis H : P
.
The ltac language used to write Coq scripts has a match goal
operator that allows you to inspect the shape of your goal. This allows you to progressively saturate your proof context with new facts derived from your current assumptions using the assert
tactic, and to stop once certain conditions are met. Adam Chlipala's CPDT book has a nice chapter covering these features of tactic programming.
Upvotes: 1