Section fractran_utils.
Implicit Type l : list (nat*nat).
Fact fractran_step_nil_inv x y : nil /F/ x → y <-> False.
Fact mul_pos_inj_l q x y : q <> 0 -> q*x = q*y -> x = y.
(* Regular FRACTRAN programs define a deterministic step relation *)

Lemma fractran_step_fun l x y1 y2 :
fractran_regular l
-> l /F/ x → y1
-> l /F/ x → y2 -> y1 = y2.