// Error a propósito: al simplificar "a and false" descarta el subárbol sin liberarlo.
#include <stdio.h>
#include <stdlib.h>

#include "logic.h"

static Logic *bad_simplify(Logic *e) {
    if (e->kind == LOGIC_AND && e->as.pair.right->kind == LOGIC_CONSTANT
        && e->as.pair.right->as.constant == 0) {
        Logic *right = e->as.pair.right;
        free(e);
        return right;
    }
    return e;
}

int main(void) {
    Logic *formula = logic_and(logic_or(logic_input('a'), logic_input('b')), logic_constant(0));
    formula = bad_simplify(formula);
    logic_print(formula, stdout);
    printf("\n");
    logic_free(formula);
    return 0;
}
