// Error a propósito: libera el árbol entero, y con él el hijo que iba a conservar.
#include <stdio.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 == 1) {
        Logic *left = e->as.pair.left;
        logic_free(e);
        return left;
    }
    return e;
}

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