qed.
*)
-(* la prova seguente e' tutta una ripetizione. Sistemare. *)
-(*CSC
-theorem Qtimes1: \forall f:fraction.
-Qtimes (nat_fact_all_to_Q (numerator f))
-(Qinv (nat_fact_all_to_Q (numerator (finv f))))
-= Qpos (frac f).
-simplify.
-intro.elim f
- [reflexivity
- |reflexivity
- |elim (or_numerator_nfa_one_nfa_proper f1)
- [elim H1.clear H1.
- elim H3.clear H3.
- cut (finv (nat_fact_to_fraction a) = f1)
- [elim z
- [simplify.
- rewrite > H2.rewrite > H1.simplify.
- rewrite > Hcut.reflexivity
- |simplify.
- rewrite > H2.rewrite > H1.simplify.
- rewrite > Hcut.reflexivity
- |simplify.
- rewrite > H2.rewrite > H1.simplify.
- rewrite > Hcut.reflexivity
- ]
- |generalize in match H.
- rewrite > H2.rewrite > H1.simplify.
- intro.destruct H3.assumption
- ]
- |elim H1.clear H1.
- elim z
- [simplify.
- rewrite > H2.rewrite > H2.simplify.
- elim (or_numerator_nfa_one_nfa_proper (finv f1))
- [elim H1.clear H1.
- rewrite > H3.simplify.
- cut (nat_fact_to_fraction a = f1)
- [rewrite > Hcut.reflexivity
- |generalize in match H.
- rewrite > H2.
- rewrite > H3.
- rewrite > Qtimes_q_Qone.
- intro.
- destruct H1.
- assumption
- ]
- |elim H1.clear H1.
- generalize in match H.
- rewrite > H2.
- rewrite > H3.simplify.
- intro.
- destruct H1.
- rewrite > Hcut.
- simplify.reflexivity
- ]
- |simplify.rewrite > H2.simplify.
- elim (or_numerator_nfa_one_nfa_proper (finv f1))
- [elim H1.clear H1.
- rewrite > H3.simplify.
- cut (nat_fact_to_fraction a = f1)
- [rewrite > Hcut.reflexivity
- |generalize in match H.
- rewrite > H2.
- rewrite > H3.
- rewrite > Qtimes_q_Qone.
- intro.
- destruct H1.
- assumption
- ]
- |elim H1.clear H1.
- generalize in match H.
- rewrite > H2.
- rewrite > H3.simplify.
- intro.
- destruct H1.
- rewrite > Hcut.
- simplify.reflexivity
- ]
- |simplify.rewrite > H2.simplify.
- elim (or_numerator_nfa_one_nfa_proper (finv f1))
- [elim H1.clear H1.
- rewrite > H3.simplify.
- cut (nat_fact_to_fraction a = f1)
- [rewrite > Hcut.reflexivity
- |generalize in match H.
- rewrite > H2.
- rewrite > H3.
- rewrite > Qtimes_q_Qone.
- intro.
- destruct H1.
- assumption
- ]
- |elim H1.clear H1.
- generalize in match H.
- rewrite > H2.
- rewrite > H3.simplify.
- intro.
- destruct H1.
- rewrite > Hcut.
- simplify.reflexivity
- ]
- ]
- ]
- ]
-qed.
-*)
(*
definition numQ:Q \to Z \def
\lambda q.
].
*)
+alias id "numeratorQ" = "cic:/matita/Q/q/q/numeratorQ.con".
+alias id "nat" = "cic:/matita/nat/nat/nat.ind#xpointer(1/1)".
+alias id "defactorize" = "cic:/matita/nat/factorization/defactorize.con".
+alias id "Q" = "cic:/matita/Q/q/q/Q.ind#xpointer(1/1)".
definition numQ:Q \to nat \def
\lambda q. defactorize (numeratorQ q).
+alias id "Qinv" = "cic:/matita/Q/q/qinv/Qinv.con".
definition denomQ:Q \to nat \def
\lambda q. defactorize (numeratorQ (Qinv q)).
|elim f
[reflexivity
|reflexivity
- |apply Qtimes1.
+ |apply Qtimes_numerator_denominator.
]
]
qed.*)
|elim f
[reflexivity
|reflexivity
- |apply Qtimes1.
+ |apply Qtimes_numerator_denominator.
]
]
qed.*)
+alias id "Qpos" = "cic:/matita/Q/q/q/Q.ind#xpointer(1/1/2)".
+alias id "OQ" = "cic:/matita/Q/q/q/Q.ind#xpointer(1/1/1)".
definition Qabs:Q \to Q \def \lambda q.
match q with
[OQ \Rightarrow OQ