fact: Fixpoint NormF (e:expr) : expr := match e with | expr_var n => expr_div (expr_plus (expr_mult e expr_one) expr_zero) expr_one | expr_int i => expr_div e expr_one | expr_plus e1 e2 => FF_plus (NormF e1) (NormF e2) | expr_mult e1 e2 => FF_mult (NormF e1) (NormF e2) | expr_div e1 e2 => FF_div (NormF e1) (NormF e2) | expr_unop f e => expr_div (expr_plus (expr_mult (expr_unop f (NormF e)) expr_one) expr_zero) expr_one | expr_binop f e e' => expr_div (expr_plus (expr_mult (expr_binop f (NormF e) (NormF e')) expr_one) expr_zero) expr_one | expr_part f e => expr_div (expr_plus (expr_mult (expr_part f (NormF e)) expr_one) expr_zero) expr_one end.
imports: CoRN.logic.CLogic Coq.Bool.Bool