
TISSHARE=`tis-kernel -print-share-path`

J3CMD=tis-kernel -j3 -j3-no-bv -j3-prop none -j3-safe-float -j3-load-path . -j3-no-logic -j3-provers 'Alt-Ergo,2.4.3,FPA' -j3-ae-steps 5000

WHY3CMD=unset WHY3DATA; unset WHY3LIB; unset WHY3LOADPATH; why3 -L . -L $(TISSHARE)/j3
WHY3IDE=$(WHY3CMD) ide --extra-expl-prefix="tis_expl:"


default:
	@echo '`make replay` will replay all proofs (it takes time!)'
	@echo 'otherwise, try `make sum.mlw.ide`, `make sum.c.prove`, etc.'

replay: sum_real.mlw.replay sum.mlw.replay \
	j3bridge.mlw.replay sum.c.prove sum.c.replay \
	exp_log.mlw.replay \
	lse.mlw.replay lse.c.prove lse.c.replay \
	slse.mlw.replay

sum_real.mlw.ide:
	$(WHY3IDE) sum_real.mlw

sum_real.mlw.replay:
	@echo
	@echo '== replaying the WhyML extra specification and lemmas on real sums =='
	@echo
	$(WHY3CMD) replay sum_real

sum.mlw.ide:
	$(WHY3IDE) sum.mlw

sum.mlw.replay:
	@echo
	@echo '== replaying the proofs of WhyML formalization of Sum =='
	@echo
	$(WHY3CMD) replay sum

j3bridge.mlw.ide:
	$(WHY3IDE) j3bridge.mlw

j3bridge.mlw.replay:
	@echo
	@echo '== replaying the WhyML specifications of bridge with J3 =='
	@echo
	$(WHY3CMD) replay j3bridge

sum.c.prove:
	@echo
	@echo '== regenerating VCs for the C implementation of Sum =='
	@echo
	$(J3CMD) -j3-mlw sum_c -j3-fct sum calc_sum.c
	mv sum_c.sum.mlw sum_c__sum.mlw

sum.c.ide:
	$(WHY3IDE) sum_c__sum.mlw

sum.c.replay:
	@echo
	@echo '== replaying the proofs of C implementation of Sum =='
	@echo
	$(WHY3CMD) replay sum_c__sum  | grep -v Warning

exp_log.mlw.ide:
	$(WHY3IDE) exp_log.mlw

exp_log.mlw.replay:
	@echo
	@echo '== replaying the proofs of WhyML lemmas on exp and log =='
	@echo
	$(WHY3CMD) replay exp_log

lse.mlw.ide:
	$(WHY3IDE) lse.mlw

lse.mlw.replay:
	@echo
	@echo '== replaying the proofs of WhyML formalization of LSE =='
	@echo
	$(WHY3CMD) replay lse

lse.c.prove:
	@echo
	@echo '== regenerating VCs for the C implementation of LSE =='
	@echo
	$(J3CMD) -j3-mlw lse_c -j3-fct log_sum_exp calc_lse.c
	mv lse_c.log_sum_exp.mlw lse_c__log_sum_exp.mlw

lse.c.ide:
	$(WHY3IDE) lse_c__log_sum_exp.mlw

lse.c.replay:
	@echo
	@echo '== replaying the proofs of C implementation of LSE =='
	@echo
	$(WHY3CMD) replay lse_c__log_sum_exp | grep -v Warning


slse.mlw.ide:
	$(WHY3IDE) slse.mlw

slse.mlw.replay:
	@echo
	@echo '== replaying the proofs of WhyML formalization of SLSE =='
	@echo
	$(WHY3CMD) replay slse
