fact: Fixpoint eq_expr (e f:expr) {struct e} : bool := match e, f with | expr_var n, expr_var m => eq_nat n m | expr_int z, expr_int z' => eq_int z z' | expr_plus e1 e2, expr_plus f1 f2 => andb (eq_expr e1 f1) (eq_expr e2 f2) | expr_mult e1 e2, expr_mult f1 f2 => andb (eq_expr e1 f1) (eq_expr e2 f2) | expr_div e1 e2, expr_div f1 f2 => andb (eq_expr e1 f1) (eq_expr e2 f2) | expr_unop n e', expr_unop m f' => andb (eq_nat n m) (eq_expr e' f') | expr_binop n e' e'', expr_binop m f' f'' => andb (eq_nat n m) (andb (eq_expr e' f') (eq_expr e'' f'')) | expr_part n e', expr_part m f' => andb (eq_nat n m) (eq_expr e' f') | _, _ => false end.
imports: CoRN.logic.CLogic Coq.Bool.Bool