Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+βCtrl+β to navigate, Ctrl+π±οΈ to focus. On Mac, use β instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Generalizable VariablesA B C K L f.
L: Type Aop: SgOp L Aunit: MonUnit L H: IsBoundedSemiLattice L
IsSemiLattice L
L: Type Aop: SgOp L Aunit: MonUnit L H: IsBoundedSemiLattice L
IsSemiLattice L
repeat (split; tryexact _).Qed.
L: Type Ajoin: Join L Abottom: Bottom L H: IsBoundedJoinSemiLattice L
IsJoinSemiLattice L
L: Type Ajoin: Join L Abottom: Bottom L H: IsBoundedJoinSemiLattice L
IsJoinSemiLattice L
repeat (split; tryexact _).Qed.
L: Type Ameet: Meet L Atop: Top L H: IsBoundedMeetSemiLattice L
IsMeetSemiLattice L
L: Type Ameet: Meet L Atop: Top L H: IsBoundedMeetSemiLattice L
IsMeetSemiLattice L
repeat (split; tryexact _).Qed.
L: Type Ajoin: Join L Ameet: Meet L Abottom: Bottom L Atop: Top L H: IsBoundedLattice L
IsLattice L
L: Type Ajoin: Join L Ameet: Meet L Abottom: Bottom L Atop: Top L H: IsBoundedLattice L
IsLattice L
repeatsplit; exact _.Qed.
A, B: Type Ajoin: Join A Bjoin: Join B Abottom: Bottom A Bbottom: Bottom B f: A -> B H: IsBoundedJoinPreserving f
IsJoinPreserving f
A, B: Type Ajoin: Join A Bjoin: Join B Abottom: Bottom A Bbottom: Bottom B f: A -> B H: IsBoundedJoinPreserving f
IsJoinPreserving f
red;exact _.Qed.
L, K: Type Ajoin: Join L Bjoin: Join K f: L -> K H: IsJoinPreserving f x, y: L
f (x β y) = f x β f y
L, K: Type Ajoin: Join L Bjoin: Join K f: L -> K H: IsJoinPreserving f x, y: L
f (x β y) = f x β f y
apply preserves_sg_op.Qed.
L, K: Type Ajoin: Join L Bjoin: Join K Abottom: Bottom L Bbottom: Bottom K f: L -> K H: IsBoundedJoinPreserving f
f β₯ = β₯
L, K: Type Ajoin: Join L Bjoin: Join K Abottom: Bottom L Bbottom: Bottom K f: L -> K H: IsBoundedJoinPreserving f
f β₯ = β₯
exact preserves_mon_unit.Qed.
L, K: Type Ameet: Meet L Bmeet: Meet K f: L -> K H: IsMeetPreserving f x, y: L
f (x β y) = f x β f y
L, K: Type Ameet: Meet L Bmeet: Meet K f: L -> K H: IsMeetPreserving f x, y: L
f (x β y) = f x β f y
apply preserves_sg_op.Qed.Sectionbounded_join_sl_props.Context `{IsBoundedJoinSemiLattice L}.Instancejoin_bottom_l: LeftIdentity (β) β₯ := _.Instancejoin_bottom_r: RightIdentity (β) β₯ := _.Endbounded_join_sl_props.Sectionlattice_props.Context `{IsLattice L}.Definitionmeet_join_absorptionxy : x β (x β y) = x := absorption x y.Definitionjoin_meet_absorptionxy : x β (x β y) = x := absorption x y.Endlattice_props.Sectiondistributive_lattice_props.Context `{IsDistributiveLattice L}.
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
LeftDistribute join meet
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
LeftDistribute join meet
exact (join_meet_distr_l _).Qed.
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
RightDistribute join meet
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
RightDistribute join meet
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L x, y, z: L
(x β y) β z = (x β z) β (y β z)
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L x, y, z: L
z β (x β y) = (z β x) β (z β y)
apply distribute_l.Qed.
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
LeftDistribute meet join
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L
LeftDistribute meet join
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L x, y, z: L
x β (y β z) = (x β y) β (x β z)
L: Type Ajoin: Join L Ameet: Meet L H: IsDistributiveLattice L x, y, z: L
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
LeftAbsorb meet β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
LeftAbsorb meet β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L x: L
β₯ β x = β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L x: L
β₯ = β₯
trivial.Qed.
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
RightAbsorb meet β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L
RightAbsorb meet β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L x: L
x β β₯ = β₯
L: Type Ajoin: Join L Ameet: Meet L H: IsLattice L H0: Bottom L IsBoundedJoinSemiLattice0: IsBoundedJoinSemiLattice L x: L
β₯ = β₯
trivial.Qed.Endlower_bounded_lattice.Sectionfrom_another_sl.LocalOpen Scope mc_add_scope.Context `{IsSemiLattice A} `{IsHSet B}
`{Bop : SgOp B} (f : B -> A) `{!IsInjective f}
(op_correct : forallxy, f (x + y) = f x + f y).
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
IsSemiLattice B
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
IsSemiLattice B
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
IsCommutativeSemiGroup B
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
BinaryIdempotent sg_op
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
IsCommutativeSemiGroup B
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
forallxy : B, f (x + y) = f x + f y
assumption.
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y
BinaryIdempotent sg_op
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y x: B
f (x + x) = f x
A: Type Aop: SgOp A H: IsSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y x: B
f x = f x
reflexivity.Qed.Endfrom_another_sl.Sectionfrom_another_bounded_sl.LocalOpen Scope mc_add_scope.Context `{IsBoundedSemiLattice A} `{IsHSet B}
`{Bop : SgOp B} `{Bunit : MonUnit B} (f : B -> A) `{!IsInjective f}
(op_correct : forallxy, f (x + y) = f x + f y)
(unit_correct : f mon_unit = mon_unit).
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
IsBoundedSemiLattice B
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
IsBoundedSemiLattice B
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
IsCommutativeMonoid B
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
BinaryIdempotent sg_op
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
IsCommutativeMonoid B
apply (projected_com_monoid f);trivial.
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0
BinaryIdempotent sg_op
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0 x: B
f (x + x) = f x
A: Type Aop: SgOp A Aunit: MonUnit A H: IsBoundedSemiLattice A B: Type IsHSet0: IsHSet B Bop: SgOp B Bunit: MonUnit B f: B -> A IsInjective0: IsInjective f op_correct: forallxy : B, f (x + y) = f x + f y unit_correct: f 0 = 0 x: B
f x = f x
trivial.Qed.Endfrom_another_bounded_sl.Instanceid_join_sl_morphism `{IsJoinSemiLattice A} : IsJoinPreserving (@id A)
:= {}.Instanceid_meet_sl_morphism `{IsMeetSemiLattice A} : IsMeetPreserving (@id A)
:= {}.Instanceid_bounded_join_sl_morphism `{IsBoundedJoinSemiLattice A}
: IsBoundedJoinPreserving (@id A)
:= {}.Instanceid_lattice_morphism `{IsLattice A} : IsLatticePreserving (@id A)
:= {}.Sectionmorphism_composition.Context `{Join A} `{Meet A} `{Bottom A}
`{Join B} `{Meet B} `{Bottom B}
`{Join C} `{Meet C} `{Bottom C}
(f : A -> B) (g : B -> C).
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsJoinPreserving f ->
IsJoinPreserving g -> IsJoinPreserving (g β f)
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsJoinPreserving f ->
IsJoinPreserving g -> IsJoinPreserving (g β f)
red; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsMeetPreserving f ->
IsMeetPreserving g -> IsMeetPreserving (g β f)
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsMeetPreserving f ->
IsMeetPreserving g -> IsMeetPreserving (g β f)
red;exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsBoundedJoinPreserving f ->
IsBoundedJoinPreserving g ->
IsBoundedJoinPreserving (g β f)
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsBoundedJoinPreserving f ->
IsBoundedJoinPreserving g ->
IsBoundedJoinPreserving (g β f)
red; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsLatticePreserving f ->
IsLatticePreserving g -> IsLatticePreserving (g β f)
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
IsLatticePreserving f ->
IsLatticePreserving g -> IsLatticePreserving (g β f)
split; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsJoinPreserving f -> IsJoinPreserving f^-1
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsJoinPreserving f -> IsJoinPreserving f^-1
red; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsMeetPreserving f -> IsMeetPreserving f^-1
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsMeetPreserving f -> IsMeetPreserving f^-1
red; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsBoundedJoinPreserving f ->
IsBoundedJoinPreserving f^-1
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsBoundedJoinPreserving f ->
IsBoundedJoinPreserving f^-1
red; exact _.Qed.
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsLatticePreserving f -> IsLatticePreserving f^-1
A: Type H: Join A H0: Meet A H1: Bottom A B: Type H2: Join B H3: Meet B H4: Bottom B C: Type H5: Join C H6: Meet C H7: Bottom C f: A -> B g: B -> C
forallIsEquiv0 : IsEquiv f,
IsLatticePreserving f -> IsLatticePreserving f^-1