@@ -59,15 +59,15 @@ Section is_homomorphism.
59
59
Defined .
60
60
End is_homomorphism.
61
61
62
- (** Gival algebras [A B : Algebra σ] a homomorphism [Homomorphism A B]
62
+ (** Given algebras [A B : Algebra σ] a homomorphism [Homomorphism A B]
63
63
is a family of functions [f : ∀ (s : Sort σ), A s → B s] where
64
64
[IsHomomorphism f] holds. *)
65
65
66
66
Record Homomorphism {σ} {A B : Algebra σ} : Type := BuildHomomorphism
67
67
{ def_hom : ∀ (s : Sort σ), A s → B s
68
68
; is_homomorphism_hom : IsHomomorphism def_hom }.
69
69
70
- Arguments Homomorphism {σ} A B .
70
+ Arguments Homomorphism {σ}.
71
71
72
72
Arguments BuildHomomorphism {σ A B} def_hom {is_homomorphism_hom}.
73
73
@@ -336,43 +336,21 @@ Section hom_compose.
336
336
Qed .
337
337
End hom_compose.
338
338
339
- Lemma path_forall_recr_beta `{Funext} {A : Type } {B : A → Type }
340
- (a : A) (P : (∀ x, B x) → B a → Type ) (f g : ∀ a, B a)
341
- (e : f == g) (Pa : P f (f a))
342
- : transport (fun f => P f (f a)) (path_forall f g e) Pa
343
- = transport (fun x => P x (g a))
344
- (path_forall f g e) (transport (fun y => P f y) (e a) Pa).
345
- Proof .
346
- rewrite <- (eissect (path_forall f g) e).
347
- change ((_^-1 (path_forall f g e))) with ((apD10 (path_forall f g e))).
348
- destruct (path_forall f g e).
349
- unfold apD10.
350
- rewrite (path_forall_1 f).
351
- reflexivity.
352
- Defined .
339
+ (** If [f : ∀ i, F i <~> G i] is a family of equivalences,
340
+ then by function extensionality composed with univalence there is
341
+ a path [F = G]. *)
353
342
354
- (** The following section proves that there is a path between
343
+ Definition path_equiv_family `{Univalence} {I : Type }
344
+ {F G : I → Type} (f : ∀ i, F i <~> G i)
345
+ : F = G
346
+ := path_forall F G (λ i, path_universe (f i)).
347
+
348
+ (** The following section shows that there is a path between
355
349
isomorphic algebras. *)
356
350
357
351
Section path_isomorphism.
358
352
Context `{Univalence} {σ : Signature} {A B : Algebra σ}.
359
353
360
- (** Recall that there is an implicit coercion
361
-
362
- <<
363
- Coercion carriers : Algebra >-> Funclass
364
- >>
365
-
366
- so that [A s] is notation for [carriers A s]. *)
367
-
368
- (** If [f : ∀ (s : Sort σ), A s <~> B s] is a family of equivalences,
369
- then by function extensionality and univalence there is a path
370
- between the carriers, [carriers A = carriers B]. *)
371
-
372
- Definition path_carriers_equiv {I : Type} {X Y : I → Type} (f : ∀ i, X i <~> Y i)
373
- : X = Y
374
- := path_forall X Y (λ i, path_universe (f i)).
375
-
376
354
(** Given a family of equivalences [f : ∀ (s : Sort σ), A s <~> B s]
377
355
which is [OpPreserving f α β] with respect to algebra operations
378
356
@@ -381,34 +359,27 @@ Section path_isomorphism.
381
359
β : B s1 → B s2 → ... → B sn → B t
382
360
>>
383
361
384
- By transporting [α] along the path [path_carriers_equiv f] we
362
+ By transporting [α] along the path [path_equiv_family f] we
385
363
find a path from the transported operation [α] to [β]. *)
386
364
387
- Lemma path_operations_equiv (f : ∀ (s : Sort σ), A s <~> B s)
388
- {w : SymbolType σ} (α : Operation A w) (β : Operation B w)
389
- (P : OpPreserving f α β)
365
+ Lemma path_operations_equiv {w : SymbolType σ}
366
+ (α : Operation A w) (β : Operation B w)
367
+ (f : ∀ (s : Sort σ), A s <~> B s) ( P : OpPreserving f α β)
390
368
: transport (λ C : Carriers σ, Operation C w)
391
- (path_carriers_equiv f) α = β.
369
+ (path_equiv_family f) α = β.
392
370
Proof .
393
- unfold path_carriers_equiv .
371
+ unfold path_equiv_family .
394
372
induction w; simpl in *.
395
- - rewrite (path_forall_recr_beta t (λ _ x, x) A B (λ s, path_universe (f s)) α).
396
- induction (path_forall A B (λ s : Sort σ, path_universe (f s))).
397
- (* transport_path_forall_hammer. *)
398
-
373
+ - transport_path_forall_hammer.
399
374
exact (ap10 (transport_idmap_path_universe (f t)) α @ P).
400
375
- funext y.
401
-
402
- set (Λ := λ (a : Sort σ → Type) (b:Type), b → Operation a w).
403
- rewrite (path_forall_recr_beta t Λ A B (λ s, path_universe (f s)) α).
404
- (*transport_path_forall_hammer.*)
405
-
376
+ transport_path_forall_hammer.
406
377
rewrite transport_forall_constant.
407
378
rewrite transport_arrow_toconst.
408
379
rewrite (transport_path_universe_V (f t)).
380
+ apply IHw.
409
381
specialize (P ((f t)^-1 y)).
410
- rewrite (eisretr (f t)) in P.
411
- exact (IHw (α ((f t)^-1 y)) (β y) P).
382
+ by rewrite (eisretr (f t) y) in P.
412
383
Qed .
413
384
414
385
(** Suppose [u : Symbol σ] is a function symbol. Recall that
@@ -420,12 +391,12 @@ Section path_isomorphism.
420
391
be a function symbol. Since [f] is a homomorphism, the induced
421
392
family of equivalences [e] satisfies [OpPreserving e (u^^A) (u^^B)].
422
393
By [path_operations_equiv] above, we can then transport [u^^A] along
423
- the path [path_carriers_equiv e] and obtain a path to [u^^B]. *)
394
+ the path [path_equiv_family e] and obtain a path to [u^^B]. *)
424
395
425
396
Lemma path_operations_isomorphism (f : Homomorphism A B)
426
397
`{!IsIsomorphism f} (u : Symbol σ)
427
398
: transport (λ C : Carriers σ, Operation C (σ u))
428
- (path_carriers_equiv (equiv_carriers_isomorphism f)) (u^^A)
399
+ (path_equiv_family (equiv_carriers_isomorphism f)) (u^^A)
429
400
= u^^B.
430
401
Proof .
431
402
apply path_operations_equiv. apply (op_preserving f).
@@ -437,7 +408,7 @@ Section path_isomorphism.
437
408
: A = B.
438
409
Proof .
439
410
apply path_algebra.
440
- exists (path_carriers_equiv (equiv_carriers_isomorphism f)).
411
+ exists (path_equiv_family (equiv_carriers_isomorphism f)).
441
412
funext u.
442
413
exact (transport_forall_constant _ _ u
443
414
@ path_operations_isomorphism f u).
0 commit comments