(* This file was originally generated by why.
   It can be modified; only the generated parts will be overwritten. *)

Require Why.

(* Why obligation from file "good/recfun.mlw", characters 124-134 *)
Lemma f1_po_1 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test2: `x0 > 0`)
  `x0 - 1 >= 0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 98-157 *)
Lemma f1_po_2 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test2: `x0 > 0`)
  (Pre5: `x0 - 1 >= 0`)
  (Pre3: `x0 - 1 >= 0`)
  (Pre4: `x0 - 1 >= 0`)
  (Zwf `0` `x0 - 1` Variant1).
Proof.
Intros; Unfold Zwf; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 140-141 *)
Lemma f1_po_3 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test1: `x0 <= 0`)
  `x0 = 0`.
Proof.
Intros; Omega.
Save.






(* Why obligation from file "good/recfun.mlw", characters 313-322 *)
Lemma f2_po_1 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test2: `x0 > 0`)
  (x1: Z)
  (Post3: x1 = `x0 - 1`)
  `x1 >= 0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 267-337 *)
Lemma f2_po_2 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test2: `x0 > 0`)
  (x1: Z)
  (Post3: x1 = `x0 - 1`)
  (Pre5: `x1 >= 0`)
  (Pre3: `x1 >= 0`)
  (Pre4: `x1 >= 0`)
  (Zwf `0` x1 Variant1).
Proof.
Intros; Unfold Zwf; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 326-326 *)
Lemma f2_po_3 : 
  (x: Z)
  (Pre8: `x >= 0`)
  (Variant1: Z)
  (x0: Z)
  (Pre7: Variant1 = x0)
  (Pre6: `x0 >= 0`)
  (Test1: `x0 <= 0`)
  `x0 = 0`.
Proof.
Intros; Omega.
Save.





(* Why obligation from file "good/recfun.mlw", characters 472-482 *)
Lemma f3_po_1 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post3: x1 = `x0 + 1`)
  `a0 - 1 >= 0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 427-502 *)
Lemma f3_po_2 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post3: x1 = `x0 + 1`)
  (Pre5: `a0 - 1 >= 0`)
  (Pre3: `a0 - 1 >= 0`)
  (Pre4: `a0 - 1 >= 0`)
  (Zwf `0` `a0 - 1` Variant1).
Proof.
Intros; Unfold Zwf; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 453-486 *)
Lemma f3_po_3 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post3: x1 = `x0 + 1`)
  (Pre5: `a0 - 1 >= 0`)
  (x2: Z)
  (Post8: `x2 = x1 + (a0 - 1)`)
  `x2 = x0 + a0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 486-486 *)
Lemma f3_po_4 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test1: `a0 <= 0`)
  `x0 = x0 + a0`.
Proof.
Intros; Omega.
Save.





(* Why obligation from file "good/recfun.mlw", characters 666-672 *)
Lemma f4_po_1 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post5: x1 = `x0 + 1`)
  (a1: Z)
  (Post6: a1 = `a0 - 1`)
  `a1 >= 0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 604-695 *)
Lemma f4_po_2 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post5: x1 = `x0 + 1`)
  (a1: Z)
  (Post6: a1 = `a0 - 1`)
  (Pre5: `a1 >= 0`)
  (Pre3: `a1 >= 0`)
  (Pre4: `a1 >= 0`)
  (Zwf `0` a1 Variant1).
Proof.
Intros; Unfold Zwf; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 634-676 *)
Lemma f4_po_3 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test2: `a0 > 0`)
  (x1: Z)
  (Post5: x1 = `x0 + 1`)
  (a1: Z)
  (Post6: a1 = `a0 - 1`)
  (Pre5: `a1 >= 0`)
  (x2: Z)
  (Post11: `x2 = x1 + a1`)
  `x2 = x0 + a0`.
Proof.
Intros; Omega.
Save.

(* Why obligation from file "good/recfun.mlw", characters 676-676 *)
Lemma f4_po_4 : 
  (a: Z)
  (Pre8: `a >= 0`)
  (Variant1: Z)
  (a0: Z)
  (x0: Z)
  (Pre7: Variant1 = a0)
  (Pre6: `a0 >= 0`)
  (Test1: `a0 <= 0`)
  `x0 = x0 + a0`.
Proof.
Intros; Omega.
Save.





