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