/* Generated by Frama-C */
#include "stddef.h"
#include "stdio.h"
int main(void)
{
  int __retres;
  int x = 0;
  int y = 1;
  {
    int __gen_e_acsl_and;
    if (x == 0) __gen_e_acsl_and = y == 1; else __gen_e_acsl_and = 0;
    __e_acsl_assert(__gen_e_acsl_and,"Assertion","main","x == 0 && y == 1",
                    "tests/constructs/lazy.i",9);
  }
  /*@ assert x ≡ 0 ∧ y ≡ 1; */ ;
  {
    int __gen_e_acsl_and_2;
    if (x != 0) {
      __e_acsl_assert(0,"RTE","main","division_by_zero: 0 != 0",
                      "tests/constructs/lazy.i",10);
      __gen_e_acsl_and_2 = y == 1 / 0;
    }
    else __gen_e_acsl_and_2 = 0;
    __e_acsl_assert(! __gen_e_acsl_and_2,"Assertion","main",
                    "!(x != 0 && y == 1 / 0)","tests/constructs/lazy.i",10);
  }
  /*@ assert ¬(x ≢ 0 ∧ y ≡ 1 / 0); */ ;
  {
    int __gen_e_acsl_or;
    if (y == 1) __gen_e_acsl_or = 1; else __gen_e_acsl_or = x == 1;
    __e_acsl_assert(__gen_e_acsl_or,"Assertion","main","y == 1 || x == 1",
                    "tests/constructs/lazy.i",11);
  }
  /*@ assert y ≡ 1 ∨ x ≡ 1; */ ;
  {
    int __gen_e_acsl_or_2;
    if (x == 0) __gen_e_acsl_or_2 = 1;
    else {
      __e_acsl_assert(0,"RTE","main","division_by_zero: 0 != 0",
                      "tests/constructs/lazy.i",12);
      __gen_e_acsl_or_2 = y == 1 / 0;
    }
    __e_acsl_assert(__gen_e_acsl_or_2,"Assertion","main",
                    "x == 0 || y == 1 / 0","tests/constructs/lazy.i",12);
  }
  /*@ assert x ≡ 0 ∨ y ≡ 1 / 0; */ ;
  {
    int __gen_e_acsl_implies;
    if (! (x == 0)) __gen_e_acsl_implies = 1;
    else __gen_e_acsl_implies = y == 1;
    __e_acsl_assert(__gen_e_acsl_implies,"Assertion","main",
                    "x == 0 ==> y == 1","tests/constructs/lazy.i",13);
  }
  /*@ assert x ≡ 0 ⇒ y ≡ 1; */ ;
  {
    int __gen_e_acsl_implies_2;
    if (! (x == 1)) __gen_e_acsl_implies_2 = 1;
    else {
      __e_acsl_assert(0,"RTE","main","division_by_zero: 0 != 0",
                      "tests/constructs/lazy.i",14);
      __gen_e_acsl_implies_2 = y == 1 / 0;
    }
    __e_acsl_assert(__gen_e_acsl_implies_2,"Assertion","main",
                    "x == 1 ==> y == 1 / 0","tests/constructs/lazy.i",14);
  }
  /*@ assert x ≡ 1 ⇒ y ≡ 1 / 0; */ ;
  {
    int __gen_e_acsl_if;
    if (x != 0) __gen_e_acsl_if = x != 0; else __gen_e_acsl_if = y != 0;
    __e_acsl_assert(__gen_e_acsl_if,"Assertion","main",
                    "x != 0? x != 0: y != 0","tests/constructs/lazy.i",15);
  }
  /*@ assert x ≢ 0? x ≢ 0: y ≢ 0; */ ;
  {
    int __gen_e_acsl_if_2;
    if (y != 0) __gen_e_acsl_if_2 = y != 0; else __gen_e_acsl_if_2 = x != 0;
    __e_acsl_assert(__gen_e_acsl_if_2,"Assertion","main",
                    "y != 0? y != 0: x != 0","tests/constructs/lazy.i",16);
  }
  /*@ assert y ≢ 0? y ≢ 0: x ≢ 0; */ ;
  {
    int __gen_e_acsl_if_3;
    if (x == 1) __gen_e_acsl_if_3 = x == 18; else __gen_e_acsl_if_3 = x == 0;
    __e_acsl_assert(__gen_e_acsl_if_3,"Assertion","main",
                    "x == 1? x == 18: x == 0","tests/constructs/lazy.i",17);
  }
  /*@ assert x ≡ 1? x ≡ 18: x ≡ 0; */ ;
  {
    int __gen_e_acsl_implies_3;
    int __gen_e_acsl_equiv;
    if (! (x == 2)) __gen_e_acsl_implies_3 = 1;
    else __gen_e_acsl_implies_3 = y == 3;
    if (__gen_e_acsl_implies_3) {
      int __gen_e_acsl_implies_4;
      if (! (y == 3)) __gen_e_acsl_implies_4 = 1;
      else __gen_e_acsl_implies_4 = x == 2;
      __gen_e_acsl_equiv = __gen_e_acsl_implies_4;
    }
    else __gen_e_acsl_equiv = 0;
    __e_acsl_assert(__gen_e_acsl_equiv,"Assertion","main",
                    "x == 2 <==> y == 3","tests/constructs/lazy.i",20);
  }
  /*@ assert x ≡ 2 ⇔ y ≡ 3; */ ;
  {
    int __gen_e_acsl_implies_5;
    int __gen_e_acsl_equiv_2;
    if (! (x == 0)) __gen_e_acsl_implies_5 = 1;
    else __gen_e_acsl_implies_5 = y == 1;
    if (__gen_e_acsl_implies_5) {
      int __gen_e_acsl_implies_6;
      if (! (y == 1)) __gen_e_acsl_implies_6 = 1;
      else __gen_e_acsl_implies_6 = x == 0;
      __gen_e_acsl_equiv_2 = __gen_e_acsl_implies_6;
    }
    else __gen_e_acsl_equiv_2 = 0;
    __e_acsl_assert(__gen_e_acsl_equiv_2,"Assertion","main",
                    "x == 0 <==> y == 1","tests/constructs/lazy.i",21);
  }
  /*@ assert x ≡ 0 ⇔ y ≡ 1; */ ;
  {
    int __gen_e_acsl_if_4;
    if (x != 0) __gen_e_acsl_if_4 = x; else __gen_e_acsl_if_4 = y;
    __e_acsl_assert((__gen_e_acsl_if_4 != 0) == (x == 0),"Assertion","main",
                    "((x != 0? x: y) != 0) == (x == 0)",
                    "tests/constructs/lazy.i",24);
  }
  /*@ assert ((x ≢ 0? x: y) ≢ 0) ≡ (x ≡ 0); */ ;
  {
    int __gen_e_acsl_and_3;
    int __gen_e_acsl_or_3;
    if (x != 0) __gen_e_acsl_and_3 = y != 0; else __gen_e_acsl_and_3 = 0;
    if (__gen_e_acsl_and_3) __gen_e_acsl_or_3 = 1;
    else __gen_e_acsl_or_3 = y != 0;
    __e_acsl_assert(__gen_e_acsl_or_3,"Assertion","main",
                    "(x != 0 && y != 0) || y != 0","tests/constructs/lazy.i",
                    25);
  }
  /*@ assert (x ≢ 0 ∧ y ≢ 0) ∨ y ≢ 0; */ ;
  {
    int __gen_e_acsl_or_4;
    int __gen_e_acsl_and_4;
    if (x != 0) __gen_e_acsl_or_4 = 1; else __gen_e_acsl_or_4 = y != 0;
    if (__gen_e_acsl_or_4) __gen_e_acsl_and_4 = y == 1;
    else __gen_e_acsl_and_4 = 0;
    __e_acsl_assert(__gen_e_acsl_and_4,"Assertion","main",
                    "(x != 0 || y != 0) && y == 1","tests/constructs/lazy.i",
                    26);
  }
  /*@ assert (x ≢ 0 ∨ y ≢ 0) ∧ y ≡ 1; */ ;
  {
    int __gen_e_acsl_or_5;
    if (x != 0) __gen_e_acsl_or_5 = 1; else __gen_e_acsl_or_5 = y != 0;
    __e_acsl_assert(__gen_e_acsl_or_5 == (y != 0),"Assertion","main",
                    "(x != 0 || y != 0) == (y != 0)",
                    "tests/constructs/lazy.i",27);
  }
  /*@ assert (x ≢ 0 ∨ y ≢ 0) ≡ (y ≢ 0); */ ;
  {
    int __gen_e_acsl_and_5;
    if (x != 0) __gen_e_acsl_and_5 = y != 0; else __gen_e_acsl_and_5 = 0;
    __e_acsl_assert(__gen_e_acsl_and_5 == (x != 0),"Assertion","main",
                    "(x != 0 && y != 0) == (x != 0)",
                    "tests/constructs/lazy.i",28);
  }
  /*@ assert (x ≢ 0 ∧ y ≢ 0) ≡ (x ≢ 0); */ ;
  __retres = 0;
  return __retres;
}


