(*-------------------------------------------------------------*) ⊢
fun11 T T (fun11 T (unary_morphism1_setoid1 T T) MM A) B ≡ Or A B.
+(* XXX always applied, generates hard unif problems
ndefinition if_morphism: unary_morphism1 CPROP (unary_morphism1_setoid1 CPROP CPROP).
napply (mk_binary_morphism1 … (λA,B:CProp[0]. A → B));
#a; #a'; #b; #b'; #Ha; #Hb; @; #H; #x
//.
nqed.
-unification hint 0 ≔ A,B ⊢
- mk_unary_morphism1 …
- (λX:CProp[0].mk_unary_morphism1 … (λY:CProp[0]. X → Y) (prop11 … (if_morphism X)))
- (prop11 … if_morphism)
- A B ≡ A → B.
-
+unification hint 0 ≔ A,B:CProp[0];
+ T ≟ CPROP,
+ R ≟ mk_unary_morphism1 …
+ (λX:CProp[0].mk_unary_morphism1 …
+ (λY:CProp[0]. X → Y) (prop11 … (if_morphism X)))
+ (prop11 … if_morphism)
+(*----------------------------------------------------------------------*) ⊢
+ fun11 T T (fun11 T (unary_morphism1_setoid1 T T) R A) B ≡ A → B.
+*)
+
(* not as morphism *)
nlemma Not_morphism : CProp[0] ⇒_1 CProp[0].
@(λx:CProp[0].¬ x); #a b; *; #; @; /3/; nqed.
unification hint 0 ≔ S:setoid, A,B:lang S;
T ≟ powerclass_setoid (list S),
- TT ≟ unary_morphism1_setoid1 T T,
- MM ≟ mk_unary_morphism1 T TT
+ MM ≟ mk_unary_morphism1 T (unary_morphism1_setoid1 T T)
(λA:lang S.
mk_unary_morphism1 T T
- (λB:lang S.A · B) (prop11 T T (cat_is_morph S A)))
- (prop11 T TT (cat_is_morph S))
+ (λB:lang S.cat S A B) (prop11 T T (cat_is_morph S A)))
+ (prop11 T (unary_morphism1_setoid1 T T) (cat_is_morph S))
(*--------------------------------------------------------------------------*) ⊢
fun11 T T (fun11 T (unary_morphism1_setoid1 T T) MM A) B ≡ cat S A B.
unification hint 1 ≔ AA : setoid, B,C : Elang AA;
AAS ≟ LIST AA,
T ≟ ext_powerclass_setoid (list AA),
- TT ≟ unary_morphism1_setoid1 T T,
- R ≟ mk_unary_morphism1 ??
+ R ≟ mk_unary_morphism1 T (unary_morphism1_setoid1 T T)
(λS:Elang AA.
- mk_unary_morphism1 ??
+ mk_unary_morphism1 T T
(λS':Elang AA.
- mk_ext_powerclass (list AA) (ext_carr ? S · ext_carr ? S')
+ mk_ext_powerclass (list AA) (cat AA (ext_carr ? S) (ext_carr ? S'))
(ext_prop (list AA) (cat_is_ext AA S S')))
- (prop11 ?? (cat_is_ext_morph AA S)))
- (prop11 ?? (cat_is_ext_morph AA)),
+ (prop11 T T (cat_is_ext_morph AA S)))
+ (prop11 T (unary_morphism1_setoid1 T T) (cat_is_ext_morph AA)),
BB ≟ ext_carr ? B,
CC ≟ ext_carr ? C
(*------------------------------------------------------*) ⊢
- ext_carr AAS (fun11 T T (fun11 T TT R B) C) ≡ cat AA BB CC.
+ ext_carr AAS (fun11 T T (fun11 T (unary_morphism1_setoid1 T T) R B) C) ≡ cat AA BB CC.
(* end hints for cat *)
fun11 T T2 MM a ≡ 𝐋 a.
nlemma L_re_is_ext_morph:∀A:Alpha.(setoid1_of_setoid (re A)) ⇒_1 𝛀^(list A).
-#A; @; ##[ #a; napply (L_re_is_ext ? a); ##] #a b E; @; #x H;
-##[ nchange with (x ∈ 𝐋 b); napply (. #╪_1?);
- ##[ nchange with (𝐋 b = ?); napply (.= ┼_1 E^-1); napply #| ##skip]
- nassumption;
-##| nchange with (x ∈ 𝐋 a); napply (. #╪_1?);
- ##[ nchange with (𝐋 a = ?); napply (.= ┼_1 E); napply #| ##skip]
- nassumption; ##]
+#A; @; ##[ #a; napply (L_re_is_ext ? a); ##] #a b E;
+ncut (𝐋 b = 𝐋 a); ##[ napply (.=_1 (┼_1 E^-1)); // ] #EL;
+@; #x H; nchange in H ⊢ % with (x ∈ 𝐋 ?);
+##[ napply (. (# ╪_1 ?)); ##[##3: napply H |##2: ##skip ] napply EL;
+##| napply (. (# ╪_1 ?)); ##[##3: napply H |##2: ##skip ] napply (EL^-1)]
nqed.
unification hint 1 ≔ AA : Alpha, a: re AA;
nlapply (erase_bull S e2'); #XX;
napply (.=_1 (((# ╪_1 (┼_1 ?) )╪_1 #)╪_1 #)); ##[##2: napply XX; ##| ##skip]
//;
-##| ncases e2; #e2' b2'; nchange in match (〈e1',false〉⊙?) with 〈?,?〉;
- nchange in match (𝐋\p ?) with (?∪?);
- nchange in match (𝐋\p (e1'·?)) with (?∪?);
- nchange in match (𝐋\p 〈e1',?〉) with (?∪?);
- nrewrite > (cup0…);
- nrewrite > (cupA…); //;##]
+##| ncases e2; #e2' b2'; nchange in match (𝐋\p ?) with (?∪?∪?);
+ napply (.=_1 (cupA…));
+ napply (?^-1); nchange in match (𝐋\p 〈?,false〉) with (?∪?);
+ napply (.=_1 ((cup0…)╪_1#)╪_1#);
+ //]
nqed.
+STOP
+
nlemma sub_dot_star :
∀S.∀X:word S → Prop.∀b. (X - ϵ b) · X^* ∪ {[]} = X^*.
#S X b; napply extP; #w; @;
R ≟ mk_unary_morphism ?? (composition ??? f g)
(prop1 ?? (comp_unary_morphisms o1 o2 o3 f g))
(* -------------------------------------------------------------------- *) ⊢
- fun1 ?? R ≡ (composition ??? f g).
+ fun1 o1 o3 R ≡ (composition o1 o2 o3 f g).
ndefinition comp_binary_morphisms:
∀o1,o2,o3.(o2 ⇒_0 o3) ⇒_0 ((o1 ⇒_0 o2) ⇒_0 (o1 ⇒_0 o3)).
unification hint 0 ≔ S, T ;
R ≟ (unary_morphism1_setoid1 S T)
(* --------------------------------- *) ⊢
- carr1 R ≡ S ⇒_1 T.
+ carr1 R ≡ unary_morphism1 S T.
notation "l ╪_1 r" with precedence 89 for @{'prop2_x1 $l $r }.
interpretation "prop21" 'prop2 l r = (prop11 ? (unary_morphism1_setoid1 ??) ? ?? l ?? r).
R ≟ (mk_unary_morphism1 ?? (composition1 ??? f g)
(prop11 ?? (comp1_unary_morphisms o1 o2 o3 f g)))
(* -------------------------------------------------------------------- *) ⊢
- fun11 ?? R ≡ (composition1 ??? f g).
+ fun11 o1 o3 R ≡ (composition1 o1 o2 o3 f g).
ndefinition comp1_binary_morphisms:
∀o1,o2,o3. (o2 ⇒_1 o3) ⇒_1 ((o1 ⇒_1 o2) ⇒_1 (o1 ⇒_1 o3)).
unification hint 1 ≔
AA : setoid, B,C : 𝛀^AA;
A ≟ carr AA,
+ T ≟ ext_powerclass_setoid AA,
R ≟ (mk_unary_morphism1 ??
(λS:𝛀^AA.
mk_unary_morphism1 ??
(prop11 ?? (intersect_is_ext_morph AA))) ,
BB ≟ (ext_carr ? B),
CC ≟ (ext_carr ? C)
- (* ------------------------------------------------------*) ⊢
- ext_carr AA (R B C) ≡ intersect A BB CC.
+ (* ---------------------------------------------------------------------------------------*) ⊢
+ ext_carr AA (fun11 T T (fun11 T (unary_morphism1_setoid1 T T) R B) C) ≡ intersect A BB CC.
-(* hints for â\88© *)
+(* hints for â\88ª *)
nlemma union_is_morph : ∀A. Ω^A ⇒_1 (Ω^A ⇒_1 Ω^A).
#X; napply (mk_binary_morphism1 … (λA,B.A ∪ B));
#A1 A2 B1 B2 EA EB; napply ext_set; #x;
unification hint 1 ≔
AA : setoid, B,C : 𝛀^AA;
A ≟ carr AA,
+ T ≟ ext_powerclass_setoid AA,
R ≟ (mk_unary_morphism1 ??
(λS:𝛀^AA.
mk_unary_morphism1 ??
BB ≟ (ext_carr ? B),
CC ≟ (ext_carr ? C)
(*------------------------------------------------------*) ⊢
- ext_carr AA (R B C) ≡ union A BB CC.
+ ext_carr AA (fun11 T T (fun11 T (unary_morphism1_setoid1 T T) R B) C) ≡ union A BB CC.
(* hints for - *)
unification hint 1 ≔
AA : setoid, B,C : 𝛀^AA;
A ≟ carr AA,
+ T ≟ ext_powerclass_setoid AA,
R ≟ (mk_unary_morphism1 ??
(λS:𝛀^AA.
mk_unary_morphism1 ??
BB ≟ (ext_carr ? B),
CC ≟ (ext_carr ? C)
(*------------------------------------------------------*) ⊢
- ext_carr AA (R B C) ≡ substract A BB CC.
+ ext_carr AA (fun11 T T (fun11 T (unary_morphism1_setoid1 T T) R B) C) ≡ substract A BB CC.
(* hints for {x} *)
nlemma single_is_morph : ∀A:setoid. (setoid1_of_setoid A) ⇒_1 Ω^A.
unification hint 0 ≔ A:setoid, a:A;
T ≟ setoid1_of_setoid A,
+ AA ≟ carr A,
MM ≟ mk_unary_morphism1 ??
(λa:setoid1_of_setoid A.{(a)}) (prop11 ?? (single_is_morph A))
(*--------------------------------------------------------------------------*) ⊢
- fun11 T (powerclass_setoid A) MM a ≡ {(a)}.
+ fun11 T (powerclass_setoid AA) MM a ≡ {(a)}.
nlemma single_is_ext_morph:∀A:setoid.(setoid1_of_setoid A) ⇒_1 𝛀^A.
#A; @; ##[ #a; napply (single_is_ext ? a); ##] #a b E; @; #x; /3/; nqed.
unification hint 1 ≔
AA : setoid, a: AA;
+ T ≟ ext_powerclass_setoid AA,
R ≟ mk_unary_morphism1 ??
(λa:setoid1_of_setoid AA.
mk_ext_powerclass AA {(a)} (ext_prop ? (single_is_ext AA a)))
(prop11 ?? (single_is_ext_morph AA))
(*------------------------------------------------------*) ⊢
- ext_carr AA (R a) ≡ singleton AA a.
+ ext_carr AA (fun11 (setoid1_of_setoid AA) T R a) ≡ singleton AA a.