alias nat /Coq/Init/Datatypes/nat.ind#1/1 alias eqT /Coq/Init/Logic_Type/eqT.ind#1/1 alias eq /Coq/Init/Logic/Equality/eq.ind#1/1 alias refl_equal /Coq/Init/Logic/Equality/eq.ind#1/1/1 alias eq_ind /Coq/Init/Logic/Equality/eq_ind.con alias eq_ind_r /Coq/Init/Logic/Logic_lemmas/eq_ind_r.con alias O /Coq/Init/Datatypes/nat.ind#1/1/1 alias S /Coq/Init/Datatypes/nat.ind#1/1/2 alias plus /Coq/Init/Peano/plus.con alias mult /Coq/Init/Peano/mult.con alias le /Coq/Init/Peano/le.ind#1/1 alias lt /Coq/Init/Peano/lt.con alias not /Coq/Init/Logic/not.con alias f_equal /Coq/Init/Logic/Logic_lemmas/equality/f_equal.con alias le_trans /Coq/Arith/Le/le_trans.con alias le_plus_plus /Coq/Arith/Plus/le_plus_plus.con alias le_reg_r /Coq/Arith/Plus/le_reg_r.con alias le_reg_l /Coq/Arith/Plus/le_reg_l.con alias plus_n_O /Coq/Init/Peano/plus_n_O.con !n:nat.!m:nat.(le n m)->(le (mult (S (S O)) n) (mult (S (S O)) m)) (* Lo scopo dell'esercizio e' riuscire a effettuare la dimostrazione che *) (* (n <= m) -> (2*n <= 2*m) come la si farebbe su carta, ovvero: *) (* *) (* 2 * n *) (* == n + n + 0 Simpl *) (* <= m + n + 0 le_reg_r because n <= m because hypothesis *) (* <= m + m + 0 le_reg_l because n + 0 <= m + 0 because le_reg_r *) (* because hypothesis *) (* == 2 * m Change *)