X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=matita%2Fmatita%2Fcontribs%2Flambdadelta%2Fground_2%2Frelocation%2Frtmap_sand.ma;h=7e97d953ba26d1a1bb736de70eeaf40d0d00350b;hb=75f395f0febd02de8e0f881d918a8812b1425c8d;hp=fcf82d2cc2afebd2862a51336cebd009d5cc98e6;hpb=d59f344b1e4b377e2f06abd9f8856d686d21b222;p=helm.git diff --git a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma index fcf82d2cc..7e97d953b 100644 --- a/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma +++ b/matita/matita/contribs/lambdadelta/ground_2/relocation/rtmap_sand.ma @@ -27,8 +27,8 @@ interpretation "intersection (rtmap)" (* Basic inversion lemmas ***************************************************) -lemma sand_inv_ppx: ∀g1,g2,g. g1 ⋒ g2 ≡ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋒ f2 ≡ f & ↑f = g. +lemma sand_inv_ppx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ↑f = g. #g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) @@ -38,8 +38,8 @@ try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) /2 width=3 by ex2_intro/ qed-. -lemma sand_inv_npx: ∀g1,g2,g. g1 ⋒ g2 ≡ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → - ∃∃f. f1 ⋒ f2 ≡ f & ↑f = g. +lemma sand_inv_npx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ↑f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ↑f = g. #g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) @@ -49,8 +49,8 @@ try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) /2 width=3 by ex2_intro/ qed-. -lemma sand_inv_pnx: ∀g1,g2,g. g1 ⋒ g2 ≡ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋒ f2 ≡ f & ↑f = g. +lemma sand_inv_pnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ↑f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ↑f = g. #g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) @@ -60,8 +60,8 @@ try elim (discr_push_next … Hx2) try elim (discr_next_push … Hx2) /2 width=3 by ex2_intro/ qed-. -lemma sand_inv_nnx: ∀g1,g2,g. g1 ⋒ g2 ≡ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → - ∃∃f. f1 ⋒ f2 ≡ f & ⫯f = g. +lemma sand_inv_nnx: ∀g1,g2,g. g1 ⋒ g2 ≘ g → ∀f1,f2. ⫯f1 = g1 → ⫯f2 = g2 → + ∃∃f. f1 ⋒ f2 ≘ f & ⫯f = g. #g1 #g2 #g * -g1 -g2 -g #f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x1 #x2 #Hx1 #Hx2 destruct try (>(injective_push … Hx1) -x1) try (>(injective_next … Hx1) -x1) @@ -73,45 +73,45 @@ qed-. (* Basic properties *********************************************************) -corec lemma sand_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋒ f2 ≡ f). +corec lemma sand_eq_repl_back1: ∀f2,f. eq_repl_back … (λf1. f1 ⋒ f2 ≘ f). #f2 #f #f1 * -f1 -f2 -f #f1 #f2 #f #g1 #g2 #g #Hf #H1 #H2 #H0 #x #Hx try cases (eq_inv_px … Hx … H1) try cases (eq_inv_nx … Hx … H1) -g1 /3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ qed-. -lemma sand_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋒ f2 ≡ f). +lemma sand_eq_repl_fwd1: ∀f2,f. eq_repl_fwd … (λf1. f1 ⋒ f2 ≘ f). #f2 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back1/ qed-. -corec lemma sand_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋒ f2 ≡ f). +corec lemma sand_eq_repl_back2: ∀f1,f. eq_repl_back … (λf2. f1 ⋒ f2 ≘ f). #f1 #f #f2 * -f1 -f2 -f #f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx try cases (eq_inv_px … Hx … H2) try cases (eq_inv_nx … Hx … H2) -g2 /3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ qed-. -lemma sand_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋒ f2 ≡ f). +lemma sand_eq_repl_fwd2: ∀f1,f. eq_repl_fwd … (λf2. f1 ⋒ f2 ≘ f). #f1 #f @eq_repl_sym /2 width=3 by sand_eq_repl_back2/ qed-. -corec lemma sand_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋒ f2 ≡ f). +corec lemma sand_eq_repl_back3: ∀f1,f2. eq_repl_back … (λf. f1 ⋒ f2 ≘ f). #f1 #f2 #f * -f1 -f2 -f #f1 #f2 #f #g1 #g2 #g #Hf #H #H2 #H0 #x #Hx try cases (eq_inv_px … Hx … H0) try cases (eq_inv_nx … Hx … H0) -g /3 width=7 by sand_pp, sand_np, sand_pn, sand_nn/ qed-. -lemma sand_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋒ f2 ≡ f). +lemma sand_eq_repl_fwd3: ∀f1,f2. eq_repl_fwd … (λf. f1 ⋒ f2 ≘ f). #f1 #f2 @eq_repl_sym /2 width=3 by sand_eq_repl_back3/ qed-. -corec lemma sand_refl: ∀f. f ⋒ f ≡ f. +corec lemma sand_refl: ∀f. f ⋒ f ≘ f. #f cases (pn_split f) * #g #H [ @(sand_pp … H H H) | @(sand_nn … H H H) ] -H // qed. -corec lemma sand_sym: ∀f1,f2,f. f1 ⋒ f2 ≡ f → f2 ⋒ f1 ≡ f. +corec lemma sand_sym: ∀f1,f2,f. f1 ⋒ f2 ≘ f → f2 ⋒ f1 ≘ f. #f1 #f2 #f * -f1 -f2 -f #f1 #f2 #f #g1 #g2 #g #Hf * * * -g1 -g2 -g [ @sand_pp | @sand_pn | @sand_np | @sand_nn ] /2 width=7 by/