X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground%2Flib%2Fexteq.ma;h=5b655e686a5cec35230bedbe9bc819e9d717ed6e;hb=6604a232815858a6c75dd25ac45abd68438077ff;hp=81d324bad7680885262a6f2c3ea5a6f9a63d9a43;hpb=68b4f2490c12139c03760b39895619e63b0f38c9;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma b/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma index 81d324bad..5b655e686 100644 --- a/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma +++ b/matita/matita/contribs/lambdadelta/ground/lib/exteq.ma @@ -18,12 +18,13 @@ include "ground/lib/relations.ma". (* EXTENSIONAL EQUIVALENCE **************************************************) definition exteq (A,B:Type[0]): relation (A → B) ≝ - λf1,f2. ∀a. f1 a = f2 a. + λf1,f2. ∀a. f1 a = f2 a. -interpretation "extensional equivalence" - 'DotEq A B f1 f2 = (exteq A B f1 f2). +interpretation + "extensional equivalence" + 'DotEq A B f1 f2 = (exteq A B f1 f2). -(* Basic_properties *********************************************************) +(* Basic constructions ******************************************************) lemma exteq_refl (A) (B): reflexive … (exteq A B). // qed. @@ -37,3 +38,36 @@ lemma exteq_sym (A) (B): symmetric … (exteq A B). lemma exteq_trans (A) (B): Transitive … (exteq A B). /2 width=1 by exteq_repl/ qed-. +lemma exteq_canc_sn (A) (B): left_cancellable … (exteq A B). +/2 width=1 by exteq_repl/ qed-. + +lemma exteq_canc_dx (A) (B): right_cancellable … (exteq A B). +/2 width=1 by exteq_repl/ qed-. + +(* Constructions with function composition **********************************) + +lemma compose_repl_fwd_dx (A) (B) (C) (g) (f1) (f2): + f1 ≐{A,B} f2 → g ∘ f1 ≐{A,C} g ∘ f2. +#A #B #C #g #f1 #f2 #Hf12 #a +whd in ⊢ (??%%); // +qed. + +lemma compose_repl_bak_dx (A) (B) (C) (g) (f1) (f2): + f1 ≐{A,B} f2 → g ∘ f2 ≐{A,C} g ∘ f1. +/3 width=1 by compose_repl_fwd_dx, exteq_sym/ +qed. + +lemma compose_repl_fwd_sn (A) (B) (C) (g1) (g2) (f): + g1 ≐{B,C} g2 → g1 ∘ f ≐{A,C} g2 ∘ f. +#A #B #C #g1 #g2 #f #Hg12 #a +whd in ⊢ (??%%); // +qed. + +lemma compose_repl_bak_sn (A) (B) (C) (g1) (g2) (f): + g1 ≐{B,C} g2 → g2 ∘ f ≐{A,C} g1 ∘ f. +/3 width=1 by compose_repl_fwd_sn, exteq_sym/ +qed. + +lemma compose_assoc (A1) (A2) (A3) (A4) (f3:A3→A4) (f2:A2→A3) (f1:A1→A2): + f3 ∘ (f2 ∘ f1) ≐ f3 ∘ f2 ∘ f1. +// qed.