== lazyBooleans == fun lazyBooleans(a : Boolean, b : Boolean) : Unit { if (a) { 1 } else { 2 } 3 if (a && b) 5 else 6 7 if (a || b) 8 else 9 10 if (a) 11 12 if (a) else 13 14 } --------------------- : Boolean NEW: magic[FAKE_INITIALIZER](a : Boolean) -> : Boolean NEW: magic[FAKE_INITIALIZER](b : Boolean) -> a : Boolean NEW: r(a) -> 1 : * NEW: r(1) -> { 1 } : * COPY 2 : * NEW: r(2) -> { 2 } : * COPY if (a) { 1 } else { 2 } : * NEW: merge(if (a) { 1 } else { 2 }|, ) -> 3 : * NEW: r(3) -> a : Boolean NEW: r(a) -> b : Boolean NEW: r(b) -> a && b : Boolean NEW: magic[AND](a && b|, ) -> 5 : * NEW: r(5) -> 6 : * NEW: r(6) -> if (a && b) 5 else 6 : * NEW: merge(if (a && b) 5 else 6|, ) -> 7 : * NEW: r(7) -> a : Boolean NEW: r(a) -> b : Boolean NEW: r(b) -> a || b : Boolean NEW: magic[OR](a || b|, ) -> 8 : * NEW: r(8) -> 9 : * NEW: r(9) -> if (a || b) 8 else 9 : * NEW: merge(if (a || b) 8 else 9|, ) -> 10 : * NEW: r(10) -> a : Boolean NEW: r(a) -> 11 : * NEW: r(11) -> if (a) 11 : * NEW: merge(if (a) 11|) -> 12 : * NEW: r(12) -> a : Boolean NEW: r(a) -> 13 : * NEW: r(13) -> if (a) else 13 : * NEW: merge(if (a) else 13|) -> 14 : * NEW: r(14) -> { if (a) { 1 } else { 2 } 3 if (a && b) 5 else 6 7 if (a || b) 8 else 9 10 if (a) 11 12 if (a) else 13 14 } : * COPY =====================